diff --git a/.gitignore b/.gitignore index eac6f531..983c8cb2 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,8 @@ dump/* *.arc *.ctx ctx.* +!tools/orthrus.exe +!tools/sjiswrap.exe build.ninja ac-decomp.code-workspace assets/ @@ -23,3 +25,6 @@ src/data/bin2 objdiff.json src/data/item/player_room_floor src/data/item/player_room_wall +tools/1.2.5n/ +tools/1.3.2r/ +tools/1.3.2/ diff --git a/Dockerfile b/Dockerfile index e18d145e..f9f0411d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,8 +1,10 @@ -FROM ubuntu:22.04 as build +FROM ubuntu:24.04 as build # --- basic package installation --- RUN apt-get update && \ + apt-get upgrade -y && \ apt-get install -y \ + cmake \ git \ ninja-build \ python3 \ @@ -12,7 +14,8 @@ RUN apt-get update && \ # --- python package installation --- COPY ./requirements.txt /temp/requirements.txt COPY ./tools/ppcdis/requirements.txt /temp/tools/ppcdis/requirements.txt -RUN pip install -r /temp/requirements.txt +# why bother setting up a venv for this, right? ¯\_(ツ)_/¯ +RUN pip install --break-system-packages -r /temp/requirements.txt RUN rm -rf /temp # --- wibo installation --- @@ -23,26 +26,23 @@ RUN rm wibo # --- devkitpro installation --- RUN wget https://apt.devkitpro.org/install-devkitpro-pacman RUN chmod +x install-devkitpro-pacman -## assume yes for in-script apt commands +# assume yes for in-script apt commands RUN sed -i 's/^apt-get.*$/& -y/g' install-devkitpro-pacman -## now do dkp-pacman installation RUN ./install-devkitpro-pacman RUN rm install-devkitpro-pacman -## workaround for a dumb WSL bug that happens with Windows Docker. if we don't do this, devkitPPC installation fails on Windows. +# workaround for a dumb bug that happens with Windows Docker. if we don't do this, devkitPPC installation fails on Windows. RUN if [ ! -e /etc/mtab ]; then ln -s /proc/self/mounts /etc/mtab; fi -## and finally, we get to install devkitPPC RUN dkp-pacman -S devkitPPC --noconfirm -## dear fucking god this is hacky but it works (needed otherwise next step fails) -RUN rm /usr/bin/cpp /usr/bin/g++ -## set devkitPPC executables as the default ones +# dear fucking god this is hacky but it works (needed otherwise next step fails) +RUN rm /usr/bin/cpp /usr/bin/g++ /lib/cpp +# set devkitPPC executables as the default ones RUN for file in $(find "/opt/devkitpro/devkitPPC/bin" -type f -name 'powerpc-eabi*'); do new_file=$(basename "$file" | sed 's/powerpc-eabi-//g'); update-alternatives --install "/usr/bin/$new_file" "$new_file" "$file" 0; done # --- stage ultralib headers --- -RUN mkdir -p /N64_SDK/ultra/usr/ RUN git clone https://github.com/decompals/ultralib.git /N64_SDK/ultra/usr/ -## dockerfile does not seem to support extglob, so this monstrous command works around it to delete all of ultralib except the headers we need. +# dockerfile does not seem to support extglob, so this monstrous command works around it to delete all of ultralib except the headers we need. RUN cd /N64_SDK/ultra/usr/ && find -type f -maxdepth 1 -delete && find . -not -name 'include' -type d -maxdepth 1 -exec rm -r "{}" \; -## modify Gpopmtx's param member to be unsigned int +# modify Gpopmtx's param member to be unsigned int RUN sed -i 's/unsigned char param:8;/unsigned int param:8;/g' /N64_SDK/ultra/usr/include/PR/gbi.h # --- set up work directory and env vars --- diff --git a/README.MD b/README.MD index 196b7c63..a4cce4b6 100644 --- a/README.MD +++ b/README.MD @@ -7,51 +7,48 @@ Decompilation in progress of Animal Crossing (GAFE01) A decompilation of the original N64 version of the game is being worked on [here](https://github.com/zeldaret/af). + ## Cloning Use `--recursive` when cloning to have ppcdis in the repository. ## Building -> ℹ️ When using Windows, it's recommended to use WSL. +> [!NOTE] +> On Windows, the build is known to run disproportionately slow when ran natively, so WSL is recommended. ### Docker -1. [Dump a copy of the game](./docs/extract_game.md) and extract **main.dol** and **foresta.rel.szs**. -2. Decompress **foresta.rel.szs** with yaz0 found in *tools/* (`yaz0 -d foresta.rel.szs foresta.rel`). -3. Place **main.dol** and **foresta.rel** in *dump/*. -4. Place **forest_1st.arc** and **forest_2nd.arc** in *dump/*. -5. Download the [CodeWarrior 1.3.2 and 1.2.5n compilers](https://files.decomp.dev/compilers_20230715.zip) and extract them to *tools/1.3.2/* and *tools/1.2.5n/*, respectively. -6. Download the [CodeWarrior 1.3.2r compiler](https://mega.nz/file/WuBFTCLT#TmB5R4-1mEFkk4G1Vjn9_cHXRD9wOIH9CtOLaVSWEas) and extract it to *tools/1.3.2r/*. -7. Install Docker. -8. Build the Docker image (`docker build -t ac-decomp .`). -9. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). -10. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). +1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. +2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. +3. Install Docker. +4. Set up the Docker image. If using MacOS or Linux (including WSL), run `chmod +x docker-setup.sh && ./docker-setup.sh`. If using Windows, run the `docker-setup.bat` file. +5. Run configure.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 configure.py`). +6. Run build.py (`docker run --rm -v ${PWD}:/ac-decomp ac-decomp python3 build.py`). ### Build manually -> ℹ️ When building manually from a work directory originally used for Docker, you will need to run `sudo ninja -t clean` for the build to execute properly. +> [!TIP] +> When building manually from a work directory previously used for Docker, `sudo ninja -t clean` will need to be ran for the build to execute properly. -1. [Dump a copy of the game](./docs/extract_game.md) and extract **main.dol** and **foresta.rel.szs**. -2. Decompress **foresta.rel.szs** with yaz0 found in *tools/* (`yaz0 -d foresta.rel.szs foresta.rel`). -3. Place **main.dol** and **foresta.rel** in *dump/*. -4. Place **forest_1st.arc** and **forest_2nd.arc** in *dump/*. -5. Download the [CodeWarrior 1.3.2 and 1.2.5n compilers](https://files.decomp.dev/compilers_20230715.zip) and extract them to *tools/1.3.2/* and *tools/1.2.5n/*, respectively. -6. Download the [CodeWarrior 1.3.2r compiler](https://mega.nz/file/WuBFTCLT#TmB5R4-1mEFkk4G1Vjn9_cHXRD9wOIH9CtOLaVSWEas) and extract it to *tools/1.3.2r/*. -7. Install Python, pip, and [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages#package-managers) using your package manager of choice. -8. Install Python modules from requirements.txt (`pip install -r requirements.txt`). -9. Install [wibo](https://github.com/decompals/wibo) +1. [Dump a copy of the game](./docs/extract_game.md) and extract all files. +2. Place **main.dol**, **foresta.rel.szs**, **forest_1st.arc**, and **forest_2nd.arc** in *dump/*. +3. Download the [CodeWarrior 1.3.2, 1.3.2r, and 1.2.5n compilers](https://files.decomp.dev/compilers_latest.zip) and extract them to *tools/1.3.2/*, *tools/1.3.2r/*, and *tools/1.2.5n/*, respectively. +4. Install Python, pip, and [ninja](https://github.com/ninja-build/ninja/wiki/Pre-built-Ninja-packages#package-managers) using a package manager of choice. + - If using an ARM-based device, cmake will also need to be installed. +5. Install Python modules from requirements.txt (`pip install -r requirements.txt`). +6. Install [wibo](https://github.com/decompals/wibo) - Wibo is a lightweight Wine replacement that's tailor-made for use with decomp projects. Regular Wine can be used if preferred, but for the purposes of this guide, these instructions will use wibo. - - Download [the latest GitHub release](https://github.com/decompals/wibo/releases/latest) and run `install ./wibo /usr/bin` to install it to your system. -10. Install devkitPPC. - - To get devkitPPC, you'll need [devkitPro Pacman](https://devkitpro.org/wiki/devkitPro_pacman#Installing_devkitPro_Pacman). + - Download [the latest GitHub release](https://github.com/decompals/wibo/releases/latest) and run `install ./wibo /usr/bin` to install it to the system. +7. Install devkitPPC. + - [devkitPro Pacman](https://devkitpro.org/wiki/devkitPro_pacman#Installing_devkitPro_Pacman) is needed to get devkitPPC. - Run `dkp-pacman -S devkitPPC` once dkp-pacman is installed to install devkitPPC. - Set the `DEVKITPPC` environment variable to */opt/devkitpro/devkitPPC*. -11. Set the `N64_SDK` environment variable to the path of your libultra or equivalent headers. If you need headers, you can use the ones from [ultralib](https://github.com/decompals/ultralib). +8. Set the `N64_SDK` environment variable to the path of libultra or equivalent headers. Headers from [ultralib](https://github.com/decompals/ultralib) can be used. - Headers should be located at `$N64_SDK/ultra/usr/include`. - - You may need to modify `Gpopmtx`'s `param` member to be `unsigned int` in **gbi.h**. -12. Run `python3 configure.py`. -13. Run `python3 build.py`. + - `Gpopmtx`'s `param` member must be modified to be `unsigned int` in **gbi.h**. +9. Run `python3 configure.py`. +10. Run `python3 build.py`. ## Quick Guides - [Dumping Game Files](./docs/extract_game.md) diff --git a/build.py b/build.py index d41e0f33..61407a5d 100644 --- a/build.py +++ b/build.py @@ -3,6 +3,7 @@ import sys import os import hashlib import argparse +import common as c # List of Ninja build targets NINJA_BUILD_TARGETS = [ ['src/data/bin1', 'out/forest_1st.arc', 'dump/forest_1st.arc'], ['src/data/bin2', 'out/forest_2nd.arc', 'dump/forest_2nd.arc'] ] @@ -96,6 +97,10 @@ if __name__ == "__main__": subprocess.run(['ninja', '-v'], check=True) else: subprocess.run(['ninja'], check=True) + # Compress foresta.rel + if os.path.exists(c.REL_OUT): + print("Compressing foresta.rel to foresta.rel.szs") + subprocess.call([f'./{c.ORTHRUS}', 'ncompress', 'yaz0', '-c', c.REL_OUT, c.REL_SZS_OUT]) except subprocess.CalledProcessError as e: print(f"Error running Ninja build") sys.exit(1) diff --git a/common.py b/common.py index 1fd19ae5..433322cd 100644 --- a/common.py +++ b/common.py @@ -197,6 +197,7 @@ ORDERSTRINGS = f"{PYTHON} {PPCDIS}/orderstrings.py" ORDERFLOATS = f"{PYTHON} {PPCDIS}/orderfloats.py" ASSETRIP = f"{PYTHON} {PPCDIS}/assetrip.py" ASSETINC = f"{PYTHON} {PPCDIS}/assetinc.py" +BATCHASSETRIP = f"{PYTHON} {PPCDIS}/batchassetrip.py" FORCEACTIVEGEN = f"{PYTHON} {PPCDIS}/forceactivegen.py" ELF2DOL = f"{PYTHON} {PPCDIS}/elf2dol.py" ELF2REL = f"{PYTHON} {PPCDIS}/elf2rel.py" @@ -209,16 +210,18 @@ FORCEFILESGEN = f"{PYTHON} {PPCDIS}/forcefilesgen.py" TOOLS = "tools" CODEWARRIOR = os.path.join(TOOLS, "1.3.2") CODEWARRIOR_RODATA_POOL_FIX = os.path.join(TOOLS, "1.3.2r") +ORTHRUS = os.path.join(TOOLS, "orthrus") SDK_CW = os.path.join(TOOLS, "1.2.5n") CC = os.path.join(CODEWARRIOR, "mwcceppc.exe") CC_R = os.path.join(CODEWARRIOR_RODATA_POOL_FIX, "mwcceppc.exe") OCC = os.path.join(SDK_CW, "mwcceppc.exe") LD = os.path.join(CODEWARRIOR, "mwldeppc.exe") if platform != "win32": - CC = f"wibo {CC}" - CC_R = f"wibo {CC_R}" - OCC = f"wibo {OCC}" LD = f"wibo {LD}" + SJISWRAP = f"wibo {TOOLS}/sjiswrap.exe" +else: + ORTHRUS = os.path.join(TOOLS, "orthrus.exe") + SJISWRAP = os.path.join(TOOLS, "sjiswrap.exe") # DevkitPPC DEVKITPPC = os.environ.get("DEVKITPPC") @@ -233,8 +236,6 @@ PAL16DIS = f"{PYTHON} {TOOLS}/converters/pal16dis.py" # JSystem JKernel archive tool ARC_TOOL = f"{PYTHON} {TOOLS}/arc_tool.py" -ICONV = f"{PYTHON} tools/sjis.py" # TODO: get actual iconv working(?) - # N64 SDK path for GBI N64SDK = os.environ.get("N64_SDK") assert N64SDK != None, "N64_SDK is not defined as a system environment variable" @@ -255,6 +256,7 @@ REL_DISASM_OVERRIDES = f"{CONFIG}/rel_disasm_overrides.yml" # Binaries DOL = f"{ORIG}/static.dol" # read in python code REL = f"{ORIG}/foresta.rel" # read in python code +REL_SZS = f"{ORIG}/foresta.rel.szs" DOL_YML = f"{CONFIG}/dol.yml" REL_YML = f"{CONFIG}/rel.yml" DOL_SHA = f"{ORIG}/static.dol.sha1" @@ -288,6 +290,7 @@ DOL_ELF = f"{BUILDDIR}/static.elf" REL_PLF = f"{BUILDDIR}/foresta.plf" DOL_OUT = f"{OUTDIR}/static.dol" REL_OUT = f"{OUTDIR}/foresta.rel" +REL_SZS_OUT = f"{OUTDIR}/foresta.rel.szs" DOL_MAP = f"{OUTDIR}/static.map" REL_MAP = f"{OUTDIR}/foresta.map" @@ -442,11 +445,28 @@ FAMICOM_BASE = CFLAGS + [ ] + DOL_DEFINES JAUDIO_BASE = CFLAGS + [ "-lang=c++", + "-char signed", "-sdata 8", "-sdata2 8", "-enum int", "-common on" ] + DOL_DEFINES +JAUDIO_FUNC_ALIGN_32 = [ + "-func_align 32", + "-str readonly", + "-inline off" +] +JAUDIO_USER = [ + "-d _LANGUAGE_C_PLUS_PLUS", + "-O0", + "-char unsigned", + "-fp hard", + "-lang=c++", + "-sdata 8", + "-sdata2 8", + "-enum int", + "-common on" +] JSYSTEM_CFLAGS = ' '.join(JSYSTEM_BASE + LOCAL_CFLAGS) JSYSTEM_JGADGET_CFLAGS = ' '.join(JSYSTEM_JGADGET_BASE + LOCAL_CFLAGS) @@ -464,6 +484,8 @@ EXTERNAL_REL_CFLAGS = ' '.join(BASE_REL_CFLAGS) PREPROCESS_CFLAGS = ' '.join(PREPROCESSOR_CFLAGS) FAMICOM_CLFAGS = ' '.join(FAMICOM_BASE + LOCAL_CFLAGS) JAUDIO_CFLAGS = ' '.join(JAUDIO_BASE + LOCAL_CFLAGS) +JAUDIO_FUNC_ALIGN_32_CFLAGS = ' '.join(JAUDIO_BASE + JAUDIO_FUNC_ALIGN_32 + LOCAL_CFLAGS) +JAUDIO_USER_CFLAGS = ' '.join(JAUDIO_USER + LOCAL_CFLAGS) DOL_LDFLAGS = ' '.join([ "-maxerrors 1", diff --git a/config/analysis_overrides.yml b/config/analysis_overrides.yml index 78cf77d3..ee443475 100644 --- a/config/analysis_overrides.yml +++ b/config/analysis_overrides.yml @@ -4,10 +4,12 @@ blocked_pointers: blocked_targets: - 0x800A97E0 # boot.c local static const tbl, also start of .rodata - 0x80008000 + - 0x80018800 + - 0x800189C0 - 0x801F6C7C # tcs_bad - 0x801F6C7D # ics_bad - 0x800a9a90 - - 0x800a9838 + # - 0x800a9838 - 0x800a9938 - 0x800a9a3a - 0x800a99f6 diff --git a/config/assets.yml b/config/assets.yml index 96ff6057..4ede5a27 100644 --- a/config/assets.yml +++ b/config/assets.yml @@ -175,6 +175,15 @@ config/rel.yml: mbg_v: addrs: [0x80684BB0, 0x80684C30] type: vtx + # m_player + tol_sponge_1_v: + addrs: [0x8069E580, 0x8069E620] + type: vtx + tol_sponge_1_pal: + addrs: [0x8069E620, 0x8069E640] + type: pal16 + tol_sponge_1_main1_tex_txt: + addrs: [0x8069E640, 0x8069E6C0] aKOI_obj_e_koinobori_a_pal: addrs: [0x806C5900, 0x806C5920] type: pal16 @@ -336,6 +345,462 @@ config/rel.yml: type: pal16 # flowers + npc/mdl/bev_1_v: + addrs: [0x806E03A0, 0x806E1DF0] + type: vtx + npc/tex/bev_1_pal: + addrs: [0x806E27E0, 0x806E2800] + type: pal16 + npc/tex/bev_1_eye1_TA_tex_txt: + addrs: [0x806E2800, 0x806E2900] + npc/tex/bev_1_eye2_TA_tex_txt: + addrs: [0x806E2900, 0x806E2A00] + npc/tex/bev_1_eye3_TA_tex_txt: + addrs: [0x806E2A00, 0x806E2B00] + npc/tex/bev_1_eye4_TA_tex_txt: + addrs: [0x806E2B00, 0x806E2C00] + npc/tex/bev_1_eye5_TA_tex_txt: + addrs: [0x806E2C00, 0x806E2D00] + npc/tex/bev_1_eye6_TA_tex_txt: + addrs: [0x806E2D00, 0x806E2E00] + npc/tex/bev_1_eye7_TA_tex_txt: + addrs: [0x806E2E00, 0x806E2F00] + npc/tex/bev_1_eye8_TA_tex_txt: + addrs: [0x806E2F00, 0x806E3000] + npc/tex/bev_1_tmem_txt: + addrs: [0x806E3000, 0x806E3500] + npc/mdl/ant_1_v: + addrs: [0x806E3838, 0x806E4F68] + type: vtx + npc/tex/ant_1_pal: + addrs: [0x806E5920, 0x806E5940] + type: pal16 + npc/tex/ant_1_eye1_TA_tex_txt: + addrs: [0x806E5940, 0x806E5A40] + npc/tex/ant_1_eye2_TA_tex_txt: + addrs: [0x806E5A40, 0x806E5B40] + npc/tex/ant_1_eye3_TA_tex_txt: + addrs: [0x806E5B40, 0x806E5C40] + npc/tex/ant_1_eye4_TA_tex_txt: + addrs: [0x806E5C40, 0x806E5D40] + npc/tex/ant_1_eye5_TA_tex_txt: + addrs: [0x806E5D40, 0x806E5E40] + npc/tex/ant_1_eye6_TA_tex_txt: + addrs: [0x806E5E40, 0x806E5F40] + npc/tex/ant_1_eye7_TA_tex_txt: + addrs: [0x806E5F40, 0x806E6040] + npc/tex/ant_1_eye8_TA_tex_txt: + addrs: [0x806E6040, 0x806E6140] + npc/tex/ant_1_tmem_txt: + addrs: [0x806E6140, 0x806E6640] + npc/tex/ant_2_pal: + addrs: [0x806E6640, 0x806E6660] + type: pal16 + npc/tex/ant_2_eye1_TA_tex_txt: + addrs: [0x806E6660, 0x806E6760] + npc/tex/ant_2_eye2_TA_tex_txt: + addrs: [0x806E6760, 0x806E6860] + npc/tex/ant_2_eye3_TA_tex_txt: + addrs: [0x806E6860, 0x806E6960] + npc/tex/ant_2_eye4_TA_tex_txt: + addrs: [0x806E6960, 0x806E6A60] + npc/tex/ant_2_eye5_TA_tex_txt: + addrs: [0x806E6A60, 0x806E6B60] + npc/tex/ant_2_eye6_TA_tex_txt: + addrs: [0x806E6B60, 0x806E6C60] + npc/tex/ant_2_eye7_TA_tex_txt: + addrs: [0x806E6C60, 0x806E6D60] + npc/tex/ant_2_eye8_TA_tex_txt: + addrs: [0x806E6D60, 0x806E6E60] + npc/tex/ant_2_tmem_txt: + addrs: [0x806E6E60, 0x806E7360] + npc/tex/ant_3_pal: + addrs: [0x806E7360, 0x806E7380] + type: pal16 + npc/tex/ant_3_eye1_TA_tex_txt: + addrs: [0x806E7380, 0x806E7480] + npc/tex/ant_3_eye2_TA_tex_txt: + addrs: [0x806E7480, 0x806E7580] + npc/tex/ant_3_eye3_TA_tex_txt: + addrs: [0x806E7580, 0x806E7680] + npc/tex/ant_3_eye4_TA_tex_txt: + addrs: [0x806E7680, 0x806E7780] + npc/tex/ant_3_eye5_TA_tex_txt: + addrs: [0x806E7780, 0x806E7880] + npc/tex/ant_3_eye6_TA_tex_txt: + addrs: [0x806E7880, 0x806E7980] + npc/tex/ant_3_eye7_TA_tex_txt: + addrs: [0x806E7980, 0x806E7A80] + npc/tex/ant_3_eye8_TA_tex_txt: + addrs: [0x806E7A80, 0x806E7B80] + npc/tex/ant_3_tmem_txt: + addrs: [0x806E7B80, 0x806E8080] + npc/tex/ant_4_pal: + addrs: [0x806E8080, 0x806E80A0] + type: pal16 + npc/tex/ant_4_eye1_TA_tex_txt: + addrs: [0x806E80A0, 0x806E81A0] + npc/tex/ant_4_eye2_TA_tex_txt: + addrs: [0x806E81A0, 0x806E82A0] + npc/tex/ant_4_eye3_TA_tex_txt: + addrs: [0x806E82A0, 0x806E83A0] + npc/tex/ant_4_eye4_TA_tex_txt: + addrs: [0x806E83A0, 0x806E84A0] + npc/tex/ant_4_eye5_TA_tex_txt: + addrs: [0x806E84A0, 0x806E85A0] + npc/tex/ant_4_eye6_TA_tex_txt: + addrs: [0x806E85A0, 0x806E86A0] + npc/tex/ant_4_eye7_TA_tex_txt: + addrs: [0x806E86A0, 0x806E87A0] + npc/tex/ant_4_eye8_TA_tex_txt: + addrs: [0x806E87A0, 0x806E88A0] + npc/tex/ant_4_tmem_txt: + addrs: [0x806E88A0, 0x806E8DA0] + npc/tex/ant_5_pal: + addrs: [0x806E8DA0, 0x806E8DC0] + type: pal16 + npc/tex/ant_5_eye1_TA_tex_txt: + addrs: [0x806E8DC0, 0x806E8EC0] + npc/tex/ant_5_eye2_TA_tex_txt: + addrs: [0x806E8EC0, 0x806E8FC0] + npc/tex/ant_5_eye3_TA_tex_txt: + addrs: [0x806E8FC0, 0x806E90C0] + npc/tex/ant_5_eye4_TA_tex_txt: + addrs: [0x806E90C0, 0x806E91C0] + npc/tex/ant_5_eye5_TA_tex_txt: + addrs: [0x806E91C0, 0x806E92C0] + npc/tex/ant_5_eye6_TA_tex_txt: + addrs: [0x806E92C0, 0x806E93C0] + npc/tex/ant_5_eye7_TA_tex_txt: + addrs: [0x806E93C0, 0x806E94C0] + npc/tex/ant_5_eye8_TA_tex_txt: + addrs: [0x806E94C0, 0x806E95C0] + npc/tex/ant_5_tmem_txt: + addrs: [0x806E95C0, 0x806E9AC0] + npc/mdl/wls_1_v: + addrs: [0x806E9AC0, 0x806EB510] + type: vtx + npc/tex/wls_1_pal: + addrs: [0x806EC000, 0x806EC020] + type: pal16 + npc/tex/wls_1_eye1_TA_tex_txt: + addrs: [0x806EC020, 0x806EC120] + npc/tex/wls_1_eye2_TA_tex_txt: + addrs: [0x806EC120, 0x806EC220] + npc/tex/wls_1_eye3_TA_tex_txt: + addrs: [0x806EC220, 0x806EC320] + npc/tex/wls_1_eye4_TA_tex_txt: + addrs: [0x806EC320, 0x806EC420] + npc/tex/wls_1_eye5_TA_tex_txt: + addrs: [0x806EC420, 0x806EC520] + npc/tex/wls_1_eye6_TA_tex_txt: + addrs: [0x806EC520, 0x806EC620] + npc/tex/wls_1_eye7_TA_tex_txt: + addrs: [0x806EC620, 0x806EC720] + npc/tex/wls_1_eye8_TA_tex_txt: + addrs: [0x806EC720, 0x806EC820] + npc/tex/wls_1_tmem_txt: + addrs: [0x806EC820, 0x806ECFA0] + npc/mdl/bea_1_v: + addrs: [0x806EF078, 0x806F0798] + type: vtx + npc/tex/bea_1_pal: + addrs: [0x806F1040, 0x806F1060] + type: pal16 + npc/tex/bea_1_eye1_TA_tex_txt: + addrs: [0x806F1060, 0x806F1160] + npc/tex/bea_1_eye2_TA_tex_txt: + addrs: [0x806F1160, 0x806F1260] + npc/tex/bea_1_eye3_TA_tex_txt: + addrs: [0x806F1260, 0x806F1360] + npc/tex/bea_1_eye4_TA_tex_txt: + addrs: [0x806F1360, 0x806F1460] + npc/tex/bea_1_eye5_TA_tex_txt: + addrs: [0x806F1460, 0x806F1560] + npc/tex/bea_1_eye6_TA_tex_txt: + addrs: [0x806F1560, 0x806F1660] + npc/tex/bea_1_eye7_TA_tex_txt: + addrs: [0x806F1660, 0x806F1760] + npc/tex/bea_1_eye8_TA_tex_txt: + addrs: [0x806F1760, 0x806F1860] + npc/tex/bea_1_mouth1_TA_tex_txt: + addrs: [0x806F1860, 0x806F1960] + npc/tex/bea_1_mouth2_TA_tex_txt: + addrs: [0x806F1960, 0x806F1A60] + npc/tex/bea_1_mouth3_TA_tex_txt: + addrs: [0x806F1A60, 0x806F1B60] + npc/tex/bea_1_mouth4_TA_tex_txt: + addrs: [0x806F1B60, 0x806F1C60] + npc/tex/bea_1_mouth5_TA_tex_txt: + addrs: [0x806F1C60, 0x806F1D60] + npc/tex/bea_1_mouth6_TA_tex_txt: + addrs: [0x806F1D60, 0x806F1E60] + npc/tex/bea_1_tmem_txt: + addrs: [0x806F1E60, 0x806F2260] + npc/tex/bea_2_pal: + addrs: [0x806F2260, 0x806F2280] + type: pal16 + npc/tex/bea_2_eye1_TA_tex_txt: + addrs: [0x806F2280, 0x806F2380] + npc/tex/bea_2_eye2_TA_tex_txt: + addrs: [0x806F2380, 0x806F2480] + npc/tex/bea_2_eye3_TA_tex_txt: + addrs: [0x806F2480, 0x806F2580] + npc/tex/bea_2_eye4_TA_tex_txt: + addrs: [0x806F2580, 0x806F2680] + npc/tex/bea_2_eye5_TA_tex_txt: + addrs: [0x806F2680, 0x806F2780] + npc/tex/bea_2_eye6_TA_tex_txt: + addrs: [0x806F2780, 0x806F2880] + npc/tex/bea_2_eye7_TA_tex_txt: + addrs: [0x806F2880, 0x806F2980] + npc/tex/bea_2_eye8_TA_tex_txt: + addrs: [0x806F2980, 0x806F2A80] + npc/tex/bea_2_mouth1_TA_tex_txt: + addrs: [0x806F2A80, 0x806F2B80] + npc/tex/bea_2_mouth2_TA_tex_txt: + addrs: [0x806F2B80, 0x806F2C80] + npc/tex/bea_2_mouth3_TA_tex_txt: + addrs: [0x806F2C80, 0x806F2D80] + npc/tex/bea_2_mouth4_TA_tex_txt: + addrs: [0x806F2D80, 0x806F2E80] + npc/tex/bea_2_mouth5_TA_tex_txt: + addrs: [0x806F2E80, 0x806F2F80] + npc/tex/bea_2_mouth6_TA_tex_txt: + addrs: [0x806F2F80, 0x806F3080] + npc/tex/bea_2_tmem_txt: + addrs: [0x806F3080, 0x806F3480] + npc/tex/bea_3_pal: + addrs: [0x806F3480, 0x806F34A0] + type: pal16 + npc/tex/bea_3_eye1_TA_tex_txt: + addrs: [0x806F34A0, 0x806F35A0] + npc/tex/bea_3_eye2_TA_tex_txt: + addrs: [0x806F35A0, 0x806F36A0] + npc/tex/bea_3_eye3_TA_tex_txt: + addrs: [0x806F36A0, 0x806F37A0] + npc/tex/bea_3_eye4_TA_tex_txt: + addrs: [0x806F37A0, 0x806F38A0] + npc/tex/bea_3_eye5_TA_tex_txt: + addrs: [0x806F38A0, 0x806F39A0] + npc/tex/bea_3_eye6_TA_tex_txt: + addrs: [0x806F39A0, 0x806F3AA0] + npc/tex/bea_3_eye7_TA_tex_txt: + addrs: [0x806F3AA0, 0x806F3BA0] + npc/tex/bea_3_eye8_TA_tex_txt: + addrs: [0x806F3BA0, 0x806F3CA0] + npc/tex/bea_3_mouth1_TA_tex_txt: + addrs: [0x806F3CA0, 0x806F3DA0] + npc/tex/bea_3_mouth2_TA_tex_txt: + addrs: [0x806F3DA0, 0x806F3EA0] + npc/tex/bea_3_mouth3_TA_tex_txt: + addrs: [0x806F3EA0, 0x806F3FA0] + npc/tex/bea_3_mouth4_TA_tex_txt: + addrs: [0x806F3FA0, 0x806F40A0] + npc/tex/bea_3_mouth5_TA_tex_txt: + addrs: [0x806F40A0, 0x806F41A0] + npc/tex/bea_3_mouth6_TA_tex_txt: + addrs: [0x806F41A0, 0x806F42A0] + npc/tex/bea_3_tmem_txt: + addrs: [0x806F42A0, 0x806F46A0] + npc/tex/bea_5_pal: + addrs: [0x806F46A0, 0x806F46C0] + type: pal16 + npc/tex/bea_5_eye1_TA_tex_txt: + addrs: [0x806F46C0, 0x806F47C0] + npc/tex/bea_5_eye2_TA_tex_txt: + addrs: [0x806F47C0, 0x806F48C0] + npc/tex/bea_5_eye3_TA_tex_txt: + addrs: [0x806F48C0, 0x806F49C0] + npc/tex/bea_5_eye4_TA_tex_txt: + addrs: [0x806F49C0, 0x806F4AC0] + npc/tex/bea_5_eye5_TA_tex_txt: + addrs: [0x806F4AC0, 0x806F4BC0] + npc/tex/bea_5_eye6_TA_tex_txt: + addrs: [0x806F4BC0, 0x806F4CC0] + npc/tex/bea_5_eye7_TA_tex_txt: + addrs: [0x806F4CC0, 0x806F4DC0] + npc/tex/bea_5_eye8_TA_tex_txt: + addrs: [0x806F4DC0, 0x806F4EC0] + npc/tex/bea_5_mouth1_TA_tex_txt: + addrs: [0x806F4EC0, 0x806F4FC0] + npc/tex/bea_5_mouth2_TA_tex_txt: + addrs: [0x806F4FC0, 0x806F50C0] + npc/tex/bea_5_mouth3_TA_tex_txt: + addrs: [0x806F50C0, 0x806F51C0] + npc/tex/bea_5_mouth4_TA_tex_txt: + addrs: [0x806F51C0, 0x806F52C0] + npc/tex/bea_5_mouth5_TA_tex_txt: + addrs: [0x806F52C0, 0x806F53C0] + npc/tex/bea_5_mouth6_TA_tex_txt: + addrs: [0x806F53C0, 0x806F54C0] + npc/tex/bea_5_tmem_txt: + addrs: [0x806F54C0, 0x806F58C0] + npc/tex/bea_6_pal: + addrs: [0x806F58C0, 0x806F58E0] + type: pal16 + npc/tex/bea_6_eye1_TA_tex_txt: + addrs: [0x806F58E0, 0x806F59E0] + npc/tex/bea_6_eye2_TA_tex_txt: + addrs: [0x806F59E0, 0x806F5AE0] + npc/tex/bea_6_eye3_TA_tex_txt: + addrs: [0x806F5AE0, 0x806F5BE0] + npc/tex/bea_6_eye4_TA_tex_txt: + addrs: [0x806F5BE0, 0x806F5CE0] + npc/tex/bea_6_eye5_TA_tex_txt: + addrs: [0x806F5CE0, 0x806F5DE0] + npc/tex/bea_6_eye6_TA_tex_txt: + addrs: [0x806F5DE0, 0x806F5EE0] + npc/tex/bea_6_eye7_TA_tex_txt: + addrs: [0x806F5EE0, 0x806F5FE0] + npc/tex/bea_6_eye8_TA_tex_txt: + addrs: [0x806F5FE0, 0x806F60E0] + npc/tex/bea_6_mouth1_TA_tex_txt: + addrs: [0x806F60E0, 0x806F61E0] + npc/tex/bea_6_mouth2_TA_tex_txt: + addrs: [0x806F61E0, 0x806F62E0] + npc/tex/bea_6_mouth3_TA_tex_txt: + addrs: [0x806F62E0, 0x806F63E0] + npc/tex/bea_6_mouth4_TA_tex_txt: + addrs: [0x806F63E0, 0x806F64E0] + npc/tex/bea_6_mouth5_TA_tex_txt: + addrs: [0x806F64E0, 0x806F65E0] + npc/tex/bea_6_mouth6_TA_tex_txt: + addrs: [0x806F65E0, 0x806F66E0] + npc/tex/bea_6_tmem_txt: + addrs: [0x806F66E0, 0x806F6AE0] + npc/tex/bea_7_pal: + addrs: [0x806F6AE0, 0x806F6B00] + type: pal16 + npc/tex/bea_7_eye1_TA_tex_txt: + addrs: [0x806F6B00, 0x806F6C00] + npc/tex/bea_7_eye2_TA_tex_txt: + addrs: [0x806F6C00, 0x806F6D00] + npc/tex/bea_7_eye3_TA_tex_txt: + addrs: [0x806F6D00, 0x806F6E00] + npc/tex/bea_7_eye4_TA_tex_txt: + addrs: [0x806F6E00, 0x806F6F00] + npc/tex/bea_7_eye5_TA_tex_txt: + addrs: [0x806F6F00, 0x806F7000] + npc/tex/bea_7_eye6_TA_tex_txt: + addrs: [0x806F7000, 0x806F7100] + npc/tex/bea_7_eye7_TA_tex_txt: + addrs: [0x806F7100, 0x806F7200] + npc/tex/bea_7_eye8_TA_tex_txt: + addrs: [0x806F7200, 0x806F7300] + npc/tex/bea_7_mouth1_TA_tex_txt: + addrs: [0x806F7300, 0x806F7400] + npc/tex/bea_7_mouth2_TA_tex_txt: + addrs: [0x806F7400, 0x806F7500] + npc/tex/bea_7_mouth3_TA_tex_txt: + addrs: [0x806F7500, 0x806F7600] + npc/tex/bea_7_mouth4_TA_tex_txt: + addrs: [0x806F7600, 0x806F7700] + npc/tex/bea_7_mouth5_TA_tex_txt: + addrs: [0x806F7700, 0x806F7800] + npc/tex/bea_7_mouth6_TA_tex_txt: + addrs: [0x806F7800, 0x806F7900] + npc/tex/bea_7_tmem_txt: + addrs: [0x806F7900, 0x806F7D00] + npc/tex/bea_8_pal: + addrs: [0x806F7D00, 0x806F7D20] + type: pal16 + npc/tex/bea_8_eye1_TA_tex_txt: + addrs: [0x806F7D20, 0x806F7E20] + npc/tex/bea_8_eye2_TA_tex_txt: + addrs: [0x806F7E20, 0x806F7F20] + npc/tex/bea_8_eye3_TA_tex_txt: + addrs: [0x806F7F20, 0x806F8020] + npc/tex/bea_8_eye4_TA_tex_txt: + addrs: [0x806F8020, 0x806F8120] + npc/tex/bea_8_eye5_TA_tex_txt: + addrs: [0x806F8120, 0x806F8220] + npc/tex/bea_8_eye6_TA_tex_txt: + addrs: [0x806F8220, 0x806F8320] + npc/tex/bea_8_eye7_TA_tex_txt: + addrs: [0x806F8320, 0x806F8420] + npc/tex/bea_8_eye8_TA_tex_txt: + addrs: [0x806F8420, 0x806F8520] + npc/tex/bea_8_mouth1_TA_tex_txt: + addrs: [0x806F8520, 0x806F8620] + npc/tex/bea_8_mouth2_TA_tex_txt: + addrs: [0x806F8620, 0x806F8720] + npc/tex/bea_8_mouth3_TA_tex_txt: + addrs: [0x806F8720, 0x806F8820] + npc/tex/bea_8_mouth4_TA_tex_txt: + addrs: [0x806F8820, 0x806F8920] + npc/tex/bea_8_mouth5_TA_tex_txt: + addrs: [0x806F8920, 0x806F8A20] + npc/tex/bea_8_mouth6_TA_tex_txt: + addrs: [0x806F8A20, 0x806F8B20] + npc/tex/bea_8_tmem_txt: + addrs: [0x806F8B20, 0x806F8F20] + npc/tex/bea_9_pal: + addrs: [0x806F8F20, 0x806F8F40] + type: pal16 + npc/tex/bea_9_eye1_TA_tex_txt: + addrs: [0x806F8F40, 0x806F9040] + npc/tex/bea_9_eye2_TA_tex_txt: + addrs: [0x806F9040, 0x806F9140] + npc/tex/bea_9_eye3_TA_tex_txt: + addrs: [0x806F9140, 0x806F9240] + npc/tex/bea_9_eye4_TA_tex_txt: + addrs: [0x806F9240, 0x806F9340] + npc/tex/bea_9_eye5_TA_tex_txt: + addrs: [0x806F9340, 0x806F9440] + npc/tex/bea_9_eye6_TA_tex_txt: + addrs: [0x806F9440, 0x806F9540] + npc/tex/bea_9_eye7_TA_tex_txt: + addrs: [0x806F9540, 0x806F9640] + npc/tex/bea_9_eye8_TA_tex_txt: + addrs: [0x806F9640, 0x806F9740] + npc/tex/bea_9_mouth1_TA_tex_txt: + addrs: [0x806F9740, 0x806F9840] + npc/tex/bea_9_mouth2_TA_tex_txt: + addrs: [0x806F9840, 0x806F9940] + npc/tex/bea_9_mouth3_TA_tex_txt: + addrs: [0x806F9940, 0x806F9A40] + npc/tex/bea_9_mouth4_TA_tex_txt: + addrs: [0x806F9A40, 0x806F9B40] + npc/tex/bea_9_mouth5_TA_tex_txt: + addrs: [0x806F9B40, 0x806F9C40] + npc/tex/bea_9_mouth6_TA_tex_txt: + addrs: [0x806F9C40, 0x806F9D40] + npc/tex/bea_9_tmem_txt: + addrs: [0x806F9D40, 0x806FA140] + npc/tex/bea_10_pal: + addrs: [0x806FA140, 0x806FA160] + type: pal16 + npc/tex/bea_10_eye1_TA_tex_txt: + addrs: [0x806FA160, 0x806FA260] + npc/tex/bea_10_eye2_TA_tex_txt: + addrs: [0x806FA260, 0x806FA360] + npc/tex/bea_10_eye3_TA_tex_txt: + addrs: [0x806FA360, 0x806FA460] + npc/tex/bea_10_eye4_TA_tex_txt: + addrs: [0x806FA460, 0x806FA560] + npc/tex/bea_10_eye5_TA_tex_txt: + addrs: [0x806FA560, 0x806FA660] + npc/tex/bea_10_eye6_TA_tex_txt: + addrs: [0x806FA660, 0x806FA760] + npc/tex/bea_10_eye7_TA_tex_txt: + addrs: [0x806FA760, 0x806FA860] + npc/tex/bea_10_eye8_TA_tex_txt: + addrs: [0x806FA860, 0x806FA960] + npc/tex/bea_10_mouth1_TA_tex_txt: + addrs: [0x806FA960, 0x806FAA60] + npc/tex/bea_10_mouth2_TA_tex_txt: + addrs: [0x806FAA60, 0x806FAB60] + npc/tex/bea_10_mouth3_TA_tex_txt: + addrs: [0x806FAB60, 0x806FAC60] + npc/tex/bea_10_mouth4_TA_tex_txt: + addrs: [0x806FAC60, 0x806FAD60] + npc/tex/bea_10_mouth5_TA_tex_txt: + addrs: [0x806FAD60, 0x806FAE60] + npc/tex/bea_10_mouth6_TA_tex_txt: + addrs: [0x806FAE60, 0x806FAF60] + npc/tex/bea_10_tmem_txt: + addrs: [0x806FAF60, 0x806FB360] flower/obj_flower_tex: addrs: [0x8074FE80, 0x80750680] flower/obj_flower_a_v: @@ -354,6 +819,4192 @@ config/rel.yml: type: vtx # dataobj.obj item names + npc/mdl/pbr_1_v: + addrs: [0x8076DFA8, 0x8076F6E8] + type: vtx + npc/tex/pbr_1_pal: + addrs: [0x80770180, 0x807701A0] + type: pal16 + npc/tex/pbr_1_eye1_TA_tex_txt: + addrs: [0x807701A0, 0x807702A0] + npc/tex/pbr_1_eye2_TA_tex_txt: + addrs: [0x807702A0, 0x807703A0] + npc/tex/pbr_1_eye3_TA_tex_txt: + addrs: [0x807703A0, 0x807704A0] + npc/tex/pbr_1_eye4_TA_tex_txt: + addrs: [0x807704A0, 0x807705A0] + npc/tex/pbr_1_eye5_TA_tex_txt: + addrs: [0x807705A0, 0x807706A0] + npc/tex/pbr_1_eye6_TA_tex_txt: + addrs: [0x807706A0, 0x807707A0] + npc/tex/pbr_1_eye7_TA_tex_txt: + addrs: [0x807707A0, 0x807708A0] + npc/tex/pbr_1_eye8_TA_tex_txt: + addrs: [0x807708A0, 0x807709A0] + npc/tex/pbr_1_tmem_txt: + addrs: [0x807709A0, 0x80770EA0] + npc/tex/pbr_2_pal: + addrs: [0x80770EA0, 0x80770EC0] + type: pal16 + npc/tex/pbr_2_eye1_TA_tex_txt: + addrs: [0x80770EC0, 0x80770FC0] + npc/tex/pbr_2_eye2_TA_tex_txt: + addrs: [0x80770FC0, 0x807710C0] + npc/tex/pbr_2_eye3_TA_tex_txt: + addrs: [0x807710C0, 0x807711C0] + npc/tex/pbr_2_eye4_TA_tex_txt: + addrs: [0x807711C0, 0x807712C0] + npc/tex/pbr_2_eye5_TA_tex_txt: + addrs: [0x807712C0, 0x807713C0] + npc/tex/pbr_2_eye6_TA_tex_txt: + addrs: [0x807713C0, 0x807714C0] + npc/tex/pbr_2_eye7_TA_tex_txt: + addrs: [0x807714C0, 0x807715C0] + npc/tex/pbr_2_eye8_TA_tex_txt: + addrs: [0x807715C0, 0x807716C0] + npc/tex/pbr_2_tmem_txt: + addrs: [0x807716C0, 0x80771BC0] + npc/tex/pbr_3_pal: + addrs: [0x80771BC0, 0x80771BE0] + type: pal16 + npc/tex/pbr_3_eye1_TA_tex_txt: + addrs: [0x80771BE0, 0x80771CE0] + npc/tex/pbr_3_eye2_TA_tex_txt: + addrs: [0x80771CE0, 0x80771DE0] + npc/tex/pbr_3_eye3_TA_tex_txt: + addrs: [0x80771DE0, 0x80771EE0] + npc/tex/pbr_3_eye4_TA_tex_txt: + addrs: [0x80771EE0, 0x80771FE0] + npc/tex/pbr_3_eye5_TA_tex_txt: + addrs: [0x80771FE0, 0x807720E0] + npc/tex/pbr_3_eye6_TA_tex_txt: + addrs: [0x807720E0, 0x807721E0] + npc/tex/pbr_3_eye7_TA_tex_txt: + addrs: [0x807721E0, 0x807722E0] + npc/tex/pbr_3_eye8_TA_tex_txt: + addrs: [0x807722E0, 0x807723E0] + npc/tex/pbr_3_tmem_txt: + addrs: [0x807723E0, 0x807728E0] + npc/tex/pbr_4_pal: + addrs: [0x807728E0, 0x80772900] + type: pal16 + npc/tex/pbr_4_eye1_TA_tex_txt: + addrs: [0x80772900, 0x80772A00] + npc/tex/pbr_4_eye2_TA_tex_txt: + addrs: [0x80772A00, 0x80772B00] + npc/tex/pbr_4_eye3_TA_tex_txt: + addrs: [0x80772B00, 0x80772C00] + npc/tex/pbr_4_eye4_TA_tex_txt: + addrs: [0x80772C00, 0x80772D00] + npc/tex/pbr_4_eye5_TA_tex_txt: + addrs: [0x80772D00, 0x80772E00] + npc/tex/pbr_4_eye6_TA_tex_txt: + addrs: [0x80772E00, 0x80772F00] + npc/tex/pbr_4_eye7_TA_tex_txt: + addrs: [0x80772F00, 0x80773000] + npc/tex/pbr_4_eye8_TA_tex_txt: + addrs: [0x80773000, 0x80773100] + npc/tex/pbr_4_tmem_txt: + addrs: [0x80773100, 0x80773600] + npc/tex/pbr_5_pal: + addrs: [0x80773600, 0x80773620] + type: pal16 + npc/tex/pbr_5_eye1_TA_tex_txt: + addrs: [0x80773620, 0x80773720] + npc/tex/pbr_5_eye2_TA_tex_txt: + addrs: [0x80773720, 0x80773820] + npc/tex/pbr_5_eye3_TA_tex_txt: + addrs: [0x80773820, 0x80773920] + npc/tex/pbr_5_eye4_TA_tex_txt: + addrs: [0x80773920, 0x80773A20] + npc/tex/pbr_5_eye5_TA_tex_txt: + addrs: [0x80773A20, 0x80773B20] + npc/tex/pbr_5_eye6_TA_tex_txt: + addrs: [0x80773B20, 0x80773C20] + npc/tex/pbr_5_eye7_TA_tex_txt: + addrs: [0x80773C20, 0x80773D20] + npc/tex/pbr_5_eye8_TA_tex_txt: + addrs: [0x80773D20, 0x80773E20] + npc/tex/pbr_5_tmem_txt: + addrs: [0x80773E20, 0x80774320] + npc/mdl/brd_1_v: + addrs: [0x80774320, 0x80775920] + type: vtx + npc/tex/brd_1_pal: + addrs: [0x80776360, 0x80776380] + type: pal16 + npc/tex/brd_1_eye1_TA_tex_txt: + addrs: [0x80776380, 0x80776480] + npc/tex/brd_1_eye2_TA_tex_txt: + addrs: [0x80776480, 0x80776580] + npc/tex/brd_1_eye3_TA_tex_txt: + addrs: [0x80776580, 0x80776680] + npc/tex/brd_1_eye4_TA_tex_txt: + addrs: [0x80776680, 0x80776780] + npc/tex/brd_1_eye5_TA_tex_txt: + addrs: [0x80776780, 0x80776880] + npc/tex/brd_1_eye6_TA_tex_txt: + addrs: [0x80776880, 0x80776980] + npc/tex/brd_1_eye7_TA_tex_txt: + addrs: [0x80776980, 0x80776A80] + npc/tex/brd_1_eye8_TA_tex_txt: + addrs: [0x80776A80, 0x80776B80] + npc/tex/brd_1_tmem_txt: + addrs: [0x80776B80, 0x80777080] + npc/tex/brd_2_pal: + addrs: [0x80777080, 0x807770A0] + type: pal16 + npc/tex/brd_2_eye1_TA_tex_txt: + addrs: [0x807770A0, 0x807771A0] + npc/tex/brd_2_eye2_TA_tex_txt: + addrs: [0x807771A0, 0x807772A0] + npc/tex/brd_2_eye3_TA_tex_txt: + addrs: [0x807772A0, 0x807773A0] + npc/tex/brd_2_eye4_TA_tex_txt: + addrs: [0x807773A0, 0x807774A0] + npc/tex/brd_2_eye5_TA_tex_txt: + addrs: [0x807774A0, 0x807775A0] + npc/tex/brd_2_eye6_TA_tex_txt: + addrs: [0x807775A0, 0x807776A0] + npc/tex/brd_2_eye7_TA_tex_txt: + addrs: [0x807776A0, 0x807777A0] + npc/tex/brd_2_eye8_TA_tex_txt: + addrs: [0x807777A0, 0x807778A0] + npc/tex/brd_2_tmem_txt: + addrs: [0x807778A0, 0x80777DA0] + npc/tex/brd_11_pal: + addrs: [0x80777DA0, 0x80777DC0] + type: pal16 + npc/tex/brd_11_eye1_TA_tex_txt: + addrs: [0x80777DC0, 0x80777EC0] + npc/tex/brd_11_eye2_TA_tex_txt: + addrs: [0x80777EC0, 0x80777FC0] + npc/tex/brd_11_eye3_TA_tex_txt: + addrs: [0x80777FC0, 0x807780C0] + npc/tex/brd_11_eye4_TA_tex_txt: + addrs: [0x807780C0, 0x807781C0] + npc/tex/brd_11_eye5_TA_tex_txt: + addrs: [0x807781C0, 0x807782C0] + npc/tex/brd_11_eye6_TA_tex_txt: + addrs: [0x807782C0, 0x807783C0] + npc/tex/brd_11_eye7_TA_tex_txt: + addrs: [0x807783C0, 0x807784C0] + npc/tex/brd_11_eye8_TA_tex_txt: + addrs: [0x807784C0, 0x807785C0] + npc/tex/brd_11_tmem_txt: + addrs: [0x807785C0, 0x80778AC0] + npc/tex/brd_3_pal: + addrs: [0x80778AC0, 0x80778AE0] + type: pal16 + npc/tex/brd_3_eye1_TA_tex_txt: + addrs: [0x80778AE0, 0x80778BE0] + npc/tex/brd_3_eye2_TA_tex_txt: + addrs: [0x80778BE0, 0x80778CE0] + npc/tex/brd_3_eye3_TA_tex_txt: + addrs: [0x80778CE0, 0x80778DE0] + npc/tex/brd_3_eye4_TA_tex_txt: + addrs: [0x80778DE0, 0x80778EE0] + npc/tex/brd_3_eye5_TA_tex_txt: + addrs: [0x80778EE0, 0x80778FE0] + npc/tex/brd_3_eye6_TA_tex_txt: + addrs: [0x80778FE0, 0x807790E0] + npc/tex/brd_3_eye7_TA_tex_txt: + addrs: [0x807790E0, 0x807791E0] + npc/tex/brd_3_eye8_TA_tex_txt: + addrs: [0x807791E0, 0x807792E0] + npc/tex/brd_3_tmem_txt: + addrs: [0x807792E0, 0x807797E0] + npc/tex/brd_4_pal: + addrs: [0x807797E0, 0x80779800] + type: pal16 + npc/tex/brd_4_eye1_TA_tex_txt: + addrs: [0x80779800, 0x80779900] + npc/tex/brd_4_eye2_TA_tex_txt: + addrs: [0x80779900, 0x80779A00] + npc/tex/brd_4_eye3_TA_tex_txt: + addrs: [0x80779A00, 0x80779B00] + npc/tex/brd_4_eye4_TA_tex_txt: + addrs: [0x80779B00, 0x80779C00] + npc/tex/brd_4_eye5_TA_tex_txt: + addrs: [0x80779C00, 0x80779D00] + npc/tex/brd_4_eye6_TA_tex_txt: + addrs: [0x80779D00, 0x80779E00] + npc/tex/brd_4_eye7_TA_tex_txt: + addrs: [0x80779E00, 0x80779F00] + npc/tex/brd_4_eye8_TA_tex_txt: + addrs: [0x80779F00, 0x8077A000] + npc/tex/brd_4_tmem_txt: + addrs: [0x8077A000, 0x8077A500] + npc/tex/brd_5_pal: + addrs: [0x8077A500, 0x8077A520] + type: pal16 + npc/tex/brd_5_eye1_TA_tex_txt: + addrs: [0x8077A520, 0x8077A620] + npc/tex/brd_5_eye2_TA_tex_txt: + addrs: [0x8077A620, 0x8077A720] + npc/tex/brd_5_eye3_TA_tex_txt: + addrs: [0x8077A720, 0x8077A820] + npc/tex/brd_5_eye4_TA_tex_txt: + addrs: [0x8077A820, 0x8077A920] + npc/tex/brd_5_eye5_TA_tex_txt: + addrs: [0x8077A920, 0x8077AA20] + npc/tex/brd_5_eye6_TA_tex_txt: + addrs: [0x8077AA20, 0x8077AB20] + npc/tex/brd_5_eye7_TA_tex_txt: + addrs: [0x8077AB20, 0x8077AC20] + npc/tex/brd_5_eye8_TA_tex_txt: + addrs: [0x8077AC20, 0x8077AD20] + npc/tex/brd_5_tmem_txt: + addrs: [0x8077AD20, 0x8077B220] + npc/tex/brd_6_pal: + addrs: [0x8077B220, 0x8077B240] + type: pal16 + npc/tex/brd_6_eye1_TA_tex_txt: + addrs: [0x8077B240, 0x8077B340] + npc/tex/brd_6_eye2_TA_tex_txt: + addrs: [0x8077B340, 0x8077B440] + npc/tex/brd_6_eye3_TA_tex_txt: + addrs: [0x8077B440, 0x8077B540] + npc/tex/brd_6_eye4_TA_tex_txt: + addrs: [0x8077B540, 0x8077B640] + npc/tex/brd_6_eye5_TA_tex_txt: + addrs: [0x8077B640, 0x8077B740] + npc/tex/brd_6_eye6_TA_tex_txt: + addrs: [0x8077B740, 0x8077B840] + npc/tex/brd_6_eye7_TA_tex_txt: + addrs: [0x8077B840, 0x8077B940] + npc/tex/brd_6_eye8_TA_tex_txt: + addrs: [0x8077B940, 0x8077BA40] + npc/tex/brd_6_tmem_txt: + addrs: [0x8077BA40, 0x8077BF40] + npc/tex/brd_7_pal: + addrs: [0x8077BF40, 0x8077BF60] + type: pal16 + npc/tex/brd_7_eye1_TA_tex_txt: + addrs: [0x8077BF60, 0x8077C060] + npc/tex/brd_7_eye2_TA_tex_txt: + addrs: [0x8077C060, 0x8077C160] + npc/tex/brd_7_eye3_TA_tex_txt: + addrs: [0x8077C160, 0x8077C260] + npc/tex/brd_7_eye4_TA_tex_txt: + addrs: [0x8077C260, 0x8077C360] + npc/tex/brd_7_eye5_TA_tex_txt: + addrs: [0x8077C360, 0x8077C460] + npc/tex/brd_7_eye6_TA_tex_txt: + addrs: [0x8077C460, 0x8077C560] + npc/tex/brd_7_eye7_TA_tex_txt: + addrs: [0x8077C560, 0x8077C660] + npc/tex/brd_7_eye8_TA_tex_txt: + addrs: [0x8077C660, 0x8077C760] + npc/tex/brd_7_tmem_txt: + addrs: [0x8077C760, 0x8077CC60] + npc/tex/brd_8_pal: + addrs: [0x8077CC60, 0x8077CC80] + type: pal16 + npc/tex/brd_8_eye1_TA_tex_txt: + addrs: [0x8077CC80, 0x8077CD80] + npc/tex/brd_8_eye2_TA_tex_txt: + addrs: [0x8077CD80, 0x8077CE80] + npc/tex/brd_8_eye3_TA_tex_txt: + addrs: [0x8077CE80, 0x8077CF80] + npc/tex/brd_8_eye4_TA_tex_txt: + addrs: [0x8077CF80, 0x8077D080] + npc/tex/brd_8_eye5_TA_tex_txt: + addrs: [0x8077D080, 0x8077D180] + npc/tex/brd_8_eye6_TA_tex_txt: + addrs: [0x8077D180, 0x8077D280] + npc/tex/brd_8_eye7_TA_tex_txt: + addrs: [0x8077D280, 0x8077D380] + npc/tex/brd_8_eye8_TA_tex_txt: + addrs: [0x8077D380, 0x8077D480] + npc/tex/brd_8_tmem_txt: + addrs: [0x8077D480, 0x8077D980] + npc/tex/brd_9_pal: + addrs: [0x8077D980, 0x8077D9A0] + type: pal16 + npc/tex/brd_9_eye1_TA_tex_txt: + addrs: [0x8077D9A0, 0x8077DAA0] + npc/tex/brd_9_eye2_TA_tex_txt: + addrs: [0x8077DAA0, 0x8077DBA0] + npc/tex/brd_9_eye3_TA_tex_txt: + addrs: [0x8077DBA0, 0x8077DCA0] + npc/tex/brd_9_eye4_TA_tex_txt: + addrs: [0x8077DCA0, 0x8077DDA0] + npc/tex/brd_9_eye5_TA_tex_txt: + addrs: [0x8077DDA0, 0x8077DEA0] + npc/tex/brd_9_eye6_TA_tex_txt: + addrs: [0x8077DEA0, 0x8077DFA0] + npc/tex/brd_9_eye7_TA_tex_txt: + addrs: [0x8077DFA0, 0x8077E0A0] + npc/tex/brd_9_eye8_TA_tex_txt: + addrs: [0x8077E0A0, 0x8077E1A0] + npc/tex/brd_9_tmem_txt: + addrs: [0x8077E1A0, 0x8077E6A0] + npc/tex/brd_10_pal: + addrs: [0x8077E6A0, 0x8077E6C0] + type: pal16 + npc/tex/brd_10_eye1_TA_tex_txt: + addrs: [0x8077E6C0, 0x8077E7C0] + npc/tex/brd_10_eye2_TA_tex_txt: + addrs: [0x8077E7C0, 0x8077E8C0] + npc/tex/brd_10_eye3_TA_tex_txt: + addrs: [0x8077E8C0, 0x8077E9C0] + npc/tex/brd_10_eye4_TA_tex_txt: + addrs: [0x8077E9C0, 0x8077EAC0] + npc/tex/brd_10_eye5_TA_tex_txt: + addrs: [0x8077EAC0, 0x8077EBC0] + npc/tex/brd_10_eye6_TA_tex_txt: + addrs: [0x8077EBC0, 0x8077ECC0] + npc/tex/brd_10_eye7_TA_tex_txt: + addrs: [0x8077ECC0, 0x8077EDC0] + npc/tex/brd_10_eye8_TA_tex_txt: + addrs: [0x8077EDC0, 0x8077EEC0] + npc/tex/brd_10_tmem_txt: + addrs: [0x8077EEC0, 0x8077F3C0] + npc/mdl/fox_1_v: + addrs: [0x807D5FE8, 0x807D76E8] + type: vtx + npc/tex/fox_1_pal: + addrs: [0x807D80A0, 0x807D80C0] + type: pal16 + npc/tex/fox_1_eye1_TA_tex_txt: + addrs: [0x807D80C0, 0x807D81C0] + npc/tex/fox_1_eye2_TA_tex_txt: + addrs: [0x807D81C0, 0x807D82C0] + npc/tex/fox_1_eye3_TA_tex_txt: + addrs: [0x807D82C0, 0x807D83C0] + npc/tex/fox_1_eye4_TA_tex_txt: + addrs: [0x807D83C0, 0x807D84C0] + npc/tex/fox_1_eye5_TA_tex_txt: + addrs: [0x807D84C0, 0x807D85C0] + npc/tex/fox_1_eye6_TA_tex_txt: + addrs: [0x807D85C0, 0x807D86C0] + npc/tex/fox_1_eye7_TA_tex_txt: + addrs: [0x807D86C0, 0x807D87C0] + npc/tex/fox_1_eye8_TA_tex_txt: + addrs: [0x807D87C0, 0x807D88C0] + npc/tex/fox_1_tmem_txt: + addrs: [0x807D88C0, 0x807D8FC0] + npc/mdl/bul_1_v: + addrs: [0x807D8FC0, 0x807DA640] + type: vtx + npc/tex/bul_1_pal: + addrs: [0x807DAFC0, 0x807DAFE0] + type: pal16 + npc/tex/bul_1_eye1_TA_tex_txt: + addrs: [0x807DAFE0, 0x807DB0E0] + npc/tex/bul_1_eye2_TA_tex_txt: + addrs: [0x807DB0E0, 0x807DB1E0] + npc/tex/bul_1_eye3_TA_tex_txt: + addrs: [0x807DB1E0, 0x807DB2E0] + npc/tex/bul_1_eye4_TA_tex_txt: + addrs: [0x807DB2E0, 0x807DB3E0] + npc/tex/bul_1_eye5_TA_tex_txt: + addrs: [0x807DB3E0, 0x807DB4E0] + npc/tex/bul_1_eye6_TA_tex_txt: + addrs: [0x807DB4E0, 0x807DB5E0] + npc/tex/bul_1_eye7_TA_tex_txt: + addrs: [0x807DB5E0, 0x807DB6E0] + npc/tex/bul_1_eye8_TA_tex_txt: + addrs: [0x807DB6E0, 0x807DB7E0] + npc/tex/bul_1_mouth1_TA_tex_txt: + addrs: [0x807DB7E0, 0x807DB8E0] + npc/tex/bul_1_mouth2_TA_tex_txt: + addrs: [0x807DB8E0, 0x807DB9E0] + npc/tex/bul_1_mouth3_TA_tex_txt: + addrs: [0x807DB9E0, 0x807DBAE0] + npc/tex/bul_1_mouth4_TA_tex_txt: + addrs: [0x807DBAE0, 0x807DBBE0] + npc/tex/bul_1_mouth5_TA_tex_txt: + addrs: [0x807DBBE0, 0x807DBCE0] + npc/tex/bul_1_mouth6_TA_tex_txt: + addrs: [0x807DBCE0, 0x807DBDE0] + npc/tex/bul_1_tmem_txt: + addrs: [0x807DBDE0, 0x807DC1E0] + npc/tex/bul_2_pal: + addrs: [0x807DC1E0, 0x807DC200] + type: pal16 + npc/tex/bul_2_eye1_TA_tex_txt: + addrs: [0x807DC200, 0x807DC300] + npc/tex/bul_2_eye2_TA_tex_txt: + addrs: [0x807DC300, 0x807DC400] + npc/tex/bul_2_eye3_TA_tex_txt: + addrs: [0x807DC400, 0x807DC500] + npc/tex/bul_2_eye4_TA_tex_txt: + addrs: [0x807DC500, 0x807DC600] + npc/tex/bul_2_eye5_TA_tex_txt: + addrs: [0x807DC600, 0x807DC700] + npc/tex/bul_2_eye6_TA_tex_txt: + addrs: [0x807DC700, 0x807DC800] + npc/tex/bul_2_eye7_TA_tex_txt: + addrs: [0x807DC800, 0x807DC900] + npc/tex/bul_2_eye8_TA_tex_txt: + addrs: [0x807DC900, 0x807DCA00] + npc/tex/bul_2_mouth1_TA_tex_txt: + addrs: [0x807DCA00, 0x807DCB00] + npc/tex/bul_2_mouth2_TA_tex_txt: + addrs: [0x807DCB00, 0x807DCC00] + npc/tex/bul_2_mouth3_TA_tex_txt: + addrs: [0x807DCC00, 0x807DCD00] + npc/tex/bul_2_mouth4_TA_tex_txt: + addrs: [0x807DCD00, 0x807DCE00] + npc/tex/bul_2_mouth5_TA_tex_txt: + addrs: [0x807DCE00, 0x807DCF00] + npc/tex/bul_2_mouth6_TA_tex_txt: + addrs: [0x807DCF00, 0x807DD000] + npc/tex/bul_2_tmem_txt: + addrs: [0x807DD000, 0x807DD400] + npc/tex/bul_3_pal: + addrs: [0x807DD400, 0x807DD420] + type: pal16 + npc/tex/bul_3_eye1_TA_tex_txt: + addrs: [0x807DD420, 0x807DD520] + npc/tex/bul_3_eye2_TA_tex_txt: + addrs: [0x807DD520, 0x807DD620] + npc/tex/bul_3_eye3_TA_tex_txt: + addrs: [0x807DD620, 0x807DD720] + npc/tex/bul_3_eye4_TA_tex_txt: + addrs: [0x807DD720, 0x807DD820] + npc/tex/bul_3_eye5_TA_tex_txt: + addrs: [0x807DD820, 0x807DD920] + npc/tex/bul_3_eye6_TA_tex_txt: + addrs: [0x807DD920, 0x807DDA20] + npc/tex/bul_3_eye7_TA_tex_txt: + addrs: [0x807DDA20, 0x807DDB20] + npc/tex/bul_3_eye8_TA_tex_txt: + addrs: [0x807DDB20, 0x807DDC20] + npc/tex/bul_3_mouth1_TA_tex_txt: + addrs: [0x807DDC20, 0x807DDD20] + npc/tex/bul_3_mouth2_TA_tex_txt: + addrs: [0x807DDD20, 0x807DDE20] + npc/tex/bul_3_mouth3_TA_tex_txt: + addrs: [0x807DDE20, 0x807DDF20] + npc/tex/bul_3_mouth4_TA_tex_txt: + addrs: [0x807DDF20, 0x807DE020] + npc/tex/bul_3_mouth5_TA_tex_txt: + addrs: [0x807DE020, 0x807DE120] + npc/tex/bul_3_mouth6_TA_tex_txt: + addrs: [0x807DE120, 0x807DE220] + npc/tex/bul_3_tmem_txt: + addrs: [0x807DE220, 0x807DE620] + npc/tex/bul_4_pal: + addrs: [0x807DE620, 0x807DE640] + type: pal16 + npc/tex/bul_4_eye1_TA_tex_txt: + addrs: [0x807DE640, 0x807DE740] + npc/tex/bul_4_eye2_TA_tex_txt: + addrs: [0x807DE740, 0x807DE840] + npc/tex/bul_4_eye3_TA_tex_txt: + addrs: [0x807DE840, 0x807DE940] + npc/tex/bul_4_eye4_TA_tex_txt: + addrs: [0x807DE940, 0x807DEA40] + npc/tex/bul_4_eye5_TA_tex_txt: + addrs: [0x807DEA40, 0x807DEB40] + npc/tex/bul_4_eye6_TA_tex_txt: + addrs: [0x807DEB40, 0x807DEC40] + npc/tex/bul_4_eye7_TA_tex_txt: + addrs: [0x807DEC40, 0x807DED40] + npc/tex/bul_4_eye8_TA_tex_txt: + addrs: [0x807DED40, 0x807DEE40] + npc/tex/bul_4_mouth1_TA_tex_txt: + addrs: [0x807DEE40, 0x807DEF40] + npc/tex/bul_4_mouth2_TA_tex_txt: + addrs: [0x807DEF40, 0x807DF040] + npc/tex/bul_4_mouth3_TA_tex_txt: + addrs: [0x807DF040, 0x807DF140] + npc/tex/bul_4_mouth4_TA_tex_txt: + addrs: [0x807DF140, 0x807DF240] + npc/tex/bul_4_mouth5_TA_tex_txt: + addrs: [0x807DF240, 0x807DF340] + npc/tex/bul_4_mouth6_TA_tex_txt: + addrs: [0x807DF340, 0x807DF440] + npc/tex/bul_4_tmem_txt: + addrs: [0x807DF440, 0x807DF840] + npc/mdl/cml_1_v: + addrs: [0x807DF840, 0x807E1470] + type: vtx + npc/tex/cml_1_pal: + addrs: [0x807E1EC0, 0x807E1EE0] + type: pal16 + npc/tex/cml_1_eye1_TA_tex_txt: + addrs: [0x807E1EE0, 0x807E1FE0] + npc/tex/cml_1_eye2_TA_tex_txt: + addrs: [0x807E1FE0, 0x807E20E0] + npc/tex/cml_1_eye3_TA_tex_txt: + addrs: [0x807E20E0, 0x807E21E0] + npc/tex/cml_1_eye4_TA_tex_txt: + addrs: [0x807E21E0, 0x807E22E0] + npc/tex/cml_1_eye5_TA_tex_txt: + addrs: [0x807E22E0, 0x807E23E0] + npc/tex/cml_1_eye6_TA_tex_txt: + addrs: [0x807E23E0, 0x807E24E0] + npc/tex/cml_1_eye7_TA_tex_txt: + addrs: [0x807E24E0, 0x807E25E0] + npc/tex/cml_1_eye8_TA_tex_txt: + addrs: [0x807E25E0, 0x807E26E0] + npc/tex/cml_1_tmem_txt: + addrs: [0x807E26E0, 0x807E2E60] + npc/mdl/cat_1_v: + addrs: [0x807E2E60, 0x807E4290] + type: vtx + npc/tex/cat_1_pal: + addrs: [0x807E4BC0, 0x807E4BE0] + type: pal16 + npc/tex/cat_1_eye1_TA_tex_txt: + addrs: [0x807E4BE0, 0x807E4CE0] + npc/tex/cat_1_eye2_TA_tex_txt: + addrs: [0x807E4CE0, 0x807E4DE0] + npc/tex/cat_1_eye3_TA_tex_txt: + addrs: [0x807E4DE0, 0x807E4EE0] + npc/tex/cat_1_eye4_TA_tex_txt: + addrs: [0x807E4EE0, 0x807E4FE0] + npc/tex/cat_1_eye5_TA_tex_txt: + addrs: [0x807E4FE0, 0x807E50E0] + npc/tex/cat_1_eye6_TA_tex_txt: + addrs: [0x807E50E0, 0x807E51E0] + npc/tex/cat_1_eye7_TA_tex_txt: + addrs: [0x807E51E0, 0x807E52E0] + npc/tex/cat_1_eye8_TA_tex_txt: + addrs: [0x807E52E0, 0x807E53E0] + npc/tex/cat_1_mouth1_TA_tex_txt: + addrs: [0x807E53E0, 0x807E54E0] + npc/tex/cat_1_mouth2_TA_tex_txt: + addrs: [0x807E54E0, 0x807E55E0] + npc/tex/cat_1_mouth3_TA_tex_txt: + addrs: [0x807E55E0, 0x807E56E0] + npc/tex/cat_1_mouth4_TA_tex_txt: + addrs: [0x807E56E0, 0x807E57E0] + npc/tex/cat_1_mouth5_TA_tex_txt: + addrs: [0x807E57E0, 0x807E58E0] + npc/tex/cat_1_mouth6_TA_tex_txt: + addrs: [0x807E58E0, 0x807E59E0] + npc/tex/cat_1_tmem_txt: + addrs: [0x807E59E0, 0x807E5DE0] + npc/tex/cat_2_pal: + addrs: [0x807E5DE0, 0x807E5E00] + type: pal16 + npc/tex/cat_2_eye1_TA_tex_txt: + addrs: [0x807E5E00, 0x807E5F00] + npc/tex/cat_2_eye2_TA_tex_txt: + addrs: [0x807E5F00, 0x807E6000] + npc/tex/cat_2_eye3_TA_tex_txt: + addrs: [0x807E6000, 0x807E6100] + npc/tex/cat_2_eye4_TA_tex_txt: + addrs: [0x807E6100, 0x807E6200] + npc/tex/cat_2_eye5_TA_tex_txt: + addrs: [0x807E6200, 0x807E6300] + npc/tex/cat_2_eye6_TA_tex_txt: + addrs: [0x807E6300, 0x807E6400] + npc/tex/cat_2_eye7_TA_tex_txt: + addrs: [0x807E6400, 0x807E6500] + npc/tex/cat_2_eye8_TA_tex_txt: + addrs: [0x807E6500, 0x807E6600] + npc/tex/cat_2_mouth1_TA_tex_txt: + addrs: [0x807E6600, 0x807E6700] + npc/tex/cat_2_mouth2_TA_tex_txt: + addrs: [0x807E6700, 0x807E6800] + npc/tex/cat_2_mouth3_TA_tex_txt: + addrs: [0x807E6800, 0x807E6900] + npc/tex/cat_2_mouth4_TA_tex_txt: + addrs: [0x807E6900, 0x807E6A00] + npc/tex/cat_2_mouth5_TA_tex_txt: + addrs: [0x807E6A00, 0x807E6B00] + npc/tex/cat_2_mouth6_TA_tex_txt: + addrs: [0x807E6B00, 0x807E6C00] + npc/tex/cat_2_tmem_txt: + addrs: [0x807E6C00, 0x807E7000] + npc/tex/cat_11_pal: + addrs: [0x807E7000, 0x807E7020] + type: pal16 + npc/tex/cat_11_eye1_TA_tex_txt: + addrs: [0x807E7020, 0x807E7120] + npc/tex/cat_11_eye2_TA_tex_txt: + addrs: [0x807E7120, 0x807E7220] + npc/tex/cat_11_eye3_TA_tex_txt: + addrs: [0x807E7220, 0x807E7320] + npc/tex/cat_11_eye4_TA_tex_txt: + addrs: [0x807E7320, 0x807E7420] + npc/tex/cat_11_eye5_TA_tex_txt: + addrs: [0x807E7420, 0x807E7520] + npc/tex/cat_11_eye6_TA_tex_txt: + addrs: [0x807E7520, 0x807E7620] + npc/tex/cat_11_eye7_TA_tex_txt: + addrs: [0x807E7620, 0x807E7720] + npc/tex/cat_11_eye8_TA_tex_txt: + addrs: [0x807E7720, 0x807E7820] + npc/tex/cat_11_mouth1_TA_tex_txt: + addrs: [0x807E7820, 0x807E7920] + npc/tex/cat_11_mouth2_TA_tex_txt: + addrs: [0x807E7920, 0x807E7A20] + npc/tex/cat_11_mouth3_TA_tex_txt: + addrs: [0x807E7A20, 0x807E7B20] + npc/tex/cat_11_mouth4_TA_tex_txt: + addrs: [0x807E7B20, 0x807E7C20] + npc/tex/cat_11_mouth5_TA_tex_txt: + addrs: [0x807E7C20, 0x807E7D20] + npc/tex/cat_11_mouth6_TA_tex_txt: + addrs: [0x807E7D20, 0x807E7E20] + npc/tex/cat_11_tmem_txt: + addrs: [0x807E7E20, 0x807E8220] + npc/tex/cat_12_pal: + addrs: [0x807E8220, 0x807E8240] + type: pal16 + npc/tex/cat_12_eye1_TA_tex_txt: + addrs: [0x807E8240, 0x807E8340] + npc/tex/cat_12_eye2_TA_tex_txt: + addrs: [0x807E8340, 0x807E8440] + npc/tex/cat_12_eye3_TA_tex_txt: + addrs: [0x807E8440, 0x807E8540] + npc/tex/cat_12_eye4_TA_tex_txt: + addrs: [0x807E8540, 0x807E8640] + npc/tex/cat_12_eye5_TA_tex_txt: + addrs: [0x807E8640, 0x807E8740] + npc/tex/cat_12_eye6_TA_tex_txt: + addrs: [0x807E8740, 0x807E8840] + npc/tex/cat_12_eye7_TA_tex_txt: + addrs: [0x807E8840, 0x807E8940] + npc/tex/cat_12_eye8_TA_tex_txt: + addrs: [0x807E8940, 0x807E8A40] + npc/tex/cat_12_mouth1_TA_tex_txt: + addrs: [0x807E8A40, 0x807E8B40] + npc/tex/cat_12_mouth2_TA_tex_txt: + addrs: [0x807E8B40, 0x807E8C40] + npc/tex/cat_12_mouth3_TA_tex_txt: + addrs: [0x807E8C40, 0x807E8D40] + npc/tex/cat_12_mouth4_TA_tex_txt: + addrs: [0x807E8D40, 0x807E8E40] + npc/tex/cat_12_mouth5_TA_tex_txt: + addrs: [0x807E8E40, 0x807E8F40] + npc/tex/cat_12_mouth6_TA_tex_txt: + addrs: [0x807E8F40, 0x807E9040] + npc/tex/cat_12_tmem_txt: + addrs: [0x807E9040, 0x807E9440] + npc/tex/cat_13_pal: + addrs: [0x807E9440, 0x807E9460] + type: pal16 + npc/tex/cat_13_eye1_TA_tex_txt: + addrs: [0x807E9460, 0x807E9560] + npc/tex/cat_13_eye2_TA_tex_txt: + addrs: [0x807E9560, 0x807E9660] + npc/tex/cat_13_eye3_TA_tex_txt: + addrs: [0x807E9660, 0x807E9760] + npc/tex/cat_13_eye4_TA_tex_txt: + addrs: [0x807E9760, 0x807E9860] + npc/tex/cat_13_eye5_TA_tex_txt: + addrs: [0x807E9860, 0x807E9960] + npc/tex/cat_13_eye6_TA_tex_txt: + addrs: [0x807E9960, 0x807E9A60] + npc/tex/cat_13_eye7_TA_tex_txt: + addrs: [0x807E9A60, 0x807E9B60] + npc/tex/cat_13_eye8_TA_tex_txt: + addrs: [0x807E9B60, 0x807E9C60] + npc/tex/cat_13_mouth1_TA_tex_txt: + addrs: [0x807E9C60, 0x807E9D60] + npc/tex/cat_13_mouth2_TA_tex_txt: + addrs: [0x807E9D60, 0x807E9E60] + npc/tex/cat_13_mouth3_TA_tex_txt: + addrs: [0x807E9E60, 0x807E9F60] + npc/tex/cat_13_mouth4_TA_tex_txt: + addrs: [0x807E9F60, 0x807EA060] + npc/tex/cat_13_mouth5_TA_tex_txt: + addrs: [0x807EA060, 0x807EA160] + npc/tex/cat_13_mouth6_TA_tex_txt: + addrs: [0x807EA160, 0x807EA260] + npc/tex/cat_13_tmem_txt: + addrs: [0x807EA260, 0x807EA660] + npc/tex/cat_14_pal: + addrs: [0x807EA660, 0x807EA680] + type: pal16 + npc/tex/cat_14_eye1_TA_tex_txt: + addrs: [0x807EA680, 0x807EA780] + npc/tex/cat_14_eye2_TA_tex_txt: + addrs: [0x807EA780, 0x807EA880] + npc/tex/cat_14_eye3_TA_tex_txt: + addrs: [0x807EA880, 0x807EA980] + npc/tex/cat_14_eye4_TA_tex_txt: + addrs: [0x807EA980, 0x807EAA80] + npc/tex/cat_14_eye5_TA_tex_txt: + addrs: [0x807EAA80, 0x807EAB80] + npc/tex/cat_14_eye6_TA_tex_txt: + addrs: [0x807EAB80, 0x807EAC80] + npc/tex/cat_14_eye7_TA_tex_txt: + addrs: [0x807EAC80, 0x807EAD80] + npc/tex/cat_14_eye8_TA_tex_txt: + addrs: [0x807EAD80, 0x807EAE80] + npc/tex/cat_14_mouth1_TA_tex_txt: + addrs: [0x807EAE80, 0x807EAF80] + npc/tex/cat_14_mouth2_TA_tex_txt: + addrs: [0x807EAF80, 0x807EB080] + npc/tex/cat_14_mouth3_TA_tex_txt: + addrs: [0x807EB080, 0x807EB180] + npc/tex/cat_14_mouth4_TA_tex_txt: + addrs: [0x807EB180, 0x807EB280] + npc/tex/cat_14_mouth5_TA_tex_txt: + addrs: [0x807EB280, 0x807EB380] + npc/tex/cat_14_mouth6_TA_tex_txt: + addrs: [0x807EB380, 0x807EB480] + npc/tex/cat_14_tmem_txt: + addrs: [0x807EB480, 0x807EB880] + npc/tex/cat_15_pal: + addrs: [0x807EB880, 0x807EB8A0] + type: pal16 + npc/tex/cat_15_eye1_TA_tex_txt: + addrs: [0x807EB8A0, 0x807EB9A0] + npc/tex/cat_15_eye2_TA_tex_txt: + addrs: [0x807EB9A0, 0x807EBAA0] + npc/tex/cat_15_eye3_TA_tex_txt: + addrs: [0x807EBAA0, 0x807EBBA0] + npc/tex/cat_15_eye4_TA_tex_txt: + addrs: [0x807EBBA0, 0x807EBCA0] + npc/tex/cat_15_eye5_TA_tex_txt: + addrs: [0x807EBCA0, 0x807EBDA0] + npc/tex/cat_15_eye6_TA_tex_txt: + addrs: [0x807EBDA0, 0x807EBEA0] + npc/tex/cat_15_eye7_TA_tex_txt: + addrs: [0x807EBEA0, 0x807EBFA0] + npc/tex/cat_15_eye8_TA_tex_txt: + addrs: [0x807EBFA0, 0x807EC0A0] + npc/tex/cat_15_mouth1_TA_tex_txt: + addrs: [0x807EC0A0, 0x807EC1A0] + npc/tex/cat_15_mouth2_TA_tex_txt: + addrs: [0x807EC1A0, 0x807EC2A0] + npc/tex/cat_15_mouth3_TA_tex_txt: + addrs: [0x807EC2A0, 0x807EC3A0] + npc/tex/cat_15_mouth4_TA_tex_txt: + addrs: [0x807EC3A0, 0x807EC4A0] + npc/tex/cat_15_mouth5_TA_tex_txt: + addrs: [0x807EC4A0, 0x807EC5A0] + npc/tex/cat_15_mouth6_TA_tex_txt: + addrs: [0x807EC5A0, 0x807EC6A0] + npc/tex/cat_15_tmem_txt: + addrs: [0x807EC6A0, 0x807ECAA0] + npc/tex/cat_3_pal: + addrs: [0x807ECAA0, 0x807ECAC0] + type: pal16 + npc/tex/cat_3_eye1_TA_tex_txt: + addrs: [0x807ECAC0, 0x807ECBC0] + npc/tex/cat_3_eye2_TA_tex_txt: + addrs: [0x807ECBC0, 0x807ECCC0] + npc/tex/cat_3_eye3_TA_tex_txt: + addrs: [0x807ECCC0, 0x807ECDC0] + npc/tex/cat_3_eye4_TA_tex_txt: + addrs: [0x807ECDC0, 0x807ECEC0] + npc/tex/cat_3_eye5_TA_tex_txt: + addrs: [0x807ECEC0, 0x807ECFC0] + npc/tex/cat_3_eye6_TA_tex_txt: + addrs: [0x807ECFC0, 0x807ED0C0] + npc/tex/cat_3_eye7_TA_tex_txt: + addrs: [0x807ED0C0, 0x807ED1C0] + npc/tex/cat_3_eye8_TA_tex_txt: + addrs: [0x807ED1C0, 0x807ED2C0] + npc/tex/cat_3_mouth1_TA_tex_txt: + addrs: [0x807ED2C0, 0x807ED3C0] + npc/tex/cat_3_mouth2_TA_tex_txt: + addrs: [0x807ED3C0, 0x807ED4C0] + npc/tex/cat_3_mouth3_TA_tex_txt: + addrs: [0x807ED4C0, 0x807ED5C0] + npc/tex/cat_3_mouth4_TA_tex_txt: + addrs: [0x807ED5C0, 0x807ED6C0] + npc/tex/cat_3_mouth5_TA_tex_txt: + addrs: [0x807ED6C0, 0x807ED7C0] + npc/tex/cat_3_mouth6_TA_tex_txt: + addrs: [0x807ED7C0, 0x807ED8C0] + npc/tex/cat_3_tmem_txt: + addrs: [0x807ED8C0, 0x807EDCC0] + npc/tex/cat_4_pal: + addrs: [0x807EDCC0, 0x807EDCE0] + type: pal16 + npc/tex/cat_4_eye1_TA_tex_txt: + addrs: [0x807EDCE0, 0x807EDDE0] + npc/tex/cat_4_eye2_TA_tex_txt: + addrs: [0x807EDDE0, 0x807EDEE0] + npc/tex/cat_4_eye3_TA_tex_txt: + addrs: [0x807EDEE0, 0x807EDFE0] + npc/tex/cat_4_eye4_TA_tex_txt: + addrs: [0x807EDFE0, 0x807EE0E0] + npc/tex/cat_4_eye5_TA_tex_txt: + addrs: [0x807EE0E0, 0x807EE1E0] + npc/tex/cat_4_eye6_TA_tex_txt: + addrs: [0x807EE1E0, 0x807EE2E0] + npc/tex/cat_4_eye7_TA_tex_txt: + addrs: [0x807EE2E0, 0x807EE3E0] + npc/tex/cat_4_eye8_TA_tex_txt: + addrs: [0x807EE3E0, 0x807EE4E0] + npc/tex/cat_4_mouth1_TA_tex_txt: + addrs: [0x807EE4E0, 0x807EE5E0] + npc/tex/cat_4_mouth2_TA_tex_txt: + addrs: [0x807EE5E0, 0x807EE6E0] + npc/tex/cat_4_mouth3_TA_tex_txt: + addrs: [0x807EE6E0, 0x807EE7E0] + npc/tex/cat_4_mouth4_TA_tex_txt: + addrs: [0x807EE7E0, 0x807EE8E0] + npc/tex/cat_4_mouth5_TA_tex_txt: + addrs: [0x807EE8E0, 0x807EE9E0] + npc/tex/cat_4_mouth6_TA_tex_txt: + addrs: [0x807EE9E0, 0x807EEAE0] + npc/tex/cat_4_tmem_txt: + addrs: [0x807EEAE0, 0x807EEEE0] + npc/tex/cat_5_pal: + addrs: [0x807EEEE0, 0x807EEF00] + type: pal16 + npc/tex/cat_5_eye1_TA_tex_txt: + addrs: [0x807EEF00, 0x807EF000] + npc/tex/cat_5_eye2_TA_tex_txt: + addrs: [0x807EF000, 0x807EF100] + npc/tex/cat_5_eye3_TA_tex_txt: + addrs: [0x807EF100, 0x807EF200] + npc/tex/cat_5_eye4_TA_tex_txt: + addrs: [0x807EF200, 0x807EF300] + npc/tex/cat_5_eye5_TA_tex_txt: + addrs: [0x807EF300, 0x807EF400] + npc/tex/cat_5_eye6_TA_tex_txt: + addrs: [0x807EF400, 0x807EF500] + npc/tex/cat_5_eye7_TA_tex_txt: + addrs: [0x807EF500, 0x807EF600] + npc/tex/cat_5_eye8_TA_tex_txt: + addrs: [0x807EF600, 0x807EF700] + npc/tex/cat_5_mouth1_TA_tex_txt: + addrs: [0x807EF700, 0x807EF800] + npc/tex/cat_5_mouth2_TA_tex_txt: + addrs: [0x807EF800, 0x807EF900] + npc/tex/cat_5_mouth3_TA_tex_txt: + addrs: [0x807EF900, 0x807EFA00] + npc/tex/cat_5_mouth4_TA_tex_txt: + addrs: [0x807EFA00, 0x807EFB00] + npc/tex/cat_5_mouth5_TA_tex_txt: + addrs: [0x807EFB00, 0x807EFC00] + npc/tex/cat_5_mouth6_TA_tex_txt: + addrs: [0x807EFC00, 0x807EFD00] + npc/tex/cat_5_tmem_txt: + addrs: [0x807EFD00, 0x807F0100] + npc/tex/cat_6_pal: + addrs: [0x807F0100, 0x807F0120] + type: pal16 + npc/tex/cat_6_eye1_TA_tex_txt: + addrs: [0x807F0120, 0x807F0220] + npc/tex/cat_6_eye2_TA_tex_txt: + addrs: [0x807F0220, 0x807F0320] + npc/tex/cat_6_eye3_TA_tex_txt: + addrs: [0x807F0320, 0x807F0420] + npc/tex/cat_6_eye4_TA_tex_txt: + addrs: [0x807F0420, 0x807F0520] + npc/tex/cat_6_eye5_TA_tex_txt: + addrs: [0x807F0520, 0x807F0620] + npc/tex/cat_6_eye6_TA_tex_txt: + addrs: [0x807F0620, 0x807F0720] + npc/tex/cat_6_eye7_TA_tex_txt: + addrs: [0x807F0720, 0x807F0820] + npc/tex/cat_6_eye8_TA_tex_txt: + addrs: [0x807F0820, 0x807F0920] + npc/tex/cat_6_mouth1_TA_tex_txt: + addrs: [0x807F0920, 0x807F0A20] + npc/tex/cat_6_mouth2_TA_tex_txt: + addrs: [0x807F0A20, 0x807F0B20] + npc/tex/cat_6_mouth3_TA_tex_txt: + addrs: [0x807F0B20, 0x807F0C20] + npc/tex/cat_6_mouth4_TA_tex_txt: + addrs: [0x807F0C20, 0x807F0D20] + npc/tex/cat_6_mouth5_TA_tex_txt: + addrs: [0x807F0D20, 0x807F0E20] + npc/tex/cat_6_mouth6_TA_tex_txt: + addrs: [0x807F0E20, 0x807F0F20] + npc/tex/cat_6_tmem_txt: + addrs: [0x807F0F20, 0x807F1320] + npc/tex/cat_7_pal: + addrs: [0x807F1320, 0x807F1340] + type: pal16 + npc/tex/cat_7_eye1_TA_tex_txt: + addrs: [0x807F1340, 0x807F1440] + npc/tex/cat_7_eye2_TA_tex_txt: + addrs: [0x807F1440, 0x807F1540] + npc/tex/cat_7_eye3_TA_tex_txt: + addrs: [0x807F1540, 0x807F1640] + npc/tex/cat_7_eye4_TA_tex_txt: + addrs: [0x807F1640, 0x807F1740] + npc/tex/cat_7_eye5_TA_tex_txt: + addrs: [0x807F1740, 0x807F1840] + npc/tex/cat_7_eye6_TA_tex_txt: + addrs: [0x807F1840, 0x807F1940] + npc/tex/cat_7_eye7_TA_tex_txt: + addrs: [0x807F1940, 0x807F1A40] + npc/tex/cat_7_eye8_TA_tex_txt: + addrs: [0x807F1A40, 0x807F1B40] + npc/tex/cat_7_mouth1_TA_tex_txt: + addrs: [0x807F1B40, 0x807F1C40] + npc/tex/cat_7_mouth2_TA_tex_txt: + addrs: [0x807F1C40, 0x807F1D40] + npc/tex/cat_7_mouth3_TA_tex_txt: + addrs: [0x807F1D40, 0x807F1E40] + npc/tex/cat_7_mouth4_TA_tex_txt: + addrs: [0x807F1E40, 0x807F1F40] + npc/tex/cat_7_mouth5_TA_tex_txt: + addrs: [0x807F1F40, 0x807F2040] + npc/tex/cat_7_mouth6_TA_tex_txt: + addrs: [0x807F2040, 0x807F2140] + npc/tex/cat_7_tmem_txt: + addrs: [0x807F2140, 0x807F2540] + npc/tex/cat_8_pal: + addrs: [0x807F2540, 0x807F2560] + type: pal16 + npc/tex/cat_8_eye1_TA_tex_txt: + addrs: [0x807F2560, 0x807F2660] + npc/tex/cat_8_eye2_TA_tex_txt: + addrs: [0x807F2660, 0x807F2760] + npc/tex/cat_8_eye3_TA_tex_txt: + addrs: [0x807F2760, 0x807F2860] + npc/tex/cat_8_eye4_TA_tex_txt: + addrs: [0x807F2860, 0x807F2960] + npc/tex/cat_8_eye5_TA_tex_txt: + addrs: [0x807F2960, 0x807F2A60] + npc/tex/cat_8_eye6_TA_tex_txt: + addrs: [0x807F2A60, 0x807F2B60] + npc/tex/cat_8_eye7_TA_tex_txt: + addrs: [0x807F2B60, 0x807F2C60] + npc/tex/cat_8_eye8_TA_tex_txt: + addrs: [0x807F2C60, 0x807F2D60] + npc/tex/cat_8_mouth1_TA_tex_txt: + addrs: [0x807F2D60, 0x807F2E60] + npc/tex/cat_8_mouth2_TA_tex_txt: + addrs: [0x807F2E60, 0x807F2F60] + npc/tex/cat_8_mouth3_TA_tex_txt: + addrs: [0x807F2F60, 0x807F3060] + npc/tex/cat_8_mouth4_TA_tex_txt: + addrs: [0x807F3060, 0x807F3160] + npc/tex/cat_8_mouth5_TA_tex_txt: + addrs: [0x807F3160, 0x807F3260] + npc/tex/cat_8_mouth6_TA_tex_txt: + addrs: [0x807F3260, 0x807F3360] + npc/tex/cat_8_tmem_txt: + addrs: [0x807F3360, 0x807F3760] + npc/tex/cat_9_pal: + addrs: [0x807F3760, 0x807F3780] + type: pal16 + npc/tex/cat_9_eye1_TA_tex_txt: + addrs: [0x807F3780, 0x807F3880] + npc/tex/cat_9_eye2_TA_tex_txt: + addrs: [0x807F3880, 0x807F3980] + npc/tex/cat_9_eye3_TA_tex_txt: + addrs: [0x807F3980, 0x807F3A80] + npc/tex/cat_9_eye4_TA_tex_txt: + addrs: [0x807F3A80, 0x807F3B80] + npc/tex/cat_9_eye5_TA_tex_txt: + addrs: [0x807F3B80, 0x807F3C80] + npc/tex/cat_9_eye6_TA_tex_txt: + addrs: [0x807F3C80, 0x807F3D80] + npc/tex/cat_9_eye7_TA_tex_txt: + addrs: [0x807F3D80, 0x807F3E80] + npc/tex/cat_9_eye8_TA_tex_txt: + addrs: [0x807F3E80, 0x807F3F80] + npc/tex/cat_9_mouth1_TA_tex_txt: + addrs: [0x807F3F80, 0x807F4080] + npc/tex/cat_9_mouth2_TA_tex_txt: + addrs: [0x807F4080, 0x807F4180] + npc/tex/cat_9_mouth3_TA_tex_txt: + addrs: [0x807F4180, 0x807F4280] + npc/tex/cat_9_mouth4_TA_tex_txt: + addrs: [0x807F4280, 0x807F4380] + npc/tex/cat_9_mouth5_TA_tex_txt: + addrs: [0x807F4380, 0x807F4480] + npc/tex/cat_9_mouth6_TA_tex_txt: + addrs: [0x807F4480, 0x807F4580] + npc/tex/cat_9_tmem_txt: + addrs: [0x807F4580, 0x807F4980] + npc/tex/cat_10_pal: + addrs: [0x807F4980, 0x807F49A0] + type: pal16 + npc/tex/cat_10_eye1_TA_tex_txt: + addrs: [0x807F49A0, 0x807F4AA0] + npc/tex/cat_10_eye2_TA_tex_txt: + addrs: [0x807F4AA0, 0x807F4BA0] + npc/tex/cat_10_eye3_TA_tex_txt: + addrs: [0x807F4BA0, 0x807F4CA0] + npc/tex/cat_10_eye4_TA_tex_txt: + addrs: [0x807F4CA0, 0x807F4DA0] + npc/tex/cat_10_eye5_TA_tex_txt: + addrs: [0x807F4DA0, 0x807F4EA0] + npc/tex/cat_10_eye6_TA_tex_txt: + addrs: [0x807F4EA0, 0x807F4FA0] + npc/tex/cat_10_eye7_TA_tex_txt: + addrs: [0x807F4FA0, 0x807F50A0] + npc/tex/cat_10_eye8_TA_tex_txt: + addrs: [0x807F50A0, 0x807F51A0] + npc/tex/cat_10_mouth1_TA_tex_txt: + addrs: [0x807F51A0, 0x807F52A0] + npc/tex/cat_10_mouth2_TA_tex_txt: + addrs: [0x807F52A0, 0x807F53A0] + npc/tex/cat_10_mouth3_TA_tex_txt: + addrs: [0x807F53A0, 0x807F54A0] + npc/tex/cat_10_mouth4_TA_tex_txt: + addrs: [0x807F54A0, 0x807F55A0] + npc/tex/cat_10_mouth5_TA_tex_txt: + addrs: [0x807F55A0, 0x807F56A0] + npc/tex/cat_10_mouth6_TA_tex_txt: + addrs: [0x807F56A0, 0x807F57A0] + npc/tex/cat_10_tmem_txt: + addrs: [0x807F57A0, 0x807F5BA0] + npc/mdl/chn_1_v: + addrs: [0x807F5BA0, 0x807F77C0] + type: vtx + npc/tex/chn_1_pal: + addrs: [0x807F8360, 0x807F8380] + type: pal16 + npc/tex/chn_1_eye1_TA_tex_txt: + addrs: [0x807F8380, 0x807F8480] + npc/tex/chn_1_eye2_TA_tex_txt: + addrs: [0x807F8480, 0x807F8580] + npc/tex/chn_1_eye3_TA_tex_txt: + addrs: [0x807F8580, 0x807F8680] + npc/tex/chn_1_eye4_TA_tex_txt: + addrs: [0x807F8680, 0x807F8780] + npc/tex/chn_1_eye5_TA_tex_txt: + addrs: [0x807F8780, 0x807F8880] + npc/tex/chn_1_eye6_TA_tex_txt: + addrs: [0x807F8880, 0x807F8980] + npc/tex/chn_1_eye7_TA_tex_txt: + addrs: [0x807F8980, 0x807F8A80] + npc/tex/chn_1_eye8_TA_tex_txt: + addrs: [0x807F8A80, 0x807F8B80] + npc/tex/chn_1_tmem_txt: + addrs: [0x807F8B80, 0x807F9040] + npc/tex/chn_2_pal: + addrs: [0x807F9040, 0x807F9060] + type: pal16 + npc/tex/chn_2_eye1_TA_tex_txt: + addrs: [0x807F9060, 0x807F9160] + npc/tex/chn_2_eye2_TA_tex_txt: + addrs: [0x807F9160, 0x807F9260] + npc/tex/chn_2_eye3_TA_tex_txt: + addrs: [0x807F9260, 0x807F9360] + npc/tex/chn_2_eye4_TA_tex_txt: + addrs: [0x807F9360, 0x807F9460] + npc/tex/chn_2_eye5_TA_tex_txt: + addrs: [0x807F9460, 0x807F9560] + npc/tex/chn_2_eye6_TA_tex_txt: + addrs: [0x807F9560, 0x807F9660] + npc/tex/chn_2_eye7_TA_tex_txt: + addrs: [0x807F9660, 0x807F9760] + npc/tex/chn_2_eye8_TA_tex_txt: + addrs: [0x807F9760, 0x807F9860] + npc/tex/chn_2_tmem_txt: + addrs: [0x807F9860, 0x807F9D20] + npc/tex/chn_3_pal: + addrs: [0x807F9D20, 0x807F9D40] + type: pal16 + npc/tex/chn_3_eye1_TA_tex_txt: + addrs: [0x807F9D40, 0x807F9E40] + npc/tex/chn_3_eye2_TA_tex_txt: + addrs: [0x807F9E40, 0x807F9F40] + npc/tex/chn_3_eye3_TA_tex_txt: + addrs: [0x807F9F40, 0x807FA040] + npc/tex/chn_3_eye4_TA_tex_txt: + addrs: [0x807FA040, 0x807FA140] + npc/tex/chn_3_eye5_TA_tex_txt: + addrs: [0x807FA140, 0x807FA240] + npc/tex/chn_3_eye6_TA_tex_txt: + addrs: [0x807FA240, 0x807FA340] + npc/tex/chn_3_eye7_TA_tex_txt: + addrs: [0x807FA340, 0x807FA440] + npc/tex/chn_3_eye8_TA_tex_txt: + addrs: [0x807FA440, 0x807FA540] + npc/tex/chn_3_tmem_txt: + addrs: [0x807FA540, 0x807FAA00] + npc/tex/chn_4_pal: + addrs: [0x807FAA00, 0x807FAA20] + type: pal16 + npc/tex/chn_4_eye1_TA_tex_txt: + addrs: [0x807FAA20, 0x807FAB20] + npc/tex/chn_4_eye2_TA_tex_txt: + addrs: [0x807FAB20, 0x807FAC20] + npc/tex/chn_4_eye3_TA_tex_txt: + addrs: [0x807FAC20, 0x807FAD20] + npc/tex/chn_4_eye4_TA_tex_txt: + addrs: [0x807FAD20, 0x807FAE20] + npc/tex/chn_4_eye5_TA_tex_txt: + addrs: [0x807FAE20, 0x807FAF20] + npc/tex/chn_4_eye6_TA_tex_txt: + addrs: [0x807FAF20, 0x807FB020] + npc/tex/chn_4_eye7_TA_tex_txt: + addrs: [0x807FB020, 0x807FB120] + npc/tex/chn_4_eye8_TA_tex_txt: + addrs: [0x807FB120, 0x807FB220] + npc/tex/chn_4_tmem_txt: + addrs: [0x807FB220, 0x807FB6E0] + npc/tex/chn_5_pal: + addrs: [0x807FB6E0, 0x807FB700] + type: pal16 + npc/tex/chn_5_eye1_TA_tex_txt: + addrs: [0x807FB700, 0x807FB800] + npc/tex/chn_5_eye2_TA_tex_txt: + addrs: [0x807FB800, 0x807FB900] + npc/tex/chn_5_eye3_TA_tex_txt: + addrs: [0x807FB900, 0x807FBA00] + npc/tex/chn_5_eye4_TA_tex_txt: + addrs: [0x807FBA00, 0x807FBB00] + npc/tex/chn_5_eye5_TA_tex_txt: + addrs: [0x807FBB00, 0x807FBC00] + npc/tex/chn_5_eye6_TA_tex_txt: + addrs: [0x807FBC00, 0x807FBD00] + npc/tex/chn_5_eye7_TA_tex_txt: + addrs: [0x807FBD00, 0x807FBE00] + npc/tex/chn_5_eye8_TA_tex_txt: + addrs: [0x807FBE00, 0x807FBF00] + npc/tex/chn_5_tmem_txt: + addrs: [0x807FBF00, 0x807FC3C0] + npc/tex/chn_6_pal: + addrs: [0x807FC3C0, 0x807FC3E0] + type: pal16 + npc/tex/chn_6_eye1_TA_tex_txt: + addrs: [0x807FC3E0, 0x807FC4E0] + npc/tex/chn_6_eye2_TA_tex_txt: + addrs: [0x807FC4E0, 0x807FC5E0] + npc/tex/chn_6_eye3_TA_tex_txt: + addrs: [0x807FC5E0, 0x807FC6E0] + npc/tex/chn_6_eye4_TA_tex_txt: + addrs: [0x807FC6E0, 0x807FC7E0] + npc/tex/chn_6_eye5_TA_tex_txt: + addrs: [0x807FC7E0, 0x807FC8E0] + npc/tex/chn_6_eye6_TA_tex_txt: + addrs: [0x807FC8E0, 0x807FC9E0] + npc/tex/chn_6_eye7_TA_tex_txt: + addrs: [0x807FC9E0, 0x807FCAE0] + npc/tex/chn_6_eye8_TA_tex_txt: + addrs: [0x807FCAE0, 0x807FCBE0] + npc/tex/chn_6_tmem_txt: + addrs: [0x807FCBE0, 0x807FD0A0] + npc/tex/chn_7_pal: + addrs: [0x807FD0A0, 0x807FD0C0] + type: pal16 + npc/tex/chn_7_eye1_TA_tex_txt: + addrs: [0x807FD0C0, 0x807FD1C0] + npc/tex/chn_7_eye2_TA_tex_txt: + addrs: [0x807FD1C0, 0x807FD2C0] + npc/tex/chn_7_eye3_TA_tex_txt: + addrs: [0x807FD2C0, 0x807FD3C0] + npc/tex/chn_7_eye4_TA_tex_txt: + addrs: [0x807FD3C0, 0x807FD4C0] + npc/tex/chn_7_eye5_TA_tex_txt: + addrs: [0x807FD4C0, 0x807FD5C0] + npc/tex/chn_7_eye6_TA_tex_txt: + addrs: [0x807FD5C0, 0x807FD6C0] + npc/tex/chn_7_eye7_TA_tex_txt: + addrs: [0x807FD6C0, 0x807FD7C0] + npc/tex/chn_7_eye8_TA_tex_txt: + addrs: [0x807FD7C0, 0x807FD8C0] + npc/tex/chn_7_tmem_txt: + addrs: [0x807FD8C0, 0x807FDD80] + npc/tex/chn_8_pal: + addrs: [0x807FDD80, 0x807FDDA0] + type: pal16 + npc/tex/chn_8_eye1_TA_tex_txt: + addrs: [0x807FDDA0, 0x807FDEA0] + npc/tex/chn_8_eye2_TA_tex_txt: + addrs: [0x807FDEA0, 0x807FDFA0] + npc/tex/chn_8_eye3_TA_tex_txt: + addrs: [0x807FDFA0, 0x807FE0A0] + npc/tex/chn_8_eye4_TA_tex_txt: + addrs: [0x807FE0A0, 0x807FE1A0] + npc/tex/chn_8_eye5_TA_tex_txt: + addrs: [0x807FE1A0, 0x807FE2A0] + npc/tex/chn_8_eye6_TA_tex_txt: + addrs: [0x807FE2A0, 0x807FE3A0] + npc/tex/chn_8_eye7_TA_tex_txt: + addrs: [0x807FE3A0, 0x807FE4A0] + npc/tex/chn_8_eye8_TA_tex_txt: + addrs: [0x807FE4A0, 0x807FE5A0] + npc/tex/chn_8_tmem_txt: + addrs: [0x807FE5A0, 0x807FEA60] + npc/tex/chn_9_pal: + addrs: [0x807FEA60, 0x807FEA80] + type: pal16 + npc/tex/chn_9_eye1_TA_tex_txt: + addrs: [0x807FEA80, 0x807FEB80] + npc/tex/chn_9_eye2_TA_tex_txt: + addrs: [0x807FEB80, 0x807FEC80] + npc/tex/chn_9_eye3_TA_tex_txt: + addrs: [0x807FEC80, 0x807FED80] + npc/tex/chn_9_eye4_TA_tex_txt: + addrs: [0x807FED80, 0x807FEE80] + npc/tex/chn_9_eye5_TA_tex_txt: + addrs: [0x807FEE80, 0x807FEF80] + npc/tex/chn_9_eye6_TA_tex_txt: + addrs: [0x807FEF80, 0x807FF080] + npc/tex/chn_9_eye7_TA_tex_txt: + addrs: [0x807FF080, 0x807FF180] + npc/tex/chn_9_eye8_TA_tex_txt: + addrs: [0x807FF180, 0x807FF280] + npc/tex/chn_9_tmem_txt: + addrs: [0x807FF280, 0x807FF740] + npc/mdl/cbr_1_v: + addrs: [0x807FF740, 0x80800CE0] + type: vtx + npc/tex/cbr_1_pal: + addrs: [0x80801620, 0x80801640] + type: pal16 + npc/tex/cbr_1_eye1_TA_tex_txt: + addrs: [0x80801640, 0x80801740] + npc/tex/cbr_1_eye2_TA_tex_txt: + addrs: [0x80801740, 0x80801840] + npc/tex/cbr_1_eye3_TA_tex_txt: + addrs: [0x80801840, 0x80801940] + npc/tex/cbr_1_eye4_TA_tex_txt: + addrs: [0x80801940, 0x80801A40] + npc/tex/cbr_1_eye5_TA_tex_txt: + addrs: [0x80801A40, 0x80801B40] + npc/tex/cbr_1_eye6_TA_tex_txt: + addrs: [0x80801B40, 0x80801C40] + npc/tex/cbr_1_eye7_TA_tex_txt: + addrs: [0x80801C40, 0x80801D40] + npc/tex/cbr_1_eye8_TA_tex_txt: + addrs: [0x80801D40, 0x80801E40] + npc/tex/cbr_1_mouth1_TA_tex_txt: + addrs: [0x80801E40, 0x80801F40] + npc/tex/cbr_1_mouth2_TA_tex_txt: + addrs: [0x80801F40, 0x80802040] + npc/tex/cbr_1_mouth3_TA_tex_txt: + addrs: [0x80802040, 0x80802140] + npc/tex/cbr_1_mouth4_TA_tex_txt: + addrs: [0x80802140, 0x80802240] + npc/tex/cbr_1_mouth5_TA_tex_txt: + addrs: [0x80802240, 0x80802340] + npc/tex/cbr_1_mouth6_TA_tex_txt: + addrs: [0x80802340, 0x80802440] + npc/tex/cbr_1_tmem_txt: + addrs: [0x80802440, 0x80802840] + npc/tex/cbr_2_pal: + addrs: [0x80802840, 0x80802860] + type: pal16 + npc/tex/cbr_2_eye1_TA_tex_txt: + addrs: [0x80802860, 0x80802960] + npc/tex/cbr_2_eye2_TA_tex_txt: + addrs: [0x80802960, 0x80802A60] + npc/tex/cbr_2_eye3_TA_tex_txt: + addrs: [0x80802A60, 0x80802B60] + npc/tex/cbr_2_eye4_TA_tex_txt: + addrs: [0x80802B60, 0x80802C60] + npc/tex/cbr_2_eye5_TA_tex_txt: + addrs: [0x80802C60, 0x80802D60] + npc/tex/cbr_2_eye6_TA_tex_txt: + addrs: [0x80802D60, 0x80802E60] + npc/tex/cbr_2_eye7_TA_tex_txt: + addrs: [0x80802E60, 0x80802F60] + npc/tex/cbr_2_eye8_TA_tex_txt: + addrs: [0x80802F60, 0x80803060] + npc/tex/cbr_2_mouth1_TA_tex_txt: + addrs: [0x80803060, 0x80803160] + npc/tex/cbr_2_mouth2_TA_tex_txt: + addrs: [0x80803160, 0x80803260] + npc/tex/cbr_2_mouth3_TA_tex_txt: + addrs: [0x80803260, 0x80803360] + npc/tex/cbr_2_mouth4_TA_tex_txt: + addrs: [0x80803360, 0x80803460] + npc/tex/cbr_2_mouth5_TA_tex_txt: + addrs: [0x80803460, 0x80803560] + npc/tex/cbr_2_mouth6_TA_tex_txt: + addrs: [0x80803560, 0x80803660] + npc/tex/cbr_2_tmem_txt: + addrs: [0x80803660, 0x80803A60] + npc/tex/cbr_11_pal: + addrs: [0x80803A60, 0x80803A80] + type: pal16 + npc/tex/cbr_11_eye1_TA_tex_txt: + addrs: [0x80803A80, 0x80803B80] + npc/tex/cbr_11_eye2_TA_tex_txt: + addrs: [0x80803B80, 0x80803C80] + npc/tex/cbr_11_eye3_TA_tex_txt: + addrs: [0x80803C80, 0x80803D80] + npc/tex/cbr_11_eye4_TA_tex_txt: + addrs: [0x80803D80, 0x80803E80] + npc/tex/cbr_11_eye5_TA_tex_txt: + addrs: [0x80803E80, 0x80803F80] + npc/tex/cbr_11_eye6_TA_tex_txt: + addrs: [0x80803F80, 0x80804080] + npc/tex/cbr_11_eye7_TA_tex_txt: + addrs: [0x80804080, 0x80804180] + npc/tex/cbr_11_eye8_TA_tex_txt: + addrs: [0x80804180, 0x80804280] + npc/tex/cbr_11_mouth1_TA_tex_txt: + addrs: [0x80804280, 0x80804380] + npc/tex/cbr_11_mouth2_TA_tex_txt: + addrs: [0x80804380, 0x80804480] + npc/tex/cbr_11_mouth3_TA_tex_txt: + addrs: [0x80804480, 0x80804580] + npc/tex/cbr_11_mouth4_TA_tex_txt: + addrs: [0x80804580, 0x80804680] + npc/tex/cbr_11_mouth5_TA_tex_txt: + addrs: [0x80804680, 0x80804780] + npc/tex/cbr_11_mouth6_TA_tex_txt: + addrs: [0x80804780, 0x80804880] + npc/tex/cbr_11_tmem_txt: + addrs: [0x80804880, 0x80804C80] + npc/tex/cbr_3_pal: + addrs: [0x80804C80, 0x80804CA0] + type: pal16 + npc/tex/cbr_3_eye1_TA_tex_txt: + addrs: [0x80804CA0, 0x80804DA0] + npc/tex/cbr_3_eye2_TA_tex_txt: + addrs: [0x80804DA0, 0x80804EA0] + npc/tex/cbr_3_eye3_TA_tex_txt: + addrs: [0x80804EA0, 0x80804FA0] + npc/tex/cbr_3_eye4_TA_tex_txt: + addrs: [0x80804FA0, 0x808050A0] + npc/tex/cbr_3_eye5_TA_tex_txt: + addrs: [0x808050A0, 0x808051A0] + npc/tex/cbr_3_eye6_TA_tex_txt: + addrs: [0x808051A0, 0x808052A0] + npc/tex/cbr_3_eye7_TA_tex_txt: + addrs: [0x808052A0, 0x808053A0] + npc/tex/cbr_3_eye8_TA_tex_txt: + addrs: [0x808053A0, 0x808054A0] + npc/tex/cbr_3_mouth1_TA_tex_txt: + addrs: [0x808054A0, 0x808055A0] + npc/tex/cbr_3_mouth2_TA_tex_txt: + addrs: [0x808055A0, 0x808056A0] + npc/tex/cbr_3_mouth3_TA_tex_txt: + addrs: [0x808056A0, 0x808057A0] + npc/tex/cbr_3_mouth4_TA_tex_txt: + addrs: [0x808057A0, 0x808058A0] + npc/tex/cbr_3_mouth5_TA_tex_txt: + addrs: [0x808058A0, 0x808059A0] + npc/tex/cbr_3_mouth6_TA_tex_txt: + addrs: [0x808059A0, 0x80805AA0] + npc/tex/cbr_3_tmem_txt: + addrs: [0x80805AA0, 0x80805EA0] + npc/tex/cbr_4_pal: + addrs: [0x80805EA0, 0x80805EC0] + type: pal16 + npc/tex/cbr_4_eye1_TA_tex_txt: + addrs: [0x80805EC0, 0x80805FC0] + npc/tex/cbr_4_eye2_TA_tex_txt: + addrs: [0x80805FC0, 0x808060C0] + npc/tex/cbr_4_eye3_TA_tex_txt: + addrs: [0x808060C0, 0x808061C0] + npc/tex/cbr_4_eye4_TA_tex_txt: + addrs: [0x808061C0, 0x808062C0] + npc/tex/cbr_4_eye5_TA_tex_txt: + addrs: [0x808062C0, 0x808063C0] + npc/tex/cbr_4_eye6_TA_tex_txt: + addrs: [0x808063C0, 0x808064C0] + npc/tex/cbr_4_eye7_TA_tex_txt: + addrs: [0x808064C0, 0x808065C0] + npc/tex/cbr_4_eye8_TA_tex_txt: + addrs: [0x808065C0, 0x808066C0] + npc/tex/cbr_4_mouth1_TA_tex_txt: + addrs: [0x808066C0, 0x808067C0] + npc/tex/cbr_4_mouth2_TA_tex_txt: + addrs: [0x808067C0, 0x808068C0] + npc/tex/cbr_4_mouth3_TA_tex_txt: + addrs: [0x808068C0, 0x808069C0] + npc/tex/cbr_4_mouth4_TA_tex_txt: + addrs: [0x808069C0, 0x80806AC0] + npc/tex/cbr_4_mouth5_TA_tex_txt: + addrs: [0x80806AC0, 0x80806BC0] + npc/tex/cbr_4_mouth6_TA_tex_txt: + addrs: [0x80806BC0, 0x80806CC0] + npc/tex/cbr_4_tmem_txt: + addrs: [0x80806CC0, 0x808070C0] + npc/tex/cbr_5_pal: + addrs: [0x808070C0, 0x808070E0] + type: pal16 + npc/tex/cbr_5_eye1_TA_tex_txt: + addrs: [0x808070E0, 0x808071E0] + npc/tex/cbr_5_eye2_TA_tex_txt: + addrs: [0x808071E0, 0x808072E0] + npc/tex/cbr_5_eye3_TA_tex_txt: + addrs: [0x808072E0, 0x808073E0] + npc/tex/cbr_5_eye4_TA_tex_txt: + addrs: [0x808073E0, 0x808074E0] + npc/tex/cbr_5_eye5_TA_tex_txt: + addrs: [0x808074E0, 0x808075E0] + npc/tex/cbr_5_eye6_TA_tex_txt: + addrs: [0x808075E0, 0x808076E0] + npc/tex/cbr_5_eye7_TA_tex_txt: + addrs: [0x808076E0, 0x808077E0] + npc/tex/cbr_5_eye8_TA_tex_txt: + addrs: [0x808077E0, 0x808078E0] + npc/tex/cbr_5_mouth1_TA_tex_txt: + addrs: [0x808078E0, 0x808079E0] + npc/tex/cbr_5_mouth2_TA_tex_txt: + addrs: [0x808079E0, 0x80807AE0] + npc/tex/cbr_5_mouth3_TA_tex_txt: + addrs: [0x80807AE0, 0x80807BE0] + npc/tex/cbr_5_mouth4_TA_tex_txt: + addrs: [0x80807BE0, 0x80807CE0] + npc/tex/cbr_5_mouth5_TA_tex_txt: + addrs: [0x80807CE0, 0x80807DE0] + npc/tex/cbr_5_mouth6_TA_tex_txt: + addrs: [0x80807DE0, 0x80807EE0] + npc/tex/cbr_5_tmem_txt: + addrs: [0x80807EE0, 0x808082E0] + npc/tex/cbr_6_pal: + addrs: [0x808082E0, 0x80808300] + type: pal16 + npc/tex/cbr_6_eye1_TA_tex_txt: + addrs: [0x80808300, 0x80808400] + npc/tex/cbr_6_eye2_TA_tex_txt: + addrs: [0x80808400, 0x80808500] + npc/tex/cbr_6_eye3_TA_tex_txt: + addrs: [0x80808500, 0x80808600] + npc/tex/cbr_6_eye4_TA_tex_txt: + addrs: [0x80808600, 0x80808700] + npc/tex/cbr_6_eye5_TA_tex_txt: + addrs: [0x80808700, 0x80808800] + npc/tex/cbr_6_eye6_TA_tex_txt: + addrs: [0x80808800, 0x80808900] + npc/tex/cbr_6_eye7_TA_tex_txt: + addrs: [0x80808900, 0x80808A00] + npc/tex/cbr_6_eye8_TA_tex_txt: + addrs: [0x80808A00, 0x80808B00] + npc/tex/cbr_6_mouth1_TA_tex_txt: + addrs: [0x80808B00, 0x80808C00] + npc/tex/cbr_6_mouth2_TA_tex_txt: + addrs: [0x80808C00, 0x80808D00] + npc/tex/cbr_6_mouth3_TA_tex_txt: + addrs: [0x80808D00, 0x80808E00] + npc/tex/cbr_6_mouth4_TA_tex_txt: + addrs: [0x80808E00, 0x80808F00] + npc/tex/cbr_6_mouth5_TA_tex_txt: + addrs: [0x80808F00, 0x80809000] + npc/tex/cbr_6_mouth6_TA_tex_txt: + addrs: [0x80809000, 0x80809100] + npc/tex/cbr_6_tmem_txt: + addrs: [0x80809100, 0x80809500] + npc/tex/cbr_7_pal: + addrs: [0x80809500, 0x80809520] + type: pal16 + npc/tex/cbr_7_eye1_TA_tex_txt: + addrs: [0x80809520, 0x80809620] + npc/tex/cbr_7_eye2_TA_tex_txt: + addrs: [0x80809620, 0x80809720] + npc/tex/cbr_7_eye3_TA_tex_txt: + addrs: [0x80809720, 0x80809820] + npc/tex/cbr_7_eye4_TA_tex_txt: + addrs: [0x80809820, 0x80809920] + npc/tex/cbr_7_eye5_TA_tex_txt: + addrs: [0x80809920, 0x80809A20] + npc/tex/cbr_7_eye6_TA_tex_txt: + addrs: [0x80809A20, 0x80809B20] + npc/tex/cbr_7_eye7_TA_tex_txt: + addrs: [0x80809B20, 0x80809C20] + npc/tex/cbr_7_eye8_TA_tex_txt: + addrs: [0x80809C20, 0x80809D20] + npc/tex/cbr_7_mouth1_TA_tex_txt: + addrs: [0x80809D20, 0x80809E20] + npc/tex/cbr_7_mouth2_TA_tex_txt: + addrs: [0x80809E20, 0x80809F20] + npc/tex/cbr_7_mouth3_TA_tex_txt: + addrs: [0x80809F20, 0x8080A020] + npc/tex/cbr_7_mouth4_TA_tex_txt: + addrs: [0x8080A020, 0x8080A120] + npc/tex/cbr_7_mouth5_TA_tex_txt: + addrs: [0x8080A120, 0x8080A220] + npc/tex/cbr_7_mouth6_TA_tex_txt: + addrs: [0x8080A220, 0x8080A320] + npc/tex/cbr_7_tmem_txt: + addrs: [0x8080A320, 0x8080A720] + npc/tex/cbr_8_pal: + addrs: [0x8080A720, 0x8080A740] + type: pal16 + npc/tex/cbr_8_eye1_TA_tex_txt: + addrs: [0x8080A740, 0x8080A840] + npc/tex/cbr_8_eye2_TA_tex_txt: + addrs: [0x8080A840, 0x8080A940] + npc/tex/cbr_8_eye3_TA_tex_txt: + addrs: [0x8080A940, 0x8080AA40] + npc/tex/cbr_8_eye4_TA_tex_txt: + addrs: [0x8080AA40, 0x8080AB40] + npc/tex/cbr_8_eye5_TA_tex_txt: + addrs: [0x8080AB40, 0x8080AC40] + npc/tex/cbr_8_eye6_TA_tex_txt: + addrs: [0x8080AC40, 0x8080AD40] + npc/tex/cbr_8_eye7_TA_tex_txt: + addrs: [0x8080AD40, 0x8080AE40] + npc/tex/cbr_8_eye8_TA_tex_txt: + addrs: [0x8080AE40, 0x8080AF40] + npc/tex/cbr_8_mouth1_TA_tex_txt: + addrs: [0x8080AF40, 0x8080B040] + npc/tex/cbr_8_mouth2_TA_tex_txt: + addrs: [0x8080B040, 0x8080B140] + npc/tex/cbr_8_mouth3_TA_tex_txt: + addrs: [0x8080B140, 0x8080B240] + npc/tex/cbr_8_mouth4_TA_tex_txt: + addrs: [0x8080B240, 0x8080B340] + npc/tex/cbr_8_mouth5_TA_tex_txt: + addrs: [0x8080B340, 0x8080B440] + npc/tex/cbr_8_mouth6_TA_tex_txt: + addrs: [0x8080B440, 0x8080B540] + npc/tex/cbr_8_tmem_txt: + addrs: [0x8080B540, 0x8080B940] + npc/tex/cbr_9_pal: + addrs: [0x8080B940, 0x8080B960] + type: pal16 + npc/tex/cbr_9_eye1_TA_tex_txt: + addrs: [0x8080B960, 0x8080BA60] + npc/tex/cbr_9_eye2_TA_tex_txt: + addrs: [0x8080BA60, 0x8080BB60] + npc/tex/cbr_9_eye3_TA_tex_txt: + addrs: [0x8080BB60, 0x8080BC60] + npc/tex/cbr_9_eye4_TA_tex_txt: + addrs: [0x8080BC60, 0x8080BD60] + npc/tex/cbr_9_eye5_TA_tex_txt: + addrs: [0x8080BD60, 0x8080BE60] + npc/tex/cbr_9_eye6_TA_tex_txt: + addrs: [0x8080BE60, 0x8080BF60] + npc/tex/cbr_9_eye7_TA_tex_txt: + addrs: [0x8080BF60, 0x8080C060] + npc/tex/cbr_9_eye8_TA_tex_txt: + addrs: [0x8080C060, 0x8080C160] + npc/tex/cbr_9_mouth1_TA_tex_txt: + addrs: [0x8080C160, 0x8080C260] + npc/tex/cbr_9_mouth2_TA_tex_txt: + addrs: [0x8080C260, 0x8080C360] + npc/tex/cbr_9_mouth3_TA_tex_txt: + addrs: [0x8080C360, 0x8080C460] + npc/tex/cbr_9_mouth4_TA_tex_txt: + addrs: [0x8080C460, 0x8080C560] + npc/tex/cbr_9_mouth5_TA_tex_txt: + addrs: [0x8080C560, 0x8080C660] + npc/tex/cbr_9_mouth6_TA_tex_txt: + addrs: [0x8080C660, 0x8080C760] + npc/tex/cbr_9_tmem_txt: + addrs: [0x8080C760, 0x8080CB60] + npc/tex/cbr_10_pal: + addrs: [0x8080CB60, 0x8080CB80] + type: pal16 + npc/tex/cbr_10_eye1_TA_tex_txt: + addrs: [0x8080CB80, 0x8080CC80] + npc/tex/cbr_10_eye2_TA_tex_txt: + addrs: [0x8080CC80, 0x8080CD80] + npc/tex/cbr_10_eye3_TA_tex_txt: + addrs: [0x8080CD80, 0x8080CE80] + npc/tex/cbr_10_eye4_TA_tex_txt: + addrs: [0x8080CE80, 0x8080CF80] + npc/tex/cbr_10_eye5_TA_tex_txt: + addrs: [0x8080CF80, 0x8080D080] + npc/tex/cbr_10_eye6_TA_tex_txt: + addrs: [0x8080D080, 0x8080D180] + npc/tex/cbr_10_eye7_TA_tex_txt: + addrs: [0x8080D180, 0x8080D280] + npc/tex/cbr_10_eye8_TA_tex_txt: + addrs: [0x8080D280, 0x8080D380] + npc/tex/cbr_10_mouth1_TA_tex_txt: + addrs: [0x8080D380, 0x8080D480] + npc/tex/cbr_10_mouth2_TA_tex_txt: + addrs: [0x8080D480, 0x8080D580] + npc/tex/cbr_10_mouth3_TA_tex_txt: + addrs: [0x8080D580, 0x8080D680] + npc/tex/cbr_10_mouth4_TA_tex_txt: + addrs: [0x8080D680, 0x8080D780] + npc/tex/cbr_10_mouth5_TA_tex_txt: + addrs: [0x8080D780, 0x8080D880] + npc/tex/cbr_10_mouth6_TA_tex_txt: + addrs: [0x8080D880, 0x8080D980] + npc/tex/cbr_10_tmem_txt: + addrs: [0x8080D980, 0x8080DD80] + npc/mdl/rcc_1_v: + addrs: [0x8080E628, 0x8080FBD8] + type: vtx + npc/tex/rcc_1_pal: + addrs: [0x80810620, 0x80810640] + type: pal16 + npc/tex/rcc_1_eye1_TA_tex_txt: + addrs: [0x80810640, 0x80810740] + npc/tex/rcc_1_eye2_TA_tex_txt: + addrs: [0x80810740, 0x80810840] + npc/tex/rcc_1_eye3_TA_tex_txt: + addrs: [0x80810840, 0x80810940] + npc/tex/rcc_1_eye4_TA_tex_txt: + addrs: [0x80810940, 0x80810A40] + npc/tex/rcc_1_eye5_TA_tex_txt: + addrs: [0x80810A40, 0x80810B40] + npc/tex/rcc_1_eye6_TA_tex_txt: + addrs: [0x80810B40, 0x80810C40] + npc/tex/rcc_1_eye7_TA_tex_txt: + addrs: [0x80810C40, 0x80810D40] + npc/tex/rcc_1_eye8_TA_tex_txt: + addrs: [0x80810D40, 0x80810E40] + npc/tex/rcc_1_tmem_txt: + addrs: [0x80810E40, 0x80811500] + npc/mdl/cow_1_v: + addrs: [0x80811500, 0x80812B30] + type: vtx + npc/tex/cow_1_pal: + addrs: [0x808134E0, 0x80813500] + type: pal16 + npc/tex/cow_1_eye1_TA_tex_txt: + addrs: [0x80813500, 0x80813600] + npc/tex/cow_1_eye2_TA_tex_txt: + addrs: [0x80813600, 0x80813700] + npc/tex/cow_1_eye3_TA_tex_txt: + addrs: [0x80813700, 0x80813800] + npc/tex/cow_1_eye4_TA_tex_txt: + addrs: [0x80813800, 0x80813900] + npc/tex/cow_1_eye5_TA_tex_txt: + addrs: [0x80813900, 0x80813A00] + npc/tex/cow_1_eye6_TA_tex_txt: + addrs: [0x80813A00, 0x80813B00] + npc/tex/cow_1_eye7_TA_tex_txt: + addrs: [0x80813B00, 0x80813C00] + npc/tex/cow_1_eye8_TA_tex_txt: + addrs: [0x80813C00, 0x80813D00] + npc/tex/cow_1_mouth1_TA_tex_txt: + addrs: [0x80813D00, 0x80813E00] + npc/tex/cow_1_mouth2_TA_tex_txt: + addrs: [0x80813E00, 0x80813F00] + npc/tex/cow_1_mouth3_TA_tex_txt: + addrs: [0x80813F00, 0x80814000] + npc/tex/cow_1_mouth4_TA_tex_txt: + addrs: [0x80814000, 0x80814100] + npc/tex/cow_1_mouth5_TA_tex_txt: + addrs: [0x80814100, 0x80814200] + npc/tex/cow_1_mouth6_TA_tex_txt: + addrs: [0x80814200, 0x80814300] + npc/tex/cow_1_tmem_txt: + addrs: [0x80814300, 0x80814700] + npc/tex/cow_2_pal: + addrs: [0x80814700, 0x80814720] + type: pal16 + npc/tex/cow_2_eye1_TA_tex_txt: + addrs: [0x80814720, 0x80814820] + npc/tex/cow_2_eye2_TA_tex_txt: + addrs: [0x80814820, 0x80814920] + npc/tex/cow_2_eye3_TA_tex_txt: + addrs: [0x80814920, 0x80814A20] + npc/tex/cow_2_eye4_TA_tex_txt: + addrs: [0x80814A20, 0x80814B20] + npc/tex/cow_2_eye5_TA_tex_txt: + addrs: [0x80814B20, 0x80814C20] + npc/tex/cow_2_eye6_TA_tex_txt: + addrs: [0x80814C20, 0x80814D20] + npc/tex/cow_2_eye7_TA_tex_txt: + addrs: [0x80814D20, 0x80814E20] + npc/tex/cow_2_eye8_TA_tex_txt: + addrs: [0x80814E20, 0x80814F20] + npc/tex/cow_2_mouth1_TA_tex_txt: + addrs: [0x80814F20, 0x80815020] + npc/tex/cow_2_mouth2_TA_tex_txt: + addrs: [0x80815020, 0x80815120] + npc/tex/cow_2_mouth3_TA_tex_txt: + addrs: [0x80815120, 0x80815220] + npc/tex/cow_2_mouth4_TA_tex_txt: + addrs: [0x80815220, 0x80815320] + npc/tex/cow_2_mouth5_TA_tex_txt: + addrs: [0x80815320, 0x80815420] + npc/tex/cow_2_mouth6_TA_tex_txt: + addrs: [0x80815420, 0x80815520] + npc/tex/cow_2_tmem_txt: + addrs: [0x80815520, 0x80815920] + npc/tex/cow_3_pal: + addrs: [0x80815920, 0x80815940] + type: pal16 + npc/tex/cow_3_eye1_TA_tex_txt: + addrs: [0x80815940, 0x80815A40] + npc/tex/cow_3_eye2_TA_tex_txt: + addrs: [0x80815A40, 0x80815B40] + npc/tex/cow_3_eye3_TA_tex_txt: + addrs: [0x80815B40, 0x80815C40] + npc/tex/cow_3_eye4_TA_tex_txt: + addrs: [0x80815C40, 0x80815D40] + npc/tex/cow_3_eye5_TA_tex_txt: + addrs: [0x80815D40, 0x80815E40] + npc/tex/cow_3_eye6_TA_tex_txt: + addrs: [0x80815E40, 0x80815F40] + npc/tex/cow_3_eye7_TA_tex_txt: + addrs: [0x80815F40, 0x80816040] + npc/tex/cow_3_eye8_TA_tex_txt: + addrs: [0x80816040, 0x80816140] + npc/tex/cow_3_mouth1_TA_tex_txt: + addrs: [0x80816140, 0x80816240] + npc/tex/cow_3_mouth2_TA_tex_txt: + addrs: [0x80816240, 0x80816340] + npc/tex/cow_3_mouth3_TA_tex_txt: + addrs: [0x80816340, 0x80816440] + npc/tex/cow_3_mouth4_TA_tex_txt: + addrs: [0x80816440, 0x80816540] + npc/tex/cow_3_mouth5_TA_tex_txt: + addrs: [0x80816540, 0x80816640] + npc/tex/cow_3_mouth6_TA_tex_txt: + addrs: [0x80816640, 0x80816740] + npc/tex/cow_3_tmem_txt: + addrs: [0x80816740, 0x80816B40] + npc/tex/cow_4_pal: + addrs: [0x80816B40, 0x80816B60] + type: pal16 + npc/tex/cow_4_eye1_TA_tex_txt: + addrs: [0x80816B60, 0x80816C60] + npc/tex/cow_4_eye2_TA_tex_txt: + addrs: [0x80816C60, 0x80816D60] + npc/tex/cow_4_eye3_TA_tex_txt: + addrs: [0x80816D60, 0x80816E60] + npc/tex/cow_4_eye4_TA_tex_txt: + addrs: [0x80816E60, 0x80816F60] + npc/tex/cow_4_eye5_TA_tex_txt: + addrs: [0x80816F60, 0x80817060] + npc/tex/cow_4_eye6_TA_tex_txt: + addrs: [0x80817060, 0x80817160] + npc/tex/cow_4_eye7_TA_tex_txt: + addrs: [0x80817160, 0x80817260] + npc/tex/cow_4_eye8_TA_tex_txt: + addrs: [0x80817260, 0x80817360] + npc/tex/cow_4_mouth1_TA_tex_txt: + addrs: [0x80817360, 0x80817460] + npc/tex/cow_4_mouth2_TA_tex_txt: + addrs: [0x80817460, 0x80817560] + npc/tex/cow_4_mouth3_TA_tex_txt: + addrs: [0x80817560, 0x80817660] + npc/tex/cow_4_mouth4_TA_tex_txt: + addrs: [0x80817660, 0x80817760] + npc/tex/cow_4_mouth5_TA_tex_txt: + addrs: [0x80817760, 0x80817860] + npc/tex/cow_4_mouth6_TA_tex_txt: + addrs: [0x80817860, 0x80817960] + npc/tex/cow_4_tmem_txt: + addrs: [0x80817960, 0x80817D60] + npc/mdl/crd_1_v: + addrs: [0x80817D60, 0x808194F0] + type: vtx + npc/tex/crd_1_pal: + addrs: [0x80819F00, 0x80819F20] + type: pal16 + npc/tex/crd_1_eye1_TA_tex_txt: + addrs: [0x80819F20, 0x8081A020] + npc/tex/crd_1_eye2_TA_tex_txt: + addrs: [0x8081A020, 0x8081A120] + npc/tex/crd_1_eye3_TA_tex_txt: + addrs: [0x8081A120, 0x8081A220] + npc/tex/crd_1_eye4_TA_tex_txt: + addrs: [0x8081A220, 0x8081A320] + npc/tex/crd_1_eye5_TA_tex_txt: + addrs: [0x8081A320, 0x8081A420] + npc/tex/crd_1_eye6_TA_tex_txt: + addrs: [0x8081A420, 0x8081A520] + npc/tex/crd_1_eye7_TA_tex_txt: + addrs: [0x8081A520, 0x8081A620] + npc/tex/crd_1_eye8_TA_tex_txt: + addrs: [0x8081A620, 0x8081A720] + npc/tex/crd_1_tmem_txt: + addrs: [0x8081A720, 0x8081AC20] + npc/tex/crd_2_pal: + addrs: [0x8081AC20, 0x8081AC40] + type: pal16 + npc/tex/crd_2_eye1_TA_tex_txt: + addrs: [0x8081AC40, 0x8081AD40] + npc/tex/crd_2_eye2_TA_tex_txt: + addrs: [0x8081AD40, 0x8081AE40] + npc/tex/crd_2_eye3_TA_tex_txt: + addrs: [0x8081AE40, 0x8081AF40] + npc/tex/crd_2_eye4_TA_tex_txt: + addrs: [0x8081AF40, 0x8081B040] + npc/tex/crd_2_eye5_TA_tex_txt: + addrs: [0x8081B040, 0x8081B140] + npc/tex/crd_2_eye6_TA_tex_txt: + addrs: [0x8081B140, 0x8081B240] + npc/tex/crd_2_eye7_TA_tex_txt: + addrs: [0x8081B240, 0x8081B340] + npc/tex/crd_2_eye8_TA_tex_txt: + addrs: [0x8081B340, 0x8081B440] + npc/tex/crd_2_tmem_txt: + addrs: [0x8081B440, 0x8081B940] + npc/tex/crd_3_pal: + addrs: [0x8081B940, 0x8081B960] + type: pal16 + npc/tex/crd_3_eye1_TA_tex_txt: + addrs: [0x8081B960, 0x8081BA60] + npc/tex/crd_3_eye2_TA_tex_txt: + addrs: [0x8081BA60, 0x8081BB60] + npc/tex/crd_3_eye3_TA_tex_txt: + addrs: [0x8081BB60, 0x8081BC60] + npc/tex/crd_3_eye4_TA_tex_txt: + addrs: [0x8081BC60, 0x8081BD60] + npc/tex/crd_3_eye5_TA_tex_txt: + addrs: [0x8081BD60, 0x8081BE60] + npc/tex/crd_3_eye6_TA_tex_txt: + addrs: [0x8081BE60, 0x8081BF60] + npc/tex/crd_3_eye7_TA_tex_txt: + addrs: [0x8081BF60, 0x8081C060] + npc/tex/crd_3_eye8_TA_tex_txt: + addrs: [0x8081C060, 0x8081C160] + npc/tex/crd_3_tmem_txt: + addrs: [0x8081C160, 0x8081C660] + npc/tex/crd_4_pal: + addrs: [0x8081C660, 0x8081C680] + type: pal16 + npc/tex/crd_4_eye1_TA_tex_txt: + addrs: [0x8081C680, 0x8081C780] + npc/tex/crd_4_eye2_TA_tex_txt: + addrs: [0x8081C780, 0x8081C880] + npc/tex/crd_4_eye3_TA_tex_txt: + addrs: [0x8081C880, 0x8081C980] + npc/tex/crd_4_eye4_TA_tex_txt: + addrs: [0x8081C980, 0x8081CA80] + npc/tex/crd_4_eye5_TA_tex_txt: + addrs: [0x8081CA80, 0x8081CB80] + npc/tex/crd_4_eye6_TA_tex_txt: + addrs: [0x8081CB80, 0x8081CC80] + npc/tex/crd_4_eye7_TA_tex_txt: + addrs: [0x8081CC80, 0x8081CD80] + npc/tex/crd_4_eye8_TA_tex_txt: + addrs: [0x8081CD80, 0x8081CE80] + npc/tex/crd_4_tmem_txt: + addrs: [0x8081CE80, 0x8081D380] + npc/mdl/owl_1_v: + addrs: [0x8081D380, 0x8081EE10] + type: vtx + npc/tex/owl_1_pal: + addrs: [0x8081F9C0, 0x8081F9E0] + type: pal16 + npc/tex/owl_1_eye1_TA_tex_txt: + addrs: [0x8081F9E0, 0x8081FAE0] + npc/tex/owl_1_eye2_TA_tex_txt: + addrs: [0x8081FAE0, 0x8081FBE0] + npc/tex/owl_1_eye3_TA_tex_txt: + addrs: [0x8081FBE0, 0x8081FCE0] + npc/tex/owl_1_eye4_TA_tex_txt: + addrs: [0x8081FCE0, 0x8081FDE0] + npc/tex/owl_1_eye5_TA_tex_txt: + addrs: [0x8081FDE0, 0x8081FEE0] + npc/tex/owl_1_eye6_TA_tex_txt: + addrs: [0x8081FEE0, 0x8081FFE0] + npc/tex/owl_1_eye7_TA_tex_txt: + addrs: [0x8081FFE0, 0x808200E0] + npc/tex/owl_1_eye8_TA_tex_txt: + addrs: [0x808200E0, 0x808201E0] + npc/tex/owl_1_tmem_txt: + addrs: [0x808201E0, 0x80820820] + npc/mdl/rcd_1_v: + addrs: [0x80820820, 0x80821D40] + type: vtx + npc/tex/rcd_1_pal: + addrs: [0x80822720, 0x80822740] + type: pal16 + npc/tex/rcd_1_eye1_TA_tex_txt: + addrs: [0x80822740, 0x80822840] + npc/tex/rcd_1_eye2_TA_tex_txt: + addrs: [0x80822840, 0x80822940] + npc/tex/rcd_1_eye3_TA_tex_txt: + addrs: [0x80822940, 0x80822A40] + npc/tex/rcd_1_eye4_TA_tex_txt: + addrs: [0x80822A40, 0x80822B40] + npc/tex/rcd_1_eye5_TA_tex_txt: + addrs: [0x80822B40, 0x80822C40] + npc/tex/rcd_1_eye6_TA_tex_txt: + addrs: [0x80822C40, 0x80822D40] + npc/tex/rcd_1_eye7_TA_tex_txt: + addrs: [0x80822D40, 0x80822E40] + npc/tex/rcd_1_eye8_TA_tex_txt: + addrs: [0x80822E40, 0x80822F40] + npc/tex/rcd_1_tmem_txt: + addrs: [0x80822F40, 0x80823580] + npc/mdl/grf_1_v: + addrs: [0x80823580, 0x80825060] + type: vtx + npc/tex/grf_1_pal: + addrs: [0x80825B40, 0x80825B60] + type: pal16 + npc/tex/grf_1_eye1_TA_tex_txt: + addrs: [0x80825B60, 0x80825C60] + npc/tex/grf_1_eye2_TA_tex_txt: + addrs: [0x80825C60, 0x80825D60] + npc/tex/grf_1_eye3_TA_tex_txt: + addrs: [0x80825D60, 0x80825E60] + npc/tex/grf_1_eye4_TA_tex_txt: + addrs: [0x80825E60, 0x80825F60] + npc/tex/grf_1_eye5_TA_tex_txt: + addrs: [0x80825F60, 0x80826060] + npc/tex/grf_1_eye6_TA_tex_txt: + addrs: [0x80826060, 0x80826160] + npc/tex/grf_1_eye7_TA_tex_txt: + addrs: [0x80826160, 0x80826260] + npc/tex/grf_1_eye8_TA_tex_txt: + addrs: [0x80826260, 0x80826360] + npc/tex/grf_1_tmem_txt: + addrs: [0x80826360, 0x80826A60] + npc/mdl/dog_1_v: + addrs: [0x80826A60, 0x80828110] + type: vtx + npc/tex/dog_1_pal: + addrs: [0x80828A40, 0x80828A60] + type: pal16 + npc/tex/dog_1_eye1_TA_tex_txt: + addrs: [0x80828A60, 0x80828B60] + npc/tex/dog_1_eye2_TA_tex_txt: + addrs: [0x80828B60, 0x80828C60] + npc/tex/dog_1_eye3_TA_tex_txt: + addrs: [0x80828C60, 0x80828D60] + npc/tex/dog_1_eye4_TA_tex_txt: + addrs: [0x80828D60, 0x80828E60] + npc/tex/dog_1_eye5_TA_tex_txt: + addrs: [0x80828E60, 0x80828F60] + npc/tex/dog_1_eye6_TA_tex_txt: + addrs: [0x80828F60, 0x80829060] + npc/tex/dog_1_eye7_TA_tex_txt: + addrs: [0x80829060, 0x80829160] + npc/tex/dog_1_eye8_TA_tex_txt: + addrs: [0x80829160, 0x80829260] + npc/tex/dog_1_mouth1_TA_tex_txt: + addrs: [0x80829260, 0x80829360] + npc/tex/dog_1_mouth2_TA_tex_txt: + addrs: [0x80829360, 0x80829460] + npc/tex/dog_1_mouth3_TA_tex_txt: + addrs: [0x80829460, 0x80829560] + npc/tex/dog_1_mouth4_TA_tex_txt: + addrs: [0x80829560, 0x80829660] + npc/tex/dog_1_mouth5_TA_tex_txt: + addrs: [0x80829660, 0x80829760] + npc/tex/dog_1_mouth6_TA_tex_txt: + addrs: [0x80829760, 0x80829860] + npc/tex/dog_1_tmem_txt: + addrs: [0x80829860, 0x80829C60] + npc/tex/dog_2_pal: + addrs: [0x80829C60, 0x80829C80] + type: pal16 + npc/tex/dog_2_eye1_TA_tex_txt: + addrs: [0x80829C80, 0x80829D80] + npc/tex/dog_2_eye2_TA_tex_txt: + addrs: [0x80829D80, 0x80829E80] + npc/tex/dog_2_eye3_TA_tex_txt: + addrs: [0x80829E80, 0x80829F80] + npc/tex/dog_2_eye4_TA_tex_txt: + addrs: [0x80829F80, 0x8082A080] + npc/tex/dog_2_eye5_TA_tex_txt: + addrs: [0x8082A080, 0x8082A180] + npc/tex/dog_2_eye6_TA_tex_txt: + addrs: [0x8082A180, 0x8082A280] + npc/tex/dog_2_eye7_TA_tex_txt: + addrs: [0x8082A280, 0x8082A380] + npc/tex/dog_2_eye8_TA_tex_txt: + addrs: [0x8082A380, 0x8082A480] + npc/tex/dog_2_mouth1_TA_tex_txt: + addrs: [0x8082A480, 0x8082A580] + npc/tex/dog_2_mouth2_TA_tex_txt: + addrs: [0x8082A580, 0x8082A680] + npc/tex/dog_2_mouth3_TA_tex_txt: + addrs: [0x8082A680, 0x8082A780] + npc/tex/dog_2_mouth4_TA_tex_txt: + addrs: [0x8082A780, 0x8082A880] + npc/tex/dog_2_mouth5_TA_tex_txt: + addrs: [0x8082A880, 0x8082A980] + npc/tex/dog_2_mouth6_TA_tex_txt: + addrs: [0x8082A980, 0x8082AA80] + npc/tex/dog_2_tmem_txt: + addrs: [0x8082AA80, 0x8082AE80] + npc/tex/dog_3_pal: + addrs: [0x8082AE80, 0x8082AEA0] + type: pal16 + npc/tex/dog_3_eye1_TA_tex_txt: + addrs: [0x8082AEA0, 0x8082AFA0] + npc/tex/dog_3_eye2_TA_tex_txt: + addrs: [0x8082AFA0, 0x8082B0A0] + npc/tex/dog_3_eye3_TA_tex_txt: + addrs: [0x8082B0A0, 0x8082B1A0] + npc/tex/dog_3_eye4_TA_tex_txt: + addrs: [0x8082B1A0, 0x8082B2A0] + npc/tex/dog_3_eye5_TA_tex_txt: + addrs: [0x8082B2A0, 0x8082B3A0] + npc/tex/dog_3_eye6_TA_tex_txt: + addrs: [0x8082B3A0, 0x8082B4A0] + npc/tex/dog_3_eye7_TA_tex_txt: + addrs: [0x8082B4A0, 0x8082B5A0] + npc/tex/dog_3_eye8_TA_tex_txt: + addrs: [0x8082B5A0, 0x8082B6A0] + npc/tex/dog_3_mouth1_TA_tex_txt: + addrs: [0x8082B6A0, 0x8082B7A0] + npc/tex/dog_3_mouth2_TA_tex_txt: + addrs: [0x8082B7A0, 0x8082B8A0] + npc/tex/dog_3_mouth3_TA_tex_txt: + addrs: [0x8082B8A0, 0x8082B9A0] + npc/tex/dog_3_mouth4_TA_tex_txt: + addrs: [0x8082B9A0, 0x8082BAA0] + npc/tex/dog_3_mouth5_TA_tex_txt: + addrs: [0x8082BAA0, 0x8082BBA0] + npc/tex/dog_3_mouth6_TA_tex_txt: + addrs: [0x8082BBA0, 0x8082BCA0] + npc/tex/dog_3_tmem_txt: + addrs: [0x8082BCA0, 0x8082C0A0] + npc/tex/dog_4_pal: + addrs: [0x8082C0A0, 0x8082C0C0] + type: pal16 + npc/tex/dog_4_eye1_TA_tex_txt: + addrs: [0x8082C0C0, 0x8082C1C0] + npc/tex/dog_4_eye2_TA_tex_txt: + addrs: [0x8082C1C0, 0x8082C2C0] + npc/tex/dog_4_eye3_TA_tex_txt: + addrs: [0x8082C2C0, 0x8082C3C0] + npc/tex/dog_4_eye4_TA_tex_txt: + addrs: [0x8082C3C0, 0x8082C4C0] + npc/tex/dog_4_eye5_TA_tex_txt: + addrs: [0x8082C4C0, 0x8082C5C0] + npc/tex/dog_4_eye6_TA_tex_txt: + addrs: [0x8082C5C0, 0x8082C6C0] + npc/tex/dog_4_eye7_TA_tex_txt: + addrs: [0x8082C6C0, 0x8082C7C0] + npc/tex/dog_4_eye8_TA_tex_txt: + addrs: [0x8082C7C0, 0x8082C8C0] + npc/tex/dog_4_mouth1_TA_tex_txt: + addrs: [0x8082C8C0, 0x8082C9C0] + npc/tex/dog_4_mouth2_TA_tex_txt: + addrs: [0x8082C9C0, 0x8082CAC0] + npc/tex/dog_4_mouth3_TA_tex_txt: + addrs: [0x8082CAC0, 0x8082CBC0] + npc/tex/dog_4_mouth4_TA_tex_txt: + addrs: [0x8082CBC0, 0x8082CCC0] + npc/tex/dog_4_mouth5_TA_tex_txt: + addrs: [0x8082CCC0, 0x8082CDC0] + npc/tex/dog_4_mouth6_TA_tex_txt: + addrs: [0x8082CDC0, 0x8082CEC0] + npc/tex/dog_4_tmem_txt: + addrs: [0x8082CEC0, 0x8082D2C0] + npc/tex/dog_5_pal: + addrs: [0x8082D2C0, 0x8082D2E0] + type: pal16 + npc/tex/dog_5_eye1_TA_tex_txt: + addrs: [0x8082D2E0, 0x8082D3E0] + npc/tex/dog_5_eye2_TA_tex_txt: + addrs: [0x8082D3E0, 0x8082D4E0] + npc/tex/dog_5_eye3_TA_tex_txt: + addrs: [0x8082D4E0, 0x8082D5E0] + npc/tex/dog_5_eye4_TA_tex_txt: + addrs: [0x8082D5E0, 0x8082D6E0] + npc/tex/dog_5_eye5_TA_tex_txt: + addrs: [0x8082D6E0, 0x8082D7E0] + npc/tex/dog_5_eye6_TA_tex_txt: + addrs: [0x8082D7E0, 0x8082D8E0] + npc/tex/dog_5_eye7_TA_tex_txt: + addrs: [0x8082D8E0, 0x8082D9E0] + npc/tex/dog_5_eye8_TA_tex_txt: + addrs: [0x8082D9E0, 0x8082DAE0] + npc/tex/dog_5_mouth1_TA_tex_txt: + addrs: [0x8082DAE0, 0x8082DBE0] + npc/tex/dog_5_mouth2_TA_tex_txt: + addrs: [0x8082DBE0, 0x8082DCE0] + npc/tex/dog_5_mouth3_TA_tex_txt: + addrs: [0x8082DCE0, 0x8082DDE0] + npc/tex/dog_5_mouth4_TA_tex_txt: + addrs: [0x8082DDE0, 0x8082DEE0] + npc/tex/dog_5_mouth5_TA_tex_txt: + addrs: [0x8082DEE0, 0x8082DFE0] + npc/tex/dog_5_mouth6_TA_tex_txt: + addrs: [0x8082DFE0, 0x8082E0E0] + npc/tex/dog_5_tmem_txt: + addrs: [0x8082E0E0, 0x8082E4E0] + npc/tex/dog_6_pal: + addrs: [0x8082E4E0, 0x8082E500] + type: pal16 + npc/tex/dog_6_eye1_TA_tex_txt: + addrs: [0x8082E500, 0x8082E600] + npc/tex/dog_6_eye2_TA_tex_txt: + addrs: [0x8082E600, 0x8082E700] + npc/tex/dog_6_eye3_TA_tex_txt: + addrs: [0x8082E700, 0x8082E800] + npc/tex/dog_6_eye4_TA_tex_txt: + addrs: [0x8082E800, 0x8082E900] + npc/tex/dog_6_eye5_TA_tex_txt: + addrs: [0x8082E900, 0x8082EA00] + npc/tex/dog_6_eye6_TA_tex_txt: + addrs: [0x8082EA00, 0x8082EB00] + npc/tex/dog_6_eye7_TA_tex_txt: + addrs: [0x8082EB00, 0x8082EC00] + npc/tex/dog_6_eye8_TA_tex_txt: + addrs: [0x8082EC00, 0x8082ED00] + npc/tex/dog_6_mouth1_TA_tex_txt: + addrs: [0x8082ED00, 0x8082EE00] + npc/tex/dog_6_mouth2_TA_tex_txt: + addrs: [0x8082EE00, 0x8082EF00] + npc/tex/dog_6_mouth3_TA_tex_txt: + addrs: [0x8082EF00, 0x8082F000] + npc/tex/dog_6_mouth4_TA_tex_txt: + addrs: [0x8082F000, 0x8082F100] + npc/tex/dog_6_mouth5_TA_tex_txt: + addrs: [0x8082F100, 0x8082F200] + npc/tex/dog_6_mouth6_TA_tex_txt: + addrs: [0x8082F200, 0x8082F300] + npc/tex/dog_6_tmem_txt: + addrs: [0x8082F300, 0x8082F700] + npc/tex/dog_7_pal: + addrs: [0x8082F700, 0x8082F720] + type: pal16 + npc/tex/dog_7_eye1_TA_tex_txt: + addrs: [0x8082F720, 0x8082F820] + npc/tex/dog_7_eye2_TA_tex_txt: + addrs: [0x8082F820, 0x8082F920] + npc/tex/dog_7_eye3_TA_tex_txt: + addrs: [0x8082F920, 0x8082FA20] + npc/tex/dog_7_eye4_TA_tex_txt: + addrs: [0x8082FA20, 0x8082FB20] + npc/tex/dog_7_eye5_TA_tex_txt: + addrs: [0x8082FB20, 0x8082FC20] + npc/tex/dog_7_eye6_TA_tex_txt: + addrs: [0x8082FC20, 0x8082FD20] + npc/tex/dog_7_eye7_TA_tex_txt: + addrs: [0x8082FD20, 0x8082FE20] + npc/tex/dog_7_eye8_TA_tex_txt: + addrs: [0x8082FE20, 0x8082FF20] + npc/tex/dog_7_mouth1_TA_tex_txt: + addrs: [0x8082FF20, 0x80830020] + npc/tex/dog_7_mouth2_TA_tex_txt: + addrs: [0x80830020, 0x80830120] + npc/tex/dog_7_mouth3_TA_tex_txt: + addrs: [0x80830120, 0x80830220] + npc/tex/dog_7_mouth4_TA_tex_txt: + addrs: [0x80830220, 0x80830320] + npc/tex/dog_7_mouth5_TA_tex_txt: + addrs: [0x80830320, 0x80830420] + npc/tex/dog_7_mouth6_TA_tex_txt: + addrs: [0x80830420, 0x80830520] + npc/tex/dog_7_tmem_txt: + addrs: [0x80830520, 0x80830920] + npc/tex/dog_8_pal: + addrs: [0x80830920, 0x80830940] + type: pal16 + npc/tex/dog_8_eye1_TA_tex_txt: + addrs: [0x80830940, 0x80830A40] + npc/tex/dog_8_eye2_TA_tex_txt: + addrs: [0x80830A40, 0x80830B40] + npc/tex/dog_8_eye3_TA_tex_txt: + addrs: [0x80830B40, 0x80830C40] + npc/tex/dog_8_eye4_TA_tex_txt: + addrs: [0x80830C40, 0x80830D40] + npc/tex/dog_8_eye5_TA_tex_txt: + addrs: [0x80830D40, 0x80830E40] + npc/tex/dog_8_eye6_TA_tex_txt: + addrs: [0x80830E40, 0x80830F40] + npc/tex/dog_8_eye7_TA_tex_txt: + addrs: [0x80830F40, 0x80831040] + npc/tex/dog_8_eye8_TA_tex_txt: + addrs: [0x80831040, 0x80831140] + npc/tex/dog_8_mouth1_TA_tex_txt: + addrs: [0x80831140, 0x80831240] + npc/tex/dog_8_mouth2_TA_tex_txt: + addrs: [0x80831240, 0x80831340] + npc/tex/dog_8_mouth3_TA_tex_txt: + addrs: [0x80831340, 0x80831440] + npc/tex/dog_8_mouth4_TA_tex_txt: + addrs: [0x80831440, 0x80831540] + npc/tex/dog_8_mouth5_TA_tex_txt: + addrs: [0x80831540, 0x80831640] + npc/tex/dog_8_mouth6_TA_tex_txt: + addrs: [0x80831640, 0x80831740] + npc/tex/dog_8_tmem_txt: + addrs: [0x80831740, 0x80831B40] + npc/tex/dog_9_pal: + addrs: [0x80831B40, 0x80831B60] + type: pal16 + npc/tex/dog_9_eye1_TA_tex_txt: + addrs: [0x80831B60, 0x80831C60] + npc/tex/dog_9_eye2_TA_tex_txt: + addrs: [0x80831C60, 0x80831D60] + npc/tex/dog_9_eye3_TA_tex_txt: + addrs: [0x80831D60, 0x80831E60] + npc/tex/dog_9_eye4_TA_tex_txt: + addrs: [0x80831E60, 0x80831F60] + npc/tex/dog_9_eye5_TA_tex_txt: + addrs: [0x80831F60, 0x80832060] + npc/tex/dog_9_eye6_TA_tex_txt: + addrs: [0x80832060, 0x80832160] + npc/tex/dog_9_eye7_TA_tex_txt: + addrs: [0x80832160, 0x80832260] + npc/tex/dog_9_eye8_TA_tex_txt: + addrs: [0x80832260, 0x80832360] + npc/tex/dog_9_mouth1_TA_tex_txt: + addrs: [0x80832360, 0x80832460] + npc/tex/dog_9_mouth2_TA_tex_txt: + addrs: [0x80832460, 0x80832560] + npc/tex/dog_9_mouth3_TA_tex_txt: + addrs: [0x80832560, 0x80832660] + npc/tex/dog_9_mouth4_TA_tex_txt: + addrs: [0x80832660, 0x80832760] + npc/tex/dog_9_mouth5_TA_tex_txt: + addrs: [0x80832760, 0x80832860] + npc/tex/dog_9_mouth6_TA_tex_txt: + addrs: [0x80832860, 0x80832960] + npc/tex/dog_9_tmem_txt: + addrs: [0x80832960, 0x80832D60] + npc/tex/dog_10_pal: + addrs: [0x80832D60, 0x80832D80] + type: pal16 + npc/tex/dog_10_eye1_TA_tex_txt: + addrs: [0x80832D80, 0x80832E80] + npc/tex/dog_10_eye2_TA_tex_txt: + addrs: [0x80832E80, 0x80832F80] + npc/tex/dog_10_eye3_TA_tex_txt: + addrs: [0x80832F80, 0x80833080] + npc/tex/dog_10_eye4_TA_tex_txt: + addrs: [0x80833080, 0x80833180] + npc/tex/dog_10_eye5_TA_tex_txt: + addrs: [0x80833180, 0x80833280] + npc/tex/dog_10_eye6_TA_tex_txt: + addrs: [0x80833280, 0x80833380] + npc/tex/dog_10_eye7_TA_tex_txt: + addrs: [0x80833380, 0x80833480] + npc/tex/dog_10_eye8_TA_tex_txt: + addrs: [0x80833480, 0x80833580] + npc/tex/dog_10_mouth1_TA_tex_txt: + addrs: [0x80833580, 0x80833680] + npc/tex/dog_10_mouth2_TA_tex_txt: + addrs: [0x80833680, 0x80833780] + npc/tex/dog_10_mouth3_TA_tex_txt: + addrs: [0x80833780, 0x80833880] + npc/tex/dog_10_mouth4_TA_tex_txt: + addrs: [0x80833880, 0x80833980] + npc/tex/dog_10_mouth5_TA_tex_txt: + addrs: [0x80833980, 0x80833A80] + npc/tex/dog_10_mouth6_TA_tex_txt: + addrs: [0x80833A80, 0x80833B80] + npc/tex/dog_10_tmem_txt: + addrs: [0x80833B80, 0x80833F80] + npc/mdl/seg_1_v: + addrs: [0x80833F80, 0x808357E0] + type: vtx + npc/tex/seg_1_pal: + addrs: [0x80836300, 0x80836320] + type: pal16 + npc/tex/seg_1_eye1_TA_tex_txt: + addrs: [0x80836320, 0x80836420] + npc/tex/seg_1_eye2_TA_tex_txt: + addrs: [0x80836420, 0x80836520] + npc/tex/seg_1_eye3_TA_tex_txt: + addrs: [0x80836520, 0x80836620] + npc/tex/seg_1_eye4_TA_tex_txt: + addrs: [0x80836620, 0x80836720] + npc/tex/seg_1_eye5_TA_tex_txt: + addrs: [0x80836720, 0x80836820] + npc/tex/seg_1_eye6_TA_tex_txt: + addrs: [0x80836820, 0x80836920] + npc/tex/seg_1_eye7_TA_tex_txt: + addrs: [0x80836920, 0x80836A20] + npc/tex/seg_1_eye8_TA_tex_txt: + addrs: [0x80836A20, 0x80836B20] + npc/tex/seg_1_tmem_txt: + addrs: [0x80836B20, 0x80837160] + npc/mdl/duk_1_v: + addrs: [0x80837160, 0x808386E0] + type: vtx + npc/tex/duk_1_pal: + addrs: [0x80839080, 0x808390A0] + type: pal16 + npc/tex/duk_1_eye1_TA_tex_txt: + addrs: [0x808390A0, 0x808391A0] + npc/tex/duk_1_eye2_TA_tex_txt: + addrs: [0x808391A0, 0x808392A0] + npc/tex/duk_1_eye3_TA_tex_txt: + addrs: [0x808392A0, 0x808393A0] + npc/tex/duk_1_eye4_TA_tex_txt: + addrs: [0x808393A0, 0x808394A0] + npc/tex/duk_1_eye5_TA_tex_txt: + addrs: [0x808394A0, 0x808395A0] + npc/tex/duk_1_eye6_TA_tex_txt: + addrs: [0x808395A0, 0x808396A0] + npc/tex/duk_1_eye7_TA_tex_txt: + addrs: [0x808396A0, 0x808397A0] + npc/tex/duk_1_eye8_TA_tex_txt: + addrs: [0x808397A0, 0x808398A0] + npc/tex/duk_1_mouth1_TA_tex_txt: + addrs: [0x808398A0, 0x808399A0] + npc/tex/duk_1_mouth2_TA_tex_txt: + addrs: [0x808399A0, 0x80839AA0] + npc/tex/duk_1_mouth3_TA_tex_txt: + addrs: [0x80839AA0, 0x80839BA0] + npc/tex/duk_1_mouth4_TA_tex_txt: + addrs: [0x80839BA0, 0x80839CA0] + npc/tex/duk_1_mouth5_TA_tex_txt: + addrs: [0x80839CA0, 0x80839DA0] + npc/tex/duk_1_mouth6_TA_tex_txt: + addrs: [0x80839DA0, 0x80839EA0] + npc/tex/duk_1_tmem_txt: + addrs: [0x80839EA0, 0x8083A2A0] + npc/tex/duk_2_pal: + addrs: [0x8083A2A0, 0x8083A2C0] + type: pal16 + npc/tex/duk_2_eye1_TA_tex_txt: + addrs: [0x8083A2C0, 0x8083A3C0] + npc/tex/duk_2_eye2_TA_tex_txt: + addrs: [0x8083A3C0, 0x8083A4C0] + npc/tex/duk_2_eye3_TA_tex_txt: + addrs: [0x8083A4C0, 0x8083A5C0] + npc/tex/duk_2_eye4_TA_tex_txt: + addrs: [0x8083A5C0, 0x8083A6C0] + npc/tex/duk_2_eye5_TA_tex_txt: + addrs: [0x8083A6C0, 0x8083A7C0] + npc/tex/duk_2_eye6_TA_tex_txt: + addrs: [0x8083A7C0, 0x8083A8C0] + npc/tex/duk_2_eye7_TA_tex_txt: + addrs: [0x8083A8C0, 0x8083A9C0] + npc/tex/duk_2_eye8_TA_tex_txt: + addrs: [0x8083A9C0, 0x8083AAC0] + npc/tex/duk_2_mouth1_TA_tex_txt: + addrs: [0x8083AAC0, 0x8083ABC0] + npc/tex/duk_2_mouth2_TA_tex_txt: + addrs: [0x8083ABC0, 0x8083ACC0] + npc/tex/duk_2_mouth3_TA_tex_txt: + addrs: [0x8083ACC0, 0x8083ADC0] + npc/tex/duk_2_mouth4_TA_tex_txt: + addrs: [0x8083ADC0, 0x8083AEC0] + npc/tex/duk_2_mouth5_TA_tex_txt: + addrs: [0x8083AEC0, 0x8083AFC0] + npc/tex/duk_2_mouth6_TA_tex_txt: + addrs: [0x8083AFC0, 0x8083B0C0] + npc/tex/duk_2_tmem_txt: + addrs: [0x8083B0C0, 0x8083B4C0] + npc/tex/duk_11_pal: + addrs: [0x8083B4C0, 0x8083B4E0] + type: pal16 + npc/tex/duk_11_eye1_TA_tex_txt: + addrs: [0x8083B4E0, 0x8083B5E0] + npc/tex/duk_11_eye2_TA_tex_txt: + addrs: [0x8083B5E0, 0x8083B6E0] + npc/tex/duk_11_eye3_TA_tex_txt: + addrs: [0x8083B6E0, 0x8083B7E0] + npc/tex/duk_11_eye4_TA_tex_txt: + addrs: [0x8083B7E0, 0x8083B8E0] + npc/tex/duk_11_eye5_TA_tex_txt: + addrs: [0x8083B8E0, 0x8083B9E0] + npc/tex/duk_11_eye6_TA_tex_txt: + addrs: [0x8083B9E0, 0x8083BAE0] + npc/tex/duk_11_eye7_TA_tex_txt: + addrs: [0x8083BAE0, 0x8083BBE0] + npc/tex/duk_11_eye8_TA_tex_txt: + addrs: [0x8083BBE0, 0x8083BCE0] + npc/tex/duk_11_mouth1_TA_tex_txt: + addrs: [0x8083BCE0, 0x8083BDE0] + npc/tex/duk_11_mouth2_TA_tex_txt: + addrs: [0x8083BDE0, 0x8083BEE0] + npc/tex/duk_11_mouth3_TA_tex_txt: + addrs: [0x8083BEE0, 0x8083BFE0] + npc/tex/duk_11_mouth4_TA_tex_txt: + addrs: [0x8083BFE0, 0x8083C0E0] + npc/tex/duk_11_mouth5_TA_tex_txt: + addrs: [0x8083C0E0, 0x8083C1E0] + npc/tex/duk_11_mouth6_TA_tex_txt: + addrs: [0x8083C1E0, 0x8083C2E0] + npc/tex/duk_11_tmem_txt: + addrs: [0x8083C2E0, 0x8083C6E0] + npc/tex/duk_3_pal: + addrs: [0x8083C6E0, 0x8083C700] + type: pal16 + npc/tex/duk_3_eye1_TA_tex_txt: + addrs: [0x8083C700, 0x8083C800] + npc/tex/duk_3_eye2_TA_tex_txt: + addrs: [0x8083C800, 0x8083C900] + npc/tex/duk_3_eye3_TA_tex_txt: + addrs: [0x8083C900, 0x8083CA00] + npc/tex/duk_3_eye4_TA_tex_txt: + addrs: [0x8083CA00, 0x8083CB00] + npc/tex/duk_3_eye5_TA_tex_txt: + addrs: [0x8083CB00, 0x8083CC00] + npc/tex/duk_3_eye6_TA_tex_txt: + addrs: [0x8083CC00, 0x8083CD00] + npc/tex/duk_3_eye7_TA_tex_txt: + addrs: [0x8083CD00, 0x8083CE00] + npc/tex/duk_3_eye8_TA_tex_txt: + addrs: [0x8083CE00, 0x8083CF00] + npc/tex/duk_3_mouth1_TA_tex_txt: + addrs: [0x8083CF00, 0x8083D000] + npc/tex/duk_3_mouth2_TA_tex_txt: + addrs: [0x8083D000, 0x8083D100] + npc/tex/duk_3_mouth3_TA_tex_txt: + addrs: [0x8083D100, 0x8083D200] + npc/tex/duk_3_mouth4_TA_tex_txt: + addrs: [0x8083D200, 0x8083D300] + npc/tex/duk_3_mouth5_TA_tex_txt: + addrs: [0x8083D300, 0x8083D400] + npc/tex/duk_3_mouth6_TA_tex_txt: + addrs: [0x8083D400, 0x8083D500] + npc/tex/duk_3_tmem_txt: + addrs: [0x8083D500, 0x8083D900] + npc/tex/duk_4_pal: + addrs: [0x8083D900, 0x8083D920] + type: pal16 + npc/tex/duk_4_eye1_TA_tex_txt: + addrs: [0x8083D920, 0x8083DA20] + npc/tex/duk_4_eye2_TA_tex_txt: + addrs: [0x8083DA20, 0x8083DB20] + npc/tex/duk_4_eye3_TA_tex_txt: + addrs: [0x8083DB20, 0x8083DC20] + npc/tex/duk_4_eye4_TA_tex_txt: + addrs: [0x8083DC20, 0x8083DD20] + npc/tex/duk_4_eye5_TA_tex_txt: + addrs: [0x8083DD20, 0x8083DE20] + npc/tex/duk_4_eye6_TA_tex_txt: + addrs: [0x8083DE20, 0x8083DF20] + npc/tex/duk_4_eye7_TA_tex_txt: + addrs: [0x8083DF20, 0x8083E020] + npc/tex/duk_4_eye8_TA_tex_txt: + addrs: [0x8083E020, 0x8083E120] + npc/tex/duk_4_mouth1_TA_tex_txt: + addrs: [0x8083E120, 0x8083E220] + npc/tex/duk_4_mouth2_TA_tex_txt: + addrs: [0x8083E220, 0x8083E320] + npc/tex/duk_4_mouth3_TA_tex_txt: + addrs: [0x8083E320, 0x8083E420] + npc/tex/duk_4_mouth4_TA_tex_txt: + addrs: [0x8083E420, 0x8083E520] + npc/tex/duk_4_mouth5_TA_tex_txt: + addrs: [0x8083E520, 0x8083E620] + npc/tex/duk_4_mouth6_TA_tex_txt: + addrs: [0x8083E620, 0x8083E720] + npc/tex/duk_4_tmem_txt: + addrs: [0x8083E720, 0x8083EB20] + npc/tex/duk_5_pal: + addrs: [0x8083EB20, 0x8083EB40] + type: pal16 + npc/tex/duk_5_eye1_TA_tex_txt: + addrs: [0x8083EB40, 0x8083EC40] + npc/tex/duk_5_eye2_TA_tex_txt: + addrs: [0x8083EC40, 0x8083ED40] + npc/tex/duk_5_eye3_TA_tex_txt: + addrs: [0x8083ED40, 0x8083EE40] + npc/tex/duk_5_eye4_TA_tex_txt: + addrs: [0x8083EE40, 0x8083EF40] + npc/tex/duk_5_eye5_TA_tex_txt: + addrs: [0x8083EF40, 0x8083F040] + npc/tex/duk_5_eye6_TA_tex_txt: + addrs: [0x8083F040, 0x8083F140] + npc/tex/duk_5_eye7_TA_tex_txt: + addrs: [0x8083F140, 0x8083F240] + npc/tex/duk_5_eye8_TA_tex_txt: + addrs: [0x8083F240, 0x8083F340] + npc/tex/duk_5_mouth1_TA_tex_txt: + addrs: [0x8083F340, 0x8083F440] + npc/tex/duk_5_mouth2_TA_tex_txt: + addrs: [0x8083F440, 0x8083F540] + npc/tex/duk_5_mouth3_TA_tex_txt: + addrs: [0x8083F540, 0x8083F640] + npc/tex/duk_5_mouth4_TA_tex_txt: + addrs: [0x8083F640, 0x8083F740] + npc/tex/duk_5_mouth5_TA_tex_txt: + addrs: [0x8083F740, 0x8083F840] + npc/tex/duk_5_mouth6_TA_tex_txt: + addrs: [0x8083F840, 0x8083F940] + npc/tex/duk_5_tmem_txt: + addrs: [0x8083F940, 0x8083FD40] + npc/tex/duk_6_pal: + addrs: [0x8083FD40, 0x8083FD60] + type: pal16 + npc/tex/duk_6_eye1_TA_tex_txt: + addrs: [0x8083FD60, 0x8083FE60] + npc/tex/duk_6_eye2_TA_tex_txt: + addrs: [0x8083FE60, 0x8083FF60] + npc/tex/duk_6_eye3_TA_tex_txt: + addrs: [0x8083FF60, 0x80840060] + npc/tex/duk_6_eye4_TA_tex_txt: + addrs: [0x80840060, 0x80840160] + npc/tex/duk_6_eye5_TA_tex_txt: + addrs: [0x80840160, 0x80840260] + npc/tex/duk_6_eye6_TA_tex_txt: + addrs: [0x80840260, 0x80840360] + npc/tex/duk_6_eye7_TA_tex_txt: + addrs: [0x80840360, 0x80840460] + npc/tex/duk_6_eye8_TA_tex_txt: + addrs: [0x80840460, 0x80840560] + npc/tex/duk_6_mouth1_TA_tex_txt: + addrs: [0x80840560, 0x80840660] + npc/tex/duk_6_mouth2_TA_tex_txt: + addrs: [0x80840660, 0x80840760] + npc/tex/duk_6_mouth3_TA_tex_txt: + addrs: [0x80840760, 0x80840860] + npc/tex/duk_6_mouth4_TA_tex_txt: + addrs: [0x80840860, 0x80840960] + npc/tex/duk_6_mouth5_TA_tex_txt: + addrs: [0x80840960, 0x80840A60] + npc/tex/duk_6_mouth6_TA_tex_txt: + addrs: [0x80840A60, 0x80840B60] + npc/tex/duk_6_tmem_txt: + addrs: [0x80840B60, 0x80840F60] + npc/tex/duk_7_pal: + addrs: [0x80840F60, 0x80840F80] + type: pal16 + npc/tex/duk_7_eye1_TA_tex_txt: + addrs: [0x80840F80, 0x80841080] + npc/tex/duk_7_eye2_TA_tex_txt: + addrs: [0x80841080, 0x80841180] + npc/tex/duk_7_eye3_TA_tex_txt: + addrs: [0x80841180, 0x80841280] + npc/tex/duk_7_eye4_TA_tex_txt: + addrs: [0x80841280, 0x80841380] + npc/tex/duk_7_eye5_TA_tex_txt: + addrs: [0x80841380, 0x80841480] + npc/tex/duk_7_eye6_TA_tex_txt: + addrs: [0x80841480, 0x80841580] + npc/tex/duk_7_eye7_TA_tex_txt: + addrs: [0x80841580, 0x80841680] + npc/tex/duk_7_eye8_TA_tex_txt: + addrs: [0x80841680, 0x80841780] + npc/tex/duk_7_mouth1_TA_tex_txt: + addrs: [0x80841780, 0x80841880] + npc/tex/duk_7_mouth2_TA_tex_txt: + addrs: [0x80841880, 0x80841980] + npc/tex/duk_7_mouth3_TA_tex_txt: + addrs: [0x80841980, 0x80841A80] + npc/tex/duk_7_mouth4_TA_tex_txt: + addrs: [0x80841A80, 0x80841B80] + npc/tex/duk_7_mouth5_TA_tex_txt: + addrs: [0x80841B80, 0x80841C80] + npc/tex/duk_7_mouth6_TA_tex_txt: + addrs: [0x80841C80, 0x80841D80] + npc/tex/duk_7_tmem_txt: + addrs: [0x80841D80, 0x80842180] + npc/tex/duk_8_pal: + addrs: [0x80842180, 0x808421A0] + type: pal16 + npc/tex/duk_8_eye1_TA_tex_txt: + addrs: [0x808421A0, 0x808422A0] + npc/tex/duk_8_eye2_TA_tex_txt: + addrs: [0x808422A0, 0x808423A0] + npc/tex/duk_8_eye3_TA_tex_txt: + addrs: [0x808423A0, 0x808424A0] + npc/tex/duk_8_eye4_TA_tex_txt: + addrs: [0x808424A0, 0x808425A0] + npc/tex/duk_8_eye5_TA_tex_txt: + addrs: [0x808425A0, 0x808426A0] + npc/tex/duk_8_eye6_TA_tex_txt: + addrs: [0x808426A0, 0x808427A0] + npc/tex/duk_8_eye7_TA_tex_txt: + addrs: [0x808427A0, 0x808428A0] + npc/tex/duk_8_eye8_TA_tex_txt: + addrs: [0x808428A0, 0x808429A0] + npc/tex/duk_8_mouth1_TA_tex_txt: + addrs: [0x808429A0, 0x80842AA0] + npc/tex/duk_8_mouth2_TA_tex_txt: + addrs: [0x80842AA0, 0x80842BA0] + npc/tex/duk_8_mouth3_TA_tex_txt: + addrs: [0x80842BA0, 0x80842CA0] + npc/tex/duk_8_mouth4_TA_tex_txt: + addrs: [0x80842CA0, 0x80842DA0] + npc/tex/duk_8_mouth5_TA_tex_txt: + addrs: [0x80842DA0, 0x80842EA0] + npc/tex/duk_8_mouth6_TA_tex_txt: + addrs: [0x80842EA0, 0x80842FA0] + npc/tex/duk_8_tmem_txt: + addrs: [0x80842FA0, 0x808433A0] + npc/tex/duk_9_pal: + addrs: [0x808433A0, 0x808433C0] + type: pal16 + npc/tex/duk_9_eye1_TA_tex_txt: + addrs: [0x808433C0, 0x808434C0] + npc/tex/duk_9_eye2_TA_tex_txt: + addrs: [0x808434C0, 0x808435C0] + npc/tex/duk_9_eye3_TA_tex_txt: + addrs: [0x808435C0, 0x808436C0] + npc/tex/duk_9_eye4_TA_tex_txt: + addrs: [0x808436C0, 0x808437C0] + npc/tex/duk_9_eye5_TA_tex_txt: + addrs: [0x808437C0, 0x808438C0] + npc/tex/duk_9_eye6_TA_tex_txt: + addrs: [0x808438C0, 0x808439C0] + npc/tex/duk_9_eye7_TA_tex_txt: + addrs: [0x808439C0, 0x80843AC0] + npc/tex/duk_9_eye8_TA_tex_txt: + addrs: [0x80843AC0, 0x80843BC0] + npc/tex/duk_9_mouth1_TA_tex_txt: + addrs: [0x80843BC0, 0x80843CC0] + npc/tex/duk_9_mouth2_TA_tex_txt: + addrs: [0x80843CC0, 0x80843DC0] + npc/tex/duk_9_mouth3_TA_tex_txt: + addrs: [0x80843DC0, 0x80843EC0] + npc/tex/duk_9_mouth4_TA_tex_txt: + addrs: [0x80843EC0, 0x80843FC0] + npc/tex/duk_9_mouth5_TA_tex_txt: + addrs: [0x80843FC0, 0x808440C0] + npc/tex/duk_9_mouth6_TA_tex_txt: + addrs: [0x808440C0, 0x808441C0] + npc/tex/duk_9_tmem_txt: + addrs: [0x808441C0, 0x808445C0] + npc/tex/duk_10_pal: + addrs: [0x808445C0, 0x808445E0] + type: pal16 + npc/tex/duk_10_eye1_TA_tex_txt: + addrs: [0x808445E0, 0x808446E0] + npc/tex/duk_10_eye2_TA_tex_txt: + addrs: [0x808446E0, 0x808447E0] + npc/tex/duk_10_eye3_TA_tex_txt: + addrs: [0x808447E0, 0x808448E0] + npc/tex/duk_10_eye4_TA_tex_txt: + addrs: [0x808448E0, 0x808449E0] + npc/tex/duk_10_eye5_TA_tex_txt: + addrs: [0x808449E0, 0x80844AE0] + npc/tex/duk_10_eye6_TA_tex_txt: + addrs: [0x80844AE0, 0x80844BE0] + npc/tex/duk_10_eye7_TA_tex_txt: + addrs: [0x80844BE0, 0x80844CE0] + npc/tex/duk_10_eye8_TA_tex_txt: + addrs: [0x80844CE0, 0x80844DE0] + npc/tex/duk_10_mouth1_TA_tex_txt: + addrs: [0x80844DE0, 0x80844EE0] + npc/tex/duk_10_mouth2_TA_tex_txt: + addrs: [0x80844EE0, 0x80844FE0] + npc/tex/duk_10_mouth3_TA_tex_txt: + addrs: [0x80844FE0, 0x808450E0] + npc/tex/duk_10_mouth4_TA_tex_txt: + addrs: [0x808450E0, 0x808451E0] + npc/tex/duk_10_mouth5_TA_tex_txt: + addrs: [0x808451E0, 0x808452E0] + npc/tex/duk_10_mouth6_TA_tex_txt: + addrs: [0x808452E0, 0x808453E0] + npc/tex/duk_10_tmem_txt: + addrs: [0x808453E0, 0x808457E0] + npc/mdl/elp_1_v: + addrs: [0x80845830, 0x80846FF0] + type: vtx + npc/tex/elp_1_pal: + addrs: [0x808479A0, 0x808479C0] + type: pal16 + npc/tex/elp_1_eye1_TA_tex_txt: + addrs: [0x808479C0, 0x80847AC0] + npc/tex/elp_1_eye2_TA_tex_txt: + addrs: [0x80847AC0, 0x80847BC0] + npc/tex/elp_1_eye3_TA_tex_txt: + addrs: [0x80847BC0, 0x80847CC0] + npc/tex/elp_1_eye4_TA_tex_txt: + addrs: [0x80847CC0, 0x80847DC0] + npc/tex/elp_1_eye5_TA_tex_txt: + addrs: [0x80847DC0, 0x80847EC0] + npc/tex/elp_1_eye6_TA_tex_txt: + addrs: [0x80847EC0, 0x80847FC0] + npc/tex/elp_1_eye7_TA_tex_txt: + addrs: [0x80847FC0, 0x808480C0] + npc/tex/elp_1_eye8_TA_tex_txt: + addrs: [0x808480C0, 0x808481C0] + npc/tex/elp_1_mouth1_TA_tex_txt: + addrs: [0x808481C0, 0x808482C0] + npc/tex/elp_1_mouth2_TA_tex_txt: + addrs: [0x808482C0, 0x808483C0] + npc/tex/elp_1_mouth3_TA_tex_txt: + addrs: [0x808483C0, 0x808484C0] + npc/tex/elp_1_mouth4_TA_tex_txt: + addrs: [0x808484C0, 0x808485C0] + npc/tex/elp_1_mouth5_TA_tex_txt: + addrs: [0x808485C0, 0x808486C0] + npc/tex/elp_1_mouth6_TA_tex_txt: + addrs: [0x808486C0, 0x808487C0] + npc/tex/elp_1_tmem_txt: + addrs: [0x808487C0, 0x80848BC0] + npc/tex/elp_2_pal: + addrs: [0x80848BC0, 0x80848BE0] + type: pal16 + npc/tex/elp_2_eye1_TA_tex_txt: + addrs: [0x80848BE0, 0x80848CE0] + npc/tex/elp_2_eye2_TA_tex_txt: + addrs: [0x80848CE0, 0x80848DE0] + npc/tex/elp_2_eye3_TA_tex_txt: + addrs: [0x80848DE0, 0x80848EE0] + npc/tex/elp_2_eye4_TA_tex_txt: + addrs: [0x80848EE0, 0x80848FE0] + npc/tex/elp_2_eye5_TA_tex_txt: + addrs: [0x80848FE0, 0x808490E0] + npc/tex/elp_2_eye6_TA_tex_txt: + addrs: [0x808490E0, 0x808491E0] + npc/tex/elp_2_eye7_TA_tex_txt: + addrs: [0x808491E0, 0x808492E0] + npc/tex/elp_2_eye8_TA_tex_txt: + addrs: [0x808492E0, 0x808493E0] + npc/tex/elp_2_mouth1_TA_tex_txt: + addrs: [0x808493E0, 0x808494E0] + npc/tex/elp_2_mouth2_TA_tex_txt: + addrs: [0x808494E0, 0x808495E0] + npc/tex/elp_2_mouth3_TA_tex_txt: + addrs: [0x808495E0, 0x808496E0] + npc/tex/elp_2_mouth4_TA_tex_txt: + addrs: [0x808496E0, 0x808497E0] + npc/tex/elp_2_mouth5_TA_tex_txt: + addrs: [0x808497E0, 0x808498E0] + npc/tex/elp_2_mouth6_TA_tex_txt: + addrs: [0x808498E0, 0x808499E0] + npc/tex/elp_2_tmem_txt: + addrs: [0x808499E0, 0x80849DE0] + npc/tex/elp_3_pal: + addrs: [0x80849DE0, 0x80849E00] + type: pal16 + npc/tex/elp_3_eye1_TA_tex_txt: + addrs: [0x80849E00, 0x80849F00] + npc/tex/elp_3_eye2_TA_tex_txt: + addrs: [0x80849F00, 0x8084A000] + npc/tex/elp_3_eye3_TA_tex_txt: + addrs: [0x8084A000, 0x8084A100] + npc/tex/elp_3_eye4_TA_tex_txt: + addrs: [0x8084A100, 0x8084A200] + npc/tex/elp_3_eye5_TA_tex_txt: + addrs: [0x8084A200, 0x8084A300] + npc/tex/elp_3_eye6_TA_tex_txt: + addrs: [0x8084A300, 0x8084A400] + npc/tex/elp_3_eye7_TA_tex_txt: + addrs: [0x8084A400, 0x8084A500] + npc/tex/elp_3_eye8_TA_tex_txt: + addrs: [0x8084A500, 0x8084A600] + npc/tex/elp_3_mouth1_TA_tex_txt: + addrs: [0x8084A600, 0x8084A700] + npc/tex/elp_3_mouth2_TA_tex_txt: + addrs: [0x8084A700, 0x8084A800] + npc/tex/elp_3_mouth3_TA_tex_txt: + addrs: [0x8084A800, 0x8084A900] + npc/tex/elp_3_mouth4_TA_tex_txt: + addrs: [0x8084A900, 0x8084AA00] + npc/tex/elp_3_mouth5_TA_tex_txt: + addrs: [0x8084AA00, 0x8084AB00] + npc/tex/elp_3_mouth6_TA_tex_txt: + addrs: [0x8084AB00, 0x8084AC00] + npc/tex/elp_3_tmem_txt: + addrs: [0x8084AC00, 0x8084B000] + npc/tex/elp_4_pal: + addrs: [0x8084B000, 0x8084B020] + type: pal16 + npc/tex/elp_4_eye1_TA_tex_txt: + addrs: [0x8084B020, 0x8084B120] + npc/tex/elp_4_eye2_TA_tex_txt: + addrs: [0x8084B120, 0x8084B220] + npc/tex/elp_4_eye3_TA_tex_txt: + addrs: [0x8084B220, 0x8084B320] + npc/tex/elp_4_eye4_TA_tex_txt: + addrs: [0x8084B320, 0x8084B420] + npc/tex/elp_4_eye5_TA_tex_txt: + addrs: [0x8084B420, 0x8084B520] + npc/tex/elp_4_eye6_TA_tex_txt: + addrs: [0x8084B520, 0x8084B620] + npc/tex/elp_4_eye7_TA_tex_txt: + addrs: [0x8084B620, 0x8084B720] + npc/tex/elp_4_eye8_TA_tex_txt: + addrs: [0x8084B720, 0x8084B820] + npc/tex/elp_4_mouth1_TA_tex_txt: + addrs: [0x8084B820, 0x8084B920] + npc/tex/elp_4_mouth2_TA_tex_txt: + addrs: [0x8084B920, 0x8084BA20] + npc/tex/elp_4_mouth3_TA_tex_txt: + addrs: [0x8084BA20, 0x8084BB20] + npc/tex/elp_4_mouth4_TA_tex_txt: + addrs: [0x8084BB20, 0x8084BC20] + npc/tex/elp_4_mouth5_TA_tex_txt: + addrs: [0x8084BC20, 0x8084BD20] + npc/tex/elp_4_mouth6_TA_tex_txt: + addrs: [0x8084BD20, 0x8084BE20] + npc/tex/elp_4_tmem_txt: + addrs: [0x8084BE20, 0x8084C220] + npc/tex/elp_5_pal: + addrs: [0x8084C220, 0x8084C240] + type: pal16 + npc/tex/elp_5_eye1_TA_tex_txt: + addrs: [0x8084C240, 0x8084C340] + npc/tex/elp_5_eye2_TA_tex_txt: + addrs: [0x8084C340, 0x8084C440] + npc/tex/elp_5_eye3_TA_tex_txt: + addrs: [0x8084C440, 0x8084C540] + npc/tex/elp_5_eye4_TA_tex_txt: + addrs: [0x8084C540, 0x8084C640] + npc/tex/elp_5_eye5_TA_tex_txt: + addrs: [0x8084C640, 0x8084C740] + npc/tex/elp_5_eye6_TA_tex_txt: + addrs: [0x8084C740, 0x8084C840] + npc/tex/elp_5_eye7_TA_tex_txt: + addrs: [0x8084C840, 0x8084C940] + npc/tex/elp_5_eye8_TA_tex_txt: + addrs: [0x8084C940, 0x8084CA40] + npc/tex/elp_5_mouth1_TA_tex_txt: + addrs: [0x8084CA40, 0x8084CB40] + npc/tex/elp_5_mouth2_TA_tex_txt: + addrs: [0x8084CB40, 0x8084CC40] + npc/tex/elp_5_mouth3_TA_tex_txt: + addrs: [0x8084CC40, 0x8084CD40] + npc/tex/elp_5_mouth4_TA_tex_txt: + addrs: [0x8084CD40, 0x8084CE40] + npc/tex/elp_5_mouth5_TA_tex_txt: + addrs: [0x8084CE40, 0x8084CF40] + npc/tex/elp_5_mouth6_TA_tex_txt: + addrs: [0x8084CF40, 0x8084D040] + npc/tex/elp_5_tmem_txt: + addrs: [0x8084D040, 0x8084D440] + npc/tex/elp_6_pal: + addrs: [0x8084D440, 0x8084D460] + type: pal16 + npc/tex/elp_6_eye1_TA_tex_txt: + addrs: [0x8084D460, 0x8084D560] + npc/tex/elp_6_eye2_TA_tex_txt: + addrs: [0x8084D560, 0x8084D660] + npc/tex/elp_6_eye3_TA_tex_txt: + addrs: [0x8084D660, 0x8084D760] + npc/tex/elp_6_eye4_TA_tex_txt: + addrs: [0x8084D760, 0x8084D860] + npc/tex/elp_6_eye5_TA_tex_txt: + addrs: [0x8084D860, 0x8084D960] + npc/tex/elp_6_eye6_TA_tex_txt: + addrs: [0x8084D960, 0x8084DA60] + npc/tex/elp_6_eye7_TA_tex_txt: + addrs: [0x8084DA60, 0x8084DB60] + npc/tex/elp_6_eye8_TA_tex_txt: + addrs: [0x8084DB60, 0x8084DC60] + npc/tex/elp_6_mouth1_TA_tex_txt: + addrs: [0x8084DC60, 0x8084DD60] + npc/tex/elp_6_mouth2_TA_tex_txt: + addrs: [0x8084DD60, 0x8084DE60] + npc/tex/elp_6_mouth3_TA_tex_txt: + addrs: [0x8084DE60, 0x8084DF60] + npc/tex/elp_6_mouth4_TA_tex_txt: + addrs: [0x8084DF60, 0x8084E060] + npc/tex/elp_6_mouth5_TA_tex_txt: + addrs: [0x8084E060, 0x8084E160] + npc/tex/elp_6_mouth6_TA_tex_txt: + addrs: [0x8084E160, 0x8084E260] + npc/tex/elp_6_tmem_txt: + addrs: [0x8084E260, 0x8084E660] + npc/tex/elp_7_pal: + addrs: [0x8084E660, 0x8084E680] + type: pal16 + npc/tex/elp_7_eye1_TA_tex_txt: + addrs: [0x8084E680, 0x8084E780] + npc/tex/elp_7_eye2_TA_tex_txt: + addrs: [0x8084E780, 0x8084E880] + npc/tex/elp_7_eye3_TA_tex_txt: + addrs: [0x8084E880, 0x8084E980] + npc/tex/elp_7_eye4_TA_tex_txt: + addrs: [0x8084E980, 0x8084EA80] + npc/tex/elp_7_eye5_TA_tex_txt: + addrs: [0x8084EA80, 0x8084EB80] + npc/tex/elp_7_eye6_TA_tex_txt: + addrs: [0x8084EB80, 0x8084EC80] + npc/tex/elp_7_eye7_TA_tex_txt: + addrs: [0x8084EC80, 0x8084ED80] + npc/tex/elp_7_eye8_TA_tex_txt: + addrs: [0x8084ED80, 0x8084EE80] + npc/tex/elp_7_mouth1_TA_tex_txt: + addrs: [0x8084EE80, 0x8084EF80] + npc/tex/elp_7_mouth2_TA_tex_txt: + addrs: [0x8084EF80, 0x8084F080] + npc/tex/elp_7_mouth3_TA_tex_txt: + addrs: [0x8084F080, 0x8084F180] + npc/tex/elp_7_mouth4_TA_tex_txt: + addrs: [0x8084F180, 0x8084F280] + npc/tex/elp_7_mouth5_TA_tex_txt: + addrs: [0x8084F280, 0x8084F380] + npc/tex/elp_7_mouth6_TA_tex_txt: + addrs: [0x8084F380, 0x8084F480] + npc/tex/elp_7_tmem_txt: + addrs: [0x8084F480, 0x8084F880] + npc/mdl/flg_1_v: + addrs: [0x80857D80, 0x80858FC0] + type: vtx + npc/tex/flg_1_pal: + addrs: [0x808597E0, 0x80859800] + type: pal16 + npc/tex/flg_1_eye1_TA_tex_txt: + addrs: [0x80859800, 0x80859900] + npc/tex/flg_1_eye2_TA_tex_txt: + addrs: [0x80859900, 0x80859A00] + npc/tex/flg_1_eye3_TA_tex_txt: + addrs: [0x80859A00, 0x80859B00] + npc/tex/flg_1_eye4_TA_tex_txt: + addrs: [0x80859B00, 0x80859C00] + npc/tex/flg_1_eye5_TA_tex_txt: + addrs: [0x80859C00, 0x80859D00] + npc/tex/flg_1_eye6_TA_tex_txt: + addrs: [0x80859D00, 0x80859E00] + npc/tex/flg_1_eye7_TA_tex_txt: + addrs: [0x80859E00, 0x80859F00] + npc/tex/flg_1_eye8_TA_tex_txt: + addrs: [0x80859F00, 0x8085A000] + npc/tex/flg_1_mouth1_TA_tex_txt: + addrs: [0x8085A000, 0x8085A100] + npc/tex/flg_1_mouth2_TA_tex_txt: + addrs: [0x8085A100, 0x8085A200] + npc/tex/flg_1_mouth3_TA_tex_txt: + addrs: [0x8085A200, 0x8085A300] + npc/tex/flg_1_mouth4_TA_tex_txt: + addrs: [0x8085A300, 0x8085A400] + npc/tex/flg_1_mouth5_TA_tex_txt: + addrs: [0x8085A400, 0x8085A500] + npc/tex/flg_1_mouth6_TA_tex_txt: + addrs: [0x8085A500, 0x8085A600] + npc/tex/flg_1_tmem_txt: + addrs: [0x8085A600, 0x8085AA00] + npc/tex/flg_2_pal: + addrs: [0x8085AA00, 0x8085AA20] + type: pal16 + npc/tex/flg_2_eye1_TA_tex_txt: + addrs: [0x8085AA20, 0x8085AB20] + npc/tex/flg_2_eye2_TA_tex_txt: + addrs: [0x8085AB20, 0x8085AC20] + npc/tex/flg_2_eye3_TA_tex_txt: + addrs: [0x8085AC20, 0x8085AD20] + npc/tex/flg_2_eye4_TA_tex_txt: + addrs: [0x8085AD20, 0x8085AE20] + npc/tex/flg_2_eye5_TA_tex_txt: + addrs: [0x8085AE20, 0x8085AF20] + npc/tex/flg_2_eye6_TA_tex_txt: + addrs: [0x8085AF20, 0x8085B020] + npc/tex/flg_2_eye7_TA_tex_txt: + addrs: [0x8085B020, 0x8085B120] + npc/tex/flg_2_eye8_TA_tex_txt: + addrs: [0x8085B120, 0x8085B220] + npc/tex/flg_2_mouth1_TA_tex_txt: + addrs: [0x8085B220, 0x8085B320] + npc/tex/flg_2_mouth2_TA_tex_txt: + addrs: [0x8085B320, 0x8085B420] + npc/tex/flg_2_mouth3_TA_tex_txt: + addrs: [0x8085B420, 0x8085B520] + npc/tex/flg_2_mouth4_TA_tex_txt: + addrs: [0x8085B520, 0x8085B620] + npc/tex/flg_2_mouth5_TA_tex_txt: + addrs: [0x8085B620, 0x8085B720] + npc/tex/flg_2_mouth6_TA_tex_txt: + addrs: [0x8085B720, 0x8085B820] + npc/tex/flg_2_tmem_txt: + addrs: [0x8085B820, 0x8085BC20] + npc/tex/flg_11_pal: + addrs: [0x8085BC20, 0x8085BC40] + type: pal16 + npc/tex/flg_11_eye1_TA_tex_txt: + addrs: [0x8085BC40, 0x8085BD40] + npc/tex/flg_11_eye2_TA_tex_txt: + addrs: [0x8085BD40, 0x8085BE40] + npc/tex/flg_11_eye3_TA_tex_txt: + addrs: [0x8085BE40, 0x8085BF40] + npc/tex/flg_11_eye4_TA_tex_txt: + addrs: [0x8085BF40, 0x8085C040] + npc/tex/flg_11_eye5_TA_tex_txt: + addrs: [0x8085C040, 0x8085C140] + npc/tex/flg_11_eye6_TA_tex_txt: + addrs: [0x8085C140, 0x8085C240] + npc/tex/flg_11_eye7_TA_tex_txt: + addrs: [0x8085C240, 0x8085C340] + npc/tex/flg_11_eye8_TA_tex_txt: + addrs: [0x8085C340, 0x8085C440] + npc/tex/flg_11_mouth1_TA_tex_txt: + addrs: [0x8085C440, 0x8085C540] + npc/tex/flg_11_mouth2_TA_tex_txt: + addrs: [0x8085C540, 0x8085C640] + npc/tex/flg_11_mouth3_TA_tex_txt: + addrs: [0x8085C640, 0x8085C740] + npc/tex/flg_11_mouth4_TA_tex_txt: + addrs: [0x8085C740, 0x8085C840] + npc/tex/flg_11_mouth5_TA_tex_txt: + addrs: [0x8085C840, 0x8085C940] + npc/tex/flg_11_mouth6_TA_tex_txt: + addrs: [0x8085C940, 0x8085CA40] + npc/tex/flg_11_tmem_txt: + addrs: [0x8085CA40, 0x8085CE40] + npc/tex/flg_12_pal: + addrs: [0x8085CE40, 0x8085CE60] + type: pal16 + npc/tex/flg_12_eye1_TA_tex_txt: + addrs: [0x8085CE60, 0x8085CF60] + npc/tex/flg_12_eye2_TA_tex_txt: + addrs: [0x8085CF60, 0x8085D060] + npc/tex/flg_12_eye3_TA_tex_txt: + addrs: [0x8085D060, 0x8085D160] + npc/tex/flg_12_eye4_TA_tex_txt: + addrs: [0x8085D160, 0x8085D260] + npc/tex/flg_12_eye5_TA_tex_txt: + addrs: [0x8085D260, 0x8085D360] + npc/tex/flg_12_eye6_TA_tex_txt: + addrs: [0x8085D360, 0x8085D460] + npc/tex/flg_12_eye7_TA_tex_txt: + addrs: [0x8085D460, 0x8085D560] + npc/tex/flg_12_eye8_TA_tex_txt: + addrs: [0x8085D560, 0x8085D660] + npc/tex/flg_12_mouth1_TA_tex_txt: + addrs: [0x8085D660, 0x8085D760] + npc/tex/flg_12_mouth2_TA_tex_txt: + addrs: [0x8085D760, 0x8085D860] + npc/tex/flg_12_mouth3_TA_tex_txt: + addrs: [0x8085D860, 0x8085D960] + npc/tex/flg_12_mouth4_TA_tex_txt: + addrs: [0x8085D960, 0x8085DA60] + npc/tex/flg_12_mouth5_TA_tex_txt: + addrs: [0x8085DA60, 0x8085DB60] + npc/tex/flg_12_mouth6_TA_tex_txt: + addrs: [0x8085DB60, 0x8085DC60] + npc/tex/flg_12_tmem_txt: + addrs: [0x8085DC60, 0x8085DFE0] + npc/tex/flg_13_pal: + addrs: [0x8085DFE0, 0x8085E000] + type: pal16 + npc/tex/flg_13_eye1_TA_tex_txt: + addrs: [0x8085E000, 0x8085E100] + npc/tex/flg_13_eye2_TA_tex_txt: + addrs: [0x8085E100, 0x8085E200] + npc/tex/flg_13_eye3_TA_tex_txt: + addrs: [0x8085E200, 0x8085E300] + npc/tex/flg_13_eye4_TA_tex_txt: + addrs: [0x8085E300, 0x8085E400] + npc/tex/flg_13_eye5_TA_tex_txt: + addrs: [0x8085E400, 0x8085E500] + npc/tex/flg_13_eye6_TA_tex_txt: + addrs: [0x8085E500, 0x8085E600] + npc/tex/flg_13_eye7_TA_tex_txt: + addrs: [0x8085E600, 0x8085E700] + npc/tex/flg_13_eye8_TA_tex_txt: + addrs: [0x8085E700, 0x8085E800] + npc/tex/flg_13_mouth1_TA_tex_txt: + addrs: [0x8085E800, 0x8085E900] + npc/tex/flg_13_mouth2_TA_tex_txt: + addrs: [0x8085E900, 0x8085EA00] + npc/tex/flg_13_mouth3_TA_tex_txt: + addrs: [0x8085EA00, 0x8085EB00] + npc/tex/flg_13_mouth4_TA_tex_txt: + addrs: [0x8085EB00, 0x8085EC00] + npc/tex/flg_13_mouth5_TA_tex_txt: + addrs: [0x8085EC00, 0x8085ED00] + npc/tex/flg_13_mouth6_TA_tex_txt: + addrs: [0x8085ED00, 0x8085EE00] + npc/tex/flg_13_tmem_txt: + addrs: [0x8085EE00, 0x8085F200] + npc/tex/flg_3_pal: + addrs: [0x8085F200, 0x8085F220] + type: pal16 + npc/tex/flg_3_eye1_TA_tex_txt: + addrs: [0x8085F220, 0x8085F320] + npc/tex/flg_3_eye2_TA_tex_txt: + addrs: [0x8085F320, 0x8085F420] + npc/tex/flg_3_eye3_TA_tex_txt: + addrs: [0x8085F420, 0x8085F520] + npc/tex/flg_3_eye4_TA_tex_txt: + addrs: [0x8085F520, 0x8085F620] + npc/tex/flg_3_eye5_TA_tex_txt: + addrs: [0x8085F620, 0x8085F720] + npc/tex/flg_3_eye6_TA_tex_txt: + addrs: [0x8085F720, 0x8085F820] + npc/tex/flg_3_eye7_TA_tex_txt: + addrs: [0x8085F820, 0x8085F920] + npc/tex/flg_3_eye8_TA_tex_txt: + addrs: [0x8085F920, 0x8085FA20] + npc/tex/flg_3_mouth1_TA_tex_txt: + addrs: [0x8085FA20, 0x8085FB20] + npc/tex/flg_3_mouth2_TA_tex_txt: + addrs: [0x8085FB20, 0x8085FC20] + npc/tex/flg_3_mouth3_TA_tex_txt: + addrs: [0x8085FC20, 0x8085FD20] + npc/tex/flg_3_mouth4_TA_tex_txt: + addrs: [0x8085FD20, 0x8085FE20] + npc/tex/flg_3_mouth5_TA_tex_txt: + addrs: [0x8085FE20, 0x8085FF20] + npc/tex/flg_3_mouth6_TA_tex_txt: + addrs: [0x8085FF20, 0x80860020] + npc/tex/flg_3_tmem_txt: + addrs: [0x80860020, 0x80860420] + npc/tex/flg_4_pal: + addrs: [0x80860420, 0x80860440] + type: pal16 + npc/tex/flg_4_eye1_TA_tex_txt: + addrs: [0x80860440, 0x80860540] + npc/tex/flg_4_eye2_TA_tex_txt: + addrs: [0x80860540, 0x80860640] + npc/tex/flg_4_eye3_TA_tex_txt: + addrs: [0x80860640, 0x80860740] + npc/tex/flg_4_eye4_TA_tex_txt: + addrs: [0x80860740, 0x80860840] + npc/tex/flg_4_eye5_TA_tex_txt: + addrs: [0x80860840, 0x80860940] + npc/tex/flg_4_eye6_TA_tex_txt: + addrs: [0x80860940, 0x80860A40] + npc/tex/flg_4_eye7_TA_tex_txt: + addrs: [0x80860A40, 0x80860B40] + npc/tex/flg_4_eye8_TA_tex_txt: + addrs: [0x80860B40, 0x80860C40] + npc/tex/flg_4_mouth1_TA_tex_txt: + addrs: [0x80860C40, 0x80860D40] + npc/tex/flg_4_mouth2_TA_tex_txt: + addrs: [0x80860D40, 0x80860E40] + npc/tex/flg_4_mouth3_TA_tex_txt: + addrs: [0x80860E40, 0x80860F40] + npc/tex/flg_4_mouth4_TA_tex_txt: + addrs: [0x80860F40, 0x80861040] + npc/tex/flg_4_mouth5_TA_tex_txt: + addrs: [0x80861040, 0x80861140] + npc/tex/flg_4_mouth6_TA_tex_txt: + addrs: [0x80861140, 0x80861240] + npc/tex/flg_4_tmem_txt: + addrs: [0x80861240, 0x80861640] + npc/tex/flg_5_pal: + addrs: [0x80861640, 0x80861660] + type: pal16 + npc/tex/flg_5_eye1_TA_tex_txt: + addrs: [0x80861660, 0x80861760] + npc/tex/flg_5_eye2_TA_tex_txt: + addrs: [0x80861760, 0x80861860] + npc/tex/flg_5_eye3_TA_tex_txt: + addrs: [0x80861860, 0x80861960] + npc/tex/flg_5_eye4_TA_tex_txt: + addrs: [0x80861960, 0x80861A60] + npc/tex/flg_5_eye5_TA_tex_txt: + addrs: [0x80861A60, 0x80861B60] + npc/tex/flg_5_eye6_TA_tex_txt: + addrs: [0x80861B60, 0x80861C60] + npc/tex/flg_5_eye7_TA_tex_txt: + addrs: [0x80861C60, 0x80861D60] + npc/tex/flg_5_eye8_TA_tex_txt: + addrs: [0x80861D60, 0x80861E60] + npc/tex/flg_5_mouth1_TA_tex_txt: + addrs: [0x80861E60, 0x80861F60] + npc/tex/flg_5_mouth2_TA_tex_txt: + addrs: [0x80861F60, 0x80862060] + npc/tex/flg_5_mouth3_TA_tex_txt: + addrs: [0x80862060, 0x80862160] + npc/tex/flg_5_mouth4_TA_tex_txt: + addrs: [0x80862160, 0x80862260] + npc/tex/flg_5_mouth5_TA_tex_txt: + addrs: [0x80862260, 0x80862360] + npc/tex/flg_5_mouth6_TA_tex_txt: + addrs: [0x80862360, 0x80862460] + npc/tex/flg_5_tmem_txt: + addrs: [0x80862460, 0x80862860] + npc/tex/flg_6_pal: + addrs: [0x80862860, 0x80862880] + type: pal16 + npc/tex/flg_6_eye1_TA_tex_txt: + addrs: [0x80862880, 0x80862980] + npc/tex/flg_6_eye2_TA_tex_txt: + addrs: [0x80862980, 0x80862A80] + npc/tex/flg_6_eye3_TA_tex_txt: + addrs: [0x80862A80, 0x80862B80] + npc/tex/flg_6_eye4_TA_tex_txt: + addrs: [0x80862B80, 0x80862C80] + npc/tex/flg_6_eye5_TA_tex_txt: + addrs: [0x80862C80, 0x80862D80] + npc/tex/flg_6_eye6_TA_tex_txt: + addrs: [0x80862D80, 0x80862E80] + npc/tex/flg_6_eye7_TA_tex_txt: + addrs: [0x80862E80, 0x80862F80] + npc/tex/flg_6_eye8_TA_tex_txt: + addrs: [0x80862F80, 0x80863080] + npc/tex/flg_6_mouth1_TA_tex_txt: + addrs: [0x80863080, 0x80863180] + npc/tex/flg_6_mouth2_TA_tex_txt: + addrs: [0x80863180, 0x80863280] + npc/tex/flg_6_mouth3_TA_tex_txt: + addrs: [0x80863280, 0x80863380] + npc/tex/flg_6_mouth4_TA_tex_txt: + addrs: [0x80863380, 0x80863480] + npc/tex/flg_6_mouth5_TA_tex_txt: + addrs: [0x80863480, 0x80863580] + npc/tex/flg_6_mouth6_TA_tex_txt: + addrs: [0x80863580, 0x80863680] + npc/tex/flg_6_tmem_txt: + addrs: [0x80863680, 0x80863A80] + npc/tex/flg_7_pal: + addrs: [0x80863A80, 0x80863AA0] + type: pal16 + npc/tex/flg_7_eye1_TA_tex_txt: + addrs: [0x80863AA0, 0x80863BA0] + npc/tex/flg_7_eye2_TA_tex_txt: + addrs: [0x80863BA0, 0x80863CA0] + npc/tex/flg_7_eye3_TA_tex_txt: + addrs: [0x80863CA0, 0x80863DA0] + npc/tex/flg_7_eye4_TA_tex_txt: + addrs: [0x80863DA0, 0x80863EA0] + npc/tex/flg_7_eye5_TA_tex_txt: + addrs: [0x80863EA0, 0x80863FA0] + npc/tex/flg_7_eye6_TA_tex_txt: + addrs: [0x80863FA0, 0x808640A0] + npc/tex/flg_7_eye7_TA_tex_txt: + addrs: [0x808640A0, 0x808641A0] + npc/tex/flg_7_eye8_TA_tex_txt: + addrs: [0x808641A0, 0x808642A0] + npc/tex/flg_7_mouth1_TA_tex_txt: + addrs: [0x808642A0, 0x808643A0] + npc/tex/flg_7_mouth2_TA_tex_txt: + addrs: [0x808643A0, 0x808644A0] + npc/tex/flg_7_mouth3_TA_tex_txt: + addrs: [0x808644A0, 0x808645A0] + npc/tex/flg_7_mouth4_TA_tex_txt: + addrs: [0x808645A0, 0x808646A0] + npc/tex/flg_7_mouth5_TA_tex_txt: + addrs: [0x808646A0, 0x808647A0] + npc/tex/flg_7_mouth6_TA_tex_txt: + addrs: [0x808647A0, 0x808648A0] + npc/tex/flg_7_tmem_txt: + addrs: [0x808648A0, 0x80864CA0] + npc/tex/flg_8_pal: + addrs: [0x80864CA0, 0x80864CC0] + type: pal16 + npc/tex/flg_8_eye1_TA_tex_txt: + addrs: [0x80864CC0, 0x80864DC0] + npc/tex/flg_8_eye2_TA_tex_txt: + addrs: [0x80864DC0, 0x80864EC0] + npc/tex/flg_8_eye3_TA_tex_txt: + addrs: [0x80864EC0, 0x80864FC0] + npc/tex/flg_8_eye4_TA_tex_txt: + addrs: [0x80864FC0, 0x808650C0] + npc/tex/flg_8_eye5_TA_tex_txt: + addrs: [0x808650C0, 0x808651C0] + npc/tex/flg_8_eye6_TA_tex_txt: + addrs: [0x808651C0, 0x808652C0] + npc/tex/flg_8_eye7_TA_tex_txt: + addrs: [0x808652C0, 0x808653C0] + npc/tex/flg_8_eye8_TA_tex_txt: + addrs: [0x808653C0, 0x808654C0] + npc/tex/flg_8_mouth1_TA_tex_txt: + addrs: [0x808654C0, 0x808655C0] + npc/tex/flg_8_mouth2_TA_tex_txt: + addrs: [0x808655C0, 0x808656C0] + npc/tex/flg_8_mouth3_TA_tex_txt: + addrs: [0x808656C0, 0x808657C0] + npc/tex/flg_8_mouth4_TA_tex_txt: + addrs: [0x808657C0, 0x808658C0] + npc/tex/flg_8_mouth5_TA_tex_txt: + addrs: [0x808658C0, 0x808659C0] + npc/tex/flg_8_mouth6_TA_tex_txt: + addrs: [0x808659C0, 0x80865AC0] + npc/tex/flg_8_tmem_txt: + addrs: [0x80865AC0, 0x80865EC0] + npc/tex/flg_9_pal: + addrs: [0x80865EC0, 0x80865EE0] + type: pal16 + npc/tex/flg_9_eye1_TA_tex_txt: + addrs: [0x80865EE0, 0x80865FE0] + npc/tex/flg_9_eye2_TA_tex_txt: + addrs: [0x80865FE0, 0x808660E0] + npc/tex/flg_9_eye3_TA_tex_txt: + addrs: [0x808660E0, 0x808661E0] + npc/tex/flg_9_eye4_TA_tex_txt: + addrs: [0x808661E0, 0x808662E0] + npc/tex/flg_9_eye5_TA_tex_txt: + addrs: [0x808662E0, 0x808663E0] + npc/tex/flg_9_eye6_TA_tex_txt: + addrs: [0x808663E0, 0x808664E0] + npc/tex/flg_9_eye7_TA_tex_txt: + addrs: [0x808664E0, 0x808665E0] + npc/tex/flg_9_eye8_TA_tex_txt: + addrs: [0x808665E0, 0x808666E0] + npc/tex/flg_9_mouth1_TA_tex_txt: + addrs: [0x808666E0, 0x808667E0] + npc/tex/flg_9_mouth2_TA_tex_txt: + addrs: [0x808667E0, 0x808668E0] + npc/tex/flg_9_mouth3_TA_tex_txt: + addrs: [0x808668E0, 0x808669E0] + npc/tex/flg_9_mouth4_TA_tex_txt: + addrs: [0x808669E0, 0x80866AE0] + npc/tex/flg_9_mouth5_TA_tex_txt: + addrs: [0x80866AE0, 0x80866BE0] + npc/tex/flg_9_mouth6_TA_tex_txt: + addrs: [0x80866BE0, 0x80866CE0] + npc/tex/flg_9_tmem_txt: + addrs: [0x80866CE0, 0x808670E0] + npc/tex/flg_10_pal: + addrs: [0x808670E0, 0x80867100] + type: pal16 + npc/tex/flg_10_eye1_TA_tex_txt: + addrs: [0x80867100, 0x80867200] + npc/tex/flg_10_eye2_TA_tex_txt: + addrs: [0x80867200, 0x80867300] + npc/tex/flg_10_eye3_TA_tex_txt: + addrs: [0x80867300, 0x80867400] + npc/tex/flg_10_eye4_TA_tex_txt: + addrs: [0x80867400, 0x80867500] + npc/tex/flg_10_eye5_TA_tex_txt: + addrs: [0x80867500, 0x80867600] + npc/tex/flg_10_eye6_TA_tex_txt: + addrs: [0x80867600, 0x80867700] + npc/tex/flg_10_eye7_TA_tex_txt: + addrs: [0x80867700, 0x80867800] + npc/tex/flg_10_eye8_TA_tex_txt: + addrs: [0x80867800, 0x80867900] + npc/tex/flg_10_mouth1_TA_tex_txt: + addrs: [0x80867900, 0x80867A00] + npc/tex/flg_10_mouth2_TA_tex_txt: + addrs: [0x80867A00, 0x80867B00] + npc/tex/flg_10_mouth3_TA_tex_txt: + addrs: [0x80867B00, 0x80867C00] + npc/tex/flg_10_mouth4_TA_tex_txt: + addrs: [0x80867C00, 0x80867D00] + npc/tex/flg_10_mouth5_TA_tex_txt: + addrs: [0x80867D00, 0x80867E00] + npc/tex/flg_10_mouth6_TA_tex_txt: + addrs: [0x80867E00, 0x80867F00] + npc/tex/flg_10_tmem_txt: + addrs: [0x80867F00, 0x80868300] + npc/mdl/rcf_1_v: + addrs: [0x80868300, 0x80869E30] + type: vtx + npc/tex/rcf_1_pal: + addrs: [0x8086A9A0, 0x8086A9C0] + type: pal16 + npc/tex/rcf_1_eye1_TA_tex_txt: + addrs: [0x8086A9C0, 0x8086AAC0] + npc/tex/rcf_1_eye2_TA_tex_txt: + addrs: [0x8086AAC0, 0x8086ABC0] + npc/tex/rcf_1_eye3_TA_tex_txt: + addrs: [0x8086ABC0, 0x8086ACC0] + npc/tex/rcf_1_eye4_TA_tex_txt: + addrs: [0x8086ACC0, 0x8086ADC0] + npc/tex/rcf_1_eye5_TA_tex_txt: + addrs: [0x8086ADC0, 0x8086AEC0] + npc/tex/rcf_1_eye6_TA_tex_txt: + addrs: [0x8086AEC0, 0x8086AFC0] + npc/tex/rcf_1_eye7_TA_tex_txt: + addrs: [0x8086AFC0, 0x8086B0C0] + npc/tex/rcf_1_eye8_TA_tex_txt: + addrs: [0x8086B0C0, 0x8086B1C0] + npc/tex/rcf_1_tmem_txt: + addrs: [0x8086B1C0, 0x8086B8C0] + npc/mdl/gst_1_v: + addrs: [0x8086CB08, 0x8086DC18] + type: vtx + npc/tex/gst_1_pal: + addrs: [0x8086E180, 0x8086E1A0] + type: pal16 + npc/tex/gst_1_eye1_TA_tex_txt: + addrs: [0x8086E1A0, 0x8086E2A0] + npc/tex/gst_1_eye2_TA_tex_txt: + addrs: [0x8086E2A0, 0x8086E3A0] + npc/tex/gst_1_eye3_TA_tex_txt: + addrs: [0x8086E3A0, 0x8086E4A0] + npc/tex/gst_1_eye4_TA_tex_txt: + addrs: [0x8086E4A0, 0x8086E5A0] + npc/tex/gst_1_eye5_TA_tex_txt: + addrs: [0x8086E5A0, 0x8086E6A0] + npc/tex/gst_1_eye6_TA_tex_txt: + addrs: [0x8086E6A0, 0x8086E7A0] + npc/tex/gst_1_eye7_TA_tex_txt: + addrs: [0x8086E7A0, 0x8086E8A0] + npc/tex/gst_1_eye8_TA_tex_txt: + addrs: [0x8086E8A0, 0x8086E9A0] + npc/tex/gst_1_mouth1_TA_tex_txt: + addrs: [0x8086E9A0, 0x8086EAA0] + npc/tex/gst_1_mouth2_TA_tex_txt: + addrs: [0x8086EAA0, 0x8086EBA0] + npc/tex/gst_1_mouth3_TA_tex_txt: + addrs: [0x8086EBA0, 0x8086ECA0] + npc/tex/gst_1_mouth4_TA_tex_txt: + addrs: [0x8086ECA0, 0x8086EDA0] + npc/tex/gst_1_mouth5_TA_tex_txt: + addrs: [0x8086EDA0, 0x8086EEA0] + npc/tex/gst_1_mouth6_TA_tex_txt: + addrs: [0x8086EEA0, 0x8086EFA0] + npc/tex/gst_1_tmem_txt: + addrs: [0x8086EFA0, 0x8086F120] + npc/mdl/goa_1_v: + addrs: [0x80871730, 0x80872D70] + type: vtx + npc/tex/goa_1_pal: + addrs: [0x80873700, 0x80873720] + type: pal16 + npc/tex/goa_1_eye1_TA_tex_txt: + addrs: [0x80873720, 0x80873820] + npc/tex/goa_1_eye2_TA_tex_txt: + addrs: [0x80873820, 0x80873920] + npc/tex/goa_1_eye3_TA_tex_txt: + addrs: [0x80873920, 0x80873A20] + npc/tex/goa_1_eye4_TA_tex_txt: + addrs: [0x80873A20, 0x80873B20] + npc/tex/goa_1_eye5_TA_tex_txt: + addrs: [0x80873B20, 0x80873C20] + npc/tex/goa_1_eye6_TA_tex_txt: + addrs: [0x80873C20, 0x80873D20] + npc/tex/goa_1_eye7_TA_tex_txt: + addrs: [0x80873D20, 0x80873E20] + npc/tex/goa_1_eye8_TA_tex_txt: + addrs: [0x80873E20, 0x80873F20] + npc/tex/goa_1_mouth1_TA_tex_txt: + addrs: [0x80873F20, 0x80874020] + npc/tex/goa_1_mouth2_TA_tex_txt: + addrs: [0x80874020, 0x80874120] + npc/tex/goa_1_mouth3_TA_tex_txt: + addrs: [0x80874120, 0x80874220] + npc/tex/goa_1_mouth4_TA_tex_txt: + addrs: [0x80874220, 0x80874320] + npc/tex/goa_1_mouth5_TA_tex_txt: + addrs: [0x80874320, 0x80874420] + npc/tex/goa_1_mouth6_TA_tex_txt: + addrs: [0x80874420, 0x80874520] + npc/tex/goa_1_tmem_txt: + addrs: [0x80874520, 0x80874920] + npc/tex/goa_2_pal: + addrs: [0x80874920, 0x80874940] + type: pal16 + npc/tex/goa_2_eye1_TA_tex_txt: + addrs: [0x80874940, 0x80874A40] + npc/tex/goa_2_eye2_TA_tex_txt: + addrs: [0x80874A40, 0x80874B40] + npc/tex/goa_2_eye3_TA_tex_txt: + addrs: [0x80874B40, 0x80874C40] + npc/tex/goa_2_eye4_TA_tex_txt: + addrs: [0x80874C40, 0x80874D40] + npc/tex/goa_2_eye5_TA_tex_txt: + addrs: [0x80874D40, 0x80874E40] + npc/tex/goa_2_eye6_TA_tex_txt: + addrs: [0x80874E40, 0x80874F40] + npc/tex/goa_2_eye7_TA_tex_txt: + addrs: [0x80874F40, 0x80875040] + npc/tex/goa_2_eye8_TA_tex_txt: + addrs: [0x80875040, 0x80875140] + npc/tex/goa_2_mouth1_TA_tex_txt: + addrs: [0x80875140, 0x80875240] + npc/tex/goa_2_mouth2_TA_tex_txt: + addrs: [0x80875240, 0x80875340] + npc/tex/goa_2_mouth3_TA_tex_txt: + addrs: [0x80875340, 0x80875440] + npc/tex/goa_2_mouth4_TA_tex_txt: + addrs: [0x80875440, 0x80875540] + npc/tex/goa_2_mouth5_TA_tex_txt: + addrs: [0x80875540, 0x80875640] + npc/tex/goa_2_mouth6_TA_tex_txt: + addrs: [0x80875640, 0x80875740] + npc/tex/goa_2_tmem_txt: + addrs: [0x80875740, 0x80875B40] + npc/tex/goa_3_pal: + addrs: [0x80875B40, 0x80875B60] + type: pal16 + npc/tex/goa_3_eye1_TA_tex_txt: + addrs: [0x80875B60, 0x80875C60] + npc/tex/goa_3_eye2_TA_tex_txt: + addrs: [0x80875C60, 0x80875D60] + npc/tex/goa_3_eye3_TA_tex_txt: + addrs: [0x80875D60, 0x80875E60] + npc/tex/goa_3_eye4_TA_tex_txt: + addrs: [0x80875E60, 0x80875F60] + npc/tex/goa_3_eye5_TA_tex_txt: + addrs: [0x80875F60, 0x80876060] + npc/tex/goa_3_eye6_TA_tex_txt: + addrs: [0x80876060, 0x80876160] + npc/tex/goa_3_eye7_TA_tex_txt: + addrs: [0x80876160, 0x80876260] + npc/tex/goa_3_eye8_TA_tex_txt: + addrs: [0x80876260, 0x80876360] + npc/tex/goa_3_mouth1_TA_tex_txt: + addrs: [0x80876360, 0x80876460] + npc/tex/goa_3_mouth2_TA_tex_txt: + addrs: [0x80876460, 0x80876560] + npc/tex/goa_3_mouth3_TA_tex_txt: + addrs: [0x80876560, 0x80876660] + npc/tex/goa_3_mouth4_TA_tex_txt: + addrs: [0x80876660, 0x80876760] + npc/tex/goa_3_mouth5_TA_tex_txt: + addrs: [0x80876760, 0x80876860] + npc/tex/goa_3_mouth6_TA_tex_txt: + addrs: [0x80876860, 0x80876960] + npc/tex/goa_3_tmem_txt: + addrs: [0x80876960, 0x80876D60] + npc/tex/goa_4_pal: + addrs: [0x80876D60, 0x80876D80] + type: pal16 + npc/tex/goa_4_eye1_TA_tex_txt: + addrs: [0x80876D80, 0x80876E80] + npc/tex/goa_4_eye2_TA_tex_txt: + addrs: [0x80876E80, 0x80876F80] + npc/tex/goa_4_eye3_TA_tex_txt: + addrs: [0x80876F80, 0x80877080] + npc/tex/goa_4_eye4_TA_tex_txt: + addrs: [0x80877080, 0x80877180] + npc/tex/goa_4_eye5_TA_tex_txt: + addrs: [0x80877180, 0x80877280] + npc/tex/goa_4_eye6_TA_tex_txt: + addrs: [0x80877280, 0x80877380] + npc/tex/goa_4_eye7_TA_tex_txt: + addrs: [0x80877380, 0x80877480] + npc/tex/goa_4_eye8_TA_tex_txt: + addrs: [0x80877480, 0x80877580] + npc/tex/goa_4_mouth1_TA_tex_txt: + addrs: [0x80877580, 0x80877680] + npc/tex/goa_4_mouth2_TA_tex_txt: + addrs: [0x80877680, 0x80877780] + npc/tex/goa_4_mouth3_TA_tex_txt: + addrs: [0x80877780, 0x80877880] + npc/tex/goa_4_mouth4_TA_tex_txt: + addrs: [0x80877880, 0x80877980] + npc/tex/goa_4_mouth5_TA_tex_txt: + addrs: [0x80877980, 0x80877A80] + npc/tex/goa_4_mouth6_TA_tex_txt: + addrs: [0x80877A80, 0x80877B80] + npc/tex/goa_4_tmem_txt: + addrs: [0x80877B80, 0x80877F80] + npc/tex/goa_5_pal: + addrs: [0x80877F80, 0x80877FA0] + type: pal16 + npc/tex/goa_5_eye1_TA_tex_txt: + addrs: [0x80877FA0, 0x808780A0] + npc/tex/goa_5_eye2_TA_tex_txt: + addrs: [0x808780A0, 0x808781A0] + npc/tex/goa_5_eye3_TA_tex_txt: + addrs: [0x808781A0, 0x808782A0] + npc/tex/goa_5_eye4_TA_tex_txt: + addrs: [0x808782A0, 0x808783A0] + npc/tex/goa_5_eye5_TA_tex_txt: + addrs: [0x808783A0, 0x808784A0] + npc/tex/goa_5_eye6_TA_tex_txt: + addrs: [0x808784A0, 0x808785A0] + npc/tex/goa_5_eye7_TA_tex_txt: + addrs: [0x808785A0, 0x808786A0] + npc/tex/goa_5_eye8_TA_tex_txt: + addrs: [0x808786A0, 0x808787A0] + npc/tex/goa_5_mouth1_TA_tex_txt: + addrs: [0x808787A0, 0x808788A0] + npc/tex/goa_5_mouth2_TA_tex_txt: + addrs: [0x808788A0, 0x808789A0] + npc/tex/goa_5_mouth3_TA_tex_txt: + addrs: [0x808789A0, 0x80878AA0] + npc/tex/goa_5_mouth4_TA_tex_txt: + addrs: [0x80878AA0, 0x80878BA0] + npc/tex/goa_5_mouth5_TA_tex_txt: + addrs: [0x80878BA0, 0x80878CA0] + npc/tex/goa_5_mouth6_TA_tex_txt: + addrs: [0x80878CA0, 0x80878DA0] + npc/tex/goa_5_tmem_txt: + addrs: [0x80878DA0, 0x808791A0] + npc/tex/goa_6_pal: + addrs: [0x808791A0, 0x808791C0] + type: pal16 + npc/tex/goa_6_eye1_TA_tex_txt: + addrs: [0x808791C0, 0x808792C0] + npc/tex/goa_6_eye2_TA_tex_txt: + addrs: [0x808792C0, 0x808793C0] + npc/tex/goa_6_eye3_TA_tex_txt: + addrs: [0x808793C0, 0x808794C0] + npc/tex/goa_6_eye4_TA_tex_txt: + addrs: [0x808794C0, 0x808795C0] + npc/tex/goa_6_eye5_TA_tex_txt: + addrs: [0x808795C0, 0x808796C0] + npc/tex/goa_6_eye6_TA_tex_txt: + addrs: [0x808796C0, 0x808797C0] + npc/tex/goa_6_eye7_TA_tex_txt: + addrs: [0x808797C0, 0x808798C0] + npc/tex/goa_6_eye8_TA_tex_txt: + addrs: [0x808798C0, 0x808799C0] + npc/tex/goa_6_mouth1_TA_tex_txt: + addrs: [0x808799C0, 0x80879AC0] + npc/tex/goa_6_mouth2_TA_tex_txt: + addrs: [0x80879AC0, 0x80879BC0] + npc/tex/goa_6_mouth3_TA_tex_txt: + addrs: [0x80879BC0, 0x80879CC0] + npc/tex/goa_6_mouth4_TA_tex_txt: + addrs: [0x80879CC0, 0x80879DC0] + npc/tex/goa_6_mouth5_TA_tex_txt: + addrs: [0x80879DC0, 0x80879EC0] + npc/tex/goa_6_mouth6_TA_tex_txt: + addrs: [0x80879EC0, 0x80879FC0] + npc/tex/goa_6_tmem_txt: + addrs: [0x80879FC0, 0x8087A3C0] + npc/mdl/gor_1_v: + addrs: [0x8087A3C0, 0x8087BE90] + type: vtx + npc/tex/gor_1_pal: + addrs: [0x8087C960, 0x8087C980] + type: pal16 + npc/tex/gor_1_eye1_TA_tex_txt: + addrs: [0x8087C980, 0x8087CA80] + npc/tex/gor_1_eye2_TA_tex_txt: + addrs: [0x8087CA80, 0x8087CB80] + npc/tex/gor_1_eye3_TA_tex_txt: + addrs: [0x8087CB80, 0x8087CC80] + npc/tex/gor_1_eye4_TA_tex_txt: + addrs: [0x8087CC80, 0x8087CD80] + npc/tex/gor_1_eye5_TA_tex_txt: + addrs: [0x8087CD80, 0x8087CE80] + npc/tex/gor_1_eye6_TA_tex_txt: + addrs: [0x8087CE80, 0x8087CF80] + npc/tex/gor_1_eye7_TA_tex_txt: + addrs: [0x8087CF80, 0x8087D080] + npc/tex/gor_1_eye8_TA_tex_txt: + addrs: [0x8087D080, 0x8087D180] + npc/tex/gor_1_mouth1_TA_tex_txt: + addrs: [0x8087D180, 0x8087D280] + npc/tex/gor_1_mouth2_TA_tex_txt: + addrs: [0x8087D280, 0x8087D380] + npc/tex/gor_1_mouth3_TA_tex_txt: + addrs: [0x8087D380, 0x8087D480] + npc/tex/gor_1_mouth4_TA_tex_txt: + addrs: [0x8087D480, 0x8087D580] + npc/tex/gor_1_mouth5_TA_tex_txt: + addrs: [0x8087D580, 0x8087D680] + npc/tex/gor_1_mouth6_TA_tex_txt: + addrs: [0x8087D680, 0x8087D780] + npc/tex/gor_1_tmem_txt: + addrs: [0x8087D780, 0x8087DB80] + npc/tex/gor_2_pal: + addrs: [0x8087DB80, 0x8087DBA0] + type: pal16 + npc/tex/gor_2_eye1_TA_tex_txt: + addrs: [0x8087DBA0, 0x8087DCA0] + npc/tex/gor_2_eye2_TA_tex_txt: + addrs: [0x8087DCA0, 0x8087DDA0] + npc/tex/gor_2_eye3_TA_tex_txt: + addrs: [0x8087DDA0, 0x8087DEA0] + npc/tex/gor_2_eye4_TA_tex_txt: + addrs: [0x8087DEA0, 0x8087DFA0] + npc/tex/gor_2_eye5_TA_tex_txt: + addrs: [0x8087DFA0, 0x8087E0A0] + npc/tex/gor_2_eye6_TA_tex_txt: + addrs: [0x8087E0A0, 0x8087E1A0] + npc/tex/gor_2_eye7_TA_tex_txt: + addrs: [0x8087E1A0, 0x8087E2A0] + npc/tex/gor_2_eye8_TA_tex_txt: + addrs: [0x8087E2A0, 0x8087E3A0] + npc/tex/gor_2_mouth1_TA_tex_txt: + addrs: [0x8087E3A0, 0x8087E4A0] + npc/tex/gor_2_mouth2_TA_tex_txt: + addrs: [0x8087E4A0, 0x8087E5A0] + npc/tex/gor_2_mouth3_TA_tex_txt: + addrs: [0x8087E5A0, 0x8087E6A0] + npc/tex/gor_2_mouth4_TA_tex_txt: + addrs: [0x8087E6A0, 0x8087E7A0] + npc/tex/gor_2_mouth5_TA_tex_txt: + addrs: [0x8087E7A0, 0x8087E8A0] + npc/tex/gor_2_mouth6_TA_tex_txt: + addrs: [0x8087E8A0, 0x8087E9A0] + npc/tex/gor_2_tmem_txt: + addrs: [0x8087E9A0, 0x8087EDA0] + npc/tex/gor_3_pal: + addrs: [0x8087EDA0, 0x8087EDC0] + type: pal16 + npc/tex/gor_3_eye1_TA_tex_txt: + addrs: [0x8087EDC0, 0x8087EEC0] + npc/tex/gor_3_eye2_TA_tex_txt: + addrs: [0x8087EEC0, 0x8087EFC0] + npc/tex/gor_3_eye3_TA_tex_txt: + addrs: [0x8087EFC0, 0x8087F0C0] + npc/tex/gor_3_eye4_TA_tex_txt: + addrs: [0x8087F0C0, 0x8087F1C0] + npc/tex/gor_3_eye5_TA_tex_txt: + addrs: [0x8087F1C0, 0x8087F2C0] + npc/tex/gor_3_eye6_TA_tex_txt: + addrs: [0x8087F2C0, 0x8087F3C0] + npc/tex/gor_3_eye7_TA_tex_txt: + addrs: [0x8087F3C0, 0x8087F4C0] + npc/tex/gor_3_eye8_TA_tex_txt: + addrs: [0x8087F4C0, 0x8087F5C0] + npc/tex/gor_3_mouth1_TA_tex_txt: + addrs: [0x8087F5C0, 0x8087F6C0] + npc/tex/gor_3_mouth2_TA_tex_txt: + addrs: [0x8087F6C0, 0x8087F7C0] + npc/tex/gor_3_mouth3_TA_tex_txt: + addrs: [0x8087F7C0, 0x8087F8C0] + npc/tex/gor_3_mouth4_TA_tex_txt: + addrs: [0x8087F8C0, 0x8087F9C0] + npc/tex/gor_3_mouth5_TA_tex_txt: + addrs: [0x8087F9C0, 0x8087FAC0] + npc/tex/gor_3_mouth6_TA_tex_txt: + addrs: [0x8087FAC0, 0x8087FBC0] + npc/tex/gor_3_tmem_txt: + addrs: [0x8087FBC0, 0x8087FFC0] + npc/tex/gor_4_pal: + addrs: [0x8087FFC0, 0x8087FFE0] + type: pal16 + npc/tex/gor_4_eye1_TA_tex_txt: + addrs: [0x8087FFE0, 0x808800E0] + npc/tex/gor_4_eye2_TA_tex_txt: + addrs: [0x808800E0, 0x808801E0] + npc/tex/gor_4_eye3_TA_tex_txt: + addrs: [0x808801E0, 0x808802E0] + npc/tex/gor_4_eye4_TA_tex_txt: + addrs: [0x808802E0, 0x808803E0] + npc/tex/gor_4_eye5_TA_tex_txt: + addrs: [0x808803E0, 0x808804E0] + npc/tex/gor_4_eye6_TA_tex_txt: + addrs: [0x808804E0, 0x808805E0] + npc/tex/gor_4_eye7_TA_tex_txt: + addrs: [0x808805E0, 0x808806E0] + npc/tex/gor_4_eye8_TA_tex_txt: + addrs: [0x808806E0, 0x808807E0] + npc/tex/gor_4_mouth1_TA_tex_txt: + addrs: [0x808807E0, 0x808808E0] + npc/tex/gor_4_mouth2_TA_tex_txt: + addrs: [0x808808E0, 0x808809E0] + npc/tex/gor_4_mouth3_TA_tex_txt: + addrs: [0x808809E0, 0x80880AE0] + npc/tex/gor_4_mouth4_TA_tex_txt: + addrs: [0x80880AE0, 0x80880BE0] + npc/tex/gor_4_mouth5_TA_tex_txt: + addrs: [0x80880BE0, 0x80880CE0] + npc/tex/gor_4_mouth6_TA_tex_txt: + addrs: [0x80880CE0, 0x80880DE0] + npc/tex/gor_4_tmem_txt: + addrs: [0x80880DE0, 0x808811E0] + npc/tex/gor_5_pal: + addrs: [0x808811E0, 0x80881200] + type: pal16 + npc/tex/gor_5_eye1_TA_tex_txt: + addrs: [0x80881200, 0x80881300] + npc/tex/gor_5_eye2_TA_tex_txt: + addrs: [0x80881300, 0x80881400] + npc/tex/gor_5_eye3_TA_tex_txt: + addrs: [0x80881400, 0x80881500] + npc/tex/gor_5_eye4_TA_tex_txt: + addrs: [0x80881500, 0x80881600] + npc/tex/gor_5_eye5_TA_tex_txt: + addrs: [0x80881600, 0x80881700] + npc/tex/gor_5_eye6_TA_tex_txt: + addrs: [0x80881700, 0x80881800] + npc/tex/gor_5_eye7_TA_tex_txt: + addrs: [0x80881800, 0x80881900] + npc/tex/gor_5_eye8_TA_tex_txt: + addrs: [0x80881900, 0x80881A00] + npc/tex/gor_5_mouth1_TA_tex_txt: + addrs: [0x80881A00, 0x80881B00] + npc/tex/gor_5_mouth2_TA_tex_txt: + addrs: [0x80881B00, 0x80881C00] + npc/tex/gor_5_mouth3_TA_tex_txt: + addrs: [0x80881C00, 0x80881D00] + npc/tex/gor_5_mouth4_TA_tex_txt: + addrs: [0x80881D00, 0x80881E00] + npc/tex/gor_5_mouth5_TA_tex_txt: + addrs: [0x80881E00, 0x80881F00] + npc/tex/gor_5_mouth6_TA_tex_txt: + addrs: [0x80881F00, 0x80882000] + npc/tex/gor_5_tmem_txt: + addrs: [0x80882000, 0x80882400] + npc/mdl/xct_1_v: + addrs: [0x80882400, 0x808837B0] + type: vtx + npc/tex/xct_1_pal: + addrs: [0x80884080, 0x808840A0] + type: pal16 + npc/tex/xct_1_eye1_TA_tex_txt: + addrs: [0x808840A0, 0x808841A0] + npc/tex/xct_1_eye2_TA_tex_txt: + addrs: [0x808841A0, 0x808842A0] + npc/tex/xct_1_eye3_TA_tex_txt: + addrs: [0x808842A0, 0x808843A0] + npc/tex/xct_1_eye4_TA_tex_txt: + addrs: [0x808843A0, 0x808844A0] + npc/tex/xct_1_eye5_TA_tex_txt: + addrs: [0x808844A0, 0x808845A0] + npc/tex/xct_1_eye6_TA_tex_txt: + addrs: [0x808845A0, 0x808846A0] + npc/tex/xct_1_eye7_TA_tex_txt: + addrs: [0x808846A0, 0x808847A0] + npc/tex/xct_1_eye8_TA_tex_txt: + addrs: [0x808847A0, 0x808848A0] + npc/tex/xct_1_mouth1_TA_tex_txt: + addrs: [0x808848A0, 0x808849A0] + npc/tex/xct_1_mouth2_TA_tex_txt: + addrs: [0x808849A0, 0x80884AA0] + npc/tex/xct_1_mouth3_TA_tex_txt: + addrs: [0x80884AA0, 0x80884BA0] + npc/tex/xct_1_mouth4_TA_tex_txt: + addrs: [0x80884BA0, 0x80884CA0] + npc/tex/xct_1_mouth5_TA_tex_txt: + addrs: [0x80884CA0, 0x80884DA0] + npc/tex/xct_1_mouth6_TA_tex_txt: + addrs: [0x80884DA0, 0x80884EA0] + npc/tex/xct_1_tmem_txt: + addrs: [0x80884EA0, 0x80885420] + npc/mdl/bpt_1_v: + addrs: [0x80894928, 0x80896008] + type: vtx + npc/tex/bpt_1_pal: + addrs: [0x80896A80, 0x80896AA0] + type: pal16 + npc/tex/bpt_1_eye1_TA_tex_txt: + addrs: [0x80896AA0, 0x80896BA0] + npc/tex/bpt_1_eye2_TA_tex_txt: + addrs: [0x80896BA0, 0x80896CA0] + npc/tex/bpt_1_eye3_TA_tex_txt: + addrs: [0x80896CA0, 0x80896DA0] + npc/tex/bpt_1_eye4_TA_tex_txt: + addrs: [0x80896DA0, 0x80896EA0] + npc/tex/bpt_1_eye5_TA_tex_txt: + addrs: [0x80896EA0, 0x80896FA0] + npc/tex/bpt_1_eye6_TA_tex_txt: + addrs: [0x80896FA0, 0x808970A0] + npc/tex/bpt_1_eye7_TA_tex_txt: + addrs: [0x808970A0, 0x808971A0] + npc/tex/bpt_1_eye8_TA_tex_txt: + addrs: [0x808971A0, 0x808972A0] + npc/tex/bpt_1_tmem_txt: + addrs: [0x808972A0, 0x808979A0] + npc/mdl/pkn_1_v: + addrs: [0x808979A0, 0x80898BA0] + type: vtx + npc/tex/pkn_1_pal: + addrs: [0x808993E0, 0x80899400] + type: pal16 + npc/tex/pkn_1_tmem_txt: + addrs: [0x80899400, 0x80899A80] + npc/mdl/hem_1_v: + addrs: [0x8089BA80, 0x8089CF50] + type: vtx + npc/tex/hem_1_pal: + addrs: [0x8089D6E0, 0x8089D700] + type: pal16 + npc/tex/hem_1_tmem_txt: + addrs: [0x8089D700, 0x8089DE40] + npc/mdl/hip_1_v: + addrs: [0x8089DE40, 0x8089FAA0] + type: vtx + npc/tex/hip_1_pal: + addrs: [0x808A0560, 0x808A0580] + type: pal16 + npc/tex/hip_1_eye1_TA_tex_txt: + addrs: [0x808A0580, 0x808A0680] + npc/tex/hip_1_eye2_TA_tex_txt: + addrs: [0x808A0680, 0x808A0780] + npc/tex/hip_1_eye3_TA_tex_txt: + addrs: [0x808A0780, 0x808A0880] + npc/tex/hip_1_eye4_TA_tex_txt: + addrs: [0x808A0880, 0x808A0980] + npc/tex/hip_1_eye5_TA_tex_txt: + addrs: [0x808A0980, 0x808A0A80] + npc/tex/hip_1_eye6_TA_tex_txt: + addrs: [0x808A0A80, 0x808A0B80] + npc/tex/hip_1_eye7_TA_tex_txt: + addrs: [0x808A0B80, 0x808A0C80] + npc/tex/hip_1_eye8_TA_tex_txt: + addrs: [0x808A0C80, 0x808A0D80] + npc/tex/hip_1_tmem_txt: + addrs: [0x808A0D80, 0x808A1280] + npc/tex/hip_2_pal: + addrs: [0x808A1280, 0x808A12A0] + type: pal16 + npc/tex/hip_2_eye1_TA_tex_txt: + addrs: [0x808A12A0, 0x808A13A0] + npc/tex/hip_2_eye2_TA_tex_txt: + addrs: [0x808A13A0, 0x808A14A0] + npc/tex/hip_2_eye3_TA_tex_txt: + addrs: [0x808A14A0, 0x808A15A0] + npc/tex/hip_2_eye4_TA_tex_txt: + addrs: [0x808A15A0, 0x808A16A0] + npc/tex/hip_2_eye5_TA_tex_txt: + addrs: [0x808A16A0, 0x808A17A0] + npc/tex/hip_2_eye6_TA_tex_txt: + addrs: [0x808A17A0, 0x808A18A0] + npc/tex/hip_2_eye7_TA_tex_txt: + addrs: [0x808A18A0, 0x808A19A0] + npc/tex/hip_2_eye8_TA_tex_txt: + addrs: [0x808A19A0, 0x808A1AA0] + npc/tex/hip_2_tmem_txt: + addrs: [0x808A1AA0, 0x808A1FA0] + npc/tex/hip_3_pal: + addrs: [0x808A1FA0, 0x808A1FC0] + type: pal16 + npc/tex/hip_3_eye1_TA_tex_txt: + addrs: [0x808A1FC0, 0x808A20C0] + npc/tex/hip_3_eye2_TA_tex_txt: + addrs: [0x808A20C0, 0x808A21C0] + npc/tex/hip_3_eye3_TA_tex_txt: + addrs: [0x808A21C0, 0x808A22C0] + npc/tex/hip_3_eye4_TA_tex_txt: + addrs: [0x808A22C0, 0x808A23C0] + npc/tex/hip_3_eye5_TA_tex_txt: + addrs: [0x808A23C0, 0x808A24C0] + npc/tex/hip_3_eye6_TA_tex_txt: + addrs: [0x808A24C0, 0x808A25C0] + npc/tex/hip_3_eye7_TA_tex_txt: + addrs: [0x808A25C0, 0x808A26C0] + npc/tex/hip_3_eye8_TA_tex_txt: + addrs: [0x808A26C0, 0x808A27C0] + npc/tex/hip_3_tmem_txt: + addrs: [0x808A27C0, 0x808A2CC0] + npc/tex/hip_4_pal: + addrs: [0x808A2CC0, 0x808A2CE0] + type: pal16 + npc/tex/hip_4_eye1_TA_tex_txt: + addrs: [0x808A2CE0, 0x808A2DE0] + npc/tex/hip_4_eye2_TA_tex_txt: + addrs: [0x808A2DE0, 0x808A2EE0] + npc/tex/hip_4_eye3_TA_tex_txt: + addrs: [0x808A2EE0, 0x808A2FE0] + npc/tex/hip_4_eye4_TA_tex_txt: + addrs: [0x808A2FE0, 0x808A30E0] + npc/tex/hip_4_eye5_TA_tex_txt: + addrs: [0x808A30E0, 0x808A31E0] + npc/tex/hip_4_eye6_TA_tex_txt: + addrs: [0x808A31E0, 0x808A32E0] + npc/tex/hip_4_eye7_TA_tex_txt: + addrs: [0x808A32E0, 0x808A33E0] + npc/tex/hip_4_eye8_TA_tex_txt: + addrs: [0x808A33E0, 0x808A34E0] + npc/tex/hip_4_tmem_txt: + addrs: [0x808A34E0, 0x808A39E0] + npc/tex/hip_5_pal: + addrs: [0x808A39E0, 0x808A3A00] + type: pal16 + npc/tex/hip_5_eye1_TA_tex_txt: + addrs: [0x808A3A00, 0x808A3B00] + npc/tex/hip_5_eye2_TA_tex_txt: + addrs: [0x808A3B00, 0x808A3C00] + npc/tex/hip_5_eye3_TA_tex_txt: + addrs: [0x808A3C00, 0x808A3D00] + npc/tex/hip_5_eye4_TA_tex_txt: + addrs: [0x808A3D00, 0x808A3E00] + npc/tex/hip_5_eye5_TA_tex_txt: + addrs: [0x808A3E00, 0x808A3F00] + npc/tex/hip_5_eye6_TA_tex_txt: + addrs: [0x808A3F00, 0x808A4000] + npc/tex/hip_5_eye7_TA_tex_txt: + addrs: [0x808A4000, 0x808A4100] + npc/tex/hip_5_eye8_TA_tex_txt: + addrs: [0x808A4100, 0x808A4200] + npc/tex/hip_5_tmem_txt: + addrs: [0x808A4200, 0x808A4700] + npc/tex/hip_6_pal: + addrs: [0x808A4700, 0x808A4720] + type: pal16 + npc/tex/hip_6_eye1_TA_tex_txt: + addrs: [0x808A4720, 0x808A4820] + npc/tex/hip_6_eye2_TA_tex_txt: + addrs: [0x808A4820, 0x808A4920] + npc/tex/hip_6_eye3_TA_tex_txt: + addrs: [0x808A4920, 0x808A4A20] + npc/tex/hip_6_eye4_TA_tex_txt: + addrs: [0x808A4A20, 0x808A4B20] + npc/tex/hip_6_eye5_TA_tex_txt: + addrs: [0x808A4B20, 0x808A4C20] + npc/tex/hip_6_eye6_TA_tex_txt: + addrs: [0x808A4C20, 0x808A4D20] + npc/tex/hip_6_eye7_TA_tex_txt: + addrs: [0x808A4D20, 0x808A4E20] + npc/tex/hip_6_eye8_TA_tex_txt: + addrs: [0x808A4E20, 0x808A4F20] + npc/tex/hip_6_tmem_txt: + addrs: [0x808A4F20, 0x808A5420] + npc/tex/hip_7_pal: + addrs: [0x808A5420, 0x808A5440] + type: pal16 + npc/tex/hip_7_eye1_TA_tex_txt: + addrs: [0x808A5440, 0x808A5540] + npc/tex/hip_7_eye2_TA_tex_txt: + addrs: [0x808A5540, 0x808A5640] + npc/tex/hip_7_eye3_TA_tex_txt: + addrs: [0x808A5640, 0x808A5740] + npc/tex/hip_7_eye4_TA_tex_txt: + addrs: [0x808A5740, 0x808A5840] + npc/tex/hip_7_eye5_TA_tex_txt: + addrs: [0x808A5840, 0x808A5940] + npc/tex/hip_7_eye6_TA_tex_txt: + addrs: [0x808A5940, 0x808A5A40] + npc/tex/hip_7_eye7_TA_tex_txt: + addrs: [0x808A5A40, 0x808A5B40] + npc/tex/hip_7_eye8_TA_tex_txt: + addrs: [0x808A5B40, 0x808A5C40] + npc/tex/hip_7_tmem_txt: + addrs: [0x808A5C40, 0x808A6140] + npc/mdl/hrs_1_v: + addrs: [0x808A6140, 0x808A7A70] + type: vtx + npc/tex/hrs_1_pal: + addrs: [0x808A8520, 0x808A8540] + type: pal16 + npc/tex/hrs_1_eye1_TA_tex_txt: + addrs: [0x808A8540, 0x808A8640] + npc/tex/hrs_1_eye2_TA_tex_txt: + addrs: [0x808A8640, 0x808A8740] + npc/tex/hrs_1_eye3_TA_tex_txt: + addrs: [0x808A8740, 0x808A8840] + npc/tex/hrs_1_eye4_TA_tex_txt: + addrs: [0x808A8840, 0x808A8940] + npc/tex/hrs_1_eye5_TA_tex_txt: + addrs: [0x808A8940, 0x808A8A40] + npc/tex/hrs_1_eye6_TA_tex_txt: + addrs: [0x808A8A40, 0x808A8B40] + npc/tex/hrs_1_eye7_TA_tex_txt: + addrs: [0x808A8B40, 0x808A8C40] + npc/tex/hrs_1_eye8_TA_tex_txt: + addrs: [0x808A8C40, 0x808A8D40] + npc/tex/hrs_1_tmem_txt: + addrs: [0x808A8D40, 0x808A92C0] + npc/tex/hrs_2_pal: + addrs: [0x808A92C0, 0x808A92E0] + type: pal16 + npc/tex/hrs_2_eye1_TA_tex_txt: + addrs: [0x808A92E0, 0x808A93E0] + npc/tex/hrs_2_eye2_TA_tex_txt: + addrs: [0x808A93E0, 0x808A94E0] + npc/tex/hrs_2_eye3_TA_tex_txt: + addrs: [0x808A94E0, 0x808A95E0] + npc/tex/hrs_2_eye4_TA_tex_txt: + addrs: [0x808A95E0, 0x808A96E0] + npc/tex/hrs_2_eye5_TA_tex_txt: + addrs: [0x808A96E0, 0x808A97E0] + npc/tex/hrs_2_eye6_TA_tex_txt: + addrs: [0x808A97E0, 0x808A98E0] + npc/tex/hrs_2_eye7_TA_tex_txt: + addrs: [0x808A98E0, 0x808A99E0] + npc/tex/hrs_2_eye8_TA_tex_txt: + addrs: [0x808A99E0, 0x808A9AE0] + npc/tex/hrs_2_tmem_txt: + addrs: [0x808A9AE0, 0x808AA060] + npc/tex/hrs_3_pal: + addrs: [0x808AA060, 0x808AA080] + type: pal16 + npc/tex/hrs_3_eye1_TA_tex_txt: + addrs: [0x808AA080, 0x808AA180] + npc/tex/hrs_3_eye2_TA_tex_txt: + addrs: [0x808AA180, 0x808AA280] + npc/tex/hrs_3_eye3_TA_tex_txt: + addrs: [0x808AA280, 0x808AA380] + npc/tex/hrs_3_eye4_TA_tex_txt: + addrs: [0x808AA380, 0x808AA480] + npc/tex/hrs_3_eye5_TA_tex_txt: + addrs: [0x808AA480, 0x808AA580] + npc/tex/hrs_3_eye6_TA_tex_txt: + addrs: [0x808AA580, 0x808AA680] + npc/tex/hrs_3_eye7_TA_tex_txt: + addrs: [0x808AA680, 0x808AA780] + npc/tex/hrs_3_eye8_TA_tex_txt: + addrs: [0x808AA780, 0x808AA880] + npc/tex/hrs_3_tmem_txt: + addrs: [0x808AA880, 0x808AAE00] + npc/tex/hrs_4_pal: + addrs: [0x808AAE00, 0x808AAE20] + type: pal16 + npc/tex/hrs_4_eye1_TA_tex_txt: + addrs: [0x808AAE20, 0x808AAF20] + npc/tex/hrs_4_eye2_TA_tex_txt: + addrs: [0x808AAF20, 0x808AB020] + npc/tex/hrs_4_eye3_TA_tex_txt: + addrs: [0x808AB020, 0x808AB120] + npc/tex/hrs_4_eye4_TA_tex_txt: + addrs: [0x808AB120, 0x808AB220] + npc/tex/hrs_4_eye5_TA_tex_txt: + addrs: [0x808AB220, 0x808AB320] + npc/tex/hrs_4_eye6_TA_tex_txt: + addrs: [0x808AB320, 0x808AB420] + npc/tex/hrs_4_eye7_TA_tex_txt: + addrs: [0x808AB420, 0x808AB520] + npc/tex/hrs_4_eye8_TA_tex_txt: + addrs: [0x808AB520, 0x808AB620] + npc/tex/hrs_4_tmem_txt: + addrs: [0x808AB620, 0x808ABBA0] + npc/tex/hrs_5_pal: + addrs: [0x808ABBA0, 0x808ABBC0] + type: pal16 + npc/tex/hrs_5_eye1_TA_tex_txt: + addrs: [0x808ABBC0, 0x808ABCC0] + npc/tex/hrs_5_eye2_TA_tex_txt: + addrs: [0x808ABCC0, 0x808ABDC0] + npc/tex/hrs_5_eye3_TA_tex_txt: + addrs: [0x808ABDC0, 0x808ABEC0] + npc/tex/hrs_5_eye4_TA_tex_txt: + addrs: [0x808ABEC0, 0x808ABFC0] + npc/tex/hrs_5_eye5_TA_tex_txt: + addrs: [0x808ABFC0, 0x808AC0C0] + npc/tex/hrs_5_eye6_TA_tex_txt: + addrs: [0x808AC0C0, 0x808AC1C0] + npc/tex/hrs_5_eye7_TA_tex_txt: + addrs: [0x808AC1C0, 0x808AC2C0] + npc/tex/hrs_5_eye8_TA_tex_txt: + addrs: [0x808AC2C0, 0x808AC3C0] + npc/tex/hrs_5_tmem_txt: + addrs: [0x808AC3C0, 0x808AC940] + npc/tex/hrs_6_pal: + addrs: [0x808AC940, 0x808AC960] + type: pal16 + npc/tex/hrs_6_eye1_TA_tex_txt: + addrs: [0x808AC960, 0x808ACA60] + npc/tex/hrs_6_eye2_TA_tex_txt: + addrs: [0x808ACA60, 0x808ACB60] + npc/tex/hrs_6_eye3_TA_tex_txt: + addrs: [0x808ACB60, 0x808ACC60] + npc/tex/hrs_6_eye4_TA_tex_txt: + addrs: [0x808ACC60, 0x808ACD60] + npc/tex/hrs_6_eye5_TA_tex_txt: + addrs: [0x808ACD60, 0x808ACE60] + npc/tex/hrs_6_eye6_TA_tex_txt: + addrs: [0x808ACE60, 0x808ACF60] + npc/tex/hrs_6_eye7_TA_tex_txt: + addrs: [0x808ACF60, 0x808AD060] + npc/tex/hrs_6_eye8_TA_tex_txt: + addrs: [0x808AD060, 0x808AD160] + npc/tex/hrs_6_tmem_txt: + addrs: [0x808AD160, 0x808AD6E0] + npc/tex/hrs_7_pal: + addrs: [0x808AD6E0, 0x808AD700] + type: pal16 + npc/tex/hrs_7_eye1_TA_tex_txt: + addrs: [0x808AD700, 0x808AD800] + npc/tex/hrs_7_eye2_TA_tex_txt: + addrs: [0x808AD800, 0x808AD900] + npc/tex/hrs_7_eye3_TA_tex_txt: + addrs: [0x808AD900, 0x808ADA00] + npc/tex/hrs_7_eye4_TA_tex_txt: + addrs: [0x808ADA00, 0x808ADB00] + npc/tex/hrs_7_eye5_TA_tex_txt: + addrs: [0x808ADB00, 0x808ADC00] + npc/tex/hrs_7_eye6_TA_tex_txt: + addrs: [0x808ADC00, 0x808ADD00] + npc/tex/hrs_7_eye7_TA_tex_txt: + addrs: [0x808ADD00, 0x808ADE00] + npc/tex/hrs_7_eye8_TA_tex_txt: + addrs: [0x808ADE00, 0x808ADF00] + npc/tex/hrs_7_tmem_txt: + addrs: [0x808ADF00, 0x808AE480] + npc/tex/hrs_8_pal: + addrs: [0x808AE480, 0x808AE4A0] + type: pal16 + npc/tex/hrs_8_eye1_TA_tex_txt: + addrs: [0x808AE4A0, 0x808AE5A0] + npc/tex/hrs_8_eye2_TA_tex_txt: + addrs: [0x808AE5A0, 0x808AE6A0] + npc/tex/hrs_8_eye3_TA_tex_txt: + addrs: [0x808AE6A0, 0x808AE7A0] + npc/tex/hrs_8_eye4_TA_tex_txt: + addrs: [0x808AE7A0, 0x808AE8A0] + npc/tex/hrs_8_eye5_TA_tex_txt: + addrs: [0x808AE8A0, 0x808AE9A0] + npc/tex/hrs_8_eye6_TA_tex_txt: + addrs: [0x808AE9A0, 0x808AEAA0] + npc/tex/hrs_8_eye7_TA_tex_txt: + addrs: [0x808AEAA0, 0x808AEBA0] + npc/tex/hrs_8_eye8_TA_tex_txt: + addrs: [0x808AEBA0, 0x808AECA0] + npc/tex/hrs_8_tmem_txt: + addrs: [0x808AECA0, 0x808AF220] + npc/mdl/plj_1_v: + addrs: [0x808B8D00, 0x808BA3A0] + type: vtx + npc/tex/plj_1_pal: + addrs: [0x808BAD00, 0x808BAD20] + type: pal16 + npc/tex/plj_1_eye1_TA_tex_txt: + addrs: [0x808BAD20, 0x808BAE20] + npc/tex/plj_1_eye2_TA_tex_txt: + addrs: [0x808BAE20, 0x808BAF20] + npc/tex/plj_1_eye3_TA_tex_txt: + addrs: [0x808BAF20, 0x808BB020] + npc/tex/plj_1_eye4_TA_tex_txt: + addrs: [0x808BB020, 0x808BB120] + npc/tex/plj_1_eye5_TA_tex_txt: + addrs: [0x808BB120, 0x808BB220] + npc/tex/plj_1_eye6_TA_tex_txt: + addrs: [0x808BB220, 0x808BB320] + npc/tex/plj_1_eye7_TA_tex_txt: + addrs: [0x808BB320, 0x808BB420] + npc/tex/plj_1_eye8_TA_tex_txt: + addrs: [0x808BB420, 0x808BB520] + npc/tex/plj_1_mouth1_TA_tex_txt: + addrs: [0x808BB520, 0x808BB620] + npc/tex/plj_1_mouth2_TA_tex_txt: + addrs: [0x808BB620, 0x808BB720] + npc/tex/plj_1_mouth3_TA_tex_txt: + addrs: [0x808BB720, 0x808BB820] + npc/tex/plj_1_mouth4_TA_tex_txt: + addrs: [0x808BB820, 0x808BB920] + npc/tex/plj_1_mouth5_TA_tex_txt: + addrs: [0x808BB920, 0x808BBA20] + npc/tex/plj_1_mouth6_TA_tex_txt: + addrs: [0x808BBA20, 0x808BBB20] + npc/tex/plj_1_tmem_txt: + addrs: [0x808BBB20, 0x808BC1A0] + npc/mdl/xsq_1_v: + addrs: [0x808BC1A0, 0x808BD890] + type: vtx + npc/tex/xsq_1_pal: + addrs: [0x808BE240, 0x808BE260] + type: pal16 + npc/tex/xsq_1_eye1_TA_tex_txt: + addrs: [0x808BE260, 0x808BE360] + npc/tex/xsq_1_eye2_TA_tex_txt: + addrs: [0x808BE360, 0x808BE460] + npc/tex/xsq_1_eye3_TA_tex_txt: + addrs: [0x808BE460, 0x808BE560] + npc/tex/xsq_1_eye4_TA_tex_txt: + addrs: [0x808BE560, 0x808BE660] + npc/tex/xsq_1_eye5_TA_tex_txt: + addrs: [0x808BE660, 0x808BE760] + npc/tex/xsq_1_eye6_TA_tex_txt: + addrs: [0x808BE760, 0x808BE860] + npc/tex/xsq_1_eye7_TA_tex_txt: + addrs: [0x808BE860, 0x808BE960] + npc/tex/xsq_1_eye8_TA_tex_txt: + addrs: [0x808BE960, 0x808BEA60] + npc/tex/xsq_1_mouth1_TA_tex_txt: + addrs: [0x808BEA60, 0x808BEB60] + npc/tex/xsq_1_mouth2_TA_tex_txt: + addrs: [0x808BEB60, 0x808BEC60] + npc/tex/xsq_1_mouth3_TA_tex_txt: + addrs: [0x808BEC60, 0x808BED60] + npc/tex/xsq_1_mouth4_TA_tex_txt: + addrs: [0x808BED60, 0x808BEE60] + npc/tex/xsq_1_mouth5_TA_tex_txt: + addrs: [0x808BEE60, 0x808BEF60] + npc/tex/xsq_1_mouth6_TA_tex_txt: + addrs: [0x808BEF60, 0x808BF060] + npc/tex/xsq_1_tmem_txt: + addrs: [0x808BF060, 0x808BF660] itemName_paper: addrs: [0x808BF660, 0x808C0660] itemName_money: @@ -390,10 +5041,3387 @@ config/rel.yml: addrs: [0x808C3910, 0x808C7910] ftrName2_table: addrs: [0x808C7910, 0x808C8830] + npc/mdl/boa_1_v: + addrs: [0x808C88A8, 0x808CA4F8] + type: vtx + npc/tex/boa_1_pal: + addrs: [0x808CAF60, 0x808CAF80] + type: pal16 + npc/tex/boa_1_eye1_TA_tex_txt: + addrs: [0x808CAF80, 0x808CB080] + npc/tex/boa_1_eye2_TA_tex_txt: + addrs: [0x808CB080, 0x808CB180] + npc/tex/boa_1_eye3_TA_tex_txt: + addrs: [0x808CB180, 0x808CB280] + npc/tex/boa_1_eye4_TA_tex_txt: + addrs: [0x808CB280, 0x808CB380] + npc/tex/boa_1_eye5_TA_tex_txt: + addrs: [0x808CB380, 0x808CB480] + npc/tex/boa_1_eye6_TA_tex_txt: + addrs: [0x808CB480, 0x808CB580] + npc/tex/boa_1_eye7_TA_tex_txt: + addrs: [0x808CB580, 0x808CB680] + npc/tex/boa_1_eye8_TA_tex_txt: + addrs: [0x808CB680, 0x808CB780] + npc/tex/boa_1_tmem_txt: + addrs: [0x808CB780, 0x808CBD40] + npc/mdl/kgr_1_v: + addrs: [0x808CBD40, 0x808CD830] + type: vtx + npc/tex/kgr_1_pal: + addrs: [0x808CE3E0, 0x808CE400] + type: pal16 + npc/tex/kgr_1_eye1_TA_tex_txt: + addrs: [0x808CE400, 0x808CE500] + npc/tex/kgr_1_eye2_TA_tex_txt: + addrs: [0x808CE500, 0x808CE600] + npc/tex/kgr_1_eye3_TA_tex_txt: + addrs: [0x808CE600, 0x808CE700] + npc/tex/kgr_1_eye4_TA_tex_txt: + addrs: [0x808CE700, 0x808CE800] + npc/tex/kgr_1_eye5_TA_tex_txt: + addrs: [0x808CE800, 0x808CE900] + npc/tex/kgr_1_eye6_TA_tex_txt: + addrs: [0x808CE900, 0x808CEA00] + npc/tex/kgr_1_eye7_TA_tex_txt: + addrs: [0x808CEA00, 0x808CEB00] + npc/tex/kgr_1_eye8_TA_tex_txt: + addrs: [0x808CEB00, 0x808CEC00] + npc/tex/kgr_1_tmem_txt: + addrs: [0x808CEC00, 0x808CF040] + npc/tex/kgr_2_pal: + addrs: [0x808CF040, 0x808CF060] + type: pal16 + npc/tex/kgr_2_eye1_TA_tex_txt: + addrs: [0x808CF060, 0x808CF160] + npc/tex/kgr_2_eye2_TA_tex_txt: + addrs: [0x808CF160, 0x808CF260] + npc/tex/kgr_2_eye3_TA_tex_txt: + addrs: [0x808CF260, 0x808CF360] + npc/tex/kgr_2_eye4_TA_tex_txt: + addrs: [0x808CF360, 0x808CF460] + npc/tex/kgr_2_eye5_TA_tex_txt: + addrs: [0x808CF460, 0x808CF560] + npc/tex/kgr_2_eye6_TA_tex_txt: + addrs: [0x808CF560, 0x808CF660] + npc/tex/kgr_2_eye7_TA_tex_txt: + addrs: [0x808CF660, 0x808CF760] + npc/tex/kgr_2_eye8_TA_tex_txt: + addrs: [0x808CF760, 0x808CF860] + npc/tex/kgr_2_tmem_txt: + addrs: [0x808CF860, 0x808CFCA0] + npc/tex/kgr_3_pal: + addrs: [0x808CFCA0, 0x808CFCC0] + type: pal16 + npc/tex/kgr_3_eye1_TA_tex_txt: + addrs: [0x808CFCC0, 0x808CFDC0] + npc/tex/kgr_3_eye2_TA_tex_txt: + addrs: [0x808CFDC0, 0x808CFEC0] + npc/tex/kgr_3_eye3_TA_tex_txt: + addrs: [0x808CFEC0, 0x808CFFC0] + npc/tex/kgr_3_eye4_TA_tex_txt: + addrs: [0x808CFFC0, 0x808D00C0] + npc/tex/kgr_3_eye5_TA_tex_txt: + addrs: [0x808D00C0, 0x808D01C0] + npc/tex/kgr_3_eye6_TA_tex_txt: + addrs: [0x808D01C0, 0x808D02C0] + npc/tex/kgr_3_eye7_TA_tex_txt: + addrs: [0x808D02C0, 0x808D03C0] + npc/tex/kgr_3_eye8_TA_tex_txt: + addrs: [0x808D03C0, 0x808D04C0] + npc/tex/kgr_3_tmem_txt: + addrs: [0x808D04C0, 0x808D0900] + npc/tex/kgr_4_pal: + addrs: [0x808D0900, 0x808D0920] + type: pal16 + npc/tex/kgr_4_eye1_TA_tex_txt: + addrs: [0x808D0920, 0x808D0A20] + npc/tex/kgr_4_eye2_TA_tex_txt: + addrs: [0x808D0A20, 0x808D0B20] + npc/tex/kgr_4_eye3_TA_tex_txt: + addrs: [0x808D0B20, 0x808D0C20] + npc/tex/kgr_4_eye4_TA_tex_txt: + addrs: [0x808D0C20, 0x808D0D20] + npc/tex/kgr_4_eye5_TA_tex_txt: + addrs: [0x808D0D20, 0x808D0E20] + npc/tex/kgr_4_eye6_TA_tex_txt: + addrs: [0x808D0E20, 0x808D0F20] + npc/tex/kgr_4_eye7_TA_tex_txt: + addrs: [0x808D0F20, 0x808D1020] + npc/tex/kgr_4_eye8_TA_tex_txt: + addrs: [0x808D1020, 0x808D1120] + npc/tex/kgr_4_tmem_txt: + addrs: [0x808D1120, 0x808D1560] + npc/tex/kgr_5_pal: + addrs: [0x808D1560, 0x808D1580] + type: pal16 + npc/tex/kgr_5_eye1_TA_tex_txt: + addrs: [0x808D1580, 0x808D1680] + npc/tex/kgr_5_eye2_TA_tex_txt: + addrs: [0x808D1680, 0x808D1780] + npc/tex/kgr_5_eye3_TA_tex_txt: + addrs: [0x808D1780, 0x808D1880] + npc/tex/kgr_5_eye4_TA_tex_txt: + addrs: [0x808D1880, 0x808D1980] + npc/tex/kgr_5_eye5_TA_tex_txt: + addrs: [0x808D1980, 0x808D1A80] + npc/tex/kgr_5_eye6_TA_tex_txt: + addrs: [0x808D1A80, 0x808D1B80] + npc/tex/kgr_5_eye7_TA_tex_txt: + addrs: [0x808D1B80, 0x808D1C80] + npc/tex/kgr_5_eye8_TA_tex_txt: + addrs: [0x808D1C80, 0x808D1D80] + npc/tex/kgr_5_tmem_txt: + addrs: [0x808D1D80, 0x808D21C0] + npc/tex/kgr_6_pal: + addrs: [0x808D21C0, 0x808D21E0] + type: pal16 + npc/tex/kgr_6_eye1_TA_tex_txt: + addrs: [0x808D21E0, 0x808D22E0] + npc/tex/kgr_6_eye2_TA_tex_txt: + addrs: [0x808D22E0, 0x808D23E0] + npc/tex/kgr_6_eye3_TA_tex_txt: + addrs: [0x808D23E0, 0x808D24E0] + npc/tex/kgr_6_eye4_TA_tex_txt: + addrs: [0x808D24E0, 0x808D25E0] + npc/tex/kgr_6_eye5_TA_tex_txt: + addrs: [0x808D25E0, 0x808D26E0] + npc/tex/kgr_6_eye6_TA_tex_txt: + addrs: [0x808D26E0, 0x808D27E0] + npc/tex/kgr_6_eye7_TA_tex_txt: + addrs: [0x808D27E0, 0x808D28E0] + npc/tex/kgr_6_eye8_TA_tex_txt: + addrs: [0x808D28E0, 0x808D29E0] + npc/tex/kgr_6_tmem_txt: + addrs: [0x808D29E0, 0x808D2E20] + npc/mdl/fob_1_v: + addrs: [0x808D2E20, 0x808D4850] + type: vtx + npc/tex/fob_1_pal: + addrs: [0x808D5360, 0x808D5380] + type: pal16 + npc/tex/fob_1_eye1_TA_tex_txt: + addrs: [0x808D5380, 0x808D5480] + npc/tex/fob_1_eye2_TA_tex_txt: + addrs: [0x808D5480, 0x808D5580] + npc/tex/fob_1_eye3_TA_tex_txt: + addrs: [0x808D5580, 0x808D5680] + npc/tex/fob_1_eye4_TA_tex_txt: + addrs: [0x808D5680, 0x808D5780] + npc/tex/fob_1_eye5_TA_tex_txt: + addrs: [0x808D5780, 0x808D5880] + npc/tex/fob_1_eye6_TA_tex_txt: + addrs: [0x808D5880, 0x808D5980] + npc/tex/fob_1_eye7_TA_tex_txt: + addrs: [0x808D5980, 0x808D5A80] + npc/tex/fob_1_eye8_TA_tex_txt: + addrs: [0x808D5A80, 0x808D5B80] + npc/tex/fob_1_tmem_txt: + addrs: [0x808D5B80, 0x808D62C0] + npc/mdl/kal_1_v: + addrs: [0x808D62C0, 0x808D7950] + type: vtx + npc/tex/kal_1_pal: + addrs: [0x808D81E0, 0x808D8200] + type: pal16 + npc/tex/kal_1_eye1_TA_tex_txt: + addrs: [0x808D8200, 0x808D8300] + npc/tex/kal_1_eye2_TA_tex_txt: + addrs: [0x808D8300, 0x808D8400] + npc/tex/kal_1_eye3_TA_tex_txt: + addrs: [0x808D8400, 0x808D8500] + npc/tex/kal_1_eye4_TA_tex_txt: + addrs: [0x808D8500, 0x808D8600] + npc/tex/kal_1_eye5_TA_tex_txt: + addrs: [0x808D8600, 0x808D8700] + npc/tex/kal_1_eye6_TA_tex_txt: + addrs: [0x808D8700, 0x808D8800] + npc/tex/kal_1_eye7_TA_tex_txt: + addrs: [0x808D8800, 0x808D8900] + npc/tex/kal_1_eye8_TA_tex_txt: + addrs: [0x808D8900, 0x808D8A00] + npc/tex/kal_1_mouth1_TA_tex_txt: + addrs: [0x808D8A00, 0x808D8B00] + npc/tex/kal_1_mouth2_TA_tex_txt: + addrs: [0x808D8B00, 0x808D8C00] + npc/tex/kal_1_mouth3_TA_tex_txt: + addrs: [0x808D8C00, 0x808D8D00] + npc/tex/kal_1_mouth4_TA_tex_txt: + addrs: [0x808D8D00, 0x808D8E00] + npc/tex/kal_1_mouth5_TA_tex_txt: + addrs: [0x808D8E00, 0x808D8F00] + npc/tex/kal_1_mouth6_TA_tex_txt: + addrs: [0x808D8F00, 0x808D9000] + npc/tex/kal_1_tmem_txt: + addrs: [0x808D9000, 0x808D9480] + npc/tex/kal_2_pal: + addrs: [0x808D9480, 0x808D94A0] + type: pal16 + npc/tex/kal_2_eye1_TA_tex_txt: + addrs: [0x808D94A0, 0x808D95A0] + npc/tex/kal_2_eye2_TA_tex_txt: + addrs: [0x808D95A0, 0x808D96A0] + npc/tex/kal_2_eye3_TA_tex_txt: + addrs: [0x808D96A0, 0x808D97A0] + npc/tex/kal_2_eye4_TA_tex_txt: + addrs: [0x808D97A0, 0x808D98A0] + npc/tex/kal_2_eye5_TA_tex_txt: + addrs: [0x808D98A0, 0x808D99A0] + npc/tex/kal_2_eye6_TA_tex_txt: + addrs: [0x808D99A0, 0x808D9AA0] + npc/tex/kal_2_eye7_TA_tex_txt: + addrs: [0x808D9AA0, 0x808D9BA0] + npc/tex/kal_2_eye8_TA_tex_txt: + addrs: [0x808D9BA0, 0x808D9CA0] + npc/tex/kal_2_mouth1_TA_tex_txt: + addrs: [0x808D9CA0, 0x808D9DA0] + npc/tex/kal_2_mouth2_TA_tex_txt: + addrs: [0x808D9DA0, 0x808D9EA0] + npc/tex/kal_2_mouth3_TA_tex_txt: + addrs: [0x808D9EA0, 0x808D9FA0] + npc/tex/kal_2_mouth4_TA_tex_txt: + addrs: [0x808D9FA0, 0x808DA0A0] + npc/tex/kal_2_mouth5_TA_tex_txt: + addrs: [0x808DA0A0, 0x808DA1A0] + npc/tex/kal_2_mouth6_TA_tex_txt: + addrs: [0x808DA1A0, 0x808DA2A0] + npc/tex/kal_2_tmem_txt: + addrs: [0x808DA2A0, 0x808DA720] + npc/tex/kal_3_pal: + addrs: [0x808DA720, 0x808DA740] + type: pal16 + npc/tex/kal_3_eye1_TA_tex_txt: + addrs: [0x808DA740, 0x808DA840] + npc/tex/kal_3_eye2_TA_tex_txt: + addrs: [0x808DA840, 0x808DA940] + npc/tex/kal_3_eye3_TA_tex_txt: + addrs: [0x808DA940, 0x808DAA40] + npc/tex/kal_3_eye4_TA_tex_txt: + addrs: [0x808DAA40, 0x808DAB40] + npc/tex/kal_3_eye5_TA_tex_txt: + addrs: [0x808DAB40, 0x808DAC40] + npc/tex/kal_3_eye6_TA_tex_txt: + addrs: [0x808DAC40, 0x808DAD40] + npc/tex/kal_3_eye7_TA_tex_txt: + addrs: [0x808DAD40, 0x808DAE40] + npc/tex/kal_3_eye8_TA_tex_txt: + addrs: [0x808DAE40, 0x808DAF40] + npc/tex/kal_3_mouth1_TA_tex_txt: + addrs: [0x808DAF40, 0x808DB040] + npc/tex/kal_3_mouth2_TA_tex_txt: + addrs: [0x808DB040, 0x808DB140] + npc/tex/kal_3_mouth3_TA_tex_txt: + addrs: [0x808DB140, 0x808DB240] + npc/tex/kal_3_mouth4_TA_tex_txt: + addrs: [0x808DB240, 0x808DB340] + npc/tex/kal_3_mouth5_TA_tex_txt: + addrs: [0x808DB340, 0x808DB440] + npc/tex/kal_3_mouth6_TA_tex_txt: + addrs: [0x808DB440, 0x808DB540] + npc/tex/kal_3_tmem_txt: + addrs: [0x808DB540, 0x808DB9C0] + npc/tex/kal_4_pal: + addrs: [0x808DB9C0, 0x808DB9E0] + type: pal16 + npc/tex/kal_4_eye1_TA_tex_txt: + addrs: [0x808DB9E0, 0x808DBAE0] + npc/tex/kal_4_eye2_TA_tex_txt: + addrs: [0x808DBAE0, 0x808DBBE0] + npc/tex/kal_4_eye3_TA_tex_txt: + addrs: [0x808DBBE0, 0x808DBCE0] + npc/tex/kal_4_eye4_TA_tex_txt: + addrs: [0x808DBCE0, 0x808DBDE0] + npc/tex/kal_4_eye5_TA_tex_txt: + addrs: [0x808DBDE0, 0x808DBEE0] + npc/tex/kal_4_eye6_TA_tex_txt: + addrs: [0x808DBEE0, 0x808DBFE0] + npc/tex/kal_4_eye7_TA_tex_txt: + addrs: [0x808DBFE0, 0x808DC0E0] + npc/tex/kal_4_eye8_TA_tex_txt: + addrs: [0x808DC0E0, 0x808DC1E0] + npc/tex/kal_4_mouth1_TA_tex_txt: + addrs: [0x808DC1E0, 0x808DC2E0] + npc/tex/kal_4_mouth2_TA_tex_txt: + addrs: [0x808DC2E0, 0x808DC3E0] + npc/tex/kal_4_mouth3_TA_tex_txt: + addrs: [0x808DC3E0, 0x808DC4E0] + npc/tex/kal_4_mouth4_TA_tex_txt: + addrs: [0x808DC4E0, 0x808DC5E0] + npc/tex/kal_4_mouth5_TA_tex_txt: + addrs: [0x808DC5E0, 0x808DC6E0] + npc/tex/kal_4_mouth6_TA_tex_txt: + addrs: [0x808DC6E0, 0x808DC7E0] + npc/tex/kal_4_tmem_txt: + addrs: [0x808DC7E0, 0x808DCC60] + npc/tex/kal_5_pal: + addrs: [0x808DCC60, 0x808DCC80] + type: pal16 + npc/tex/kal_5_eye1_TA_tex_txt: + addrs: [0x808DCC80, 0x808DCD80] + npc/tex/kal_5_eye2_TA_tex_txt: + addrs: [0x808DCD80, 0x808DCE80] + npc/tex/kal_5_eye3_TA_tex_txt: + addrs: [0x808DCE80, 0x808DCF80] + npc/tex/kal_5_eye4_TA_tex_txt: + addrs: [0x808DCF80, 0x808DD080] + npc/tex/kal_5_eye5_TA_tex_txt: + addrs: [0x808DD080, 0x808DD180] + npc/tex/kal_5_eye6_TA_tex_txt: + addrs: [0x808DD180, 0x808DD280] + npc/tex/kal_5_eye7_TA_tex_txt: + addrs: [0x808DD280, 0x808DD380] + npc/tex/kal_5_eye8_TA_tex_txt: + addrs: [0x808DD380, 0x808DD480] + npc/tex/kal_5_mouth1_TA_tex_txt: + addrs: [0x808DD480, 0x808DD580] + npc/tex/kal_5_mouth2_TA_tex_txt: + addrs: [0x808DD580, 0x808DD680] + npc/tex/kal_5_mouth3_TA_tex_txt: + addrs: [0x808DD680, 0x808DD780] + npc/tex/kal_5_mouth4_TA_tex_txt: + addrs: [0x808DD780, 0x808DD880] + npc/tex/kal_5_mouth5_TA_tex_txt: + addrs: [0x808DD880, 0x808DD980] + npc/tex/kal_5_mouth6_TA_tex_txt: + addrs: [0x808DD980, 0x808DDA80] + npc/tex/kal_5_tmem_txt: + addrs: [0x808DDA80, 0x808DDF00] + npc/tex/kal_6_pal: + addrs: [0x808DDF00, 0x808DDF20] + type: pal16 + npc/tex/kal_6_eye1_TA_tex_txt: + addrs: [0x808DDF20, 0x808DE020] + npc/tex/kal_6_eye2_TA_tex_txt: + addrs: [0x808DE020, 0x808DE120] + npc/tex/kal_6_eye3_TA_tex_txt: + addrs: [0x808DE120, 0x808DE220] + npc/tex/kal_6_eye4_TA_tex_txt: + addrs: [0x808DE220, 0x808DE320] + npc/tex/kal_6_eye5_TA_tex_txt: + addrs: [0x808DE320, 0x808DE420] + npc/tex/kal_6_eye6_TA_tex_txt: + addrs: [0x808DE420, 0x808DE520] + npc/tex/kal_6_eye7_TA_tex_txt: + addrs: [0x808DE520, 0x808DE620] + npc/tex/kal_6_eye8_TA_tex_txt: + addrs: [0x808DE620, 0x808DE720] + npc/tex/kal_6_mouth1_TA_tex_txt: + addrs: [0x808DE720, 0x808DE820] + npc/tex/kal_6_mouth2_TA_tex_txt: + addrs: [0x808DE820, 0x808DE920] + npc/tex/kal_6_mouth3_TA_tex_txt: + addrs: [0x808DE920, 0x808DEA20] + npc/tex/kal_6_mouth4_TA_tex_txt: + addrs: [0x808DEA20, 0x808DEB20] + npc/tex/kal_6_mouth5_TA_tex_txt: + addrs: [0x808DEB20, 0x808DEC20] + npc/tex/kal_6_mouth6_TA_tex_txt: + addrs: [0x808DEC20, 0x808DED20] + npc/tex/kal_6_tmem_txt: + addrs: [0x808DED20, 0x808DF1A0] + npc/mdl/lon_1_v: + addrs: [0x808E1A10, 0x808E3530] + type: vtx + npc/tex/lon_1_pal: + addrs: [0x808E3F80, 0x808E3FA0] + type: pal16 + npc/tex/lon_1_eye1_TA_tex_txt: + addrs: [0x808E3FA0, 0x808E40A0] + npc/tex/lon_1_eye2_TA_tex_txt: + addrs: [0x808E40A0, 0x808E41A0] + npc/tex/lon_1_eye3_TA_tex_txt: + addrs: [0x808E41A0, 0x808E42A0] + npc/tex/lon_1_eye4_TA_tex_txt: + addrs: [0x808E42A0, 0x808E43A0] + npc/tex/lon_1_eye5_TA_tex_txt: + addrs: [0x808E43A0, 0x808E44A0] + npc/tex/lon_1_eye6_TA_tex_txt: + addrs: [0x808E44A0, 0x808E45A0] + npc/tex/lon_1_eye7_TA_tex_txt: + addrs: [0x808E45A0, 0x808E46A0] + npc/tex/lon_1_eye8_TA_tex_txt: + addrs: [0x808E46A0, 0x808E47A0] + npc/tex/lon_1_mouth1_TA_tex_txt: + addrs: [0x808E47A0, 0x808E48A0] + npc/tex/lon_1_mouth2_TA_tex_txt: + addrs: [0x808E48A0, 0x808E49A0] + npc/tex/lon_1_mouth3_TA_tex_txt: + addrs: [0x808E49A0, 0x808E4AA0] + npc/tex/lon_1_mouth4_TA_tex_txt: + addrs: [0x808E4AA0, 0x808E4BA0] + npc/tex/lon_1_mouth5_TA_tex_txt: + addrs: [0x808E4BA0, 0x808E4CA0] + npc/tex/lon_1_mouth6_TA_tex_txt: + addrs: [0x808E4CA0, 0x808E4DA0] + npc/tex/lon_1_tmem_txt: + addrs: [0x808E4DA0, 0x808E5260] + npc/tex/lon_2_pal: + addrs: [0x808E5260, 0x808E5280] + type: pal16 + npc/tex/lon_2_eye1_TA_tex_txt: + addrs: [0x808E5280, 0x808E5380] + npc/tex/lon_2_eye2_TA_tex_txt: + addrs: [0x808E5380, 0x808E5480] + npc/tex/lon_2_eye3_TA_tex_txt: + addrs: [0x808E5480, 0x808E5580] + npc/tex/lon_2_eye4_TA_tex_txt: + addrs: [0x808E5580, 0x808E5680] + npc/tex/lon_2_eye5_TA_tex_txt: + addrs: [0x808E5680, 0x808E5780] + npc/tex/lon_2_eye6_TA_tex_txt: + addrs: [0x808E5780, 0x808E5880] + npc/tex/lon_2_eye7_TA_tex_txt: + addrs: [0x808E5880, 0x808E5980] + npc/tex/lon_2_eye8_TA_tex_txt: + addrs: [0x808E5980, 0x808E5A80] + npc/tex/lon_2_mouth1_TA_tex_txt: + addrs: [0x808E5A80, 0x808E5B80] + npc/tex/lon_2_mouth2_TA_tex_txt: + addrs: [0x808E5B80, 0x808E5C80] + npc/tex/lon_2_mouth3_TA_tex_txt: + addrs: [0x808E5C80, 0x808E5D80] + npc/tex/lon_2_mouth4_TA_tex_txt: + addrs: [0x808E5D80, 0x808E5E80] + npc/tex/lon_2_mouth5_TA_tex_txt: + addrs: [0x808E5E80, 0x808E5F80] + npc/tex/lon_2_mouth6_TA_tex_txt: + addrs: [0x808E5F80, 0x808E6080] + npc/tex/lon_2_tmem_txt: + addrs: [0x808E6080, 0x808E6540] + npc/tex/lon_3_pal: + addrs: [0x808E6540, 0x808E6560] + type: pal16 + npc/tex/lon_3_eye1_TA_tex_txt: + addrs: [0x808E6560, 0x808E6660] + npc/tex/lon_3_eye2_TA_tex_txt: + addrs: [0x808E6660, 0x808E6760] + npc/tex/lon_3_eye3_TA_tex_txt: + addrs: [0x808E6760, 0x808E6860] + npc/tex/lon_3_eye4_TA_tex_txt: + addrs: [0x808E6860, 0x808E6960] + npc/tex/lon_3_eye5_TA_tex_txt: + addrs: [0x808E6960, 0x808E6A60] + npc/tex/lon_3_eye6_TA_tex_txt: + addrs: [0x808E6A60, 0x808E6B60] + npc/tex/lon_3_eye7_TA_tex_txt: + addrs: [0x808E6B60, 0x808E6C60] + npc/tex/lon_3_eye8_TA_tex_txt: + addrs: [0x808E6C60, 0x808E6D60] + npc/tex/lon_3_mouth1_TA_tex_txt: + addrs: [0x808E6D60, 0x808E6E60] + npc/tex/lon_3_mouth2_TA_tex_txt: + addrs: [0x808E6E60, 0x808E6F60] + npc/tex/lon_3_mouth3_TA_tex_txt: + addrs: [0x808E6F60, 0x808E7060] + npc/tex/lon_3_mouth4_TA_tex_txt: + addrs: [0x808E7060, 0x808E7160] + npc/tex/lon_3_mouth5_TA_tex_txt: + addrs: [0x808E7160, 0x808E7260] + npc/tex/lon_3_mouth6_TA_tex_txt: + addrs: [0x808E7260, 0x808E7360] + npc/tex/lon_3_tmem_txt: + addrs: [0x808E7360, 0x808E7820] + npc/tex/lon_4_pal: + addrs: [0x808E7820, 0x808E7840] + type: pal16 + npc/tex/lon_4_eye1_TA_tex_txt: + addrs: [0x808E7840, 0x808E7940] + npc/tex/lon_4_eye2_TA_tex_txt: + addrs: [0x808E7940, 0x808E7A40] + npc/tex/lon_4_eye3_TA_tex_txt: + addrs: [0x808E7A40, 0x808E7B40] + npc/tex/lon_4_eye4_TA_tex_txt: + addrs: [0x808E7B40, 0x808E7C40] + npc/tex/lon_4_eye5_TA_tex_txt: + addrs: [0x808E7C40, 0x808E7D40] + npc/tex/lon_4_eye6_TA_tex_txt: + addrs: [0x808E7D40, 0x808E7E40] + npc/tex/lon_4_eye7_TA_tex_txt: + addrs: [0x808E7E40, 0x808E7F40] + npc/tex/lon_4_eye8_TA_tex_txt: + addrs: [0x808E7F40, 0x808E8040] + npc/tex/lon_4_mouth1_TA_tex_txt: + addrs: [0x808E8040, 0x808E8140] + npc/tex/lon_4_mouth2_TA_tex_txt: + addrs: [0x808E8140, 0x808E8240] + npc/tex/lon_4_mouth3_TA_tex_txt: + addrs: [0x808E8240, 0x808E8340] + npc/tex/lon_4_mouth4_TA_tex_txt: + addrs: [0x808E8340, 0x808E8440] + npc/tex/lon_4_mouth5_TA_tex_txt: + addrs: [0x808E8440, 0x808E8540] + npc/tex/lon_4_mouth6_TA_tex_txt: + addrs: [0x808E8540, 0x808E8640] + npc/tex/lon_4_tmem_txt: + addrs: [0x808E8640, 0x808E8B00] + npc/mdl/mos_1_v: + addrs: [0x808EAEA0, 0x808EC2C0] + type: vtx + npc/tex/mos_1_pal: + addrs: [0x808ECAE0, 0x808ECB00] + type: pal16 + npc/tex/mos_1_eye1_TA_tex_txt: + addrs: [0x808ECB00, 0x808ECC00] + npc/tex/mos_1_eye2_TA_tex_txt: + addrs: [0x808ECC00, 0x808ECD00] + npc/tex/mos_1_eye3_TA_tex_txt: + addrs: [0x808ECD00, 0x808ECE00] + npc/tex/mos_1_eye4_TA_tex_txt: + addrs: [0x808ECE00, 0x808ECF00] + npc/tex/mos_1_eye5_TA_tex_txt: + addrs: [0x808ECF00, 0x808ED000] + npc/tex/mos_1_eye6_TA_tex_txt: + addrs: [0x808ED000, 0x808ED100] + npc/tex/mos_1_eye7_TA_tex_txt: + addrs: [0x808ED100, 0x808ED200] + npc/tex/mos_1_eye8_TA_tex_txt: + addrs: [0x808ED200, 0x808ED300] + npc/tex/mos_1_mouth1_TA_tex_txt: + addrs: [0x808ED300, 0x808ED400] + npc/tex/mos_1_mouth2_TA_tex_txt: + addrs: [0x808ED400, 0x808ED500] + npc/tex/mos_1_mouth3_TA_tex_txt: + addrs: [0x808ED500, 0x808ED600] + npc/tex/mos_1_mouth4_TA_tex_txt: + addrs: [0x808ED600, 0x808ED700] + npc/tex/mos_1_mouth5_TA_tex_txt: + addrs: [0x808ED700, 0x808ED800] + npc/tex/mos_1_mouth6_TA_tex_txt: + addrs: [0x808ED800, 0x808ED900] + npc/tex/mos_1_tmem_txt: + addrs: [0x808ED900, 0x808EDF80] + npc/mdl/mol_1_v: + addrs: [0x808EDF80, 0x808EF3A0] + type: vtx + npc/tex/mol_1_pal: + addrs: [0x808EFBC0, 0x808EFBE0] + type: pal16 + npc/tex/mol_1_eye1_TA_tex_txt: + addrs: [0x808EFBE0, 0x808EFCE0] + npc/tex/mol_1_eye2_TA_tex_txt: + addrs: [0x808EFCE0, 0x808EFDE0] + npc/tex/mol_1_eye3_TA_tex_txt: + addrs: [0x808EFDE0, 0x808EFEE0] + npc/tex/mol_1_eye4_TA_tex_txt: + addrs: [0x808EFEE0, 0x808EFFE0] + npc/tex/mol_1_eye5_TA_tex_txt: + addrs: [0x808EFFE0, 0x808F00E0] + npc/tex/mol_1_eye6_TA_tex_txt: + addrs: [0x808F00E0, 0x808F01E0] + npc/tex/mol_1_eye7_TA_tex_txt: + addrs: [0x808F01E0, 0x808F02E0] + npc/tex/mol_1_eye8_TA_tex_txt: + addrs: [0x808F02E0, 0x808F03E0] + npc/tex/mol_1_mouth1_TA_tex_txt: + addrs: [0x808F03E0, 0x808F04E0] + npc/tex/mol_1_mouth2_TA_tex_txt: + addrs: [0x808F04E0, 0x808F05E0] + npc/tex/mol_1_mouth3_TA_tex_txt: + addrs: [0x808F05E0, 0x808F06E0] + npc/tex/mol_1_mouth4_TA_tex_txt: + addrs: [0x808F06E0, 0x808F07E0] + npc/tex/mol_1_mouth5_TA_tex_txt: + addrs: [0x808F07E0, 0x808F08E0] + npc/tex/mol_1_mouth6_TA_tex_txt: + addrs: [0x808F08E0, 0x808F09E0] + npc/tex/mol_1_tmem_txt: + addrs: [0x808F09E0, 0x808F1060] + npc/mdl/lrc_1_v: + addrs: [0x808F1060, 0x808F25A0] + type: vtx + npc/tex/lrc_1_pal: + addrs: [0x808F2F60, 0x808F2F80] + type: pal16 + npc/tex/lrc_1_eye1_TA_tex_txt: + addrs: [0x808F2F80, 0x808F3080] + npc/tex/lrc_1_eye2_TA_tex_txt: + addrs: [0x808F3080, 0x808F3180] + npc/tex/lrc_1_eye3_TA_tex_txt: + addrs: [0x808F3180, 0x808F3280] + npc/tex/lrc_1_eye4_TA_tex_txt: + addrs: [0x808F3280, 0x808F3380] + npc/tex/lrc_1_eye5_TA_tex_txt: + addrs: [0x808F3380, 0x808F3480] + npc/tex/lrc_1_eye6_TA_tex_txt: + addrs: [0x808F3480, 0x808F3580] + npc/tex/lrc_1_eye7_TA_tex_txt: + addrs: [0x808F3580, 0x808F3680] + npc/tex/lrc_1_eye8_TA_tex_txt: + addrs: [0x808F3680, 0x808F3780] + npc/tex/lrc_1_tmem_txt: + addrs: [0x808F3780, 0x808F3E00] + npc/mdl/mka_1_v: + addrs: [0x808F3E00, 0x808F5280] + type: vtx + npc/tex/mka_1_pal: + addrs: [0x808F5BC0, 0x808F5BE0] + type: pal16 + npc/tex/mka_1_tmem_txt: + addrs: [0x808F5BE0, 0x808F6060] + npc/mdl/mus_1_v: + addrs: [0x808F6EA8, 0x808F86A8] + type: vtx + npc/tex/mus_1_pal: + addrs: [0x808F90C0, 0x808F90E0] + type: pal16 + npc/tex/mus_1_eye1_TA_tex_txt: + addrs: [0x808F90E0, 0x808F91E0] + npc/tex/mus_1_eye2_TA_tex_txt: + addrs: [0x808F91E0, 0x808F92E0] + npc/tex/mus_1_eye3_TA_tex_txt: + addrs: [0x808F92E0, 0x808F93E0] + npc/tex/mus_1_eye4_TA_tex_txt: + addrs: [0x808F93E0, 0x808F94E0] + npc/tex/mus_1_eye5_TA_tex_txt: + addrs: [0x808F94E0, 0x808F95E0] + npc/tex/mus_1_eye6_TA_tex_txt: + addrs: [0x808F95E0, 0x808F96E0] + npc/tex/mus_1_eye7_TA_tex_txt: + addrs: [0x808F96E0, 0x808F97E0] + npc/tex/mus_1_eye8_TA_tex_txt: + addrs: [0x808F97E0, 0x808F98E0] + npc/tex/mus_1_mouth1_TA_tex_txt: + addrs: [0x808F98E0, 0x808F99E0] + npc/tex/mus_1_mouth2_TA_tex_txt: + addrs: [0x808F99E0, 0x808F9AE0] + npc/tex/mus_1_mouth3_TA_tex_txt: + addrs: [0x808F9AE0, 0x808F9BE0] + npc/tex/mus_1_mouth4_TA_tex_txt: + addrs: [0x808F9BE0, 0x808F9CE0] + npc/tex/mus_1_mouth5_TA_tex_txt: + addrs: [0x808F9CE0, 0x808F9DE0] + npc/tex/mus_1_mouth6_TA_tex_txt: + addrs: [0x808F9DE0, 0x808F9EE0] + npc/tex/mus_1_tmem_txt: + addrs: [0x808F9EE0, 0x808FA2E0] + npc/tex/mus_2_pal: + addrs: [0x808FA2E0, 0x808FA300] + type: pal16 + npc/tex/mus_2_eye1_TA_tex_txt: + addrs: [0x808FA300, 0x808FA400] + npc/tex/mus_2_eye2_TA_tex_txt: + addrs: [0x808FA400, 0x808FA500] + npc/tex/mus_2_eye3_TA_tex_txt: + addrs: [0x808FA500, 0x808FA600] + npc/tex/mus_2_eye4_TA_tex_txt: + addrs: [0x808FA600, 0x808FA700] + npc/tex/mus_2_eye5_TA_tex_txt: + addrs: [0x808FA700, 0x808FA800] + npc/tex/mus_2_eye6_TA_tex_txt: + addrs: [0x808FA800, 0x808FA900] + npc/tex/mus_2_eye7_TA_tex_txt: + addrs: [0x808FA900, 0x808FAA00] + npc/tex/mus_2_eye8_TA_tex_txt: + addrs: [0x808FAA00, 0x808FAB00] + npc/tex/mus_2_mouth1_TA_tex_txt: + addrs: [0x808FAB00, 0x808FAC00] + npc/tex/mus_2_mouth2_TA_tex_txt: + addrs: [0x808FAC00, 0x808FAD00] + npc/tex/mus_2_mouth3_TA_tex_txt: + addrs: [0x808FAD00, 0x808FAE00] + npc/tex/mus_2_mouth4_TA_tex_txt: + addrs: [0x808FAE00, 0x808FAF00] + npc/tex/mus_2_mouth5_TA_tex_txt: + addrs: [0x808FAF00, 0x808FB000] + npc/tex/mus_2_mouth6_TA_tex_txt: + addrs: [0x808FB000, 0x808FB100] + npc/tex/mus_2_tmem_txt: + addrs: [0x808FB100, 0x808FB500] + npc/tex/mus_3_pal: + addrs: [0x808FB500, 0x808FB520] + type: pal16 + npc/tex/mus_3_eye1_TA_tex_txt: + addrs: [0x808FB520, 0x808FB620] + npc/tex/mus_3_eye2_TA_tex_txt: + addrs: [0x808FB620, 0x808FB720] + npc/tex/mus_3_eye3_TA_tex_txt: + addrs: [0x808FB720, 0x808FB820] + npc/tex/mus_3_eye4_TA_tex_txt: + addrs: [0x808FB820, 0x808FB920] + npc/tex/mus_3_eye5_TA_tex_txt: + addrs: [0x808FB920, 0x808FBA20] + npc/tex/mus_3_eye6_TA_tex_txt: + addrs: [0x808FBA20, 0x808FBB20] + npc/tex/mus_3_eye7_TA_tex_txt: + addrs: [0x808FBB20, 0x808FBC20] + npc/tex/mus_3_eye8_TA_tex_txt: + addrs: [0x808FBC20, 0x808FBD20] + npc/tex/mus_3_mouth1_TA_tex_txt: + addrs: [0x808FBD20, 0x808FBE20] + npc/tex/mus_3_mouth2_TA_tex_txt: + addrs: [0x808FBE20, 0x808FBF20] + npc/tex/mus_3_mouth3_TA_tex_txt: + addrs: [0x808FBF20, 0x808FC020] + npc/tex/mus_3_mouth4_TA_tex_txt: + addrs: [0x808FC020, 0x808FC120] + npc/tex/mus_3_mouth5_TA_tex_txt: + addrs: [0x808FC120, 0x808FC220] + npc/tex/mus_3_mouth6_TA_tex_txt: + addrs: [0x808FC220, 0x808FC320] + npc/tex/mus_3_tmem_txt: + addrs: [0x808FC320, 0x808FC720] + npc/tex/mus_4_pal: + addrs: [0x808FC720, 0x808FC740] + type: pal16 + npc/tex/mus_4_eye1_TA_tex_txt: + addrs: [0x808FC740, 0x808FC840] + npc/tex/mus_4_eye2_TA_tex_txt: + addrs: [0x808FC840, 0x808FC940] + npc/tex/mus_4_eye3_TA_tex_txt: + addrs: [0x808FC940, 0x808FCA40] + npc/tex/mus_4_eye4_TA_tex_txt: + addrs: [0x808FCA40, 0x808FCB40] + npc/tex/mus_4_eye5_TA_tex_txt: + addrs: [0x808FCB40, 0x808FCC40] + npc/tex/mus_4_eye6_TA_tex_txt: + addrs: [0x808FCC40, 0x808FCD40] + npc/tex/mus_4_eye7_TA_tex_txt: + addrs: [0x808FCD40, 0x808FCE40] + npc/tex/mus_4_eye8_TA_tex_txt: + addrs: [0x808FCE40, 0x808FCF40] + npc/tex/mus_4_mouth1_TA_tex_txt: + addrs: [0x808FCF40, 0x808FD040] + npc/tex/mus_4_mouth2_TA_tex_txt: + addrs: [0x808FD040, 0x808FD140] + npc/tex/mus_4_mouth3_TA_tex_txt: + addrs: [0x808FD140, 0x808FD240] + npc/tex/mus_4_mouth4_TA_tex_txt: + addrs: [0x808FD240, 0x808FD340] + npc/tex/mus_4_mouth5_TA_tex_txt: + addrs: [0x808FD340, 0x808FD440] + npc/tex/mus_4_mouth6_TA_tex_txt: + addrs: [0x808FD440, 0x808FD540] + npc/tex/mus_4_tmem_txt: + addrs: [0x808FD540, 0x808FD940] + npc/tex/mus_5_pal: + addrs: [0x808FD940, 0x808FD960] + type: pal16 + npc/tex/mus_5_eye1_TA_tex_txt: + addrs: [0x808FD960, 0x808FDA60] + npc/tex/mus_5_eye2_TA_tex_txt: + addrs: [0x808FDA60, 0x808FDB60] + npc/tex/mus_5_eye3_TA_tex_txt: + addrs: [0x808FDB60, 0x808FDC60] + npc/tex/mus_5_eye4_TA_tex_txt: + addrs: [0x808FDC60, 0x808FDD60] + npc/tex/mus_5_eye5_TA_tex_txt: + addrs: [0x808FDD60, 0x808FDE60] + npc/tex/mus_5_eye6_TA_tex_txt: + addrs: [0x808FDE60, 0x808FDF60] + npc/tex/mus_5_eye7_TA_tex_txt: + addrs: [0x808FDF60, 0x808FE060] + npc/tex/mus_5_eye8_TA_tex_txt: + addrs: [0x808FE060, 0x808FE160] + npc/tex/mus_5_mouth1_TA_tex_txt: + addrs: [0x808FE160, 0x808FE260] + npc/tex/mus_5_mouth2_TA_tex_txt: + addrs: [0x808FE260, 0x808FE360] + npc/tex/mus_5_mouth3_TA_tex_txt: + addrs: [0x808FE360, 0x808FE460] + npc/tex/mus_5_mouth4_TA_tex_txt: + addrs: [0x808FE460, 0x808FE560] + npc/tex/mus_5_mouth5_TA_tex_txt: + addrs: [0x808FE560, 0x808FE660] + npc/tex/mus_5_mouth6_TA_tex_txt: + addrs: [0x808FE660, 0x808FE760] + npc/tex/mus_5_tmem_txt: + addrs: [0x808FE760, 0x808FEB60] + npc/tex/mus_6_pal: + addrs: [0x808FEB60, 0x808FEB80] + type: pal16 + npc/tex/mus_6_eye1_TA_tex_txt: + addrs: [0x808FEB80, 0x808FEC80] + npc/tex/mus_6_eye2_TA_tex_txt: + addrs: [0x808FEC80, 0x808FED80] + npc/tex/mus_6_eye3_TA_tex_txt: + addrs: [0x808FED80, 0x808FEE80] + npc/tex/mus_6_eye4_TA_tex_txt: + addrs: [0x808FEE80, 0x808FEF80] + npc/tex/mus_6_eye5_TA_tex_txt: + addrs: [0x808FEF80, 0x808FF080] + npc/tex/mus_6_eye6_TA_tex_txt: + addrs: [0x808FF080, 0x808FF180] + npc/tex/mus_6_eye7_TA_tex_txt: + addrs: [0x808FF180, 0x808FF280] + npc/tex/mus_6_eye8_TA_tex_txt: + addrs: [0x808FF280, 0x808FF380] + npc/tex/mus_6_mouth1_TA_tex_txt: + addrs: [0x808FF380, 0x808FF480] + npc/tex/mus_6_mouth2_TA_tex_txt: + addrs: [0x808FF480, 0x808FF580] + npc/tex/mus_6_mouth3_TA_tex_txt: + addrs: [0x808FF580, 0x808FF680] + npc/tex/mus_6_mouth4_TA_tex_txt: + addrs: [0x808FF680, 0x808FF780] + npc/tex/mus_6_mouth5_TA_tex_txt: + addrs: [0x808FF780, 0x808FF880] + npc/tex/mus_6_mouth6_TA_tex_txt: + addrs: [0x808FF880, 0x808FF980] + npc/tex/mus_6_tmem_txt: + addrs: [0x808FF980, 0x808FFD80] + npc/tex/mus_7_pal: + addrs: [0x808FFD80, 0x808FFDA0] + type: pal16 + npc/tex/mus_7_eye1_TA_tex_txt: + addrs: [0x808FFDA0, 0x808FFEA0] + npc/tex/mus_7_eye2_TA_tex_txt: + addrs: [0x808FFEA0, 0x808FFFA0] + npc/tex/mus_7_eye3_TA_tex_txt: + addrs: [0x808FFFA0, 0x809000A0] + npc/tex/mus_7_eye4_TA_tex_txt: + addrs: [0x809000A0, 0x809001A0] + npc/tex/mus_7_eye5_TA_tex_txt: + addrs: [0x809001A0, 0x809002A0] + npc/tex/mus_7_eye6_TA_tex_txt: + addrs: [0x809002A0, 0x809003A0] + npc/tex/mus_7_eye7_TA_tex_txt: + addrs: [0x809003A0, 0x809004A0] + npc/tex/mus_7_eye8_TA_tex_txt: + addrs: [0x809004A0, 0x809005A0] + npc/tex/mus_7_mouth1_TA_tex_txt: + addrs: [0x809005A0, 0x809006A0] + npc/tex/mus_7_mouth2_TA_tex_txt: + addrs: [0x809006A0, 0x809007A0] + npc/tex/mus_7_mouth3_TA_tex_txt: + addrs: [0x809007A0, 0x809008A0] + npc/tex/mus_7_mouth4_TA_tex_txt: + addrs: [0x809008A0, 0x809009A0] + npc/tex/mus_7_mouth5_TA_tex_txt: + addrs: [0x809009A0, 0x80900AA0] + npc/tex/mus_7_mouth6_TA_tex_txt: + addrs: [0x80900AA0, 0x80900BA0] + npc/tex/mus_7_tmem_txt: + addrs: [0x80900BA0, 0x80900FA0] + npc/tex/mus_8_pal: + addrs: [0x80900FA0, 0x80900FC0] + type: pal16 + npc/tex/mus_8_eye1_TA_tex_txt: + addrs: [0x80900FC0, 0x809010C0] + npc/tex/mus_8_eye2_TA_tex_txt: + addrs: [0x809010C0, 0x809011C0] + npc/tex/mus_8_eye3_TA_tex_txt: + addrs: [0x809011C0, 0x809012C0] + npc/tex/mus_8_eye4_TA_tex_txt: + addrs: [0x809012C0, 0x809013C0] + npc/tex/mus_8_eye5_TA_tex_txt: + addrs: [0x809013C0, 0x809014C0] + npc/tex/mus_8_eye6_TA_tex_txt: + addrs: [0x809014C0, 0x809015C0] + npc/tex/mus_8_eye7_TA_tex_txt: + addrs: [0x809015C0, 0x809016C0] + npc/tex/mus_8_eye8_TA_tex_txt: + addrs: [0x809016C0, 0x809017C0] + npc/tex/mus_8_mouth1_TA_tex_txt: + addrs: [0x809017C0, 0x809018C0] + npc/tex/mus_8_mouth2_TA_tex_txt: + addrs: [0x809018C0, 0x809019C0] + npc/tex/mus_8_mouth3_TA_tex_txt: + addrs: [0x809019C0, 0x80901AC0] + npc/tex/mus_8_mouth4_TA_tex_txt: + addrs: [0x80901AC0, 0x80901BC0] + npc/tex/mus_8_mouth5_TA_tex_txt: + addrs: [0x80901BC0, 0x80901CC0] + npc/tex/mus_8_mouth6_TA_tex_txt: + addrs: [0x80901CC0, 0x80901DC0] + npc/tex/mus_8_tmem_txt: + addrs: [0x80901DC0, 0x809021C0] + npc/tex/mus_9_pal: + addrs: [0x809021C0, 0x809021E0] + type: pal16 + npc/tex/mus_9_eye1_TA_tex_txt: + addrs: [0x809021E0, 0x809022E0] + npc/tex/mus_9_eye2_TA_tex_txt: + addrs: [0x809022E0, 0x809023E0] + npc/tex/mus_9_eye3_TA_tex_txt: + addrs: [0x809023E0, 0x809024E0] + npc/tex/mus_9_eye4_TA_tex_txt: + addrs: [0x809024E0, 0x809025E0] + npc/tex/mus_9_eye5_TA_tex_txt: + addrs: [0x809025E0, 0x809026E0] + npc/tex/mus_9_eye6_TA_tex_txt: + addrs: [0x809026E0, 0x809027E0] + npc/tex/mus_9_eye7_TA_tex_txt: + addrs: [0x809027E0, 0x809028E0] + npc/tex/mus_9_eye8_TA_tex_txt: + addrs: [0x809028E0, 0x809029E0] + npc/tex/mus_9_mouth1_TA_tex_txt: + addrs: [0x809029E0, 0x80902AE0] + npc/tex/mus_9_mouth2_TA_tex_txt: + addrs: [0x80902AE0, 0x80902BE0] + npc/tex/mus_9_mouth3_TA_tex_txt: + addrs: [0x80902BE0, 0x80902CE0] + npc/tex/mus_9_mouth4_TA_tex_txt: + addrs: [0x80902CE0, 0x80902DE0] + npc/tex/mus_9_mouth5_TA_tex_txt: + addrs: [0x80902DE0, 0x80902EE0] + npc/tex/mus_9_mouth6_TA_tex_txt: + addrs: [0x80902EE0, 0x80902FE0] + npc/tex/mus_9_tmem_txt: + addrs: [0x80902FE0, 0x809033E0] + npc/tex/mus_10_pal: + addrs: [0x809033E0, 0x80903400] + type: pal16 + npc/tex/mus_10_eye1_TA_tex_txt: + addrs: [0x80903400, 0x80903500] + npc/tex/mus_10_eye2_TA_tex_txt: + addrs: [0x80903500, 0x80903600] + npc/tex/mus_10_eye3_TA_tex_txt: + addrs: [0x80903600, 0x80903700] + npc/tex/mus_10_eye4_TA_tex_txt: + addrs: [0x80903700, 0x80903800] + npc/tex/mus_10_eye5_TA_tex_txt: + addrs: [0x80903800, 0x80903900] + npc/tex/mus_10_eye6_TA_tex_txt: + addrs: [0x80903900, 0x80903A00] + npc/tex/mus_10_eye7_TA_tex_txt: + addrs: [0x80903A00, 0x80903B00] + npc/tex/mus_10_eye8_TA_tex_txt: + addrs: [0x80903B00, 0x80903C00] + npc/tex/mus_10_mouth1_TA_tex_txt: + addrs: [0x80903C00, 0x80903D00] + npc/tex/mus_10_mouth2_TA_tex_txt: + addrs: [0x80903D00, 0x80903E00] + npc/tex/mus_10_mouth3_TA_tex_txt: + addrs: [0x80903E00, 0x80903F00] + npc/tex/mus_10_mouth4_TA_tex_txt: + addrs: [0x80903F00, 0x80904000] + npc/tex/mus_10_mouth5_TA_tex_txt: + addrs: [0x80904000, 0x80904100] + npc/tex/mus_10_mouth6_TA_tex_txt: + addrs: [0x80904100, 0x80904200] + npc/tex/mus_10_tmem_txt: + addrs: [0x80904200, 0x80904600] # ac_mural.o obj_mural_v: addrs: [0x80904600, 0x80904640] type: vtx + npc/mdl/hgh_1_v: + addrs: [0x80911E70, 0x80913B10] + type: vtx + npc/tex/hgh_1_pal: + addrs: [0x80914620, 0x80914640] + type: pal16 + npc/tex/hgh_1_eye1_TA_tex_txt: + addrs: [0x80914640, 0x80914740] + npc/tex/hgh_1_eye2_TA_tex_txt: + addrs: [0x80914740, 0x80914840] + npc/tex/hgh_1_eye3_TA_tex_txt: + addrs: [0x80914840, 0x80914940] + npc/tex/hgh_1_eye4_TA_tex_txt: + addrs: [0x80914940, 0x80914A40] + npc/tex/hgh_1_eye5_TA_tex_txt: + addrs: [0x80914A40, 0x80914B40] + npc/tex/hgh_1_eye6_TA_tex_txt: + addrs: [0x80914B40, 0x80914C40] + npc/tex/hgh_1_eye7_TA_tex_txt: + addrs: [0x80914C40, 0x80914D40] + npc/tex/hgh_1_eye8_TA_tex_txt: + addrs: [0x80914D40, 0x80914E40] + npc/tex/hgh_1_tmem_txt: + addrs: [0x80914E40, 0x80915500] + npc/mdl/hgs_1_v: + addrs: [0x80915500, 0x80917180] + type: vtx + npc/tex/hgs_1_pal: + addrs: [0x80917C80, 0x80917CA0] + type: pal16 + npc/tex/hgs_1_eye1_TA_tex_txt: + addrs: [0x80917CA0, 0x80917DA0] + npc/tex/hgs_1_eye2_TA_tex_txt: + addrs: [0x80917DA0, 0x80917EA0] + npc/tex/hgs_1_eye3_TA_tex_txt: + addrs: [0x80917EA0, 0x80917FA0] + npc/tex/hgs_1_eye4_TA_tex_txt: + addrs: [0x80917FA0, 0x809180A0] + npc/tex/hgs_1_eye5_TA_tex_txt: + addrs: [0x809180A0, 0x809181A0] + npc/tex/hgs_1_eye6_TA_tex_txt: + addrs: [0x809181A0, 0x809182A0] + npc/tex/hgs_1_eye7_TA_tex_txt: + addrs: [0x809182A0, 0x809183A0] + npc/tex/hgs_1_eye8_TA_tex_txt: + addrs: [0x809183A0, 0x809184A0] + npc/tex/hgs_1_tmem_txt: + addrs: [0x809184A0, 0x80918B60] + npc/mdl/oct_1_v: + addrs: [0x80977CB0, 0x80979A30] + type: vtx + npc/tex/oct_1_pal: + addrs: [0x8097A460, 0x8097A480] + type: pal16 + npc/tex/oct_1_eye1_TA_tex_txt: + addrs: [0x8097A480, 0x8097A580] + npc/tex/oct_1_eye2_TA_tex_txt: + addrs: [0x8097A580, 0x8097A680] + npc/tex/oct_1_eye3_TA_tex_txt: + addrs: [0x8097A680, 0x8097A780] + npc/tex/oct_1_eye4_TA_tex_txt: + addrs: [0x8097A780, 0x8097A880] + npc/tex/oct_1_eye5_TA_tex_txt: + addrs: [0x8097A880, 0x8097A980] + npc/tex/oct_1_eye6_TA_tex_txt: + addrs: [0x8097A980, 0x8097AA80] + npc/tex/oct_1_eye7_TA_tex_txt: + addrs: [0x8097AA80, 0x8097AB80] + npc/tex/oct_1_eye8_TA_tex_txt: + addrs: [0x8097AB80, 0x8097AC80] + npc/tex/oct_1_tmem_txt: + addrs: [0x8097AC80, 0x8097AE80] + npc/mdl/ost_1_v: + addrs: [0x8097AE80, 0x8097C650] + type: vtx + npc/tex/ost_1_pal: + addrs: [0x8097D100, 0x8097D120] + type: pal16 + npc/tex/ost_1_eye1_TA_tex_txt: + addrs: [0x8097D120, 0x8097D220] + npc/tex/ost_1_eye2_TA_tex_txt: + addrs: [0x8097D220, 0x8097D320] + npc/tex/ost_1_eye3_TA_tex_txt: + addrs: [0x8097D320, 0x8097D420] + npc/tex/ost_1_eye4_TA_tex_txt: + addrs: [0x8097D420, 0x8097D520] + npc/tex/ost_1_eye5_TA_tex_txt: + addrs: [0x8097D520, 0x8097D620] + npc/tex/ost_1_eye6_TA_tex_txt: + addrs: [0x8097D620, 0x8097D720] + npc/tex/ost_1_eye7_TA_tex_txt: + addrs: [0x8097D720, 0x8097D820] + npc/tex/ost_1_eye8_TA_tex_txt: + addrs: [0x8097D820, 0x8097D920] + npc/tex/ost_1_tmem_txt: + addrs: [0x8097D920, 0x8097DE60] + npc/tex/ost_2_pal: + addrs: [0x8097DE60, 0x8097DE80] + type: pal16 + npc/tex/ost_2_eye1_TA_tex_txt: + addrs: [0x8097DE80, 0x8097DF80] + npc/tex/ost_2_eye2_TA_tex_txt: + addrs: [0x8097DF80, 0x8097E080] + npc/tex/ost_2_eye3_TA_tex_txt: + addrs: [0x8097E080, 0x8097E180] + npc/tex/ost_2_eye4_TA_tex_txt: + addrs: [0x8097E180, 0x8097E280] + npc/tex/ost_2_eye5_TA_tex_txt: + addrs: [0x8097E280, 0x8097E380] + npc/tex/ost_2_eye6_TA_tex_txt: + addrs: [0x8097E380, 0x8097E480] + npc/tex/ost_2_eye7_TA_tex_txt: + addrs: [0x8097E480, 0x8097E580] + npc/tex/ost_2_eye8_TA_tex_txt: + addrs: [0x8097E580, 0x8097E680] + npc/tex/ost_2_tmem_txt: + addrs: [0x8097E680, 0x8097EBC0] + npc/tex/ost_3_pal: + addrs: [0x8097EBC0, 0x8097EBE0] + type: pal16 + npc/tex/ost_3_eye1_TA_tex_txt: + addrs: [0x8097EBE0, 0x8097ECE0] + npc/tex/ost_3_eye2_TA_tex_txt: + addrs: [0x8097ECE0, 0x8097EDE0] + npc/tex/ost_3_eye3_TA_tex_txt: + addrs: [0x8097EDE0, 0x8097EEE0] + npc/tex/ost_3_eye4_TA_tex_txt: + addrs: [0x8097EEE0, 0x8097EFE0] + npc/tex/ost_3_eye5_TA_tex_txt: + addrs: [0x8097EFE0, 0x8097F0E0] + npc/tex/ost_3_eye6_TA_tex_txt: + addrs: [0x8097F0E0, 0x8097F1E0] + npc/tex/ost_3_eye7_TA_tex_txt: + addrs: [0x8097F1E0, 0x8097F2E0] + npc/tex/ost_3_eye8_TA_tex_txt: + addrs: [0x8097F2E0, 0x8097F3E0] + npc/tex/ost_3_tmem_txt: + addrs: [0x8097F3E0, 0x8097F920] + npc/tex/ost_4_pal: + addrs: [0x8097F920, 0x8097F940] + type: pal16 + npc/tex/ost_4_eye1_TA_tex_txt: + addrs: [0x8097F940, 0x8097FA40] + npc/tex/ost_4_eye2_TA_tex_txt: + addrs: [0x8097FA40, 0x8097FB40] + npc/tex/ost_4_eye3_TA_tex_txt: + addrs: [0x8097FB40, 0x8097FC40] + npc/tex/ost_4_eye4_TA_tex_txt: + addrs: [0x8097FC40, 0x8097FD40] + npc/tex/ost_4_eye5_TA_tex_txt: + addrs: [0x8097FD40, 0x8097FE40] + npc/tex/ost_4_eye6_TA_tex_txt: + addrs: [0x8097FE40, 0x8097FF40] + npc/tex/ost_4_eye7_TA_tex_txt: + addrs: [0x8097FF40, 0x80980040] + npc/tex/ost_4_eye8_TA_tex_txt: + addrs: [0x80980040, 0x80980140] + npc/tex/ost_4_tmem_txt: + addrs: [0x80980140, 0x80980680] + npc/mdl/pgn_1_v: + addrs: [0x80980F28, 0x80982708] + type: vtx + npc/tex/pgn_1_pal: + addrs: [0x80983140, 0x80983160] + type: pal16 + npc/tex/pgn_1_eye1_TA_tex_txt: + addrs: [0x80983160, 0x80983260] + npc/tex/pgn_1_eye2_TA_tex_txt: + addrs: [0x80983260, 0x80983360] + npc/tex/pgn_1_eye3_TA_tex_txt: + addrs: [0x80983360, 0x80983460] + npc/tex/pgn_1_eye4_TA_tex_txt: + addrs: [0x80983460, 0x80983560] + npc/tex/pgn_1_eye5_TA_tex_txt: + addrs: [0x80983560, 0x80983660] + npc/tex/pgn_1_eye6_TA_tex_txt: + addrs: [0x80983660, 0x80983760] + npc/tex/pgn_1_eye7_TA_tex_txt: + addrs: [0x80983760, 0x80983860] + npc/tex/pgn_1_eye8_TA_tex_txt: + addrs: [0x80983860, 0x80983960] + npc/tex/pgn_1_tmem_txt: + addrs: [0x80983960, 0x80983EE0] + npc/tex/pgn_2_pal: + addrs: [0x80983EE0, 0x80983F00] + type: pal16 + npc/tex/pgn_2_eye1_TA_tex_txt: + addrs: [0x80983F00, 0x80984000] + npc/tex/pgn_2_eye2_TA_tex_txt: + addrs: [0x80984000, 0x80984100] + npc/tex/pgn_2_eye3_TA_tex_txt: + addrs: [0x80984100, 0x80984200] + npc/tex/pgn_2_eye4_TA_tex_txt: + addrs: [0x80984200, 0x80984300] + npc/tex/pgn_2_eye5_TA_tex_txt: + addrs: [0x80984300, 0x80984400] + npc/tex/pgn_2_eye6_TA_tex_txt: + addrs: [0x80984400, 0x80984500] + npc/tex/pgn_2_eye7_TA_tex_txt: + addrs: [0x80984500, 0x80984600] + npc/tex/pgn_2_eye8_TA_tex_txt: + addrs: [0x80984600, 0x80984700] + npc/tex/pgn_2_tmem_txt: + addrs: [0x80984700, 0x80984C80] + npc/tex/pgn_3_pal: + addrs: [0x80984C80, 0x80984CA0] + type: pal16 + npc/tex/pgn_3_eye1_TA_tex_txt: + addrs: [0x80984CA0, 0x80984DA0] + npc/tex/pgn_3_eye2_TA_tex_txt: + addrs: [0x80984DA0, 0x80984EA0] + npc/tex/pgn_3_eye3_TA_tex_txt: + addrs: [0x80984EA0, 0x80984FA0] + npc/tex/pgn_3_eye4_TA_tex_txt: + addrs: [0x80984FA0, 0x809850A0] + npc/tex/pgn_3_eye5_TA_tex_txt: + addrs: [0x809850A0, 0x809851A0] + npc/tex/pgn_3_eye6_TA_tex_txt: + addrs: [0x809851A0, 0x809852A0] + npc/tex/pgn_3_eye7_TA_tex_txt: + addrs: [0x809852A0, 0x809853A0] + npc/tex/pgn_3_eye8_TA_tex_txt: + addrs: [0x809853A0, 0x809854A0] + npc/tex/pgn_3_tmem_txt: + addrs: [0x809854A0, 0x80985A20] + npc/tex/pgn_4_pal: + addrs: [0x80985A20, 0x80985A40] + type: pal16 + npc/tex/pgn_4_eye1_TA_tex_txt: + addrs: [0x80985A40, 0x80985B40] + npc/tex/pgn_4_eye2_TA_tex_txt: + addrs: [0x80985B40, 0x80985C40] + npc/tex/pgn_4_eye3_TA_tex_txt: + addrs: [0x80985C40, 0x80985D40] + npc/tex/pgn_4_eye4_TA_tex_txt: + addrs: [0x80985D40, 0x80985E40] + npc/tex/pgn_4_eye5_TA_tex_txt: + addrs: [0x80985E40, 0x80985F40] + npc/tex/pgn_4_eye6_TA_tex_txt: + addrs: [0x80985F40, 0x80986040] + npc/tex/pgn_4_eye7_TA_tex_txt: + addrs: [0x80986040, 0x80986140] + npc/tex/pgn_4_eye8_TA_tex_txt: + addrs: [0x80986140, 0x80986240] + npc/tex/pgn_4_tmem_txt: + addrs: [0x80986240, 0x809867C0] + npc/tex/pgn_5_pal: + addrs: [0x809867C0, 0x809867E0] + type: pal16 + npc/tex/pgn_5_eye1_TA_tex_txt: + addrs: [0x809867E0, 0x809868E0] + npc/tex/pgn_5_eye2_TA_tex_txt: + addrs: [0x809868E0, 0x809869E0] + npc/tex/pgn_5_eye3_TA_tex_txt: + addrs: [0x809869E0, 0x80986AE0] + npc/tex/pgn_5_eye4_TA_tex_txt: + addrs: [0x80986AE0, 0x80986BE0] + npc/tex/pgn_5_eye5_TA_tex_txt: + addrs: [0x80986BE0, 0x80986CE0] + npc/tex/pgn_5_eye6_TA_tex_txt: + addrs: [0x80986CE0, 0x80986DE0] + npc/tex/pgn_5_eye7_TA_tex_txt: + addrs: [0x80986DE0, 0x80986EE0] + npc/tex/pgn_5_eye8_TA_tex_txt: + addrs: [0x80986EE0, 0x80986FE0] + npc/tex/pgn_5_tmem_txt: + addrs: [0x80986FE0, 0x80987560] + npc/tex/pgn_6_pal: + addrs: [0x80987560, 0x80987580] + type: pal16 + npc/tex/pgn_6_eye1_TA_tex_txt: + addrs: [0x80987580, 0x80987680] + npc/tex/pgn_6_eye2_TA_tex_txt: + addrs: [0x80987680, 0x80987780] + npc/tex/pgn_6_eye3_TA_tex_txt: + addrs: [0x80987780, 0x80987880] + npc/tex/pgn_6_eye4_TA_tex_txt: + addrs: [0x80987880, 0x80987980] + npc/tex/pgn_6_eye5_TA_tex_txt: + addrs: [0x80987980, 0x80987A80] + npc/tex/pgn_6_eye6_TA_tex_txt: + addrs: [0x80987A80, 0x80987B80] + npc/tex/pgn_6_eye7_TA_tex_txt: + addrs: [0x80987B80, 0x80987C80] + npc/tex/pgn_6_eye8_TA_tex_txt: + addrs: [0x80987C80, 0x80987D80] + npc/tex/pgn_6_tmem_txt: + addrs: [0x80987D80, 0x80988300] + npc/tex/pgn_7_pal: + addrs: [0x80988300, 0x80988320] + type: pal16 + npc/tex/pgn_7_eye1_TA_tex_txt: + addrs: [0x80988320, 0x80988420] + npc/tex/pgn_7_eye2_TA_tex_txt: + addrs: [0x80988420, 0x80988520] + npc/tex/pgn_7_eye3_TA_tex_txt: + addrs: [0x80988520, 0x80988620] + npc/tex/pgn_7_eye4_TA_tex_txt: + addrs: [0x80988620, 0x80988720] + npc/tex/pgn_7_eye5_TA_tex_txt: + addrs: [0x80988720, 0x80988820] + npc/tex/pgn_7_eye6_TA_tex_txt: + addrs: [0x80988820, 0x80988920] + npc/tex/pgn_7_eye7_TA_tex_txt: + addrs: [0x80988920, 0x80988A20] + npc/tex/pgn_7_eye8_TA_tex_txt: + addrs: [0x80988A20, 0x80988B20] + npc/tex/pgn_7_tmem_txt: + addrs: [0x80988B20, 0x809890A0] + npc/tex/pgn_8_pal: + addrs: [0x809890A0, 0x809890C0] + type: pal16 + npc/tex/pgn_8_eye1_TA_tex_txt: + addrs: [0x809890C0, 0x809891C0] + npc/tex/pgn_8_eye2_TA_tex_txt: + addrs: [0x809891C0, 0x809892C0] + npc/tex/pgn_8_eye3_TA_tex_txt: + addrs: [0x809892C0, 0x809893C0] + npc/tex/pgn_8_eye4_TA_tex_txt: + addrs: [0x809893C0, 0x809894C0] + npc/tex/pgn_8_eye5_TA_tex_txt: + addrs: [0x809894C0, 0x809895C0] + npc/tex/pgn_8_eye6_TA_tex_txt: + addrs: [0x809895C0, 0x809896C0] + npc/tex/pgn_8_eye7_TA_tex_txt: + addrs: [0x809896C0, 0x809897C0] + npc/tex/pgn_8_eye8_TA_tex_txt: + addrs: [0x809897C0, 0x809898C0] + npc/tex/pgn_8_tmem_txt: + addrs: [0x809898C0, 0x80989E40] + npc/mdl/pig_1_v: + addrs: [0x80989E40, 0x8098B230] + type: vtx + npc/tex/pig_1_pal: + addrs: [0x8098BAC0, 0x8098BAE0] + type: pal16 + npc/tex/pig_1_eye1_TA_tex_txt: + addrs: [0x8098BAE0, 0x8098BBE0] + npc/tex/pig_1_eye2_TA_tex_txt: + addrs: [0x8098BBE0, 0x8098BCE0] + npc/tex/pig_1_eye3_TA_tex_txt: + addrs: [0x8098BCE0, 0x8098BDE0] + npc/tex/pig_1_eye4_TA_tex_txt: + addrs: [0x8098BDE0, 0x8098BEE0] + npc/tex/pig_1_eye5_TA_tex_txt: + addrs: [0x8098BEE0, 0x8098BFE0] + npc/tex/pig_1_eye6_TA_tex_txt: + addrs: [0x8098BFE0, 0x8098C0E0] + npc/tex/pig_1_eye7_TA_tex_txt: + addrs: [0x8098C0E0, 0x8098C1E0] + npc/tex/pig_1_eye8_TA_tex_txt: + addrs: [0x8098C1E0, 0x8098C2E0] + npc/tex/pig_1_mouth1_TA_tex_txt: + addrs: [0x8098C2E0, 0x8098C3E0] + npc/tex/pig_1_mouth2_TA_tex_txt: + addrs: [0x8098C3E0, 0x8098C4E0] + npc/tex/pig_1_mouth3_TA_tex_txt: + addrs: [0x8098C4E0, 0x8098C5E0] + npc/tex/pig_1_mouth4_TA_tex_txt: + addrs: [0x8098C5E0, 0x8098C6E0] + npc/tex/pig_1_mouth5_TA_tex_txt: + addrs: [0x8098C6E0, 0x8098C7E0] + npc/tex/pig_1_mouth6_TA_tex_txt: + addrs: [0x8098C7E0, 0x8098C8E0] + npc/tex/pig_1_tmem_txt: + addrs: [0x8098C8E0, 0x8098CC60] + npc/tex/pig_2_pal: + addrs: [0x8098CC60, 0x8098CC80] + type: pal16 + npc/tex/pig_2_eye1_TA_tex_txt: + addrs: [0x8098CC80, 0x8098CD80] + npc/tex/pig_2_eye2_TA_tex_txt: + addrs: [0x8098CD80, 0x8098CE80] + npc/tex/pig_2_eye3_TA_tex_txt: + addrs: [0x8098CE80, 0x8098CF80] + npc/tex/pig_2_eye4_TA_tex_txt: + addrs: [0x8098CF80, 0x8098D080] + npc/tex/pig_2_eye5_TA_tex_txt: + addrs: [0x8098D080, 0x8098D180] + npc/tex/pig_2_eye6_TA_tex_txt: + addrs: [0x8098D180, 0x8098D280] + npc/tex/pig_2_eye7_TA_tex_txt: + addrs: [0x8098D280, 0x8098D380] + npc/tex/pig_2_eye8_TA_tex_txt: + addrs: [0x8098D380, 0x8098D480] + npc/tex/pig_2_mouth1_TA_tex_txt: + addrs: [0x8098D480, 0x8098D580] + npc/tex/pig_2_mouth2_TA_tex_txt: + addrs: [0x8098D580, 0x8098D680] + npc/tex/pig_2_mouth3_TA_tex_txt: + addrs: [0x8098D680, 0x8098D780] + npc/tex/pig_2_mouth4_TA_tex_txt: + addrs: [0x8098D780, 0x8098D880] + npc/tex/pig_2_mouth5_TA_tex_txt: + addrs: [0x8098D880, 0x8098D980] + npc/tex/pig_2_mouth6_TA_tex_txt: + addrs: [0x8098D980, 0x8098DA80] + npc/tex/pig_2_tmem_txt: + addrs: [0x8098DA80, 0x8098DE00] + npc/tex/pig_11_pal: + addrs: [0x8098DE00, 0x8098DE20] + type: pal16 + npc/tex/pig_11_eye1_TA_tex_txt: + addrs: [0x8098DE20, 0x8098DF20] + npc/tex/pig_11_eye2_TA_tex_txt: + addrs: [0x8098DF20, 0x8098E020] + npc/tex/pig_11_eye3_TA_tex_txt: + addrs: [0x8098E020, 0x8098E120] + npc/tex/pig_11_eye4_TA_tex_txt: + addrs: [0x8098E120, 0x8098E220] + npc/tex/pig_11_eye5_TA_tex_txt: + addrs: [0x8098E220, 0x8098E320] + npc/tex/pig_11_eye6_TA_tex_txt: + addrs: [0x8098E320, 0x8098E420] + npc/tex/pig_11_eye7_TA_tex_txt: + addrs: [0x8098E420, 0x8098E520] + npc/tex/pig_11_eye8_TA_tex_txt: + addrs: [0x8098E520, 0x8098E620] + npc/tex/pig_11_mouth1_TA_tex_txt: + addrs: [0x8098E620, 0x8098E720] + npc/tex/pig_11_mouth2_TA_tex_txt: + addrs: [0x8098E720, 0x8098E820] + npc/tex/pig_11_mouth3_TA_tex_txt: + addrs: [0x8098E820, 0x8098E920] + npc/tex/pig_11_mouth4_TA_tex_txt: + addrs: [0x8098E920, 0x8098EA20] + npc/tex/pig_11_mouth5_TA_tex_txt: + addrs: [0x8098EA20, 0x8098EB20] + npc/tex/pig_11_mouth6_TA_tex_txt: + addrs: [0x8098EB20, 0x8098EC20] + npc/tex/pig_11_tmem_txt: + addrs: [0x8098EC20, 0x8098EFA0] + npc/tex/pig_3_pal: + addrs: [0x8098EFA0, 0x8098EFC0] + type: pal16 + npc/tex/pig_3_eye1_TA_tex_txt: + addrs: [0x8098EFC0, 0x8098F0C0] + npc/tex/pig_3_eye2_TA_tex_txt: + addrs: [0x8098F0C0, 0x8098F1C0] + npc/tex/pig_3_eye3_TA_tex_txt: + addrs: [0x8098F1C0, 0x8098F2C0] + npc/tex/pig_3_eye4_TA_tex_txt: + addrs: [0x8098F2C0, 0x8098F3C0] + npc/tex/pig_3_eye5_TA_tex_txt: + addrs: [0x8098F3C0, 0x8098F4C0] + npc/tex/pig_3_eye6_TA_tex_txt: + addrs: [0x8098F4C0, 0x8098F5C0] + npc/tex/pig_3_eye7_TA_tex_txt: + addrs: [0x8098F5C0, 0x8098F6C0] + npc/tex/pig_3_eye8_TA_tex_txt: + addrs: [0x8098F6C0, 0x8098F7C0] + npc/tex/pig_3_mouth1_TA_tex_txt: + addrs: [0x8098F7C0, 0x8098F8C0] + npc/tex/pig_3_mouth2_TA_tex_txt: + addrs: [0x8098F8C0, 0x8098F9C0] + npc/tex/pig_3_mouth3_TA_tex_txt: + addrs: [0x8098F9C0, 0x8098FAC0] + npc/tex/pig_3_mouth4_TA_tex_txt: + addrs: [0x8098FAC0, 0x8098FBC0] + npc/tex/pig_3_mouth5_TA_tex_txt: + addrs: [0x8098FBC0, 0x8098FCC0] + npc/tex/pig_3_mouth6_TA_tex_txt: + addrs: [0x8098FCC0, 0x8098FDC0] + npc/tex/pig_3_tmem_txt: + addrs: [0x8098FDC0, 0x80990140] + npc/tex/pig_4_pal: + addrs: [0x80990140, 0x80990160] + type: pal16 + npc/tex/pig_4_eye1_TA_tex_txt: + addrs: [0x80990160, 0x80990260] + npc/tex/pig_4_eye2_TA_tex_txt: + addrs: [0x80990260, 0x80990360] + npc/tex/pig_4_eye3_TA_tex_txt: + addrs: [0x80990360, 0x80990460] + npc/tex/pig_4_eye4_TA_tex_txt: + addrs: [0x80990460, 0x80990560] + npc/tex/pig_4_eye5_TA_tex_txt: + addrs: [0x80990560, 0x80990660] + npc/tex/pig_4_eye6_TA_tex_txt: + addrs: [0x80990660, 0x80990760] + npc/tex/pig_4_eye7_TA_tex_txt: + addrs: [0x80990760, 0x80990860] + npc/tex/pig_4_eye8_TA_tex_txt: + addrs: [0x80990860, 0x80990960] + npc/tex/pig_4_mouth1_TA_tex_txt: + addrs: [0x80990960, 0x80990A60] + npc/tex/pig_4_mouth2_TA_tex_txt: + addrs: [0x80990A60, 0x80990B60] + npc/tex/pig_4_mouth3_TA_tex_txt: + addrs: [0x80990B60, 0x80990C60] + npc/tex/pig_4_mouth4_TA_tex_txt: + addrs: [0x80990C60, 0x80990D60] + npc/tex/pig_4_mouth5_TA_tex_txt: + addrs: [0x80990D60, 0x80990E60] + npc/tex/pig_4_mouth6_TA_tex_txt: + addrs: [0x80990E60, 0x80990F60] + npc/tex/pig_4_tmem_txt: + addrs: [0x80990F60, 0x809912E0] + npc/tex/pig_5_pal: + addrs: [0x809912E0, 0x80991300] + type: pal16 + npc/tex/pig_5_eye1_TA_tex_txt: + addrs: [0x80991300, 0x80991400] + npc/tex/pig_5_eye2_TA_tex_txt: + addrs: [0x80991400, 0x80991500] + npc/tex/pig_5_eye3_TA_tex_txt: + addrs: [0x80991500, 0x80991600] + npc/tex/pig_5_eye4_TA_tex_txt: + addrs: [0x80991600, 0x80991700] + npc/tex/pig_5_eye5_TA_tex_txt: + addrs: [0x80991700, 0x80991800] + npc/tex/pig_5_eye6_TA_tex_txt: + addrs: [0x80991800, 0x80991900] + npc/tex/pig_5_eye7_TA_tex_txt: + addrs: [0x80991900, 0x80991A00] + npc/tex/pig_5_eye8_TA_tex_txt: + addrs: [0x80991A00, 0x80991B00] + npc/tex/pig_5_mouth1_TA_tex_txt: + addrs: [0x80991B00, 0x80991C00] + npc/tex/pig_5_mouth2_TA_tex_txt: + addrs: [0x80991C00, 0x80991D00] + npc/tex/pig_5_mouth3_TA_tex_txt: + addrs: [0x80991D00, 0x80991E00] + npc/tex/pig_5_mouth4_TA_tex_txt: + addrs: [0x80991E00, 0x80991F00] + npc/tex/pig_5_mouth5_TA_tex_txt: + addrs: [0x80991F00, 0x80992000] + npc/tex/pig_5_mouth6_TA_tex_txt: + addrs: [0x80992000, 0x80992100] + npc/tex/pig_5_tmem_txt: + addrs: [0x80992100, 0x80992480] + npc/tex/pig_6_pal: + addrs: [0x80992480, 0x809924A0] + type: pal16 + npc/tex/pig_6_eye1_TA_tex_txt: + addrs: [0x809924A0, 0x809925A0] + npc/tex/pig_6_eye2_TA_tex_txt: + addrs: [0x809925A0, 0x809926A0] + npc/tex/pig_6_eye3_TA_tex_txt: + addrs: [0x809926A0, 0x809927A0] + npc/tex/pig_6_eye4_TA_tex_txt: + addrs: [0x809927A0, 0x809928A0] + npc/tex/pig_6_eye5_TA_tex_txt: + addrs: [0x809928A0, 0x809929A0] + npc/tex/pig_6_eye6_TA_tex_txt: + addrs: [0x809929A0, 0x80992AA0] + npc/tex/pig_6_eye7_TA_tex_txt: + addrs: [0x80992AA0, 0x80992BA0] + npc/tex/pig_6_eye8_TA_tex_txt: + addrs: [0x80992BA0, 0x80992CA0] + npc/tex/pig_6_mouth1_TA_tex_txt: + addrs: [0x80992CA0, 0x80992DA0] + npc/tex/pig_6_mouth2_TA_tex_txt: + addrs: [0x80992DA0, 0x80992EA0] + npc/tex/pig_6_mouth3_TA_tex_txt: + addrs: [0x80992EA0, 0x80992FA0] + npc/tex/pig_6_mouth4_TA_tex_txt: + addrs: [0x80992FA0, 0x809930A0] + npc/tex/pig_6_mouth5_TA_tex_txt: + addrs: [0x809930A0, 0x809931A0] + npc/tex/pig_6_mouth6_TA_tex_txt: + addrs: [0x809931A0, 0x809932A0] + npc/tex/pig_6_tmem_txt: + addrs: [0x809932A0, 0x80993620] + npc/tex/pig_7_pal: + addrs: [0x80993620, 0x80993640] + type: pal16 + npc/tex/pig_7_eye1_TA_tex_txt: + addrs: [0x80993640, 0x80993740] + npc/tex/pig_7_eye2_TA_tex_txt: + addrs: [0x80993740, 0x80993840] + npc/tex/pig_7_eye3_TA_tex_txt: + addrs: [0x80993840, 0x80993940] + npc/tex/pig_7_eye4_TA_tex_txt: + addrs: [0x80993940, 0x80993A40] + npc/tex/pig_7_eye5_TA_tex_txt: + addrs: [0x80993A40, 0x80993B40] + npc/tex/pig_7_eye6_TA_tex_txt: + addrs: [0x80993B40, 0x80993C40] + npc/tex/pig_7_eye7_TA_tex_txt: + addrs: [0x80993C40, 0x80993D40] + npc/tex/pig_7_eye8_TA_tex_txt: + addrs: [0x80993D40, 0x80993E40] + npc/tex/pig_7_mouth1_TA_tex_txt: + addrs: [0x80993E40, 0x80993F40] + npc/tex/pig_7_mouth2_TA_tex_txt: + addrs: [0x80993F40, 0x80994040] + npc/tex/pig_7_mouth3_TA_tex_txt: + addrs: [0x80994040, 0x80994140] + npc/tex/pig_7_mouth4_TA_tex_txt: + addrs: [0x80994140, 0x80994240] + npc/tex/pig_7_mouth5_TA_tex_txt: + addrs: [0x80994240, 0x80994340] + npc/tex/pig_7_mouth6_TA_tex_txt: + addrs: [0x80994340, 0x80994440] + npc/tex/pig_7_tmem_txt: + addrs: [0x80994440, 0x809947C0] + npc/tex/pig_8_pal: + addrs: [0x809947C0, 0x809947E0] + type: pal16 + npc/tex/pig_8_eye1_TA_tex_txt: + addrs: [0x809947E0, 0x809948E0] + npc/tex/pig_8_eye2_TA_tex_txt: + addrs: [0x809948E0, 0x809949E0] + npc/tex/pig_8_eye3_TA_tex_txt: + addrs: [0x809949E0, 0x80994AE0] + npc/tex/pig_8_eye4_TA_tex_txt: + addrs: [0x80994AE0, 0x80994BE0] + npc/tex/pig_8_eye5_TA_tex_txt: + addrs: [0x80994BE0, 0x80994CE0] + npc/tex/pig_8_eye6_TA_tex_txt: + addrs: [0x80994CE0, 0x80994DE0] + npc/tex/pig_8_eye7_TA_tex_txt: + addrs: [0x80994DE0, 0x80994EE0] + npc/tex/pig_8_eye8_TA_tex_txt: + addrs: [0x80994EE0, 0x80994FE0] + npc/tex/pig_8_mouth1_TA_tex_txt: + addrs: [0x80994FE0, 0x809950E0] + npc/tex/pig_8_mouth2_TA_tex_txt: + addrs: [0x809950E0, 0x809951E0] + npc/tex/pig_8_mouth3_TA_tex_txt: + addrs: [0x809951E0, 0x809952E0] + npc/tex/pig_8_mouth4_TA_tex_txt: + addrs: [0x809952E0, 0x809953E0] + npc/tex/pig_8_mouth5_TA_tex_txt: + addrs: [0x809953E0, 0x809954E0] + npc/tex/pig_8_mouth6_TA_tex_txt: + addrs: [0x809954E0, 0x809955E0] + npc/tex/pig_8_tmem_txt: + addrs: [0x809955E0, 0x80995960] + npc/tex/pig_9_pal: + addrs: [0x80995960, 0x80995980] + type: pal16 + npc/tex/pig_9_eye1_TA_tex_txt: + addrs: [0x80995980, 0x80995A80] + npc/tex/pig_9_eye2_TA_tex_txt: + addrs: [0x80995A80, 0x80995B80] + npc/tex/pig_9_eye3_TA_tex_txt: + addrs: [0x80995B80, 0x80995C80] + npc/tex/pig_9_eye4_TA_tex_txt: + addrs: [0x80995C80, 0x80995D80] + npc/tex/pig_9_eye5_TA_tex_txt: + addrs: [0x80995D80, 0x80995E80] + npc/tex/pig_9_eye6_TA_tex_txt: + addrs: [0x80995E80, 0x80995F80] + npc/tex/pig_9_eye7_TA_tex_txt: + addrs: [0x80995F80, 0x80996080] + npc/tex/pig_9_eye8_TA_tex_txt: + addrs: [0x80996080, 0x80996180] + npc/tex/pig_9_mouth1_TA_tex_txt: + addrs: [0x80996180, 0x80996280] + npc/tex/pig_9_mouth2_TA_tex_txt: + addrs: [0x80996280, 0x80996380] + npc/tex/pig_9_mouth3_TA_tex_txt: + addrs: [0x80996380, 0x80996480] + npc/tex/pig_9_mouth4_TA_tex_txt: + addrs: [0x80996480, 0x80996580] + npc/tex/pig_9_mouth5_TA_tex_txt: + addrs: [0x80996580, 0x80996680] + npc/tex/pig_9_mouth6_TA_tex_txt: + addrs: [0x80996680, 0x80996780] + npc/tex/pig_9_tmem_txt: + addrs: [0x80996780, 0x80996B00] + npc/tex/pig_10_pal: + addrs: [0x80996B00, 0x80996B20] + type: pal16 + npc/tex/pig_10_eye1_TA_tex_txt: + addrs: [0x80996B20, 0x80996C20] + npc/tex/pig_10_eye2_TA_tex_txt: + addrs: [0x80996C20, 0x80996D20] + npc/tex/pig_10_eye3_TA_tex_txt: + addrs: [0x80996D20, 0x80996E20] + npc/tex/pig_10_eye4_TA_tex_txt: + addrs: [0x80996E20, 0x80996F20] + npc/tex/pig_10_eye5_TA_tex_txt: + addrs: [0x80996F20, 0x80997020] + npc/tex/pig_10_eye6_TA_tex_txt: + addrs: [0x80997020, 0x80997120] + npc/tex/pig_10_eye7_TA_tex_txt: + addrs: [0x80997120, 0x80997220] + npc/tex/pig_10_eye8_TA_tex_txt: + addrs: [0x80997220, 0x80997320] + npc/tex/pig_10_mouth1_TA_tex_txt: + addrs: [0x80997320, 0x80997420] + npc/tex/pig_10_mouth2_TA_tex_txt: + addrs: [0x80997420, 0x80997520] + npc/tex/pig_10_mouth3_TA_tex_txt: + addrs: [0x80997520, 0x80997620] + npc/tex/pig_10_mouth4_TA_tex_txt: + addrs: [0x80997620, 0x80997720] + npc/tex/pig_10_mouth5_TA_tex_txt: + addrs: [0x80997720, 0x80997820] + npc/tex/pig_10_mouth6_TA_tex_txt: + addrs: [0x80997820, 0x80997920] + npc/tex/pig_10_tmem_txt: + addrs: [0x80997920, 0x80997CA0] + npc/mdl/pla_1_v: + addrs: [0x80997CA0, 0x80999950] + type: vtx + npc/mdl/plc_1_v: + addrs: [0x8099A318, 0x8099BA48] + type: vtx + npc/tex/plc_1_pal: + addrs: [0x8099C420, 0x8099C440] + type: pal16 + npc/tex/plc_1_eye1_TA_tex_txt: + addrs: [0x8099C440, 0x8099C540] + npc/tex/plc_1_eye2_TA_tex_txt: + addrs: [0x8099C540, 0x8099C640] + npc/tex/plc_1_eye3_TA_tex_txt: + addrs: [0x8099C640, 0x8099C740] + npc/tex/plc_1_eye4_TA_tex_txt: + addrs: [0x8099C740, 0x8099C840] + npc/tex/plc_1_eye5_TA_tex_txt: + addrs: [0x8099C840, 0x8099C940] + npc/tex/plc_1_eye6_TA_tex_txt: + addrs: [0x8099C940, 0x8099CA40] + npc/tex/plc_1_eye7_TA_tex_txt: + addrs: [0x8099CA40, 0x8099CB40] + npc/tex/plc_1_eye8_TA_tex_txt: + addrs: [0x8099CB40, 0x8099CC40] + npc/tex/plc_1_mouth1_TA_tex_txt: + addrs: [0x8099CC40, 0x8099CD40] + npc/tex/plc_1_mouth2_TA_tex_txt: + addrs: [0x8099CD40, 0x8099CE40] + npc/tex/plc_1_mouth3_TA_tex_txt: + addrs: [0x8099CE40, 0x8099CF40] + npc/tex/plc_1_mouth4_TA_tex_txt: + addrs: [0x8099CF40, 0x8099D040] + npc/tex/plc_1_mouth5_TA_tex_txt: + addrs: [0x8099D040, 0x8099D140] + npc/tex/plc_1_mouth6_TA_tex_txt: + addrs: [0x8099D140, 0x8099D240] + npc/tex/plc_1_tmem_txt: + addrs: [0x8099D240, 0x8099D900] + npc/tex/pla_1_pal: + addrs: [0x8099D900, 0x8099D920] + type: pal16 + npc/tex/pla_1_eye1_TA_tex_txt: + addrs: [0x8099D920, 0x8099DA20] + npc/tex/pla_1_eye2_TA_tex_txt: + addrs: [0x8099DA20, 0x8099DB20] + npc/tex/pla_1_eye3_TA_tex_txt: + addrs: [0x8099DB20, 0x8099DC20] + npc/tex/pla_1_eye4_TA_tex_txt: + addrs: [0x8099DC20, 0x8099DD20] + npc/tex/pla_1_eye5_TA_tex_txt: + addrs: [0x8099DD20, 0x8099DE20] + npc/tex/pla_1_eye6_TA_tex_txt: + addrs: [0x8099DE20, 0x8099DF20] + npc/tex/pla_1_eye7_TA_tex_txt: + addrs: [0x8099DF20, 0x8099E020] + npc/tex/pla_1_eye8_TA_tex_txt: + addrs: [0x8099E020, 0x8099E120] + npc/tex/pla_1_mouth1_TA_tex_txt: + addrs: [0x8099E120, 0x8099E220] + npc/tex/pla_1_mouth2_TA_tex_txt: + addrs: [0x8099E220, 0x8099E320] + npc/tex/pla_1_mouth3_TA_tex_txt: + addrs: [0x8099E320, 0x8099E420] + npc/tex/pla_1_mouth4_TA_tex_txt: + addrs: [0x8099E420, 0x8099E520] + npc/tex/pla_1_mouth5_TA_tex_txt: + addrs: [0x8099E520, 0x8099E620] + npc/tex/pla_1_mouth6_TA_tex_txt: + addrs: [0x8099E620, 0x8099E720] + npc/tex/pla_1_tmem_txt: + addrs: [0x8099E720, 0x8099ECA0] + npc/mdl/pga_1_v: + addrs: [0x8099ECA0, 0x809A06C0] + type: vtx + npc/tex/pga_1_pal: + addrs: [0x809A11A0, 0x809A11C0] + type: pal16 + npc/tex/pga_1_eye1_TA_tex_txt: + addrs: [0x809A11C0, 0x809A12C0] + npc/tex/pga_1_eye2_TA_tex_txt: + addrs: [0x809A12C0, 0x809A13C0] + npc/tex/pga_1_eye3_TA_tex_txt: + addrs: [0x809A13C0, 0x809A14C0] + npc/tex/pga_1_eye4_TA_tex_txt: + addrs: [0x809A14C0, 0x809A15C0] + npc/tex/pga_1_eye5_TA_tex_txt: + addrs: [0x809A15C0, 0x809A16C0] + npc/tex/pga_1_eye6_TA_tex_txt: + addrs: [0x809A16C0, 0x809A17C0] + npc/tex/pga_1_eye7_TA_tex_txt: + addrs: [0x809A17C0, 0x809A18C0] + npc/tex/pga_1_eye8_TA_tex_txt: + addrs: [0x809A18C0, 0x809A19C0] + npc/tex/pga_1_tmem_txt: + addrs: [0x809A19C0, 0x809A2000] + npc/mdl/pgb_1_v: + addrs: [0x809A2000, 0x809A3990] + type: vtx + npc/tex/pgb_1_pal: + addrs: [0x809A4460, 0x809A4480] + type: pal16 + npc/tex/pgb_1_eye1_TA_tex_txt: + addrs: [0x809A4480, 0x809A4580] + npc/tex/pgb_1_eye2_TA_tex_txt: + addrs: [0x809A4580, 0x809A4680] + npc/tex/pgb_1_eye3_TA_tex_txt: + addrs: [0x809A4680, 0x809A4780] + npc/tex/pgb_1_eye4_TA_tex_txt: + addrs: [0x809A4780, 0x809A4880] + npc/tex/pgb_1_eye5_TA_tex_txt: + addrs: [0x809A4880, 0x809A4980] + npc/tex/pgb_1_eye6_TA_tex_txt: + addrs: [0x809A4980, 0x809A4A80] + npc/tex/pgb_1_eye7_TA_tex_txt: + addrs: [0x809A4A80, 0x809A4B80] + npc/tex/pgb_1_eye8_TA_tex_txt: + addrs: [0x809A4B80, 0x809A4C80] + npc/tex/pgb_1_tmem_txt: + addrs: [0x809A4C80, 0x809A5400] + npc/mdl/plb_1_v: + addrs: [0x809A5400, 0x809A6E80] + type: vtx + npc/tex/plb_1_pal: + addrs: [0x809A7980, 0x809A79A0] + type: pal16 + npc/tex/plb_1_eye1_TA_tex_txt: + addrs: [0x809A79A0, 0x809A7AA0] + npc/tex/plb_1_eye2_TA_tex_txt: + addrs: [0x809A7AA0, 0x809A7BA0] + npc/tex/plb_1_eye3_TA_tex_txt: + addrs: [0x809A7BA0, 0x809A7CA0] + npc/tex/plb_1_eye4_TA_tex_txt: + addrs: [0x809A7CA0, 0x809A7DA0] + npc/tex/plb_1_eye5_TA_tex_txt: + addrs: [0x809A7DA0, 0x809A7EA0] + npc/tex/plb_1_eye6_TA_tex_txt: + addrs: [0x809A7EA0, 0x809A7FA0] + npc/tex/plb_1_eye7_TA_tex_txt: + addrs: [0x809A7FA0, 0x809A80A0] + npc/tex/plb_1_eye8_TA_tex_txt: + addrs: [0x809A80A0, 0x809A81A0] + npc/tex/plb_1_tmem_txt: + addrs: [0x809A81A0, 0x809A8920] + npc/mdl/rbt_1_v: + addrs: [0x809A8920, 0x809A9EC0] + type: vtx + npc/tex/rbt_1_pal: + addrs: [0x809AA7C0, 0x809AA7E0] + type: pal16 + npc/tex/rbt_1_eye1_TA_tex_txt: + addrs: [0x809AA7E0, 0x809AA8E0] + npc/tex/rbt_1_eye2_TA_tex_txt: + addrs: [0x809AA8E0, 0x809AA9E0] + npc/tex/rbt_1_eye3_TA_tex_txt: + addrs: [0x809AA9E0, 0x809AAAE0] + npc/tex/rbt_1_eye4_TA_tex_txt: + addrs: [0x809AAAE0, 0x809AABE0] + npc/tex/rbt_1_eye5_TA_tex_txt: + addrs: [0x809AABE0, 0x809AACE0] + npc/tex/rbt_1_eye6_TA_tex_txt: + addrs: [0x809AACE0, 0x809AADE0] + npc/tex/rbt_1_eye7_TA_tex_txt: + addrs: [0x809AADE0, 0x809AAEE0] + npc/tex/rbt_1_eye8_TA_tex_txt: + addrs: [0x809AAEE0, 0x809AAFE0] + npc/tex/rbt_1_mouth1_TA_tex_txt: + addrs: [0x809AAFE0, 0x809AB0E0] + npc/tex/rbt_1_mouth2_TA_tex_txt: + addrs: [0x809AB0E0, 0x809AB1E0] + npc/tex/rbt_1_mouth3_TA_tex_txt: + addrs: [0x809AB1E0, 0x809AB2E0] + npc/tex/rbt_1_mouth4_TA_tex_txt: + addrs: [0x809AB2E0, 0x809AB3E0] + npc/tex/rbt_1_mouth5_TA_tex_txt: + addrs: [0x809AB3E0, 0x809AB4E0] + npc/tex/rbt_1_mouth6_TA_tex_txt: + addrs: [0x809AB4E0, 0x809AB5E0] + npc/tex/rbt_1_tmem_txt: + addrs: [0x809AB5E0, 0x809AB9E0] + npc/tex/rbt_2_pal: + addrs: [0x809AB9E0, 0x809ABA00] + type: pal16 + npc/tex/rbt_2_eye1_TA_tex_txt: + addrs: [0x809ABA00, 0x809ABB00] + npc/tex/rbt_2_eye2_TA_tex_txt: + addrs: [0x809ABB00, 0x809ABC00] + npc/tex/rbt_2_eye3_TA_tex_txt: + addrs: [0x809ABC00, 0x809ABD00] + npc/tex/rbt_2_eye4_TA_tex_txt: + addrs: [0x809ABD00, 0x809ABE00] + npc/tex/rbt_2_eye5_TA_tex_txt: + addrs: [0x809ABE00, 0x809ABF00] + npc/tex/rbt_2_eye6_TA_tex_txt: + addrs: [0x809ABF00, 0x809AC000] + npc/tex/rbt_2_eye7_TA_tex_txt: + addrs: [0x809AC000, 0x809AC100] + npc/tex/rbt_2_eye8_TA_tex_txt: + addrs: [0x809AC100, 0x809AC200] + npc/tex/rbt_2_mouth1_TA_tex_txt: + addrs: [0x809AC200, 0x809AC300] + npc/tex/rbt_2_mouth2_TA_tex_txt: + addrs: [0x809AC300, 0x809AC400] + npc/tex/rbt_2_mouth3_TA_tex_txt: + addrs: [0x809AC400, 0x809AC500] + npc/tex/rbt_2_mouth4_TA_tex_txt: + addrs: [0x809AC500, 0x809AC600] + npc/tex/rbt_2_mouth5_TA_tex_txt: + addrs: [0x809AC600, 0x809AC700] + npc/tex/rbt_2_mouth6_TA_tex_txt: + addrs: [0x809AC700, 0x809AC800] + npc/tex/rbt_2_tmem_txt: + addrs: [0x809AC800, 0x809ACC00] + npc/tex/rbt_11_pal: + addrs: [0x809ACC00, 0x809ACC20] + type: pal16 + npc/tex/rbt_11_eye1_TA_tex_txt: + addrs: [0x809ACC20, 0x809ACD20] + npc/tex/rbt_11_eye2_TA_tex_txt: + addrs: [0x809ACD20, 0x809ACE20] + npc/tex/rbt_11_eye3_TA_tex_txt: + addrs: [0x809ACE20, 0x809ACF20] + npc/tex/rbt_11_eye4_TA_tex_txt: + addrs: [0x809ACF20, 0x809AD020] + npc/tex/rbt_11_eye5_TA_tex_txt: + addrs: [0x809AD020, 0x809AD120] + npc/tex/rbt_11_eye6_TA_tex_txt: + addrs: [0x809AD120, 0x809AD220] + npc/tex/rbt_11_eye7_TA_tex_txt: + addrs: [0x809AD220, 0x809AD320] + npc/tex/rbt_11_eye8_TA_tex_txt: + addrs: [0x809AD320, 0x809AD420] + npc/tex/rbt_11_mouth1_TA_tex_txt: + addrs: [0x809AD420, 0x809AD520] + npc/tex/rbt_11_mouth2_TA_tex_txt: + addrs: [0x809AD520, 0x809AD620] + npc/tex/rbt_11_mouth3_TA_tex_txt: + addrs: [0x809AD620, 0x809AD720] + npc/tex/rbt_11_mouth4_TA_tex_txt: + addrs: [0x809AD720, 0x809AD820] + npc/tex/rbt_11_mouth5_TA_tex_txt: + addrs: [0x809AD820, 0x809AD920] + npc/tex/rbt_11_mouth6_TA_tex_txt: + addrs: [0x809AD920, 0x809ADA20] + npc/tex/rbt_11_tmem_txt: + addrs: [0x809ADA20, 0x809ADE20] + npc/tex/rbt_3_pal: + addrs: [0x809ADE20, 0x809ADE40] + type: pal16 + npc/tex/rbt_3_eye1_TA_tex_txt: + addrs: [0x809ADE40, 0x809ADF40] + npc/tex/rbt_3_eye2_TA_tex_txt: + addrs: [0x809ADF40, 0x809AE040] + npc/tex/rbt_3_eye3_TA_tex_txt: + addrs: [0x809AE040, 0x809AE140] + npc/tex/rbt_3_eye4_TA_tex_txt: + addrs: [0x809AE140, 0x809AE240] + npc/tex/rbt_3_eye5_TA_tex_txt: + addrs: [0x809AE240, 0x809AE340] + npc/tex/rbt_3_eye6_TA_tex_txt: + addrs: [0x809AE340, 0x809AE440] + npc/tex/rbt_3_eye7_TA_tex_txt: + addrs: [0x809AE440, 0x809AE540] + npc/tex/rbt_3_eye8_TA_tex_txt: + addrs: [0x809AE540, 0x809AE640] + npc/tex/rbt_3_mouth1_TA_tex_txt: + addrs: [0x809AE640, 0x809AE740] + npc/tex/rbt_3_mouth2_TA_tex_txt: + addrs: [0x809AE740, 0x809AE840] + npc/tex/rbt_3_mouth3_TA_tex_txt: + addrs: [0x809AE840, 0x809AE940] + npc/tex/rbt_3_mouth4_TA_tex_txt: + addrs: [0x809AE940, 0x809AEA40] + npc/tex/rbt_3_mouth5_TA_tex_txt: + addrs: [0x809AEA40, 0x809AEB40] + npc/tex/rbt_3_mouth6_TA_tex_txt: + addrs: [0x809AEB40, 0x809AEC40] + npc/tex/rbt_3_tmem_txt: + addrs: [0x809AEC40, 0x809AF040] + npc/tex/rbt_4_pal: + addrs: [0x809AF040, 0x809AF060] + type: pal16 + npc/tex/rbt_4_eye1_TA_tex_txt: + addrs: [0x809AF060, 0x809AF160] + npc/tex/rbt_4_eye2_TA_tex_txt: + addrs: [0x809AF160, 0x809AF260] + npc/tex/rbt_4_eye3_TA_tex_txt: + addrs: [0x809AF260, 0x809AF360] + npc/tex/rbt_4_eye4_TA_tex_txt: + addrs: [0x809AF360, 0x809AF460] + npc/tex/rbt_4_eye5_TA_tex_txt: + addrs: [0x809AF460, 0x809AF560] + npc/tex/rbt_4_eye6_TA_tex_txt: + addrs: [0x809AF560, 0x809AF660] + npc/tex/rbt_4_eye7_TA_tex_txt: + addrs: [0x809AF660, 0x809AF760] + npc/tex/rbt_4_eye8_TA_tex_txt: + addrs: [0x809AF760, 0x809AF860] + npc/tex/rbt_4_mouth1_TA_tex_txt: + addrs: [0x809AF860, 0x809AF960] + npc/tex/rbt_4_mouth2_TA_tex_txt: + addrs: [0x809AF960, 0x809AFA60] + npc/tex/rbt_4_mouth3_TA_tex_txt: + addrs: [0x809AFA60, 0x809AFB60] + npc/tex/rbt_4_mouth4_TA_tex_txt: + addrs: [0x809AFB60, 0x809AFC60] + npc/tex/rbt_4_mouth5_TA_tex_txt: + addrs: [0x809AFC60, 0x809AFD60] + npc/tex/rbt_4_mouth6_TA_tex_txt: + addrs: [0x809AFD60, 0x809AFE60] + npc/tex/rbt_4_tmem_txt: + addrs: [0x809AFE60, 0x809B0260] + npc/tex/rbt_5_pal: + addrs: [0x809B0260, 0x809B0280] + type: pal16 + npc/tex/rbt_5_eye1_TA_tex_txt: + addrs: [0x809B0280, 0x809B0380] + npc/tex/rbt_5_eye2_TA_tex_txt: + addrs: [0x809B0380, 0x809B0480] + npc/tex/rbt_5_eye3_TA_tex_txt: + addrs: [0x809B0480, 0x809B0580] + npc/tex/rbt_5_eye4_TA_tex_txt: + addrs: [0x809B0580, 0x809B0680] + npc/tex/rbt_5_eye5_TA_tex_txt: + addrs: [0x809B0680, 0x809B0780] + npc/tex/rbt_5_eye6_TA_tex_txt: + addrs: [0x809B0780, 0x809B0880] + npc/tex/rbt_5_eye7_TA_tex_txt: + addrs: [0x809B0880, 0x809B0980] + npc/tex/rbt_5_eye8_TA_tex_txt: + addrs: [0x809B0980, 0x809B0A80] + npc/tex/rbt_5_mouth1_TA_tex_txt: + addrs: [0x809B0A80, 0x809B0B80] + npc/tex/rbt_5_mouth2_TA_tex_txt: + addrs: [0x809B0B80, 0x809B0C80] + npc/tex/rbt_5_mouth3_TA_tex_txt: + addrs: [0x809B0C80, 0x809B0D80] + npc/tex/rbt_5_mouth4_TA_tex_txt: + addrs: [0x809B0D80, 0x809B0E80] + npc/tex/rbt_5_mouth5_TA_tex_txt: + addrs: [0x809B0E80, 0x809B0F80] + npc/tex/rbt_5_mouth6_TA_tex_txt: + addrs: [0x809B0F80, 0x809B1080] + npc/tex/rbt_5_tmem_txt: + addrs: [0x809B1080, 0x809B1480] + npc/tex/rbt_6_pal: + addrs: [0x809B1480, 0x809B14A0] + type: pal16 + npc/tex/rbt_6_eye1_TA_tex_txt: + addrs: [0x809B14A0, 0x809B15A0] + npc/tex/rbt_6_eye2_TA_tex_txt: + addrs: [0x809B15A0, 0x809B16A0] + npc/tex/rbt_6_eye3_TA_tex_txt: + addrs: [0x809B16A0, 0x809B17A0] + npc/tex/rbt_6_eye4_TA_tex_txt: + addrs: [0x809B17A0, 0x809B18A0] + npc/tex/rbt_6_eye5_TA_tex_txt: + addrs: [0x809B18A0, 0x809B19A0] + npc/tex/rbt_6_eye6_TA_tex_txt: + addrs: [0x809B19A0, 0x809B1AA0] + npc/tex/rbt_6_eye7_TA_tex_txt: + addrs: [0x809B1AA0, 0x809B1BA0] + npc/tex/rbt_6_eye8_TA_tex_txt: + addrs: [0x809B1BA0, 0x809B1CA0] + npc/tex/rbt_6_mouth1_TA_tex_txt: + addrs: [0x809B1CA0, 0x809B1DA0] + npc/tex/rbt_6_mouth2_TA_tex_txt: + addrs: [0x809B1DA0, 0x809B1EA0] + npc/tex/rbt_6_mouth3_TA_tex_txt: + addrs: [0x809B1EA0, 0x809B1FA0] + npc/tex/rbt_6_mouth4_TA_tex_txt: + addrs: [0x809B1FA0, 0x809B20A0] + npc/tex/rbt_6_mouth5_TA_tex_txt: + addrs: [0x809B20A0, 0x809B21A0] + npc/tex/rbt_6_mouth6_TA_tex_txt: + addrs: [0x809B21A0, 0x809B22A0] + npc/tex/rbt_6_tmem_txt: + addrs: [0x809B22A0, 0x809B26A0] + npc/tex/rbt_7_pal: + addrs: [0x809B26A0, 0x809B26C0] + type: pal16 + npc/tex/rbt_7_eye1_TA_tex_txt: + addrs: [0x809B26C0, 0x809B27C0] + npc/tex/rbt_7_eye2_TA_tex_txt: + addrs: [0x809B27C0, 0x809B28C0] + npc/tex/rbt_7_eye3_TA_tex_txt: + addrs: [0x809B28C0, 0x809B29C0] + npc/tex/rbt_7_eye4_TA_tex_txt: + addrs: [0x809B29C0, 0x809B2AC0] + npc/tex/rbt_7_eye5_TA_tex_txt: + addrs: [0x809B2AC0, 0x809B2BC0] + npc/tex/rbt_7_eye6_TA_tex_txt: + addrs: [0x809B2BC0, 0x809B2CC0] + npc/tex/rbt_7_eye7_TA_tex_txt: + addrs: [0x809B2CC0, 0x809B2DC0] + npc/tex/rbt_7_eye8_TA_tex_txt: + addrs: [0x809B2DC0, 0x809B2EC0] + npc/tex/rbt_7_mouth1_TA_tex_txt: + addrs: [0x809B2EC0, 0x809B2FC0] + npc/tex/rbt_7_mouth2_TA_tex_txt: + addrs: [0x809B2FC0, 0x809B30C0] + npc/tex/rbt_7_mouth3_TA_tex_txt: + addrs: [0x809B30C0, 0x809B31C0] + npc/tex/rbt_7_mouth4_TA_tex_txt: + addrs: [0x809B31C0, 0x809B32C0] + npc/tex/rbt_7_mouth5_TA_tex_txt: + addrs: [0x809B32C0, 0x809B33C0] + npc/tex/rbt_7_mouth6_TA_tex_txt: + addrs: [0x809B33C0, 0x809B34C0] + npc/tex/rbt_7_tmem_txt: + addrs: [0x809B34C0, 0x809B38C0] + npc/tex/rbt_8_pal: + addrs: [0x809B38C0, 0x809B38E0] + type: pal16 + npc/tex/rbt_8_eye1_TA_tex_txt: + addrs: [0x809B38E0, 0x809B39E0] + npc/tex/rbt_8_eye2_TA_tex_txt: + addrs: [0x809B39E0, 0x809B3AE0] + npc/tex/rbt_8_eye3_TA_tex_txt: + addrs: [0x809B3AE0, 0x809B3BE0] + npc/tex/rbt_8_eye4_TA_tex_txt: + addrs: [0x809B3BE0, 0x809B3CE0] + npc/tex/rbt_8_eye5_TA_tex_txt: + addrs: [0x809B3CE0, 0x809B3DE0] + npc/tex/rbt_8_eye6_TA_tex_txt: + addrs: [0x809B3DE0, 0x809B3EE0] + npc/tex/rbt_8_eye7_TA_tex_txt: + addrs: [0x809B3EE0, 0x809B3FE0] + npc/tex/rbt_8_eye8_TA_tex_txt: + addrs: [0x809B3FE0, 0x809B40E0] + npc/tex/rbt_8_mouth1_TA_tex_txt: + addrs: [0x809B40E0, 0x809B41E0] + npc/tex/rbt_8_mouth2_TA_tex_txt: + addrs: [0x809B41E0, 0x809B42E0] + npc/tex/rbt_8_mouth3_TA_tex_txt: + addrs: [0x809B42E0, 0x809B43E0] + npc/tex/rbt_8_mouth4_TA_tex_txt: + addrs: [0x809B43E0, 0x809B44E0] + npc/tex/rbt_8_mouth5_TA_tex_txt: + addrs: [0x809B44E0, 0x809B45E0] + npc/tex/rbt_8_mouth6_TA_tex_txt: + addrs: [0x809B45E0, 0x809B46E0] + npc/tex/rbt_8_tmem_txt: + addrs: [0x809B46E0, 0x809B4AE0] + npc/tex/rbt_9_pal: + addrs: [0x809B4AE0, 0x809B4B00] + type: pal16 + npc/tex/rbt_9_eye1_TA_tex_txt: + addrs: [0x809B4B00, 0x809B4C00] + npc/tex/rbt_9_eye2_TA_tex_txt: + addrs: [0x809B4C00, 0x809B4D00] + npc/tex/rbt_9_eye3_TA_tex_txt: + addrs: [0x809B4D00, 0x809B4E00] + npc/tex/rbt_9_eye4_TA_tex_txt: + addrs: [0x809B4E00, 0x809B4F00] + npc/tex/rbt_9_eye5_TA_tex_txt: + addrs: [0x809B4F00, 0x809B5000] + npc/tex/rbt_9_eye6_TA_tex_txt: + addrs: [0x809B5000, 0x809B5100] + npc/tex/rbt_9_eye7_TA_tex_txt: + addrs: [0x809B5100, 0x809B5200] + npc/tex/rbt_9_eye8_TA_tex_txt: + addrs: [0x809B5200, 0x809B5300] + npc/tex/rbt_9_mouth1_TA_tex_txt: + addrs: [0x809B5300, 0x809B5400] + npc/tex/rbt_9_mouth2_TA_tex_txt: + addrs: [0x809B5400, 0x809B5500] + npc/tex/rbt_9_mouth3_TA_tex_txt: + addrs: [0x809B5500, 0x809B5600] + npc/tex/rbt_9_mouth4_TA_tex_txt: + addrs: [0x809B5600, 0x809B5700] + npc/tex/rbt_9_mouth5_TA_tex_txt: + addrs: [0x809B5700, 0x809B5800] + npc/tex/rbt_9_mouth6_TA_tex_txt: + addrs: [0x809B5800, 0x809B5900] + npc/tex/rbt_9_tmem_txt: + addrs: [0x809B5900, 0x809B5D00] + npc/tex/rbt_10_pal: + addrs: [0x809B5D00, 0x809B5D20] + type: pal16 + npc/tex/rbt_10_eye1_TA_tex_txt: + addrs: [0x809B5D20, 0x809B5E20] + npc/tex/rbt_10_eye2_TA_tex_txt: + addrs: [0x809B5E20, 0x809B5F20] + npc/tex/rbt_10_eye3_TA_tex_txt: + addrs: [0x809B5F20, 0x809B6020] + npc/tex/rbt_10_eye4_TA_tex_txt: + addrs: [0x809B6020, 0x809B6120] + npc/tex/rbt_10_eye5_TA_tex_txt: + addrs: [0x809B6120, 0x809B6220] + npc/tex/rbt_10_eye6_TA_tex_txt: + addrs: [0x809B6220, 0x809B6320] + npc/tex/rbt_10_eye7_TA_tex_txt: + addrs: [0x809B6320, 0x809B6420] + npc/tex/rbt_10_eye8_TA_tex_txt: + addrs: [0x809B6420, 0x809B6520] + npc/tex/rbt_10_mouth1_TA_tex_txt: + addrs: [0x809B6520, 0x809B6620] + npc/tex/rbt_10_mouth2_TA_tex_txt: + addrs: [0x809B6620, 0x809B6720] + npc/tex/rbt_10_mouth3_TA_tex_txt: + addrs: [0x809B6720, 0x809B6820] + npc/tex/rbt_10_mouth4_TA_tex_txt: + addrs: [0x809B6820, 0x809B6920] + npc/tex/rbt_10_mouth5_TA_tex_txt: + addrs: [0x809B6920, 0x809B6A20] + npc/tex/rbt_10_mouth6_TA_tex_txt: + addrs: [0x809B6A20, 0x809B6B20] + npc/tex/rbt_10_tmem_txt: + addrs: [0x809B6B20, 0x809B6F20] + npc/mdl/mob_1_v: + addrs: [0x809B6F20, 0x809B82D0] + type: vtx + npc/tex/mob_1_pal: + addrs: [0x809B8AA0, 0x809B8AC0] + type: pal16 + npc/tex/mob_1_eye1_TA_tex_txt: + addrs: [0x809B8AC0, 0x809B8BC0] + npc/tex/mob_1_eye2_TA_tex_txt: + addrs: [0x809B8BC0, 0x809B8CC0] + npc/tex/mob_1_eye3_TA_tex_txt: + addrs: [0x809B8CC0, 0x809B8DC0] + npc/tex/mob_1_eye4_TA_tex_txt: + addrs: [0x809B8DC0, 0x809B8EC0] + npc/tex/mob_1_eye5_TA_tex_txt: + addrs: [0x809B8EC0, 0x809B8FC0] + npc/tex/mob_1_eye6_TA_tex_txt: + addrs: [0x809B8FC0, 0x809B90C0] + npc/tex/mob_1_eye7_TA_tex_txt: + addrs: [0x809B90C0, 0x809B91C0] + npc/tex/mob_1_eye8_TA_tex_txt: + addrs: [0x809B91C0, 0x809B92C0] + npc/tex/mob_1_mouth1_TA_tex_txt: + addrs: [0x809B92C0, 0x809B93C0] + npc/tex/mob_1_mouth2_TA_tex_txt: + addrs: [0x809B93C0, 0x809B94C0] + npc/tex/mob_1_mouth3_TA_tex_txt: + addrs: [0x809B94C0, 0x809B95C0] + npc/tex/mob_1_mouth4_TA_tex_txt: + addrs: [0x809B95C0, 0x809B96C0] + npc/tex/mob_1_mouth5_TA_tex_txt: + addrs: [0x809B96C0, 0x809B97C0] + npc/tex/mob_1_mouth6_TA_tex_txt: + addrs: [0x809B97C0, 0x809B98C0] + npc/tex/mob_1_tmem_txt: + addrs: [0x809B98C0, 0x809B9F40] + npc/mdl/rhn_1_v: + addrs: [0x809BA340, 0x809BBF40] + type: vtx + npc/tex/rhn_1_pal: + addrs: [0x809BCB00, 0x809BCB20] + type: pal16 + npc/tex/rhn_1_eye1_TA_tex_txt: + addrs: [0x809BCB20, 0x809BCC20] + npc/tex/rhn_1_eye2_TA_tex_txt: + addrs: [0x809BCC20, 0x809BCD20] + npc/tex/rhn_1_eye3_TA_tex_txt: + addrs: [0x809BCD20, 0x809BCE20] + npc/tex/rhn_1_eye4_TA_tex_txt: + addrs: [0x809BCE20, 0x809BCF20] + npc/tex/rhn_1_eye5_TA_tex_txt: + addrs: [0x809BCF20, 0x809BD020] + npc/tex/rhn_1_eye6_TA_tex_txt: + addrs: [0x809BD020, 0x809BD120] + npc/tex/rhn_1_eye7_TA_tex_txt: + addrs: [0x809BD120, 0x809BD220] + npc/tex/rhn_1_eye8_TA_tex_txt: + addrs: [0x809BD220, 0x809BD320] + npc/tex/rhn_1_mouth1_TA_tex_txt: + addrs: [0x809BD320, 0x809BD420] + npc/tex/rhn_1_mouth2_TA_tex_txt: + addrs: [0x809BD420, 0x809BD520] + npc/tex/rhn_1_mouth3_TA_tex_txt: + addrs: [0x809BD520, 0x809BD620] + npc/tex/rhn_1_mouth4_TA_tex_txt: + addrs: [0x809BD620, 0x809BD720] + npc/tex/rhn_1_mouth5_TA_tex_txt: + addrs: [0x809BD720, 0x809BD820] + npc/tex/rhn_1_mouth6_TA_tex_txt: + addrs: [0x809BD820, 0x809BD920] + npc/tex/rhn_1_tmem_txt: + addrs: [0x809BD920, 0x809BDD20] + npc/tex/rhn_2_pal: + addrs: [0x809BDD20, 0x809BDD40] + type: pal16 + npc/tex/rhn_2_eye1_TA_tex_txt: + addrs: [0x809BDD40, 0x809BDE40] + npc/tex/rhn_2_eye2_TA_tex_txt: + addrs: [0x809BDE40, 0x809BDF40] + npc/tex/rhn_2_eye3_TA_tex_txt: + addrs: [0x809BDF40, 0x809BE040] + npc/tex/rhn_2_eye4_TA_tex_txt: + addrs: [0x809BE040, 0x809BE140] + npc/tex/rhn_2_eye5_TA_tex_txt: + addrs: [0x809BE140, 0x809BE240] + npc/tex/rhn_2_eye6_TA_tex_txt: + addrs: [0x809BE240, 0x809BE340] + npc/tex/rhn_2_eye7_TA_tex_txt: + addrs: [0x809BE340, 0x809BE440] + npc/tex/rhn_2_eye8_TA_tex_txt: + addrs: [0x809BE440, 0x809BE540] + npc/tex/rhn_2_mouth1_TA_tex_txt: + addrs: [0x809BE540, 0x809BE640] + npc/tex/rhn_2_mouth2_TA_tex_txt: + addrs: [0x809BE640, 0x809BE740] + npc/tex/rhn_2_mouth3_TA_tex_txt: + addrs: [0x809BE740, 0x809BE840] + npc/tex/rhn_2_mouth4_TA_tex_txt: + addrs: [0x809BE840, 0x809BE940] + npc/tex/rhn_2_mouth5_TA_tex_txt: + addrs: [0x809BE940, 0x809BEA40] + npc/tex/rhn_2_mouth6_TA_tex_txt: + addrs: [0x809BEA40, 0x809BEB40] + npc/tex/rhn_2_tmem_txt: + addrs: [0x809BEB40, 0x809BEF40] + npc/tex/rhn_3_pal: + addrs: [0x809BEF40, 0x809BEF60] + type: pal16 + npc/tex/rhn_3_eye1_TA_tex_txt: + addrs: [0x809BEF60, 0x809BF060] + npc/tex/rhn_3_eye2_TA_tex_txt: + addrs: [0x809BF060, 0x809BF160] + npc/tex/rhn_3_eye3_TA_tex_txt: + addrs: [0x809BF160, 0x809BF260] + npc/tex/rhn_3_eye4_TA_tex_txt: + addrs: [0x809BF260, 0x809BF360] + npc/tex/rhn_3_eye5_TA_tex_txt: + addrs: [0x809BF360, 0x809BF460] + npc/tex/rhn_3_eye6_TA_tex_txt: + addrs: [0x809BF460, 0x809BF560] + npc/tex/rhn_3_eye7_TA_tex_txt: + addrs: [0x809BF560, 0x809BF660] + npc/tex/rhn_3_eye8_TA_tex_txt: + addrs: [0x809BF660, 0x809BF760] + npc/tex/rhn_3_mouth1_TA_tex_txt: + addrs: [0x809BF760, 0x809BF860] + npc/tex/rhn_3_mouth2_TA_tex_txt: + addrs: [0x809BF860, 0x809BF960] + npc/tex/rhn_3_mouth3_TA_tex_txt: + addrs: [0x809BF960, 0x809BFA60] + npc/tex/rhn_3_mouth4_TA_tex_txt: + addrs: [0x809BFA60, 0x809BFB60] + npc/tex/rhn_3_mouth5_TA_tex_txt: + addrs: [0x809BFB60, 0x809BFC60] + npc/tex/rhn_3_mouth6_TA_tex_txt: + addrs: [0x809BFC60, 0x809BFD60] + npc/tex/rhn_3_tmem_txt: + addrs: [0x809BFD60, 0x809C0160] + npc/tex/rhn_4_pal: + addrs: [0x809C0160, 0x809C0180] + type: pal16 + npc/tex/rhn_4_eye1_TA_tex_txt: + addrs: [0x809C0180, 0x809C0280] + npc/tex/rhn_4_eye2_TA_tex_txt: + addrs: [0x809C0280, 0x809C0380] + npc/tex/rhn_4_eye3_TA_tex_txt: + addrs: [0x809C0380, 0x809C0480] + npc/tex/rhn_4_eye4_TA_tex_txt: + addrs: [0x809C0480, 0x809C0580] + npc/tex/rhn_4_eye5_TA_tex_txt: + addrs: [0x809C0580, 0x809C0680] + npc/tex/rhn_4_eye6_TA_tex_txt: + addrs: [0x809C0680, 0x809C0780] + npc/tex/rhn_4_eye7_TA_tex_txt: + addrs: [0x809C0780, 0x809C0880] + npc/tex/rhn_4_eye8_TA_tex_txt: + addrs: [0x809C0880, 0x809C0980] + npc/tex/rhn_4_mouth1_TA_tex_txt: + addrs: [0x809C0980, 0x809C0A80] + npc/tex/rhn_4_mouth2_TA_tex_txt: + addrs: [0x809C0A80, 0x809C0B80] + npc/tex/rhn_4_mouth3_TA_tex_txt: + addrs: [0x809C0B80, 0x809C0C80] + npc/tex/rhn_4_mouth4_TA_tex_txt: + addrs: [0x809C0C80, 0x809C0D80] + npc/tex/rhn_4_mouth5_TA_tex_txt: + addrs: [0x809C0D80, 0x809C0E80] + npc/tex/rhn_4_mouth6_TA_tex_txt: + addrs: [0x809C0E80, 0x809C0F80] + npc/tex/rhn_4_tmem_txt: + addrs: [0x809C0F80, 0x809C1380] + npc/mdl/snt_1_v: + addrs: [0x809C9148, 0x809CA508] + type: vtx + npc/tex/snt_1_pal: + addrs: [0x809CAD40, 0x809CAD60] + type: pal16 + npc/tex/snt_1_eye1_TA_tex_txt: + addrs: [0x809CAD60, 0x809CAE60] + npc/tex/snt_1_eye2_TA_tex_txt: + addrs: [0x809CAE60, 0x809CAF60] + npc/tex/snt_1_eye3_TA_tex_txt: + addrs: [0x809CAF60, 0x809CB060] + npc/tex/snt_1_eye4_TA_tex_txt: + addrs: [0x809CB060, 0x809CB160] + npc/tex/snt_1_eye5_TA_tex_txt: + addrs: [0x809CB160, 0x809CB260] + npc/tex/snt_1_eye6_TA_tex_txt: + addrs: [0x809CB260, 0x809CB360] + npc/tex/snt_1_eye7_TA_tex_txt: + addrs: [0x809CB360, 0x809CB460] + npc/tex/snt_1_eye8_TA_tex_txt: + addrs: [0x809CB460, 0x809CB560] + npc/tex/snt_1_mouth1_TA_tex_txt: + addrs: [0x809CB560, 0x809CB660] + npc/tex/snt_1_mouth2_TA_tex_txt: + addrs: [0x809CB660, 0x809CB760] + npc/tex/snt_1_mouth3_TA_tex_txt: + addrs: [0x809CB760, 0x809CB860] + npc/tex/snt_1_mouth4_TA_tex_txt: + addrs: [0x809CB860, 0x809CB960] + npc/tex/snt_1_mouth5_TA_tex_txt: + addrs: [0x809CB960, 0x809CBA60] + npc/tex/snt_1_mouth6_TA_tex_txt: + addrs: [0x809CBA60, 0x809CBB60] + npc/tex/snt_1_tmem_txt: + addrs: [0x809CBB60, 0x809CC1E0] + npc/mdl/wip_1_v: + addrs: [0x809CC1E0, 0x809CD8E0] + type: vtx + npc/tex/wip_1_pal: + addrs: [0x809CE180, 0x809CE1A0] + type: pal16 + npc/tex/wip_1_eye1_TA_tex_txt: + addrs: [0x809CE1A0, 0x809CE2A0] + npc/tex/wip_1_eye2_TA_tex_txt: + addrs: [0x809CE2A0, 0x809CE3A0] + npc/tex/wip_1_eye3_TA_tex_txt: + addrs: [0x809CE3A0, 0x809CE4A0] + npc/tex/wip_1_eye4_TA_tex_txt: + addrs: [0x809CE4A0, 0x809CE5A0] + npc/tex/wip_1_eye5_TA_tex_txt: + addrs: [0x809CE5A0, 0x809CE6A0] + npc/tex/wip_1_eye6_TA_tex_txt: + addrs: [0x809CE6A0, 0x809CE7A0] + npc/tex/wip_1_eye7_TA_tex_txt: + addrs: [0x809CE7A0, 0x809CE8A0] + npc/tex/wip_1_eye8_TA_tex_txt: + addrs: [0x809CE8A0, 0x809CE9A0] + npc/tex/wip_1_mouth1_TA_tex_txt: + addrs: [0x809CE9A0, 0x809CEAA0] + npc/tex/wip_1_mouth2_TA_tex_txt: + addrs: [0x809CEAA0, 0x809CEBA0] + npc/tex/wip_1_mouth3_TA_tex_txt: + addrs: [0x809CEBA0, 0x809CECA0] + npc/tex/wip_1_mouth4_TA_tex_txt: + addrs: [0x809CECA0, 0x809CEDA0] + npc/tex/wip_1_mouth5_TA_tex_txt: + addrs: [0x809CEDA0, 0x809CEEA0] + npc/tex/wip_1_mouth6_TA_tex_txt: + addrs: [0x809CEEA0, 0x809CEFA0] + npc/tex/wip_1_tmem_txt: + addrs: [0x809CEFA0, 0x809CF560] + npc/mdl/shp_1_v: + addrs: [0x809CF560, 0x809D09C0] + type: vtx + npc/tex/shp_1_pal: + addrs: [0x809D11A0, 0x809D11C0] + type: pal16 + npc/tex/shp_1_eye1_TA_tex_txt: + addrs: [0x809D11C0, 0x809D12C0] + npc/tex/shp_1_eye2_TA_tex_txt: + addrs: [0x809D12C0, 0x809D13C0] + npc/tex/shp_1_eye3_TA_tex_txt: + addrs: [0x809D13C0, 0x809D14C0] + npc/tex/shp_1_eye4_TA_tex_txt: + addrs: [0x809D14C0, 0x809D15C0] + npc/tex/shp_1_eye5_TA_tex_txt: + addrs: [0x809D15C0, 0x809D16C0] + npc/tex/shp_1_eye6_TA_tex_txt: + addrs: [0x809D16C0, 0x809D17C0] + npc/tex/shp_1_eye7_TA_tex_txt: + addrs: [0x809D17C0, 0x809D18C0] + npc/tex/shp_1_eye8_TA_tex_txt: + addrs: [0x809D18C0, 0x809D19C0] + npc/tex/shp_1_mouth1_TA_tex_txt: + addrs: [0x809D19C0, 0x809D1AC0] + npc/tex/shp_1_mouth2_TA_tex_txt: + addrs: [0x809D1AC0, 0x809D1BC0] + npc/tex/shp_1_mouth3_TA_tex_txt: + addrs: [0x809D1BC0, 0x809D1CC0] + npc/tex/shp_1_mouth4_TA_tex_txt: + addrs: [0x809D1CC0, 0x809D1DC0] + npc/tex/shp_1_mouth5_TA_tex_txt: + addrs: [0x809D1DC0, 0x809D1EC0] + npc/tex/shp_1_mouth6_TA_tex_txt: + addrs: [0x809D1EC0, 0x809D1FC0] + npc/tex/shp_1_tmem_txt: + addrs: [0x809D1FC0, 0x809D23C0] + npc/tex/shp_2_pal: + addrs: [0x809D23C0, 0x809D23E0] + type: pal16 + npc/tex/shp_2_eye1_TA_tex_txt: + addrs: [0x809D23E0, 0x809D24E0] + npc/tex/shp_2_eye2_TA_tex_txt: + addrs: [0x809D24E0, 0x809D25E0] + npc/tex/shp_2_eye3_TA_tex_txt: + addrs: [0x809D25E0, 0x809D26E0] + npc/tex/shp_2_eye4_TA_tex_txt: + addrs: [0x809D26E0, 0x809D27E0] + npc/tex/shp_2_eye5_TA_tex_txt: + addrs: [0x809D27E0, 0x809D28E0] + npc/tex/shp_2_eye6_TA_tex_txt: + addrs: [0x809D28E0, 0x809D29E0] + npc/tex/shp_2_eye7_TA_tex_txt: + addrs: [0x809D29E0, 0x809D2AE0] + npc/tex/shp_2_eye8_TA_tex_txt: + addrs: [0x809D2AE0, 0x809D2BE0] + npc/tex/shp_2_mouth1_TA_tex_txt: + addrs: [0x809D2BE0, 0x809D2CE0] + npc/tex/shp_2_mouth2_TA_tex_txt: + addrs: [0x809D2CE0, 0x809D2DE0] + npc/tex/shp_2_mouth3_TA_tex_txt: + addrs: [0x809D2DE0, 0x809D2EE0] + npc/tex/shp_2_mouth4_TA_tex_txt: + addrs: [0x809D2EE0, 0x809D2FE0] + npc/tex/shp_2_mouth5_TA_tex_txt: + addrs: [0x809D2FE0, 0x809D30E0] + npc/tex/shp_2_mouth6_TA_tex_txt: + addrs: [0x809D30E0, 0x809D31E0] + npc/tex/shp_2_tmem_txt: + addrs: [0x809D31E0, 0x809D35E0] + npc/tex/shp_3_pal: + addrs: [0x809D35E0, 0x809D3600] + type: pal16 + npc/tex/shp_3_eye1_TA_tex_txt: + addrs: [0x809D3600, 0x809D3700] + npc/tex/shp_3_eye2_TA_tex_txt: + addrs: [0x809D3700, 0x809D3800] + npc/tex/shp_3_eye3_TA_tex_txt: + addrs: [0x809D3800, 0x809D3900] + npc/tex/shp_3_eye4_TA_tex_txt: + addrs: [0x809D3900, 0x809D3A00] + npc/tex/shp_3_eye5_TA_tex_txt: + addrs: [0x809D3A00, 0x809D3B00] + npc/tex/shp_3_eye6_TA_tex_txt: + addrs: [0x809D3B00, 0x809D3C00] + npc/tex/shp_3_eye7_TA_tex_txt: + addrs: [0x809D3C00, 0x809D3D00] + npc/tex/shp_3_eye8_TA_tex_txt: + addrs: [0x809D3D00, 0x809D3E00] + npc/tex/shp_3_mouth1_TA_tex_txt: + addrs: [0x809D3E00, 0x809D3F00] + npc/tex/shp_3_mouth2_TA_tex_txt: + addrs: [0x809D3F00, 0x809D4000] + npc/tex/shp_3_mouth3_TA_tex_txt: + addrs: [0x809D4000, 0x809D4100] + npc/tex/shp_3_mouth4_TA_tex_txt: + addrs: [0x809D4100, 0x809D4200] + npc/tex/shp_3_mouth5_TA_tex_txt: + addrs: [0x809D4200, 0x809D4300] + npc/tex/shp_3_mouth6_TA_tex_txt: + addrs: [0x809D4300, 0x809D4400] + npc/tex/shp_3_tmem_txt: + addrs: [0x809D4400, 0x809D4800] + npc/tex/shp_4_pal: + addrs: [0x809D4800, 0x809D4820] + type: pal16 + npc/tex/shp_4_eye1_TA_tex_txt: + addrs: [0x809D4820, 0x809D4920] + npc/tex/shp_4_eye2_TA_tex_txt: + addrs: [0x809D4920, 0x809D4A20] + npc/tex/shp_4_eye3_TA_tex_txt: + addrs: [0x809D4A20, 0x809D4B20] + npc/tex/shp_4_eye4_TA_tex_txt: + addrs: [0x809D4B20, 0x809D4C20] + npc/tex/shp_4_eye5_TA_tex_txt: + addrs: [0x809D4C20, 0x809D4D20] + npc/tex/shp_4_eye6_TA_tex_txt: + addrs: [0x809D4D20, 0x809D4E20] + npc/tex/shp_4_eye7_TA_tex_txt: + addrs: [0x809D4E20, 0x809D4F20] + npc/tex/shp_4_eye8_TA_tex_txt: + addrs: [0x809D4F20, 0x809D5020] + npc/tex/shp_4_mouth1_TA_tex_txt: + addrs: [0x809D5020, 0x809D5120] + npc/tex/shp_4_mouth2_TA_tex_txt: + addrs: [0x809D5120, 0x809D5220] + npc/tex/shp_4_mouth3_TA_tex_txt: + addrs: [0x809D5220, 0x809D5320] + npc/tex/shp_4_mouth4_TA_tex_txt: + addrs: [0x809D5320, 0x809D5420] + npc/tex/shp_4_mouth5_TA_tex_txt: + addrs: [0x809D5420, 0x809D5520] + npc/tex/shp_4_mouth6_TA_tex_txt: + addrs: [0x809D5520, 0x809D5620] + npc/tex/shp_4_tmem_txt: + addrs: [0x809D5620, 0x809D5A20] + npc/tex/shp_5_pal: + addrs: [0x809D5A20, 0x809D5A40] + type: pal16 + npc/tex/shp_5_eye1_TA_tex_txt: + addrs: [0x809D5A40, 0x809D5B40] + npc/tex/shp_5_eye2_TA_tex_txt: + addrs: [0x809D5B40, 0x809D5C40] + npc/tex/shp_5_eye3_TA_tex_txt: + addrs: [0x809D5C40, 0x809D5D40] + npc/tex/shp_5_eye4_TA_tex_txt: + addrs: [0x809D5D40, 0x809D5E40] + npc/tex/shp_5_eye5_TA_tex_txt: + addrs: [0x809D5E40, 0x809D5F40] + npc/tex/shp_5_eye6_TA_tex_txt: + addrs: [0x809D5F40, 0x809D6040] + npc/tex/shp_5_eye7_TA_tex_txt: + addrs: [0x809D6040, 0x809D6140] + npc/tex/shp_5_eye8_TA_tex_txt: + addrs: [0x809D6140, 0x809D6240] + npc/tex/shp_5_mouth1_TA_tex_txt: + addrs: [0x809D6240, 0x809D6340] + npc/tex/shp_5_mouth2_TA_tex_txt: + addrs: [0x809D6340, 0x809D6440] + npc/tex/shp_5_mouth3_TA_tex_txt: + addrs: [0x809D6440, 0x809D6540] + npc/tex/shp_5_mouth4_TA_tex_txt: + addrs: [0x809D6540, 0x809D6640] + npc/tex/shp_5_mouth5_TA_tex_txt: + addrs: [0x809D6640, 0x809D6740] + npc/tex/shp_5_mouth6_TA_tex_txt: + addrs: [0x809D6740, 0x809D6840] + npc/tex/shp_5_tmem_txt: + addrs: [0x809D6840, 0x809D6C40] + npc/tex/shp_6_pal: + addrs: [0x809D6C40, 0x809D6C60] + type: pal16 + npc/tex/shp_6_eye1_TA_tex_txt: + addrs: [0x809D6C60, 0x809D6D60] + npc/tex/shp_6_eye2_TA_tex_txt: + addrs: [0x809D6D60, 0x809D6E60] + npc/tex/shp_6_eye3_TA_tex_txt: + addrs: [0x809D6E60, 0x809D6F60] + npc/tex/shp_6_eye4_TA_tex_txt: + addrs: [0x809D6F60, 0x809D7060] + npc/tex/shp_6_eye5_TA_tex_txt: + addrs: [0x809D7060, 0x809D7160] + npc/tex/shp_6_eye6_TA_tex_txt: + addrs: [0x809D7160, 0x809D7260] + npc/tex/shp_6_eye7_TA_tex_txt: + addrs: [0x809D7260, 0x809D7360] + npc/tex/shp_6_eye8_TA_tex_txt: + addrs: [0x809D7360, 0x809D7460] + npc/tex/shp_6_mouth1_TA_tex_txt: + addrs: [0x809D7460, 0x809D7560] + npc/tex/shp_6_mouth2_TA_tex_txt: + addrs: [0x809D7560, 0x809D7660] + npc/tex/shp_6_mouth3_TA_tex_txt: + addrs: [0x809D7660, 0x809D7760] + npc/tex/shp_6_mouth4_TA_tex_txt: + addrs: [0x809D7760, 0x809D7860] + npc/tex/shp_6_mouth5_TA_tex_txt: + addrs: [0x809D7860, 0x809D7960] + npc/tex/shp_6_mouth6_TA_tex_txt: + addrs: [0x809D7960, 0x809D7A60] + npc/tex/shp_6_tmem_txt: + addrs: [0x809D7A60, 0x809D7E60] + npc/mdl/rcn_1_v: + addrs: [0x809D7E60, 0x809D94B0] + type: vtx + npc/tex/rcn_1_pal: + addrs: [0x809D9E80, 0x809D9EA0] + type: pal16 + npc/tex/rcn_1_eye1_TA_tex_txt: + addrs: [0x809D9EA0, 0x809D9FA0] + npc/tex/rcn_1_eye2_TA_tex_txt: + addrs: [0x809D9FA0, 0x809DA0A0] + npc/tex/rcn_1_eye3_TA_tex_txt: + addrs: [0x809DA0A0, 0x809DA1A0] + npc/tex/rcn_1_eye4_TA_tex_txt: + addrs: [0x809DA1A0, 0x809DA2A0] + npc/tex/rcn_1_eye5_TA_tex_txt: + addrs: [0x809DA2A0, 0x809DA3A0] + npc/tex/rcn_1_eye6_TA_tex_txt: + addrs: [0x809DA3A0, 0x809DA4A0] + npc/tex/rcn_1_eye7_TA_tex_txt: + addrs: [0x809DA4A0, 0x809DA5A0] + npc/tex/rcn_1_eye8_TA_tex_txt: + addrs: [0x809DA5A0, 0x809DA6A0] + npc/tex/rcn_1_tmem_txt: + addrs: [0x809DA6A0, 0x809DACE0] + npc/mdl/kab_1_v: + addrs: [0x80A001B0, 0x80A01A70] + type: vtx + npc/tex/kab_1_pal: + addrs: [0x80A023A0, 0x80A023C0] + type: pal16 + npc/tex/kab_1_eye1_TA_tex_txt: + addrs: [0x80A023C0, 0x80A024C0] + npc/tex/kab_1_eye2_TA_tex_txt: + addrs: [0x80A024C0, 0x80A025C0] + npc/tex/kab_1_eye3_TA_tex_txt: + addrs: [0x80A025C0, 0x80A026C0] + npc/tex/kab_1_eye4_TA_tex_txt: + addrs: [0x80A026C0, 0x80A027C0] + npc/tex/kab_1_eye5_TA_tex_txt: + addrs: [0x80A027C0, 0x80A028C0] + npc/tex/kab_1_eye6_TA_tex_txt: + addrs: [0x80A028C0, 0x80A029C0] + npc/tex/kab_1_eye7_TA_tex_txt: + addrs: [0x80A029C0, 0x80A02AC0] + npc/tex/kab_1_eye8_TA_tex_txt: + addrs: [0x80A02AC0, 0x80A02BC0] + npc/tex/kab_1_tmem_txt: + addrs: [0x80A02BC0, 0x80A02FC0] + npc/mdl/ttl_1_v: + addrs: [0x80B38FC0, 0x80B3A410] + type: vtx + npc/tex/ttl_1_pal: + addrs: [0x80B3ADE0, 0x80B3AE00] + type: pal16 + npc/tex/ttl_1_eye1_TA_tex_txt: + addrs: [0x80B3AE00, 0x80B3AF00] + npc/tex/ttl_1_eye2_TA_tex_txt: + addrs: [0x80B3AF00, 0x80B3B000] + npc/tex/ttl_1_eye3_TA_tex_txt: + addrs: [0x80B3B000, 0x80B3B100] + npc/tex/ttl_1_eye4_TA_tex_txt: + addrs: [0x80B3B100, 0x80B3B200] + npc/tex/ttl_1_eye5_TA_tex_txt: + addrs: [0x80B3B200, 0x80B3B300] + npc/tex/ttl_1_eye6_TA_tex_txt: + addrs: [0x80B3B300, 0x80B3B400] + npc/tex/ttl_1_eye7_TA_tex_txt: + addrs: [0x80B3B400, 0x80B3B500] + npc/tex/ttl_1_eye8_TA_tex_txt: + addrs: [0x80B3B500, 0x80B3B600] + npc/tex/ttl_1_tmem_txt: + addrs: [0x80B3B600, 0x80B3BD40] + npc/mdl/squ_1_v: + addrs: [0x80B3BD40, 0x80B3D430] + type: vtx + npc/tex/squ_1_pal: + addrs: [0x80B3DDE0, 0x80B3DE00] + type: pal16 + npc/tex/squ_1_eye1_TA_tex_txt: + addrs: [0x80B3DE00, 0x80B3DF00] + npc/tex/squ_1_eye2_TA_tex_txt: + addrs: [0x80B3DF00, 0x80B3E000] + npc/tex/squ_1_eye3_TA_tex_txt: + addrs: [0x80B3E000, 0x80B3E100] + npc/tex/squ_1_eye4_TA_tex_txt: + addrs: [0x80B3E100, 0x80B3E200] + npc/tex/squ_1_eye5_TA_tex_txt: + addrs: [0x80B3E200, 0x80B3E300] + npc/tex/squ_1_eye6_TA_tex_txt: + addrs: [0x80B3E300, 0x80B3E400] + npc/tex/squ_1_eye7_TA_tex_txt: + addrs: [0x80B3E400, 0x80B3E500] + npc/tex/squ_1_eye8_TA_tex_txt: + addrs: [0x80B3E500, 0x80B3E600] + npc/tex/squ_1_mouth1_TA_tex_txt: + addrs: [0x80B3E600, 0x80B3E700] + npc/tex/squ_1_mouth2_TA_tex_txt: + addrs: [0x80B3E700, 0x80B3E800] + npc/tex/squ_1_mouth3_TA_tex_txt: + addrs: [0x80B3E800, 0x80B3E900] + npc/tex/squ_1_mouth4_TA_tex_txt: + addrs: [0x80B3E900, 0x80B3EA00] + npc/tex/squ_1_mouth5_TA_tex_txt: + addrs: [0x80B3EA00, 0x80B3EB00] + npc/tex/squ_1_mouth6_TA_tex_txt: + addrs: [0x80B3EB00, 0x80B3EC00] + npc/tex/squ_1_tmem_txt: + addrs: [0x80B3EC00, 0x80B3F000] + npc/tex/squ_2_pal: + addrs: [0x80B3F000, 0x80B3F020] + type: pal16 + npc/tex/squ_2_eye1_TA_tex_txt: + addrs: [0x80B3F020, 0x80B3F120] + npc/tex/squ_2_eye2_TA_tex_txt: + addrs: [0x80B3F120, 0x80B3F220] + npc/tex/squ_2_eye3_TA_tex_txt: + addrs: [0x80B3F220, 0x80B3F320] + npc/tex/squ_2_eye4_TA_tex_txt: + addrs: [0x80B3F320, 0x80B3F420] + npc/tex/squ_2_eye5_TA_tex_txt: + addrs: [0x80B3F420, 0x80B3F520] + npc/tex/squ_2_eye6_TA_tex_txt: + addrs: [0x80B3F520, 0x80B3F620] + npc/tex/squ_2_eye7_TA_tex_txt: + addrs: [0x80B3F620, 0x80B3F720] + npc/tex/squ_2_eye8_TA_tex_txt: + addrs: [0x80B3F720, 0x80B3F820] + npc/tex/squ_2_mouth1_TA_tex_txt: + addrs: [0x80B3F820, 0x80B3F920] + npc/tex/squ_2_mouth2_TA_tex_txt: + addrs: [0x80B3F920, 0x80B3FA20] + npc/tex/squ_2_mouth3_TA_tex_txt: + addrs: [0x80B3FA20, 0x80B3FB20] + npc/tex/squ_2_mouth4_TA_tex_txt: + addrs: [0x80B3FB20, 0x80B3FC20] + npc/tex/squ_2_mouth5_TA_tex_txt: + addrs: [0x80B3FC20, 0x80B3FD20] + npc/tex/squ_2_mouth6_TA_tex_txt: + addrs: [0x80B3FD20, 0x80B3FE20] + npc/tex/squ_2_tmem_txt: + addrs: [0x80B3FE20, 0x80B40220] + npc/tex/squ_11_pal: + addrs: [0x80B40220, 0x80B40240] + type: pal16 + npc/tex/squ_11_eye1_TA_tex_txt: + addrs: [0x80B40240, 0x80B40340] + npc/tex/squ_11_eye2_TA_tex_txt: + addrs: [0x80B40340, 0x80B40440] + npc/tex/squ_11_eye3_TA_tex_txt: + addrs: [0x80B40440, 0x80B40540] + npc/tex/squ_11_eye4_TA_tex_txt: + addrs: [0x80B40540, 0x80B40640] + npc/tex/squ_11_eye5_TA_tex_txt: + addrs: [0x80B40640, 0x80B40740] + npc/tex/squ_11_eye6_TA_tex_txt: + addrs: [0x80B40740, 0x80B40840] + npc/tex/squ_11_eye7_TA_tex_txt: + addrs: [0x80B40840, 0x80B40940] + npc/tex/squ_11_eye8_TA_tex_txt: + addrs: [0x80B40940, 0x80B40A40] + npc/tex/squ_11_mouth1_TA_tex_txt: + addrs: [0x80B40A40, 0x80B40B40] + npc/tex/squ_11_mouth2_TA_tex_txt: + addrs: [0x80B40B40, 0x80B40C40] + npc/tex/squ_11_mouth3_TA_tex_txt: + addrs: [0x80B40C40, 0x80B40D40] + npc/tex/squ_11_mouth4_TA_tex_txt: + addrs: [0x80B40D40, 0x80B40E40] + npc/tex/squ_11_mouth5_TA_tex_txt: + addrs: [0x80B40E40, 0x80B40F40] + npc/tex/squ_11_mouth6_TA_tex_txt: + addrs: [0x80B40F40, 0x80B41040] + npc/tex/squ_11_tmem_txt: + addrs: [0x80B41040, 0x80B41440] + npc/tex/squ_3_pal: + addrs: [0x80B41440, 0x80B41460] + type: pal16 + npc/tex/squ_3_eye1_TA_tex_txt: + addrs: [0x80B41460, 0x80B41560] + npc/tex/squ_3_eye2_TA_tex_txt: + addrs: [0x80B41560, 0x80B41660] + npc/tex/squ_3_eye3_TA_tex_txt: + addrs: [0x80B41660, 0x80B41760] + npc/tex/squ_3_eye4_TA_tex_txt: + addrs: [0x80B41760, 0x80B41860] + npc/tex/squ_3_eye5_TA_tex_txt: + addrs: [0x80B41860, 0x80B41960] + npc/tex/squ_3_eye6_TA_tex_txt: + addrs: [0x80B41960, 0x80B41A60] + npc/tex/squ_3_eye7_TA_tex_txt: + addrs: [0x80B41A60, 0x80B41B60] + npc/tex/squ_3_eye8_TA_tex_txt: + addrs: [0x80B41B60, 0x80B41C60] + npc/tex/squ_3_mouth1_TA_tex_txt: + addrs: [0x80B41C60, 0x80B41D60] + npc/tex/squ_3_mouth2_TA_tex_txt: + addrs: [0x80B41D60, 0x80B41E60] + npc/tex/squ_3_mouth3_TA_tex_txt: + addrs: [0x80B41E60, 0x80B41F60] + npc/tex/squ_3_mouth4_TA_tex_txt: + addrs: [0x80B41F60, 0x80B42060] + npc/tex/squ_3_mouth5_TA_tex_txt: + addrs: [0x80B42060, 0x80B42160] + npc/tex/squ_3_mouth6_TA_tex_txt: + addrs: [0x80B42160, 0x80B42260] + npc/tex/squ_3_tmem_txt: + addrs: [0x80B42260, 0x80B42660] + npc/tex/squ_4_pal: + addrs: [0x80B42660, 0x80B42680] + type: pal16 + npc/tex/squ_4_eye1_TA_tex_txt: + addrs: [0x80B42680, 0x80B42780] + npc/tex/squ_4_eye2_TA_tex_txt: + addrs: [0x80B42780, 0x80B42880] + npc/tex/squ_4_eye3_TA_tex_txt: + addrs: [0x80B42880, 0x80B42980] + npc/tex/squ_4_eye4_TA_tex_txt: + addrs: [0x80B42980, 0x80B42A80] + npc/tex/squ_4_eye5_TA_tex_txt: + addrs: [0x80B42A80, 0x80B42B80] + npc/tex/squ_4_eye6_TA_tex_txt: + addrs: [0x80B42B80, 0x80B42C80] + npc/tex/squ_4_eye7_TA_tex_txt: + addrs: [0x80B42C80, 0x80B42D80] + npc/tex/squ_4_eye8_TA_tex_txt: + addrs: [0x80B42D80, 0x80B42E80] + npc/tex/squ_4_mouth1_TA_tex_txt: + addrs: [0x80B42E80, 0x80B42F80] + npc/tex/squ_4_mouth2_TA_tex_txt: + addrs: [0x80B42F80, 0x80B43080] + npc/tex/squ_4_mouth3_TA_tex_txt: + addrs: [0x80B43080, 0x80B43180] + npc/tex/squ_4_mouth4_TA_tex_txt: + addrs: [0x80B43180, 0x80B43280] + npc/tex/squ_4_mouth5_TA_tex_txt: + addrs: [0x80B43280, 0x80B43380] + npc/tex/squ_4_mouth6_TA_tex_txt: + addrs: [0x80B43380, 0x80B43480] + npc/tex/squ_4_tmem_txt: + addrs: [0x80B43480, 0x80B43880] + npc/tex/squ_5_pal: + addrs: [0x80B43880, 0x80B438A0] + type: pal16 + npc/tex/squ_5_eye1_TA_tex_txt: + addrs: [0x80B438A0, 0x80B439A0] + npc/tex/squ_5_eye2_TA_tex_txt: + addrs: [0x80B439A0, 0x80B43AA0] + npc/tex/squ_5_eye3_TA_tex_txt: + addrs: [0x80B43AA0, 0x80B43BA0] + npc/tex/squ_5_eye4_TA_tex_txt: + addrs: [0x80B43BA0, 0x80B43CA0] + npc/tex/squ_5_eye5_TA_tex_txt: + addrs: [0x80B43CA0, 0x80B43DA0] + npc/tex/squ_5_eye6_TA_tex_txt: + addrs: [0x80B43DA0, 0x80B43EA0] + npc/tex/squ_5_eye7_TA_tex_txt: + addrs: [0x80B43EA0, 0x80B43FA0] + npc/tex/squ_5_eye8_TA_tex_txt: + addrs: [0x80B43FA0, 0x80B440A0] + npc/tex/squ_5_mouth1_TA_tex_txt: + addrs: [0x80B440A0, 0x80B441A0] + npc/tex/squ_5_mouth2_TA_tex_txt: + addrs: [0x80B441A0, 0x80B442A0] + npc/tex/squ_5_mouth3_TA_tex_txt: + addrs: [0x80B442A0, 0x80B443A0] + npc/tex/squ_5_mouth4_TA_tex_txt: + addrs: [0x80B443A0, 0x80B444A0] + npc/tex/squ_5_mouth5_TA_tex_txt: + addrs: [0x80B444A0, 0x80B445A0] + npc/tex/squ_5_mouth6_TA_tex_txt: + addrs: [0x80B445A0, 0x80B446A0] + npc/tex/squ_5_tmem_txt: + addrs: [0x80B446A0, 0x80B44AA0] + npc/tex/squ_6_pal: + addrs: [0x80B44AA0, 0x80B44AC0] + type: pal16 + npc/tex/squ_6_eye1_TA_tex_txt: + addrs: [0x80B44AC0, 0x80B44BC0] + npc/tex/squ_6_eye2_TA_tex_txt: + addrs: [0x80B44BC0, 0x80B44CC0] + npc/tex/squ_6_eye3_TA_tex_txt: + addrs: [0x80B44CC0, 0x80B44DC0] + npc/tex/squ_6_eye4_TA_tex_txt: + addrs: [0x80B44DC0, 0x80B44EC0] + npc/tex/squ_6_eye5_TA_tex_txt: + addrs: [0x80B44EC0, 0x80B44FC0] + npc/tex/squ_6_eye6_TA_tex_txt: + addrs: [0x80B44FC0, 0x80B450C0] + npc/tex/squ_6_eye7_TA_tex_txt: + addrs: [0x80B450C0, 0x80B451C0] + npc/tex/squ_6_eye8_TA_tex_txt: + addrs: [0x80B451C0, 0x80B452C0] + npc/tex/squ_6_mouth1_TA_tex_txt: + addrs: [0x80B452C0, 0x80B453C0] + npc/tex/squ_6_mouth2_TA_tex_txt: + addrs: [0x80B453C0, 0x80B454C0] + npc/tex/squ_6_mouth3_TA_tex_txt: + addrs: [0x80B454C0, 0x80B455C0] + npc/tex/squ_6_mouth4_TA_tex_txt: + addrs: [0x80B455C0, 0x80B456C0] + npc/tex/squ_6_mouth5_TA_tex_txt: + addrs: [0x80B456C0, 0x80B457C0] + npc/tex/squ_6_mouth6_TA_tex_txt: + addrs: [0x80B457C0, 0x80B458C0] + npc/tex/squ_6_tmem_txt: + addrs: [0x80B458C0, 0x80B45CC0] + npc/tex/squ_7_pal: + addrs: [0x80B45CC0, 0x80B45CE0] + type: pal16 + npc/tex/squ_7_eye1_TA_tex_txt: + addrs: [0x80B45CE0, 0x80B45DE0] + npc/tex/squ_7_eye2_TA_tex_txt: + addrs: [0x80B45DE0, 0x80B45EE0] + npc/tex/squ_7_eye3_TA_tex_txt: + addrs: [0x80B45EE0, 0x80B45FE0] + npc/tex/squ_7_eye4_TA_tex_txt: + addrs: [0x80B45FE0, 0x80B460E0] + npc/tex/squ_7_eye5_TA_tex_txt: + addrs: [0x80B460E0, 0x80B461E0] + npc/tex/squ_7_eye6_TA_tex_txt: + addrs: [0x80B461E0, 0x80B462E0] + npc/tex/squ_7_eye7_TA_tex_txt: + addrs: [0x80B462E0, 0x80B463E0] + npc/tex/squ_7_eye8_TA_tex_txt: + addrs: [0x80B463E0, 0x80B464E0] + npc/tex/squ_7_mouth1_TA_tex_txt: + addrs: [0x80B464E0, 0x80B465E0] + npc/tex/squ_7_mouth2_TA_tex_txt: + addrs: [0x80B465E0, 0x80B466E0] + npc/tex/squ_7_mouth3_TA_tex_txt: + addrs: [0x80B466E0, 0x80B467E0] + npc/tex/squ_7_mouth4_TA_tex_txt: + addrs: [0x80B467E0, 0x80B468E0] + npc/tex/squ_7_mouth5_TA_tex_txt: + addrs: [0x80B468E0, 0x80B469E0] + npc/tex/squ_7_mouth6_TA_tex_txt: + addrs: [0x80B469E0, 0x80B46AE0] + npc/tex/squ_7_tmem_txt: + addrs: [0x80B46AE0, 0x80B46EE0] + npc/tex/squ_8_pal: + addrs: [0x80B46EE0, 0x80B46F00] + type: pal16 + npc/tex/squ_8_eye1_TA_tex_txt: + addrs: [0x80B46F00, 0x80B47000] + npc/tex/squ_8_eye2_TA_tex_txt: + addrs: [0x80B47000, 0x80B47100] + npc/tex/squ_8_eye3_TA_tex_txt: + addrs: [0x80B47100, 0x80B47200] + npc/tex/squ_8_eye4_TA_tex_txt: + addrs: [0x80B47200, 0x80B47300] + npc/tex/squ_8_eye5_TA_tex_txt: + addrs: [0x80B47300, 0x80B47400] + npc/tex/squ_8_eye6_TA_tex_txt: + addrs: [0x80B47400, 0x80B47500] + npc/tex/squ_8_eye7_TA_tex_txt: + addrs: [0x80B47500, 0x80B47600] + npc/tex/squ_8_eye8_TA_tex_txt: + addrs: [0x80B47600, 0x80B47700] + npc/tex/squ_8_mouth1_TA_tex_txt: + addrs: [0x80B47700, 0x80B47800] + npc/tex/squ_8_mouth2_TA_tex_txt: + addrs: [0x80B47800, 0x80B47900] + npc/tex/squ_8_mouth3_TA_tex_txt: + addrs: [0x80B47900, 0x80B47A00] + npc/tex/squ_8_mouth4_TA_tex_txt: + addrs: [0x80B47A00, 0x80B47B00] + npc/tex/squ_8_mouth5_TA_tex_txt: + addrs: [0x80B47B00, 0x80B47C00] + npc/tex/squ_8_mouth6_TA_tex_txt: + addrs: [0x80B47C00, 0x80B47D00] + npc/tex/squ_8_tmem_txt: + addrs: [0x80B47D00, 0x80B48100] + npc/tex/squ_9_pal: + addrs: [0x80B48100, 0x80B48120] + type: pal16 + npc/tex/squ_9_eye1_TA_tex_txt: + addrs: [0x80B48120, 0x80B48220] + npc/tex/squ_9_eye2_TA_tex_txt: + addrs: [0x80B48220, 0x80B48320] + npc/tex/squ_9_eye3_TA_tex_txt: + addrs: [0x80B48320, 0x80B48420] + npc/tex/squ_9_eye4_TA_tex_txt: + addrs: [0x80B48420, 0x80B48520] + npc/tex/squ_9_eye5_TA_tex_txt: + addrs: [0x80B48520, 0x80B48620] + npc/tex/squ_9_eye6_TA_tex_txt: + addrs: [0x80B48620, 0x80B48720] + npc/tex/squ_9_eye7_TA_tex_txt: + addrs: [0x80B48720, 0x80B48820] + npc/tex/squ_9_eye8_TA_tex_txt: + addrs: [0x80B48820, 0x80B48920] + npc/tex/squ_9_mouth1_TA_tex_txt: + addrs: [0x80B48920, 0x80B48A20] + npc/tex/squ_9_mouth2_TA_tex_txt: + addrs: [0x80B48A20, 0x80B48B20] + npc/tex/squ_9_mouth3_TA_tex_txt: + addrs: [0x80B48B20, 0x80B48C20] + npc/tex/squ_9_mouth4_TA_tex_txt: + addrs: [0x80B48C20, 0x80B48D20] + npc/tex/squ_9_mouth5_TA_tex_txt: + addrs: [0x80B48D20, 0x80B48E20] + npc/tex/squ_9_mouth6_TA_tex_txt: + addrs: [0x80B48E20, 0x80B48F20] + npc/tex/squ_9_tmem_txt: + addrs: [0x80B48F20, 0x80B49320] + npc/tex/squ_10_pal: + addrs: [0x80B49320, 0x80B49340] + type: pal16 + npc/tex/squ_10_eye1_TA_tex_txt: + addrs: [0x80B49340, 0x80B49440] + npc/tex/squ_10_eye2_TA_tex_txt: + addrs: [0x80B49440, 0x80B49540] + npc/tex/squ_10_eye3_TA_tex_txt: + addrs: [0x80B49540, 0x80B49640] + npc/tex/squ_10_eye4_TA_tex_txt: + addrs: [0x80B49640, 0x80B49740] + npc/tex/squ_10_eye5_TA_tex_txt: + addrs: [0x80B49740, 0x80B49840] + npc/tex/squ_10_eye6_TA_tex_txt: + addrs: [0x80B49840, 0x80B49940] + npc/tex/squ_10_eye7_TA_tex_txt: + addrs: [0x80B49940, 0x80B49A40] + npc/tex/squ_10_eye8_TA_tex_txt: + addrs: [0x80B49A40, 0x80B49B40] + npc/tex/squ_10_mouth1_TA_tex_txt: + addrs: [0x80B49B40, 0x80B49C40] + npc/tex/squ_10_mouth2_TA_tex_txt: + addrs: [0x80B49C40, 0x80B49D40] + npc/tex/squ_10_mouth3_TA_tex_txt: + addrs: [0x80B49D40, 0x80B49E40] + npc/tex/squ_10_mouth4_TA_tex_txt: + addrs: [0x80B49E40, 0x80B49F40] + npc/tex/squ_10_mouth5_TA_tex_txt: + addrs: [0x80B49F40, 0x80B4A040] + npc/tex/squ_10_mouth6_TA_tex_txt: + addrs: [0x80B4A040, 0x80B4A140] + npc/tex/squ_10_tmem_txt: + addrs: [0x80B4A140, 0x80B4A540] + npc/mdl/mnk_1_v: + addrs: [0x80B4A540, 0x80B4BD90] + type: vtx + npc/tex/mnk_1_pal: + addrs: [0x80B4C800, 0x80B4C820] + type: pal16 + npc/tex/mnk_1_eye1_TA_tex_txt: + addrs: [0x80B4C820, 0x80B4C920] + npc/tex/mnk_1_eye2_TA_tex_txt: + addrs: [0x80B4C920, 0x80B4CA20] + npc/tex/mnk_1_eye3_TA_tex_txt: + addrs: [0x80B4CA20, 0x80B4CB20] + npc/tex/mnk_1_eye4_TA_tex_txt: + addrs: [0x80B4CB20, 0x80B4CC20] + npc/tex/mnk_1_eye5_TA_tex_txt: + addrs: [0x80B4CC20, 0x80B4CD20] + npc/tex/mnk_1_eye6_TA_tex_txt: + addrs: [0x80B4CD20, 0x80B4CE20] + npc/tex/mnk_1_eye7_TA_tex_txt: + addrs: [0x80B4CE20, 0x80B4CF20] + npc/tex/mnk_1_eye8_TA_tex_txt: + addrs: [0x80B4CF20, 0x80B4D020] + npc/tex/mnk_1_mouth1_TA_tex_txt: + addrs: [0x80B4D020, 0x80B4D120] + npc/tex/mnk_1_mouth2_TA_tex_txt: + addrs: [0x80B4D120, 0x80B4D220] + npc/tex/mnk_1_mouth3_TA_tex_txt: + addrs: [0x80B4D220, 0x80B4D320] + npc/tex/mnk_1_mouth4_TA_tex_txt: + addrs: [0x80B4D320, 0x80B4D420] + npc/tex/mnk_1_mouth5_TA_tex_txt: + addrs: [0x80B4D420, 0x80B4D520] + npc/tex/mnk_1_mouth6_TA_tex_txt: + addrs: [0x80B4D520, 0x80B4D620] + npc/tex/mnk_1_tmem_txt: + addrs: [0x80B4D620, 0x80B4DC20] + npc/mdl/rcs_1_v: + addrs: [0x80C09AC0, 0x80C0B1C0] + type: vtx + npc/tex/rcs_1_pal: + addrs: [0x80C0BBC0, 0x80C0BBE0] + type: pal16 + npc/tex/rcs_1_eye1_TA_tex_txt: + addrs: [0x80C0BBE0, 0x80C0BCE0] + npc/tex/rcs_1_eye2_TA_tex_txt: + addrs: [0x80C0BCE0, 0x80C0BDE0] + npc/tex/rcs_1_eye3_TA_tex_txt: + addrs: [0x80C0BDE0, 0x80C0BEE0] + npc/tex/rcs_1_eye4_TA_tex_txt: + addrs: [0x80C0BEE0, 0x80C0BFE0] + npc/tex/rcs_1_eye5_TA_tex_txt: + addrs: [0x80C0BFE0, 0x80C0C0E0] + npc/tex/rcs_1_eye6_TA_tex_txt: + addrs: [0x80C0C0E0, 0x80C0C1E0] + npc/tex/rcs_1_eye7_TA_tex_txt: + addrs: [0x80C0C1E0, 0x80C0C2E0] + npc/tex/rcs_1_eye8_TA_tex_txt: + addrs: [0x80C0C2E0, 0x80C0C3E0] + npc/tex/rcs_1_tmem_txt: + addrs: [0x80C0C3E0, 0x80C0C960] + npc/mdl/tig_1_v: + addrs: [0x80C2C9F8, 0x80C2E4B8] + type: vtx + npc/tex/tig_1_pal: + addrs: [0x80C2EEA0, 0x80C2EEC0] + type: pal16 + npc/tex/tig_1_eye1_TA_tex_txt: + addrs: [0x80C2EEC0, 0x80C2EFC0] + npc/tex/tig_1_eye2_TA_tex_txt: + addrs: [0x80C2EFC0, 0x80C2F0C0] + npc/tex/tig_1_eye3_TA_tex_txt: + addrs: [0x80C2F0C0, 0x80C2F1C0] + npc/tex/tig_1_eye4_TA_tex_txt: + addrs: [0x80C2F1C0, 0x80C2F2C0] + npc/tex/tig_1_eye5_TA_tex_txt: + addrs: [0x80C2F2C0, 0x80C2F3C0] + npc/tex/tig_1_eye6_TA_tex_txt: + addrs: [0x80C2F3C0, 0x80C2F4C0] + npc/tex/tig_1_eye7_TA_tex_txt: + addrs: [0x80C2F4C0, 0x80C2F5C0] + npc/tex/tig_1_eye8_TA_tex_txt: + addrs: [0x80C2F5C0, 0x80C2F6C0] + npc/tex/tig_1_tmem_txt: + addrs: [0x80C2F6C0, 0x80C2FC40] + npc/tex/tig_2_pal: + addrs: [0x80C2FC40, 0x80C2FC60] + type: pal16 + npc/tex/tig_2_eye1_TA_tex_txt: + addrs: [0x80C2FC60, 0x80C2FD60] + npc/tex/tig_2_eye2_TA_tex_txt: + addrs: [0x80C2FD60, 0x80C2FE60] + npc/tex/tig_2_eye3_TA_tex_txt: + addrs: [0x80C2FE60, 0x80C2FF60] + npc/tex/tig_2_eye4_TA_tex_txt: + addrs: [0x80C2FF60, 0x80C30060] + npc/tex/tig_2_eye5_TA_tex_txt: + addrs: [0x80C30060, 0x80C30160] + npc/tex/tig_2_eye6_TA_tex_txt: + addrs: [0x80C30160, 0x80C30260] + npc/tex/tig_2_eye7_TA_tex_txt: + addrs: [0x80C30260, 0x80C30360] + npc/tex/tig_2_eye8_TA_tex_txt: + addrs: [0x80C30360, 0x80C30460] + npc/tex/tig_2_tmem_txt: + addrs: [0x80C30460, 0x80C309E0] + npc/tex/tig_3_pal: + addrs: [0x80C309E0, 0x80C30A00] + type: pal16 + npc/tex/tig_3_eye1_TA_tex_txt: + addrs: [0x80C30A00, 0x80C30B00] + npc/tex/tig_3_eye2_TA_tex_txt: + addrs: [0x80C30B00, 0x80C30C00] + npc/tex/tig_3_eye3_TA_tex_txt: + addrs: [0x80C30C00, 0x80C30D00] + npc/tex/tig_3_eye4_TA_tex_txt: + addrs: [0x80C30D00, 0x80C30E00] + npc/tex/tig_3_eye5_TA_tex_txt: + addrs: [0x80C30E00, 0x80C30F00] + npc/tex/tig_3_eye6_TA_tex_txt: + addrs: [0x80C30F00, 0x80C31000] + npc/tex/tig_3_eye7_TA_tex_txt: + addrs: [0x80C31000, 0x80C31100] + npc/tex/tig_3_eye8_TA_tex_txt: + addrs: [0x80C31100, 0x80C31200] + npc/tex/tig_3_tmem_txt: + addrs: [0x80C31200, 0x80C31780] + npc/tex/tig_4_pal: + addrs: [0x80C31780, 0x80C317A0] + type: pal16 + npc/tex/tig_4_eye1_TA_tex_txt: + addrs: [0x80C317A0, 0x80C318A0] + npc/tex/tig_4_eye2_TA_tex_txt: + addrs: [0x80C318A0, 0x80C319A0] + npc/tex/tig_4_eye3_TA_tex_txt: + addrs: [0x80C319A0, 0x80C31AA0] + npc/tex/tig_4_eye4_TA_tex_txt: + addrs: [0x80C31AA0, 0x80C31BA0] + npc/tex/tig_4_eye5_TA_tex_txt: + addrs: [0x80C31BA0, 0x80C31CA0] + npc/tex/tig_4_eye6_TA_tex_txt: + addrs: [0x80C31CA0, 0x80C31DA0] + npc/tex/tig_4_eye7_TA_tex_txt: + addrs: [0x80C31DA0, 0x80C31EA0] + npc/tex/tig_4_eye8_TA_tex_txt: + addrs: [0x80C31EA0, 0x80C31FA0] + npc/tex/tig_4_tmem_txt: + addrs: [0x80C31FA0, 0x80C32520] + npc/mdl/end_1_v: + addrs: [0x80C45A08, 0x80C47658] + type: vtx + npc/tex/end_1_pal: + addrs: [0x80C480C0, 0x80C480E0] + type: pal16 + npc/tex/end_1_eye1_TA_tex_txt: + addrs: [0x80C480E0, 0x80C481E0] + npc/tex/end_1_eye2_TA_tex_txt: + addrs: [0x80C481E0, 0x80C482E0] + npc/tex/end_1_eye3_TA_tex_txt: + addrs: [0x80C482E0, 0x80C483E0] + npc/tex/end_1_eye4_TA_tex_txt: + addrs: [0x80C483E0, 0x80C484E0] + npc/tex/end_1_eye5_TA_tex_txt: + addrs: [0x80C484E0, 0x80C485E0] + npc/tex/end_1_eye6_TA_tex_txt: + addrs: [0x80C485E0, 0x80C486E0] + npc/tex/end_1_eye7_TA_tex_txt: + addrs: [0x80C486E0, 0x80C487E0] + npc/tex/end_1_eye8_TA_tex_txt: + addrs: [0x80C487E0, 0x80C488E0] + npc/tex/end_1_mouth1_TA_tex_txt: + addrs: [0x80C488E0, 0x80C489E0] + npc/tex/end_1_mouth2_TA_tex_txt: + addrs: [0x80C489E0, 0x80C48AE0] + npc/tex/end_1_mouth3_TA_tex_txt: + addrs: [0x80C48AE0, 0x80C48BE0] + npc/tex/end_1_mouth4_TA_tex_txt: + addrs: [0x80C48BE0, 0x80C48CE0] + npc/tex/end_1_mouth5_TA_tex_txt: + addrs: [0x80C48CE0, 0x80C48DE0] + npc/tex/end_1_mouth6_TA_tex_txt: + addrs: [0x80C48DE0, 0x80C48EE0] + npc/tex/end_1_tmem_txt: + addrs: [0x80C48EE0, 0x80C493A0] + field/bg/rom_train_3_pal: + addrs: [0x80C49C00, 0x80C49C20] + type: pal16 + npc/mdl/tuk_1_v: + addrs: [0x80C4B710, 0x80C4D460] + type: vtx + npc/tex/tuk_1_pal: + addrs: [0x80C4E080, 0x80C4E0A0] + type: pal16 + npc/tex/tuk_1_eye1_TA_tex_txt: + addrs: [0x80C4E0A0, 0x80C4E1A0] + npc/tex/tuk_1_eye2_TA_tex_txt: + addrs: [0x80C4E1A0, 0x80C4E2A0] + npc/tex/tuk_1_eye3_TA_tex_txt: + addrs: [0x80C4E2A0, 0x80C4E3A0] + npc/tex/tuk_1_eye4_TA_tex_txt: + addrs: [0x80C4E3A0, 0x80C4E4A0] + npc/tex/tuk_1_eye5_TA_tex_txt: + addrs: [0x80C4E4A0, 0x80C4E5A0] + npc/tex/tuk_1_eye6_TA_tex_txt: + addrs: [0x80C4E5A0, 0x80C4E6A0] + npc/tex/tuk_1_eye7_TA_tex_txt: + addrs: [0x80C4E6A0, 0x80C4E7A0] + npc/tex/tuk_1_eye8_TA_tex_txt: + addrs: [0x80C4E7A0, 0x80C4E8A0] + npc/tex/tuk_1_tmem_txt: + addrs: [0x80C4E8A0, 0x80C4EF20] + npc/mdl/wol_1_v: + addrs: [0x80C4F588, 0x80C50CE8] + type: vtx + npc/tex/wol_1_pal: + addrs: [0x80C51660, 0x80C51680] + type: pal16 + npc/tex/wol_1_eye1_TA_tex_txt: + addrs: [0x80C51680, 0x80C51780] + npc/tex/wol_1_eye2_TA_tex_txt: + addrs: [0x80C51780, 0x80C51880] + npc/tex/wol_1_eye3_TA_tex_txt: + addrs: [0x80C51880, 0x80C51980] + npc/tex/wol_1_eye4_TA_tex_txt: + addrs: [0x80C51980, 0x80C51A80] + npc/tex/wol_1_eye5_TA_tex_txt: + addrs: [0x80C51A80, 0x80C51B80] + npc/tex/wol_1_eye6_TA_tex_txt: + addrs: [0x80C51B80, 0x80C51C80] + npc/tex/wol_1_eye7_TA_tex_txt: + addrs: [0x80C51C80, 0x80C51D80] + npc/tex/wol_1_eye8_TA_tex_txt: + addrs: [0x80C51D80, 0x80C51E80] + npc/tex/wol_1_tmem_txt: + addrs: [0x80C51E80, 0x80C52280] + npc/tex/wol_2_pal: + addrs: [0x80C52280, 0x80C522A0] + type: pal16 + npc/tex/wol_2_eye1_TA_tex_txt: + addrs: [0x80C522A0, 0x80C523A0] + npc/tex/wol_2_eye2_TA_tex_txt: + addrs: [0x80C523A0, 0x80C524A0] + npc/tex/wol_2_eye3_TA_tex_txt: + addrs: [0x80C524A0, 0x80C525A0] + npc/tex/wol_2_eye4_TA_tex_txt: + addrs: [0x80C525A0, 0x80C526A0] + npc/tex/wol_2_eye5_TA_tex_txt: + addrs: [0x80C526A0, 0x80C527A0] + npc/tex/wol_2_eye6_TA_tex_txt: + addrs: [0x80C527A0, 0x80C528A0] + npc/tex/wol_2_eye7_TA_tex_txt: + addrs: [0x80C528A0, 0x80C529A0] + npc/tex/wol_2_eye8_TA_tex_txt: + addrs: [0x80C529A0, 0x80C52AA0] + npc/tex/wol_2_tmem_txt: + addrs: [0x80C52AA0, 0x80C52EA0] + npc/tex/wol_3_pal: + addrs: [0x80C52EA0, 0x80C52EC0] + type: pal16 + npc/tex/wol_3_eye1_TA_tex_txt: + addrs: [0x80C52EC0, 0x80C52FC0] + npc/tex/wol_3_eye2_TA_tex_txt: + addrs: [0x80C52FC0, 0x80C530C0] + npc/tex/wol_3_eye3_TA_tex_txt: + addrs: [0x80C530C0, 0x80C531C0] + npc/tex/wol_3_eye4_TA_tex_txt: + addrs: [0x80C531C0, 0x80C532C0] + npc/tex/wol_3_eye5_TA_tex_txt: + addrs: [0x80C532C0, 0x80C533C0] + npc/tex/wol_3_eye6_TA_tex_txt: + addrs: [0x80C533C0, 0x80C534C0] + npc/tex/wol_3_eye7_TA_tex_txt: + addrs: [0x80C534C0, 0x80C535C0] + npc/tex/wol_3_eye8_TA_tex_txt: + addrs: [0x80C535C0, 0x80C536C0] + npc/tex/wol_3_tmem_txt: + addrs: [0x80C536C0, 0x80C53AC0] + npc/tex/wol_4_pal: + addrs: [0x80C53AC0, 0x80C53AE0] + type: pal16 + npc/tex/wol_4_eye1_TA_tex_txt: + addrs: [0x80C53AE0, 0x80C53BE0] + npc/tex/wol_4_eye2_TA_tex_txt: + addrs: [0x80C53BE0, 0x80C53CE0] + npc/tex/wol_4_eye3_TA_tex_txt: + addrs: [0x80C53CE0, 0x80C53DE0] + npc/tex/wol_4_eye4_TA_tex_txt: + addrs: [0x80C53DE0, 0x80C53EE0] + npc/tex/wol_4_eye5_TA_tex_txt: + addrs: [0x80C53EE0, 0x80C53FE0] + npc/tex/wol_4_eye6_TA_tex_txt: + addrs: [0x80C53FE0, 0x80C540E0] + npc/tex/wol_4_eye7_TA_tex_txt: + addrs: [0x80C540E0, 0x80C541E0] + npc/tex/wol_4_eye8_TA_tex_txt: + addrs: [0x80C541E0, 0x80C542E0] + npc/tex/wol_4_tmem_txt: + addrs: [0x80C542E0, 0x80C546E0] + npc/tex/wol_5_pal: + addrs: [0x80C546E0, 0x80C54700] + type: pal16 + npc/tex/wol_5_eye1_TA_tex_txt: + addrs: [0x80C54700, 0x80C54800] + npc/tex/wol_5_eye2_TA_tex_txt: + addrs: [0x80C54800, 0x80C54900] + npc/tex/wol_5_eye3_TA_tex_txt: + addrs: [0x80C54900, 0x80C54A00] + npc/tex/wol_5_eye4_TA_tex_txt: + addrs: [0x80C54A00, 0x80C54B00] + npc/tex/wol_5_eye5_TA_tex_txt: + addrs: [0x80C54B00, 0x80C54C00] + npc/tex/wol_5_eye6_TA_tex_txt: + addrs: [0x80C54C00, 0x80C54D00] + npc/tex/wol_5_eye7_TA_tex_txt: + addrs: [0x80C54D00, 0x80C54E00] + npc/tex/wol_5_eye8_TA_tex_txt: + addrs: [0x80C54E00, 0x80C54F00] + npc/tex/wol_5_tmem_txt: + addrs: [0x80C54F00, 0x80C55300] + npc/tex/wol_6_pal: + addrs: [0x80C55300, 0x80C55320] + type: pal16 + npc/tex/wol_6_eye1_TA_tex_txt: + addrs: [0x80C55320, 0x80C55420] + npc/tex/wol_6_eye2_TA_tex_txt: + addrs: [0x80C55420, 0x80C55520] + npc/tex/wol_6_eye3_TA_tex_txt: + addrs: [0x80C55520, 0x80C55620] + npc/tex/wol_6_eye4_TA_tex_txt: + addrs: [0x80C55620, 0x80C55720] + npc/tex/wol_6_eye5_TA_tex_txt: + addrs: [0x80C55720, 0x80C55820] + npc/tex/wol_6_eye6_TA_tex_txt: + addrs: [0x80C55820, 0x80C55920] + npc/tex/wol_6_eye7_TA_tex_txt: + addrs: [0x80C55920, 0x80C55A20] + npc/tex/wol_6_eye8_TA_tex_txt: + addrs: [0x80C55A20, 0x80C55B20] + npc/tex/wol_6_tmem_txt: + addrs: [0x80C55B20, 0x80C55F20] mFM_beach_pal_0: addrs: [0x80C59CA8, 0x80C59CC8] type: pal16 @@ -430,6 +8458,214 @@ config/rel.yml: mFM_beach_pal_11: addrs: [0x80C59E08, 0x80C59E28] type: pal16 + # grd_yamishop.c + field/bg/rom_yami_wall_pal: + addrs: [0x80C5A240, 0x80C5A260] + type: pal16 + field/bg/rom_yami_floor_pal: + addrs: [0x80C5A260, 0x80C5A280] + type: pal16 + field/bg/rom_yami_box_pal: + addrs: [0x80C5A280, 0x80C5A2A0] + type: pal16 + field/bg/rom_yami_mono01_pal: + addrs: [0x80C5A2A0, 0x80C5A2C0] + type: pal16 + field/bg/rom_yami_mono02_pal: + addrs: [0x80C5A2C0, 0x80C5A2E0] + type: pal16 + field/bg/rom_yami_mono03_pal: + addrs: [0x80C5A2E0, 0x80C5A300] + type: pal16 + field/bg/rom_yami_qup_pal: + addrs: [0x80C5A300, 0x80C5A320] + type: pal16 + field/bg/rom_yami_hyou_pal: + addrs: [0x80C5A320, 0x80C5A340] + type: pal16 + field/bg/rom_yami_step_tex_pal: + addrs: [0x80C5A340, 0x80C5A360] + type: pal16 + field/bg/rom_yami_hugu_pal: + addrs: [0x80C5A360, 0x80C5A380] + type: pal16 + field/bg/rom_yami_tama_pal: + addrs: [0x80C5A380, 0x80C5A3A0] + type: pal16 + field/bg/rom_yami_wall_tex: + addrs: [0x80C5A3A0, 0x80C5A6A0] + field/bg/rom_yami_floor_tex: + addrs: [0x80C5A6A0, 0x80C5AEA0] + field/bg/rom_yami_poll_tex: + addrs: [0x80C5AEA0, 0x80C5AF20] + field/bg/rom_yami_box01_tex: + addrs: [0x80C5AF20, 0x80C5B020] + field/bg/rom_yami_box02_tex: + addrs: [0x80C5B020, 0x80C5B0A0] + field/bg/rom_yami_mono01_tex: + addrs: [0x80C5B0A0, 0x80C5B2A0] + field/bg/rom_yami_mono02_tex: + addrs: [0x80C5B2A0, 0x80C5B4A0] + field/bg/rom_yami_mono03_tex: + addrs: [0x80C5B4A0, 0x80C5B6A0] + field/bg/rom_yami_qup_tex: + addrs: [0x80C5B6A0, 0x80C5B9A0] + field/bg/rom_yami_hyou_tex: + addrs: [0x80C5B9A0, 0x80C5BAA0] + field/bg/rom_yami_hyou02_tex: + addrs: [0x80C5BAA0, 0x80C5BBA0] + field/bg/rom_yami_step_tex: + addrs: [0x80C5BBA0, 0x80C5BFA0] + field/bg/rom_yami_hugu_tex: + addrs: [0x80C5BFA0, 0x80C5C2A0] + field/bg/rom_yami_tama_tex: + addrs: [0x80C5C2A0, 0x80C5C5A0] + field/bg/rom_yami_shadow01_tex: + addrs: [0x80C5C5A0, 0x80C5C6A0] + field/bg/grd_yamishop_v: + addrs: [0x80C5C6A0, 0x80C5D770] + type: vtx + # grd_post_office.c + field/bg/yubin_k_pal: + addrs: [0x80C5DBA0, 0x80C5DBC0] + type: pal16 + field/bg/yubin_k2_pal: + addrs: [0x80C5DBC0, 0x80C5DBE0] + type: pal16 + field/bg/yubin_floor_pal: + addrs: [0x80C5DBE0, 0x80C5DC00] + type: pal16 + field/bg/yubin_hakari_pal: + addrs: [0x80C5DC00, 0x80C5DC20] + type: pal16 + field/bg/yubin_wall_pal: + addrs: [0x80C5DC20, 0x80C5DC40] + type: pal16 + field/bg/yubin_letter_pal: + addrs: [0x80C5DC40, 0x80C5DC60] + type: pal16 + field/bg/yubin_us_bag_pal: + addrs: [0x80C5DC60, 0x80C5DC80] + type: pal16 + field/bg/zzzyubin_tree_pal: + addrs: [0x80C5DC80, 0x80C5DCA0] + type: pal16 + field/bg/yubin_t_pal: + addrs: [0x80C5DCA0, 0x80C5DCC0] + type: pal16 + field/bg/yubin_us_card_pal: + addrs: [0x80C5DCC0, 0x80C5DCE0] + type: pal16 + field/bg/yuibn_kaunta01_tex: + addrs: [0x80C5DCE0, 0x80C5DEE0] + field/bg/yuibn_kaunta02_tex: + addrs: [0x80C5DEE0, 0x80C5E0E0] + field/bg/yuibn_desk01_tex: + addrs: [0x80C5E0E0, 0x80C5E2E0] + field/bg/yubin_ark01_tex: + addrs: [0x80C5E2E0, 0x80C5E6E0] + field/bg/yuibn_kaunta03_tex: + addrs: [0x80C5E6E0, 0x80C5E7E0] + field/bg/yuibn_kaunta04_tex: + addrs: [0x80C5E7E0, 0x80C5E9E0] + field/bg/yubin_floor01_tex: + addrs: [0x80C5E9E0, 0x80C5F1E0] + field/bg/yubin_floor02_tex: + addrs: [0x80C5F1E0, 0x80C5F9E0] + field/bg/yubin_floor03_tex: + addrs: [0x80C5F9E0, 0x80C5FAE0] + field/bg/yubin_hakari01_tex: + addrs: [0x80C5FAE0, 0x80C5FBE0] + field/bg/yubin_hakari02_tex: + addrs: [0x80C5FBE0, 0x80C5FC60] + field/bg/yubin_hakari03_tex: + addrs: [0x80C5FC60, 0x80C5FD60] + field/bg/yubin_wall04_tex: + addrs: [0x80C5FD60, 0x80C60060] + field/bg/yubin_letter01_tex: + addrs: [0x80C60060, 0x80C60160] + field/bg/yubin_window_tex: + addrs: [0x80C60160, 0x80C601E0] + field/bg/yubin_us_bag_tex: + addrs: [0x80C601E0, 0x80C60660] + field/bg/yubin_tree2_tex: + addrs: [0x80C60660, 0x80C60960] + field/bg/yubin_tree_tex: + addrs: [0x80C60960, 0x80C60A60] + field/bg/yubin_tree3_tex: + addrs: [0x80C60A60, 0x80C60AE0] + field/bg/yubin_tree4_tex: + addrs: [0x80C60AE0, 0x80C60B60] + field/bg/yubin_step_tex: + addrs: [0x80C60B60, 0x80C60C60] + field/bg/rom_yubinkyoku_akril_tex: + addrs: [0x80C60C60, 0x80C60CE0] + field/bg/rom_yubinkyoku_shede_tex: + addrs: [0x80C60CE0, 0x80C60DE0] + field/bg/yubin_us_card_tex: + addrs: [0x80C60DE0, 0x80C611E0] + field/bg/yubin_us_mat_tex: + addrs: [0x80C611E0, 0x80C614E0] + field/bg/rom_yubinkyoku_shadow_tex: + addrs: [0x80C614E0, 0x80C615E0] + field/bg/yubin_us_card2_tex: + addrs: [0x80C615E0, 0x80C616E0] + field/bg/grd_post_office_v: + addrs: [0x80C616E0, 0x80C62DE0] + type: vtx + # tmp4.c + field/bg/tmp4_v: + addrs: [0x80C63408, 0x80C640C8] + type: vtx + # tmpr4.c + field/bg/tmpr4_v: + addrs: [0x80C646D8, 0x80C659A8] + type: vtx + # tmp3.c + field/bg/tmp3_v: + addrs: [0x80C66278, 0x80C67298] + type: vtx + # tmpr3.c + field/bg/tmpr3_v: + addrs: [0x80C67838, 0x80C68998] + type: vtx + # tmp.c + field/bg/tmp_v: + addrs: [0x80C69338, 0x80C694F8] + type: vtx + # tmpr.c + field/bg/tmpr_v: + addrs: [0x80C695F0, 0x80C6A330] + type: vtx + # tmp2.c + field/bg/grd_s_cliff_pal: + addrs: [0x80C6A8C8, 0x80C6A8E8] + type: pal16 + field/bg/grd_s_earth_pal: + addrs: [0x80C6A8E8, 0x80C6A908] + type: pal16 + field/bg/grd_s_cliff_tex: + addrs: [0x80C6A908, 0x80C6B108] + field/bg/grd_s_earth_tex: + addrs: [0x80C6B108, 0x80C6B908] + field/bg/grd_s_grass_tex: + addrs: [0x80C6B908, 0x80C6BB08] + field/bg/tmp2_v: + addrs: [0x80C6BB08, 0x80C6C9C8] + type: vtx + # tmpr2.c + field/bg/grd_1_earth_pal: + addrs: [0x80C6CE78, 0x80C6CE98] + type: pal16 + field/bg/grd_s_river_tex: + addrs: [0x80C6CE98, 0x80C6D298] + field/bg/grd_water1_tex: + addrs: [0x80C6D298, 0x80C6D498] + field/bg/grd_s_grass_tex2: + addrs: [0x80C6D498, 0x80C6D698] + field/bg/tmpr2_v: + addrs: [0x80C6D698, 0x80C6D9F8] + type: vtx mFM_bush_pal_0: addrs: [0x80C78680, 0x80C786A0] type: pal16 @@ -538,6 +8774,1491 @@ config/rel.yml: mFM_earth_pal_11: addrs: [0x80C90260, 0x80C90280] type: pal16 + + # map submenu + # grd_s_c1_1.c + field/bg/grd_s_c1_1_v: + addrs: [0x80CE7320, 0x80CE8180] + type: vtx + # grd_s_c1_2.c + field/bg/grd_s_c1_2_v: + addrs: [0x80CE83C0, 0x80CE9290] + type: vtx + # grd_s_c1_3.c + field/bg/grd_s_c1_3_v: + addrs: [0x80CE9510, 0x80CEA330] + type: vtx + # grd_s_c1_4.c + field/bg/grd_s_c1_4_v: + addrs: [0x80CEA598, 0x80CEB5D8] + type: vtx + # grd_s_c1_5.c + field/bg/grd_s_c1_5_v: + addrs: [0x80CEB868, 0x80CEC538] + type: vtx + # grd_s_c1_r1_1.c + field/bg/grd_s_c1_r1_1_v: + addrs: [0x80CEC748, 0x80CED978] + type: vtx + # grd_s_c1_r1_2.c + field/bg/grd_s_c1_r1_2_v: + addrs: [0x80CEDD00, 0x80CEEE20] + type: vtx + # grd_s_c1_r1_3.c + field/bg/grd_s_c1_r1_3_v: + addrs: [0x80CEF138, 0x80CF0258] + type: vtx + # grd_s_c1_r2_1.c + field/bg/grd_s_c1_r2_1_v: + addrs: [0x80CF0548, 0x80CF1648] + type: vtx + # grd_s_c1_r2_2.c + field/bg/grd_s_c1_r2_2_v: + addrs: [0x80CF1970, 0x80CF2AF0] + type: vtx + # grd_s_c1_r2_3.c + field/bg/grd_s_c1_r2_3_v: + addrs: [0x80CF2DD8, 0x80CF40D8] + type: vtx + # grd_s_c1_r3_1.c + field/bg/grd_s_c1_r3_1_v: + addrs: [0x80CF4450, 0x80CF5230] + type: vtx + # grd_s_c1_r3_2.c + field/bg/grd_s_c1_r3_2_v: + addrs: [0x80CF5518, 0x80CF6508] + type: vtx + # grd_s_c1_r3_3.c + field/bg/grd_s_c1_r3_3_v: + addrs: [0x80CF6820, 0x80CF7900] + type: vtx + # grd_s_c1_s_1.c + field/bg/grd_s_c1_s_1_v: + addrs: [0x80CF7C58, 0x80CF8918] + type: vtx + # grd_s_c1_s_2.c + field/bg/grd_s_c1_s_2_v: + addrs: [0x80CF8B38, 0x80CF99F8] + type: vtx + # grd_s_c1_s_3.c + field/bg/grd_s_c1_s_3_v: + addrs: [0x80CF9C60, 0x80CFAC60] + type: vtx + # grd_s_c1_s_4.c + field/bg/grd_s_c1_s_4_v: + addrs: [0x80CFAEA0, 0x80CFBF20] + type: vtx + # grd_s_c2_1.c + field/bg/grd_s_c2_1_v: + addrs: [0x80CFC1B0, 0x80CFCF80] + type: vtx + # grd_s_c2_2.c + field/bg/grd_s_c2_2_v: + addrs: [0x80CFD1D0, 0x80CFE010] + type: vtx + # grd_s_c2_3.c + field/bg/grd_s_c2_3_v: + addrs: [0x80CFE230, 0x80CFF2B0] + type: vtx + # grd_s_c2_r1_1.c + field/bg/grd_s_c2_r1_1_v: + addrs: [0x80CFF5B8, 0x80D00688] + type: vtx + # grd_s_c2_r1_2.c + field/bg/grd_s_c2_r1_2_v: + addrs: [0x80D009B0, 0x80D01B50] + type: vtx + # grd_s_c2_r2_1.c + field/bg/grd_s_c2_r2_1_v: + addrs: [0x80D01E80, 0x80D02E70] + type: vtx + # grd_s_c2_r2_2.c + field/bg/grd_s_c2_r2_2_v: + addrs: [0x80D03150, 0x80D04360] + type: vtx + # grd_s_c2_s_1.c + field/bg/grd_s_c2_s_1_v: + addrs: [0x80D04680, 0x80D05790] + type: vtx + # grd_s_c2_s_2.c + field/bg/grd_s_c2_s_2_v: + addrs: [0x80D05A20, 0x80D06880] + type: vtx + # grd_s_c2_s_3.c + field/bg/grd_s_c2_s_3_v: + addrs: [0x80D06AF0, 0x80D07880] + type: vtx + # grd_s_c3_1.c + field/bg/grd_s_c3_1_v: + addrs: [0x80D07AF0, 0x80D08A30] + type: vtx + # grd_s_c3_2.c + field/bg/grd_s_c3_2_v: + addrs: [0x80D08C90, 0x80D09A90] + type: vtx + # grd_s_c3_3.c + field/bg/grd_s_c3_3_v: + addrs: [0x80D09D80, 0x80D0AAA0] + type: vtx + # grd_s_c3_r1_1.c + field/bg/grd_s_c3_r1_1_v: + addrs: [0x80D0AD00, 0x80D0BBA0] + type: vtx + # grd_s_c3_r1_2.c + field/bg/grd_s_c3_r1_2_v: + addrs: [0x80D0BE58, 0x80D0CE48] + type: vtx + # grd_s_c3_r2_1.c + field/bg/grd_s_c3_r2_1_v: + addrs: [0x80D0D158, 0x80D0E468] + type: vtx + # grd_s_c3_r2_2.c + field/bg/grd_s_c3_r2_2_v: + addrs: [0x80D0E7D8, 0x80D0FAE8] + type: vtx + # grd_s_c3_s_1.c + field/bg/grd_s_c3_s_1_v: + addrs: [0x80D0FE60, 0x80D11330] + type: vtx + # grd_s_c4_1.c + field/bg/grd_s_c4_1_v: + addrs: [0x80D11628, 0x80D12218] + type: vtx + # grd_s_c4_2.c + field/bg/grd_s_c4_2_v: + addrs: [0x80D12430, 0x80D13370] + type: vtx + # grd_s_c4_3.c + field/bg/grd_s_c4_3_v: + addrs: [0x80D135B0, 0x80D14340] + type: vtx + # grd_s_c4_r1_1.c + field/bg/grd_s_c4_r1_1_v: + addrs: [0x80D145A8, 0x80D155A8] + type: vtx + # grd_s_c4_r1_2.c + field/bg/grd_s_c4_r1_2_v: + addrs: [0x80D158C0, 0x80D16860] + type: vtx + # grd_s_c4_r2_1.c + field/bg/grd_s_c4_r2_1_v: + addrs: [0x80D16B90, 0x80D17C00] + type: vtx + # grd_s_c4_r2_2.c + field/bg/grd_s_c4_r2_2_v: + addrs: [0x80D17F08, 0x80D18D08] + type: vtx + # grd_s_c4_r3_1.c + field/bg/grd_s_c4_r3_1_v: + addrs: [0x80D18FC0, 0x80D19DE0] + type: vtx + # grd_s_c4_r3_2.c + field/bg/grd_s_c4_r3_2_v: + addrs: [0x80D1A0D8, 0x80D1AE08] + type: vtx + # grd_s_c4_s_1.c + field/bg/grd_s_c4_s_1_v: + addrs: [0x80D1B088, 0x80D1BDD8] + type: vtx + # grd_s_c4_s_2.c + field/bg/grd_s_c4_s_2_v: + addrs: [0x80D1C030, 0x80D1D020] + type: vtx + # grd_s_c5_1.c + field/bg/grd_s_c5_1_v: + addrs: [0x80D1D2A8, 0x80D1DD98] + type: vtx + # grd_s_c5_2.c + field/bg/grd_s_c5_2_v: + addrs: [0x80D1DFA8, 0x80D1EF28] + type: vtx + # grd_s_c5_3.c + field/bg/grd_s_c5_3_v: + addrs: [0x80D1F1B8, 0x80D1FD08] + type: vtx + # grd_s_c5_r1_1.c + field/bg/grd_s_c5_r1_1_v: + addrs: [0x80D1FF30, 0x80D211D0] + type: vtx + # grd_s_c5_r1_2.c + field/bg/grd_s_c5_r1_2_v: + addrs: [0x80D21520, 0x80D22760] + type: vtx + # grd_s_c5_r2_1.c + field/bg/grd_s_c5_r2_1_v: + addrs: [0x80D22AC0, 0x80D23E40] + type: vtx + # grd_s_c5_r2_2.c + field/bg/grd_s_c5_r2_2_v: + addrs: [0x80D241D0, 0x80D25300] + type: vtx + # grd_s_c5_r3_1.c + field/bg/grd_s_c5_r3_1_v: + addrs: [0x80D25648, 0x80D26658] + type: vtx + # grd_s_c5_r3_2.c + field/bg/grd_s_c5_r3_2_v: + addrs: [0x80D26988, 0x80D27898] + type: vtx + # grd_s_c5_s_1.c + field/bg/grd_s_c5_s_1_v: + addrs: [0x80D27B78, 0x80D288F8] + type: vtx + # grd_s_c5_s_2.c + field/bg/grd_s_c5_s_2_v: + addrs: [0x80D28B20, 0x80D298C0] + type: vtx + # grd_s_c6_1.c + field/bg/grd_s_c6_1_v: + addrs: [0x80D29AC8, 0x80D2A998] + type: vtx + # grd_s_c6_2.c + field/bg/grd_s_c6_2_v: + addrs: [0x80D2AC00, 0x80D2BB80] + type: vtx + # grd_s_c6_3.c + field/bg/grd_s_c6_3_v: + addrs: [0x80D2BE00, 0x80D2CB60] + type: vtx + # grd_s_c6_r1_1.c + field/bg/grd_s_c6_r1_1_v: + addrs: [0x80D2CDB0, 0x80D2DD50] + type: vtx + # grd_s_c6_r1_2.c + field/bg/grd_s_c6_r1_2_v: + addrs: [0x80D2E098, 0x80D2F0B8] + type: vtx + # grd_s_c6_r3_1.c + field/bg/grd_s_c6_r3_1_v: + addrs: [0x80D2F3F8, 0x80D30888] + type: vtx + # grd_s_c6_s_1.c + field/bg/grd_s_c6_s_1_v: + addrs: [0x80D30BB0, 0x80D31A50] + type: vtx + # grd_s_c7_1.c + field/bg/grd_s_c7_1_v: + addrs: [0x80D31C90, 0x80D32A90] + type: vtx + # grd_s_c7_2.c + field/bg/grd_s_c7_2_v: + addrs: [0x80D32CC8, 0x80D33DD8] + type: vtx + # grd_s_c7_3.c + field/bg/grd_s_c7_3_v: + addrs: [0x80D34090, 0x80D35150] + type: vtx + # grd_s_c7_r1_1.c + field/bg/grd_s_c7_r1_1_v: + addrs: [0x80D35460, 0x80D362A0] + type: vtx + # grd_s_c7_r1_2.c + field/bg/grd_s_c7_r1_2_v: + addrs: [0x80D365B0, 0x80D37440] + type: vtx + # grd_s_c7_r3_1.c + field/bg/grd_s_c7_r3_1_v: + addrs: [0x80D37708, 0x80D38908] + type: vtx + # grd_s_c7_r3_2.c + field/bg/grd_s_c7_r3_2_v: + addrs: [0x80D38C58, 0x80D39FA8] + type: vtx + # grd_s_c7_s_1.c + field/bg/grd_s_c7_s_1_v: + addrs: [0x80D3A318, 0x80D3B678] + type: vtx + # grd_s_c7_s_2.c + field/bg/grd_s_c7_s_2_v: + addrs: [0x80D3B938, 0x80D3C5B8] + type: vtx + # grd_s_c7_s_3.c + field/bg/grd_s_c7_s_3_v: + addrs: [0x80D3C800, 0x80D3D6C0] + type: vtx + # grd_s_e1_1.c + field/bg/grd_s_e1_1_v: + addrs: [0x80D3D930, 0x80D3DE90] + type: vtx + # grd_s_e1_r1_1.c + field/bg/grd_s_e1_r1_1_v: + addrs: [0x80D3DFF0, 0x80D3F3E0] + type: vtx + # grd_s_e2_1.c + field/bg/grd_s_e2_1_v: + addrs: [0x80D3F770, 0x80D3FDA0] + type: vtx + # grd_s_e2_c1_1.c + field/bg/grd_s_e2_c1_1_v: + addrs: [0x80D3FF08, 0x80D40568] + type: vtx + # grd_s_e2_m_1.c + field/bg/grd_s_e2_m_1_v: + addrs: [0x80D406C8, 0x80D40D58] + type: vtx + # grd_s_e2_o_1.c + field/bg/grd_s_e2_o_1_v: + addrs: [0x80D40FA0, 0x80D41180] + type: vtx + # grd_s_e2_t_1.c + field/bg/grd_s_e2_t_1_v: + addrs: [0x80D41280, 0x80D41C00] + type: vtx + # grd_s_e3_1.c + field/bg/grd_s_e3_1_v: + addrs: [0x80D41DF0, 0x80D42480] + type: vtx + # grd_s_e3_c1_1.c + field/bg/grd_s_e3_c1_1_v: + addrs: [0x80D425D8, 0x80D42C48] + type: vtx + # grd_s_e3_m_1.c + field/bg/grd_s_e3_m_1_v: + addrs: [0x80D42DB0, 0x80D434C0] + type: vtx + # grd_s_e3_o_1.c + field/bg/grd_s_e3_o_1_v: + addrs: [0x80D436F8, 0x80D438D8] + type: vtx + # grd_s_e3_t_1.c + field/bg/grd_s_e3_t_1_v: + addrs: [0x80D439D8, 0x80D44278] + type: vtx + # grd_s_e4_1.c + field/bg/grd_s_e4_1_v: + addrs: [0x80D44468, 0x80D445C8] + type: vtx + # grd_s_e5_1.c + field/bg/grd_s_e5_1_v: + addrs: [0x80D44670, 0x80D447F0] + type: vtx + # grd_s_f_1.c + field/bg/grd_s_f_1_v: + addrs: [0x80D448A0, 0x80D45410] + type: vtx + # grd_s_f_10.c + field/bg/grd_s_f_10_v: + addrs: [0x80D455F0, 0x80D46210] + type: vtx + # grd_s_f_2.c + field/bg/grd_s_f_2_v: + addrs: [0x80D463D8, 0x80D47118] + type: vtx + # grd_s_f_3.c + field/bg/grd_s_f_3_v: + addrs: [0x80D47320, 0x80D47B00] + type: vtx + # grd_s_f_4.c + field/bg/grd_s_f_4_v: + addrs: [0x80D47C88, 0x80D487F8] + type: vtx + # grd_s_f_5.c + field/bg/grd_s_f_5_v: + addrs: [0x80D48A70, 0x80D499A0] + type: vtx + # grd_s_f_6.c + field/bg/grd_s_f_6_v: + addrs: [0x80D49C60, 0x80D4ABD0] + type: vtx + # grd_s_f_7.c + field/bg/grd_s_f_7_v: + addrs: [0x80D4AE88, 0x80D4C3B8] + type: vtx + # grd_s_f_8.c + field/bg/grd_s_f_8_v: + addrs: [0x80D4C640, 0x80D4D360] + type: vtx + # grd_s_f_9.c + field/bg/grd_s_f_9_v: + addrs: [0x80D4D568, 0x80D4E4D8] + type: vtx + # grd_s_f_ko_1.c + field/bg/grd_s_f_ko_1_v: + addrs: [0x80D4E708, 0x80D4F5D8] + type: vtx + # grd_s_f_ko_2.c + field/bg/grd_s_f_ko_2_v: + addrs: [0x80D4F808, 0x80D502B8] + type: vtx + # grd_s_f_ko_3.c + field/bg/grd_s_f_ko_3_v: + addrs: [0x80D504A0, 0x80D51430] + type: vtx + # grd_s_f_mh_1.c + field/bg/grd_s_f_mh_1_v: + addrs: [0x80D51708, 0x80D523C8] + type: vtx + # grd_s_f_mh_2.c + field/bg/grd_s_f_mh_2_v: + addrs: [0x80D52588, 0x80D53338] + type: vtx + # grd_s_f_mh_3.c + field/bg/grd_s_f_mh_3_v: + addrs: [0x80D534F0, 0x80D53FF0] + type: vtx + # grd_s_f_mu_1.c + field/bg/grd_s_f_mu_1_v: + addrs: [0x80D54190, 0x80D54B90] + type: vtx + # grd_s_f_mu_2.c + field/bg/grd_s_f_mu_2_v: + addrs: [0x80D54D60, 0x80D55750] + type: vtx + # grd_s_f_mu_3.c + field/bg/grd_s_f_mu_3_v: + addrs: [0x80D55930, 0x80D562B0] + type: vtx + # grd_s_f_pk_1.c + field/bg/grd_s_f_pk_1_v: + addrs: [0x80D564B8, 0x80D57378] + type: vtx + # grd_s_f_pk_2.c + field/bg/grd_s_f_pk_2_v: + addrs: [0x80D575B8, 0x80D58358] + type: vtx + # grd_s_f_pk_3.c + field/bg/grd_s_f_pk_3_v: + addrs: [0x80D58580, 0x80D595A0] + type: vtx + # grd_s_hole_test.c + field/bg/grd_s_hole_test_v: + addrs: [0x80D59810, 0x80D5A740] + type: vtx + # grd_s_il_1.c + field/bg/grd_s_il_1_v: + addrs: [0x80D5A9A8, 0x80D5B6C8] + type: vtx + # grd_s_il_2.c + field/bg/grd_s_il_2_v: + addrs: [0x80D5BA18, 0x80D5CF08] + type: vtx + # grd_s_il_3.c + field/bg/grd_s_il_3_v: + addrs: [0x80D5D358, 0x80D5E188] + type: vtx + # grd_s_il_4.c + field/bg/grd_s_il_4_v: + addrs: [0x80D5E4F8, 0x80D5F278] + type: vtx + # grd_s_ir_1.c + field/bg/grd_s_ir_1_v: + addrs: [0x80D5F5E8, 0x80D60668] + type: vtx + # grd_s_ir_2.c + field/bg/grd_s_ir_2_v: + addrs: [0x80D60A60, 0x80D61DD0] + type: vtx + # grd_s_ir_3.c + field/bg/grd_s_ir_3_v: + addrs: [0x80D621F8, 0x80D63748] + type: vtx + # grd_s_ir_4.c + field/bg/grd_s_ir_4_v: + addrs: [0x80D63BB0, 0x80D64D60] + type: vtx + # grd_s_m_1.c + field/bg/grd_s_m_1_v: + addrs: [0x80D65158, 0x80D65F58] + type: vtx + # grd_s_m_10.c + field/bg/grd_s_m_10_v: + addrs: [0x80D662B0, 0x80D670A0] + type: vtx + # grd_s_m_2.c + field/bg/grd_s_m_2_v: + addrs: [0x80D67438, 0x80D68368] + type: vtx + # grd_s_m_3.c + field/bg/grd_s_m_3_v: + addrs: [0x80D68718, 0x80D69578] + type: vtx + # grd_s_m_4.c + field/bg/grd_s_m_4_v: + addrs: [0x80D698C8, 0x80D6A528] + type: vtx + # grd_s_m_5.c + field/bg/grd_s_m_5_v: + addrs: [0x80D6A8A0, 0x80D6B8A0] + type: vtx + # grd_s_m_6.c + field/bg/grd_s_m_6_v: + addrs: [0x80D6BC70, 0x80D6CBE0] + type: vtx + # grd_s_m_7.c + field/bg/grd_s_m_7_v: + addrs: [0x80D6CF60, 0x80D6DBF0] + type: vtx + # grd_s_m_8.c + field/bg/grd_s_m_8_v: + addrs: [0x80D6DF60, 0x80D6EC70] + type: vtx + # grd_s_m_9.c + field/bg/grd_s_m_9_v: + addrs: [0x80D6EFE8, 0x80D6FC28] + type: vtx + # grd_s_m_r1_1.c + field/bg/grd_s_m_r1_1_v: + addrs: [0x80D6FF78, 0x80D70FB8] + type: vtx + # grd_s_m_r1_2.c + field/bg/grd_s_m_r1_2_v: + addrs: [0x80D713F8, 0x80D723C8] + type: vtx + # grd_s_m_r1_3.c + field/bg/grd_s_m_r1_3_v: + addrs: [0x80D727D8, 0x80D73638] + type: vtx + # grd_s_m_r1_4.c + field/bg/grd_s_m_r1_4_v: + addrs: [0x80D73A50, 0x80D74B90] + type: vtx + # grd_s_m_r1_5.c + field/bg/grd_s_m_r1_5_v: + addrs: [0x80D74FF8, 0x80D76238] + type: vtx + # grd_s_m_r1_b_1.c + field/bg/grd_s_m_r1_b_1_v: + addrs: [0x80D76680, 0x80D774E0] + type: vtx + # grd_s_m_r1_b_2.c + field/bg/grd_s_m_r1_b_2_v: + addrs: [0x80D77928, 0x80D78AB8] + type: vtx + # grd_s_m_r1_b_3.c + field/bg/grd_s_m_r1_b_3_v: + addrs: [0x80D78F30, 0x80D79F30] + type: vtx + # grd_s_m_ta_1.c + field/bg/grd_s_m_ta_1_v: + addrs: [0x80D7A370, 0x80D7B320] + type: vtx + # grd_s_m_ta_2.c + field/bg/grd_s_m_ta_2_v: + addrs: [0x80D7B6E8, 0x80D7C568] + type: vtx + # grd_s_m_ta_3.c + field/bg/grd_s_m_ta_3_v: + addrs: [0x80D7C920, 0x80D7D890] + type: vtx + # grd_s_m_wf_1.c + field/bg/grd_s_m_wf_1_v: + addrs: [0x80D7DCB0, 0x80D7EEE0] + type: vtx + # grd_s_m_wf_2.c + field/bg/grd_s_m_wf_2_v: + addrs: [0x80D7F350, 0x80D80B60] + type: vtx + # grd_s_m_wf_3.c + field/bg/grd_s_m_wf_3_v: + addrs: [0x80D81048, 0x80D82348] + type: vtx + # grd_s_o_1.c + field/bg/grd_s_o_1_v: + addrs: [0x80D827C0, 0x80D82B60] + type: vtx + # grd_s_o_10.c + field/bg/grd_s_o_10_v: + addrs: [0x80D82CE0, 0x80D83040] + type: vtx + # grd_s_o_2.c + field/bg/grd_s_o_2_v: + addrs: [0x80D831B8, 0x80D83518] + type: vtx + # grd_s_o_3.c + field/bg/grd_s_o_3_v: + addrs: [0x80D83698, 0x80D839C8] + type: vtx + # grd_s_o_4.c + field/bg/grd_s_o_4_v: + addrs: [0x80D83B40, 0x80D83E90] + type: vtx + # grd_s_o_5.c + field/bg/grd_s_o_5_v: + addrs: [0x80D84010, 0x80D84350] + type: vtx + # grd_s_o_6.c + field/bg/grd_s_o_6_v: + addrs: [0x80D844D0, 0x80D84800] + type: vtx + # grd_s_o_7.c + field/bg/grd_s_o_7_v: + addrs: [0x80D84978, 0x80D84CC8] + type: vtx + # grd_s_o_8.c + field/bg/grd_s_o_8_v: + addrs: [0x80D84E48, 0x80D851E8] + type: vtx + # grd_s_o_9.c + field/bg/grd_s_o_9_v: + addrs: [0x80D85378, 0x80D85708] + type: vtx + # grd_s_o_i_1.c + field/bg/grd_s_o_i_1_v: + addrs: [0x80D85850, 0x80D85B70] + type: vtx + # grd_s_o_i_2.c + field/bg/grd_s_o_i_2_v: + addrs: [0x80D85CF0, 0x80D85ED0] + type: vtx + # grd_s_o_r1_1.c + field/bg/grd_s_o_r1_1_v: + addrs: [0x80D86010, 0x80D863E0] + type: vtx + # grd_s_o_r1_2.c + field/bg/grd_s_o_r1_2_v: + addrs: [0x80D86560, 0x80D86900] + type: vtx + # grd_s_o_r1_3.c + field/bg/grd_s_o_r1_3_v: + addrs: [0x80D86A80, 0x80D86E30] + type: vtx + # grd_s_o_r1_4.c + field/bg/grd_s_o_r1_4_v: + addrs: [0x80D86FB8, 0x80D87338] + type: vtx + # grd_s_o_r1_5.c + field/bg/grd_s_o_r1_5_v: + addrs: [0x80D874B8, 0x80D87778] + type: vtx + # grd_s_o_r1_b_1.c + field/bg/grd_s_o_r1_b_1_v: + addrs: [0x80D878D0, 0x80D87AB0] + type: vtx + # grd_s_o_r1_b_2.c + field/bg/grd_s_o_r1_b_2_v: + addrs: [0x80D87BF0, 0x80D87DD0] + type: vtx + # grd_s_o_r1_b_3.c + field/bg/grd_s_o_r1_b_3_v: + addrs: [0x80D87F08, 0x80D880E8] + type: vtx + # grd_s_o_ta_1.c + field/bg/grd_s_o_ta_1_v: + addrs: [0x80D88220, 0x80D885E0] + type: vtx + # grd_s_o_ta_2.c + field/bg/grd_s_o_ta_2_v: + addrs: [0x80D88768, 0x80D88A48] + type: vtx + # grd_s_o_ta_3.c + field/bg/grd_s_o_ta_3_v: + addrs: [0x80D88BB0, 0x80D88EA0] + type: vtx + # grd_s_o_wf_1.c + field/bg/grd_s_o_wf_1_v: + addrs: [0x80D89008, 0x80D893F8] + type: vtx + # grd_s_o_wf_2.c + field/bg/grd_s_o_wf_2_v: + addrs: [0x80D89578, 0x80D89998] + type: vtx + # grd_s_o_wf_3.c + field/bg/grd_s_o_wf_3_v: + addrs: [0x80D89B18, 0x80D89EF8] + type: vtx + # grd_s_r1_1.c + field/bg/grd_s_r1_1_v: + addrs: [0x80D8A040, 0x80D8AC00] + type: vtx + # grd_s_r1_2.c + field/bg/grd_s_r1_2_v: + addrs: [0x80D8AE38, 0x80D8BAD8] + type: vtx + # grd_s_r1_3.c + field/bg/grd_s_r1_3_v: + addrs: [0x80D8BD70, 0x80D8CAE0] + type: vtx + # grd_s_r1_4.c + field/bg/grd_s_r1_4_v: + addrs: [0x80D8CDA0, 0x80D8D880] + type: vtx + # grd_s_r1_b_1.c + field/bg/grd_s_r1_b_1_v: + addrs: [0x80D8DAB8, 0x80D8E818] + type: vtx + # grd_s_r1_b_2.c + field/bg/grd_s_r1_b_2_v: + addrs: [0x80D8EAF0, 0x80D8FC00] + type: vtx + # grd_s_r1_b_3.c + field/bg/grd_s_r1_b_3_v: + addrs: [0x80D8FF30, 0x80D90EF0] + type: vtx + # grd_s_r1_p_1.c + field/bg/grd_s_r1_p_1_v: + addrs: [0x80D91220, 0x80D921D0] + type: vtx + # grd_s_r2_1.c + field/bg/grd_s_r2_1_v: + addrs: [0x80D924C0, 0x80D93040] + type: vtx + # grd_s_r2_2.c + field/bg/grd_s_r2_2_v: + addrs: [0x80D932E8, 0x80D93F18] + type: vtx + # grd_s_r2_3.c + field/bg/grd_s_r2_3_v: + addrs: [0x80D94148, 0x80D94EE8] + type: vtx + # grd_s_r2_4.c + field/bg/grd_s_r2_4_v: + addrs: [0x80D951B8, 0x80D95F08] + type: vtx + # grd_s_r2_b_1.c + field/bg/grd_s_r2_b_1_v: + addrs: [0x80D961D0, 0x80D97490] + type: vtx + # grd_s_r2_b_2.c + field/bg/grd_s_r2_b_2_v: + addrs: [0x80D97810, 0x80D98850] + type: vtx + # grd_s_r2_b_3.c + field/bg/grd_s_r2_b_3_v: + addrs: [0x80D98B78, 0x80D99D28] + type: vtx + # grd_s_r2_p_1.c + field/bg/grd_s_r2_p_1_v: + addrs: [0x80D9A070, 0x80D9B5B0] + type: vtx + # grd_s_r3_1.c + field/bg/grd_s_r3_1_v: + addrs: [0x80D9B8E0, 0x80D9C6C0] + type: vtx + # grd_s_r3_2.c + field/bg/grd_s_r3_2_v: + addrs: [0x80D9C988, 0x80D9D5F8] + type: vtx + # grd_s_r3_3.c + field/bg/grd_s_r3_3_v: + addrs: [0x80D9D888, 0x80D9E518] + type: vtx + # grd_s_r3_4.c + field/bg/grd_s_r3_4_v: + addrs: [0x80D9E7D0, 0x80D9F3A0] + type: vtx + # grd_s_r3_b_1.c + field/bg/grd_s_r3_b_1_v: + addrs: [0x80D9F630, 0x80DA0520] + type: vtx + # grd_s_r3_b_2.c + field/bg/grd_s_r3_b_2_v: + addrs: [0x80DA0828, 0x80DA19F8] + type: vtx + # grd_s_r3_b_3.c + field/bg/grd_s_r3_b_3_v: + addrs: [0x80DA1D50, 0x80DA2E50] + type: vtx + # grd_s_r3_p_1.c + field/bg/grd_s_r3_p_1_v: + addrs: [0x80DA3180, 0x80DA44F0] + type: vtx + # grd_s_r4_1.c + field/bg/grd_s_r4_1_v: + addrs: [0x80DA4830, 0x80DA54D0] + type: vtx + # grd_s_r4_2.c + field/bg/grd_s_r4_2_v: + addrs: [0x80DA5768, 0x80DA6478] + type: vtx + # grd_s_r4_3.c + field/bg/grd_s_r4_3_v: + addrs: [0x80DA66E0, 0x80DA7270] + type: vtx + # grd_s_r4_b_1.c + field/bg/grd_s_r4_b_1_v: + addrs: [0x80DA7508, 0x80DA7F78] + type: vtx + # grd_s_r4_b_2.c + field/bg/grd_s_r4_b_2_v: + addrs: [0x80DA8208, 0x80DA90E8] + type: vtx + # grd_s_r4_p_1.c + field/bg/grd_s_r4_p_1_v: + addrs: [0x80DA93E8, 0x80DAA5A8] + type: vtx + # grd_s_r5_1.c + field/bg/grd_s_r5_1_v: + addrs: [0x80DAA938, 0x80DAB678] + type: vtx + # grd_s_r5_2.c + field/bg/grd_s_r5_2_v: + addrs: [0x80DAB930, 0x80DAC770] + type: vtx + # grd_s_r5_3.c + field/bg/grd_s_r5_3_v: + addrs: [0x80DACA20, 0x80DAD820] + type: vtx + # grd_s_r5_b_1.c + field/bg/grd_s_r5_b_1_v: + addrs: [0x80DADAD8, 0x80DAEAB8] + type: vtx + # grd_s_r5_b_2.c + field/bg/grd_s_r5_b_2_v: + addrs: [0x80DAEDA8, 0x80DAFD98] + type: vtx + # grd_s_r5_p_1.c + field/bg/grd_s_r5_p_1_v: + addrs: [0x80DB00B0, 0x80DB1210] + type: vtx + # grd_s_r6_1.c + field/bg/grd_s_r6_1_v: + addrs: [0x80DB1540, 0x80DB2010] + type: vtx + # grd_s_r6_2.c + field/bg/grd_s_r6_2_v: + addrs: [0x80DB2268, 0x80DB2DB8] + type: vtx + # grd_s_r6_3.c + field/bg/grd_s_r6_3_v: + addrs: [0x80DB2FF8, 0x80DB3B08] + type: vtx + # grd_s_r6_b_1.c + field/bg/grd_s_r6_b_1_v: + addrs: [0x80DB3D70, 0x80DB4930] + type: vtx + # grd_s_r6_b_2.c + field/bg/grd_s_r6_b_2_v: + addrs: [0x80DB4BE8, 0x80DB5E18] + type: vtx + # grd_s_r6_p_1.c + field/bg/grd_s_r6_p_1_v: + addrs: [0x80DB6138, 0x80DB7428] + type: vtx + # grd_s_r7_1.c + field/bg/grd_s_r7_1_v: + addrs: [0x80DB77B8, 0x80DB8408] + type: vtx + # grd_s_r7_2.c + field/bg/grd_s_r7_2_v: + addrs: [0x80DB86B0, 0x80DB9260] + type: vtx + # grd_s_r7_3.c + field/bg/grd_s_r7_3_v: + addrs: [0x80DB94C0, 0x80DBA020] + type: vtx + # grd_s_r7_b_1.c + field/bg/grd_s_r7_b_1_v: + addrs: [0x80DBA268, 0x80DBAF58] + type: vtx + # grd_s_r7_b_2.c + field/bg/grd_s_r7_b_2_v: + addrs: [0x80DBB228, 0x80DBC478] + type: vtx + # grd_s_r7_p_1.c + field/bg/grd_s_r7_p_1_v: + addrs: [0x80DBC7D0, 0x80DBD8E0] + type: vtx + # grd_s_t_1.c + field/bg/grd_s_t_1_v: + addrs: [0x80DBDBF8, 0x80DBE618] + type: vtx + # grd_s_t_10.c + field/bg/grd_s_t_10_v: + addrs: [0x80DBE858, 0x80DBF688] + type: vtx + # grd_s_t_2.c + field/bg/grd_s_t_2_v: + addrs: [0x80DBF8F8, 0x80DC05E8] + type: vtx + # grd_s_t_3.c + field/bg/grd_s_t_3_v: + addrs: [0x80DC0808, 0x80DC1188] + type: vtx + # grd_s_t_4.c + field/bg/grd_s_t_4_v: + addrs: [0x80DC1378, 0x80DC2218] + type: vtx + # grd_s_t_5.c + field/bg/grd_s_t_5_v: + addrs: [0x80DC2500, 0x80DC3480] + type: vtx + # grd_s_t_6.c + field/bg/grd_s_t_6_v: + addrs: [0x80DC3770, 0x80DC48D0] + type: vtx + # grd_s_t_7.c + field/bg/grd_s_t_7_v: + addrs: [0x80DC4B78, 0x80DC5CC8] + type: vtx + # grd_s_t_8.c + field/bg/grd_s_t_8_v: + addrs: [0x80DC5F48, 0x80DC6B88] + type: vtx + # grd_s_t_9.c + field/bg/grd_s_t_9_v: + addrs: [0x80DC6DA8, 0x80DC7A68] + type: vtx + # grd_s_t_po_1.c + field/bg/grd_s_t_po_1_v: + addrs: [0x80DC7C88, 0x80DC8708] + type: vtx + # grd_s_t_po_2.c + field/bg/grd_s_t_po_2_v: + addrs: [0x80DC8918, 0x80DC9348] + type: vtx + # grd_s_t_po_3.c + field/bg/grd_s_t_po_3_v: + addrs: [0x80DC9578, 0x80DCA3D8] + type: vtx + # grd_s_t_r1_1.c + field/bg/grd_s_t_r1_1_v: + addrs: [0x80DCA6E0, 0x80DCB5D0] + type: vtx + # grd_s_t_r1_2.c + field/bg/grd_s_t_r1_2_v: + addrs: [0x80DCB8E8, 0x80DCCA18] + type: vtx + # grd_s_t_r1_3.c + field/bg/grd_s_t_r1_3_v: + addrs: [0x80DCCD78, 0x80DCDEC8] + type: vtx + # grd_s_t_r1_4.c + field/bg/grd_s_t_r1_4_v: + addrs: [0x80DCE230, 0x80DCF240] + type: vtx + # grd_s_t_r1_5.c + field/bg/grd_s_t_r1_5_v: + addrs: [0x80DCF588, 0x80DD06E8] + type: vtx + # grd_s_t_sh_1.c + field/bg/grd_s_t_sh_1_v: + addrs: [0x80DD0A38, 0x80DD1458] + type: vtx + # grd_s_t_sh_2.c + field/bg/grd_s_t_sh_2_v: + addrs: [0x80DD1678, 0x80DD2338] + type: vtx + # grd_s_t_sh_3.c + field/bg/grd_s_t_sh_3_v: + addrs: [0x80DD2610, 0x80DD3070] + type: vtx + # grd_s_t_st1_1.c + field/bg/grd_s_t_st1_1_v: + addrs: [0x80DD3270, 0x80DD3EA0] + type: vtx + # grd_s_t_st1_2.c + field/bg/grd_s_t_st1_2_v: + addrs: [0x80DD40F0, 0x80DD4FF0] + type: vtx + # grd_s_t_st1_3.c + field/bg/grd_s_t_st1_3_v: + addrs: [0x80DD5280, 0x80DD5F30] + type: vtx + # rom_toudai.c + field/bg/rom_toudai_yuka_pal: + addrs: [0x80F08520, 0x80F08540] + type: pal16 + field/bg/rom_toudai_kabe_pal: + addrs: [0x80F08540, 0x80F08560] + type: pal16 + field/bg/rom_toudai_step_pal: + addrs: [0x80F08560, 0x80F08580] + type: pal16 + field/bg/rom_toudai_meka_pal: + addrs: [0x80F08580, 0x80F085A0] + type: pal16 + field/bg/rom_toudai_ukiwa_pal: + addrs: [0x80F085A0, 0x80F085C0] + type: pal16 + field/bg/rom_toudai_yuka_tex: + addrs: [0x80F085C0, 0x80F08DC0] + field/bg/rom_toudai_kabeA_tex: + addrs: [0x80F08DC0, 0x80F095C0] + field/bg/rom_toudai_kabeB_tex: + addrs: [0x80F095C0, 0x80F09DC0] + field/bg/rom_toudai_step_tex: + addrs: [0x80F09DC0, 0x80F0A1C0] + field/bg/rom_toudai_mekaA_tex: + addrs: [0x80F0A1C0, 0x80F0A2C0] + field/bg/rom_toudai_ukiwa_tex: + addrs: [0x80F0A2C0, 0x80F0A4C0] + field/bg/rom_toudai_kage1_tex: + addrs: [0x80F0A4C0, 0x80F0A540] + field/bg/rom_toudai_mekaC_tex: + addrs: [0x80F0A540, 0x80F0A740] + field/bg/rom_toudai_kage2_tex: + addrs: [0x80F0A740, 0x80F0A7C0] + field/bg/rom_toudai_v: + addrs: [0x80F0A7C0, 0x80F0AE30] + type: vtx + submenu/map/kan_tizu_c1_TA_tex_txt: + addrs: [0x80F0B020, 0x80F0B220] + submenu/map/kan_tizu_c1r1_TA_tex_txt: + addrs: [0x80F0B220, 0x80F0B420] + submenu/map/kan_tizu_c1s_TA_tex_txt: + addrs: [0x80F0B420, 0x80F0B620] + submenu/map/kan_tizu_c2_TA_tex_txt: + addrs: [0x80F0B620, 0x80F0B820] + submenu/map/kan_tizu_c2r1_TA_tex_txt: + addrs: [0x80F0B820, 0x80F0BA20] + submenu/map/kan_tizu_c3r1_TA_tex_txt: + addrs: [0x80F0BA20, 0x80F0BC20] + submenu/map/kan_tizu_c4r1_TA_tex_txt: + addrs: [0x80F0BC20, 0x80F0BE20] + submenu/map/kan_tizu_c5r1_TA_tex_txt: + addrs: [0x80F0BE20, 0x80F0C020] + submenu/map/kan_tizu_c6_TA_tex_txt: + addrs: [0x80F0C020, 0x80F0C220] + submenu/map/kan_tizu_c6r1_TA_tex_txt: + addrs: [0x80F0C220, 0x80F0C420] + submenu/map/kan_tizu_c6s_TA_tex_txt: + addrs: [0x80F0C420, 0x80F0C620] + submenu/map/kan_tizu_c7_TA_tex_txt: + addrs: [0x80F0C620, 0x80F0C820] + submenu/map/kan_tizu_c7r1_TA_tex_txt: + addrs: [0x80F0C820, 0x80F0CA20] + submenu/map/kan_tizu_f_TA_tex_txt: + addrs: [0x80F0CA20, 0x80F0CC20] + submenu/map/kan_tizu_r1_TA_tex_txt: + addrs: [0x80F0CC20, 0x80F0CE20] + submenu/map/kan_tizu_r1b_TA_tex_txt: + addrs: [0x80F0CE20, 0x80F0D020] + submenu/map/kan_tizu_r2_TA_tex_txt: + addrs: [0x80F0D020, 0x80F0D220] + submenu/map/kan_tizu_r4_TA_tex_txt: + addrs: [0x80F0D220, 0x80F0D420] + submenu/map/kan_tizu_r5_TA_tex_txt: + addrs: [0x80F0D420, 0x80F0D620] + submenu/map/kan_tizu_r6_TA_tex_txt: + addrs: [0x80F0D620, 0x80F0D820] + submenu/map/kan_tizu_r7_TA_tex_txt: + addrs: [0x80F0D820, 0x80F0DA20] + submenu/map/kan_tizu_c4_TA_tex_txt: + addrs: [0x80F0DA20, 0x80F0DC20] + submenu/map/kan_tizu_c5_TA_tex_txt: + addrs: [0x80F0DC20, 0x80F0DE20] + submenu/map/kan_tizu_c3_TA_tex_txt: + addrs: [0x80F0DE20, 0x80F0E020] + submenu/map/kan_tizu_r7b_TA_tex_txt: + addrs: [0x80F0E020, 0x80F0E220] + submenu/map/kan_tizu_c1r2_TA_tex_txt: + addrs: [0x80F0E220, 0x80F0E420] + submenu/map/kan_tizu_c2r2_TA_tex_txt: + addrs: [0x80F0E420, 0x80F0E620] + submenu/map/kan_tizu_c3r2_TA_tex_txt: + addrs: [0x80F0E620, 0x80F0E820] + submenu/map/kan_tizu_c4r2_TA_tex_txt: + addrs: [0x80F0E820, 0x80F0EA20] + submenu/map/kan_tizu_c5r2_TA_tex_txt: + addrs: [0x80F0EA20, 0x80F0EC20] + submenu/map/kan_tizu_c6r3_TA_tex_txt: + addrs: [0x80F0EC20, 0x80F0EE20] + submenu/map/kan_tizu_c7r3_TA_tex_txt: + addrs: [0x80F0EE20, 0x80F0F020] + submenu/map/kan_tizu_c2s_TA_tex_txt: + addrs: [0x80F0F020, 0x80F0F220] + submenu/map/kan_tizu_c3s_TA_tex_txt: + addrs: [0x80F0F220, 0x80F0F420] + submenu/map/kan_tizu_c4s_TA_tex_txt: + addrs: [0x80F0F420, 0x80F0F620] + submenu/map/kan_tizu_c5s_TA_tex_txt: + addrs: [0x80F0F620, 0x80F0F820] + submenu/map/kan_tizu_c7s_TA_tex_txt: + addrs: [0x80F0F820, 0x80F0FA20] + submenu/map/kan_tizu_r2b_TA_tex_txt: + addrs: [0x80F0FA20, 0x80F0FC20] + submenu/map/kan_tizu_r4b_TA_tex_txt: + addrs: [0x80F0FC20, 0x80F0FE20] + submenu/map/kan_tizu_r5b_TA_tex_txt: + addrs: [0x80F0FE20, 0x80F10020] + submenu/map/kan_tizu_r6b_TA_tex_txt: + addrs: [0x80F10020, 0x80F10220] + submenu/map/kan_tizu_pr1_TA_tex_txt: + addrs: [0x80F10220, 0x80F10420] + submenu/map/kan_tizu_pr2_TA_tex_txt: + addrs: [0x80F10420, 0x80F10620] + submenu/map/kan_tizu_pr4_TA_tex_txt: + addrs: [0x80F10620, 0x80F10820] + submenu/map/kan_tizu_pr5_TA_tex_txt: + addrs: [0x80F10820, 0x80F10A20] + submenu/map/kan_tizu_pr6_TA_tex_txt: + addrs: [0x80F10A20, 0x80F10C20] + submenu/map/kan_tizu_pr7_TA_tex_txt: + addrs: [0x80F10C20, 0x80F10E20] + submenu/map/kan_tizu_c3r1b_TA_tex_txt: + addrs: [0x80F10E20, 0x80F11020] + submenu/map/kan_tizu_c4r1b_TA_tex_txt: + addrs: [0x80F11020, 0x80F11220] + submenu/map/kan_tizu_c1r2b_TA_tex_txt: + addrs: [0x80F11220, 0x80F11420] + submenu/map/kan_tizu_c4r2b_TA_tex_txt: + addrs: [0x80F11420, 0x80F11620] + submenu/map/kan_tizu_c5r2b_TA_tex_txt: + addrs: [0x80F11620, 0x80F11820] + submenu/map/kan_tizu_c6r1b_TA_tex_txt: + addrs: [0x80F11820, 0x80F11A20] + submenu/map/kan_tizu_c7r1b_TA_tex_txt: + addrs: [0x80F11A20, 0x80F11C20] + submenu/map/kan_tizu_tst1_TA_tex_txt: + addrs: [0x80F11C20, 0x80F11E20] + submenu/map/kan_tizu_tr1_TA_tex_txt: + addrs: [0x80F11E20, 0x80F12020] + submenu/map/kan_tizu_t_TA_tex_txt: + addrs: [0x80F12020, 0x80F12220] + submenu/map/kan_tizu_fsh_TA_tex_txt: + addrs: [0x80F12220, 0x80F12420] + submenu/map/kan_tizu_fpo_TA_tex_txt: + addrs: [0x80F12420, 0x80F12620] + submenu/map/kan_tizu_fpk_TA_tex_txt: + addrs: [0x80F12620, 0x80F12820] + submenu/map/kan_tizu_fmh_TA_tex_txt: + addrs: [0x80F12820, 0x80F12A20] + submenu/map/kan_tizu_fko_TA_tex_txt: + addrs: [0x80F12A20, 0x80F12C20] + submenu/map/kan_tizu_mr1_TA_tex_txt: + addrs: [0x80F12C20, 0x80F12E20] + submenu/map/kan_tizu_m_TA_tex_txt: + addrs: [0x80F12E20, 0x80F13020] + submenu/map/kan_tizu_mr1b_TA_tex_txt: + addrs: [0x80F13020, 0x80F13220] + submenu/map/kan_tizu_tr1b_TA_tex_txt: + addrs: [0x80F13220, 0x80F13420] + submenu/map/kan_tizu_fta_TA_tex_txt: + addrs: [0x80F13420, 0x80F13620] + submenu/map/kan_tizu_mwf_TA_tex_txt: + addrs: [0x80F13620, 0x80F13820] + submenu/map/kan_tizu_fmu_TA_tex_txt: + addrs: [0x80F13820, 0x80F13A20] + # rom_museum1.c + field/bg/rom_museum1_mado_pal: + addrs: [0x80F13AA0, 0x80F13AC0] + type: pal16 + field/bg/rom_museum1_step_pal: + addrs: [0x80F13AC0, 0x80F13AE0] + type: pal16 + field/bg/rom_museum1_floor_pal: + addrs: [0x80F13AE0, 0x80F13B00] + type: pal16 + field/bg/rom_museum1_wall_pal: + addrs: [0x80F13B00, 0x80F13B20] + type: pal16 + field/bg/rom_museum1_mado1_tex: + addrs: [0x80F13B20, 0x80F14320] + field/bg/rom_museum1_step1_tex: + addrs: [0x80F14320, 0x80F14B20] + field/bg/rom_museum1_step2_tex: + addrs: [0x80F14B20, 0x80F14F20] + field/bg/rom_museum1_floorA_tex: + addrs: [0x80F14F20, 0x80F15720] + field/bg/rom_museum1_floorB_tex: + addrs: [0x80F15720, 0x80F15F20] + field/bg/rom_museum1_mado2_tex: + addrs: [0x80F15F20, 0x80F16720] + field/bg/rom_museum1_sign1_tex: + addrs: [0x80F16720, 0x80F16B20] + field/bg/rom_museum1_wallA_tex: + addrs: [0x80F16B20, 0x80F17320] + field/bg/rom_museum1_wallB_tex: + addrs: [0x80F17320, 0x80F17B20] + field/bg/rom_museum1_sign2_tex: + addrs: [0x80F17B20, 0x80F17F20] + field/bg/rom_museum1_sign3_tex: + addrs: [0x80F17F20, 0x80F18320] + field/bg/rom_museum1_sign4_tex: + addrs: [0x80F18320, 0x80F18720] + field/bg/rom_museum1_v: + addrs: [0x80F18720, 0x80F199E0] + type: vtx + # rom_museum5.c + field/bg/rom_museum5_on_pal: + addrs: [0x80F19DC0, 0x80F19DE0] + type: pal16 + field/bg/rom_museum5_wall_pal: + addrs: [0x80F19DE0, 0x80F19E00] + type: pal16 + field/bg/rom_museum5_floor_pal: + addrs: [0x80F19E00, 0x80F19E20] + type: pal16 + field/bg/rom_museum5_step_pal: + addrs: [0x80F19E20, 0x80F19E40] + type: pal16 + field/bg/rom_museum5_ki_tex: + addrs: [0x80F19E40, 0x80F1A040] + field/bg/rom_museum5_wallA_tex: + addrs: [0x80F1A040, 0x80F1A840] + field/bg/rom_museum5_floor_tex: + addrs: [0x80F1A840, 0x80F1B040] + field/bg/rom_museum5_step_tex: + addrs: [0x80F1B040, 0x80F1B840] + field/bg/rom_museum5_isi_tex: + addrs: [0x80F1B840, 0x80F1BA40] + field/bg/rom_museum5_plate_tex: + addrs: [0x80F1BA40, 0x80F1BC40] + field/bg/rom_museum5_v: + addrs: [0x80F1BC40, 0x80F1C9C0] + type: vtx + # rom_museum2.c + field/bg/rom_museum2_wall_pal: + addrs: [0x80F1D5C0, 0x80F1D5E0] + type: pal16 + field/bg/rom_museum2_floor_pal: + addrs: [0x80F1D5E0, 0x80F1D600] + type: pal16 + field/bg/rom_museum2_step1_pal: + addrs: [0x80F1D600, 0x80F1D620] + type: pal16 + field/bg/rom_museum2_wallA_tex: + addrs: [0x80F1D620, 0x80F1DE20] + field/bg/rom_museum2_wallB_tex: + addrs: [0x80F1DE20, 0x80F1E620] + field/bg/rom_museum2_floorA_tex: + addrs: [0x80F1E620, 0x80F1EE20] + field/bg/rom_museum2_step1_tex: + addrs: [0x80F1EE20, 0x80F1F620] + field/bg/rom_museum2_plate_tex: + addrs: [0x80F1F620, 0x80F1F720] + field/bg/rom_museum2_v: + addrs: [0x80F1F720, 0x80F20820] + type: vtx + # rom_museum3.c + field/bg/rom_museum3_wall_pal: + addrs: [0x80F23E40, 0x80F23E60] + type: pal16 + field/bg/rom_museum3_back_pal: + addrs: [0x80F23E60, 0x80F23E80] + type: pal16 + field/bg/rom_museum3_floor_pal: + addrs: [0x80F23E80, 0x80F23EA0] + type: pal16 + field/bg/rom_museum3_wallA_tex: + addrs: [0x80F23EA0, 0x80F246A0] + field/bg/rom_museum3_wallB_tex: + addrs: [0x80F246A0, 0x80F24EA0] + field/bg/rom_museum3_back_tex: + addrs: [0x80F24EA0, 0x80F256A0] + field/bg/rom_museum3_floorA_tex: + addrs: [0x80F256A0, 0x80F25EA0] + field/bg/rom_museum3_step_tex: + addrs: [0x80F25EA0, 0x80F266A0] + field/bg/rom_museum3_hasira_tex: + addrs: [0x80F266A0, 0x80F267A0] + field/bg/rom_museum3_backside_tex: + addrs: [0x80F267A0, 0x80F26920] + field/bg/rom_museum3_v: + addrs: [0x80F26920, 0x80F27AD0] + type: vtx + # rom_tailor.c + field/bg/rom_tailor_wall_pal: + addrs: [0x80F29260, 0x80F29280] + type: pal16 + field/bg/rom_tailor_floor_pal: + addrs: [0x80F29280, 0x80F292A0] + type: pal16 + field/bg/rom_tailor_mado_pal: + addrs: [0x80F292A0, 0x80F292C0] + type: pal16 + field/bg/rom_tailor_reji_pal: + addrs: [0x80F292C0, 0x80F292E0] + type: pal16 + field/bg/rom_tailor_dogu_pal: + addrs: [0x80F292E0, 0x80F29300] + type: pal16 + field/bg/rom_tailor_misin_pal: + addrs: [0x80F29300, 0x80F29320] + type: pal16 + field/bg/rom_tailor_table_pal: + addrs: [0x80F29320, 0x80F29340] + type: pal16 + field/bg/rom_tailor_box_pal: + addrs: [0x80F29340, 0x80F29360] + type: pal16 + field/bg/rom_tailor_quilt_pal: + addrs: [0x80F29360, 0x80F29380] + type: pal16 + field/bg/rom_tailor_ent_pal: + addrs: [0x80F29380, 0x80F293A0] + type: pal16 + field/bg/rom_tailor_wallA_tex: + addrs: [0x80F293A0, 0x80F29BA0] + field/bg/rom_tailor_wallB_tex: + addrs: [0x80F29BA0, 0x80F2A3A0] + field/bg/rom_tailor_floorA_tex: + addrs: [0x80F2A3A0, 0x80F2ABA0] + field/bg/rom_tailor_floorB_tex: + addrs: [0x80F2ABA0, 0x80F2B3A0] + field/bg/rom_tailor_floorC_tex: + addrs: [0x80F2B3A0, 0x80F2BBA0] + field/bg/rom_tailor_floorD_tex: + addrs: [0x80F2BBA0, 0x80F2C3A0] + field/bg/rom_tailor_kage1_tex: + addrs: [0x80F2C3A0, 0x80F2C4A0] + field/bg/rom_tailor_mado_tex: + addrs: [0x80F2C4A0, 0x80F2C6A0] + field/bg/rom_tailor_pic1_tex: + addrs: [0x80F2C6A0, 0x80F2C8A0] + field/bg/rom_tailor_pic2_tex: + addrs: [0x80F2C8A0, 0x80F2CAA0] + field/bg/rom_tailor_pic3_tex: + addrs: [0x80F2CAA0, 0x80F2CCA0] + field/bg/rom_tailor_pic4_tex: + addrs: [0x80F2CCA0, 0x80F2CEA0] + field/bg/rom_tailor_pic5_tex: + addrs: [0x80F2CEA0, 0x80F2D0A0] + field/bg/rom_tailor_pic6_tex: + addrs: [0x80F2D0A0, 0x80F2D2A0] + field/bg/rom_tailor_pic7_tex: + addrs: [0x80F2D2A0, 0x80F2D4A0] + field/bg/rom_tailor_pic8_tex: + addrs: [0x80F2D4A0, 0x80F2D6A0] + field/bg/rom_tailor_tyoki_tex: + addrs: [0x80F2D6A0, 0x80F2D7A0] + field/bg/rom_tailor_cloth1_tex: + addrs: [0x80F2D7A0, 0x80F2D820] + field/bg/rom_tailor_misin2_tex: + addrs: [0x80F2D820, 0x80F2DA20] + field/bg/rom_tailor_table_mae_tex: + addrs: [0x80F2DA20, 0x80F2DB20] + field/bg/rom_tailor_table_yoko_tex: + addrs: [0x80F2DB20, 0x80F2DBA0] + field/bg/rom_tailor_table_ue_tex: + addrs: [0x80F2DBA0, 0x80F2DCA0] + field/bg/rom_tailor_ito_tex: + addrs: [0x80F2DCA0, 0x80F2DEA0] + field/bg/rom_tailor_table_reji_tex: + addrs: [0x80F2DEA0, 0x80F2DF20] + field/bg/rom_tailor_misin1_tex: + addrs: [0x80F2DF20, 0x80F2E120] + field/bg/rom_tailor_misindai_tex: + addrs: [0x80F2E120, 0x80F2E320] + field/bg/rom_tailor_table_misin1_tex: + addrs: [0x80F2E320, 0x80F2E420] + field/bg/rom_tailor_reji_tex: + addrs: [0x80F2E420, 0x80F2E620] + field/bg/rom_tailor_table_misin2_tex: + addrs: [0x80F2E620, 0x80F2E6A0] + field/bg/rom_tailor_box_tex: + addrs: [0x80F2E6A0, 0x80F2E7A0] + field/bg/rom_tailor_box1_tex: + addrs: [0x80F2E7A0, 0x80F2E820] + field/bg/rom_tailor_box2_tex: + addrs: [0x80F2E820, 0x80F2E8A0] + field/bg/rom_tailor_box3_tex: + addrs: [0x80F2E8A0, 0x80F2E920] + field/bg/rom_tailor_box4_tex: + addrs: [0x80F2E920, 0x80F2E9A0] + field/bg/rom_tailor_box5_tex: + addrs: [0x80F2E9A0, 0x80F2EA20] + field/bg/rom_tailor_box6_tex: + addrs: [0x80F2EA20, 0x80F2EAA0] + field/bg/rom_tailor_box7_tex: + addrs: [0x80F2EAA0, 0x80F2EB20] + field/bg/rom_tailor_box8_tex: + addrs: [0x80F2EB20, 0x80F2EBA0] + field/bg/rom_tailor_kage2_tex: + addrs: [0x80F2EBA0, 0x80F2EC20] + field/bg/rom_tailor_quilt_tex: + addrs: [0x80F2EC20, 0x80F2F420] + field/bg/rom_tailor_ent_tex: + addrs: [0x80F2F420, 0x80F2F520] + field/bg/rom_tailor_misinbari1_tex: + addrs: [0x80F2F520, 0x80F2F5A0] + field/bg/rom_tailor_misinbari2_tex: + addrs: [0x80F2F5A0, 0x80F2F620] + field/bg/rom_tailor_tape_tex: + addrs: [0x80F2F620, 0x80F2F820] + field/bg/rom_tailor_dogu1_tex: + addrs: [0x80F2F820, 0x80F2F8A0] + field/bg/rom_tailor_dogu2_tex: + addrs: [0x80F2F8A0, 0x80F2F920] + field/bg/rom_tailor_v: + addrs: [0x80F2F920, 0x80F31700] + type: vtx + # myr_etc.c + field/bg/myr_kotei_pal: + addrs: [0x80F84780, 0x80F847A0] + type: pal16 + field/bg/myr_enter: + addrs: [0x80F847A0, 0x80F84BA0] + field/bg/myr_window: + addrs: [0x80F84BA0, 0x80F853A0] + field/bg/myr_kotei_v: + addrs: [0x80F853A0, 0x80F85500] + type: vtx + # grd_player_select.c + field/bg/rom_open_pal: + addrs: [0x80F85740, 0x80F85760] + type: pal16 + field/bg/rom_open_floor_tex: + addrs: [0x80F85760, 0x80F85F60] + field/bg/rom_open_shade_tex: + addrs: [0x80F85F60, 0x80F86360] + field/bg/rom_open_spot2_tex_rgb_i4: + addrs: [0x80F86360, 0x80F86560] + field/bg/rom_open_spot_tex: + addrs: [0x80F86560, 0x80F86D60] + field/bg/grd_player_select_v: + addrs: [0x80F86D60, 0x80F86EA0] + type: vtx + # police_indoor.c + field/bg/rom_koban_tel_pal: + addrs: [0x80F86FA0, 0x80F86FC0] + type: pal16 + field/bg/rom_koban_win_pal: + addrs: [0x80F86FC0, 0x80F86FE0] + type: pal16 + field/bg/rom_koban_us_pos_pal: + addrs: [0x80F86FE0, 0x80F87000] + type: pal16 + field/bg/rom_koban_jim_pal: + addrs: [0x80F87000, 0x80F87020] + type: pal16 + field/bg/rom_koban_kabe_pal: + addrs: [0x80F87020, 0x80F87040] + type: pal16 + field/bg/rom_koban_roc_pal: + addrs: [0x80F87040, 0x80F87060] + type: pal16 + field/bg/rom_koban_tel: + addrs: [0x80F87060, 0x80F87260] + field/bg/rom_koban_win: + addrs: [0x80F87260, 0x80F87460] + field/bg/rom_koban_desk_front: + addrs: [0x80F87460, 0x80F87560] + field/bg/rom_koban_desk_side: + addrs: [0x80F87560, 0x80F875E0] + field/bg/rom_koban_desk_top: + addrs: [0x80F875E0, 0x80F876E0] + field/bg/rom_koban_yuka: + addrs: [0x80F876E0, 0x80F87EE0] + field/bg/rom_koban_us_pos1: + addrs: [0x80F87EE0, 0x80F881E0] + field/bg/rom_koban_us_pos2: + addrs: [0x80F881E0, 0x80F884E0] + field/bg/rom_koban_kage1: + addrs: [0x80F884E0, 0x80F885E0] + field/bg/rom_koban_kage2: + addrs: [0x80F885E0, 0x80F88660] + field/bg/rom_koban_ent: + addrs: [0x80F88660, 0x80F88A60] + field/bg/rom_koban_jim_front: + addrs: [0x80F88A60, 0x80F88C60] + field/bg/rom_koban_jim_side: + addrs: [0x80F88C60, 0x80F88D60] + field/bg/rom_koban_jim_top: + addrs: [0x80F88D60, 0x80F88E60] + field/bg/rom_koban_kabe1: + addrs: [0x80F88E60, 0x80F89660] + field/bg/rom_koban_telcode: + addrs: [0x80F89660, 0x80F896E0] + field/bg/rom_koban_book: + addrs: [0x80F896E0, 0x80F89760] + field/bg/rom_koban_roc_s: + addrs: [0x80F89760, 0x80F89860] + field/bg/rom_koban_roc_t: + addrs: [0x80F89860, 0x80F898E0] + field/bg/rom_koban_kabe3: + addrs: [0x80F898E0, 0x80F89CE0] + field/bg/rom_koban_isu: + addrs: [0x80F89CE0, 0x80F89D60] + field/bg/rom_koban_roc_i: + addrs: [0x80F89D60, 0x80F89E60] + field/bg/rom_koban_roc_f3: + addrs: [0x80F89E60, 0x80F8A260] + field/bg/police_indoor_v: + addrs: [0x80F8A260, 0x80F8BCF0] + type: vtx + + # Rail palettes mFM_rail_pal_0: addrs: [0x80F8C2C8, 0x80F8C2E8] type: pal16 @@ -574,8 +10295,344 @@ config/rel.yml: mFM_rail_pal_11: addrs: [0x80F8C428, 0x80F8C448] type: pal16 - mFM_rail_pal_12: - addrs: [0x80F8C448, 0x80F8C468] - type: pal16 # ac_koinobori + # NPC draw data assets + field/bg/rom_shop_kouhaku_pal: + addrs: [0x80F9CDC0, 0x80F9CDE0] + type: pal16 + field/bg/rom_shop_kouhaku_tex: + addrs: [0x80F9D260, 0x80F9DA60] + # rom_shop4_1.c + field/bg/rom_shop4_1_floor_tex_pal: + addrs: [0x80F9FF80, 0x80F9FFA0] + type: pal16 + field/bg/rom_shop4_1_lamp_tex_pal: + addrs: [0x80F9FFA0, 0x80F9FFC0] + type: pal16 + field/bg/rom_shop4_1_base_tex_pal: + addrs: [0x80F9FFC0, 0x80F9FFE0] + type: pal16 + field/bg/rom_shop4_1_stair_tex_pal: + addrs: [0x80F9FFE0, 0x80FA0000] + type: pal16 + field/bg/rom_shop4_1_table_tex_pal: + addrs: [0x80FA0000, 0x80FA0020] + type: pal16 + field/bg/rom_shop4_1_wall_tex_pal: + addrs: [0x80FA0020, 0x80FA0040] + type: pal16 + field/bg/rom_shop4_1_sign01_tex_pal: + addrs: [0x80FA0040, 0x80FA0060] + type: pal16 + field/bg/rom_shop4_1_kaunta_tex_pal: + addrs: [0x80FA0060, 0x80FA0080] + type: pal16 + field/bg/rom_shop4_1_us_sign01_tex_pal: + addrs: [0x80FA0080, 0x80FA00A0] + type: pal16 + field/bg/rom_shop4_1_us_sign02_tex_pal: + addrs: [0x80FA00A0, 0x80FA00C0] + type: pal16 + field/bg/rom_shop4_1_us_sign03_tex_pal: + addrs: [0x80FA00C0, 0x80FA00E0] + type: pal16 + field/bg/rom_shop4_1_sign03_tex_pal: + addrs: [0x80FA00E0, 0x80FA0100] + type: pal16 + field/bg/rom_shop4_1_reji_tex_pal: + addrs: [0x80FA0100, 0x80FA0120] + type: pal16 + field/bg/rom_shop4_1_floor01_tex: + addrs: [0x80FA0120, 0x80FA0920] + field/bg/rom_shop4_1_lamp_tex: + addrs: [0x80FA0920, 0x80FA09A0] + field/bg/rom_shop4_1_base_tex: + addrs: [0x80FA09A0, 0x80FA0BA0] + field/bg/rom_shop4_1_stair01_tex: + addrs: [0x80FA0BA0, 0x80FA0CA0] + field/bg/rom_shop4_1_table01_tex: + addrs: [0x80FA0CA0, 0x80FA0DA0] + field/bg/rom_shop4_1_table02_tex: + addrs: [0x80FA0DA0, 0x80FA0EA0] + field/bg/rom_shop4_1_wall01_tex: + addrs: [0x80FA0EA0, 0x80FA16A0] + field/bg/rom_shop4_1_wall02_tex: + addrs: [0x80FA16A0, 0x80FA18A0] + field/bg/rom_shop4_1_sign05_tex: + addrs: [0x80FA18A0, 0x80FA1920] + field/bg/rom_shop4_1_kaunta01_tex: + addrs: [0x80FA1920, 0x80FA1B20] + field/bg/rom_shop4_1_kaunta02_tex: + addrs: [0x80FA1B20, 0x80FA1BA0] + field/bg/rom_shop4_1_us_sign01_tex: + addrs: [0x80FA1BA0, 0x80FA1FA0] + field/bg/rom_shop4_1_us_sign02_tex: + addrs: [0x80FA1FA0, 0x80FA20A0] + field/bg/rom_shop4_1_us_sign03_tex: + addrs: [0x80FA20A0, 0x80FA26A0] + field/bg/rom_shop4_1_sign04_tex: + addrs: [0x80FA26A0, 0x80FA27A0] + field/bg/rom_shop4_1_reji01_tex: + addrs: [0x80FA27A0, 0x80FA2AA0] + field/bg/rom_shop4_1_reji02_tex: + addrs: [0x80FA2AA0, 0x80FA2BA0] + field/bg/rom_shop4_1_reji03_tex: + addrs: [0x80FA2BA0, 0x80FA2CA0] + field/bg/rom_shop4_1_floor02_tex: + addrs: [0x80FA2CA0, 0x80FA34A0] + field/bg/rom_shop4_1_floor03_tex: + addrs: [0x80FA34A0, 0x80FA3CA0] + field/bg/rom_shop4_1_floor04_tex: + addrs: [0x80FA3CA0, 0x80FA44A0] + field/bg/rom_shop4_1_shadow01_tex: + addrs: [0x80FA44A0, 0x80FA45A0] + field/bg/rom_shop4_1_shadow02_tex: + addrs: [0x80FA45A0, 0x80FA46A0] + field/bg/rom_shop4_1_lamp02_tex: + addrs: [0x80FA46A0, 0x80FA4720] + field/bg/rom_shop4_1_shadow03_tex: + addrs: [0x80FA4720, 0x80FA4820] + field/bg/rom_shop4_1_v: + addrs: [0x80FA4820, 0x80FA5E40] + type: vtx + # rom_shop4_fuku.c + field/bg/rom_shop4_1_floor_tex_pal2: + addrs: [0x80FA6400, 0x80FA6420] + type: pal16 + field/bg/rom_shop4_1_base_tex_pal2: + addrs: [0x80FA6420, 0x80FA6440] + type: pal16 + field/bg/rom_shop4_1_stair_tex_pal2: + addrs: [0x80FA6440, 0x80FA6460] + type: pal16 + field/bg/rom_shop4_1_table_tex_pal2: + addrs: [0x80FA6460, 0x80FA6480] + type: pal16 + field/bg/rom_shop4_1_wall_tex_pal2: + addrs: [0x80FA6480, 0x80FA64A0] + type: pal16 + field/bg/rom_shop4_1_sign01_tex_pal2: + addrs: [0x80FA64A0, 0x80FA64C0] + type: pal16 + field/bg/rom_shop4_1_kaunta_tex_pal2: + addrs: [0x80FA64C0, 0x80FA64E0] + type: pal16 + field/bg/rom_shop4_2_sign01_us_tex_pal: + addrs: [0x80FA64E0, 0x80FA6500] + type: pal16 + field/bg/rom_shop4_1_us_sign02_tex_pal2: + addrs: [0x80FA6500, 0x80FA6520] + type: pal16 + field/bg/rom_shop4_1_us_sign0_tex_pal: + addrs: [0x80FA6520, 0x80FA6540] + type: pal16 + field/bg/rom_shop4_1_sign03_tex_pal2: + addrs: [0x80FA6540, 0x80FA6560] + type: pal16 + field/bg/rom_shop4_1_reji_tex_pal2: + addrs: [0x80FA6560, 0x80FA6580] + type: pal16 + field/bg/rom_shop_kouhaku_pal2: + addrs: [0x80FA6580, 0x80FA65A0] + type: pal16 + field/bg/rom_shop4_1_floor01_tex2: + addrs: [0x80FA65A0, 0x80FA6DA0] + field/bg/rom_shop4_1_base_tex2: + addrs: [0x80FA6DA0, 0x80FA6FA0] + field/bg/rom_shop4_1_stair01_tex2: + addrs: [0x80FA6FA0, 0x80FA70A0] + field/bg/rom_shop4_1_table01_tex2: + addrs: [0x80FA70A0, 0x80FA71A0] + field/bg/rom_shop4_1_table02_tex2: + addrs: [0x80FA71A0, 0x80FA72A0] + field/bg/rom_shop4_1_wall01_tex2: + addrs: [0x80FA72A0, 0x80FA7AA0] + field/bg/rom_shop4_1_wall02_tex2: + addrs: [0x80FA7AA0, 0x80FA7CA0] + field/bg/rom_shop4_1_sign05_tex2: + addrs: [0x80FA7CA0, 0x80FA7D20] + field/bg/rom_shop4_1_kaunta01_tex2: + addrs: [0x80FA7D20, 0x80FA7F20] + field/bg/rom_shop4_1_kaunta02_tex2: + addrs: [0x80FA7F20, 0x80FA7FA0] + field/bg/rom_shop4_2_us_sign01_tex: + addrs: [0x80FA7FA0, 0x80FA83A0] + field/bg/rom_shop4_1_us_sign02_tex2: + addrs: [0x80FA83A0, 0x80FA84A0] + field/bg/rom_shop4_1_us_sign0_tex: + addrs: [0x80FA84A0, 0x80FA8AA0] + field/bg/rom_shop4_1_sign04_tex2: + addrs: [0x80FA8AA0, 0x80FA8BA0] + field/bg/rom_shop4_1_reji01_tex2: + addrs: [0x80FA8BA0, 0x80FA8EA0] + field/bg/rom_shop4_1_reji02_tex2: + addrs: [0x80FA8EA0, 0x80FA8FA0] + field/bg/rom_shop4_1_reji03_tex2: + addrs: [0x80FA8FA0, 0x80FA90A0] + field/bg/rom_shop4_1_floor02_tex2: + addrs: [0x80FA90A0, 0x80FA98A0] + field/bg/rom_shop4_1_floor03_tex2: + addrs: [0x80FA98A0, 0x80FAA0A0] + field/bg/rom_shop4_1_floor04_tex2: + addrs: [0x80FAA0A0, 0x80FAA8A0] + field/bg/rom_shop4_1_shadow02_tex2: + addrs: [0x80FAA8A0, 0x80FAA9A0] + field/bg/rom_shop_kouhaku_tex2: + addrs: [0x80FAA9A0, 0x80FAB1A0] + field/bg/rom_shop4_fuku_v: + addrs: [0x80FAB1A0, 0x80FAC8C0] + type: vtx + # rom_tent.c + field/bg/rom_tent_box_pal: + addrs: [0x811007A0, 0x811007C0] + type: pal16 + field/bg/rom_tent_can_pal: + addrs: [0x811007C0, 0x811007E0] + type: pal16 + field/bg/rom_tent_mono1_pal: + addrs: [0x811007E0, 0x81100800] + type: pal16 + field/bg/rom_tent_gas_pal: + addrs: [0x81100800, 0x81100820] + type: pal16 + field/bg/rom_tent_enter: + addrs: [0x81100820, 0x81100C20] + field/bg/rom_tent_floor: + addrs: [0x81100C20, 0x81101420] + field/bg/rom_tent_wall1: + addrs: [0x81101420, 0x81101C20] + field/bg/rom_tent_wall2: + addrs: [0x81101C20, 0x81102420] + field/bg/rom_tent_bou: + addrs: [0x81102420, 0x81102440] + field/bg/rom_tent_mono1: + addrs: [0x81102440, 0x81102C40] + field/bg/rom_tent_can: + addrs: [0x81102C40, 0x81102D40] + field/bg/rom_tent_conpas: + addrs: [0x81102D40, 0x81102DC0] + field/bg/rom_tent_box: + addrs: [0x81102DC0, 0x811031C0] + field/bg/rom_tent_kage_m: + addrs: [0x811031C0, 0x81103240] + field/bg/rom_tent_gas: + addrs: [0x81103240, 0x81103440] + field/bg/rom_tent_kage_s: + addrs: [0x81103440, 0x811034C0] + field/bg/rom_tent_kage_b: + addrs: [0x811034C0, 0x811035C0] + field/bg/rom_tent_v: + addrs: [0x811035C0, 0x81104B90] + type: vtx + # room01.c + field/bg/room: + addrs: [0x81104FE0, 0x81105000] + type: pal16 + field/bg/room_floor: + addrs: [0x81105000, 0x81105400] + field/bg/room_wall: + addrs: [0x81105400, 0x81105C00] + field/bg/room_window: + addrs: [0x81105C00, 0x81106400] + field/bg/room01_v: + addrs: [0x81106400, 0x81106980] + type: vtx + # rom_train_in.c + field/bg/rom_train_1_pal: + addrs: [0x81106D40, 0x81106D60] + type: pal16 + field/bg/rom_train_2_pal: + addrs: [0x81106D60, 0x81106D80] + type: pal16 + field/bg/rom_train_seat1_tex: + addrs: [0x81106DA0, 0x811075A0] + field/bg/rom_train_seat2_tex: + addrs: [0x811075A0, 0x81107DA0] + field/bg/rom_train_floor_tex: + addrs: [0x81107DA0, 0x811085A0] + field/bg/rom_train_wall1_tex: + addrs: [0x811085A0, 0x81108DA0] + field/bg/rom_train_roof_tex: + addrs: [0x81108DA0, 0x811095A0] + field/bg/rom_train_wall2_tex: + addrs: [0x811095A0, 0x81109DA0] + field/bg/rom_train_net_tex: + addrs: [0x81109DA0, 0x8110A5A0] + field/bg/rom_train_glass_tex: + addrs: [0x8110A5A0, 0x8110A620] + field/bg/rom_train_light_tex: + addrs: [0x8110A620, 0x8110A820] + field/bg/rom_train_in_v: + addrs: [0x8110A820, 0x8110C910] + type: vtx + # rom_uranai.c + field/bg/rom_uranai_floor_tex_pal: + addrs: [0x8110F620, 0x8110F640] + type: pal16 + field/bg/rom_uranai_wall_tex_pal: + addrs: [0x8110F640, 0x8110F660] + type: pal16 + field/bg/rom_uranai_table_tex_pal: + addrs: [0x8110F660, 0x8110F680] + type: pal16 + field/bg/rom_uranai_tubo_tex_pal: + addrs: [0x8110F680, 0x8110F6A0] + type: pal16 + field/bg/rom_uranai_stand_tex_pal: + addrs: [0x8110F6A0, 0x8110F6C0] + type: pal16 + field/bg/rom_uranai_tex_nuno_pal: + addrs: [0x8110F6C0, 0x8110F6E0] + type: pal16 + field/bg/rom_uranai_tex_bace_pal: + addrs: [0x8110F6E0, 0x8110F700] + type: pal16 + field/bg/rom_uranai_card_tex_pal: + addrs: [0x8110F700, 0x8110F720] + type: pal16 + field/bg/rom_uranai_floor_tex: + addrs: [0x8110F720, 0x8110FF20] + field/bg/rom_uranai_wall01_tex: + addrs: [0x8110FF20, 0x81110520] + field/bg/rom_uranai_wall02_tex: + addrs: [0x81110520, 0x81110920] + field/bg/rom_uranai_wall03_tex: + addrs: [0x81110920, 0x81110D20] + field/bg/rom_uranai_table01_tex: + addrs: [0x81110D20, 0x81110DA0] + field/bg/rom_uranai_table02_tex: + addrs: [0x81110DA0, 0x81110E20] + field/bg/rom_uranai_tubo_tex: + addrs: [0x81110E20, 0x81111020] + field/bg/rom_uranai_shadow01_tex: + addrs: [0x81111020, 0x81111120] + field/bg/rom_uranai_vell_tex: + addrs: [0x81111120, 0x81111520] + field/bg/rom_uranai_vell02_tex: + addrs: [0x81111520, 0x81111920] + field/bg/rom_uranai_stand01_tex: + addrs: [0x81111920, 0x81111B20] + field/bg/rom_uranai_nuno01_tex: + addrs: [0x81111B20, 0x81111BA0] + field/bg/rom_uranai_nuno02_tex: + addrs: [0x81111BA0, 0x81111C20] + field/bg/rom_uranai_bace_tex: + addrs: [0x81111C20, 0x81111E20] + field/bg/rom_uranai_card01_tex: + addrs: [0x81111E20, 0x81112020] + field/bg/rom_uranai_shadow02_tex: + addrs: [0x81112020, 0x81112120] + field/bg/rom_uranai_card02_tex: + addrs: [0x81112120, 0x811125A0] + field/bg/rom_uranai_cris02_tex: + addrs: [0x811125A0, 0x81112DA0] + field/bg/rom_uranai_cris01_tex_rgb_ia8: + addrs: [0x81112DA0, 0x811131A0] + field/bg/rom_uranai_hi02_tex_rgb_i4: + addrs: [0x811131A0, 0x811133A0] + field/bg/rom_uranai_hi03_tex_rgb_i4: + addrs: [0x811133A0, 0x811135A0] + field/bg/rom_uranai_v: + addrs: [0x811135A0, 0x81114A80] + type: vtx diff --git a/config/disasm_overrides.yml b/config/disasm_overrides.yml index 276e66e9..eef32643 100644 --- a/config/disasm_overrides.yml +++ b/config/disasm_overrides.yml @@ -1,9 +1,24 @@ trim_ctors: true symbol_aligns: + 0x80008480: 32 + 0x80016d20: 32 + 0x80018920: 32 + 0x800190e0: 32 + 0x80019380: 32 + 0x80019760: 32 + 0x8001a0c0: 32 + 0x80026400: 32 + 0x8002c920: 32 # __DSPCheckMXICBoot2__FP16STRUCT_DSP_TASK2 + 0x80031d80: 32 + 0x8001ada0: 32 + 0x8002cfe0: 32 + 0x8018f1a8: 8 0x80207458: 8 # align RunQueue to 0x001251d8 0x800b9140: 32 # align gam_win_moji1_tex to 32 bytes 0x801f71c0: 32 # align texture_buffer_data to 32 bytes 0x800daaa0: 32 # align texture_cache_data_func to 32 bytes 0x80206f30: 16 # malloc.c align 16 bytes 0x800ab260: 32 + 0x800d3b00: 32 # dspboot data section has alignment to 32 + 0x801864b0: 8 # dspbuf align 8 (not sure why this doesn't happen) \ No newline at end of file diff --git a/config/dol_slices.yml b/config/dol_slices.yml index a75de4a9..13d549b5 100644 --- a/config/dol_slices.yml +++ b/config/dol_slices.yml @@ -1,297 +1,396 @@ -ctors.s: - .ctors: [0x800a97b4, 0x800a97c0] # remove trailing 0s from ctor area -#dolphin/os/__start.c: -# .init: [0x80003100, 0x80003354] -dolphin/__ppc_eabi_init.cpp: - .init: [0x80003354, 0x800033a8] - .text: [0x8007fdfc, 0x8007fe90] -runtime/__mem.c: - .init: [0x800033a8, 0x800034e0] -TRK/init/mem_TRK.c: - .init: [0x800034e0, 0x80003534] -asm/__exception.s: - .init: [0x80003534, 0x80005468] -boot.c: - .text: [0x800056c0, 0x8000663c] - .rodata: [0x800a97e0, 0x800a97e8] - .data: [0x800af860, 0x800afe50] - .bss: [0x800e2280, 0x800e2318] -jsyswrap.cpp: - .text: [0x8000663c, 0x80007188] - .ctors: [0x800a9784, 0x800a9788] - .data: [0x800afe50, 0x800b05e8] - .bss: [0x800e2318, 0x800e2640] -version.c: - .data: [0x800b05e8, 0x800b0608] -initial_menu.c: - .text: [0x80007188, 0x80007e58] - .rodata: [0x800a97e8, 0x800a97f8] - .data: [0x800b0608, 0x800b0a60] - .bss: [0x800e2640, 0x800e2790] -dvderr.c: - .text: [0x80007e58, 0x800083f8] - .rodata: [0x800a97f8, 0x800a9838] - .data: [0x800b0a60, 0x800b9140] - .bss: [0x800e2790, 0x800e2b88] -bootdata/gam_win1.c: - .data: [0x800b9140, 0x800bb500] -bootdata/gam_win2.c: - .data: [0x800bb500, 0x800bd820] -bootdata/gam_win3.c: - .data: [0x800bd820, 0x800be460] -bootdata/logo_nin.c: - .data: [0x800be460, 0x800c3140] -nintendo_hi_0.c: - .data: [0x800c3140, 0x800cca40] -jaudio_NES/dummyprobe.c: - .text: [0x800083f8, 0x80008400] -# jaudio_NES/game64.c: # TODO: finish -# .rodata: [0x800a9938, 0x800a9b98] -#jaudio_NES/verysimple.c: -# .text: [0x80008400, 0x80008480] -# .sdata: [0x80217b80, 0x80217b88] -Famicom/famicom.cpp: - .text: [0x80041614, 0x80046888] # TODO: get ~J2DOrthoGraph's dtor in here somehow? 0x800468fc, also add in JUTGamePad::getPortStatus when JUTGamePad is linked? - .rodata: [0x800aa9a8, 0x800aaa30] - .data: [0x800d8778, 0x800d99a0] - .bss: [0x801ef540, 0x801f6bd8] -Famicom/famicom_nesinfo.cpp: - .text: [0x800468fc, 0x80047e40] - .rodata: [0x800aaa30, 0x800aab60] - .data: [0x800d99a0, 0x800da9c8] - .bss: [0x801f6bd8, 0x801f6c80] -GBA2/JoyBoot.c: - .text: [0x80049788, 0x8004ae00] - .data: [0x800daa08, 0x800daaa0] - .bss: [0x801f7180, 0x801f71c0] -libforest/osreport.c: - .text: [0x8005a654, 0x8005a92c] - .data: [0x800dc6d8, 0x800dc738] - .bss: [0x80206f08, 0x80206f20] - .sbss: [0x80218618, 0x80218628] -libforest/fault.c: - .text: [0x8005a92c, 0x8005adac] - .data: [0x800dc738, 0x800dc7c8] - .bss: [0x80206f20, 0x80206f30] - .sbss: [0x80218628, 0x80218630] -libforest/ReconfigBATs.c: - .text: [0x8005adac, 0x8005aed4] -libu64/debug.c: - .text: [0x8005aed4, 0x8005af30] - .data: [0x800dc7c8, 0x800dc7f0] -libu64/gfxprint.c: - .text: [0x8005af30, 0x8005b9a8] - .data: [0x800dc7f0, 0x800dc810] - .sbss: [0x80218630, 0x80218638] -libu64/gfxprint_data.c: - .data: [0x800dc810, 0x800dd090] -libu64/pad.c: - .text: [0x8005b9a8, 0x8005ba2c] -libc64/aprintf.c: - .text: [0x8005cbdc, 0x8005cc14] -libc64/math64.c: - .text: [0x8005cc14, 0x8005cccc] - .sdata2: [0x80219118, 0x80219130] -libc64/qrand.c: - .text: [0x8005cccc, 0x8005cd64] - .sdata: [0x80217de8, 0x80217df0] - .sbss: [0x80218640, 0x80218648] - .sdata2: [0x80219130, 0x80219138] -libc64/sprintf.c: - .text: [0x8005ce18, 0x8005cf08] -libc64/malloc.c: - .text: [0x8005cf08, 0x8005d01c] - .bss: [0x80206F30, 0x80206F60] -libultra/ultra.c: - .text: [0x8005d01c, 0x8005d15c] - .bss: [0x80206f60, 0x80206fa0] -#libultra/gu/scale.c: -# .text: [0x8005e7d4, 0x8005e860] -# .sdata2: [0x80219208, 0x80219210] -#libultra/gu/translate.c: -# .text: [0x8005e8ac, 0x8005e918] -libultra/gu/sins.c: - .text: [0x8005e860, 0x8005e8ac] - .data: [0x800dd360, 0x800ddb60] -#libultra/xldtob.c: -# .text: [0x8005e918, 0x8005f2a0] -# .rodata: [0x800ab110, 0x800ab158] -# .sdata: [0x80217df8, 0x80217e08] -# .sdata2: [0x80219210, 0x80219230] -#libultra/xlitob.c: -# .text: [0x8005f2a0, 0x8005f4cc] -# .data: [0x800ddb60, 0x800ddb88] -#libultra/xprintf.c: -# .text: [0x8005f4cc, 0x8005ff74] -# .rodata: [0x800ab158, 0x800ab170] -# .data: [0x800ddb88, 0x800ddd20] -# .sdata: [0x80217e08, 0x80217e10] -# .sdata2: [0x80219230, 0x80219238] -JSystem/JKernel/JKRHeap.cpp: - .text: [0x80063748, 0x80064028] - .data: [0x800ddf20, 0x800ddf98] - .sdata: [0x80217e58, 0x80217e80] - .sbss: [0x802186d8, 0x80218700] -JSystem/JKernel/JKRExpHeap.cpp: - .text: [0x80064028, 0x80065aa0] - .data: [0x800ddf98, 0x800de3a8] - .sdata: [0x80217e80, 0x80217ec0] - .sbss: [0x80218700, 0x80218720] - .sdata2: [0x80219278, 0x80219288] -JSystem/JKernel/JKRDisposer.cpp: - .text: [0x80065aa0, 0x80065b8c] - .data: [0x800de3a8, 0x800de3c0] - .sdata: [0x80217ec0, 0x80217ec8] -JSystem/JKernel/JKRThread.cpp: - .text: [0x80065b8c, 0x80065ef0] - .ctors: [0x800a978c, 0x800a9790] - .data: [0x800de3c0, 0x800de3f8] - .bss: [0x80207008, 0x80207020] - .sdata: [0x80217ec8, 0x80217ed8] -JSystem/JKernel/JKRAram.cpp: - .text: [0x80065ef8, 0x80066e84] - .ctors: [0x800a9790, 0x800a9794] - .data: [0x800de3f8, 0x800de4c0] - .bss: [0x80207020, 0x80207038] - .sdata: [0x80217ed8, 0x80217ef8] - .sbss: [0x80218720, 0x80218758] -JSystem/JKernel/JKRAramHeap.cpp: - .text: [0x80066e84, 0x80067258] - .ctors: [0x800a9794, 0x800a9798] - .data: [0x800de4c0, 0x800de4f0] - .bss: [0x80207038, 0x80207050] - .sdata: [0x80217ef8, 0x80217f08] -JSystem/JKernel/JKRAramBlock.cpp: - .text: [0x80067258, 0x800674c8] - .data: [0x800de4f0, 0x800de510] - .sdata: [0x80217f08, 0x80217f10] -JSystem/JKernel/JKRAramPiece.cpp: - .text: [0x800674c8, 0x80067a88] - .ctors: [0x800a9798, 0x800a979c] - .data: [0x800de510, 0x800de568] - .bss: [0x80207050, 0x80207080] - .sdata: [0x80217f10, 0x80217f18] -JSystem/JKernel/JKRAramStream.cpp: - .text: [0x80067a88, 0x80067ff4] - .data: [0x800de568, 0x800de608] - .sdata: [0x80217f18, 0x80217f38] - .sbss: [0x80218758, 0x80218768] -JSystem/JKernel/JKRFileLoader.cpp: - .text: [0x80067ff4, 0x800685b0] - .ctors: [0x800a979c, 0x800a97a0] - .data: [0x800de608, 0x800de670] - .bss: [0x80207080, 0x80207098] - .sdata: [0x80217f38, 0x80217f50] - .sbss: [0x80218768, 0x80218770] -JSystem/JKernel/JKRFileFinder.cpp: - .text: [0x800685b0, 0x80068744] - .data: [0x800de670, 0x800de6b0] - .sdata: [0x80217f50, 0x80217f60] -JSystem/JKernel/JKRArchivePub.cpp: - .text: [0x80068744, 0x80068ed0] - .data: [0x800de6b0, 0x800de740] - .sdata: [0x80217f60, 0x80217f78] -JSystem/JKernel/JKRArchivePri.cpp: - .text: [0x80068ed0, 0x80069530] - .sbss: [0x80218770, 0x80218778] -JSystem/JKernel/JKRMemArchive.cpp: - .text: [0x80069530, 0x80069a28] - .data: [0x800de740, 0x800de828] - .sdata: [0x80217f78, 0x80217f98] -JSystem/JKernel/JKRAramArchive.cpp: - .text: [0x80069a28, 0x8006a4fc] - .data: [0x800de828, 0x800de938] - .sdata: [0x80217f98, 0x80217fc8] -JSystem/JKernel/JKRDvdArchive.cpp: - .text: [0x8006a4fc, 0x8006add0] - .data: [0x800de938, 0x800dea70] - .sdata: [0x80217fc8, 0x80217fe8] -JSystem/JKernel/JKRCompArchive.cpp: - .text: [0x8006add0, 0x8006b8a4] - .data: [0x800dea70, 0x800deba8] - .sdata: [0x80217fe8, 0x80218008] -JSystem/JKernel/JKRDvdFile.cpp: - .text: [0x8006b8a4, 0x8006be0c] - .ctors: [0x800a97a0, 0x800a97a4] - .data: [0x800deba8, 0x800dec30] - .bss: [0x80207098, 0x802070b0] - .sdata: [0x80218008, 0x80218028] -JSystem/JKernel/JKRDvdRipper.cpp: - .text: [0x8006be0c, 0x8006c8fc] - .ctors: [0x800a97a4, 0x800a97a8] - .data: [0x800dec30, 0x800dec90] - .bss: [0x802070b0, 0x802070c8] - .sdata: [0x80218028, 0x80218030] - .sbss: [0x80218778, 0x802187a8] -JSystem/JKernel/JKRDvdAramRipper.cpp: - .text: [0x8006c8fc, 0x8006d608] - .ctors: [0x800a97a8, 0x800a97ac] - .bss: [0x802070c8, 0x802070e0] - .sdata: [0x80218030, 0x80218038] - .sbss: [0x802187a8, 0x802187e8] -JSystem/JKernel/JKRDecomp.cpp: - .text: [0x8006d608, 0x8006dd58] - .data: [0x800dec90, 0x800ded18] - .sdata: [0x80218038, 0x80218050] - .sbss: [0x802187e8, 0x802187f0] -JSystem/JSupport/JSUInputStream.cpp: - .text: [0x8006e168, 0x8006e3e4] - .data: [0x800ded18, 0x800dedb8] - .sdata: [0x80218050, 0x80218068] -#JSystem/JSupport/JSUFileStream.cpp: # JSUFileStream linkage disabled until we can resolve order of RTTI strings in .data -# .text: [0x8006e3e4, 0x8006e604] -# .data: [0x800dedb8, 0x800dee60] -# .sdata: [0x80218068, 0x80218088] -JSystem/JGadget/linklist.cpp: - .text: [0x8006e604, 0x8006e800] -JSystem/JUtility/JUTGamePad.cpp: - .text: [0x80070274, 0x800713b0] - .ctors: [0x800a97ac, 0x800a97b0] - .rodata: [0x800ab240, 0x800ab260] - .data: [0x800def60, 0x800defa0] - .bss: [0x802070e0, 0x80207268] - .sdata: [0x802180b8, 0x802180d0] - .sbss: [0x80218808, 0x80218838] - .sdata2: [0x802192c0, 0x80219300] -dolphin/BASE/ppcarch.c: - .text: [0x8007867c, 0x80078718] -dolphin/os/OSArena.c: - .text: [0x8007988c, 0x800798ac] - .sdata: [0x80218178, 0x80218180] - .sbss: [0x802188f8, 0x80218900] -#dolphin/os/OSCache.c: -# .text: [0x80079b40, 0x8007a01c] -# .data: [0x800dfa00, 0x800dfc30] -#dolphin/os/OSDisableInterrupts.c: - # .text: [0x8007ac24, 0x8007ac38] -dolphin/os/OSEnableInterrupts.c: - .text: [0x8007ac38, 0x8007ac4c] -dolphin/os/OSRestoreInterrupts.c: - .text: [0x8007ac4c, 0x8007ac70] -dolphin/os/OSRtc.c: - .text: [0x8007d050, 0x8007db20] - .bss: [0x80207400, 0x80207458] -MSL_C/rand.c: - .text: [0x8009f46c, 0x8009f494] - .sdata: [0x80218260, 0x80218268] -TRK/mainloop.c: - .text: [0x800A1FF4, 0x800A20EC] -TRK/nubevent.c: - .text: [0x800A20EC, 0x800A2314] - .bss: [0x802095C8, 0x802095F0] -#TRK/nubinit.c: #things break, fix later -# .text: [0x800A2314, 0x800A2494] -# .rodata: [0x800AF750, 0x800AF770] -# .bss: [0x802095F0, 0x802095F8] -#TRK/usr_put.c: -# .text: [0x800A3468, 0x800A34F4] -#TRK/dispatch.c: -# .text: [0x800A34F4, 0x800A3590] -# .data: [0x800E2128, 0x800E21B0] -# .bss: [0x8020AFC0, 0x8020AFC8] -dolphin/odenotstub/odenotstub.c: - .text: [0x800a9770, 0x800a9780] -dolphin/amcstubs/AmcExi2Stubs.c: - .text: [0x800a8cc0, 0x800a8cf0] -dolphin/gx/GXStubs.c: - .text: [0x800998d4, 0x800998d8] +ctors.s: + .ctors: [0x800a97b4, 0x800a97c0] # remove trailing 0s from ctor area +#dolphin/os/__start.c: +# .init: [0x80003100, 0x80003354] +runtime/__mem.c: + .init: [0x800033a8, 0x800034e0] +TRK/init/mem_TRK.c: + .init: [0x800034e0, 0x80003534] +asm/__exception.s: + .init: [0x80003534, 0x80005468] +boot.c: + .text: [0x800056c0, 0x8000663c] + .rodata: [0x800a97e0, 0x800a97e8] + .data: [0x800af860, 0x800afe50] + .bss: [0x800e2280, 0x800e2318] +jsyswrap.cpp: + .text: [0x8000663c, 0x80007188] + .ctors: [0x800a9784, 0x800a9788] + .data: [0x800afe50, 0x800b05e8] + .bss: [0x800e2318, 0x800e2640] +initial_menu.c: + .text: [0x80007188, 0x80007e58] + .rodata: [0x800a97e8, 0x800a97f8] + .data: [0x800b0608, 0x800b0a60] + .bss: [0x800e2640, 0x800e2790] +dvderr.c: + .text: [0x80007e58, 0x800083f8] + .rodata: [0x800a97f8, 0x800a9838] + .data: [0x800b0a60, 0x800b9140] + .bss: [0x800e2790, 0x800e2b88] +jaudio_NES/game/dummyprobe.c: + .text: [0x800083f8, 0x80008400] +jaudio_NES/game/audioheaders.c: + .data: [0x800cca40, 0x800ce880] +jaudio_NES/game/verysimple.c: + .text: [0x80008400, 0x80008480] + .sdata: [0x80217b80, 0x80217b88] +# jaudio_NES/game/game64.c: # TODO: finish +# .rodata: [0x800a9938, 0x800a9b98] +jaudio_NES/game/melody.c: + .text: [0x8001561c, 0x80015a4c] + .rodata: [0x800a9b98, 0x800aa500] + .sbss: [0x80218390, 0x802183a0] + .sdata2: [0x80218d58, 0x80218d60] +jaudio_NES/game/rhythm.c: + .text: [0x80015a4c, 0x800165ec] + .bss: [0x8017bdd8, 0x8017be80] + .sdata: [0x80217bd0, 0x80217bd8] + .sbss: [0x802183a0, 0x802183b0] + .sdata2: [0x80218d60, 0x80218d78] +jaudio_NES/game/radio.c: + .text: [0x800165ec, 0x8001676c] + .sdata2: [0x80218d78, 0x80218d88] +jaudio_NES/game/kappa.c: + .text: [0x8001676c,0x80016840] + .sbss: [0x802183b0, 0x802183b8] +jaudio_NES/game/staff.c: + .text: [0x80016840, 0x80016d20] + .data: [0x800cfe10, 0x800cff20] + .sbss: [0x802183b8, 0x802183c8] + .sdata2: [0x80218d98, 0x80218da0] +jaudio_NES/internal/aictrl.c: + .text: [0x80017e80, 0x80018640] + .rodata: [0x800aa500, 0x800aa518] + .bss: [0x8017cfa0, 0x8017cfc0] + .sbss: [0x802183f0, 0x80218420] + .sdata2: [0x80218da8, 0x80218db8] +jaudio_NES/internal/sample.c: + .text: [0x80018640, 0x80018920] +jaudio_NES/internal/dummyrom.c: + .text: [0x80018920, 0x80018bc0] + .rodata: [0x800aa518, 0x800aa528] +# .bss: [0x8020d78c, 0x8020d7a0] # placed in common bss + .sbss: [0x80218420, 0x80218440] +jaudio_NES/internal/audiothread.c: + .text: [0x80018bc0, 0x800190e0] + .rodata: [0x800aa528, 0x800aa538] + .bss: [0x8017cfc0, 0x80180020] + .sbss: [0x80218440, 0x80218460] + .sdata2: [0x80218db8, 0x80218dc0] +jaudio_NES/internal/neosthread.c: + .text: [0x800190e0, 0x80019380] + .rodata: [0x800aa538, 0x800aa558] + .bss: [0x80180020, 0x80186440] + .sdata: [0x80217be0, 0x80217be8] + .sbss: [0x80218460, 0x80218478] +jaudio_NES/internal/streamctrl.c: + .text: [0x80019380, 0x80019760] + .data: [0x800d01a8, 0x800d0278] + .bss: [0x80186440, 0x801864b0] + .sdata2: [0x80218dc0, 0x80218dd0] +jaudio_NES/internal/dspbuf.c: + .text: [0x80019760, 0x80019ae0] + .rodata: [0x800aa558, 0x800aa570] + .bss: [0x801864b0, 0x801864c0] + .sbss: [0x80218478, 0x80218488] +jaudio_NES/internal/cpubuf.c: + .text: [0x80019ae0, 0x80019dc0] + .bss: [0x801864c0, 0x801864d0] + .sbss: [0x80218488, 0x80218498] +jaudio_NES/internal/playercall.c: + .text: [0x80019dc0, 0x8001a0c0] + .bss: [0x801864d0,0x80186590] +jaudio_NES/internal/dvdthread.c: + .text: [0x8001a0c0, 0x8001ada0] + .data: [0x800d0278, 0x800d0298] + .bss: [0x80186590, 0x8018f1a8] + .sbss: [0x80218498, 0x802184e8] +jaudio_NES/internal/sub_sys.c: + .text: [0x80024ae0, 0x80026120] + .rodata: [0x800aa700, 0x800aa720] + .data: [0x800d0300, 0x800d0390] + .sbss: [0x80218510, 0x80218528] + .sdata2: [0x80218e48, 0x80218e60] +jaudio_NES/internal/os.c: + .text: [0x80026120, 0x80026300] +jaudio_NES/internal/astest.c: + .text: [0x80026300, 0x80026400] +jaudio_NES/internal/track.c: + .text: [0x80028e60, 0x8002c920] + .rodata: [0x800aa720, 0x800aa780] + .data: [0x800d36f0, 0x800d3b00] + .sbss: [0x80218540, 0x80218548] + .sdata2: [0x80218ec8, 0x80218f08] +jaudio_NES/internal/dspboot.c: + .text: [0x8002c920, 0x8002cd20] + .rodata: [0x800aa780, 0x800aa7a0] + .data: [0x800d3b00, 0x800d5500] + .sdata2: [0x80218f08, 0x80218f10] +jaudio_NES/internal/dspproc.c: + .text: [0x8002cd20, 0x8002cfe0] + .sdata: [0x80217c18, 0x80217c20] +jaudio_NES/internal/random.c: + .text: [0x80031ce0, 0x80031d80] + .sdata: [0x80217c38, 0x80217c40] + .sdata2: [0x80218f60, 0x80218f70] +Famicom/famicom.cpp: + .text: [0x80041614, 0x80046888] # TODO: get ~J2DOrthoGraph's dtor in here somehow? 0x800468fc, also add in JUTGamePad::getPortStatus when JUTGamePad is linked? + .rodata: [0x800aa9a8, 0x800aaa30] + .data: [0x800d8778, 0x800d99a0] + .bss: [0x801ef540, 0x801f6bd8] +Famicom/famicom_nesinfo.cpp: + .text: [0x800468fc, 0x80047e40] + .rodata: [0x800aaa30, 0x800aab60] + .data: [0x800d99a0, 0x800da9c8] + .bss: [0x801f6bd8, 0x801f6c80] +GBA2/JoyBoot.c: + .text: [0x80049788, 0x8004ae00] + .data: [0x800daa08, 0x800daaa0] + .bss: [0x801f7180, 0x801f71c0] +libforest/osreport.c: + .text: [0x8005a654, 0x8005a92c] + .data: [0x800dc6d8, 0x800dc738] + .bss: [0x80206f08, 0x80206f20] + .sbss: [0x80218618, 0x80218628] +libforest/fault.c: + .text: [0x8005a92c, 0x8005adac] + .data: [0x800dc738, 0x800dc7c8] + .bss: [0x80206f20, 0x80206f30] + .sbss: [0x80218628, 0x80218630] +libforest/ReconfigBATs.c: + .text: [0x8005adac, 0x8005aed4] +libu64/debug.c: + .text: [0x8005aed4, 0x8005af30] + .data: [0x800dc7c8, 0x800dc7f0] +libu64/gfxprint.c: + .text: [0x8005af30, 0x8005b9a8] + .data: [0x800dc7f0, 0x800dc810] + .sbss: [0x80218630, 0x80218638] +libu64/pad.c: + .text: [0x8005b9a8, 0x8005ba2c] +libc64/aprintf.c: + .text: [0x8005cbdc, 0x8005cc14] +libc64/math64.c: + .text: [0x8005cc14, 0x8005cccc] + .sdata2: [0x80219118, 0x80219130] +libc64/qrand.c: + .text: [0x8005cccc, 0x8005cd64] + .sdata: [0x80217de8, 0x80217df0] + .sbss: [0x80218640, 0x80218648] + .sdata2: [0x80219130, 0x80219138] +libc64/sprintf.c: + .text: [0x8005ce18, 0x8005cf08] +libc64/malloc.c: + .text: [0x8005cf08, 0x8005d01c] + .bss: [0x80206F30, 0x80206F60] +libultra/ultra.c: + .text: [0x8005d01c, 0x8005d15c] + .bss: [0x80206f60, 0x80206fa0] +#libultra/gu/scale.c: +# .text: [0x8005e7d4, 0x8005e860] +# .sdata2: [0x80219208, 0x80219210] +#libultra/gu/translate.c: +# .text: [0x8005e8ac, 0x8005e918] +libultra/gu/sins.c: + .text: [0x8005e860, 0x8005e8ac] + .data: [0x800dd360, 0x800ddb60] +#libultra/xldtob.c: +# .text: [0x8005e918, 0x8005f2a0] +# .rodata: [0x800ab110, 0x800ab158] +# .sdata: [0x80217df8, 0x80217e08] +# .sdata2: [0x80219210, 0x80219230] +#libultra/xlitob.c: +# .text: [0x8005f2a0, 0x8005f4cc] +# .data: [0x800ddb60, 0x800ddb88] +#libultra/xprintf.c: +# .text: [0x8005f4cc, 0x8005ff74] +# .rodata: [0x800ab158, 0x800ab170] +# .data: [0x800ddb88, 0x800ddd20] +# .sdata: [0x80217e08, 0x80217e10] +# .sdata2: [0x80219230, 0x80219238] +JSystem/JKernel/JKRHeap.cpp: + .text: [0x80063748, 0x80064028] + .data: [0x800ddf20, 0x800ddf98] + .sdata: [0x80217e58, 0x80217e80] + .sbss: [0x802186d8, 0x80218700] +JSystem/JKernel/JKRExpHeap.cpp: + .text: [0x80064028, 0x80065aa0] + .data: [0x800ddf98, 0x800de3a8] + .sdata: [0x80217e80, 0x80217ec0] + .sbss: [0x80218700, 0x80218720] + .sdata2: [0x80219278, 0x80219288] +JSystem/JKernel/JKRDisposer.cpp: + .text: [0x80065aa0, 0x80065b8c] + .data: [0x800de3a8, 0x800de3c0] + .sdata: [0x80217ec0, 0x80217ec8] +JSystem/JKernel/JKRThread.cpp: + .text: [0x80065b8c, 0x80065ef0] + .ctors: [0x800a978c, 0x800a9790] + .data: [0x800de3c0, 0x800de3f8] + .bss: [0x80207008, 0x80207020] + .sdata: [0x80217ec8, 0x80217ed8] +JSystem/JKernel/JKRAram.cpp: + .text: [0x80065ef8, 0x80066e84] + .ctors: [0x800a9790, 0x800a9794] + .data: [0x800de3f8, 0x800de4c0] + .bss: [0x80207020, 0x80207038] + .sdata: [0x80217ed8, 0x80217ef8] + .sbss: [0x80218720, 0x80218758] +JSystem/JKernel/JKRAramHeap.cpp: + .text: [0x80066e84, 0x80067258] + .ctors: [0x800a9794, 0x800a9798] + .data: [0x800de4c0, 0x800de4f0] + .bss: [0x80207038, 0x80207050] + .sdata: [0x80217ef8, 0x80217f08] +JSystem/JKernel/JKRAramBlock.cpp: + .text: [0x80067258, 0x800674c8] + .data: [0x800de4f0, 0x800de510] + .sdata: [0x80217f08, 0x80217f10] +JSystem/JKernel/JKRAramPiece.cpp: + .text: [0x800674c8, 0x80067a88] + .ctors: [0x800a9798, 0x800a979c] + .data: [0x800de510, 0x800de568] + .bss: [0x80207050, 0x80207080] + .sdata: [0x80217f10, 0x80217f18] +JSystem/JKernel/JKRAramStream.cpp: + .text: [0x80067a88, 0x80067ff4] + .data: [0x800de568, 0x800de608] + .sdata: [0x80217f18, 0x80217f38] + .sbss: [0x80218758, 0x80218768] +JSystem/JKernel/JKRFileLoader.cpp: + .text: [0x80067ff4, 0x800685b0] + .ctors: [0x800a979c, 0x800a97a0] + .data: [0x800de608, 0x800de670] + .bss: [0x80207080, 0x80207098] + .sdata: [0x80217f38, 0x80217f50] + .sbss: [0x80218768, 0x80218770] +JSystem/JKernel/JKRFileFinder.cpp: + .text: [0x800685b0, 0x80068744] + .data: [0x800de670, 0x800de6b0] + .sdata: [0x80217f50, 0x80217f60] +JSystem/JKernel/JKRArchivePub.cpp: + .text: [0x80068744, 0x80068ed0] + .data: [0x800de6b0, 0x800de740] + .sdata: [0x80217f60, 0x80217f78] +JSystem/JKernel/JKRArchivePri.cpp: + .text: [0x80068ed0, 0x80069530] + .sbss: [0x80218770, 0x80218778] +JSystem/JKernel/JKRMemArchive.cpp: + .text: [0x80069530, 0x80069a28] + .data: [0x800de740, 0x800de828] + .sdata: [0x80217f78, 0x80217f98] +JSystem/JKernel/JKRAramArchive.cpp: + .text: [0x80069a28, 0x8006a4fc] + .data: [0x800de828, 0x800de938] + .sdata: [0x80217f98, 0x80217fc8] +JSystem/JKernel/JKRDvdArchive.cpp: + .text: [0x8006a4fc, 0x8006add0] + .data: [0x800de938, 0x800dea70] + .sdata: [0x80217fc8, 0x80217fe8] +JSystem/JKernel/JKRCompArchive.cpp: + .text: [0x8006add0, 0x8006b8a4] + .data: [0x800dea70, 0x800deba8] + .sdata: [0x80217fe8, 0x80218008] +JSystem/JKernel/JKRDvdFile.cpp: + .text: [0x8006b8a4, 0x8006be0c] + .ctors: [0x800a97a0, 0x800a97a4] + .data: [0x800deba8, 0x800dec30] + .bss: [0x80207098, 0x802070b0] + .sdata: [0x80218008, 0x80218028] +JSystem/JKernel/JKRDvdRipper.cpp: + .text: [0x8006be0c, 0x8006c8fc] + .ctors: [0x800a97a4, 0x800a97a8] + .data: [0x800dec30, 0x800dec90] + .bss: [0x802070b0, 0x802070c8] + .sdata: [0x80218028, 0x80218030] + .sbss: [0x80218778, 0x802187a8] +JSystem/JKernel/JKRDvdAramRipper.cpp: + .text: [0x8006c8fc, 0x8006d608] + .ctors: [0x800a97a8, 0x800a97ac] + .bss: [0x802070c8, 0x802070e0] + .sdata: [0x80218030, 0x80218038] + .sbss: [0x802187a8, 0x802187e8] +JSystem/JKernel/JKRDecomp.cpp: + .text: [0x8006d608, 0x8006dd58] + .data: [0x800dec90, 0x800ded18] + .sdata: [0x80218038, 0x80218050] + .sbss: [0x802187e8, 0x802187f0] +JSystem/JSupport/JSUInputStream.cpp: + .text: [0x8006e168, 0x8006e3e4] + .data: [0x800ded18, 0x800dedb8] + .sdata: [0x80218050, 0x80218068] +#JSystem/JSupport/JSUFileStream.cpp: # JSUFileStream linkage disabled until we can resolve order of RTTI strings in .data +# .text: [0x8006e3e4, 0x8006e604] +# .data: [0x800dedb8, 0x800dee60] +# .sdata: [0x80218068, 0x80218088] +JSystem/JGadget/linklist.cpp: + .text: [0x8006e604, 0x8006e800] +JSystem/JUtility/JUTGamePad.cpp: + .text: [0x80070274, 0x800713b0] + .ctors: [0x800a97ac, 0x800a97b0] + .rodata: [0x800ab240, 0x800ab260] + .data: [0x800def60, 0x800defa0] + .bss: [0x802070e0, 0x80207268] + .sdata: [0x802180b8, 0x802180d0] + .sbss: [0x80218808, 0x80218838] + .sdata2: [0x802192c0, 0x80219300] +dolphin/BASE/ppcarch.c: + .text: [0x8007867c, 0x80078718] +dolphin/os/OSArena.c: + .text: [0x8007988c, 0x800798ac] + .sdata: [0x80218178, 0x80218180] + .sbss: [0x802188f8, 0x80218900] +#dolphin/os/OSCache.c: +# .text: [0x80079b40, 0x8007a01c] +# .data: [0x800dfa00, 0x800dfc30] +#dolphin/os/OSDisableInterrupts.c: + # .text: [0x8007ac24, 0x8007ac38] +dolphin/os/OSEnableInterrupts.c: + .text: [0x8007ac38, 0x8007ac4c] +dolphin/os/OSRestoreInterrupts.c: + .text: [0x8007ac4c, 0x8007ac70] +dolphin/os/OSRtc.c: + .text: [0x8007d050, 0x8007db20] + .bss: [0x80207400, 0x80207458] +dolphin/__ppc_eabi_init.cpp: + .init: [0x80003354, 0x800033a8] + .text: [0x8007fdfc, 0x8007fe90] +dolphin/gx/GXStubs.c: + .text: [0x800998d4, 0x800998d8] +MSL_C/rand.c: + .text: [0x8009f46c, 0x8009f494] + .sdata: [0x80218260, 0x80218268] +TRK/mainloop.c: + .text: [0x800A1FF4, 0x800A20EC] +TRK/nubevent.c: + .text: [0x800A20EC, 0x800A2314] + .bss: [0x802095C8, 0x802095F0] +dolphin/amcstubs/AmcExi2Stubs.c: + .text: [0x800a8cc0, 0x800a8cf0] +#TRK/nubinit.c: #things break, fix later +# .text: [0x800A2314, 0x800A2494] +# .rodata: [0x800AF750, 0x800AF770] +# .bss: [0x802095F0, 0x802095F8] +#TRK/usr_put.c: +# .text: [0x800A3468, 0x800A34F4] +#TRK/dispatch.c: +# .text: [0x800A34F4, 0x800A3590] +# .data: [0x800E2128, 0x800E21B0] +# .bss: [0x8020AFC0, 0x8020AFC8] +dolphin/odenotstub/odenotstub.c: + .text: [0x800a9770, 0x800a9780] +version.c: + .data: [0x800b05e8, 0x800b0608] +bootdata/gam_win1.c: + .data: [0x800b9140, 0x800bb500] +bootdata/gam_win2.c: + .data: [0x800bb500, 0x800bd820] +bootdata/gam_win3.c: + .data: [0x800bd820, 0x800be460] +bootdata/logo_nin.c: + .data: [0x800be460, 0x800c3140] +nintendo_hi_0.c: + .data: [0x800c3140, 0x800cca40] +libu64/gfxprint_data.c: + .data: [0x800dc810, 0x800dd090] diff --git a/config/rel_disasm_overrides.yml b/config/rel_disasm_overrides.yml index 089d6a8f..bd2bbc05 100644 --- a/config/rel_disasm_overrides.yml +++ b/config/rel_disasm_overrides.yml @@ -14,3 +14,11 @@ symbol_aligns: 0x81296140: 32 # .bss m_island.o 0x80904700: 32 # rom_myhome1_floor_v 0x80751140: 32 # dataobject.obj/.data/obj_zassou_tex + 0x80DD61A0: 32 # dataobject/obj/.data/cKF_ckcb_r_int_hnw001_tbl (TU is aligned to 32 because of 32-byte aligned entries) + 0x80F1CCA0: 32 # dataobject/obj/.data/rom_museum5_wall_pal + 0x80F85720: 32 # dataobject/obj/.data/grd_player_select_evw_anime_1 (TU is aligned to 32) + 0x80FACE20: 32 # dataobject/obj/.data/rom_shop4_1_floor_tex_pal + 0x8074B840: 32 # dataobject/obj/.data/mFM_obj_a_01_flower_pal + 0x808DF220: 32 # obj_otiba01_pal + 0x809C8FA0: 32 # ef_hanabira01_0 + 0x80C0CBA0: 32 # crw_anrium1_pal \ No newline at end of file diff --git a/config/rel_slices.yml b/config/rel_slices.yml index 1445f1fe..cd283201 100644 --- a/config/rel_slices.yml +++ b/config/rel_slices.yml @@ -92,6 +92,11 @@ m_demo.c: m_eappli.c: .text: [0x8039A5E0, 0x8039A960] .bss: [0x81295150, 0x81295550] +m_event.c: + .text: [0x8039A960, 0x8039F510] + .rodata: [0x80641F00, 0x80641F38] + .data: [0x80651918, 0x806522F8] + .bss: [0x81295550, 0x81295790] m_fbdemo.c: .text: [0x803A0350, 0x803A0ABC] .rodata: [0x80641F40, 0x80641F60] @@ -142,6 +147,11 @@ m_fuusen.c: .bss: [0x81295C70, 0x81295C80] m_huusui_room.c: .text: [0x803B1908, 0x803B1968] +m_handbill.c: + .text: [0x803B1968, 0x803B2E88] + .rodata: [0x80642288, 0x80642478] + .data: [0x806546B0, 0x806546C8] + .bss: [0x81295C80, 0x81296128] m_home.c: .text: [0x803B2E88, 0x803B3688] .data: [0x806546C8, 0x80655340] @@ -219,6 +229,11 @@ m_needlework.c: .text: [0x803C98EC, 0x803C9F7C] .data: [0x8065ABC0, 0x8065AE30] .bss: [0x81298F60, 0x81299180] +m_notice.c: + .text: [0x803C9F7C, 0x803CB340] + .rodata: [0x80642978, 0x806429B8] + .data: [0x8065AE30, 0x8065AEE8] + .bss: [0x81299180, 0x81299240] m_npc.c: .text: [0x803CB340, 0x803D7570] .rodata: [0x806429B8, 0x806429F0] @@ -241,6 +256,11 @@ m_player_call.c: .text: [0x803D8AEC, 0x803D8CEC] .data: [0x8065B9A0, 0x8065B9C8] .bss: [0x8129CC98, 0x8129CCA8] +m_player_lib.c: + .text: [0x803D8CEC, 0x803DE8A0] + .rodata: [0x80642A10, 0x806431C8] + .data: [0x8065B9C8, 0x8065BE98] + .bss: [0x8129CCA8, 0x8129CD40] m_police_box.c: .text: [0x803DE8A0, 0x803DEE38] .rodata: [0x806431C8, 0x806431D8] @@ -304,6 +324,15 @@ m_skin_matrix.c: m_snowman.c: .text: [0x803F1BB4, 0x803F1F94] .rodata: [0x80643318, 0x80643330] +m_titledemo.c: + .text: [0x803F1F94, 0x803F2428] + .rodata: [0x80643330, 0x80643350] + .data: [0x8065E2D8, 0x8065E2F0] + .bss: [0x8129F408, 0x8129F410] +m_train_control.c: + .text: [0x803F2428, 0x803F33DC] + .rodata: [0x80643350, 0x806433B0] + .data: [0x8065E2F0, 0x8065E378] m_time.c: .text: [0x803F33DC, 0x803F3E58] .rodata: [0x806433B0, 0x806433D8] @@ -360,6 +389,10 @@ main.c: .text: [0x80407AE8, 0x80407CF4] .data: [0x8065F110, 0x8065F138] .bss: [0x812F4CC0, 0x812F5038] +padmgr.c: + .text: [0x80407CF4, 0x80408940] + .data: [0x8065F138, 0x8065F150] + .bss: [0x812F5038, 0x812F54A0] sys_math.c: .text: [0x80408940, 0x80408A44] .rodata: [0x806437C0, 0x806437D0] @@ -445,6 +478,11 @@ ac_haniwa.c: .text: [0x80427624, 0x80428F64] .rodata: [0x806440B8, 0x806440F8] .data: [0x80683D08, 0x80683E98] +ac_intro_demo.c: + .text: [0x8042A97C, 0x8042B65C] + .rodata: [0x80644128, 0x80644158] + .data: [0x80684208, 0x806842E0] + .bss: [0x812F9C50, 0x812F9C60] ac_mbg.c: .text: [0x8042DCA0, 0x8042DEC8] .rodata: [0x80644218, 0x80644238] @@ -516,6 +554,26 @@ ac_set_ovl_insect.c: .rodata: [0x80644E00, 0x80644E28] .data: [0x8068CDE8, 0x8068E3C0] .bss: [0x812FD048, 0x812FD270] +ac_shop_design.c: + .text: [0x8049C748, 0x8049D51C] + .data: [0x8068E3C0, 0x8068E430] +ac_shop_goods.c: + .text: [0x8049D51C, 0x8049E6F4] + .rodata: [0x80644E28, 0x80645CB0] + .data: [0x8068E430, 0x8068E458] + .bss: [0x812FD270, 0x812FD480] +ac_shop_indoor.c: + .text: [0x8049E6F4, 0x8049F40C] + .rodata: [0x80645CB0, 0x80645CD0] + .data: [0x8068E458, 0x8068E520] + .bss: [0x812FD480, 0x812FD488] +ac_shop_level.c: + .text: [0x8049F40C, 0x8049FEC4] + .data: [0x8068E520, 0x8068E708] +ac_sign.c: + .text: [0x804A127C, 0x804A3328] + .rodata: [0x80645D18, 0x80645D78] + .data: [0x8068E880, 0x8068E8E8] ac_t_anrium1.c: .text: [0x804A7750, 0x804A78A4] .data: [0x8068E9C8, 0x8068EA08] @@ -617,6 +675,10 @@ ac_train_window.c: .text: [0x804AC510, 0x804AD428] .rodata: [0x80645FA8, 0x80645FF8] .data: [0x8068F600, 0x8068F830] +ac_uki.c: + .text: [0x804AD644, 0x804AFC14] + .rodata: [0x80646010, 0x806460D8] + .data: [0x8068F858, 0x8068FC68] bg_cherry_item.c: .text: [0x804AFC14, 0x804B6FB4] .rodata: [0x806460D8, 0x80646178] @@ -685,6 +747,10 @@ m_mark_room_ovl.c: .rodata: [0x806465C8, 0x806465D0] .data: [0x8069CAF0, 0x8069E580] .bss: [0x81300BD8, 0x813010D0] +m_player.c: + .text: [0x804D3B24, 0x80508E58] + .rodata: [0x806465D0, 0x80648ED0] + .data: [0x8069E580, 0x8069E918] m_random_field_ovl.c: .text: [0x80508E58, 0x8050B3D0] .rodata: [0x80648ED0, 0x80648ED8] @@ -714,6 +780,10 @@ ac_aprilfool_control.c: ac_groundhog_control.c: .text: [0x805155C8, 0x80515C48] .data: [0x8069FD88, 0x8069FDD0] +ac_ev_broker.c: + .text: [0x80519D4C, 0x8051A880] + .rodata: [0x80649160, 0x80649178] + .data: [0x806A0128, 0x806A01B0] ac_ev_castaway.c: .text: [0x8051CAC4, 0x8051CDCC] .rodata: [0x806491B0, 0x806491B8] @@ -752,6 +822,22 @@ ac_npc_curator.c: ac_npc_engineer.c: .text: [0x80552984, 0x80552B5C] .data: [0x806A61C8, 0x806A6208] +ac_npc_guide.c: + .text: [0x80552B5C, 0x80554B00] + .rodata: [0x80649620, 0x806496A0] + .data: [0x806A6208, 0x806A6508] +ac_npc_guide2.c: + .text: [0x80554B00, 0x80556714] + .rodata: [0x806496A0, 0x80649720] + .data: [0x806A6508, 0x806A67E0] +ac_npc_rcn_guide.c: + .text: [0x8056EED0, 0x8056FFF0] + .rodata: [0x806499C0, 0x806499E8] + .data: [0x806BEE20, 0x806BF028] +ac_npc_rcn_guide2.c: + .text: [0x8056FFF0, 0x80572050] + .rodata: [0x806499E8, 0x806499F0] + .data: [0x806BF028, 0x806BF4F8] ac_npc_rtc.c: .text: [0x80573044, 0x80574134] .rodata: [0x80649A08, 0x80649A40] @@ -810,6 +896,10 @@ ac_br_shop.c: .text: [0x805A856C, 0x805A9474] .rodata: [0x8064A630, 0x8064A660] .data: [0x806C4560, 0x806C4688] +ac_bridge_a.c: + .text: [0x805A9474, 0x805A9CA0] + .rodata: [0x8064A660, 0x8064A6D0] + .data: [0x806C4688, 0x806C4730] ac_buggy.c: .text: [0x805A9CA0, 0x805AAB3C] .rodata: [0x8064A6D0, 0x8064A708] @@ -943,6 +1033,11 @@ m_birthday_ovl.c: .rodata: [0x8064AE90, 0x8064AEB8] .data: [0x806C7BE0, 0x806C7C60] .bss: [0x8133E0C0, 0x8133E0C8] +m_board_ovl.c: + .text: [0x805C4E94, 0x805C67DC] + .rodata: [0x8064AEB8, 0x8064AF28] + .data: [0x806C7C60, 0x806C8880] + .bss: [0x8133E0C8, 0x8133E210] m_catalog_ovl.c: .text: [0x805C9254, 0x805CC1F4] .rodata: [0x8064AF90, 0x8064B090] @@ -1055,6 +1150,10 @@ ef_ase_ch.c: .text: [0x806052A8, 0x806054F0] .rodata: [0x8064BCA8, 0x8064BCC0] .data: [0x806D1EC8, 0x806D1F08] +ef_break_axe.c: + .text: [0x806054F0, 0x8060672C] + .rodata: [0x8064BCC0, 0x8064BD60] + .data: [0x806D1F08, 0x806D1F20] ef_bubu.c: .text: [0x8060672C, 0x80606878] .rodata: [0x8064BD60, 0x8064BD68] @@ -1087,6 +1186,30 @@ ef_coin.c: .text: [0x80608060, 0x806087EC] .rodata: [0x8064BE48, 0x8064BEA0] .data: [0x806D20C0, 0x806D2128] +ef_dash_asimoto.c: + .text: [0x806087EC, 0x80609030] + .rodata: [0x8064BEA0, 0x8064BEB8] + .data: [0x806D2128, 0x806D21B0] +ef_dig_hole.c: + .text: [0x80609030, 0x80609910] + .rodata: [0x8064BEB8, 0x8064BF20] + .data: [0x806D21B0, 0x806D2220] +ef_dig_mud.c: + .text: [0x80609910, 0x80609F6C] + .rodata: [0x8064BF20, 0x8064BF70] + .data: [0x806D2220, 0x806D2268] +ef_dig_scoop.c: + .text: [0x80609F6C, 0x8060A808] + .rodata: [0x8064BF70, 0x8064BF90] + .data: [0x806D2268, 0x806D2280] +ef_douzou_light.c: + .text: [0x8060A808, 0x8060AAD4] + .rodata: [0x8064BF90, 0x8064BFA8] + .data: [0x806D2280, 0x806D2298] +ef_doyon.c: + .text: [0x8060AAD4, 0x8060B068] + .rodata: [0x8064BFA8, 0x8064C000] + .data: [0x806D2298, 0x806D22B0] ef_flash.c: .text: [0x8060B7B4, 0x8060BCB0] .rodata: [0x8064C078, 0x8064C0B0] @@ -1095,6 +1218,24 @@ ef_footprint.c: .text: [0x8060BCB0, 0x8060C21C] .rodata: [0x8064C0B0, 0x8064C0E0] .data: [0x806D2430, 0x806D2470] +ef_halloween.c: + .text: [0x8060D44C, 0x8060D654] + .rodata: [0x8064C1C0, 0x8064C1D0] + .data: [0x806D2600, 0x806D2618] +ef_halloween_smoke.c: + .text: [0x8060D654, 0x8060D8D8] + .rodata: [0x8064C1D0, 0x8064C1E0] + .data: [0x806D2618, 0x806D2660] +ef_hanabi_dummy.c: + .text: [0x8060E6D8, 0x8060E9B8] + .rodata: [0x8064C2A0, 0x8064C2C0] + .data: [0x806D2858, 0x806D2888] +ef_hanatiri.c: + .text: [0x80610478, 0x8061061C] + .data: [0x806D2C08, 0x806D2C20] +ef_kasamizu.c: + .text: [0x806127BC, 0x80612960] + .data: [0x806D2DE0, 0x806D2E08] ef_killer.c: .text: [0x80614178, 0x8061481C] .rodata: [0x8064C680, 0x8064C6C0] @@ -1103,6 +1244,21 @@ ef_make_hem.c: .text: [0x806162B0, 0x8061710C] .rodata: [0x8064C818, 0x8064C860] .data: [0x806D3160, 0x806D31B8] +ef_otosiana.c: + .text: [0x8061A4E0, 0x8061A650] + .data: [0x806D33B8, 0x806D33D8] +ef_pun.c: + .text: [0x8061A650, 0x8061A824] + .rodata: [0x8064CAB8, 0x8064CAC0] + .data: [0x806D33D8, 0x806D33F0] +ef_pun_sekimen.c: + .text: [0x8061A824, 0x8061AA20] + .rodata: [0x8064CAC0, 0x8064CAD8] + .data: [0x806D33F0, 0x806D3408] +ef_pun_yuge.c: + .text: [0x8061AA20, 0x8061AE9C] + .rodata: [0x8064CAD8, 0x8064CB08] + .data: [0x806D3408, 0x806D3478] ef_tent_lamp.c: .text: [0x80622304, 0x8062260C] .rodata: [0x8064CF10, 0x8064CF38] @@ -1165,25 +1321,813 @@ f_furniture.c: .data: [0x806D4D40, 0x806E02A0] ac_weather_fine.c: .data: [0x806D1DA0, 0x806D1DB8] - - +# dataobject.obj NPC draw data TUs +data/npc/model/mdl/bev_1.c: + .data: [0x806E03A0, 0x806E27D0] +data/npc/model/tex/bev_1.c: + .data: [0x806E27E0, 0x806E3500] +data/npc/model/mdl/ant_1.c: + .data: [0x806E3838, 0x806E5910] +data/npc/model/tex/ant_1.c: + .data: [0x806E5920, 0x806E6640] +data/npc/model/tex/ant_2.c: + .data: [0x806E6640, 0x806E7360] +data/npc/model/tex/ant_3.c: + .data: [0x806E7360, 0x806E8080] +data/npc/model/tex/ant_4.c: + .data: [0x806E8080, 0x806E8DA0] +data/npc/model/tex/ant_5.c: + .data: [0x806E8DA0, 0x806E9AC0] +data/npc/model/mdl/wls_1.c: + .data: [0x806E9AC0, 0x806EBFF0] +data/npc/model/tex/wls_1.c: + .data: [0x806EC000, 0x806ECFA0] +data/scene/BG_TEST01.c: + .data: [0x806ECFA0, 0x806ECFF0] +data/scene/BG_TEST01_XLU.c: + .data: [0x806ECFF0, 0x806ED040] +data/scene/broker_shop.c: + .data: [0x806ED040, 0x806ED0C0] +data/scene/buggy.c: + .data: [0x806ED0C0, 0x806ED128] +data/npc/model/mdl/bea_1.c: + .data: [0x806EF078, 0x806F1030] +data/npc/model/tex/bea_1.c: + .data: [0x806F1040, 0x806F2260] +data/npc/model/tex/bea_2.c: + .data: [0x806F2260, 0x806F3480] +data/npc/model/tex/bea_3.c: + .data: [0x806F3480, 0x806F46A0] +data/npc/model/tex/bea_5.c: + .data: [0x806F46A0, 0x806F58C0] +data/npc/model/tex/bea_6.c: + .data: [0x806F58C0, 0x806F6AE0] +data/npc/model/tex/bea_7.c: + .data: [0x806F6AE0, 0x806F7D00] +data/npc/model/tex/bea_8.c: + .data: [0x806F7D00, 0x806F8F20] +data/npc/model/tex/bea_9.c: + .data: [0x806F8F20, 0x806FA140] +data/npc/model/tex/bea_10.c: + .data: [0x806FA140, 0x806FB360] +data/field/bg/acre/bg_data.c: + .data: [0x806FE048, 0x8074B840] # dataobject.obj files data/field/bg/flower/obj_flower.c: .data: [0x8074FE80, 0x807508C0] data/field/bg/flower/obj_flower_leaf.c: .data: [0x807508C0, 0x80751140] +data/npc/model/mdl/pbr_1.c: + .data: [0x8076DFA8, 0x80770178] +data/npc/model/tex/pbr_1.c: + .data: [0x80770180, 0x80770EA0] +data/npc/model/tex/pbr_2.c: + .data: [0x80770EA0, 0x80771BC0] +data/npc/model/tex/pbr_3.c: + .data: [0x80771BC0, 0x807728E0] +data/npc/model/tex/pbr_4.c: + .data: [0x807728E0, 0x80773600] +data/npc/model/tex/pbr_5.c: + .data: [0x80773600, 0x80774320] +data/npc/model/mdl/brd_1.c: + .data: [0x80774320, 0x80776358] +data/npc/model/tex/brd_1.c: + .data: [0x80776360, 0x80777080] +data/npc/model/tex/brd_2.c: + .data: [0x80777080, 0x80777DA0] +data/npc/model/tex/brd_11.c: + .data: [0x80777DA0, 0x80778AC0] +data/npc/model/tex/brd_3.c: + .data: [0x80778AC0, 0x807797E0] +data/npc/model/tex/brd_4.c: + .data: [0x807797E0, 0x8077A500] +data/npc/model/tex/brd_5.c: + .data: [0x8077A500, 0x8077B220] +data/npc/model/tex/brd_6.c: + .data: [0x8077B220, 0x8077BF40] +data/npc/model/tex/brd_7.c: + .data: [0x8077BF40, 0x8077CC60] +data/npc/model/tex/brd_8.c: + .data: [0x8077CC60, 0x8077D980] +data/npc/model/tex/brd_9.c: + .data: [0x8077D980, 0x8077E6A0] +data/npc/model/tex/brd_10.c: + .data: [0x8077E6A0, 0x8077F3C0] +data/player/BOY_part_data.c: + .data: [0x807D5F60, 0x807D5FE8] +data/npc/model/mdl/fox_1.c: + .data: [0x807D5FE8, 0x807D8098] +data/npc/model/tex/fox_1.c: + .data: [0x807D80A0, 0x807D8FC0] +data/npc/model/mdl/bul_1.c: + .data: [0x807D8FC0, 0x807DAFB0] +data/npc/model/tex/bul_1.c: + .data: [0x807DAFC0, 0x807DC1E0] +data/npc/model/tex/bul_2.c: + .data: [0x807DC1E0, 0x807DD400] +data/npc/model/tex/bul_3.c: + .data: [0x807DD400, 0x807DE620] +data/npc/model/tex/bul_4.c: + .data: [0x807DE620, 0x807DF840] +data/npc/model/mdl/cml_1.c: + .data: [0x807DF840, 0x807E1EA8] +data/npc/model/tex/cml_1.c: + .data: [0x807E1EC0, 0x807E2E60] +data/npc/model/mdl/cat_1.c: + .data: [0x807E2E60, 0x807E4BB0] +data/npc/model/tex/cat_1.c: + .data: [0x807E4BC0, 0x807E5DE0] +data/npc/model/tex/cat_2.c: + .data: [0x807E5DE0, 0x807E7000] +data/npc/model/tex/cat_11.c: + .data: [0x807E7000, 0x807E8220] +data/npc/model/tex/cat_12.c: + .data: [0x807E8220, 0x807E9440] +data/npc/model/tex/cat_13.c: + .data: [0x807E9440, 0x807EA660] +data/npc/model/tex/cat_14.c: + .data: [0x807EA660, 0x807EB880] +data/npc/model/tex/cat_15.c: + .data: [0x807EB880, 0x807ECAA0] +data/npc/model/tex/cat_3.c: + .data: [0x807ECAA0, 0x807EDCC0] +data/npc/model/tex/cat_4.c: + .data: [0x807EDCC0, 0x807EEEE0] +data/npc/model/tex/cat_5.c: + .data: [0x807EEEE0, 0x807F0100] +data/npc/model/tex/cat_6.c: + .data: [0x807F0100, 0x807F1320] +data/npc/model/tex/cat_7.c: + .data: [0x807F1320, 0x807F2540] +data/npc/model/tex/cat_8.c: + .data: [0x807F2540, 0x807F3760] +data/npc/model/tex/cat_9.c: + .data: [0x807F3760, 0x807F4980] +data/npc/model/tex/cat_10.c: + .data: [0x807F4980, 0x807F5BA0] +data/npc/model/mdl/chn_1.c: + .data: [0x807F5BA0, 0x807F8348] +data/npc/model/tex/chn_1.c: + .data: [0x807F8360, 0x807F9040] +data/npc/model/tex/chn_2.c: + .data: [0x807F9040, 0x807F9D20] +data/npc/model/tex/chn_3.c: + .data: [0x807F9D20, 0x807FAA00] +data/npc/model/tex/chn_4.c: + .data: [0x807FAA00, 0x807FB6E0] +data/npc/model/tex/chn_5.c: + .data: [0x807FB6E0, 0x807FC3C0] +data/npc/model/tex/chn_6.c: + .data: [0x807FC3C0, 0x807FD0A0] +data/npc/model/tex/chn_7.c: + .data: [0x807FD0A0, 0x807FDD80] +data/npc/model/tex/chn_8.c: + .data: [0x807FDD80, 0x807FEA60] +data/npc/model/tex/chn_9.c: + .data: [0x807FEA60, 0x807FF740] +data/npc/model/mdl/cbr_1.c: + .data: [0x807FF740, 0x80801620] +data/npc/model/tex/cbr_1.c: + .data: [0x80801620, 0x80802840] +data/npc/model/tex/cbr_2.c: + .data: [0x80802840, 0x80803A60] +data/npc/model/tex/cbr_11.c: + .data: [0x80803A60, 0x80804C80] +data/npc/model/tex/cbr_3.c: + .data: [0x80804C80, 0x80805EA0] +data/npc/model/tex/cbr_4.c: + .data: [0x80805EA0, 0x808070C0] +data/npc/model/tex/cbr_5.c: + .data: [0x808070C0, 0x808082E0] +data/npc/model/tex/cbr_6.c: + .data: [0x808082E0, 0x80809500] +data/npc/model/tex/cbr_7.c: + .data: [0x80809500, 0x8080A720] +data/npc/model/tex/cbr_8.c: + .data: [0x8080A720, 0x8080B940] +data/npc/model/tex/cbr_9.c: + .data: [0x8080B940, 0x8080CB60] +data/npc/model/tex/cbr_10.c: + .data: [0x8080CB60, 0x8080DD80] data/combi/data_combi.c: .data: [0x8080DD80, 0x8080E628] +data/npc/model/mdl/rcc_1.c: + .data: [0x8080E628, 0x80810608] +data/npc/model/tex/rcc_1.c: + .data: [0x80810620, 0x80811500] +data/npc/model/mdl/cow_1.c: + .data: [0x80811500, 0x808134E0] +data/npc/model/tex/cow_1.c: + .data: [0x808134E0, 0x80814700] +data/npc/model/tex/cow_2.c: + .data: [0x80814700, 0x80815920] +data/npc/model/tex/cow_3.c: + .data: [0x80815920, 0x80816B40] +data/npc/model/tex/cow_4.c: + .data: [0x80816B40, 0x80817D60] +data/npc/model/mdl/crd_1.c: + .data: [0x80817D60, 0x80819EE8] +data/npc/model/tex/crd_1.c: + .data: [0x80819F00, 0x8081AC20] +data/npc/model/tex/crd_2.c: + .data: [0x8081AC20, 0x8081B940] +data/npc/model/tex/crd_3.c: + .data: [0x8081B940, 0x8081C660] +data/npc/model/tex/crd_4.c: + .data: [0x8081C660, 0x8081D380] +data/npc/model/mdl/owl_1.c: + .data: [0x8081D380, 0x8081F9A8] +data/npc/model/tex/owl_1.c: + .data: [0x8081F9C0, 0x80820820] +data/npc/model/mdl/rcd_1.c: + .data: [0x80820820, 0x80822720] +data/npc/model/tex/rcd_1.c: + .data: [0x80822720, 0x80823580] +data/npc/model/mdl/grf_1.c: + .data: [0x80823580, 0x80825B28] +data/npc/model/tex/grf_1.c: + .data: [0x80825B40, 0x80826A60] +data/npc/model/mdl/dog_1.c: + .data: [0x80826A60, 0x80828A40] +data/npc/model/tex/dog_1.c: + .data: [0x80828A40, 0x80829C60] +data/npc/model/tex/dog_2.c: + .data: [0x80829C60, 0x8082AE80] +data/npc/model/tex/dog_3.c: + .data: [0x8082AE80, 0x8082C0A0] +data/npc/model/tex/dog_4.c: + .data: [0x8082C0A0, 0x8082D2C0] +data/npc/model/tex/dog_5.c: + .data: [0x8082D2C0, 0x8082E4E0] +data/npc/model/tex/dog_6.c: + .data: [0x8082E4E0, 0x8082F700] +data/npc/model/tex/dog_7.c: + .data: [0x8082F700, 0x80830920] +data/npc/model/tex/dog_8.c: + .data: [0x80830920, 0x80831B40] +data/npc/model/tex/dog_9.c: + .data: [0x80831B40, 0x80832D60] +data/npc/model/tex/dog_10.c: + .data: [0x80832D60, 0x80833F80] +data/npc/model/mdl/seg_1.c: + .data: [0x80833F80, 0x808362E8] +data/npc/model/tex/seg_1.c: + .data: [0x80836300, 0x80837160] +data/npc/model/mdl/duk_1.c: + .data: [0x80837160, 0x80839070] +data/npc/model/tex/duk_1.c: + .data: [0x80839080, 0x8083A2A0] +data/npc/model/tex/duk_2.c: + .data: [0x8083A2A0, 0x8083B4C0] +data/npc/model/tex/duk_11.c: + .data: [0x8083B4C0, 0x8083C6E0] +data/npc/model/tex/duk_3.c: + .data: [0x8083C6E0, 0x8083D900] +data/npc/model/tex/duk_4.c: + .data: [0x8083D900, 0x8083EB20] +data/npc/model/tex/duk_5.c: + .data: [0x8083EB20, 0x8083FD40] +data/npc/model/tex/duk_6.c: + .data: [0x8083FD40, 0x80840F60] +data/npc/model/tex/duk_7.c: + .data: [0x80840F60, 0x80842180] +data/npc/model/tex/duk_8.c: + .data: [0x80842180, 0x808433A0] +data/npc/model/tex/duk_9.c: + .data: [0x808433A0, 0x808445C0] +data/npc/model/tex/duk_10.c: + .data: [0x808445C0, 0x808457E0] +data/scene/event_notification.c: + .data: [0x808457E0, 0x80845830] +data/npc/model/mdl/elp_1.c: + .data: [0x80845830, 0x808479A0] +data/npc/model/tex/elp_1.c: + .data: [0x808479A0, 0x80848BC0] +data/npc/model/tex/elp_2.c: + .data: [0x80848BC0, 0x80849DE0] +data/npc/model/tex/elp_3.c: + .data: [0x80849DE0, 0x8084B000] +data/npc/model/tex/elp_4.c: + .data: [0x8084B000, 0x8084C220] +data/npc/model/tex/elp_5.c: + .data: [0x8084C220, 0x8084D440] +data/npc/model/tex/elp_6.c: + .data: [0x8084D440, 0x8084E660] +data/npc/model/tex/elp_7.c: + .data: [0x8084E660, 0x8084F880] +data/scene/fg_tool_in.c: + .data: [0x8084F880, 0x8084F940] +data/scene/field_tool_field.c: + .data: [0x8084F940, 0x8084F9B0] +data/npc/model/mdl/flg_1.c: + .data: [0x80857D80, 0x808597E0] +data/npc/model/tex/flg_1.c: + .data: [0x808597E0, 0x8085AA00] +data/npc/model/tex/flg_2.c: + .data: [0x8085AA00, 0x8085BC20] +data/npc/model/tex/flg_11.c: + .data: [0x8085BC20, 0x8085CE40] +data/npc/model/tex/flg_12.c: + .data: [0x8085CE40, 0x8085DFE0] +data/npc/model/tex/flg_13.c: + .data: [0x8085DFE0, 0x8085F200] +data/npc/model/tex/flg_3.c: + .data: [0x8085F200, 0x80860420] +data/npc/model/tex/flg_4.c: + .data: [0x80860420, 0x80861640] +data/npc/model/tex/flg_5.c: + .data: [0x80861640, 0x80862860] +data/npc/model/tex/flg_6.c: + .data: [0x80862860, 0x80863A80] +data/npc/model/tex/flg_7.c: + .data: [0x80863A80, 0x80864CA0] +data/npc/model/tex/flg_8.c: + .data: [0x80864CA0, 0x80865EC0] +data/npc/model/tex/flg_9.c: + .data: [0x80865EC0, 0x808670E0] +data/npc/model/tex/flg_10.c: + .data: [0x808670E0, 0x80868300] +data/npc/model/mdl/rcf_1.c: + .data: [0x80868300, 0x8086A9A0] +data/npc/model/tex/rcf_1.c: + .data: [0x8086A9A0, 0x8086B8C0] +data/npc/model/mdl/gst_1.c: + .data: [0x8086CB08, 0x8086E180] +data/npc/model/tex/gst_1.c: + .data: [0x8086E180, 0x8086F120] +data/npc/model/mdl/goa_1.c: + .data: [0x80871730, 0x808736E8] +data/npc/model/tex/goa_1.c: + .data: [0x80873700, 0x80874920] +data/npc/model/tex/goa_2.c: + .data: [0x80874920, 0x80875B40] +data/npc/model/tex/goa_3.c: + .data: [0x80875B40, 0x80876D60] +data/npc/model/tex/goa_4.c: + .data: [0x80876D60, 0x80877F80] +data/npc/model/tex/goa_5.c: + .data: [0x80877F80, 0x808791A0] +data/npc/model/tex/goa_6.c: + .data: [0x808791A0, 0x8087A3C0] +data/npc/model/mdl/gor_1.c: + .data: [0x8087A3C0, 0x8087C948] +data/npc/model/tex/gor_1.c: + .data: [0x8087C960, 0x8087DB80] +data/npc/model/tex/gor_2.c: + .data: [0x8087DB80, 0x8087EDA0] +data/npc/model/tex/gor_3.c: + .data: [0x8087EDA0, 0x8087FFC0] +data/npc/model/tex/gor_4.c: + .data: [0x8087FFC0, 0x808811E0] +data/npc/model/tex/gor_5.c: + .data: [0x808811E0, 0x80882400] +data/npc/model/mdl/xct_1.c: + .data: [0x80882400, 0x80884068] +data/npc/model/tex/xct_1.c: + .data: [0x80884080, 0x80885420] +data/npc/model/mdl/bpt_1.c: + .data: [0x80894928, 0x80896A80] +data/npc/model/tex/bpt_1.c: + .data: [0x80896A80, 0x808979A0] +data/npc/model/mdl/pkn_1.c: + .data: [0x808979A0, 0x808993C8] +data/npc/model/tex/pkn_1.c: + .data: [0x808993E0, 0x80899A80] +data/npc/model/mdl/hem_1.c: + .data: [0x8089BA80, 0x8089D6E0] +data/npc/model/tex/hem_1.c: + .data: [0x8089D6E0, 0x8089DE40] +data/npc/model/mdl/hip_1.c: + .data: [0x8089DE40, 0x808A0558] +data/npc/model/tex/hip_1.c: + .data: [0x808A0560, 0x808A1280] +data/npc/model/tex/hip_2.c: + .data: [0x808A1280, 0x808A1FA0] +data/npc/model/tex/hip_3.c: + .data: [0x808A1FA0, 0x808A2CC0] +data/npc/model/tex/hip_4.c: + .data: [0x808A2CC0, 0x808A39E0] +data/npc/model/tex/hip_5.c: + .data: [0x808A39E0, 0x808A4700] +data/npc/model/tex/hip_6.c: + .data: [0x808A4700, 0x808A5420] +data/npc/model/tex/hip_7.c: + .data: [0x808A5420, 0x808A6140] +data/npc/model/mdl/hrs_1.c: + .data: [0x808A6140, 0x808A8508] +data/npc/model/tex/hrs_1.c: + .data: [0x808A8520, 0x808A92C0] +data/npc/model/tex/hrs_2.c: + .data: [0x808A92C0, 0x808AA060] +data/npc/model/tex/hrs_3.c: + .data: [0x808AA060, 0x808AAE00] +data/npc/model/tex/hrs_4.c: + .data: [0x808AAE00, 0x808ABBA0] +data/npc/model/tex/hrs_5.c: + .data: [0x808ABBA0, 0x808AC940] +data/npc/model/tex/hrs_6.c: + .data: [0x808AC940, 0x808AD6E0] +data/npc/model/tex/hrs_7.c: + .data: [0x808AD6E0, 0x808AE480] +data/npc/model/tex/hrs_8.c: + .data: [0x808AE480, 0x808AF220] +data/npc/model/mdl/plj_1.c: + .data: [0x808B8D00, 0x808BAD00] +data/npc/model/tex/plj_1.c: + .data: [0x808BAD00, 0x808BC1A0] +data/npc/model/mdl/xsq_1.c: + .data: [0x808BC1A0, 0x808BE240] +data/npc/model/tex/xsq_1.c: + .data: [0x808BE240, 0x808BF660] data/item/item_name.c: .data: [0x808BF660, 0x808C8830] +data/scene/kamakura.c: + .data: [0x808C8830, 0x808C88A8] +data/npc/model/mdl/boa_1.c: + .data: [0x808C88A8, 0x808CAF48] +data/npc/model/tex/boa_1.c: + .data: [0x808CAF60, 0x808CBD40] +data/npc/model/mdl/kgr_1.c: + .data: [0x808CBD40, 0x808CE3C8] +data/npc/model/tex/kgr_1.c: + .data: [0x808CE3E0, 0x808CF040] +data/npc/model/tex/kgr_2.c: + .data: [0x808CF040, 0x808CFCA0] +data/npc/model/tex/kgr_3.c: + .data: [0x808CFCA0, 0x808D0900] +data/npc/model/tex/kgr_4.c: + .data: [0x808D0900, 0x808D1560] +data/npc/model/tex/kgr_5.c: + .data: [0x808D1560, 0x808D21C0] +data/npc/model/tex/kgr_6.c: + .data: [0x808D21C0, 0x808D2E20] +data/npc/model/mdl/fob_1.c: + .data: [0x808D2E20, 0x808D5360] +data/npc/model/tex/fob_1.c: + .data: [0x808D5360, 0x808D62C0] +data/npc/model/mdl/kal_1.c: + .data: [0x808D62C0, 0x808D81D8] +data/npc/model/tex/kal_1.c: + .data: [0x808D81E0, 0x808D9480] +data/npc/model/tex/kal_2.c: + .data: [0x808D9480, 0x808DA720] +data/npc/model/tex/kal_3.c: + .data: [0x808DA720, 0x808DB9C0] +data/npc/model/tex/kal_4.c: + .data: [0x808DB9C0, 0x808DCC60] +data/npc/model/tex/kal_5.c: + .data: [0x808DCC60, 0x808DDF00] +data/npc/model/tex/kal_6.c: + .data: [0x808DDF00, 0x808DF1A0] +data/scene/lighthouse.c: + .data: [0x808DF1A0, 0x808DF220] +data/npc/model/mdl/lon_1.c: + .data: [0x808E1A10, 0x808E3F78] +data/npc/model/tex/lon_1.c: + .data: [0x808E3F80, 0x808E5260] +data/npc/model/tex/lon_2.c: + .data: [0x808E5260, 0x808E6540] +data/npc/model/tex/lon_3.c: + .data: [0x808E6540, 0x808E7820] +data/npc/model/tex/lon_4.c: + .data: [0x808E7820, 0x808E8B00] +data/scene/museum_entrance.c: + .data: [0x808E8B00, 0x808E8C08] +data/scene/museum_fish.c: + .data: [0x808E8C08, 0x808E8CB0] +data/scene/museum_fossil.c: + .data: [0x808E8CB0, 0x808E8D30] +data/scene/museum_insect.c: + .data: [0x808E8D30, 0x808E8DF0] +data/scene/museum_picture.c: + .data: [0x808E8DF0, 0x808E8EA0] +data/npc/model/mdl/mos_1.c: + .data: [0x808EAEA0, 0x808ECAC8] +data/npc/model/tex/mos_1.c: + .data: [0x808ECAE0, 0x808EDF80] +data/npc/model/mdl/mol_1.c: + .data: [0x808EDF80, 0x808EFBA8] +data/npc/model/tex/mol_1.c: + .data: [0x808EFBC0, 0x808F1060] +data/npc/model/mdl/lrc_1.c: + .data: [0x808F1060, 0x808F2F50] +data/npc/model/tex/lrc_1.c: + .data: [0x808F2F60, 0x808F3E00] +data/npc/model/mdl/mka_1.c: + .data: [0x808F3E00, 0x808F5BA8] +data/npc/model/tex/mka_1.c: + .data: [0x808F5BC0, 0x808F6060] +data/npc/model/mdl/mus_1.c: + .data: [0x808F6EA8, 0x808F90B0] +data/npc/model/tex/mus_1.c: + .data: [0x808F90C0, 0x808FA2E0] +data/npc/model/tex/mus_2.c: + .data: [0x808FA2E0, 0x808FB500] +data/npc/model/tex/mus_3.c: + .data: [0x808FB500, 0x808FC720] +data/npc/model/tex/mus_4.c: + .data: [0x808FC720, 0x808FD940] +data/npc/model/tex/mus_5.c: + .data: [0x808FD940, 0x808FEB60] +data/npc/model/tex/mus_6.c: + .data: [0x808FEB60, 0x808FFD80] +data/npc/model/tex/mus_7.c: + .data: [0x808FFD80, 0x80900FA0] +data/npc/model/tex/mus_8.c: + .data: [0x80900FA0, 0x809021C0] +data/npc/model/tex/mus_9.c: + .data: [0x809021C0, 0x809033E0] +data/npc/model/tex/mus_10.c: + .data: [0x809033E0, 0x80904600] data/model/mural/obj_mural.c: .data: [0x80904600, 0x80904700] +data/scene/NEEDLEWORK.c: + .data: [0x80911C68, 0x80911D20] +data/scene/npc_room01.c: + .data: [0x80911D20, 0x80911DC8] +data/scene/npc_room_island.c: + .data: [0x80911DC8, 0x80911E70] +data/npc/model/mdl/hgh_1.c: + .data: [0x80911E70, 0x80914610] +data/npc/model/tex/hgh_1.c: + .data: [0x80914620, 0x80915500] +data/npc/model/mdl/hgs_1.c: + .data: [0x80915500, 0x80917C80] +data/npc/model/tex/hgs_1.c: + .data: [0x80917C80, 0x80918B60] data/npc/default_list.c: .data: [0x8096CD90, 0x8096D328] +data/npc/npc_draw_data.c: + .data: [0x8096D328, 0x80977450] data/npc/grow_list.c: .data: [0x80977450, 0x80977540] data/npc/house_list.c: .data: [0x80977540, 0x80977CB0] +data/npc/model/mdl/oct_1.c: + .data: [0x80977CB0, 0x8097A460] +data/npc/model/tex/oct_1.c: + .data: [0x8097A460, 0x8097AE80] +data/npc/model/mdl/ost_1.c: + .data: [0x8097AE80, 0x8097D100] +data/npc/model/tex/ost_1.c: + .data: [0x8097D100, 0x8097DE60] +data/npc/model/tex/ost_2.c: + .data: [0x8097DE60, 0x8097EBC0] +data/npc/model/tex/ost_3.c: + .data: [0x8097EBC0, 0x8097F920] +data/npc/model/tex/ost_4.c: + .data: [0x8097F920, 0x80980680] +data/scene/player_room_island.c: + .data: [0x80980680, 0x80980728] +data/scene/player_room_ll1.c: + .data: [0x80980728, 0x809807E8] +data/scene/player_room_ll2.c: + .data: [0x809807E8, 0x80980890] +data/scene/player_room_l.c: + .data: [0x80980890, 0x80980938] +data/scene/player_room_m.c: + .data: [0x80980938, 0x809809E0] +data/scene/player_room_s.c: + .data: [0x809809E0, 0x80980A88] +data/scene/PLAYER_SELECT2.c: + .data: [0x80980A88, 0x80980AD0] +data/scene/PLAYER_SELECT3.c: + .data: [0x80980AD0, 0x80980B18] +data/scene/PLAYER_SELECT4.c: + .data: [0x80980B18, 0x80980B60] +data/scene/player_select.c: + .data: [0x80980B60, 0x80980BA8] +data/scene/police_box.c: + .data: [0x80980BA8, 0x80980C48] +data/scene/post_office.c: + .data: [0x80980C48, 0x80980D00] +data/scene/p_room_bm_ll1.c: + .data: [0x80980D00, 0x80980D80] +data/scene/p_room_bm_l.c: + .data: [0x80980D80, 0x80980E00] +data/scene/p_room_bm_m.c: + .data: [0x80980E00, 0x80980E80] +data/scene/p_room_bm_s.c: + .data: [0x80980E80, 0x80980F00] +data/npc/model/mdl/pgn_1.c: + .data: [0x80980F28, 0x80983140] +data/npc/model/tex/pgn_1.c: + .data: [0x80983140, 0x80983EE0] +data/npc/model/tex/pgn_2.c: + .data: [0x80983EE0, 0x80984C80] +data/npc/model/tex/pgn_3.c: + .data: [0x80984C80, 0x80985A20] +data/npc/model/tex/pgn_4.c: + .data: [0x80985A20, 0x809867C0] +data/npc/model/tex/pgn_5.c: + .data: [0x809867C0, 0x80987560] +data/npc/model/tex/pgn_6.c: + .data: [0x80987560, 0x80988300] +data/npc/model/tex/pgn_7.c: + .data: [0x80988300, 0x809890A0] +data/npc/model/tex/pgn_8.c: + .data: [0x809890A0, 0x80989E40] +data/npc/model/mdl/pig_1.c: + .data: [0x80989E40, 0x8098BAC0] +data/npc/model/tex/pig_1.c: + .data: [0x8098BAC0, 0x8098CC60] +data/npc/model/tex/pig_2.c: + .data: [0x8098CC60, 0x8098DE00] +data/npc/model/tex/pig_11.c: + .data: [0x8098DE00, 0x8098EFA0] +data/npc/model/tex/pig_3.c: + .data: [0x8098EFA0, 0x80990140] +data/npc/model/tex/pig_4.c: + .data: [0x80990140, 0x809912E0] +data/npc/model/tex/pig_5.c: + .data: [0x809912E0, 0x80992480] +data/npc/model/tex/pig_6.c: + .data: [0x80992480, 0x80993620] +data/npc/model/tex/pig_7.c: + .data: [0x80993620, 0x809947C0] +data/npc/model/tex/pig_8.c: + .data: [0x809947C0, 0x80995960] +data/npc/model/tex/pig_9.c: + .data: [0x80995960, 0x80996B00] +data/npc/model/tex/pig_10.c: + .data: [0x80996B00, 0x80997CA0] +data/npc/model/mdl/pla_1.c: + .data: [0x80997CA0, 0x8099A318] +data/npc/model/mdl/plc_1.c: + .data: [0x8099A318, 0x8099C410] +data/npc/model/tex/plc_1.c: + .data: [0x8099C420, 0x8099D900] +data/npc/model/tex/pla_1.c: + .data: [0x8099D900, 0x8099ECA0] +data/npc/model/mdl/pga_1.c: + .data: [0x8099ECA0, 0x809A11A0] +data/npc/model/tex/pga_1.c: + .data: [0x809A11A0, 0x809A2000] +data/npc/model/mdl/pgb_1.c: + .data: [0x809A2000, 0x809A4450] +data/npc/model/tex/pgb_1.c: + .data: [0x809A4460, 0x809A5400] +data/npc/model/mdl/plb_1.c: + .data: [0x809A5400, 0x809A7980] +data/npc/model/tex/plb_1.c: + .data: [0x809A7980, 0x809A8920] +data/npc/model/mdl/rbt_1.c: + .data: [0x809A8920, 0x809AA7B8] +data/npc/model/tex/rbt_1.c: + .data: [0x809AA7C0, 0x809AB9E0] +data/npc/model/tex/rbt_2.c: + .data: [0x809AB9E0, 0x809ACC00] +data/npc/model/tex/rbt_11.c: + .data: [0x809ACC00, 0x809ADE20] +data/npc/model/tex/rbt_3.c: + .data: [0x809ADE20, 0x809AF040] +data/npc/model/tex/rbt_4.c: + .data: [0x809AF040, 0x809B0260] +data/npc/model/tex/rbt_5.c: + .data: [0x809B0260, 0x809B1480] +data/npc/model/tex/rbt_6.c: + .data: [0x809B1480, 0x809B26A0] +data/npc/model/tex/rbt_7.c: + .data: [0x809B26A0, 0x809B38C0] +data/npc/model/tex/rbt_8.c: + .data: [0x809B38C0, 0x809B4AE0] +data/npc/model/tex/rbt_9.c: + .data: [0x809B4AE0, 0x809B5D00] +data/npc/model/tex/rbt_10.c: + .data: [0x809B5D00, 0x809B6F20] +data/npc/model/mdl/mob_1.c: + .data: [0x809B6F20, 0x809B8AA0] +data/npc/model/tex/mob_1.c: + .data: [0x809B8AA0, 0x809B9F40] +data/npc/model/mdl/rhn_1.c: + .data: [0x809BA340, 0x809BCAF0] +data/npc/model/tex/rhn_1.c: + .data: [0x809BCB00, 0x809BDD20] +data/npc/model/tex/rhn_2.c: + .data: [0x809BDD20, 0x809BEF40] +data/npc/model/tex/rhn_3.c: + .data: [0x809BEF40, 0x809C0160] +data/npc/model/tex/rhn_4.c: + .data: [0x809C0160, 0x809C1380] +data/scene/shop01.c: + .data: [0x809C8B98, 0x809C8C20] +data/scene/shop02.c: + .data: [0x809C8C20, 0x809C8CA8] +data/scene/shop03.c: + .data: [0x809C8CA8, 0x809C8D28] +data/scene/shop04_1f.c: + .data: [0x809C8D28, 0x809C8DB0] +data/scene/shop04_2f.c: + .data: [0x809C8DB0, 0x809C8E38] +data/scene/start_demo1.c: + .data: [0x809C8E38, 0x809C8EA8] +data/scene/start_demo2.c: + .data: [0x809C8EA8, 0x809C8F18] +data/scene/start_demo3.c: + .data: [0x809C8F18, 0x809C8FA0] +data/npc/model/mdl/snt_1.c: + .data: [0x809C9148, 0x809CAD30] +data/npc/model/tex/snt_1.c: + .data: [0x809CAD40, 0x809CC1E0] +data/npc/model/mdl/wip_1.c: + .data: [0x809CC1E0, 0x809CE170] +data/npc/model/tex/wip_1.c: + .data: [0x809CE180, 0x809CF560] +data/npc/model/mdl/shp_1.c: + .data: [0x809CF560, 0x809D11A0] +data/npc/model/tex/shp_1.c: + .data: [0x809D11A0, 0x809D23C0] +data/npc/model/tex/shp_2.c: + .data: [0x809D23C0, 0x809D35E0] +data/npc/model/tex/shp_3.c: + .data: [0x809D35E0, 0x809D4800] +data/npc/model/tex/shp_4.c: + .data: [0x809D4800, 0x809D5A20] +data/npc/model/tex/shp_5.c: + .data: [0x809D5A20, 0x809D6C40] +data/npc/model/tex/shp_6.c: + .data: [0x809D6C40, 0x809D7E60] +data/npc/model/mdl/rcn_1.c: + .data: [0x809D7E60, 0x809D9E80] +data/npc/model/tex/rcn_1.c: + .data: [0x809D9E80, 0x809DACE0] +data/npc/model/mdl/kab_1.c: + .data: [0x80A001B0, 0x80A02398] +data/npc/model/tex/kab_1.c: + .data: [0x80A023A0, 0x80A02FC0] +data/npc/model/mdl/ttl_1.c: + .data: [0x80B38FC0, 0x80B3ADD8] +data/npc/model/tex/ttl_1.c: + .data: [0x80B3ADE0, 0x80B3BD40] +data/npc/model/mdl/squ_1.c: + .data: [0x80B3BD40, 0x80B3DDE0] +data/npc/model/tex/squ_1.c: + .data: [0x80B3DDE0, 0x80B3F000] +data/npc/model/tex/squ_2.c: + .data: [0x80B3F000, 0x80B40220] +data/npc/model/tex/squ_11.c: + .data: [0x80B40220, 0x80B41440] +data/npc/model/tex/squ_3.c: + .data: [0x80B41440, 0x80B42660] +data/npc/model/tex/squ_4.c: + .data: [0x80B42660, 0x80B43880] +data/npc/model/tex/squ_5.c: + .data: [0x80B43880, 0x80B44AA0] +data/npc/model/tex/squ_6.c: + .data: [0x80B44AA0, 0x80B45CC0] +data/npc/model/tex/squ_7.c: + .data: [0x80B45CC0, 0x80B46EE0] +data/npc/model/tex/squ_8.c: + .data: [0x80B46EE0, 0x80B48100] +data/npc/model/tex/squ_9.c: + .data: [0x80B48100, 0x80B49320] +data/npc/model/tex/squ_10.c: + .data: [0x80B49320, 0x80B4A540] +data/npc/model/mdl/mnk_1.c: + .data: [0x80B4A540, 0x80B4C7F8] +data/npc/model/tex/mnk_1.c: + .data: [0x80B4C800, 0x80B4DC20] +data/npc/model/mdl/rcs_1.c: + .data: [0x80C09AC0, 0x80C0BBA8] +data/npc/model/tex/rcs_1.c: + .data: [0x80C0BBC0, 0x80C0C960] +data/scene/tent.c: + .data: [0x80C0C960, 0x80C0C9D8] + +data/scene/test_fd_npc_land.c: + .data: [0x80C0C9D8, 0x80C0CA68] +data/scene/water_test.c: + .data: [0x80C0CA68, 0x80C0CAE8] +data/scene/test_step01.c: + .data: [0x80C0CAE8, 0x80C0CB18] +data/scene/title_demo.c: + .data: [0x80C0CB18, 0x80C0CBA0] +# acres +# data/field/bg/acre/grd_post_office/grd_post_office.c: + # .data: [0x80C5DBA0, 0x80C63408] + +# scenes +data/scene/test01.c: + .data: [0x80C2C800, 0x80C2C888] +data/scene/test02.c: + .data: [0x80C2C888, 0x80C2C8D8] +data/scene/test03.c: + .data: [0x80C2C8D8, 0x80C2C960] +data/scene/test04.c: + .data: [0x80C2C960, 0x80C2C9B0] +data/scene/test05.c: + .data: [0x80C2C9B0, 0x80C2C9F8] + +data/npc/model/mdl/tig_1.c: + .data: [0x80C2C9F8, 0x80C2EE88] +data/npc/model/tex/tig_1.c: + .data: [0x80C2EEA0, 0x80C2FC40] +data/npc/model/tex/tig_2.c: + .data: [0x80C2FC40, 0x80C309E0] +data/npc/model/tex/tig_3.c: + .data: [0x80C309E0, 0x80C31780] +data/npc/model/tex/tig_4.c: + .data: [0x80C31780, 0x80C32520] data/titledemo/pact0.c: .data: [0x80C411D8, 0x80C42038] data/titledemo/pact1.c: @@ -1194,16 +2138,876 @@ data/titledemo/pact3.c: .data: [0x80C43D18, 0x80C44B98] data/titledemo/pact4.c: .data: [0x80C44B98, 0x80C45A08] +data/npc/model/mdl/end_1.c: + .data: [0x80C45A08, 0x80C480A8] +data/npc/model/tex/end_1.c: + .data: [0x80C480C0, 0x80C493A0] +data/npc/model/mdl/tuk_1.c: + .data: [0x80C4B710, 0x80C4E080] +data/npc/model/tex/tuk_1.c: + .data: [0x80C4E080, 0x80C4EF20] +data/npc/model/mdl/wol_1.c: + .data: [0x80C4F588, 0x80C51650] +data/npc/model/tex/wol_1.c: + .data: [0x80C51660, 0x80C52280] +data/npc/model/tex/wol_2.c: + .data: [0x80C52280, 0x80C52EA0] +data/npc/model/tex/wol_3.c: + .data: [0x80C52EA0, 0x80C53AC0] +data/npc/model/tex/wol_4.c: + .data: [0x80C53AC0, 0x80C546E0] +data/npc/model/tex/wol_5.c: + .data: [0x80C546E0, 0x80C55300] +data/npc/model/tex/wol_6.c: + .data: [0x80C55300, 0x80C55F20] data/field/bg/beach_pal.c: .data: [0x80C59CA8, 0x80C59E28] +data/field/bg/acre/grd_yamishop/grd_yamishop.c: + .data: [0x80C5A240, 0x80C5DBA0] +data/field/bg/acre/grd_post_office/grd_post_office.c: + .data: [0x80C5DBA0, 0x80C63408] +data/field/bg/acre/tmp4/tmp4.c: + .data: [0x80C63408, 0x80C64698] +data/field/bg/acre/tmpr4/tmpr4_evw_anime.c: + .data: [0x80C64698, 0x80C646D8] +data/field/bg/acre/tmpr4/tmpr4.c: + .data: [0x80C646D8, 0x80C66278] +data/field/bg/acre/tmp3/tmp3.c: + .data: [0x80C66278, 0x80C677F8] +data/field/bg/acre/tmpr3/tmpr3_evw_anime.c: + .data: [0x80C677F8, 0x80C67838] +data/field/bg/acre/tmpr3/tmpr3.c: + .data: [0x80C67838, 0x80C69338] +data/field/bg/acre/tmp/tmp.c: + .data: [0x80C69338, 0x80C695E0] +data/field/bg/acre/tmpr/tmpr_evw_anime.c: + .data: [0x80C695E0, 0x80C695F0] +data/field/bg/acre/tmpr/tmpr.c: + .data: [0x80C695F0, 0x80C6A8C8] +data/field/bg/acre/tmp2/tmp2.c: + .data: [0x80C6A8C8, 0x80C6CE68] +data/field/bg/acre/tmpr2/tmpr2_evw_anime.c: + .data: [0x80C6CE68, 0x80C6CE78] +data/field/bg/acre/tmpr2/tmpr2.c: + .data: [0x80C6CE78, 0x80C6DCC0] data/field/bg/bush_pal.c: .data: [0x80C78680, 0x80C78800] data/field/bg/cliff_pal.c: .data: [0x80C78988, 0x80C78B20] data/field/bg/earth_pal.c: .data: [0x80C90100, 0x80C90280] +data/field/bg/acre/grd_s_c1_1/grd_s_c1_1.c: + .data: [0x80CE7320, 0x80CE83C0] +data/field/bg/acre/grd_s_c1_2/grd_s_c1_2.c: + .data: [0x80CE83C0, 0x80CE9510] +data/field/bg/acre/grd_s_c1_3/grd_s_c1_3.c: + .data: [0x80CE9510, 0x80CEA598] +data/field/bg/acre/grd_s_c1_4/grd_s_c1_4.c: + .data: [0x80CEA598, 0x80CEB868] +data/field/bg/acre/grd_s_c1_5/grd_s_c1_5.c: + .data: [0x80CEB868, 0x80CEC738] +data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c: + .data: [0x80CEC738, 0x80CEC748] +data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c: + .data: [0x80CEC748, 0x80CEDCF0] +data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c: + .data: [0x80CEDCF0, 0x80CEDD00] +data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c: + .data: [0x80CEDD00, 0x80CEF128] +data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c: + .data: [0x80CEF128, 0x80CEF138] +data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c: + .data: [0x80CEF138, 0x80CF0538] +data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c: + .data: [0x80CF0538, 0x80CF0548] +data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c: + .data: [0x80CF0548, 0x80CF1960] +data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c: + .data: [0x80CF1960, 0x80CF1970] +data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c: + .data: [0x80CF1970, 0x80CF2DC8] +data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c: + .data: [0x80CF2DC8, 0x80CF2DD8] +data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c: + .data: [0x80CF2DD8, 0x80CF4440] +data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c: + .data: [0x80CF4440, 0x80CF4450] +data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c: + .data: [0x80CF4450, 0x80CF5508] +data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c: + .data: [0x80CF5508, 0x80CF5518] +data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c: + .data: [0x80CF5518, 0x80CF6810] +data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c: + .data: [0x80CF6810, 0x80CF6820] +data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c: + .data: [0x80CF6820, 0x80CF7C58] +data/field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c: + .data: [0x80CF7C58, 0x80CF8B38] +data/field/bg/acre/grd_s_c1_s_2/grd_s_c1_s_2.c: + .data: [0x80CF8B38, 0x80CF9C60] +data/field/bg/acre/grd_s_c1_s_3/grd_s_c1_s_3.c: + .data: [0x80CF9C60, 0x80CFAEA0] +data/field/bg/acre/grd_s_c1_s_4/grd_s_c1_s_4.c: + .data: [0x80CFAEA0, 0x80CFC1B0] +data/field/bg/acre/grd_s_c2_1/grd_s_c2_1.c: + .data: [0x80CFC1B0, 0x80CFD1D0] +data/field/bg/acre/grd_s_c2_2/grd_s_c2_2.c: + .data: [0x80CFD1D0, 0x80CFE220] +data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c: + .data: [0x80CFE220, 0x80CFE230] +data/field/bg/acre/grd_s_c2_3/grd_s_c2_3.c: + .data: [0x80CFE230, 0x80CFF5A8] +data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c: + .data: [0x80CFF5A8, 0x80CFF5B8] +data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c: + .data: [0x80CFF5B8, 0x80D009A0] +data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c: + .data: [0x80D009A0, 0x80D009B0] +data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c: + .data: [0x80D009B0, 0x80D01E70] +data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c: + .data: [0x80D01E70, 0x80D01E80] +data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c: + .data: [0x80D01E80, 0x80D03140] +data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c: + .data: [0x80D03140, 0x80D03150] +data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c: + .data: [0x80D03150, 0x80D04680] +data/field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c: + .data: [0x80D04680, 0x80D05A20] +data/field/bg/acre/grd_s_c2_s_2/grd_s_c2_s_2.c: + .data: [0x80D05A20, 0x80D06AF0] +data/field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c: + .data: [0x80D06AF0, 0x80D07AF0] +data/field/bg/acre/grd_s_c3_1/grd_s_c3_1.c: + .data: [0x80D07AF0, 0x80D08C80] +data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c: + .data: [0x80D08C80, 0x80D08C90] +data/field/bg/acre/grd_s_c3_2/grd_s_c3_2.c: + .data: [0x80D08C90, 0x80D09D80] +data/field/bg/acre/grd_s_c3_3/grd_s_c3_3.c: + .data: [0x80D09D80, 0x80D0ACF0] +data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c: + .data: [0x80D0ACF0, 0x80D0AD00] +data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c: + .data: [0x80D0AD00, 0x80D0BE48] +data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c: + .data: [0x80D0BE48, 0x80D0BE58] +data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c: + .data: [0x80D0BE58, 0x80D0D148] +data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c: + .data: [0x80D0D148, 0x80D0D158] +data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c: + .data: [0x80D0D158, 0x80D0E7C8] +data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c: + .data: [0x80D0E7C8, 0x80D0E7D8] +data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c: + .data: [0x80D0E7D8, 0x80D0FE50] +data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c: + .data: [0x80D0FE50, 0x80D0FE60] +data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c: + .data: [0x80D0FE60, 0x80D11628] +data/field/bg/acre/grd_s_c4_1/grd_s_c4_1.c: + .data: [0x80D11628, 0x80D12430] +data/field/bg/acre/grd_s_c4_2/grd_s_c4_2.c: + .data: [0x80D12430, 0x80D135B0] +data/field/bg/acre/grd_s_c4_3/grd_s_c4_3.c: + .data: [0x80D135B0, 0x80D14598] +data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c: + .data: [0x80D14598, 0x80D145A8] +data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c: + .data: [0x80D145A8, 0x80D158B0] +data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c: + .data: [0x80D158B0, 0x80D158C0] +data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c: + .data: [0x80D158C0, 0x80D16B80] +data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c: + .data: [0x80D16B80, 0x80D16B90] +data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c: + .data: [0x80D16B90, 0x80D17EF8] +data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c: + .data: [0x80D17EF8, 0x80D17F08] +data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c: + .data: [0x80D17F08, 0x80D18FB0] +data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c: + .data: [0x80D18FB0, 0x80D18FC0] +data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c: + .data: [0x80D18FC0, 0x80D1A0C8] +data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c: + .data: [0x80D1A0C8, 0x80D1A0D8] +data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c: + .data: [0x80D1A0D8, 0x80D1B088] +data/field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c: + .data: [0x80D1B088, 0x80D1C030] +data/field/bg/acre/grd_s_c4_s_2/grd_s_c4_s_2.c: + .data: [0x80D1C030, 0x80D1D2A8] +data/field/bg/acre/grd_s_c5_1/grd_s_c5_1.c: + .data: [0x80D1D2A8, 0x80D1DFA8] +data/field/bg/acre/grd_s_c5_2/grd_s_c5_2.c: + .data: [0x80D1DFA8, 0x80D1F1B8] +data/field/bg/acre/grd_s_c5_3/grd_s_c5_3.c: + .data: [0x80D1F1B8, 0x80D1FF20] +data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c: + .data: [0x80D1FF20, 0x80D1FF30] +data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c: + .data: [0x80D1FF30, 0x80D21510] +data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c: + .data: [0x80D21510, 0x80D21520] +data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c: + .data: [0x80D21520, 0x80D22AB0] +data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c: + .data: [0x80D22AB0, 0x80D22AC0] +data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c: + .data: [0x80D22AC0, 0x80D241C0] +data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c: + .data: [0x80D241C0, 0x80D241D0] +data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c: + .data: [0x80D241D0, 0x80D25638] +data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c: + .data: [0x80D25638, 0x80D25648] +data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c: + .data: [0x80D25648, 0x80D26978] +data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c: + .data: [0x80D26978, 0x80D26988] +data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c: + .data: [0x80D26988, 0x80D27B78] +data/field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c: + .data: [0x80D27B78, 0x80D28B20] +data/field/bg/acre/grd_s_c5_s_2/grd_s_c5_s_2.c: + .data: [0x80D28B20, 0x80D29AC8] +data/field/bg/acre/grd_s_c6_1/grd_s_c6_1.c: + .data: [0x80D29AC8, 0x80D2AC00] +data/field/bg/acre/grd_s_c6_2/grd_s_c6_2.c: + .data: [0x80D2AC00, 0x80D2BE00] +data/field/bg/acre/grd_s_c6_3/grd_s_c6_3.c: + .data: [0x80D2BE00, 0x80D2CDA0] +data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c: + .data: [0x80D2CDA0, 0x80D2CDB0] +data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c: + .data: [0x80D2CDB0, 0x80D2E088] +data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c: + .data: [0x80D2E088, 0x80D2E098] +data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c: + .data: [0x80D2E098, 0x80D2F3E8] +data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c: + .data: [0x80D2F3E8, 0x80D2F3F8] +data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c: + .data: [0x80D2F3F8, 0x80D30BB0] +data/field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c: + .data: [0x80D30BB0, 0x80D31C90] +data/field/bg/acre/grd_s_c7_1/grd_s_c7_1.c: + .data: [0x80D31C90, 0x80D32CC8] +data/field/bg/acre/grd_s_c7_2/grd_s_c7_2.c: + .data: [0x80D32CC8, 0x80D34080] +data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c: + .data: [0x80D34080, 0x80D34090] +data/field/bg/acre/grd_s_c7_3/grd_s_c7_3.c: + .data: [0x80D34090, 0x80D35450] +data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c: + .data: [0x80D35450, 0x80D35460] +data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c: + .data: [0x80D35460, 0x80D365A0] +data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c: + .data: [0x80D365A0, 0x80D365B0] +data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c: + .data: [0x80D365B0, 0x80D376F8] +data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c: + .data: [0x80D376F8, 0x80D37708] +data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c: + .data: [0x80D37708, 0x80D38C48] +data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c: + .data: [0x80D38C48, 0x80D38C58] +data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c: + .data: [0x80D38C58, 0x80D3A318] +data/field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c: + .data: [0x80D3A318, 0x80D3B938] +data/field/bg/acre/grd_s_c7_s_2/grd_s_c7_s_2.c: + .data: [0x80D3B938, 0x80D3C800] +data/field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c: + .data: [0x80D3C800, 0x80D3D930] +data/field/bg/acre/grd_s_e1_1/grd_s_e1_1.c: + .data: [0x80D3D930, 0x80D3DFE0] +data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c: + .data: [0x80D3DFE0, 0x80D3DFF0] +data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c: + .data: [0x80D3DFF0, 0x80D3F770] +data/field/bg/acre/grd_s_e2_1/grd_s_e2_1.c: + .data: [0x80D3F770, 0x80D3FF08] +data/field/bg/acre/grd_s_e2_c1_1/grd_s_e2_c1_1.c: + .data: [0x80D3FF08, 0x80D406C8] +data/field/bg/acre/grd_s_e2_m_1/grd_s_e2_m_1.c: + .data: [0x80D406C8, 0x80D40FA0] +data/field/bg/acre/grd_s_e2_o_1/grd_s_e2_o_1.c: + .data: [0x80D40FA0, 0x80D41280] +data/field/bg/acre/grd_s_e2_t_1/grd_s_e2_t_1.c: + .data: [0x80D41280, 0x80D41DF0] +data/field/bg/acre/grd_s_e3_1/grd_s_e3_1.c: + .data: [0x80D41DF0, 0x80D425D8] +data/field/bg/acre/grd_s_e3_c1_1/grd_s_e3_c1_1.c: + .data: [0x80D425D8, 0x80D42DB0] +data/field/bg/acre/grd_s_e3_m_1/grd_s_e3_m_1.c: + .data: [0x80D42DB0, 0x80D436F8] +data/field/bg/acre/grd_s_e3_o_1/grd_s_e3_o_1.c: + .data: [0x80D436F8, 0x80D439D8] +data/field/bg/acre/grd_s_e3_t_1/grd_s_e3_t_1.c: + .data: [0x80D439D8, 0x80D44468] +data/field/bg/acre/grd_s_e4_1/grd_s_e4_1.c: + .data: [0x80D44468, 0x80D44670] +data/field/bg/acre/grd_s_e5_1/grd_s_e5_1.c: + .data: [0x80D44670, 0x80D448A0] +data/field/bg/acre/grd_s_f_1/grd_s_f_1.c: + .data: [0x80D448A0, 0x80D455F0] +data/field/bg/acre/grd_s_f_10/grd_s_f_10.c: + .data: [0x80D455F0, 0x80D463D8] +data/field/bg/acre/grd_s_f_2/grd_s_f_2.c: + .data: [0x80D463D8, 0x80D47320] +data/field/bg/acre/grd_s_f_3/grd_s_f_3.c: + .data: [0x80D47320, 0x80D47C78] +data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c: + .data: [0x80D47C78, 0x80D47C88] +data/field/bg/acre/grd_s_f_4/grd_s_f_4.c: + .data: [0x80D47C88, 0x80D48A60] +data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c: + .data: [0x80D48A60, 0x80D48A70] +data/field/bg/acre/grd_s_f_5/grd_s_f_5.c: + .data: [0x80D48A70, 0x80D49C50] +data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c: + .data: [0x80D49C50, 0x80D49C60] +data/field/bg/acre/grd_s_f_6/grd_s_f_6.c: + .data: [0x80D49C60, 0x80D4AE88] +data/field/bg/acre/grd_s_f_7/grd_s_f_7.c: + .data: [0x80D4AE88, 0x80D4C640] +data/field/bg/acre/grd_s_f_8/grd_s_f_8.c: + .data: [0x80D4C640, 0x80D4D568] +data/field/bg/acre/grd_s_f_9/grd_s_f_9.c: + .data: [0x80D4D568, 0x80D4E708] +data/field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c: + .data: [0x80D4E708, 0x80D4F808] +data/field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c: + .data: [0x80D4F808, 0x80D50490] +data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c: + .data: [0x80D50490, 0x80D504A0] +data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c: + .data: [0x80D504A0, 0x80D51708] +data/field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c: + .data: [0x80D51708, 0x80D52588] +data/field/bg/acre/grd_s_f_mh_2/grd_s_f_mh_2.c: + .data: [0x80D52588, 0x80D534F0] +data/field/bg/acre/grd_s_f_mh_3/grd_s_f_mh_3.c: + .data: [0x80D534F0, 0x80D54190] +data/field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c: + .data: [0x80D54190, 0x80D54D60] +data/field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c: + .data: [0x80D54D60, 0x80D55920] +data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c: + .data: [0x80D55920, 0x80D55930] +data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c: + .data: [0x80D55930, 0x80D564B8] +data/field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c: + .data: [0x80D564B8, 0x80D575B8] +data/field/bg/acre/grd_s_f_pk_2/grd_s_f_pk_2.c: + .data: [0x80D575B8, 0x80D58580] +data/field/bg/acre/grd_s_f_pk_3/grd_s_f_pk_3.c: + .data: [0x80D58580, 0x80D59810] +data/field/bg/acre/grd_s_hole_test/grd_s_hole_test.c: + .data: [0x80D59810, 0x80D5A9A8] +data/field/bg/acre/grd_s_il_1/grd_s_il_1.c: + .data: [0x80D5A9A8, 0x80D5BA18] +data/field/bg/acre/grd_s_il_2/grd_s_il_2.c: + .data: [0x80D5BA18, 0x80D5D358] +data/field/bg/acre/grd_s_il_3/grd_s_il_3.c: + .data: [0x80D5D358, 0x80D5E4F8] +data/field/bg/acre/grd_s_il_4/grd_s_il_4.c: + .data: [0x80D5E4F8, 0x80D5F5E8] +data/field/bg/acre/grd_s_ir_1/grd_s_ir_1.c: + .data: [0x80D5F5E8, 0x80D60A60] +data/field/bg/acre/grd_s_ir_2/grd_s_ir_2.c: + .data: [0x80D60A60, 0x80D621F8] +data/field/bg/acre/grd_s_ir_3/grd_s_ir_3.c: + .data: [0x80D621F8, 0x80D63BB0] +data/field/bg/acre/grd_s_ir_4/grd_s_ir_4.c: + .data: [0x80D63BB0, 0x80D65158] +data/field/bg/acre/grd_s_m_1/grd_s_m_1.c: + .data: [0x80D65158, 0x80D662B0] +data/field/bg/acre/grd_s_m_10/grd_s_m_10.c: + .data: [0x80D662B0, 0x80D67438] +data/field/bg/acre/grd_s_m_2/grd_s_m_2.c: + .data: [0x80D67438, 0x80D68718] +data/field/bg/acre/grd_s_m_3/grd_s_m_3.c: + .data: [0x80D68718, 0x80D698C8] +data/field/bg/acre/grd_s_m_4/grd_s_m_4.c: + .data: [0x80D698C8, 0x80D6A8A0] +data/field/bg/acre/grd_s_m_5/grd_s_m_5.c: + .data: [0x80D6A8A0, 0x80D6BC70] +data/field/bg/acre/grd_s_m_6/grd_s_m_6.c: + .data: [0x80D6BC70, 0x80D6CF60] +data/field/bg/acre/grd_s_m_7/grd_s_m_7.c: + .data: [0x80D6CF60, 0x80D6DF60] +data/field/bg/acre/grd_s_m_8/grd_s_m_8.c: + .data: [0x80D6DF60, 0x80D6EFE8] +data/field/bg/acre/grd_s_m_9/grd_s_m_9.c: + .data: [0x80D6EFE8, 0x80D6FF58] +data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c: + .data: [0x80D6FF58, 0x80D6FF78] +data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c: + .data: [0x80D6FF78, 0x80D713D8] +data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c: + .data: [0x80D713D8, 0x80D713F8] +data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c: + .data: [0x80D713F8, 0x80D727B8] +data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c: + .data: [0x80D727B8, 0x80D727D8] +data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c: + .data: [0x80D727D8, 0x80D73A30] +data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c: + .data: [0x80D73A30, 0x80D73A50] +data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c: + .data: [0x80D73A50, 0x80D74FD8] +data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c: + .data: [0x80D74FD8, 0x80D74FF8] +data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c: + .data: [0x80D74FF8, 0x80D76660] +data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c: + .data: [0x80D76660, 0x80D76680] +data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c: + .data: [0x80D76680, 0x80D77908] +data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c: + .data: [0x80D77908, 0x80D77928] +data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c: + .data: [0x80D77928, 0x80D78F10] +data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c: + .data: [0x80D78F10, 0x80D78F30] +data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c: + .data: [0x80D78F30, 0x80D7A350] +data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c: + .data: [0x80D7A350, 0x80D7A370] +data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c: + .data: [0x80D7A370, 0x80D7B6C8] +data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c: + .data: [0x80D7B6C8, 0x80D7B6E8] +data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c: + .data: [0x80D7B6E8, 0x80D7C900] +data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c: + .data: [0x80D7C900, 0x80D7C920] +data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c: + .data: [0x80D7C920, 0x80D7DC70] +data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c: + .data: [0x80D7DC70, 0x80D7DCB0] +data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c: + .data: [0x80D7DCB0, 0x80D7F310] +data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c: + .data: [0x80D7F310, 0x80D7F350] +data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c: + .data: [0x80D7F350, 0x80D81008] +data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c: + .data: [0x80D81008, 0x80D81048] +data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c: + .data: [0x80D81048, 0x80D82780] +data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c: + .data: [0x80D82780, 0x80D827C0] +data/field/bg/acre/grd_s_o_1/grd_s_o_1.c: + .data: [0x80D827C0, 0x80D82CA0] +data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c: + .data: [0x80D82CA0, 0x80D82CE0] +data/field/bg/acre/grd_s_o_10/grd_s_o_10.c: + .data: [0x80D82CE0, 0x80D83178] +data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c: + .data: [0x80D83178, 0x80D831B8] +data/field/bg/acre/grd_s_o_2/grd_s_o_2.c: + .data: [0x80D831B8, 0x80D83658] +data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c: + .data: [0x80D83658, 0x80D83698] +data/field/bg/acre/grd_s_o_3/grd_s_o_3.c: + .data: [0x80D83698, 0x80D83B00] +data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c: + .data: [0x80D83B00, 0x80D83B40] +data/field/bg/acre/grd_s_o_4/grd_s_o_4.c: + .data: [0x80D83B40, 0x80D83FD0] +data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c: + .data: [0x80D83FD0, 0x80D84010] +data/field/bg/acre/grd_s_o_5/grd_s_o_5.c: + .data: [0x80D84010, 0x80D84490] +data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c: + .data: [0x80D84490, 0x80D844D0] +data/field/bg/acre/grd_s_o_6/grd_s_o_6.c: + .data: [0x80D844D0, 0x80D84938] +data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c: + .data: [0x80D84938, 0x80D84978] +data/field/bg/acre/grd_s_o_7/grd_s_o_7.c: + .data: [0x80D84978, 0x80D84E08] +data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c: + .data: [0x80D84E08, 0x80D84E48] +data/field/bg/acre/grd_s_o_8/grd_s_o_8.c: + .data: [0x80D84E48, 0x80D85338] +data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c: + .data: [0x80D85338, 0x80D85378] +data/field/bg/acre/grd_s_o_9/grd_s_o_9.c: + .data: [0x80D85378, 0x80D85850] +data/field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c: + .data: [0x80D85850, 0x80D85CB0] +data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c: + .data: [0x80D85CB0, 0x80D85CF0] +data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c: + .data: [0x80D85CF0, 0x80D85FD0] +data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c: + .data: [0x80D85FD0, 0x80D86010] +data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c: + .data: [0x80D86010, 0x80D86520] +data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c: + .data: [0x80D86520, 0x80D86560] +data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c: + .data: [0x80D86560, 0x80D86A40] +data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c: + .data: [0x80D86A40, 0x80D86A80] +data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c: + .data: [0x80D86A80, 0x80D86F78] +data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c: + .data: [0x80D86F78, 0x80D86FB8] +data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c: + .data: [0x80D86FB8, 0x80D87478] +data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c: + .data: [0x80D87478, 0x80D874B8] +data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c: + .data: [0x80D874B8, 0x80D87890] +data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c: + .data: [0x80D87890, 0x80D878D0] +data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c: + .data: [0x80D878D0, 0x80D87BB0] +data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c: + .data: [0x80D87BB0, 0x80D87BF0] +data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c: + .data: [0x80D87BF0, 0x80D87EC8] +data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c: + .data: [0x80D87EC8, 0x80D87F08] +data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c: + .data: [0x80D87F08, 0x80D881E0] +data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c: + .data: [0x80D881E0, 0x80D88220] +data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c: + .data: [0x80D88220, 0x80D88728] +data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c: + .data: [0x80D88728, 0x80D88768] +data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c: + .data: [0x80D88768, 0x80D88B70] +data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c: + .data: [0x80D88B70, 0x80D88BB0] +data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c: + .data: [0x80D88BB0, 0x80D88FC8] +data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c: + .data: [0x80D88FC8, 0x80D89008] +data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c: + .data: [0x80D89008, 0x80D89538] +data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c: + .data: [0x80D89538, 0x80D89578] +data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c: + .data: [0x80D89578, 0x80D89AD8] +data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c: + .data: [0x80D89AD8, 0x80D89B18] +data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c: + .data: [0x80D89B18, 0x80D8A030] +data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c: + .data: [0x80D8A030, 0x80D8A040] +data/field/bg/acre/grd_s_r1_1/grd_s_r1_1.c: + .data: [0x80D8A040, 0x80D8AE28] +data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c: + .data: [0x80D8AE28, 0x80D8AE38] +data/field/bg/acre/grd_s_r1_2/grd_s_r1_2.c: + .data: [0x80D8AE38, 0x80D8BD60] +data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c: + .data: [0x80D8BD60, 0x80D8BD70] +data/field/bg/acre/grd_s_r1_3/grd_s_r1_3.c: + .data: [0x80D8BD70, 0x80D8CD90] +data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c: + .data: [0x80D8CD90, 0x80D8CDA0] +data/field/bg/acre/grd_s_r1_4/grd_s_r1_4.c: + .data: [0x80D8CDA0, 0x80D8DAA8] +data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c: + .data: [0x80D8DAA8, 0x80D8DAB8] +data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c: + .data: [0x80D8DAB8, 0x80D8EAE0] +data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c: + .data: [0x80D8EAE0, 0x80D8EAF0] +data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c: + .data: [0x80D8EAF0, 0x80D8FF20] +data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c: + .data: [0x80D8FF20, 0x80D8FF30] +data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c: + .data: [0x80D8FF30, 0x80D91210] +data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c: + .data: [0x80D91210, 0x80D91220] +data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c: + .data: [0x80D91220, 0x80D924B0] +data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c: + .data: [0x80D924B0, 0x80D924C0] +data/field/bg/acre/grd_s_r2_1/grd_s_r2_1.c: + .data: [0x80D924C0, 0x80D932D8] +data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c: + .data: [0x80D932D8, 0x80D932E8] +data/field/bg/acre/grd_s_r2_2/grd_s_r2_2.c: + .data: [0x80D932E8, 0x80D94138] +data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c: + .data: [0x80D94138, 0x80D94148] +data/field/bg/acre/grd_s_r2_3/grd_s_r2_3.c: + .data: [0x80D94148, 0x80D951A8] +data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c: + .data: [0x80D951A8, 0x80D951B8] +data/field/bg/acre/grd_s_r2_4/grd_s_r2_4.c: + .data: [0x80D951B8, 0x80D961C0] +data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c: + .data: [0x80D961C0, 0x80D961D0] +data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c: + .data: [0x80D961D0, 0x80D97800] +data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c: + .data: [0x80D97800, 0x80D97810] +data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c: + .data: [0x80D97810, 0x80D98B68] +data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c: + .data: [0x80D98B68, 0x80D98B78] +data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c: + .data: [0x80D98B78, 0x80D9A060] +data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c: + .data: [0x80D9A060, 0x80D9A070] +data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c: + .data: [0x80D9A070, 0x80D9B8D0] +data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c: + .data: [0x80D9B8D0, 0x80D9B8E0] +data/field/bg/acre/grd_s_r3_1/grd_s_r3_1.c: + .data: [0x80D9B8E0, 0x80D9C978] +data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c: + .data: [0x80D9C978, 0x80D9C988] +data/field/bg/acre/grd_s_r3_2/grd_s_r3_2.c: + .data: [0x80D9C988, 0x80D9D878] +data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c: + .data: [0x80D9D878, 0x80D9D888] +data/field/bg/acre/grd_s_r3_3/grd_s_r3_3.c: + .data: [0x80D9D888, 0x80D9E7C0] +data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c: + .data: [0x80D9E7C0, 0x80D9E7D0] +data/field/bg/acre/grd_s_r3_4/grd_s_r3_4.c: + .data: [0x80D9E7D0, 0x80D9F620] +data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c: + .data: [0x80D9F620, 0x80D9F630] +data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c: + .data: [0x80D9F630, 0x80DA0818] +data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c: + .data: [0x80DA0818, 0x80DA0828] +data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c: + .data: [0x80DA0828, 0x80DA1D40] +data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c: + .data: [0x80DA1D40, 0x80DA1D50] +data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c: + .data: [0x80DA1D50, 0x80DA3170] +data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c: + .data: [0x80DA3170, 0x80DA3180] +data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c: + .data: [0x80DA3180, 0x80DA4820] +data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c: + .data: [0x80DA4820, 0x80DA4830] +data/field/bg/acre/grd_s_r4_1/grd_s_r4_1.c: + .data: [0x80DA4830, 0x80DA5758] +data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c: + .data: [0x80DA5758, 0x80DA5768] +data/field/bg/acre/grd_s_r4_2/grd_s_r4_2.c: + .data: [0x80DA5768, 0x80DA66D0] +data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c: + .data: [0x80DA66D0, 0x80DA66E0] +data/field/bg/acre/grd_s_r4_3/grd_s_r4_3.c: + .data: [0x80DA66E0, 0x80DA74F8] +data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c: + .data: [0x80DA74F8, 0x80DA7508] +data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c: + .data: [0x80DA7508, 0x80DA81F8] +data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c: + .data: [0x80DA81F8, 0x80DA8208] +data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c: + .data: [0x80DA8208, 0x80DA93D8] +data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c: + .data: [0x80DA93D8, 0x80DA93E8] +data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c: + .data: [0x80DA93E8, 0x80DAA928] +data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c: + .data: [0x80DAA928, 0x80DAA938] +data/field/bg/acre/grd_s_r5_1/grd_s_r5_1.c: + .data: [0x80DAA938, 0x80DAB920] +data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c: + .data: [0x80DAB920, 0x80DAB930] +data/field/bg/acre/grd_s_r5_2/grd_s_r5_2.c: + .data: [0x80DAB930, 0x80DACA10] +data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c: + .data: [0x80DACA10, 0x80DACA20] +data/field/bg/acre/grd_s_r5_3/grd_s_r5_3.c: + .data: [0x80DACA20, 0x80DADAC8] +data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c: + .data: [0x80DADAC8, 0x80DADAD8] +data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c: + .data: [0x80DADAD8, 0x80DAED98] +data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c: + .data: [0x80DAED98, 0x80DAEDA8] +data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c: + .data: [0x80DAEDA8, 0x80DB00A0] +data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c: + .data: [0x80DB00A0, 0x80DB00B0] +data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c: + .data: [0x80DB00B0, 0x80DB1530] +data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c: + .data: [0x80DB1530, 0x80DB1540] +data/field/bg/acre/grd_s_r6_1/grd_s_r6_1.c: + .data: [0x80DB1540, 0x80DB2258] +data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c: + .data: [0x80DB2258, 0x80DB2268] +data/field/bg/acre/grd_s_r6_2/grd_s_r6_2.c: + .data: [0x80DB2268, 0x80DB2FE8] +data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c: + .data: [0x80DB2FE8, 0x80DB2FF8] +data/field/bg/acre/grd_s_r6_3/grd_s_r6_3.c: + .data: [0x80DB2FF8, 0x80DB3D60] +data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c: + .data: [0x80DB3D60, 0x80DB3D70] +data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c: + .data: [0x80DB3D70, 0x80DB4BD8] +data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c: + .data: [0x80DB4BD8, 0x80DB4BE8] +data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c: + .data: [0x80DB4BE8, 0x80DB6128] +data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c: + .data: [0x80DB6128, 0x80DB6138] +data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c: + .data: [0x80DB6138, 0x80DB77A8] +data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c: + .data: [0x80DB77A8, 0x80DB77B8] +data/field/bg/acre/grd_s_r7_1/grd_s_r7_1.c: + .data: [0x80DB77B8, 0x80DB86A0] +data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c: + .data: [0x80DB86A0, 0x80DB86B0] +data/field/bg/acre/grd_s_r7_2/grd_s_r7_2.c: + .data: [0x80DB86B0, 0x80DB94B0] +data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c: + .data: [0x80DB94B0, 0x80DB94C0] +data/field/bg/acre/grd_s_r7_3/grd_s_r7_3.c: + .data: [0x80DB94C0, 0x80DBA258] +data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c: + .data: [0x80DBA258, 0x80DBA268] +data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c: + .data: [0x80DBA268, 0x80DBB218] +data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c: + .data: [0x80DBB218, 0x80DBB228] +data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c: + .data: [0x80DBB228, 0x80DBC7C0] +data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c: + .data: [0x80DBC7C0, 0x80DBC7D0] +data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c: + .data: [0x80DBC7D0, 0x80DBDBE8] +data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c: + .data: [0x80DBDBE8, 0x80DBDBF8] +data/field/bg/acre/grd_s_t_1/grd_s_t_1.c: + .data: [0x80DBDBF8, 0x80DBE858] +data/field/bg/acre/grd_s_t_10/grd_s_t_10.c: + .data: [0x80DBE858, 0x80DBF8F8] +data/field/bg/acre/grd_s_t_2/grd_s_t_2.c: + .data: [0x80DBF8F8, 0x80DC0808] +data/field/bg/acre/grd_s_t_3/grd_s_t_3.c: + .data: [0x80DC0808, 0x80DC1368] +data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c: + .data: [0x80DC1368, 0x80DC1378] +data/field/bg/acre/grd_s_t_4/grd_s_t_4.c: + .data: [0x80DC1378, 0x80DC24F0] +data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c: + .data: [0x80DC24F0, 0x80DC2500] +data/field/bg/acre/grd_s_t_5/grd_s_t_5.c: + .data: [0x80DC2500, 0x80DC3770] +data/field/bg/acre/grd_s_t_6/grd_s_t_6.c: + .data: [0x80DC3770, 0x80DC4B78] +data/field/bg/acre/grd_s_t_7/grd_s_t_7.c: + .data: [0x80DC4B78, 0x80DC5F48] +data/field/bg/acre/grd_s_t_8/grd_s_t_8.c: + .data: [0x80DC5F48, 0x80DC6DA8] +data/field/bg/acre/grd_s_t_9/grd_s_t_9.c: + .data: [0x80DC6DA8, 0x80DC7C88] +data/field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c: + .data: [0x80DC7C88, 0x80DC8918] +data/field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c: + .data: [0x80DC8918, 0x80DC9568] +data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c: + .data: [0x80DC9568, 0x80DC9578] +data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c: + .data: [0x80DC9578, 0x80DCA6D0] +data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c: + .data: [0x80DCA6D0, 0x80DCA6E0] +data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c: + .data: [0x80DCA6E0, 0x80DCB8D8] +data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c: + .data: [0x80DCB8D8, 0x80DCB8E8] +data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c: + .data: [0x80DCB8E8, 0x80DCCD68] +data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c: + .data: [0x80DCCD68, 0x80DCCD78] +data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c: + .data: [0x80DCCD78, 0x80DCE220] +data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c: + .data: [0x80DCE220, 0x80DCE230] +data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c: + .data: [0x80DCE230, 0x80DCF578] +data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c: + .data: [0x80DCF578, 0x80DCF588] +data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c: + .data: [0x80DCF588, 0x80DD0A38] +data/field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c: + .data: [0x80DD0A38, 0x80DD1668] +data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c: + .data: [0x80DD1668, 0x80DD1678] +data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c: + .data: [0x80DD1678, 0x80DD2610] +data/field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c: + .data: [0x80DD2610, 0x80DD3270] +data/field/bg/acre/grd_s_t_st1_1/grd_s_t_st1_1.c: + .data: [0x80DD3270, 0x80DD40F0] +data/field/bg/acre/grd_s_t_st1_2/grd_s_t_st1_2.c: + .data: [0x80DD40F0, 0x80DD5280] +data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c: + .data: [0x80DD5280, 0x80DD61A0] +data/field/bg/acre/rom_toudai/rom_toudai.c: + .data: [0x80F08520, 0x80F0B020] + +# map submenu +data/submenu/map/kan_tizu.c: + .data: [0x80F0B020, 0x80F11C20] +data/submenu/map/kan_tizu2.c: + .data: [0x80F11C20, 0x80F13A20] +data/field/bg/acre/rom_museum1/rom_museum1.c: + .data: [0x80F13AA0, 0x80F19D68] +data/field/bg/acre/rom_museum5/rom_museum5.c: + .data: [0x80F19DC0, 0x80F1CCA0] +data/field/bg/acre/rom_museum2/rom_museum2.c: + .data: [0x80F1D5C0, 0x80F20B58] +data/field/bg/acre/rom_museum3/rom_museum3.c: + .data: [0x80F23E40, 0x80F27E18] +data/field/bg/acre/rom_tailor/rom_tailor.c: + .data: [0x80F29260, 0x80F31FB0] +data/field/bg/acre/myr_etc/myr_etc.c: + .data: [0x80F84780, 0x80F85720] +data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c: + .data: [0x80F85720, 0x80F85740] +data/field/bg/acre/grd_player_select/grd_player_select.c: + .data: [0x80F85740, 0x80F86FA0] +data/field/bg/acre/police_indoor/police_indoor.c: + .data: [0x80F86FA0, 0x80F8C2C8] data/field/bg/rail_pal.c: .data: [0x80F8C2C8, 0x80F8C460] +data/field/bg/acre/rom_shop4_1/rom_shop4_1.c: + .data: [0x80F9FF80, 0x80FA6400] +data/field/bg/acre/rom_shop4_fuku/rom_shop4_fuku.c: + .data: [0x80FA6400, 0x80FACE20] +data/field/bg/acre/rom_tent/rom_tent.c: + .data: [0x811007A0, 0x81104FE0] +data/field/bg/acre/room01/room01.c: + .data: [0x81104FE0, 0x81106C68] +data/field/bg/acre/rom_train_in/rom_train_in.c: + .data: [0x81106D40, 0x8110CE00] +data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c: + .data: [0x8110F600, 0x8110F620] +data/field/bg/acre/rom_uranai/rom_uranai.c: + .data: [0x8110F620, 0x81115868] m_bg_tex.c: .bss: [0x8125AC80, 0x81263080] sys_stacks.c: diff --git a/config/symbols.yml b/config/symbols.yml index a9cf3013..328d60da 100644 --- a/config/symbols.yml +++ b/config/symbols.yml @@ -2633,7 +2633,7 @@ global: 0x8009ae80: _restfpr_27 0x8009ae84: _restfpr_28 0x8009ae88: _restfpr_29 - 0x8009ae98: __save_gpr + # 0x8009ae98: __save_gpr 0x8009ae98: _savegpr_14 0x8009ae9c: _savegpr_15 0x8009aea0: _savegpr_16 @@ -2650,7 +2650,7 @@ global: 0x8009aecc: _savegpr_27 0x8009aed0: _savegpr_28 0x8009aed4: _savegpr_29 - 0x8009aee4: __restore_gpr + # 0x8009aee4: __restore_gpr 0x8009aee4: _restgpr_14 0x8009aee8: _restgpr_15 0x8009aeec: _restgpr_16 @@ -3026,6 +3026,11 @@ global: 0x800c30c0: logo_nin_v 0x800c3100: logo_ninT_model 0x800c3140: nintendo_hi_0 + 0x800cca40: AudioseqHeaderStart + 0x800cd9e0: AudiobankHeaderStart + 0x800ce3e0: AudiowaveHeaderStart + 0x800ce450: AudiodataHeaderStart + 0x800ce490: AudiomapHeaderStart 0x800ce880: LEN_TABLE 0x800ce8a0: NOISE_FREQ_TABLE 0x800ce8e0: sbuffer @@ -3498,6 +3503,7 @@ global: 0x80217bac: write_pointer 0x80217bb0: buffer_remain 0x80217bb4: _STOP + 0x80217bc0: sou_now_bgm_handle 0x80217bc4: SOU_ONGEN_AREA1 0x80217bc8: SOU_ONGEN_AREA2 0x80217bcc: sou_md_bgm_boost_pasent @@ -3610,6 +3616,8 @@ global: 0x802182e8: bootsound_ptr 0x802182ec: bootsound_size 0x802182f0: sou_now_spec + 0x802182f4: sou_scene_mode + 0x802182f5: sou_chime_status 0x802182f8: fatalErrorCallback 0x80218300: sou_last_sys_trg_num 0x80218304: sou_kazaguruma_speed @@ -47255,6 +47263,7 @@ global: 0x80FAB1A0: rom_shop4_fuku_v 0x80FAC8C0: rom_shop4_fuku_modelT 0x80FAC928: rom_shop4_fuku_model + 0x80FACE20: rom_shop4_1_floor_tex_pal 0x80FACE40: rom_shop4_2_stair_tex_pal 0x80FACE80: rom_shop4_2_wall_tex_pal 0x80FACEA0: rom_shop4_2_sign01_tex_pal @@ -52910,294 +52919,294 @@ src/static/OSResetSW.c: #src/main.c: # 0x80407CB9: main src/ac_quest_talk_island.c: - 0x8048D769: aQMgr_init_normal_info - 0x8048D7A5: aQMgr_set_number_free_str - 0x8048D809: aQMgr_set_number_item_str - 0x8048D871: aQMgr_set_number_free_str_add_gatu - 0x8048D8FD: aQMgr_set_number_free_str_add_nichi - 0x8048D989: aQMgr_normal_set_free_str - 0x8048D9F1: aQMgr_set_calendar_free_str - 0x8048DA91: aQMgr_get_rnd_no_cut_10 - 0x8048DBBD: aQMgr_get_possession_ftr_cpt_wl_rnd - 0x8048DD21: aQMgr_get_possession_item_rnd - 0x8048E295: aQMgr_order_decide_trade_common_item - 0x8048E469: aQMgr_order_decide_trade_common_pay - 0x8048E49D: aQMgr_order_decide_trade_common - 0x8048E4E9: aQMgr_trade_give_item - 0x8048E5A9: aQMgr_trade_take_item - 0x8048E631: aQMgr_trade_take_money - 0x8048E665: aQMgr_trade_give_money - 0x8048E749: aQMgr_set_give_and_take_mode_GIVE - 0x8048E7F1: aQMgr_set_give_item_and_take_money_mode_GIVE - 0x8048E855: aQMgr_set_give_money_and_take_item_mode_GIVE - 0x8048E8E5: aQMgr_set_give_money_and_take_item_mode_TAKE - 0x8048E941: aQMgr_set_give_and_take_mode_TAKE - 0x8048E9C5: aQMgr_order_change_roof_color - 0x8048EA6D: aQMgr_order_change_gobi - 0x8048EAB5: aQMgr_order_cancel_remove - 0x8048EAF5: aQMgr_control_animal_info - 0x8048EB59: aQMgr_order_decide_trade_1 - 0x8048EBA1: aQMgr_order_decide_trade_2 - 0x8048EBE9: aQMgr_order_decide_trade_3 - 0x8048EC45: aQMgr_order_decide_trade_4 - 0x8048ECA9: aQMgr_order_decide_trade_5 - 0x8048ECF1: aQMgr_order_decide_trade_6 - 0x8048ED39: aQMgr_order_decide_trade_7 - 0x8048ED81: aQMgr_order_decide_trade_8 - 0x8048EDC9: aQMgr_order_decide_trade_9 - 0x8048EE25: aQMgr_order_decide_trade_10 - 0x8048EE89: aQMgr_order_decide_trade_11 - 0x8048EED1: aQMgr_order_decide_trade_12 - 0x8048EF19: aQMgr_order_decide_trade_13 - 0x8048EF61: aQMgr_order_decide_trade_14 - 0x8048EF8D: aQMgr_order_decide_trade_15 - 0x8048EFB9: aQMgr_order_decide_trade_16 - 0x8048EFE5: aQMgr_order_decide_trade_17 - 0x8048F511: aQMgr_order_decide_trade - 0x8048F559: aQMgr_order_move_trade_no_term - 0x8048F5E5: aQMgr_order_move_trade_1 - 0x8048F609: aQMgr_order_move_trade_2 - 0x8048F62D: aQMgr_order_move_trade_3 - 0x8048F651: aQMgr_order_move_trade_4 - 0x8048F675: aQMgr_order_move_trade_5 - 0x8048F699: aQMgr_order_move_trade_6 - 0x8048F6BD: aQMgr_order_move_trade_7 - 0x8048F6E1: aQMgr_order_move_trade_8 - 0x8048F705: aQMgr_order_move_trade_9 - 0x8048F725: aQMgr_order_move_trade_10 - 0x8048F745: aQMgr_order_move_trade_11 - 0x8048F765: aQMgr_order_move_trade_12 - 0x8048F785: aQMgr_order_move_trade_13 - 0x8048F7A5: aQMgr_order_move_trade_14 - 0x8048F7D5: aQMgr_order_move_trade_15 - 0x8048F805: aQMgr_order_move_trade_16 - 0x8048F835: aQMgr_order_move_trade_17 - 0x8048F865: aQMgr_order_move_trade_18 - 0x8048F895: aQMgr_order_move_trade_19 - 0x8048F8C5: aQMgr_order_move_trade_20 - 0x8048F8F5: aQMgr_order_move_trade_21 - 0x8048F925: aQMgr_order_move_trade_22 - 0x8048FA91: aQMgr_order_trade - 0x8048FAE1: aQMgr_order_show_letter - 0x8048FB71: aQMgr_order_fluctuation_friendship - 0x8048FBB1: aQMgr_order_play_memory_melody - 0x8048FC11: aQMgr_order_set_calendar - 0x8048FC99: aQMgr_order_input_birthday - 0x8048FD31: aQMgr_set_random_string - 0x8048FDD1: aQMgr_order_set_string_1 - 0x8048FE95: aQMgr_set_random_number_item_str - 0x8048FF0D: aQMgr_order_set_string_2 - 0x8048FFC1: aQMgr_order_set_string_3 - 0x80490035: aQMgr_order_set_string_4 - 0x80490245: aQMgr_order_set_string - 0x804910E9: aQMgr_talk_normal_open_letter - 0x80491309: aQMgr_talk_normal_open_birthday - 0x80491355: aQMgr_talk_normal_open_gobi - 0x804913B1: aQMgr_talk_normal_open_msg - 0x80491401: aQMgr_talk_normal_give_item - 0x80491451: aQMgr_talk_normal_to_wait_order + 0x8048D768: aQMgr_init_normal_info + 0x8048D7A4: aQMgr_set_number_free_str + 0x8048D808: aQMgr_set_number_item_str + 0x8048D870: aQMgr_set_number_free_str_add_gatu + 0x8048D8FC: aQMgr_set_number_free_str_add_nichi + 0x8048D988: aQMgr_normal_set_free_str + 0x8048D9F0: aQMgr_set_calendar_free_str + 0x8048DA90: aQMgr_get_rnd_no_cut_10 + 0x8048DBBC: aQMgr_get_possession_ftr_cpt_wl_rnd + 0x8048DD20: aQMgr_get_possession_item_rnd + 0x8048E294: aQMgr_order_decide_trade_common_item + 0x8048E468: aQMgr_order_decide_trade_common_pay + 0x8048E49C: aQMgr_order_decide_trade_common + 0x8048E4E8: aQMgr_trade_give_item + 0x8048E5A8: aQMgr_trade_take_item + 0x8048E630: aQMgr_trade_take_money + 0x8048E664: aQMgr_trade_give_money + 0x8048E748: aQMgr_set_give_and_take_mode_GIVE + 0x8048E7F0: aQMgr_set_give_item_and_take_money_mode_GIVE + 0x8048E854: aQMgr_set_give_money_and_take_item_mode_GIVE + 0x8048E8E4: aQMgr_set_give_money_and_take_item_mode_TAKE + 0x8048E940: aQMgr_set_give_and_take_mode_TAKE + 0x8048E9C4: aQMgr_order_change_roof_color + 0x8048EA6C: aQMgr_order_change_gobi + 0x8048EAB4: aQMgr_order_cancel_remove + 0x8048EAF4: aQMgr_control_animal_info + 0x8048EB58: aQMgr_order_decide_trade_1 + 0x8048EBA0: aQMgr_order_decide_trade_2 + 0x8048EBE8: aQMgr_order_decide_trade_3 + 0x8048EC44: aQMgr_order_decide_trade_4 + 0x8048ECA8: aQMgr_order_decide_trade_5 + 0x8048ECF0: aQMgr_order_decide_trade_6 + 0x8048ED38: aQMgr_order_decide_trade_7 + 0x8048ED80: aQMgr_order_decide_trade_8 + 0x8048EDC8: aQMgr_order_decide_trade_9 + 0x8048EE24: aQMgr_order_decide_trade_10 + 0x8048EE88: aQMgr_order_decide_trade_11 + 0x8048EED0: aQMgr_order_decide_trade_12 + 0x8048EF18: aQMgr_order_decide_trade_13 + 0x8048EF60: aQMgr_order_decide_trade_14 + 0x8048EF8C: aQMgr_order_decide_trade_15 + 0x8048EFB8: aQMgr_order_decide_trade_16 + 0x8048EFE4: aQMgr_order_decide_trade_17 + 0x8048F510: aQMgr_order_decide_trade + 0x8048F558: aQMgr_order_move_trade_no_term + 0x8048F5E4: aQMgr_order_move_trade_1 + 0x8048F608: aQMgr_order_move_trade_2 + 0x8048F62C: aQMgr_order_move_trade_3 + 0x8048F650: aQMgr_order_move_trade_4 + 0x8048F674: aQMgr_order_move_trade_5 + 0x8048F698: aQMgr_order_move_trade_6 + 0x8048F6BC: aQMgr_order_move_trade_7 + 0x8048F6E0: aQMgr_order_move_trade_8 + 0x8048F704: aQMgr_order_move_trade_9 + 0x8048F724: aQMgr_order_move_trade_10 + 0x8048F744: aQMgr_order_move_trade_11 + 0x8048F764: aQMgr_order_move_trade_12 + 0x8048F784: aQMgr_order_move_trade_13 + 0x8048F7A4: aQMgr_order_move_trade_14 + 0x8048F7D4: aQMgr_order_move_trade_15 + 0x8048F804: aQMgr_order_move_trade_16 + 0x8048F834: aQMgr_order_move_trade_17 + 0x8048F864: aQMgr_order_move_trade_18 + 0x8048F894: aQMgr_order_move_trade_19 + 0x8048F8C4: aQMgr_order_move_trade_20 + 0x8048F8F4: aQMgr_order_move_trade_21 + 0x8048F924: aQMgr_order_move_trade_22 + 0x8048FA90: aQMgr_order_trade + 0x8048FAE0: aQMgr_order_show_letter + 0x8048FB70: aQMgr_order_fluctuation_friendship + 0x8048FBB0: aQMgr_order_play_memory_melody + 0x8048FC10: aQMgr_order_set_calendar + 0x8048FC98: aQMgr_order_input_birthday + 0x8048FD30: aQMgr_set_random_string + 0x8048FDD0: aQMgr_order_set_string_1 + 0x8048FE94: aQMgr_set_random_number_item_str + 0x8048FF0C: aQMgr_order_set_string_2 + 0x8048FFC0: aQMgr_order_set_string_3 + 0x80490034: aQMgr_order_set_string_4 + 0x80490244: aQMgr_order_set_string + 0x804910E8: aQMgr_talk_normal_open_letter + 0x80491308: aQMgr_talk_normal_open_birthday + 0x80491354: aQMgr_talk_normal_open_gobi + 0x804913B0: aQMgr_talk_normal_open_msg + 0x80491400: aQMgr_talk_normal_give_item + 0x80491450: aQMgr_talk_normal_to_wait_order 0x8068B310: l_quest_category_0 0x8068B31C: l_quest_category_1 0x8068B424: constellation_table 0x812FCAA8: l_aqmgr_str 0x812FCAB8: l_normal_info src/ac_quest_talk_normal_init.c: - 0x804915F5: aQMgr_init_normal_info - 0x80491631: aQMgr_set_number_free_str - 0x80491695: aQMgr_set_number_item_str - 0x80491775: aQMgr_set_number_free_str_add_gatu - 0x80491801: aQMgr_set_number_free_str_add_nichi - 0x8049293D: aQMgr_normal_set_free_str - 0x80492A61: aQMgr_set_calendar_free_str - 0x80492B15: aQMgr_get_rnd_no_cut_10 - 0x80492B9D: aQMgr_get_possession_ftr_cpt_wl_rnd - 0x80492D11: aQMgr_get_possession_item_rnd - 0x80492E35: aQMgr_order_decide_trade_common_item - 0x80493065: aQMgr_order_decide_trade_common_pay - 0x80493099: aQMgr_order_decide_trade_common - 0x804930ED: aQMgr_trade_give_item - 0x8049313D: aQMgr_trade_take_item - 0x804931A1: aQMgr_trade_take_money - 0x804931D5: aQMgr_trade_give_money - 0x804932B9: aQMgr_set_give_and_take_mode_GIVE - 0x80493361: aQMgr_set_give_item_and_take_money_mode_GIVE - 0x804933C5: aQMgr_set_give_money_and_take_item_mode_GIVE - 0x80493455: aQMgr_set_give_money_and_take_item_mode_TAKE - 0x804934B1: aQMgr_set_give_and_take_mode_TAKE - 0x80494461: aQMgr_order_change_roof_color - 0x80494509: aQMgr_order_change_gobi - 0x80494551: aQMgr_order_cancel_remove - 0x80494591: aQMgr_control_animal_info - 0x804945F5: aQMgr_order_decide_trade_1 - 0x80494645: aQMgr_order_decide_trade_2 - 0x80494695: aQMgr_order_decide_trade_3 - 0x804946F5: aQMgr_order_decide_trade_4 - 0x8049475D: aQMgr_order_decide_trade_5 - 0x804947AD: aQMgr_order_decide_trade_6 - 0x804947FD: aQMgr_order_decide_trade_7 - 0x8049484D: aQMgr_order_decide_trade_8 - 0x8049489D: aQMgr_order_decide_trade_9 - 0x804948FD: aQMgr_order_decide_trade_10 - 0x80494965: aQMgr_order_decide_trade_11 - 0x804949B5: aQMgr_order_decide_trade_12 - 0x80494A05: aQMgr_order_decide_trade_13 - 0x80494A55: aQMgr_order_decide_trade_14 - 0x80494A81: aQMgr_order_decide_trade_15 - 0x80494AAD: aQMgr_order_decide_trade_16 - 0x80494AD9: aQMgr_order_decide_trade_17 - 0x80494B05: aQMgr_order_decide_trade - 0x80494B51: aQMgr_order_move_trade_no_term - 0x80494BE5: aQMgr_order_move_trade_1 - 0x80494C09: aQMgr_order_move_trade_2 - 0x80494C2D: aQMgr_order_move_trade_3 - 0x80494C51: aQMgr_order_move_trade_4 - 0x80494C75: aQMgr_order_move_trade_5 - 0x80494C99: aQMgr_order_move_trade_6 - 0x80494CBD: aQMgr_order_move_trade_7 - 0x80494CE1: aQMgr_order_move_trade_8 - 0x80494D05: aQMgr_order_move_trade_9 - 0x80494D25: aQMgr_order_move_trade_10 - 0x80494D45: aQMgr_order_move_trade_11 - 0x80494D65: aQMgr_order_move_trade_12 - 0x80494D85: aQMgr_order_move_trade_13 - 0x80494DA5: aQMgr_order_move_trade_14 - 0x80494DD5: aQMgr_order_move_trade_15 - 0x80494E05: aQMgr_order_move_trade_16 - 0x80494E35: aQMgr_order_move_trade_17 - 0x80494E65: aQMgr_order_move_trade_18 - 0x80494E95: aQMgr_order_move_trade_19 - 0x80494EC5: aQMgr_order_move_trade_20 - 0x80494EF5: aQMgr_order_move_trade_21 - 0x80494F25: aQMgr_order_move_trade_22 - 0x80494F45: aQMgr_order_trade - 0x80494F91: aQMgr_order_show_letter - 0x80494FD9: aQMgr_order_fluctuation_friendship - 0x80495019: aQMgr_order_play_memory_melody - 0x80495079: aQMgr_order_set_calendar - 0x80495101: aQMgr_order_input_birthday - 0x80495149: aQMgr_set_random_string - 0x804951E9: aQMgr_order_set_string_1 - 0x804952AD: aQMgr_set_random_number_item_str - 0x80495325: aQMgr_order_set_string_2 - 0x80495401: aQMgr_order_set_string_3 - 0x80495475: aQMgr_order_set_string_4 - 0x80495685: aQMgr_order_set_string - 0x80495975: aQMgr_talk_normal_open_letter - 0x80495A69: aQMgr_talk_normal_open_birthday - 0x80495AB5: aQMgr_talk_normal_open_gobi - 0x80495B19: aQMgr_talk_normal_open_msg - 0x80495B69: aQMgr_talk_normal_give_item - 0x80495BB9: aQMgr_talk_normal_to_wait_order + 0x804915F4: aQMgr_init_normal_info + 0x80491630: aQMgr_set_number_free_str + 0x80491694: aQMgr_set_number_item_str + 0x80491774: aQMgr_set_number_free_str_add_gatu + 0x80491800: aQMgr_set_number_free_str_add_nichi + 0x8049293C: aQMgr_normal_set_free_str + 0x80492A60: aQMgr_set_calendar_free_str + 0x80492B14: aQMgr_get_rnd_no_cut_10 + 0x80492B9C: aQMgr_get_possession_ftr_cpt_wl_rnd + 0x80492D10: aQMgr_get_possession_item_rnd + 0x80492E34: aQMgr_order_decide_trade_common_item + 0x80493064: aQMgr_order_decide_trade_common_pay + 0x80493098: aQMgr_order_decide_trade_common + 0x804930EC: aQMgr_trade_give_item + 0x8049313C: aQMgr_trade_take_item + 0x804931A0: aQMgr_trade_take_money + 0x804931D4: aQMgr_trade_give_money + 0x804932B8: aQMgr_set_give_and_take_mode_GIVE + 0x80493360: aQMgr_set_give_item_and_take_money_mode_GIVE + 0x804933C4: aQMgr_set_give_money_and_take_item_mode_GIVE + 0x80493454: aQMgr_set_give_money_and_take_item_mode_TAKE + 0x804934B0: aQMgr_set_give_and_take_mode_TAKE + 0x80494460: aQMgr_order_change_roof_color + 0x80494508: aQMgr_order_change_gobi + 0x80494550: aQMgr_order_cancel_remove + 0x80494590: aQMgr_control_animal_info + 0x804945F4: aQMgr_order_decide_trade_1 + 0x80494644: aQMgr_order_decide_trade_2 + 0x80494694: aQMgr_order_decide_trade_3 + 0x804946F4: aQMgr_order_decide_trade_4 + 0x8049475C: aQMgr_order_decide_trade_5 + 0x804947AC: aQMgr_order_decide_trade_6 + 0x804947FC: aQMgr_order_decide_trade_7 + 0x8049484C: aQMgr_order_decide_trade_8 + 0x8049489C: aQMgr_order_decide_trade_9 + 0x804948FC: aQMgr_order_decide_trade_10 + 0x80494964: aQMgr_order_decide_trade_11 + 0x804949B4: aQMgr_order_decide_trade_12 + 0x80494A04: aQMgr_order_decide_trade_13 + 0x80494A54: aQMgr_order_decide_trade_14 + 0x80494A80: aQMgr_order_decide_trade_15 + 0x80494AAC: aQMgr_order_decide_trade_16 + 0x80494AD8: aQMgr_order_decide_trade_17 + 0x80494B04: aQMgr_order_decide_trade + 0x80494B50: aQMgr_order_move_trade_no_term + 0x80494BE4: aQMgr_order_move_trade_1 + 0x80494C08: aQMgr_order_move_trade_2 + 0x80494C2C: aQMgr_order_move_trade_3 + 0x80494C50: aQMgr_order_move_trade_4 + 0x80494C74: aQMgr_order_move_trade_5 + 0x80494C98: aQMgr_order_move_trade_6 + 0x80494CBC: aQMgr_order_move_trade_7 + 0x80494CE0: aQMgr_order_move_trade_8 + 0x80494D04: aQMgr_order_move_trade_9 + 0x80494D24: aQMgr_order_move_trade_10 + 0x80494D44: aQMgr_order_move_trade_11 + 0x80494D64: aQMgr_order_move_trade_12 + 0x80494D84: aQMgr_order_move_trade_13 + 0x80494DA4: aQMgr_order_move_trade_14 + 0x80494DD4: aQMgr_order_move_trade_15 + 0x80494E04: aQMgr_order_move_trade_16 + 0x80494E34: aQMgr_order_move_trade_17 + 0x80494E64: aQMgr_order_move_trade_18 + 0x80494E94: aQMgr_order_move_trade_19 + 0x80494EC4: aQMgr_order_move_trade_20 + 0x80494EF4: aQMgr_order_move_trade_21 + 0x80494F24: aQMgr_order_move_trade_22 + 0x80494F44: aQMgr_order_trade + 0x80494F90: aQMgr_order_show_letter + 0x80494FD8: aQMgr_order_fluctuation_friendship + 0x80495018: aQMgr_order_play_memory_melody + 0x80495078: aQMgr_order_set_calendar + 0x80495100: aQMgr_order_input_birthday + 0x80495148: aQMgr_set_random_string + 0x804951E8: aQMgr_order_set_string_1 + 0x804952AC: aQMgr_set_random_number_item_str + 0x80495324: aQMgr_order_set_string_2 + 0x80495400: aQMgr_order_set_string_3 + 0x80495474: aQMgr_order_set_string_4 + 0x80495684: aQMgr_order_set_string + 0x80495974: aQMgr_talk_normal_open_letter + 0x80495A68: aQMgr_talk_normal_open_birthday + 0x80495AB4: aQMgr_talk_normal_open_gobi + 0x80495B18: aQMgr_talk_normal_open_msg + 0x80495B68: aQMgr_talk_normal_give_item + 0x80495BB8: aQMgr_talk_normal_to_wait_order 0x8068B748: l_quest_category_0 0x8068B754: l_quest_category_1 0x8068B9F4: constellation_table 0x812FCB5C: l_aqmgr_str 0x812FCB6C: l_normal_info src/bg_cherry_item.c: - 0x804AFE75: bIT_copy_vtx - 0x804AFEC9: bIT_draw_shadow - 0x804B003D: bIT_clip_ct - 0x804B01A1: bIT_clip_dt - 0x804B01E9: bit_draw_ta_set - 0x804B0239: bit_draw_ta_clr - 0x804B0285: bIT_individual_draw_check - 0x804B02C1: mFI_search_unit_around_high - 0x804B0421: bIT_actor_fade_entry - 0x804B0555: bIT_actor_fade_move - 0x804B05A1: bIT_actor_fade_draw - 0x804B0639: bIT_actor_ten_coin_entryR - 0x804B0A29: bIT_actor_ten_coin_entry - 0x804B0AA9: bg_item_ten_coin_entry_ex - 0x804B0AED: bIT_actor_ten_coin_move - 0x804B0C15: bIT_actor_ten_coin_draw_af - 0x804B0C59: bIT_actor_ten_coin_draw_bf - 0x804B0CB9: bIT_actor_ten_coin_draw - 0x804B0EB9: bIT_actor_ten_coin_destruct - 0x804B0F41: bg_item_common_palload - 0x804B0F85: bIT_actor_rand_pos_get_blk_correct - 0x804B0FB9: bIT_actor_rand_pos_get_plus - 0x804B1099: bIT_actor_rand_pos_get - 0x804B1149: bIT_actor_shin_effect_entry - 0x804B1291: bIT_actor_shin_effect_check - 0x804B12CD: bIT_actor_shin_effect_move - 0x804B1475: bIT_actor_drop_move_plant_destruct - 0x804B14E1: bIT_common_moneytree_check - 0x804B159D: bIT_common_bury_after - 0x804B178D: bIT_common_hole_throw - 0x804B193D: bIT_actor_drop_move_fly_destruct - 0x804B1A09: func_calc_spec_drop_time - 0x804B1A51: bIT_actor_drop_entry_main - 0x804B1CD9: fruit_set - 0x804B22E5: bIT_fruit_set - 0x804B230D: drop_fruit - 0x804B24FD: BIT_actor_tree_cutcount_check - 0x804B25CD: bg_item_tree_fruit_drop - 0x804B2749: bIT_actor_dig_hole_effect_entry - 0x804B2811: bIT_actor_bury_hole_effect_entry - 0x804B2865: bIT_actor_hole_effect_entry - 0x804B2AB1: bIT_actor_hole_effect_destruct - 0x804B2B9D: bIT_actor_hole_effect_move - 0x804B2D6D: bIT_actor_hole_effect_draw - 0x804B2DE5: bIT_actor_player_drop_entry - 0x804B2FC9: bIT_drop_entry_v1 - 0x804B310D: bIT_actor_fly_entry - 0x804B3325: bIT_actor_drop_entry - 0x804B349D: bIT_actor_drop_move - 0x804B356D: bIT_actor_drop_destruct - 0x804B35E9: bIT_actor_drop_move_plant - 0x804B3821: bIT_actor_drop_move_bury_destruct - 0x804B3841: bIT_actor_drop_move_bury - 0x804B388D: bIT_actor_drop_move_bury_change - 0x804B390D: bIT_actor_drop_wait_bee - 0x804B3979: bIT_actor_drop_move_wait - 0x804B39E1: bIT_actor_drop_move_fly - 0x804B3F71: bIT_actor_drop_draw - 0x804B3FE9: bIT_actor_drop_draw_nrm - 0x804B408D: bit_cmn_s_single_draw_loop_type1 - 0x804B4149: bit_cmn_single_draw_loop_type1 - 0x804B42B9: bit_cmn_single_draw_item_shadow - 0x804B43CD: bit_cmn_single_draw_BT_shadow - 0x804B44F1: fg_no2fg_type - 0x804B46B5: bit_cmn_single_drawS_shadow - 0x804B478D: bit_cmn_single_draw_item_body - 0x804B4845: bit_cmn_single_draw - 0x804B48ED: bit_cmn_single_draw_BT - 0x804B4AD5: bit_cmn_single_drawS - 0x804B4BAD: bIT_common_info_tbl_copy - 0x804B4BCD: bIT_common_clear_treeatr - 0x804B4C7D: m_GetCItTable_TreeTblChk - 0x804B4F85: bIT_actor_pit_entry - 0x804B5095: bIT_actor_pit_move - 0x804B53AD: bIT_actor_pit_destruct - 0x804B542D: bg_item_common_chg_BGDataR_b - 0x804B55A9: bg_item_common_chg_BGDataR - 0x804B5621: bg_item_common_outPutData - 0x804B5695: bg_item_common_classifyitemDataTable - 0x804B59DD: bg_item_common_set_draw_tbl - 0x804B5A7D: bg_shin_effect_being_check - 0x804B5C35: bg_item_common_chg_draw_tbl_perfect - 0x804B5F4D: bg_item_common_renew_draw_and_crs_data_perfect - 0x804B5FD1: bg_item_common_destruct - 0x804B6035: bg_item_common_culling_check - 0x804B6085: bg_item_common_culling_check_talk - 0x804B60F1: bg_item_common_culling_check_loop - 0x804B618D: bg_item_common_culling_check_talk_loop - 0x804B6229: bg_item_common_check_talk_tree - 0x804B6281: bg_item_common_draw_check - 0x804B6329: bg_item_common_move - 0x804B6449: bIT_actor_pit_entry_del - 0x804B64B5: bIT_actor_pit_fall - 0x804B658D: bIT_actor_pit_fall_stop - 0x804B6659: bIT_actor_pit_exit - 0x804B6705: bg_item_common_draw_loop_type1 - 0x804B67E9: bg_item_common_s_draw_loop_type1 - 0x804B68CD: bg_item_common_draw_item_body - 0x804B6949: bg_item_common_draw_item_shadow - 0x804B6A65: bg_item_common_draw_item - 0x804B6BB9: bIT_actor_pit_draw_nrm - 0x804B6C1D: bIT_actor_pit_draw - 0x804B6C9D: bg_item_common_draw - 0x804B6E59: bg_item_common_construct + 0x804AFE74: bIT_copy_vtx + 0x804AFEC8: bIT_draw_shadow + 0x804B003C: bIT_clip_ct + 0x804B01A0: bIT_clip_dt + 0x804B01E8: bit_draw_ta_set + 0x804B0238: bit_draw_ta_clr + 0x804B0284: bIT_individual_draw_check + 0x804B02C0: mFI_search_unit_around_high + 0x804B0420: bIT_actor_fade_entry + 0x804B0554: bIT_actor_fade_move + 0x804B05A0: bIT_actor_fade_draw + 0x804B0638: bIT_actor_ten_coin_entryR + 0x804B0A28: bIT_actor_ten_coin_entry + 0x804B0AA8: bg_item_ten_coin_entry_ex + 0x804B0AEC: bIT_actor_ten_coin_move + 0x804B0C14: bIT_actor_ten_coin_draw_af + 0x804B0C58: bIT_actor_ten_coin_draw_bf + 0x804B0CB8: bIT_actor_ten_coin_draw + 0x804B0EB8: bIT_actor_ten_coin_destruct + 0x804B0F40: bg_item_common_palload + 0x804B0F84: bIT_actor_rand_pos_get_blk_correct + 0x804B0FB8: bIT_actor_rand_pos_get_plus + 0x804B1098: bIT_actor_rand_pos_get + 0x804B1148: bIT_actor_shin_effect_entry + 0x804B1290: bIT_actor_shin_effect_check + 0x804B12CC: bIT_actor_shin_effect_move + 0x804B1474: bIT_actor_drop_move_plant_destruct + 0x804B14E0: bIT_common_moneytree_check + 0x804B159C: bIT_common_bury_after + 0x804B178C: bIT_common_hole_throw + 0x804B193C: bIT_actor_drop_move_fly_destruct + 0x804B1A08: func_calc_spec_drop_time + 0x804B1A50: bIT_actor_drop_entry_main + 0x804B1CD8: fruit_set + 0x804B22E4: bIT_fruit_set + 0x804B230C: drop_fruit + 0x804B24FC: BIT_actor_tree_cutcount_check + 0x804B25CC: bg_item_tree_fruit_drop + 0x804B2748: bIT_actor_dig_hole_effect_entry + 0x804B2810: bIT_actor_bury_hole_effect_entry + 0x804B2864: bIT_actor_hole_effect_entry + 0x804B2AB0: bIT_actor_hole_effect_destruct + 0x804B2B9C: bIT_actor_hole_effect_move + 0x804B2D6C: bIT_actor_hole_effect_draw + 0x804B2DE4: bIT_actor_player_drop_entry + 0x804B2FC8: bIT_drop_entry_v1 + 0x804B310C: bIT_actor_fly_entry + 0x804B3324: bIT_actor_drop_entry + 0x804B349C: bIT_actor_drop_move + 0x804B356C: bIT_actor_drop_destruct + 0x804B35E8: bIT_actor_drop_move_plant + 0x804B3820: bIT_actor_drop_move_bury_destruct + 0x804B3840: bIT_actor_drop_move_bury + 0x804B388C: bIT_actor_drop_move_bury_change + 0x804B390C: bIT_actor_drop_wait_bee + 0x804B3978: bIT_actor_drop_move_wait + 0x804B39E0: bIT_actor_drop_move_fly + 0x804B3F70: bIT_actor_drop_draw + 0x804B3FE8: bIT_actor_drop_draw_nrm + 0x804B408C: bit_cmn_s_single_draw_loop_type1 + 0x804B4148: bit_cmn_single_draw_loop_type1 + 0x804B42B8: bit_cmn_single_draw_item_shadow + 0x804B43CC: bit_cmn_single_draw_BT_shadow + 0x804B44F0: fg_no2fg_type + 0x804B46B4: bit_cmn_single_drawS_shadow + 0x804B478C: bit_cmn_single_draw_item_body + 0x804B4844: bit_cmn_single_draw + 0x804B48EC: bit_cmn_single_draw_BT + 0x804B4AD4: bit_cmn_single_drawS + 0x804B4BAC: bIT_common_info_tbl_copy + 0x804B4BCC: bIT_common_clear_treeatr + 0x804B4C7C: m_GetCItTable_TreeTblChk + 0x804B4F84: bIT_actor_pit_entry + 0x804B5094: bIT_actor_pit_move + 0x804B53AC: bIT_actor_pit_destruct + 0x804B542C: bg_item_common_chg_BGDataR_b + 0x804B55A8: bg_item_common_chg_BGDataR + 0x804B5620: bg_item_common_outPutData + 0x804B5694: bg_item_common_classifyitemDataTable + 0x804B59DC: bg_item_common_set_draw_tbl + 0x804B5A7C: bg_shin_effect_being_check + 0x804B5C34: bg_item_common_chg_draw_tbl_perfect + 0x804B5F4C: bg_item_common_renew_draw_and_crs_data_perfect + 0x804B5FD0: bg_item_common_destruct + 0x804B6034: bg_item_common_culling_check + 0x804B6084: bg_item_common_culling_check_talk + 0x804B60F0: bg_item_common_culling_check_loop + 0x804B618C: bg_item_common_culling_check_talk_loop + 0x804B6228: bg_item_common_check_talk_tree + 0x804B6280: bg_item_common_draw_check + 0x804B6328: bg_item_common_move + 0x804B6448: bIT_actor_pit_entry_del + 0x804B64B4: bIT_actor_pit_fall + 0x804B658C: bIT_actor_pit_fall_stop + 0x804B6658: bIT_actor_pit_exit + 0x804B6704: bg_item_common_draw_loop_type1 + 0x804B67E8: bg_item_common_s_draw_loop_type1 + 0x804B68CC: bg_item_common_draw_item_body + 0x804B6948: bg_item_common_draw_item_shadow + 0x804B6A64: bg_item_common_draw_item + 0x804B6BB8: bIT_actor_pit_draw_nrm + 0x804B6C1C: bIT_actor_pit_draw + 0x804B6C9C: bg_item_common_draw + 0x804B6E58: bg_item_common_construct 0x8068FC8C: pos_table 0x8068FCCC: pos_table2 0x80690828: typeData_table_dummy @@ -53591,110 +53600,110 @@ src/bg_cherry_item.c: 0x8069282C: rnd_data_z 0x80692BC8: type_data_table_p_a src/bg_item.c: - 0x804B71F9: bIT_copy_vtx - 0x804B724D: bIT_draw_shadow - 0x804B73C1: bIT_clip_ct - 0x804B7525: bIT_clip_dt - 0x804B756D: bit_draw_ta_set - 0x804B75BD: bit_draw_ta_clr - 0x804B7609: bIT_individual_draw_check - 0x804B7645: mFI_search_unit_around_high - 0x804B77A5: bIT_actor_fade_entry - 0x804B78D9: bIT_actor_fade_move - 0x804B7925: bIT_actor_fade_draw - 0x804B79BD: bIT_actor_ten_coin_entryR - 0x804B7DAD: bIT_actor_ten_coin_entry - 0x804B7E2D: bg_item_ten_coin_entry_ex - 0x804B7E71: bIT_actor_ten_coin_move - 0x804B7F99: bIT_actor_ten_coin_draw_af - 0x804B7FDD: bIT_actor_ten_coin_draw_bf - 0x804B803D: bIT_actor_ten_coin_draw - 0x804B823D: bIT_actor_ten_coin_destruct - 0x804B82C5: bg_item_common_palload - 0x804B8309: bIT_actor_rand_pos_get_blk_correct - 0x804B833D: bIT_actor_rand_pos_get_plus - 0x804B841D: bIT_actor_rand_pos_get - 0x804B84CD: bIT_actor_shin_effect_entry - 0x804B8615: bIT_actor_shin_effect_check - 0x804B8651: bIT_actor_shin_effect_move - 0x804B87F9: bIT_actor_drop_move_plant_destruct - 0x804B8865: bIT_common_moneytree_check - 0x804B8921: bIT_common_bury_after - 0x804B8B11: bIT_common_hole_throw - 0x804B8CC1: bIT_actor_drop_move_fly_destruct - 0x804B8D8D: func_calc_spec_drop_time - 0x804B8DD5: bIT_actor_drop_entry_main - 0x804B905D: fruit_set - 0x804B9669: bIT_fruit_set - 0x804B9691: drop_fruit - 0x804B9881: BIT_actor_tree_cutcount_check - 0x804B9951: bg_item_tree_fruit_drop - 0x804B9ACD: bIT_actor_dig_hole_effect_entry - 0x804B9B95: bIT_actor_bury_hole_effect_entry - 0x804B9BE9: bIT_actor_hole_effect_entry - 0x804B9E35: bIT_actor_hole_effect_destruct - 0x804B9F21: bIT_actor_hole_effect_move - 0x804BA0F1: bIT_actor_hole_effect_draw - 0x804BA169: bIT_actor_player_drop_entry - 0x804BA34D: bIT_drop_entry_v1 - 0x804BA491: bIT_actor_fly_entry - 0x804BA6A9: bIT_actor_drop_entry - 0x804BA821: bIT_actor_drop_move - 0x804BA8F1: bIT_actor_drop_destruct - 0x804BA96D: bIT_actor_drop_move_plant - 0x804BABA5: bIT_actor_drop_move_bury_destruct - 0x804BABC5: bIT_actor_drop_move_bury - 0x804BAC11: bIT_actor_drop_move_bury_change - 0x804BAC91: bIT_actor_drop_wait_bee - 0x804BACFD: bIT_actor_drop_move_wait - 0x804BAD65: bIT_actor_drop_move_fly - 0x804BB2F5: bIT_actor_drop_draw - 0x804BB36D: bIT_actor_drop_draw_nrm - 0x804BB411: bit_cmn_s_single_draw_loop_type1 - 0x804BB4CD: bit_cmn_single_draw_loop_type1 - 0x804BB63D: bit_cmn_single_draw_item_shadow - 0x804BB751: bit_cmn_single_draw_BT_shadow - 0x804BB875: fg_no2fg_type - 0x804BBA39: bit_cmn_single_drawS_shadow - 0x804BBB11: bit_cmn_single_draw_item_body - 0x804BBBC9: bit_cmn_single_draw - 0x804BBC71: bit_cmn_single_draw_BT - 0x804BBE59: bit_cmn_single_drawS - 0x804BBF31: bIT_common_info_tbl_copy - 0x804BBF51: bIT_common_clear_treeatr - 0x804BC001: m_GetCItTable_TreeTblChk - 0x804BC309: bIT_actor_pit_entry - 0x804BC419: bIT_actor_pit_move - 0x804BC731: bIT_actor_pit_destruct - 0x804BC7B1: bg_item_common_chg_BGDataR_b - 0x804BC92D: bg_item_common_chg_BGDataR - 0x804BC9A5: bg_item_common_outPutData - 0x804BCA19: bg_item_common_classifyitemDataTable - 0x804BCD61: bg_item_common_set_draw_tbl - 0x804BCE01: bg_shin_effect_being_check - 0x804BCFB9: bg_item_common_chg_draw_tbl_perfect - 0x804BD2D1: bg_item_common_renew_draw_and_crs_data_perfect - 0x804BD355: bg_item_common_destruct - 0x804BD3B9: bg_item_common_culling_check - 0x804BD409: bg_item_common_culling_check_talk - 0x804BD475: bg_item_common_culling_check_loop - 0x804BD511: bg_item_common_culling_check_talk_loop - 0x804BD5AD: bg_item_common_check_talk_tree - 0x804BD605: bg_item_common_draw_check - 0x804BD6AD: bg_item_common_move - 0x804BD7CD: bIT_actor_pit_entry_del - 0x804BD839: bIT_actor_pit_fall - 0x804BD911: bIT_actor_pit_fall_stop - 0x804BD9DD: bIT_actor_pit_exit - 0x804BDA89: bg_item_common_draw_loop_type1 - 0x804BDB6D: bg_item_common_s_draw_loop_type1 - 0x804BDC51: bg_item_common_draw_item_body - 0x804BDCCD: bg_item_common_draw_item_shadow - 0x804BDDE9: bg_item_common_draw_item - 0x804BDF3D: bIT_actor_pit_draw_nrm - 0x804BDFA1: bIT_actor_pit_draw - 0x804BE021: bg_item_common_draw - 0x804BE1DD: bg_item_common_construct + 0x804B71F8: bIT_copy_vtx + 0x804B724C: bIT_draw_shadow + 0x804B73C0: bIT_clip_ct + 0x804B7524: bIT_clip_dt + 0x804B756C: bit_draw_ta_set + 0x804B75BC: bit_draw_ta_clr + 0x804B7608: bIT_individual_draw_check + 0x804B7644: mFI_search_unit_around_high + 0x804B77A4: bIT_actor_fade_entry + 0x804B78D8: bIT_actor_fade_move + 0x804B7924: bIT_actor_fade_draw + 0x804B79BC: bIT_actor_ten_coin_entryR + 0x804B7DAC: bIT_actor_ten_coin_entry + 0x804B7E2C: bg_item_ten_coin_entry_ex + 0x804B7E70: bIT_actor_ten_coin_move + 0x804B7F98: bIT_actor_ten_coin_draw_af + 0x804B7FDC: bIT_actor_ten_coin_draw_bf + 0x804B803C: bIT_actor_ten_coin_draw + 0x804B823C: bIT_actor_ten_coin_destruct + 0x804B82C4: bg_item_common_palload + 0x804B8308: bIT_actor_rand_pos_get_blk_correct + 0x804B833C: bIT_actor_rand_pos_get_plus + 0x804B841C: bIT_actor_rand_pos_get + 0x804B84CC: bIT_actor_shin_effect_entry + 0x804B8614: bIT_actor_shin_effect_check + 0x804B8650: bIT_actor_shin_effect_move + 0x804B87F8: bIT_actor_drop_move_plant_destruct + 0x804B8864: bIT_common_moneytree_check + 0x804B8920: bIT_common_bury_after + 0x804B8B10: bIT_common_hole_throw + 0x804B8CC0: bIT_actor_drop_move_fly_destruct + 0x804B8D8C: func_calc_spec_drop_time + 0x804B8DD4: bIT_actor_drop_entry_main + 0x804B905C: fruit_set + 0x804B9668: bIT_fruit_set + 0x804B9690: drop_fruit + 0x804B9880: BIT_actor_tree_cutcount_check + 0x804B9950: bg_item_tree_fruit_drop + 0x804B9ACC: bIT_actor_dig_hole_effect_entry + 0x804B9B94: bIT_actor_bury_hole_effect_entry + 0x804B9BE8: bIT_actor_hole_effect_entry + 0x804B9E34: bIT_actor_hole_effect_destruct + 0x804B9F20: bIT_actor_hole_effect_move + 0x804BA0F0: bIT_actor_hole_effect_draw + 0x804BA168: bIT_actor_player_drop_entry + 0x804BA34C: bIT_drop_entry_v1 + 0x804BA490: bIT_actor_fly_entry + 0x804BA6A8: bIT_actor_drop_entry + 0x804BA820: bIT_actor_drop_move + 0x804BA8F0: bIT_actor_drop_destruct + 0x804BA96C: bIT_actor_drop_move_plant + 0x804BABA4: bIT_actor_drop_move_bury_destruct + 0x804BABC4: bIT_actor_drop_move_bury + 0x804BAC10: bIT_actor_drop_move_bury_change + 0x804BAC90: bIT_actor_drop_wait_bee + 0x804BACFC: bIT_actor_drop_move_wait + 0x804BAD64: bIT_actor_drop_move_fly + 0x804BB2F4: bIT_actor_drop_draw + 0x804BB36C: bIT_actor_drop_draw_nrm + 0x804BB410: bit_cmn_s_single_draw_loop_type1 + 0x804BB4CC: bit_cmn_single_draw_loop_type1 + 0x804BB63C: bit_cmn_single_draw_item_shadow + 0x804BB750: bit_cmn_single_draw_BT_shadow + 0x804BB874: fg_no2fg_type + 0x804BBA38: bit_cmn_single_drawS_shadow + 0x804BBB10: bit_cmn_single_draw_item_body + 0x804BBBC8: bit_cmn_single_draw + 0x804BBC70: bit_cmn_single_draw_BT + 0x804BBE58: bit_cmn_single_drawS + 0x804BBF30: bIT_common_info_tbl_copy + 0x804BBF50: bIT_common_clear_treeatr + 0x804BC000: m_GetCItTable_TreeTblChk + 0x804BC308: bIT_actor_pit_entry + 0x804BC418: bIT_actor_pit_move + 0x804BC730: bIT_actor_pit_destruct + 0x804BC7B0: bg_item_common_chg_BGDataR_b + 0x804BC92C: bg_item_common_chg_BGDataR + 0x804BC9A4: bg_item_common_outPutData + 0x804BCA18: bg_item_common_classifyitemDataTable + 0x804BCD60: bg_item_common_set_draw_tbl + 0x804BCE00: bg_shin_effect_being_check + 0x804BCFB8: bg_item_common_chg_draw_tbl_perfect + 0x804BD2D0: bg_item_common_renew_draw_and_crs_data_perfect + 0x804BD354: bg_item_common_destruct + 0x804BD3B8: bg_item_common_culling_check + 0x804BD408: bg_item_common_culling_check_talk + 0x804BD474: bg_item_common_culling_check_loop + 0x804BD510: bg_item_common_culling_check_talk_loop + 0x804BD5AC: bg_item_common_check_talk_tree + 0x804BD604: bg_item_common_draw_check + 0x804BD6AC: bg_item_common_move + 0x804BD7CC: bIT_actor_pit_entry_del + 0x804BD838: bIT_actor_pit_fall + 0x804BD910: bIT_actor_pit_fall_stop + 0x804BD9DC: bIT_actor_pit_exit + 0x804BDA88: bg_item_common_draw_loop_type1 + 0x804BDB6C: bg_item_common_s_draw_loop_type1 + 0x804BDC50: bg_item_common_draw_item_body + 0x804BDCCC: bg_item_common_draw_item_shadow + 0x804BDDE8: bg_item_common_draw_item + 0x804BDF3C: bIT_actor_pit_draw_nrm + 0x804BDFA0: bIT_actor_pit_draw + 0x804BE020: bg_item_common_draw + 0x804BE1DC: bg_item_common_construct 0x80692C04: pos_table 0x80692C44: pos_table2 0x806937A0: typeData_table_dummy @@ -54092,110 +54101,110 @@ src/bg_item.c: 0x8069578C: rnd_data_z 0x80695B20: type_data_table_p_a src/bg_winter_item.c: - 0x804BECF1: bIT_copy_vtx - 0x804BED45: bIT_draw_shadow - 0x804BEEB9: bIT_clip_ct - 0x804BF01D: bIT_clip_dt - 0x804BF065: bit_draw_ta_set - 0x804BF0B5: bit_draw_ta_clr - 0x804BF101: bIT_individual_draw_check - 0x804BF13D: mFI_search_unit_around_high - 0x804BF29D: bIT_actor_fade_entry - 0x804BF3D1: bIT_actor_fade_move - 0x804BF41D: bIT_actor_fade_draw - 0x804BF4B5: bIT_actor_ten_coin_entryR - 0x804BF8A5: bIT_actor_ten_coin_entry - 0x804BF925: bg_item_ten_coin_entry_ex - 0x804BF969: bIT_actor_ten_coin_move - 0x804BFA91: bIT_actor_ten_coin_draw_af - 0x804BFAD5: bIT_actor_ten_coin_draw_bf - 0x804BFB35: bIT_actor_ten_coin_draw - 0x804BFD35: bIT_actor_ten_coin_destruct - 0x804BFDBD: bg_item_common_palload - 0x804BFE01: bIT_actor_rand_pos_get_blk_correct - 0x804BFE35: bIT_actor_rand_pos_get_plus - 0x804BFF15: bIT_actor_rand_pos_get - 0x804BFFC5: bIT_actor_shin_effect_entry - 0x804C010D: bIT_actor_shin_effect_check - 0x804C0149: bIT_actor_shin_effect_move - 0x804C02F1: bIT_actor_drop_move_plant_destruct - 0x804C035D: bIT_common_moneytree_check - 0x804C0419: bIT_common_bury_after - 0x804C0609: bIT_common_hole_throw - 0x804C07B9: bIT_actor_drop_move_fly_destruct - 0x804C0885: func_calc_spec_drop_time - 0x804C08CD: bIT_actor_drop_entry_main - 0x804C0B55: fruit_set - 0x804C1161: bIT_fruit_set - 0x804C1189: drop_fruit - 0x804C1379: BIT_actor_tree_cutcount_check - 0x804C1449: bg_item_tree_fruit_drop - 0x804C15C5: bIT_actor_dig_hole_effect_entry - 0x804C168D: bIT_actor_bury_hole_effect_entry - 0x804C16E1: bIT_actor_hole_effect_entry - 0x804C192D: bIT_actor_hole_effect_destruct - 0x804C1A19: bIT_actor_hole_effect_move - 0x804C1BE9: bIT_actor_hole_effect_draw - 0x804C1C61: bIT_actor_player_drop_entry - 0x804C1E45: bIT_drop_entry_v1 - 0x804C1F89: bIT_actor_fly_entry - 0x804C21A1: bIT_actor_drop_entry - 0x804C2319: bIT_actor_drop_move - 0x804C23E9: bIT_actor_drop_destruct - 0x804C2465: bIT_actor_drop_move_plant - 0x804C269D: bIT_actor_drop_move_bury_destruct - 0x804C26BD: bIT_actor_drop_move_bury - 0x804C2709: bIT_actor_drop_move_bury_change - 0x804C2789: bIT_actor_drop_wait_bee - 0x804C27F5: bIT_actor_drop_move_wait - 0x804C285D: bIT_actor_drop_move_fly - 0x804C2DED: bIT_actor_drop_draw - 0x804C2E65: bIT_actor_drop_draw_nrm - 0x804C2F09: bit_cmn_s_single_draw_loop_type1 - 0x804C2FC5: bit_cmn_single_draw_loop_type1 - 0x804C3135: bit_cmn_single_draw_item_shadow - 0x804C3249: bit_cmn_single_draw_BT_shadow - 0x804C336D: fg_no2fg_type - 0x804C3531: bit_cmn_single_drawS_shadow - 0x804C3609: bit_cmn_single_draw_item_body - 0x804C36C1: bit_cmn_single_draw - 0x804C3769: bit_cmn_single_draw_BT - 0x804C3951: bit_cmn_single_drawS - 0x804C3A29: bIT_common_info_tbl_copy - 0x804C3A49: bIT_common_clear_treeatr - 0x804C3AF9: m_GetCItTable_TreeTblChk - 0x804C3E01: bIT_actor_pit_entry - 0x804C3F11: bIT_actor_pit_move - 0x804C4229: bIT_actor_pit_destruct - 0x804C42A9: bg_item_common_chg_BGDataR_b - 0x804C4425: bg_item_common_chg_BGDataR - 0x804C449D: bg_item_common_outPutData - 0x804C4511: bg_item_common_classifyitemDataTable - 0x804C4859: bg_item_common_set_draw_tbl - 0x804C48F9: bg_shin_effect_being_check - 0x804C4AB1: bg_item_common_chg_draw_tbl_perfect - 0x804C4DC9: bg_item_common_renew_draw_and_crs_data_perfect - 0x804C4E4D: bg_item_common_destruct - 0x804C4EB1: bg_item_common_culling_check - 0x804C4F01: bg_item_common_culling_check_talk - 0x804C4F6D: bg_item_common_culling_check_loop - 0x804C5009: bg_item_common_culling_check_talk_loop - 0x804C50A5: bg_item_common_check_talk_tree - 0x804C50FD: bg_item_common_draw_check - 0x804C51A5: bg_item_common_move - 0x804C52C5: bIT_actor_pit_entry_del - 0x804C5331: bIT_actor_pit_fall - 0x804C5409: bIT_actor_pit_fall_stop - 0x804C54D5: bIT_actor_pit_exit - 0x804C5581: bg_item_common_draw_loop_type1 - 0x804C5665: bg_item_common_s_draw_loop_type1 - 0x804C5749: bg_item_common_draw_item_body - 0x804C57C5: bg_item_common_draw_item_shadow - 0x804C58E1: bg_item_common_draw_item - 0x804C5A35: bIT_actor_pit_draw_nrm - 0x804C5A99: bIT_actor_pit_draw - 0x804C5B19: bg_item_common_draw - 0x804C5CD5: bg_item_common_construct + 0x804BECF0: bIT_copy_vtx + 0x804BED44: bIT_draw_shadow + 0x804BEEB8: bIT_clip_ct + 0x804BF01C: bIT_clip_dt + 0x804BF064: bit_draw_ta_set + 0x804BF0B4: bit_draw_ta_clr + 0x804BF100: bIT_individual_draw_check + 0x804BF13C: mFI_search_unit_around_high + 0x804BF29C: bIT_actor_fade_entry + 0x804BF3D0: bIT_actor_fade_move + 0x804BF41C: bIT_actor_fade_draw + 0x804BF4B4: bIT_actor_ten_coin_entryR + 0x804BF8A4: bIT_actor_ten_coin_entry + 0x804BF924: bg_item_ten_coin_entry_ex + 0x804BF968: bIT_actor_ten_coin_move + 0x804BFA90: bIT_actor_ten_coin_draw_af + 0x804BFAD4: bIT_actor_ten_coin_draw_bf + 0x804BFB34: bIT_actor_ten_coin_draw + 0x804BFD34: bIT_actor_ten_coin_destruct + 0x804BFDBC: bg_item_common_palload + 0x804BFE00: bIT_actor_rand_pos_get_blk_correct + 0x804BFE34: bIT_actor_rand_pos_get_plus + 0x804BFF14: bIT_actor_rand_pos_get + 0x804BFFC4: bIT_actor_shin_effect_entry + 0x804C010C: bIT_actor_shin_effect_check + 0x804C0148: bIT_actor_shin_effect_move + 0x804C02F0: bIT_actor_drop_move_plant_destruct + 0x804C035C: bIT_common_moneytree_check + 0x804C0418: bIT_common_bury_after + 0x804C0608: bIT_common_hole_throw + 0x804C07B8: bIT_actor_drop_move_fly_destruct + 0x804C0884: func_calc_spec_drop_time + 0x804C08CC: bIT_actor_drop_entry_main + 0x804C0B54: fruit_set + 0x804C1160: bIT_fruit_set + 0x804C1188: drop_fruit + 0x804C1378: BIT_actor_tree_cutcount_check + 0x804C1448: bg_item_tree_fruit_drop + 0x804C15C4: bIT_actor_dig_hole_effect_entry + 0x804C168C: bIT_actor_bury_hole_effect_entry + 0x804C16E0: bIT_actor_hole_effect_entry + 0x804C192C: bIT_actor_hole_effect_destruct + 0x804C1A18: bIT_actor_hole_effect_move + 0x804C1BE8: bIT_actor_hole_effect_draw + 0x804C1C60: bIT_actor_player_drop_entry + 0x804C1E44: bIT_drop_entry_v1 + 0x804C1F88: bIT_actor_fly_entry + 0x804C21A0: bIT_actor_drop_entry + 0x804C2318: bIT_actor_drop_move + 0x804C23E8: bIT_actor_drop_destruct + 0x804C2464: bIT_actor_drop_move_plant + 0x804C269C: bIT_actor_drop_move_bury_destruct + 0x804C26BC: bIT_actor_drop_move_bury + 0x804C2708: bIT_actor_drop_move_bury_change + 0x804C2788: bIT_actor_drop_wait_bee + 0x804C27F4: bIT_actor_drop_move_wait + 0x804C285C: bIT_actor_drop_move_fly + 0x804C2DEC: bIT_actor_drop_draw + 0x804C2E64: bIT_actor_drop_draw_nrm + 0x804C2F08: bit_cmn_s_single_draw_loop_type1 + 0x804C2FC4: bit_cmn_single_draw_loop_type1 + 0x804C3134: bit_cmn_single_draw_item_shadow + 0x804C3248: bit_cmn_single_draw_BT_shadow + 0x804C336C: fg_no2fg_type + 0x804C3530: bit_cmn_single_drawS_shadow + 0x804C3608: bit_cmn_single_draw_item_body + 0x804C36C0: bit_cmn_single_draw + 0x804C3768: bit_cmn_single_draw_BT + 0x804C3950: bit_cmn_single_drawS + 0x804C3A28: bIT_common_info_tbl_copy + 0x804C3A48: bIT_common_clear_treeatr + 0x804C3AF8: m_GetCItTable_TreeTblChk + 0x804C3E00: bIT_actor_pit_entry + 0x804C3F10: bIT_actor_pit_move + 0x804C4228: bIT_actor_pit_destruct + 0x804C42A8: bg_item_common_chg_BGDataR_b + 0x804C4424: bg_item_common_chg_BGDataR + 0x804C449C: bg_item_common_outPutData + 0x804C4510: bg_item_common_classifyitemDataTable + 0x804C4858: bg_item_common_set_draw_tbl + 0x804C48F8: bg_shin_effect_being_check + 0x804C4AB0: bg_item_common_chg_draw_tbl_perfect + 0x804C4DC8: bg_item_common_renew_draw_and_crs_data_perfect + 0x804C4E4C: bg_item_common_destruct + 0x804C4EB0: bg_item_common_culling_check + 0x804C4F00: bg_item_common_culling_check_talk + 0x804C4F6C: bg_item_common_culling_check_loop + 0x804C5008: bg_item_common_culling_check_talk_loop + 0x804C50A4: bg_item_common_check_talk_tree + 0x804C50FC: bg_item_common_draw_check + 0x804C51A4: bg_item_common_move + 0x804C52C4: bIT_actor_pit_entry_del + 0x804C5330: bIT_actor_pit_fall + 0x804C5408: bIT_actor_pit_fall_stop + 0x804C54D4: bIT_actor_pit_exit + 0x804C5580: bg_item_common_draw_loop_type1 + 0x804C5664: bg_item_common_s_draw_loop_type1 + 0x804C5748: bg_item_common_draw_item_body + 0x804C57C4: bg_item_common_draw_item_shadow + 0x804C58E0: bg_item_common_draw_item + 0x804C5A34: bIT_actor_pit_draw_nrm + 0x804C5A98: bIT_actor_pit_draw + 0x804C5B18: bg_item_common_draw + 0x804C5CD4: bg_item_common_construct 0x80695DBC: pos_table 0x80695DFC: pos_table2 0x80696958: typeData_table_dummy @@ -54593,110 +54602,110 @@ src/bg_winter_item.c: 0x8069895C: rnd_data_z 0x80698CF8: type_data_table_p_a src/bg_xmas_item.c: - 0x804C6109: bIT_copy_vtx - 0x804C615D: bIT_draw_shadow - 0x804C62D1: bIT_clip_ct - 0x804C6435: bIT_clip_dt - 0x804C647D: bit_draw_ta_set - 0x804C64CD: bit_draw_ta_clr - 0x804C6519: bIT_individual_draw_check - 0x804C6555: mFI_search_unit_around_high - 0x804C66B5: bIT_actor_fade_entry - 0x804C67E9: bIT_actor_fade_move - 0x804C6835: bIT_actor_fade_draw - 0x804C68CD: bIT_actor_ten_coin_entryR - 0x804C6CBD: bIT_actor_ten_coin_entry - 0x804C6D3D: bg_item_ten_coin_entry_ex - 0x804C6D81: bIT_actor_ten_coin_move - 0x804C6EA9: bIT_actor_ten_coin_draw_af - 0x804C6EED: bIT_actor_ten_coin_draw_bf - 0x804C6F4D: bIT_actor_ten_coin_draw - 0x804C714D: bIT_actor_ten_coin_destruct - 0x804C71D5: bg_item_common_palload - 0x804C7219: bIT_actor_rand_pos_get_blk_correct - 0x804C724D: bIT_actor_rand_pos_get_plus - 0x804C732D: bIT_actor_rand_pos_get - 0x804C73DD: bIT_actor_shin_effect_entry - 0x804C7525: bIT_actor_shin_effect_check - 0x804C7561: bIT_actor_shin_effect_move - 0x804C7709: bIT_actor_drop_move_plant_destruct - 0x804C7775: bIT_common_moneytree_check - 0x804C7831: bIT_common_bury_after - 0x804C7A21: bIT_common_hole_throw - 0x804C7BD1: bIT_actor_drop_move_fly_destruct - 0x804C7C9D: func_calc_spec_drop_time - 0x804C7CE5: bIT_actor_drop_entry_main - 0x804C7F6D: fruit_set - 0x804C8579: bIT_fruit_set - 0x804C85A1: drop_fruit - 0x804C8791: BIT_actor_tree_cutcount_check - 0x804C8861: bg_item_tree_fruit_drop - 0x804C89DD: bIT_actor_dig_hole_effect_entry - 0x804C8AA5: bIT_actor_bury_hole_effect_entry - 0x804C8AF9: bIT_actor_hole_effect_entry - 0x804C8D45: bIT_actor_hole_effect_destruct - 0x804C8E31: bIT_actor_hole_effect_move - 0x804C9001: bIT_actor_hole_effect_draw - 0x804C9079: bIT_actor_player_drop_entry - 0x804C925D: bIT_drop_entry_v1 - 0x804C93A1: bIT_actor_fly_entry - 0x804C95B9: bIT_actor_drop_entry - 0x804C9731: bIT_actor_drop_move - 0x804C9801: bIT_actor_drop_destruct - 0x804C987D: bIT_actor_drop_move_plant - 0x804C9AB5: bIT_actor_drop_move_bury_destruct - 0x804C9AD5: bIT_actor_drop_move_bury - 0x804C9B21: bIT_actor_drop_move_bury_change - 0x804C9BA1: bIT_actor_drop_wait_bee - 0x804C9C0D: bIT_actor_drop_move_wait - 0x804C9C75: bIT_actor_drop_move_fly - 0x804CA205: bIT_actor_drop_draw - 0x804CA27D: bIT_actor_drop_draw_nrm - 0x804CA321: bit_cmn_s_single_draw_loop_type1 - 0x804CA3DD: bit_cmn_single_draw_loop_type1 - 0x804CA54D: bit_cmn_single_draw_item_shadow - 0x804CA661: bit_cmn_single_draw_BT_shadow - 0x804CA785: fg_no2fg_type - 0x804CA949: bit_cmn_single_drawS_shadow - 0x804CAA21: bit_cmn_single_draw_item_body - 0x804CAAD9: bit_cmn_single_draw - 0x804CAB81: bit_cmn_single_draw_BT - 0x804CAD69: bit_cmn_single_drawS - 0x804CAE41: bIT_common_info_tbl_copy - 0x804CAE61: bIT_common_clear_treeatr - 0x804CAF11: m_GetCItTable_TreeTblChk - 0x804CB219: bIT_actor_pit_entry - 0x804CB329: bIT_actor_pit_move - 0x804CB641: bIT_actor_pit_destruct - 0x804CB6C1: bg_item_common_chg_BGDataR_b - 0x804CB83D: bg_item_common_chg_BGDataR - 0x804CB8B5: bg_item_common_outPutData - 0x804CB929: bg_item_common_classifyitemDataTable - 0x804CBC71: bg_item_common_set_draw_tbl - 0x804CBD11: bg_shin_effect_being_check - 0x804CBEC9: bg_item_common_chg_draw_tbl_perfect - 0x804CC1E1: bg_item_common_renew_draw_and_crs_data_perfect - 0x804CC265: bg_item_common_destruct - 0x804CC2C9: bg_item_common_culling_check - 0x804CC319: bg_item_common_culling_check_talk - 0x804CC385: bg_item_common_culling_check_loop - 0x804CC421: bg_item_common_culling_check_talk_loop - 0x804CC4BD: bg_item_common_check_talk_tree - 0x804CC515: bg_item_common_draw_check - 0x804CC5BD: bg_item_common_move - 0x804CC6DD: bIT_actor_pit_entry_del - 0x804CC749: bIT_actor_pit_fall - 0x804CC821: bIT_actor_pit_fall_stop - 0x804CC8ED: bIT_actor_pit_exit - 0x804CC999: bg_item_common_draw_loop_type1 - 0x804CCA7D: bg_item_common_s_draw_loop_type1 - 0x804CCB61: bg_item_common_draw_item_body - 0x804CCBDD: bg_item_common_draw_item_shadow - 0x804CCCF9: bg_item_common_draw_item - 0x804CCE4D: bIT_actor_pit_draw_nrm - 0x804CCEB1: bIT_actor_pit_draw - 0x804CCF31: bg_item_common_draw - 0x804CD0ED: bg_item_common_construct + 0x804C6108: bIT_copy_vtx + 0x804C615C: bIT_draw_shadow + 0x804C62D0: bIT_clip_ct + 0x804C6434: bIT_clip_dt + 0x804C647C: bit_draw_ta_set + 0x804C64CC: bit_draw_ta_clr + 0x804C6518: bIT_individual_draw_check + 0x804C6554: mFI_search_unit_around_high + 0x804C66B4: bIT_actor_fade_entry + 0x804C67E8: bIT_actor_fade_move + 0x804C6834: bIT_actor_fade_draw + 0x804C68CC: bIT_actor_ten_coin_entryR + 0x804C6CBC: bIT_actor_ten_coin_entry + 0x804C6D3C: bg_item_ten_coin_entry_ex + 0x804C6D80: bIT_actor_ten_coin_move + 0x804C6EA8: bIT_actor_ten_coin_draw_af + 0x804C6EEC: bIT_actor_ten_coin_draw_bf + 0x804C6F4C: bIT_actor_ten_coin_draw + 0x804C714C: bIT_actor_ten_coin_destruct + 0x804C71D4: bg_item_common_palload + 0x804C7218: bIT_actor_rand_pos_get_blk_correct + 0x804C724C: bIT_actor_rand_pos_get_plus + 0x804C732C: bIT_actor_rand_pos_get + 0x804C73DC: bIT_actor_shin_effect_entry + 0x804C7524: bIT_actor_shin_effect_check + 0x804C7560: bIT_actor_shin_effect_move + 0x804C7708: bIT_actor_drop_move_plant_destruct + 0x804C7774: bIT_common_moneytree_check + 0x804C7830: bIT_common_bury_after + 0x804C7A20: bIT_common_hole_throw + 0x804C7BD0: bIT_actor_drop_move_fly_destruct + 0x804C7C9C: func_calc_spec_drop_time + 0x804C7CE4: bIT_actor_drop_entry_main + 0x804C7F6C: fruit_set + 0x804C8578: bIT_fruit_set + 0x804C85A0: drop_fruit + 0x804C8790: BIT_actor_tree_cutcount_check + 0x804C8860: bg_item_tree_fruit_drop + 0x804C89DC: bIT_actor_dig_hole_effect_entry + 0x804C8AA4: bIT_actor_bury_hole_effect_entry + 0x804C8AF8: bIT_actor_hole_effect_entry + 0x804C8D44: bIT_actor_hole_effect_destruct + 0x804C8E30: bIT_actor_hole_effect_move + 0x804C9000: bIT_actor_hole_effect_draw + 0x804C9078: bIT_actor_player_drop_entry + 0x804C925C: bIT_drop_entry_v1 + 0x804C93A0: bIT_actor_fly_entry + 0x804C95B8: bIT_actor_drop_entry + 0x804C9730: bIT_actor_drop_move + 0x804C9800: bIT_actor_drop_destruct + 0x804C987C: bIT_actor_drop_move_plant + 0x804C9AB4: bIT_actor_drop_move_bury_destruct + 0x804C9AD4: bIT_actor_drop_move_bury + 0x804C9B20: bIT_actor_drop_move_bury_change + 0x804C9BA0: bIT_actor_drop_wait_bee + 0x804C9C0C: bIT_actor_drop_move_wait + 0x804C9C74: bIT_actor_drop_move_fly + 0x804CA204: bIT_actor_drop_draw + 0x804CA27C: bIT_actor_drop_draw_nrm + 0x804CA320: bit_cmn_s_single_draw_loop_type1 + 0x804CA3DC: bit_cmn_single_draw_loop_type1 + 0x804CA54C: bit_cmn_single_draw_item_shadow + 0x804CA660: bit_cmn_single_draw_BT_shadow + 0x804CA784: fg_no2fg_type + 0x804CA948: bit_cmn_single_drawS_shadow + 0x804CAA20: bit_cmn_single_draw_item_body + 0x804CAAD8: bit_cmn_single_draw + 0x804CAB80: bit_cmn_single_draw_BT + 0x804CAD68: bit_cmn_single_drawS + 0x804CAE40: bIT_common_info_tbl_copy + 0x804CAE60: bIT_common_clear_treeatr + 0x804CAF10: m_GetCItTable_TreeTblChk + 0x804CB218: bIT_actor_pit_entry + 0x804CB328: bIT_actor_pit_move + 0x804CB640: bIT_actor_pit_destruct + 0x804CB6C0: bg_item_common_chg_BGDataR_b + 0x804CB83C: bg_item_common_chg_BGDataR + 0x804CB8B4: bg_item_common_outPutData + 0x804CB928: bg_item_common_classifyitemDataTable + 0x804CBC70: bg_item_common_set_draw_tbl + 0x804CBD10: bg_shin_effect_being_check + 0x804CBEC8: bg_item_common_chg_draw_tbl_perfect + 0x804CC1E0: bg_item_common_renew_draw_and_crs_data_perfect + 0x804CC264: bg_item_common_destruct + 0x804CC2C8: bg_item_common_culling_check + 0x804CC318: bg_item_common_culling_check_talk + 0x804CC384: bg_item_common_culling_check_loop + 0x804CC420: bg_item_common_culling_check_talk_loop + 0x804CC4BC: bg_item_common_check_talk_tree + 0x804CC514: bg_item_common_draw_check + 0x804CC5BC: bg_item_common_move + 0x804CC6DC: bIT_actor_pit_entry_del + 0x804CC748: bIT_actor_pit_fall + 0x804CC820: bIT_actor_pit_fall_stop + 0x804CC8EC: bIT_actor_pit_exit + 0x804CC998: bg_item_common_draw_loop_type1 + 0x804CCA7C: bg_item_common_s_draw_loop_type1 + 0x804CCB60: bg_item_common_draw_item_body + 0x804CCBDC: bg_item_common_draw_item_shadow + 0x804CCCF8: bg_item_common_draw_item + 0x804CCE4C: bIT_actor_pit_draw_nrm + 0x804CCEB0: bIT_actor_pit_draw + 0x804CCF30: bg_item_common_draw + 0x804CD0EC: bg_item_common_construct 0x80698D34: pos_table 0x80698D74: pos_table2 0x806998D0: typeData_table_dummy @@ -55094,305 +55103,305 @@ src/bg_xmas_item.c: 0x8069B95C: rnd_data_z 0x8069BCF4: type_data_table_p_a src/m_all_grow.c: - 0x80373BD9: mAGrw_ChangeItemBlock2 + 0x80373BD8: mAGrw_ChangeItemBlock2 src/m_all_grow_ovl.c: - 0x80510F99: mAGrw_ChangeItemBlock2 + 0x80510F98: mAGrw_ChangeItemBlock2 src/ac_ev_ghost.c: - 0x8051FED9: aEGH_change_talk_proc + 0x8051FED8: aEGH_change_talk_proc 0x806A07E0: umbrella_list 0x806A08D4: dt_tbl 0x806A08F8: proc_table 0x806A090C: init_table src/ac_ev_soncho.c: - 0x8052438D: aEGH_change_talk_proc + 0x8052438C: aEGH_change_talk_proc src/ac_hatumode_control.c: - 0x80429581: aHN0_set_request_act + 0x80429580: aHN0_set_request_act 0x80683F5C: dt_tbl 0x80684044: init_table src/ac_hanabi_npc0.c: - 0x80528515: aHN0_actor_ct - 0x80528599: aHN0_actor_save - 0x805285D1: aHN0_actor_dt - 0x80528609: aHN0_actor_init - 0x80528641: aHN0_actor_move - 0x80528679: aHN0_actor_draw - 0x80528709: aHN0_set_request_act - 0x80528C29: aHN0_think_main_proc - 0x80528D59: aHN0_think_init_proc - 0x80528D95: aHN0_think_proc - 0x80528DC9: aHN0_schedule_init_proc - 0x80528E7D: aHN0_schedule_main_proc - 0x80528F09: aHN0_schedule_proc - 0x80528FCD: aHN0_talk_init - 0x80528FF1: aHN0_talk_end_chk + 0x80528514: aHN0_actor_ct + 0x80528598: aHN0_actor_save + 0x805285D0: aHN0_actor_dt + 0x80528608: aHN0_actor_init + 0x80528640: aHN0_actor_move + 0x80528678: aHN0_actor_draw + 0x80528708: aHN0_set_request_act + 0x80528C28: aHN0_think_main_proc + 0x80528D58: aHN0_think_init_proc + 0x80528D94: aHN0_think_proc + 0x80528DC8: aHN0_schedule_init_proc + 0x80528E7C: aHN0_schedule_main_proc + 0x80528F08: aHN0_schedule_proc + 0x80528FCC: aHN0_talk_init + 0x80528FF0: aHN0_talk_end_chk src/ac_hatumode_npc0.c: - 0x8052AB55: aHN0_actor_ct - 0x8052AC71: aHN0_actor_save - 0x8052AC91: aHN0_actor_dt - 0x8052AD15: aHN0_actor_init - 0x8052AD4D: aHN0_actor_move - 0x8052AE09: aHN0_actor_draw - 0x8052B025: aHN0_talk_init - 0x8052B069: aHN0_talk_end_chk - 0x8052BA4D: aHN0_think_main_proc - 0x8052BAE9: aHN0_think_init_proc - 0x8052BBB5: aHN0_think_proc - 0x8052BBF5: aHN0_schedule_init_proc - 0x8052BC41: aHN0_schedule_main_proc - 0x8052BCF9: aHN0_schedule_proc + 0x8052AB54: aHN0_actor_ct + 0x8052AC70: aHN0_actor_save + 0x8052AC90: aHN0_actor_dt + 0x8052AD14: aHN0_actor_init + 0x8052AD4C: aHN0_actor_move + 0x8052AE08: aHN0_actor_draw + 0x8052B024: aHN0_talk_init + 0x8052B068: aHN0_talk_end_chk + 0x8052BA4C: aHN0_think_main_proc + 0x8052BAE8: aHN0_think_init_proc + 0x8052BBB4: aHN0_think_proc + 0x8052BBF4: aHN0_schedule_init_proc + 0x8052BC40: aHN0_schedule_main_proc + 0x8052BCF8: aHN0_schedule_proc 0x806A1428: proc_table src/ac_npc.c: - 0x8052C131: aNPC_dma_cloth_data - 0x8052C1ED: aNPC_getP_cloth_tex_rom - 0x8052C251: aNPC_getP_cloth_pal_rom - 0x8052C2B5: aNPC_dma_cloth_tex_data_fg - 0x8052C2F9: aNPC_dma_cloth_pal_data_fg - 0x8052C33D: aNPC_dma_cloth_data_fg - 0x8052C3E5: aNPC_reset_trans_condition_cloth_data - 0x8052C43D: aNPC_get_same_cloth_data_area - 0x8052C475: aNPC_dma_cloth_data_check - 0x8052C501: aNPC_get_new_cloth_data_area - 0x8052C541: aNPC_get_no_use_cloth_data_area - 0x8052C599: aNPC_cancel_cloth_data - 0x8052C5D1: aNPC_dma_regist_cloth_data - 0x8052C6A5: aNPC_dma_regist_check_cloth_data - 0x8052C701: aNPC_keep_cloth_data_area - 0x8052C7ED: aNPC_rebuild_cloth_data - 0x8052C811: aNPC_change_cloth_data - 0x8052C8F9: aNPC_setup_chg_cloth - 0x8052C905: aNPC_setup_next_cloth - 0x8052C911: aNPC_setup_cloth - 0x8052C929: aNPC_get_feel_info - 0x8052C951: aNPC_clear_all_morph_counter - 0x8052C969: aNPC_check_talk_anime - 0x8052CA0D: aNPC_set_anime_se_info - 0x8052CAF9: aNPC_Animation_init - 0x8052CDF1: aNPC_check_anime_timing - 0x8052CEA5: aNPC_anime_proc_foot - 0x8052D005: aNPC_anime_proc_other - 0x8052D051: aNPC_anime_se_proc - 0x8052D0D9: aNPC_anime_proc - 0x8052D1AD: aNPC_check_kutipaku - 0x8052D23D: aNPC_getP_anmData - 0x8052D269: aNPC_get_seq_cnt - 0x8052D289: aNPC_set_tex_anime - 0x8052D389: aNPC_tex_anm_ctrl_stop_seq - 0x8052D3B5: aNPC_tex_anm_ctrl_set_pat - 0x8052D429: aNPC_tex_anm_ctrl_rnd_seq - 0x8052D57D: aNPC_tex_anm_ctrl_talk_seq - 0x8052D6B1: aNPC_tex_anm_ctrl_fix_seq - 0x8052D6C9: aNPC_tex_anm_ctrl - 0x8052D845: aNPC_set_frame_sub_speed - 0x8052D881: aNPC_set_anime_speed - 0x8052D8AD: aNPC_OngenTrgStart - 0x8052DA61: aNPC_putaway_right_item - 0x8052DAFD: aNPC_takeout_right_item - 0x8052DC4D: aNPC_chk_right_hand - 0x8052DCE5: aNPC_clear_left_hand_info - 0x8052DD01: aNPC_chk_left_hand - 0x8052DDED: aNPC_check_look_range - 0x8052DE6D: aNPC_check_look_player - 0x8052DEED: aNPC_check_attention - 0x8052DFD5: aNPC_look_target - 0x8052E0CD: aNPC_check_condition_search_eye - 0x8052E0F9: aNPC_search_eye_target_sub - 0x8052E1BD: aNPC_search_eye_target - 0x8052E2C1: aNPC_set_head_request_sub - 0x8052E30D: aNPC_set_head_request - 0x8052E381: aNPC_force_call_req_proc - 0x8052E40D: aNPC_check_manpu_demoCode - 0x8052E545: aNPC_clear_timing_demoCode - 0x8052E5BD: aNPC_check_timing_demoCode - 0x8052E761: aNPC_check_feel_demoCode - 0x8052E855: aNPC_setup_talk_start - 0x8052E8D5: aNPC_setup_talk_end - 0x8052E925: aNPC_set_talk_info_talk_request_check - 0x8052E9CD: aNPC_talk_request_event_npc - 0x8052EAA1: aNPC_normal_talk_request - 0x8052EB21: aNPC_set_talk_info_force_call - 0x8052EB71: aNPC_force_talk_request - 0x8052EC61: aNPC_talk_request_normal_npc - 0x8052ED41: aNPC_talk_request_check - 0x8052EE01: aNPC_BGcheck - 0x8052F669: aNPC_set_over_friendship - 0x8052F8CD: aNPC_set_mv_angl - 0x8052F915: aNPC_set_avoid_pos - 0x8052F941: aNPC_set_dst_pos - 0x8052F975: aNPC_check_feel_tim - 0x8052F9D5: aNPC_calc_force_call_timer - 0x8052FA35: aNPC_calc_timer - 0x8052FA71: aNPC_position_move - 0x8052FAF5: aNPC_angle_calc - 0x8052FB35: aNPC_set_body_angle - 0x8052FD35: aNPC_calc_fatigue - 0x8052FE15: aNPC_setupAction - 0x8052FEAD: aNPC_actor_move_hide - 0x8052FEF9: aNPC_actor_move_show_before - 0x8052FF59: aNPC_actor_move_show_after - 0x8052FFDD: aNPC_actor_move_show - 0x80530091: aNPC_actor_move - 0x805300E1: aNPC_check_mask_cat_type - 0x80530139: aNPC_set_shadow_pos - 0x805301B1: aNPC_set_chn_base - 0x8053027D: aNPC_set_head_angl - 0x805302E9: aNPC_actor_draw_before - 0x8053032D: aNPC_set_right_hand_item - 0x805303C9: aNPC_set_left_hand_item - 0x80530451: aNPC_set_foot_eff - 0x80530489: aNPC_set_feel_eff - 0x805304BD: aNPC_set_accessory_mtx - 0x80530551: aNPC_actor_draw_after - 0x805305B1: aNPC_actor_draw_sub - 0x805308BD: aNPC_actor_draw - 0x805308FD: aNPC_set_eff - 0x80530999: aNPC_set_feel_effect - 0x80530B1D: aNPC_set_other_effect - 0x80530C75: aNPC_check_arrive_destination - 0x80530DB5: aNPC_set_feel_info - 0x80530E11: aNPC_set_act_obj - 0x80530F29: aNPC_check_live_target - 0x80530F59: aNPC_act_wait - 0x80530F99: aNPC_act_move - 0x80530FE9: aNPC_act_search_move - 0x80531149: aNPC_act_avoid_move - 0x80531325: aNPC_act_to_point_move - 0x805313FD: aNPC_act_turn - 0x8053141D: aNPC_act_search_turn - 0x80531495: aNPC_act_to_point_turn - 0x80531525: aNPC_act_anm_seq - 0x8053153D: aNPC_act_return_trans_item - 0x805315C1: aNPC_act_special_proc - 0x805315E9: aNPC_chk_request_act - 0x805316E5: aNPC_set_request_act - 0x80531741: aNPC_action_proc - 0x805317C9: aNPC_act_wait_main_proc - 0x80531841: aNPC_act_wait_chg_data_proc - 0x80531895: aNPC_act_wait_init_proc - 0x805318ED: aNPC_act_wait_proc - 0x80531921: aNPC_act_walk_setupAction - 0x80531975: aNPC_act_walk_main_proc - 0x805319F5: aNPC_act_walk_chg_data_proc - 0x80531A59: aNPC_act_walk_init_proc - 0x80531AD5: aNPC_act_walk_proc - 0x80531B09: aNPC_act_turn_main_proc - 0x80531B5D: aNPC_act_turn_chg_data_proc - 0x80531BC1: aNPC_act_turn_init_proc - 0x80531CA5: aNPC_act_turn_proc - 0x805331C1: aNPC_Init_OrderValue - 0x8053321D: aNPC_talk_demo_proc - 0x80533259: aNPC_talk_end_check - 0x805332DD: aNPC_act_talk_chg_step - 0x80533311: aNPC_act_talk_turn - 0x80533351: aNPC_act_talk_wait - 0x80533431: aNPC_act_talk - 0x80533489: aNPC_act_talk_main_proc - 0x805334C1: aNPC_act_talk_init_proc - 0x8053356D: aNPC_act_talk_proc - 0x80533DED: aNPC_act_trans_chg_step - 0x80533EC9: aNPC_act_trans_set_arg_data - 0x80533EED: aNPC_act_trans_move - 0x80533F65: aNPC_act_trans - 0x80533FD1: aNPC_act_trans_wait - 0x80534029: aNPC_act_trans_send_mail - 0x8053409D: aNPC_act_trans_main_proc - 0x80534125: aNPC_act_trans_chg_data_proc - 0x80534131: aNPC_act_trans_init_proc - 0x805341B5: aNPC_act_trans_proc - 0x805341E9: aNPC_act_get_chg_step - 0x80534369: aNPC_act_get_move - 0x805343D9: aNPC_act_get - 0x8053446D: aNPC_act_get_pull - 0x805344E9: aNPC_act_get_pull_wait - 0x805345F5: aNPC_act_get_putaway - 0x80534635: aNPC_act_get_chg_cloth - 0x80534915: aNPC_act_get_return - 0x80534989: aNPC_act_estimate - 0x805349E9: aNPC_act_get_main_proc - 0x80534A71: aNPC_act_get_chg_data_proc - 0x80534A7D: aNPC_act_get_init_proc - 0x80534AFD: aNPC_act_get_proc - 0x80534B31: aNPC_act_ensou_main_proc - 0x80534B55: aNPC_act_ensou_init_proc - 0x80534B89: aNPC_act_ensou_proc - 0x80535255: aNPC_check_uzai_cross - 0x8053533D: aNPC_check_uzai - 0x80535B2D: aNPC_avoid_obstacle - 0x80535C59: aNPC_chk_talk_start - 0x805360A1: aNPC_check_fatigue - 0x805361A9: aNPC_hate_player - 0x80536255: aNPC_love_player - 0x805363D5: aNPC_chk_friendship_lv - 0x8053644D: aNPC_chk_friendship_sub - 0x805364D9: aNPC_chk_friendship - 0x805365BD: aNPC_think_chk_interrupt_proc - 0x805368A1: aNPC_think_wait_init_proc - 0x805368D5: aNPC_think_wait_proc - 0x805368FD: aNPC_think_special_proc - 0x80536925: aNPC_think_init_proc - 0x80536981: aNPC_think_main_proc - 0x805369BD: aNPC_think_proc - 0x80536D2D: aNPC_think_wander_decide_next - 0x80536F79: aNPC_think_wander_next_act - 0x80536FA5: aNPC_think_wander_main_proc - 0x80536FE1: aNPC_think_wander_init_proc - 0x80537105: aNPC_think_wander_proc - 0x80537D79: aNPC_set_hide_request - 0x80537DC9: aNPC_set_hide_flg - 0x80537E8D: aNPC_stand_schedule_main_proc - 0x80537F0D: aNPC_stand_schedule_init_proc - 0x80537F61: aNPC_stand_schedule_proc - 0x80537F95: aNPC_wander_schedule_main_proc - 0x80537FE9: aNPC_wander_schedule_init_proc - 0x80538035: aNPC_wander_schedule_proc - 0x805380E9: aNPC_special_schedule_proc - 0x80538111: aNPC_schedule_init - 0x805381AD: aNPC_chg_schedule - 0x805381D1: aNPC_set_schedule - 0x805381F9: aNPC_schedule_proc - 0x8053829D: aNPC_first_set_schedule - 0x80538319: aNPC_field_schedule_think_init - 0x80538379: aNPC_field_schedule_main_proc - 0x80538451: aNPC_field_schedule_init_proc - 0x805384B9: aNPC_field_schedule_proc - 0x805384ED: aNPC_in_house_schedule_think_init - 0x80538521: aNPC_in_house_schedule_main_proc - 0x80538631: aNPC_in_house_schedule_init_proc - 0x805386D9: aNPC_in_house_schedule_proc - 0x805387B1: aNPC_sleep_schedule_main_proc - 0x80538879: aNPC_sleep_schedule_init_proc - 0x805388E5: aNPC_sleep_schedule_proc - 0x80538919: aNPC_actor_init_common_proc - 0x8053898D: aNPC_actor_init_for_normal - 0x805389F1: aNPC_actor_init_for_special - 0x80538B25: aNPC_actor_init - 0x80538B6D: aNPC_make_accessory - 0x80538C01: aNPC_setP_friendship - 0x80538CB1: aNPC_set_start_pos - 0x80538CE1: aNPC_actor_schedule - 0x80538D95: aNPC_actor_ct - 0x80539301: aNPC_actor_dt - 0x8053941D: aNPC_actor_save_for_normal - 0x8053953D: aNPC_actor_save_for_special - 0x80539595: aNPC_actor_save - 0x80539619: aNPC_actor_birth_check - 0x8053972D: aNPC_rebuild_dma - 0x8053974D: aNPC_set_attention_request_proc - 0x80539795: aNPC_get_draw_data_idx - 0x8053986D: aNPC_check_dma_cloth_data - 0x80539905: aNPC_check_dma_cloth_data_sub - 0x80539955: aNPC_check_dma_eventNpc_cloth_data - 0x805399C5: aNPC_check_dma_maskNpc_cloth_data - 0x805399FD: aNPC_setupNpc_check - 0x80539A8D: aNPC_setupActor_sub - 0x80539B45: aNPC_setupActor_proc - 0x8053A13D: aNPC_free_actor_area_proc - 0x8053A185: aNPC_dma_draw_data_proc - 0x8053A355: aNPC_actor_ct_c - 0x8053A6FD: aNPC_actor_dt_c - 0x8053A785: aNPC_check_cond_to_greeting - 0x8053A805: aNPC_greeting_area_check - 0x8053A945: aNPC_set_attention - 0x8053AAB1: aNPC_actor_move_c + 0x8052C130: aNPC_dma_cloth_data + 0x8052C1EC: aNPC_getP_cloth_tex_rom + 0x8052C250: aNPC_getP_cloth_pal_rom + 0x8052C2B4: aNPC_dma_cloth_tex_data_fg + 0x8052C2F8: aNPC_dma_cloth_pal_data_fg + 0x8052C33C: aNPC_dma_cloth_data_fg + 0x8052C3E4: aNPC_reset_trans_condition_cloth_data + 0x8052C43C: aNPC_get_same_cloth_data_area + 0x8052C474: aNPC_dma_cloth_data_check + 0x8052C500: aNPC_get_new_cloth_data_area + 0x8052C540: aNPC_get_no_use_cloth_data_area + 0x8052C598: aNPC_cancel_cloth_data + 0x8052C5D0: aNPC_dma_regist_cloth_data + 0x8052C6A4: aNPC_dma_regist_check_cloth_data + 0x8052C700: aNPC_keep_cloth_data_area + 0x8052C7EC: aNPC_rebuild_cloth_data + 0x8052C810: aNPC_change_cloth_data + 0x8052C8F8: aNPC_setup_chg_cloth + 0x8052C904: aNPC_setup_next_cloth + 0x8052C910: aNPC_setup_cloth + 0x8052C928: aNPC_get_feel_info + 0x8052C950: aNPC_clear_all_morph_counter + 0x8052C968: aNPC_check_talk_anime + 0x8052CA0C: aNPC_set_anime_se_info + 0x8052CAF8: aNPC_Animation_init + 0x8052CDF0: aNPC_check_anime_timing + 0x8052CEA4: aNPC_anime_proc_foot + 0x8052D004: aNPC_anime_proc_other + 0x8052D050: aNPC_anime_se_proc + 0x8052D0D8: aNPC_anime_proc + 0x8052D1AC: aNPC_check_kutipaku + 0x8052D23C: aNPC_getP_anmData + 0x8052D268: aNPC_get_seq_cnt + 0x8052D288: aNPC_set_tex_anime + 0x8052D388: aNPC_tex_anm_ctrl_stop_seq + 0x8052D3B4: aNPC_tex_anm_ctrl_set_pat + 0x8052D428: aNPC_tex_anm_ctrl_rnd_seq + 0x8052D57C: aNPC_tex_anm_ctrl_talk_seq + 0x8052D6B0: aNPC_tex_anm_ctrl_fix_seq + 0x8052D6C8: aNPC_tex_anm_ctrl + 0x8052D844: aNPC_set_frame_sub_speed + 0x8052D880: aNPC_set_anime_speed + 0x8052D8AC: aNPC_OngenTrgStart + 0x8052DA60: aNPC_putaway_right_item + 0x8052DAFC: aNPC_takeout_right_item + 0x8052DC4C: aNPC_chk_right_hand + 0x8052DCE4: aNPC_clear_left_hand_info + 0x8052DD00: aNPC_chk_left_hand + 0x8052DDEC: aNPC_check_look_range + 0x8052DE6C: aNPC_check_look_player + 0x8052DEEC: aNPC_check_attention + 0x8052DFD4: aNPC_look_target + 0x8052E0CC: aNPC_check_condition_search_eye + 0x8052E0F8: aNPC_search_eye_target_sub + 0x8052E1BC: aNPC_search_eye_target + 0x8052E2C0: aNPC_set_head_request_sub + 0x8052E30C: aNPC_set_head_request + 0x8052E380: aNPC_force_call_req_proc + 0x8052E40C: aNPC_check_manpu_demoCode + 0x8052E544: aNPC_clear_timing_demoCode + 0x8052E5BC: aNPC_check_timing_demoCode + 0x8052E760: aNPC_check_feel_demoCode + 0x8052E854: aNPC_setup_talk_start + 0x8052E8D4: aNPC_setup_talk_end + 0x8052E924: aNPC_set_talk_info_talk_request_check + 0x8052E9CC: aNPC_talk_request_event_npc + 0x8052EAA0: aNPC_normal_talk_request + 0x8052EB20: aNPC_set_talk_info_force_call + 0x8052EB70: aNPC_force_talk_request + 0x8052EC60: aNPC_talk_request_normal_npc + 0x8052ED40: aNPC_talk_request_check + 0x8052EE00: aNPC_BGcheck + 0x8052F668: aNPC_set_over_friendship + 0x8052F8CC: aNPC_set_mv_angl + 0x8052F914: aNPC_set_avoid_pos + 0x8052F940: aNPC_set_dst_pos + 0x8052F974: aNPC_check_feel_tim + 0x8052F9D4: aNPC_calc_force_call_timer + 0x8052FA34: aNPC_calc_timer + 0x8052FA70: aNPC_position_move + 0x8052FAF4: aNPC_angle_calc + 0x8052FB34: aNPC_set_body_angle + 0x8052FD34: aNPC_calc_fatigue + 0x8052FE14: aNPC_setupAction + 0x8052FEAC: aNPC_actor_move_hide + 0x8052FEF8: aNPC_actor_move_show_before + 0x8052FF58: aNPC_actor_move_show_after + 0x8052FFDC: aNPC_actor_move_show + 0x80530090: aNPC_actor_move + 0x805300E0: aNPC_check_mask_cat_type + 0x80530138: aNPC_set_shadow_pos + 0x805301B0: aNPC_set_chn_base + 0x8053027C: aNPC_set_head_angl + 0x805302E8: aNPC_actor_draw_before + 0x8053032C: aNPC_set_right_hand_item + 0x805303C8: aNPC_set_left_hand_item + 0x80530450: aNPC_set_foot_eff + 0x80530488: aNPC_set_feel_eff + 0x805304BC: aNPC_set_accessory_mtx + 0x80530550: aNPC_actor_draw_after + 0x805305B0: aNPC_actor_draw_sub + 0x805308BC: aNPC_actor_draw + 0x805308FC: aNPC_set_eff + 0x80530998: aNPC_set_feel_effect + 0x80530B1C: aNPC_set_other_effect + 0x80530C74: aNPC_check_arrive_destination + 0x80530DB4: aNPC_set_feel_info + 0x80530E10: aNPC_set_act_obj + 0x80530F28: aNPC_check_live_target + 0x80530F58: aNPC_act_wait + 0x80530F98: aNPC_act_move + 0x80530FE8: aNPC_act_search_move + 0x80531148: aNPC_act_avoid_move + 0x80531324: aNPC_act_to_point_move + 0x805313FC: aNPC_act_turn + 0x8053141C: aNPC_act_search_turn + 0x80531494: aNPC_act_to_point_turn + 0x80531524: aNPC_act_anm_seq + 0x8053153C: aNPC_act_return_trans_item + 0x805315C0: aNPC_act_special_proc + 0x805315E8: aNPC_chk_request_act + 0x805316E4: aNPC_set_request_act + 0x80531740: aNPC_action_proc + 0x805317C8: aNPC_act_wait_main_proc + 0x80531840: aNPC_act_wait_chg_data_proc + 0x80531894: aNPC_act_wait_init_proc + 0x805318EC: aNPC_act_wait_proc + 0x80531920: aNPC_act_walk_setupAction + 0x80531974: aNPC_act_walk_main_proc + 0x805319F4: aNPC_act_walk_chg_data_proc + 0x80531A58: aNPC_act_walk_init_proc + 0x80531AD4: aNPC_act_walk_proc + 0x80531B08: aNPC_act_turn_main_proc + 0x80531B5C: aNPC_act_turn_chg_data_proc + 0x80531BC0: aNPC_act_turn_init_proc + 0x80531CA4: aNPC_act_turn_proc + 0x805331C0: aNPC_Init_OrderValue + 0x8053321C: aNPC_talk_demo_proc + 0x80533258: aNPC_talk_end_check + 0x805332DC: aNPC_act_talk_chg_step + 0x80533310: aNPC_act_talk_turn + 0x80533350: aNPC_act_talk_wait + 0x80533430: aNPC_act_talk + 0x80533488: aNPC_act_talk_main_proc + 0x805334C0: aNPC_act_talk_init_proc + 0x8053356C: aNPC_act_talk_proc + 0x80533DEC: aNPC_act_trans_chg_step + 0x80533EC8: aNPC_act_trans_set_arg_data + 0x80533EEC: aNPC_act_trans_move + 0x80533F64: aNPC_act_trans + 0x80533FD0: aNPC_act_trans_wait + 0x80534028: aNPC_act_trans_send_mail + 0x8053409C: aNPC_act_trans_main_proc + 0x80534124: aNPC_act_trans_chg_data_proc + 0x80534130: aNPC_act_trans_init_proc + 0x805341B4: aNPC_act_trans_proc + 0x805341E8: aNPC_act_get_chg_step + 0x80534368: aNPC_act_get_move + 0x805343D8: aNPC_act_get + 0x8053446C: aNPC_act_get_pull + 0x805344E8: aNPC_act_get_pull_wait + 0x805345F4: aNPC_act_get_putaway + 0x80534634: aNPC_act_get_chg_cloth + 0x80534914: aNPC_act_get_return + 0x80534988: aNPC_act_estimate + 0x805349E8: aNPC_act_get_main_proc + 0x80534A70: aNPC_act_get_chg_data_proc + 0x80534A7C: aNPC_act_get_init_proc + 0x80534AFC: aNPC_act_get_proc + 0x80534B30: aNPC_act_ensou_main_proc + 0x80534B54: aNPC_act_ensou_init_proc + 0x80534B88: aNPC_act_ensou_proc + 0x80535254: aNPC_check_uzai_cross + 0x8053533C: aNPC_check_uzai + 0x80535B2C: aNPC_avoid_obstacle + 0x80535C58: aNPC_chk_talk_start + 0x805360A0: aNPC_check_fatigue + 0x805361A8: aNPC_hate_player + 0x80536254: aNPC_love_player + 0x805363D4: aNPC_chk_friendship_lv + 0x8053644C: aNPC_chk_friendship_sub + 0x805364D8: aNPC_chk_friendship + 0x805365BC: aNPC_think_chk_interrupt_proc + 0x805368A0: aNPC_think_wait_init_proc + 0x805368D4: aNPC_think_wait_proc + 0x805368FC: aNPC_think_special_proc + 0x80536924: aNPC_think_init_proc + 0x80536980: aNPC_think_main_proc + 0x805369BC: aNPC_think_proc + 0x80536D2C: aNPC_think_wander_decide_next + 0x80536F78: aNPC_think_wander_next_act + 0x80536FA4: aNPC_think_wander_main_proc + 0x80536FE0: aNPC_think_wander_init_proc + 0x80537104: aNPC_think_wander_proc + 0x80537D78: aNPC_set_hide_request + 0x80537DC8: aNPC_set_hide_flg + 0x80537E8C: aNPC_stand_schedule_main_proc + 0x80537F0C: aNPC_stand_schedule_init_proc + 0x80537F60: aNPC_stand_schedule_proc + 0x80537F94: aNPC_wander_schedule_main_proc + 0x80537FE8: aNPC_wander_schedule_init_proc + 0x80538034: aNPC_wander_schedule_proc + 0x805380E8: aNPC_special_schedule_proc + 0x80538110: aNPC_schedule_init + 0x805381AC: aNPC_chg_schedule + 0x805381D0: aNPC_set_schedule + 0x805381F8: aNPC_schedule_proc + 0x8053829C: aNPC_first_set_schedule + 0x80538318: aNPC_field_schedule_think_init + 0x80538378: aNPC_field_schedule_main_proc + 0x80538450: aNPC_field_schedule_init_proc + 0x805384B8: aNPC_field_schedule_proc + 0x805384EC: aNPC_in_house_schedule_think_init + 0x80538520: aNPC_in_house_schedule_main_proc + 0x80538630: aNPC_in_house_schedule_init_proc + 0x805386D8: aNPC_in_house_schedule_proc + 0x805387B0: aNPC_sleep_schedule_main_proc + 0x80538878: aNPC_sleep_schedule_init_proc + 0x805388E4: aNPC_sleep_schedule_proc + 0x80538918: aNPC_actor_init_common_proc + 0x8053898C: aNPC_actor_init_for_normal + 0x805389F0: aNPC_actor_init_for_special + 0x80538B24: aNPC_actor_init + 0x80538B6C: aNPC_make_accessory + 0x80538C00: aNPC_setP_friendship + 0x80538CB0: aNPC_set_start_pos + 0x80538CE0: aNPC_actor_schedule + 0x80538D94: aNPC_actor_ct + 0x80539300: aNPC_actor_dt + 0x8053941C: aNPC_actor_save_for_normal + 0x8053953C: aNPC_actor_save_for_special + 0x80539594: aNPC_actor_save + 0x80539618: aNPC_actor_birth_check + 0x8053972C: aNPC_rebuild_dma + 0x8053974C: aNPC_set_attention_request_proc + 0x80539794: aNPC_get_draw_data_idx + 0x8053986C: aNPC_check_dma_cloth_data + 0x80539904: aNPC_check_dma_cloth_data_sub + 0x80539954: aNPC_check_dma_eventNpc_cloth_data + 0x805399C4: aNPC_check_dma_maskNpc_cloth_data + 0x805399FC: aNPC_setupNpc_check + 0x80539A8C: aNPC_setupActor_sub + 0x80539B44: aNPC_setupActor_proc + 0x8053A13C: aNPC_free_actor_area_proc + 0x8053A184: aNPC_dma_draw_data_proc + 0x8053A354: aNPC_actor_ct_c + 0x8053A6FC: aNPC_actor_dt_c + 0x8053A784: aNPC_check_cond_to_greeting + 0x8053A804: aNPC_greeting_area_check + 0x8053A944: aNPC_set_attention + 0x8053AAB0: aNPC_actor_move_c 0x806A1500: aNPC_req_default_data 0x806A1530: aNPC_animeTable 0x806A1CE0: aNPC_animeSeqNoTable @@ -55413,257 +55422,257 @@ src/ac_npc.c: 0x81301840: aNPC_ctrlActor 0x81319AC8: aNPC_clip src/ac_npc2.c: - 0x8053AD41: aNPC_dma_cloth_data - 0x8053ADFD: aNPC_getP_cloth_tex_rom - 0x8053AE61: aNPC_getP_cloth_pal_rom - 0x8053AEC5: aNPC_dma_cloth_tex_data_fg - 0x8053AF09: aNPC_dma_cloth_pal_data_fg - 0x8053AF4D: aNPC_dma_cloth_data_fg - 0x8053AFF5: aNPC_reset_trans_condition_cloth_data - 0x8053B04D: aNPC_get_same_cloth_data_area - 0x8053B085: aNPC_dma_cloth_data_check - 0x8053B111: aNPC_get_new_cloth_data_area - 0x8053B151: aNPC_get_no_use_cloth_data_area - 0x8053B1A9: aNPC_cancel_cloth_data - 0x8053B1E1: aNPC_dma_regist_cloth_data - 0x8053B2B5: aNPC_dma_regist_check_cloth_data - 0x8053B311: aNPC_keep_cloth_data_area - 0x8053B3FD: aNPC_rebuild_cloth_data - 0x8053B421: aNPC_change_cloth_data - 0x8053B509: aNPC_setup_chg_cloth - 0x8053B515: aNPC_setup_next_cloth - 0x8053B521: aNPC_setup_cloth - 0x8053B539: aNPC_get_feel_info - 0x8053B561: aNPC_clear_all_morph_counter - 0x8053B579: aNPC_check_talk_anime - 0x8053B61D: aNPC_set_anime_se_info - 0x8053B709: aNPC_Animation_init - 0x8053BA01: aNPC_check_anime_timing - 0x8053BAB5: aNPC_anime_proc_foot - 0x8053BBFD: aNPC_anime_proc_other - 0x8053BC49: aNPC_anime_se_proc - 0x8053BCD1: aNPC_anime_proc - 0x8053BDA5: aNPC_check_kutipaku - 0x8053BE35: aNPC_getP_anmData - 0x8053BE61: aNPC_get_seq_cnt - 0x8053BE81: aNPC_set_tex_anime - 0x8053BF81: aNPC_tex_anm_ctrl_stop_seq - 0x8053BFAD: aNPC_tex_anm_ctrl_set_pat - 0x8053C021: aNPC_tex_anm_ctrl_rnd_seq - 0x8053C175: aNPC_tex_anm_ctrl_talk_seq - 0x8053C2A9: aNPC_tex_anm_ctrl_fix_seq - 0x8053C2C1: aNPC_tex_anm_ctrl - 0x8053C43D: aNPC_set_frame_sub_speed - 0x8053C479: aNPC_set_anime_speed - 0x8053C4A5: aNPC_OngenTrgStart - 0x8053C551: aNPC_putaway_right_item - 0x8053C5ED: aNPC_takeout_right_item - 0x8053C729: aNPC_chk_right_hand - 0x8053C7C1: aNPC_clear_left_hand_info - 0x8053C7DD: aNPC_chk_left_hand - 0x8053C8C9: aNPC_check_look_range - 0x8053C949: aNPC_check_look_player - 0x8053C9C9: aNPC_check_attention - 0x8053CAB1: aNPC_look_target - 0x8053CBA1: aNPC_check_condition_search_eye - 0x8053CBCD: aNPC_search_eye_target_sub - 0x8053CC91: aNPC_search_eye_target - 0x8053CD95: aNPC_set_head_request_sub - 0x8053CDE1: aNPC_set_head_request - 0x8053CE55: aNPC_force_call_req_proc - 0x8053CEE1: aNPC_check_manpu_demoCode - 0x8053D019: aNPC_clear_timing_demoCode - 0x8053D091: aNPC_check_timing_demoCode - 0x8053D2E9: aNPC_check_feel_demoCode - 0x8053D3DD: aNPC_setup_talk_start - 0x8053D45D: aNPC_setup_talk_end - 0x8053D4B5: aNPC_set_talk_info_talk_request_check - 0x8053D55D: aNPC_talk_request_event_npc - 0x8053D631: aNPC_normal_talk_request - 0x8053D6B1: aNPC_set_talk_info_force_call - 0x8053D701: aNPC_force_talk_request - 0x8053D7F1: aNPC_talk_request_normal_npc - 0x8053D8D1: aNPC_talk_request_check - 0x8053D9C5: aNPC_BGcheck - 0x8053DB01: aNPC_set_over_friendship - 0x8053DBA1: aNPC_set_mv_angl - 0x8053DBE9: aNPC_set_avoid_pos - 0x8053DC11: aNPC_set_dst_pos - 0x8053DC41: aNPC_check_feel_tim - 0x8053DC85: aNPC_calc_force_call_timer - 0x8053DCCD: aNPC_calc_timer - 0x8053DCED: aNPC_position_move - 0x8053DD51: aNPC_angle_calc - 0x8053DD91: aNPC_set_body_angle - 0x8053DDFD: aNPC_calc_fatigue - 0x8053DE39: aNPC_setupAction - 0x8053DED1: aNPC_actor_move_hide - 0x8053DF1D: aNPC_actor_move_show_before - 0x8053DF65: aNPC_actor_move_show_after - 0x8053DFE9: aNPC_actor_move_show - 0x8053E06D: aNPC_actor_move - 0x8053E0BD: aNPC_check_mask_cat_type - 0x8053E115: aNPC_set_shadow_pos - 0x8053E18D: aNPC_set_chn_base - 0x8053E259: aNPC_set_head_angl - 0x8053E2C5: aNPC_actor_draw_before - 0x8053E309: aNPC_set_right_hand_item - 0x8053E3A5: aNPC_set_left_hand_item - 0x8053E42D: aNPC_set_foot_eff - 0x8053E465: aNPC_set_feel_eff - 0x8053E499: aNPC_set_accessory_mtx - 0x8053E52D: aNPC_actor_draw_after - 0x8053E58D: aNPC_actor_draw_sub - 0x8053E899: aNPC_actor_draw - 0x8053E8D9: aNPC_set_eff - 0x8053E975: aNPC_set_feel_effect - 0x8053EAF9: aNPC_set_other_effect - 0x8053EBB9: aNPC_check_arrive_destination - 0x8053ED21: aNPC_set_feel_info - 0x8053ED7D: aNPC_set_act_obj - 0x8053EDFD: aNPC_check_live_target - 0x8053EE2D: aNPC_act_wait - 0x8053EE6D: aNPC_act_move - 0x8053EEBD: aNPC_act_search_move - 0x8053EF7D: aNPC_act_avoid_move - 0x8053F075: aNPC_act_to_point_move - 0x8053F171: aNPC_act_turn - 0x8053F191: aNPC_act_search_turn - 0x8053F209: aNPC_act_to_point_turn - 0x8053F299: aNPC_act_anm_seq - 0x8053F2ED: aNPC_act_return_trans_item - 0x8053F365: aNPC_act_special_proc - 0x8053F38D: aNPC_chk_request_act - 0x8053F489: aNPC_set_request_act - 0x8053F4E5: aNPC_action_proc - 0x8053F56D: aNPC_act_wait_main_proc - 0x8053F5E5: aNPC_act_wait_chg_data_proc - 0x8053F639: aNPC_act_wait_init_proc - 0x8053F691: aNPC_act_wait_proc - 0x8053F6C5: aNPC_act_walk_setupAction - 0x8053F719: aNPC_act_walk_main_proc - 0x8053F7A9: aNPC_act_walk_chg_data_proc - 0x8053F801: aNPC_act_walk_init_proc - 0x8053F84D: aNPC_act_walk_proc - 0x8053F881: aNPC_act_turn_main_proc - 0x8053F8D5: aNPC_act_turn_chg_data_proc - 0x8053F939: aNPC_act_turn_init_proc - 0x8053FA15: aNPC_act_turn_proc - 0x8053FA49: aNPC_Init_OrderValue - 0x8053FAA5: aNPC_talk_demo_proc - 0x8053FAE1: aNPC_talk_end_check - 0x8053FB65: aNPC_act_talk_chg_step - 0x8053FBB1: aNPC_act_talk_turn - 0x8053FBF1: aNPC_act_talk_wait - 0x8053FCD1: aNPC_act_talk - 0x8053FD29: aNPC_act_talk_main_proc - 0x8053FD61: aNPC_act_talk_init_proc - 0x8053FDF1: aNPC_act_talk_proc - 0x8053FF69: aNPC_act_trans_chg_step - 0x80540045: aNPC_act_trans_set_arg_data - 0x80540069: aNPC_act_trans_move - 0x805400E1: aNPC_act_trans - 0x8054014D: aNPC_act_trans_wait - 0x805401A5: aNPC_act_trans_send_mail - 0x80540219: aNPC_act_trans_main_proc - 0x805402A1: aNPC_act_trans_chg_data_proc - 0x805402AD: aNPC_act_trans_init_proc - 0x80540331: aNPC_act_trans_proc - 0x80540365: aNPC_act_get_chg_step - 0x805404E5: aNPC_act_get_move - 0x80540555: aNPC_act_get - 0x805405E9: aNPC_act_get_pull - 0x80540665: aNPC_act_get_pull_wait - 0x80540771: aNPC_act_get_putaway - 0x805407B1: aNPC_act_get_chg_cloth - 0x8054087D: aNPC_act_get_return - 0x805408F1: aNPC_act_estimate - 0x80540951: aNPC_act_get_main_proc - 0x805409D9: aNPC_act_get_chg_data_proc - 0x805409E5: aNPC_act_get_init_proc - 0x80540A65: aNPC_act_get_proc - 0x80540FA5: aNPC_act_ensou_main_proc - 0x80540FB9: aNPC_act_ensou_init_proc - 0x80540FED: aNPC_act_ensou_proc - 0x8054105D: aNPC_check_uzai_cross - 0x80541111: aNPC_check_uzai - 0x805412C5: aNPC_chk_talk_start - 0x80541355: aNPC_check_fatigue - 0x80541EED: aNPC_avoid_obstacle - 0x80541F7D: aNPC_hate_player - 0x8054216D: aNPC_love_player - 0x8054235D: aNPC_chk_friendship_lv - 0x805423B5: aNPC_chk_friendship_sub - 0x80542435: aNPC_chk_friendship - 0x805424AD: aNPC_think_chk_interrupt_proc - 0x805425AD: aNPC_think_wait_init_proc - 0x805425E1: aNPC_think_wait_proc - 0x805426A1: aNPC_think_special_proc - 0x805426C9: aNPC_think_init_proc - 0x80542725: aNPC_think_main_proc - 0x80542761: aNPC_think_proc - 0x805427C9: aNPC_think_wander_decide_next - 0x80542985: aNPC_think_wander_next_act - 0x805429B1: aNPC_think_wander_main_proc - 0x805429FD: aNPC_think_wander_init_proc - 0x80542A3D: aNPC_think_wander_proc - 0x8054313D: aNPC_set_hide_request - 0x8054318D: aNPC_set_hide_flg - 0x805431D1: aNPC_sleep_schedule_main_proc - 0x80543205: aNPC_sleep_schedule_init_proc - 0x80543251: aNPC_sleep_schedule_proc - 0x80543285: aNPC_stand_schedule_main_proc - 0x805432FD: aNPC_stand_schedule_init_proc - 0x80543349: aNPC_stand_schedule_proc - 0x8054337D: aNPC_wander_schedule_main_proc - 0x8054339D: aNPC_wander_schedule_init_proc - 0x805433E9: aNPC_wander_schedule_proc - 0x8054341D: aNPC_special_schedule_proc - 0x80543445: aNPC_schedule_init - 0x80543481: aNPC_chg_schedule - 0x805434A5: aNPC_set_schedule - 0x805434CD: aNPC_schedule_proc - 0x80543511: aNPC_first_set_schedule - 0x80543569: aNPC_field_schedule_think_init - 0x8054359D: aNPC_field_schedule_main_proc - 0x80543649: aNPC_field_schedule_init_proc - 0x805436C5: aNPC_field_schedule_proc - 0x805436F9: aNPC_in_house_schedule_think_init - 0x8054372D: aNPC_in_house_schedule_main_proc - 0x805437C5: aNPC_in_house_schedule_init_proc - 0x80543851: aNPC_in_house_schedule_proc - 0x80543885: aNPC_actor_init_common_proc - 0x805438F9: aNPC_actor_init_for_normal - 0x8054395D: aNPC_actor_init_for_special - 0x80543A91: aNPC_actor_init - 0x80543AD9: aNPC_make_accessory - 0x80543B6D: aNPC_setP_friendship - 0x80543D05: aNPC_set_start_pos - 0x80543E59: aNPC_actor_schedule - 0x80543F0D: aNPC_actor_ct - 0x805443FD: aNPC_actor_dt - 0x805444F9: aNPC_actor_save_for_normal - 0x805445B9: aNPC_actor_save_for_special - 0x80544611: aNPC_actor_save - 0x80544671: aNPC_actor_birth_check - 0x80544785: aNPC_rebuild_dma - 0x805449D5: aNPC_set_attention_request_proc - 0x80544A1D: aNPC_get_draw_data_idx - 0x80544AF5: aNPC_check_dma_cloth_data - 0x80544B8D: aNPC_check_dma_cloth_data_sub - 0x80544BDD: aNPC_check_dma_eventNpc_cloth_data - 0x80544C4D: aNPC_check_dma_maskNpc_cloth_data - 0x80544C85: aNPC_setupNpc_check - 0x80544D15: aNPC_setupActor_sub - 0x80544DCD: aNPC_setupActor_proc - 0x80544FC9: aNPC_free_actor_area_proc - 0x80544FE9: aNPC_dma_draw_data_proc - 0x80545035: aNPC_actor_ct_c - 0x805453B9: aNPC_actor_dt_c - 0x805453DD: aNPC_check_cond_to_greeting - 0x8054545D: aNPC_greeting_area_check - 0x8054559D: aNPC_set_attention - 0x80545605: aNPC_actor_move_c + 0x8053AD40: aNPC_dma_cloth_data + 0x8053ADFC: aNPC_getP_cloth_tex_rom + 0x8053AE60: aNPC_getP_cloth_pal_rom + 0x8053AEC4: aNPC_dma_cloth_tex_data_fg + 0x8053AF08: aNPC_dma_cloth_pal_data_fg + 0x8053AF4C: aNPC_dma_cloth_data_fg + 0x8053AFF4: aNPC_reset_trans_condition_cloth_data + 0x8053B04C: aNPC_get_same_cloth_data_area + 0x8053B084: aNPC_dma_cloth_data_check + 0x8053B110: aNPC_get_new_cloth_data_area + 0x8053B150: aNPC_get_no_use_cloth_data_area + 0x8053B1A8: aNPC_cancel_cloth_data + 0x8053B1E0: aNPC_dma_regist_cloth_data + 0x8053B2B4: aNPC_dma_regist_check_cloth_data + 0x8053B310: aNPC_keep_cloth_data_area + 0x8053B3FC: aNPC_rebuild_cloth_data + 0x8053B420: aNPC_change_cloth_data + 0x8053B508: aNPC_setup_chg_cloth + 0x8053B514: aNPC_setup_next_cloth + 0x8053B520: aNPC_setup_cloth + 0x8053B538: aNPC_get_feel_info + 0x8053B560: aNPC_clear_all_morph_counter + 0x8053B578: aNPC_check_talk_anime + 0x8053B61C: aNPC_set_anime_se_info + 0x8053B708: aNPC_Animation_init + 0x8053BA00: aNPC_check_anime_timing + 0x8053BAB4: aNPC_anime_proc_foot + 0x8053BBFC: aNPC_anime_proc_other + 0x8053BC48: aNPC_anime_se_proc + 0x8053BCD0: aNPC_anime_proc + 0x8053BDA4: aNPC_check_kutipaku + 0x8053BE34: aNPC_getP_anmData + 0x8053BE60: aNPC_get_seq_cnt + 0x8053BE80: aNPC_set_tex_anime + 0x8053BF80: aNPC_tex_anm_ctrl_stop_seq + 0x8053BFAC: aNPC_tex_anm_ctrl_set_pat + 0x8053C020: aNPC_tex_anm_ctrl_rnd_seq + 0x8053C174: aNPC_tex_anm_ctrl_talk_seq + 0x8053C2A8: aNPC_tex_anm_ctrl_fix_seq + 0x8053C2C0: aNPC_tex_anm_ctrl + 0x8053C43C: aNPC_set_frame_sub_speed + 0x8053C478: aNPC_set_anime_speed + 0x8053C4A4: aNPC_OngenTrgStart + 0x8053C550: aNPC_putaway_right_item + 0x8053C5EC: aNPC_takeout_right_item + 0x8053C728: aNPC_chk_right_hand + 0x8053C7C0: aNPC_clear_left_hand_info + 0x8053C7DC: aNPC_chk_left_hand + 0x8053C8C8: aNPC_check_look_range + 0x8053C948: aNPC_check_look_player + 0x8053C9C8: aNPC_check_attention + 0x8053CAB0: aNPC_look_target + 0x8053CBA0: aNPC_check_condition_search_eye + 0x8053CBCC: aNPC_search_eye_target_sub + 0x8053CC90: aNPC_search_eye_target + 0x8053CD94: aNPC_set_head_request_sub + 0x8053CDE0: aNPC_set_head_request + 0x8053CE54: aNPC_force_call_req_proc + 0x8053CEE0: aNPC_check_manpu_demoCode + 0x8053D018: aNPC_clear_timing_demoCode + 0x8053D090: aNPC_check_timing_demoCode + 0x8053D2E8: aNPC_check_feel_demoCode + 0x8053D3DC: aNPC_setup_talk_start + 0x8053D45C: aNPC_setup_talk_end + 0x8053D4B4: aNPC_set_talk_info_talk_request_check + 0x8053D55C: aNPC_talk_request_event_npc + 0x8053D630: aNPC_normal_talk_request + 0x8053D6B0: aNPC_set_talk_info_force_call + 0x8053D700: aNPC_force_talk_request + 0x8053D7F0: aNPC_talk_request_normal_npc + 0x8053D8D0: aNPC_talk_request_check + 0x8053D9C4: aNPC_BGcheck + 0x8053DB00: aNPC_set_over_friendship + 0x8053DBA0: aNPC_set_mv_angl + 0x8053DBE8: aNPC_set_avoid_pos + 0x8053DC10: aNPC_set_dst_pos + 0x8053DC40: aNPC_check_feel_tim + 0x8053DC84: aNPC_calc_force_call_timer + 0x8053DCCC: aNPC_calc_timer + 0x8053DCEC: aNPC_position_move + 0x8053DD50: aNPC_angle_calc + 0x8053DD90: aNPC_set_body_angle + 0x8053DDFC: aNPC_calc_fatigue + 0x8053DE38: aNPC_setupAction + 0x8053DED0: aNPC_actor_move_hide + 0x8053DF1C: aNPC_actor_move_show_before + 0x8053DF64: aNPC_actor_move_show_after + 0x8053DFE8: aNPC_actor_move_show + 0x8053E06C: aNPC_actor_move + 0x8053E0BC: aNPC_check_mask_cat_type + 0x8053E114: aNPC_set_shadow_pos + 0x8053E18C: aNPC_set_chn_base + 0x8053E258: aNPC_set_head_angl + 0x8053E2C4: aNPC_actor_draw_before + 0x8053E308: aNPC_set_right_hand_item + 0x8053E3A4: aNPC_set_left_hand_item + 0x8053E42C: aNPC_set_foot_eff + 0x8053E464: aNPC_set_feel_eff + 0x8053E498: aNPC_set_accessory_mtx + 0x8053E52C: aNPC_actor_draw_after + 0x8053E58C: aNPC_actor_draw_sub + 0x8053E898: aNPC_actor_draw + 0x8053E8D8: aNPC_set_eff + 0x8053E974: aNPC_set_feel_effect + 0x8053EAF8: aNPC_set_other_effect + 0x8053EBB8: aNPC_check_arrive_destination + 0x8053ED20: aNPC_set_feel_info + 0x8053ED7C: aNPC_set_act_obj + 0x8053EDFC: aNPC_check_live_target + 0x8053EE2C: aNPC_act_wait + 0x8053EE6C: aNPC_act_move + 0x8053EEBC: aNPC_act_search_move + 0x8053EF7C: aNPC_act_avoid_move + 0x8053F074: aNPC_act_to_point_move + 0x8053F170: aNPC_act_turn + 0x8053F190: aNPC_act_search_turn + 0x8053F208: aNPC_act_to_point_turn + 0x8053F298: aNPC_act_anm_seq + 0x8053F2EC: aNPC_act_return_trans_item + 0x8053F364: aNPC_act_special_proc + 0x8053F38C: aNPC_chk_request_act + 0x8053F488: aNPC_set_request_act + 0x8053F4E4: aNPC_action_proc + 0x8053F56C: aNPC_act_wait_main_proc + 0x8053F5E4: aNPC_act_wait_chg_data_proc + 0x8053F638: aNPC_act_wait_init_proc + 0x8053F690: aNPC_act_wait_proc + 0x8053F6C4: aNPC_act_walk_setupAction + 0x8053F718: aNPC_act_walk_main_proc + 0x8053F7A8: aNPC_act_walk_chg_data_proc + 0x8053F800: aNPC_act_walk_init_proc + 0x8053F84C: aNPC_act_walk_proc + 0x8053F880: aNPC_act_turn_main_proc + 0x8053F8D4: aNPC_act_turn_chg_data_proc + 0x8053F938: aNPC_act_turn_init_proc + 0x8053FA14: aNPC_act_turn_proc + 0x8053FA48: aNPC_Init_OrderValue + 0x8053FAA4: aNPC_talk_demo_proc + 0x8053FAE0: aNPC_talk_end_check + 0x8053FB64: aNPC_act_talk_chg_step + 0x8053FBB0: aNPC_act_talk_turn + 0x8053FBF0: aNPC_act_talk_wait + 0x8053FCD0: aNPC_act_talk + 0x8053FD28: aNPC_act_talk_main_proc + 0x8053FD60: aNPC_act_talk_init_proc + 0x8053FDF0: aNPC_act_talk_proc + 0x8053FF68: aNPC_act_trans_chg_step + 0x80540044: aNPC_act_trans_set_arg_data + 0x80540068: aNPC_act_trans_move + 0x805400E0: aNPC_act_trans + 0x8054014C: aNPC_act_trans_wait + 0x805401A4: aNPC_act_trans_send_mail + 0x80540218: aNPC_act_trans_main_proc + 0x805402A0: aNPC_act_trans_chg_data_proc + 0x805402AC: aNPC_act_trans_init_proc + 0x80540330: aNPC_act_trans_proc + 0x80540364: aNPC_act_get_chg_step + 0x805404E4: aNPC_act_get_move + 0x80540554: aNPC_act_get + 0x805405E8: aNPC_act_get_pull + 0x80540664: aNPC_act_get_pull_wait + 0x80540770: aNPC_act_get_putaway + 0x805407B0: aNPC_act_get_chg_cloth + 0x8054087C: aNPC_act_get_return + 0x805408F0: aNPC_act_estimate + 0x80540950: aNPC_act_get_main_proc + 0x805409D8: aNPC_act_get_chg_data_proc + 0x805409E4: aNPC_act_get_init_proc + 0x80540A64: aNPC_act_get_proc + 0x80540FA4: aNPC_act_ensou_main_proc + 0x80540FB8: aNPC_act_ensou_init_proc + 0x80540FEC: aNPC_act_ensou_proc + 0x8054105C: aNPC_check_uzai_cross + 0x80541110: aNPC_check_uzai + 0x805412C4: aNPC_chk_talk_start + 0x80541354: aNPC_check_fatigue + 0x80541EEC: aNPC_avoid_obstacle + 0x80541F7C: aNPC_hate_player + 0x8054216C: aNPC_love_player + 0x8054235C: aNPC_chk_friendship_lv + 0x805423B4: aNPC_chk_friendship_sub + 0x80542434: aNPC_chk_friendship + 0x805424AC: aNPC_think_chk_interrupt_proc + 0x805425AC: aNPC_think_wait_init_proc + 0x805425E0: aNPC_think_wait_proc + 0x805426A0: aNPC_think_special_proc + 0x805426C8: aNPC_think_init_proc + 0x80542724: aNPC_think_main_proc + 0x80542760: aNPC_think_proc + 0x805427C8: aNPC_think_wander_decide_next + 0x80542984: aNPC_think_wander_next_act + 0x805429B0: aNPC_think_wander_main_proc + 0x805429FC: aNPC_think_wander_init_proc + 0x80542A3C: aNPC_think_wander_proc + 0x8054313C: aNPC_set_hide_request + 0x8054318C: aNPC_set_hide_flg + 0x805431D0: aNPC_sleep_schedule_main_proc + 0x80543204: aNPC_sleep_schedule_init_proc + 0x80543250: aNPC_sleep_schedule_proc + 0x80543284: aNPC_stand_schedule_main_proc + 0x805432FC: aNPC_stand_schedule_init_proc + 0x80543348: aNPC_stand_schedule_proc + 0x8054337C: aNPC_wander_schedule_main_proc + 0x8054339C: aNPC_wander_schedule_init_proc + 0x805433E8: aNPC_wander_schedule_proc + 0x8054341C: aNPC_special_schedule_proc + 0x80543444: aNPC_schedule_init + 0x80543480: aNPC_chg_schedule + 0x805434A4: aNPC_set_schedule + 0x805434CC: aNPC_schedule_proc + 0x80543510: aNPC_first_set_schedule + 0x80543568: aNPC_field_schedule_think_init + 0x8054359C: aNPC_field_schedule_main_proc + 0x80543648: aNPC_field_schedule_init_proc + 0x805436C4: aNPC_field_schedule_proc + 0x805436F8: aNPC_in_house_schedule_think_init + 0x8054372C: aNPC_in_house_schedule_main_proc + 0x805437C4: aNPC_in_house_schedule_init_proc + 0x80543850: aNPC_in_house_schedule_proc + 0x80543884: aNPC_actor_init_common_proc + 0x805438F8: aNPC_actor_init_for_normal + 0x8054395C: aNPC_actor_init_for_special + 0x80543A90: aNPC_actor_init + 0x80543AD8: aNPC_make_accessory + 0x80543B6C: aNPC_setP_friendship + 0x80543D04: aNPC_set_start_pos + 0x80543E58: aNPC_actor_schedule + 0x80543F0C: aNPC_actor_ct + 0x805443FC: aNPC_actor_dt + 0x805444F8: aNPC_actor_save_for_normal + 0x805445B8: aNPC_actor_save_for_special + 0x80544610: aNPC_actor_save + 0x80544670: aNPC_actor_birth_check + 0x80544784: aNPC_rebuild_dma + 0x805449D4: aNPC_set_attention_request_proc + 0x80544A1C: aNPC_get_draw_data_idx + 0x80544AF4: aNPC_check_dma_cloth_data + 0x80544B8C: aNPC_check_dma_cloth_data_sub + 0x80544BDC: aNPC_check_dma_eventNpc_cloth_data + 0x80544C4C: aNPC_check_dma_maskNpc_cloth_data + 0x80544C84: aNPC_setupNpc_check + 0x80544D14: aNPC_setupActor_sub + 0x80544DCC: aNPC_setupActor_proc + 0x80544FC8: aNPC_free_actor_area_proc + 0x80544FE8: aNPC_dma_draw_data_proc + 0x80545034: aNPC_actor_ct_c + 0x805453B8: aNPC_actor_dt_c + 0x805453DC: aNPC_check_cond_to_greeting + 0x8054545C: aNPC_greeting_area_check + 0x8054559C: aNPC_set_attention + 0x80545604: aNPC_actor_move_c 0x806A2C78: aNPC_req_default_data 0x806A2CA8: aNPC_animeTable 0x806A3458: aNPC_animeSeqNoTable @@ -55684,170 +55693,170 @@ src/ac_npc2.c: 0x81319BF8: aNPC_ctrlActor 0x81319F94: aNPC_clip src/ac_npc_conv_master.c: - 0x80545B7D: aNSC_set_animation - 0x80545BCD: aNSC_BGcheck - 0x80545C11: aNSC_check_present_balloon - 0x80545C7D: aNSC_calc_talk_start_tim - 0x80545CA5: aNSC_request_show_camera - 0x80545D19: aNSC_Set_ListenAble - 0x80545D3D: aNSC_set_sell_camera - 0x80545DD1: aNSC_sell_camera - 0x80545E71: aNSC_talk_demo_proc - 0x80545EE1: aNSC_set_stop_spd - 0x80545EFD: aNSC_set_walk_spd - 0x80545F29: aNSC_set_run_spd - 0x80545F55: aNSC_set_rehouse_order_date - 0x80545F7D: aNSC_set_make_basement_info - 0x80545FD9: aNSC_getP_free_ftr_order - 0x80546011: aNSC_set_ftr_order - 0x8054605D: aNSC_set_last_day_str - 0x805460B1: aNSC_set_pw_name_str - 0x8054610D: aNSC_set_value_str - 0x80546169: aNSC_set_item_name_str - 0x805461CD: aNSC_set_item_str - 0x80546225: aNSC_set_pw_password_str - 0x80546285: aNSC_set_pw_info_str - 0x805462ED: aNSC_pc_check_password_famicom - 0x80546335: aNSC_pc_check_password_npc - 0x805463A1: aNSC_pc_check_password_card_e - 0x805463A9: aNSC_pc_check_password_magazine - 0x8054641D: aNSC_pc_check_password_card_e_mini - 0x80546435: aNSC_pc_check_password_user - 0x8054647D: aNSC_pc_check_password - 0x80546541: aNSC_check_possession_item_make_password - 0x805465ED: aNSC_set_buy_sum_str - 0x805466C1: aNSC_decide_next_move_act - 0x805467D1: aNSC_set_zone_data - 0x80546855: aNSC_set_player_angl - 0x80546861: aNSC_money_check - 0x80546881: aNSC_get_sell_price - 0x805468A1: aNSC_check_money_overflow - 0x80546935: aNSC_check_buy_item_sub - 0x805469D9: aNSC_check_buy_paper - 0x80546AC9: aNSC_check_buy_item_single - 0x80546BE1: aNSC_check_buy_item_plural - 0x80546C6D: aNSC_check_buy_item - 0x80546CA1: aNSC_check_item_with_ticket - 0x80546D21: aNSC_setup_ticket_remain - 0x80546D69: aNSC_check_same_month_ticket - 0x80546DCD: aNSC_get_msg_no - 0x80546E15: aNSC_Set_continue_msg_num - 0x80546E55: aNSC_ChangeMsgData - 0x80546E95: aNSC_set_player_angle - 0x80546F9D: aNSC_set_talk_info_show_item - 0x80546FD5: aNSC_set_talk_info_show_cloth - 0x8054700D: aNSC_set_talk_info_sell_item - 0x805470CD: aNSC_set_talk_info_message_ctrl - 0x805470F5: aNSC_set_talk_info_message_ctrl_aprilfool - 0x8054713D: aNSC_set_talk_info_message_ctrl_tokubai - 0x80547165: aNSC_message_ctrl - 0x80547545: aNSC_buy_item_single - 0x80547635: aNSC_buy_paper - 0x80547745: aNSC_buy_item_only_one - 0x80547955: aNSC_get_start_call_msg_no - 0x80547991: aNSC_set_talk_info_start_wait - 0x80547B85: aNSC_set_talk_info_start_wait1 - 0x80547C65: aNSC_set_talk_info_start_wait2 - 0x80547CB1: aNSC_set_talk_info_start_wait3 - 0x80547CED: aNSC_set_talk_info_start_wait4 - 0x80547D15: aNSC_start_wait - 0x80547FC9: aNSC_say_hello_approach - 0x80548059: aNSC_say_hello_end_wait - 0x805480CD: aNSC_check_col_chg_or_make_basement - 0x80548199: aNSC_check_roof_col_order - 0x805482D1: aNSC_check_roof_col_order2 - 0x805483C5: aNSC_present_balloon_start_wait - 0x80548421: aNSC_present_balloon_trans_move - 0x8054845D: aNSC_present_balloon_trans_takeout - 0x80548539: aNSC_present_balloon_trans_wait - 0x80548579: aNSC_present_balloon_end_wait - 0x805485E1: aNSC_set_talk_info_request_Q_start_wait - 0x80548611: aNSC_request_Q_start_wait - 0x80548695: aNSC_request_Q_answer_wait - 0x805487A9: aNSC_request_Q_answer_wait2 - 0x80548939: aNSC_request_Q_end_wait - 0x805489AD: aNSC_answer_buy_item - 0x80548A29: aNSC_buy_menu_open_wait - 0x80548A81: aNSC_buy_menu_close_wait - 0x80548AB5: aNSC_msg_win_open_wait - 0x80548B7D: aNSC_buy_sum_check - 0x80548C79: aNSC_buy_check - 0x80548EF9: aNSC_buy_after_service - 0x80548F75: aNSC_buy_continue_check - 0x80549061: aNSC_receive_check - 0x80549105: aNSC_msg_win_open_wait2 - 0x805491CD: aNSC_order_check - 0x805492C9: aNSC_sell_check_before - 0x80549331: aNSC_sell_check - 0x805493E9: aNSC_sell_answer0 - 0x8054961D: aNSC_sell_item_with_ticket - 0x805496D5: aNSC_show_item_check - 0x805498A1: aNSC_chg_cloth_start_wait - 0x80549969: aNSC_chg_cloth_end_wait - 0x805499C5: aNSC_pw_entry_send_addr_start_wait - 0x80549A3D: aNSC_pw_msg_win_open_wait - 0x80549AE9: aNSC_pw_send_addr_check - 0x80549BC5: aNSC_pw_sel_item_start_wait - 0x80549C3D: aNSC_pw_msg_win_open_wait2 - 0x80549CED: aNSC_pw_send_check - 0x80549E19: aNSC_pw_retry_sel_item_check - 0x80549EE1: aNSC_pc_input_pw_start_wait - 0x80549F59: aNSC_pc_msg_win_open_wait - 0x80549FED: aNSC_pc_retry_input_pw_check - 0x8054A0E1: aNSC_pc_present_start_wait - 0x8054A13D: aNSC_pc_present_trans_takeout - 0x8054A219: aNSC_pc_present_trans_wait - 0x8054A259: aNSC_pc_present_end_wait - 0x8054A2C1: aNSC_wait - 0x8054A339: aNSC_walk_pl_other_zone - 0x8054A3B1: aNSC_turn - 0x8054A449: aNSC_set_talk_info_goodbye_wait - 0x8054A479: aNSC_goodbye_wait - 0x8054A515: aNSC_say_goodbye - 0x8054A575: aNSC_exit_wait - 0x8054A5E9: aNSC_say_hello_approach_init - 0x8054A609: aNSC_say_hello_end_wait_init - 0x8054A631: aNSC_check_col_chg_or_make_basement_init - 0x8054A651: aNSC_check_roof_col_order_init - 0x8054A691: aNSC_check_roof_col_order2_init - 0x8054A6BD: aNSC_present_balloon_start_wait_init - 0x8054A6D9: aNSC_present_balloon_trans_move_init - 0x8054A765: aNSC_present_balloon_trans_takeout_init - 0x8054A7A5: aNSC_present_balloon_end_wait_init - 0x8054A7B5: aNSC_request_Q_answer_wait_init - 0x8054A7F5: aNSC_request_Q_end_wait_init - 0x8054A815: aNSC_answer_buy_item_init - 0x8054A841: aNSC_buy_menu_open_wait_init - 0x8054A865: aNSC_buy_menu_close_wait_init - 0x8054A8A9: aNSC_msg_win_open_wait_init - 0x8054A8CD: aNSC_buy_sum_check_init - 0x8054A8F9: aNSC_buy_check_init - 0x8054A9F1: aNSC_buy_after_service_init - 0x8054AA1D: aNSC_order_select_menu_close_wait_init - 0x8054AA61: aNSC_order_check_init - 0x8054AA8D: aNSC_sell_check_before_init - 0x8054AACD: aNSC_sell_answer0_init - 0x8054ABE5: aNSC_sell_answer1_init - 0x8054AC19: aNSC_sell_item_init - 0x8054AC7D: aNSC_sell_item_with_ticket_init - 0x8054ACCD: aNSC_sell_refuse0_init - 0x8054ACD9: aNSC_show_item_check_init - 0x8054ACF9: aNSC_chg_cloth_start_wait_init - 0x8054AD1D: aNSC_pw_entry_send_addr_start_wait_init - 0x8054AD49: aNSC_pw_make_menu_close_wait_init - 0x8054ADAD: aNSC_pw_send_addr_check_init - 0x8054ADCD: aNSC_pw_sel_item_menu_close_wait_init - 0x8054AE11: aNSC_pc_input_pw_start_wait_init - 0x8054AE4D: aNSC_pc_chk_menu_close_wait_init - 0x8054AE95: aNSC_pc_present_trans_takeout_init - 0x8054AF1D: aNSC_pc_present_end_wait_init - 0x8054AF2D: aNSC_wait_init - 0x8054AF4D: aNSC_walk_pl_same_zone_init - 0x8054AF6D: aNSC_run_pl_same_zone_init - 0x8054AF8D: aNSC_goodbye_wait_init - 0x8054AFAD: aNSC_say_goodbye_init - 0x8054AFD1: aNSC_init_proc - 0x8054B005: aNSC_setupAction + 0x80545B7C: aNSC_set_animation + 0x80545BCC: aNSC_BGcheck + 0x80545C10: aNSC_check_present_balloon + 0x80545C7C: aNSC_calc_talk_start_tim + 0x80545CA4: aNSC_request_show_camera + 0x80545D18: aNSC_Set_ListenAble + 0x80545D3C: aNSC_set_sell_camera + 0x80545DD0: aNSC_sell_camera + 0x80545E70: aNSC_talk_demo_proc + 0x80545EE0: aNSC_set_stop_spd + 0x80545EFC: aNSC_set_walk_spd + 0x80545F28: aNSC_set_run_spd + 0x80545F54: aNSC_set_rehouse_order_date + 0x80545F7C: aNSC_set_make_basement_info + 0x80545FD8: aNSC_getP_free_ftr_order + 0x80546010: aNSC_set_ftr_order + 0x8054605C: aNSC_set_last_day_str + 0x805460B0: aNSC_set_pw_name_str + 0x8054610C: aNSC_set_value_str + 0x80546168: aNSC_set_item_name_str + 0x805461CC: aNSC_set_item_str + 0x80546224: aNSC_set_pw_password_str + 0x80546284: aNSC_set_pw_info_str + 0x805462EC: aNSC_pc_check_password_famicom + 0x80546334: aNSC_pc_check_password_npc + 0x805463A0: aNSC_pc_check_password_card_e + 0x805463A8: aNSC_pc_check_password_magazine + 0x8054641C: aNSC_pc_check_password_card_e_mini + 0x80546434: aNSC_pc_check_password_user + 0x8054647C: aNSC_pc_check_password + 0x80546540: aNSC_check_possession_item_make_password + 0x805465EC: aNSC_set_buy_sum_str + 0x805466C0: aNSC_decide_next_move_act + 0x805467D0: aNSC_set_zone_data + 0x80546854: aNSC_set_player_angl + 0x80546860: aNSC_money_check + 0x80546880: aNSC_get_sell_price + 0x805468A0: aNSC_check_money_overflow + 0x80546934: aNSC_check_buy_item_sub + 0x805469D8: aNSC_check_buy_paper + 0x80546AC8: aNSC_check_buy_item_single + 0x80546BE0: aNSC_check_buy_item_plural + 0x80546C6C: aNSC_check_buy_item + 0x80546CA0: aNSC_check_item_with_ticket + 0x80546D20: aNSC_setup_ticket_remain + 0x80546D68: aNSC_check_same_month_ticket + 0x80546DCC: aNSC_get_msg_no + 0x80546E14: aNSC_Set_continue_msg_num + 0x80546E54: aNSC_ChangeMsgData + 0x80546E94: aNSC_set_player_angle + 0x80546F9C: aNSC_set_talk_info_show_item + 0x80546FD4: aNSC_set_talk_info_show_cloth + 0x8054700C: aNSC_set_talk_info_sell_item + 0x805470CC: aNSC_set_talk_info_message_ctrl + 0x805470F4: aNSC_set_talk_info_message_ctrl_aprilfool + 0x8054713C: aNSC_set_talk_info_message_ctrl_tokubai + 0x80547164: aNSC_message_ctrl + 0x80547544: aNSC_buy_item_single + 0x80547634: aNSC_buy_paper + 0x80547744: aNSC_buy_item_only_one + 0x80547954: aNSC_get_start_call_msg_no + 0x80547990: aNSC_set_talk_info_start_wait + 0x80547B84: aNSC_set_talk_info_start_wait1 + 0x80547C64: aNSC_set_talk_info_start_wait2 + 0x80547CB0: aNSC_set_talk_info_start_wait3 + 0x80547CEC: aNSC_set_talk_info_start_wait4 + 0x80547D14: aNSC_start_wait + 0x80547FC8: aNSC_say_hello_approach + 0x80548058: aNSC_say_hello_end_wait + 0x805480CC: aNSC_check_col_chg_or_make_basement + 0x80548198: aNSC_check_roof_col_order + 0x805482D0: aNSC_check_roof_col_order2 + 0x805483C4: aNSC_present_balloon_start_wait + 0x80548420: aNSC_present_balloon_trans_move + 0x8054845C: aNSC_present_balloon_trans_takeout + 0x80548538: aNSC_present_balloon_trans_wait + 0x80548578: aNSC_present_balloon_end_wait + 0x805485E0: aNSC_set_talk_info_request_Q_start_wait + 0x80548610: aNSC_request_Q_start_wait + 0x80548694: aNSC_request_Q_answer_wait + 0x805487A8: aNSC_request_Q_answer_wait2 + 0x80548938: aNSC_request_Q_end_wait + 0x805489AC: aNSC_answer_buy_item + 0x80548A28: aNSC_buy_menu_open_wait + 0x80548A80: aNSC_buy_menu_close_wait + 0x80548AB4: aNSC_msg_win_open_wait + 0x80548B7C: aNSC_buy_sum_check + 0x80548C78: aNSC_buy_check + 0x80548EF8: aNSC_buy_after_service + 0x80548F74: aNSC_buy_continue_check + 0x80549060: aNSC_receive_check + 0x80549104: aNSC_msg_win_open_wait2 + 0x805491CC: aNSC_order_check + 0x805492C8: aNSC_sell_check_before + 0x80549330: aNSC_sell_check + 0x805493E8: aNSC_sell_answer0 + 0x8054961C: aNSC_sell_item_with_ticket + 0x805496D4: aNSC_show_item_check + 0x805498A0: aNSC_chg_cloth_start_wait + 0x80549968: aNSC_chg_cloth_end_wait + 0x805499C4: aNSC_pw_entry_send_addr_start_wait + 0x80549A3C: aNSC_pw_msg_win_open_wait + 0x80549AE8: aNSC_pw_send_addr_check + 0x80549BC4: aNSC_pw_sel_item_start_wait + 0x80549C3C: aNSC_pw_msg_win_open_wait2 + 0x80549CEC: aNSC_pw_send_check + 0x80549E18: aNSC_pw_retry_sel_item_check + 0x80549EE0: aNSC_pc_input_pw_start_wait + 0x80549F58: aNSC_pc_msg_win_open_wait + 0x80549FEC: aNSC_pc_retry_input_pw_check + 0x8054A0E0: aNSC_pc_present_start_wait + 0x8054A13C: aNSC_pc_present_trans_takeout + 0x8054A218: aNSC_pc_present_trans_wait + 0x8054A258: aNSC_pc_present_end_wait + 0x8054A2C0: aNSC_wait + 0x8054A338: aNSC_walk_pl_other_zone + 0x8054A3B0: aNSC_turn + 0x8054A448: aNSC_set_talk_info_goodbye_wait + 0x8054A478: aNSC_goodbye_wait + 0x8054A514: aNSC_say_goodbye + 0x8054A574: aNSC_exit_wait + 0x8054A5E8: aNSC_say_hello_approach_init + 0x8054A608: aNSC_say_hello_end_wait_init + 0x8054A630: aNSC_check_col_chg_or_make_basement_init + 0x8054A650: aNSC_check_roof_col_order_init + 0x8054A690: aNSC_check_roof_col_order2_init + 0x8054A6BC: aNSC_present_balloon_start_wait_init + 0x8054A6D8: aNSC_present_balloon_trans_move_init + 0x8054A764: aNSC_present_balloon_trans_takeout_init + 0x8054A7A4: aNSC_present_balloon_end_wait_init + 0x8054A7B4: aNSC_request_Q_answer_wait_init + 0x8054A7F4: aNSC_request_Q_end_wait_init + 0x8054A814: aNSC_answer_buy_item_init + 0x8054A840: aNSC_buy_menu_open_wait_init + 0x8054A864: aNSC_buy_menu_close_wait_init + 0x8054A8A8: aNSC_msg_win_open_wait_init + 0x8054A8CC: aNSC_buy_sum_check_init + 0x8054A8F8: aNSC_buy_check_init + 0x8054A9F0: aNSC_buy_after_service_init + 0x8054AA1C: aNSC_order_select_menu_close_wait_init + 0x8054AA60: aNSC_order_check_init + 0x8054AA8C: aNSC_sell_check_before_init + 0x8054AACC: aNSC_sell_answer0_init + 0x8054ABE4: aNSC_sell_answer1_init + 0x8054AC18: aNSC_sell_item_init + 0x8054AC7C: aNSC_sell_item_with_ticket_init + 0x8054ACCC: aNSC_sell_refuse0_init + 0x8054ACD8: aNSC_show_item_check_init + 0x8054ACF8: aNSC_chg_cloth_start_wait_init + 0x8054AD1C: aNSC_pw_entry_send_addr_start_wait_init + 0x8054AD48: aNSC_pw_make_menu_close_wait_init + 0x8054ADAC: aNSC_pw_send_addr_check_init + 0x8054ADCC: aNSC_pw_sel_item_menu_close_wait_init + 0x8054AE10: aNSC_pc_input_pw_start_wait_init + 0x8054AE4C: aNSC_pc_chk_menu_close_wait_init + 0x8054AE94: aNSC_pc_present_trans_takeout_init + 0x8054AF1C: aNSC_pc_present_end_wait_init + 0x8054AF2C: aNSC_wait_init + 0x8054AF4C: aNSC_walk_pl_same_zone_init + 0x8054AF6C: aNSC_run_pl_same_zone_init + 0x8054AF8C: aNSC_goodbye_wait_init + 0x8054AFAC: aNSC_say_goodbye_init + 0x8054AFD0: aNSC_init_proc + 0x8054B004: aNSC_setupAction 0x806A4640: aNSC_item1_0_tanni_type 0x806A4740: aNSC_item1_1_tanni_type 0x806A4744: aNSC_item1_2_tanni_type @@ -55867,170 +55876,170 @@ src/ac_npc_conv_master.c: 0x806A4A78: aNSC_item_tanni_type 0x806A4B6C: aNSC_exchange_itemNo src/ac_npc_depart_master.c: - 0x8054D495: aNSC_set_animation - 0x8054D4E5: aNSC_BGcheck - 0x8054D529: aNSC_check_present_balloon - 0x8054D595: aNSC_calc_talk_start_tim - 0x8054D5BD: aNSC_request_show_camera - 0x8054D631: aNSC_Set_ListenAble - 0x8054D655: aNSC_set_sell_camera - 0x8054D6E9: aNSC_sell_camera - 0x8054D789: aNSC_talk_demo_proc - 0x8054D7F9: aNSC_set_stop_spd - 0x8054D815: aNSC_set_walk_spd - 0x8054D841: aNSC_set_run_spd - 0x8054D86D: aNSC_set_rehouse_order_date - 0x8054D895: aNSC_set_make_basement_info - 0x8054D8F1: aNSC_getP_free_ftr_order - 0x8054D929: aNSC_set_ftr_order - 0x8054D975: aNSC_set_last_day_str - 0x8054D9C9: aNSC_set_pw_name_str - 0x8054DA25: aNSC_set_value_str - 0x8054DA81: aNSC_set_item_name_str - 0x8054DAE5: aNSC_set_item_str - 0x8054DB3D: aNSC_set_pw_password_str - 0x8054DB9D: aNSC_set_pw_info_str - 0x8054DC05: aNSC_pc_check_password_famicom - 0x8054DC4D: aNSC_pc_check_password_npc - 0x8054DCB9: aNSC_pc_check_password_card_e - 0x8054DCC1: aNSC_pc_check_password_magazine - 0x8054DD35: aNSC_pc_check_password_card_e_mini - 0x8054DD4D: aNSC_pc_check_password_user - 0x8054DD95: aNSC_pc_check_password - 0x8054DE59: aNSC_check_possession_item_make_password - 0x8054DF05: aNSC_set_buy_sum_str - 0x8054DFD9: aNSC_decide_next_move_act - 0x8054E0E9: aNSC_set_zone_data - 0x8054E16D: aNSC_set_player_angl - 0x8054E179: aNSC_money_check - 0x8054E199: aNSC_get_sell_price - 0x8054E1B9: aNSC_check_money_overflow - 0x8054E24D: aNSC_check_buy_item_sub - 0x8054E2F1: aNSC_check_buy_paper - 0x8054E3E1: aNSC_check_buy_item_single - 0x8054E4F9: aNSC_check_buy_item_plural - 0x8054E585: aNSC_check_buy_item - 0x8054E5B9: aNSC_check_item_with_ticket - 0x8054E639: aNSC_setup_ticket_remain - 0x8054E681: aNSC_check_same_month_ticket - 0x8054E6E5: aNSC_get_msg_no - 0x8054E72D: aNSC_Set_continue_msg_num - 0x8054E76D: aNSC_ChangeMsgData - 0x8054E7AD: aNSC_set_player_angle - 0x8054E8B5: aNSC_set_talk_info_show_item - 0x8054E8ED: aNSC_set_talk_info_show_cloth - 0x8054E925: aNSC_set_talk_info_sell_item - 0x8054E9E5: aNSC_set_talk_info_message_ctrl - 0x8054EA0D: aNSC_set_talk_info_message_ctrl_aprilfool - 0x8054EA55: aNSC_set_talk_info_message_ctrl_tokubai - 0x8054EA7D: aNSC_message_ctrl - 0x8054EE5D: aNSC_buy_item_single - 0x8054EF4D: aNSC_buy_paper - 0x8054F05D: aNSC_buy_item_only_one - 0x8054F26D: aNSC_get_start_call_msg_no - 0x8054F2A9: aNSC_set_talk_info_start_wait - 0x8054F49D: aNSC_set_talk_info_start_wait1 - 0x8054F57D: aNSC_set_talk_info_start_wait2 - 0x8054F5C9: aNSC_set_talk_info_start_wait3 - 0x8054F605: aNSC_set_talk_info_start_wait4 - 0x8054F62D: aNSC_start_wait - 0x8054F8E1: aNSC_say_hello_approach - 0x8054F971: aNSC_say_hello_end_wait - 0x8054F9E5: aNSC_check_col_chg_or_make_basement - 0x8054FAB1: aNSC_check_roof_col_order - 0x8054FBE9: aNSC_check_roof_col_order2 - 0x8054FCDD: aNSC_present_balloon_start_wait - 0x8054FD39: aNSC_present_balloon_trans_move - 0x8054FD75: aNSC_present_balloon_trans_takeout - 0x8054FE51: aNSC_present_balloon_trans_wait - 0x8054FE91: aNSC_present_balloon_end_wait - 0x8054FEF9: aNSC_set_talk_info_request_Q_start_wait - 0x8054FF29: aNSC_request_Q_start_wait - 0x8054FFAD: aNSC_request_Q_answer_wait - 0x805500C1: aNSC_request_Q_answer_wait2 - 0x80550251: aNSC_request_Q_end_wait - 0x805502C5: aNSC_answer_buy_item - 0x80550341: aNSC_buy_menu_open_wait - 0x80550399: aNSC_buy_menu_close_wait - 0x805503CD: aNSC_msg_win_open_wait - 0x80550495: aNSC_buy_sum_check - 0x80550591: aNSC_buy_check - 0x80550811: aNSC_buy_after_service - 0x8055088D: aNSC_buy_continue_check - 0x80550979: aNSC_receive_check - 0x80550A1D: aNSC_msg_win_open_wait2 - 0x80550AE5: aNSC_order_check - 0x80550BE1: aNSC_sell_check_before - 0x80550C49: aNSC_sell_check - 0x80550D01: aNSC_sell_answer0 - 0x80550F35: aNSC_sell_item_with_ticket - 0x80550FED: aNSC_show_item_check - 0x805511B9: aNSC_chg_cloth_start_wait - 0x80551281: aNSC_chg_cloth_end_wait - 0x805512DD: aNSC_pw_entry_send_addr_start_wait - 0x80551355: aNSC_pw_msg_win_open_wait - 0x80551401: aNSC_pw_send_addr_check - 0x805514DD: aNSC_pw_sel_item_start_wait - 0x80551555: aNSC_pw_msg_win_open_wait2 - 0x80551605: aNSC_pw_send_check - 0x80551731: aNSC_pw_retry_sel_item_check - 0x805517F9: aNSC_pc_input_pw_start_wait - 0x80551871: aNSC_pc_msg_win_open_wait - 0x80551905: aNSC_pc_retry_input_pw_check - 0x805519F9: aNSC_pc_present_start_wait - 0x80551A55: aNSC_pc_present_trans_takeout - 0x80551B31: aNSC_pc_present_trans_wait - 0x80551B71: aNSC_pc_present_end_wait - 0x80551BD9: aNSC_wait - 0x80551C51: aNSC_walk_pl_other_zone - 0x80551CC9: aNSC_turn - 0x80551D61: aNSC_set_talk_info_goodbye_wait - 0x80551D91: aNSC_goodbye_wait - 0x80551E2D: aNSC_say_goodbye - 0x80551E8D: aNSC_exit_wait - 0x80551F01: aNSC_say_hello_approach_init - 0x80551F21: aNSC_say_hello_end_wait_init - 0x80551F49: aNSC_check_col_chg_or_make_basement_init - 0x80551F69: aNSC_check_roof_col_order_init - 0x80551FA9: aNSC_check_roof_col_order2_init - 0x80551FD5: aNSC_present_balloon_start_wait_init - 0x80551FF1: aNSC_present_balloon_trans_move_init - 0x8055207D: aNSC_present_balloon_trans_takeout_init - 0x805520BD: aNSC_present_balloon_end_wait_init - 0x805520CD: aNSC_request_Q_answer_wait_init - 0x8055210D: aNSC_request_Q_end_wait_init - 0x8055212D: aNSC_answer_buy_item_init - 0x80552159: aNSC_buy_menu_open_wait_init - 0x8055217D: aNSC_buy_menu_close_wait_init - 0x805521C1: aNSC_msg_win_open_wait_init - 0x805521E5: aNSC_buy_sum_check_init - 0x80552211: aNSC_buy_check_init - 0x80552309: aNSC_buy_after_service_init - 0x80552335: aNSC_order_select_menu_close_wait_init - 0x80552379: aNSC_order_check_init - 0x805523A5: aNSC_sell_check_before_init - 0x805523E5: aNSC_sell_answer0_init - 0x805524FD: aNSC_sell_answer1_init - 0x80552531: aNSC_sell_item_init - 0x80552595: aNSC_sell_item_with_ticket_init - 0x805525E5: aNSC_sell_refuse0_init - 0x805525F1: aNSC_show_item_check_init - 0x80552611: aNSC_chg_cloth_start_wait_init - 0x80552635: aNSC_pw_entry_send_addr_start_wait_init - 0x80552661: aNSC_pw_make_menu_close_wait_init - 0x805526C5: aNSC_pw_send_addr_check_init - 0x805526E5: aNSC_pw_sel_item_menu_close_wait_init - 0x80552729: aNSC_pc_input_pw_start_wait_init - 0x80552765: aNSC_pc_chk_menu_close_wait_init - 0x805527AD: aNSC_pc_present_trans_takeout_init - 0x80552835: aNSC_pc_present_end_wait_init - 0x80552845: aNSC_wait_init - 0x80552865: aNSC_walk_pl_same_zone_init - 0x80552885: aNSC_run_pl_same_zone_init - 0x805528A5: aNSC_goodbye_wait_init - 0x805528C5: aNSC_say_goodbye_init - 0x805528E9: aNSC_init_proc - 0x8055291D: aNSC_setupAction + 0x8054D494: aNSC_set_animation + 0x8054D4E4: aNSC_BGcheck + 0x8054D528: aNSC_check_present_balloon + 0x8054D594: aNSC_calc_talk_start_tim + 0x8054D5BC: aNSC_request_show_camera + 0x8054D630: aNSC_Set_ListenAble + 0x8054D654: aNSC_set_sell_camera + 0x8054D6E8: aNSC_sell_camera + 0x8054D788: aNSC_talk_demo_proc + 0x8054D7F8: aNSC_set_stop_spd + 0x8054D814: aNSC_set_walk_spd + 0x8054D840: aNSC_set_run_spd + 0x8054D86C: aNSC_set_rehouse_order_date + 0x8054D894: aNSC_set_make_basement_info + 0x8054D8F0: aNSC_getP_free_ftr_order + 0x8054D928: aNSC_set_ftr_order + 0x8054D974: aNSC_set_last_day_str + 0x8054D9C8: aNSC_set_pw_name_str + 0x8054DA24: aNSC_set_value_str + 0x8054DA80: aNSC_set_item_name_str + 0x8054DAE4: aNSC_set_item_str + 0x8054DB3C: aNSC_set_pw_password_str + 0x8054DB9C: aNSC_set_pw_info_str + 0x8054DC04: aNSC_pc_check_password_famicom + 0x8054DC4C: aNSC_pc_check_password_npc + 0x8054DCB8: aNSC_pc_check_password_card_e + 0x8054DCC0: aNSC_pc_check_password_magazine + 0x8054DD34: aNSC_pc_check_password_card_e_mini + 0x8054DD4C: aNSC_pc_check_password_user + 0x8054DD94: aNSC_pc_check_password + 0x8054DE58: aNSC_check_possession_item_make_password + 0x8054DF04: aNSC_set_buy_sum_str + 0x8054DFD8: aNSC_decide_next_move_act + 0x8054E0E8: aNSC_set_zone_data + 0x8054E16C: aNSC_set_player_angl + 0x8054E178: aNSC_money_check + 0x8054E198: aNSC_get_sell_price + 0x8054E1B8: aNSC_check_money_overflow + 0x8054E24C: aNSC_check_buy_item_sub + 0x8054E2F0: aNSC_check_buy_paper + 0x8054E3E0: aNSC_check_buy_item_single + 0x8054E4F8: aNSC_check_buy_item_plural + 0x8054E584: aNSC_check_buy_item + 0x8054E5B8: aNSC_check_item_with_ticket + 0x8054E638: aNSC_setup_ticket_remain + 0x8054E680: aNSC_check_same_month_ticket + 0x8054E6E4: aNSC_get_msg_no + 0x8054E72C: aNSC_Set_continue_msg_num + 0x8054E76C: aNSC_ChangeMsgData + 0x8054E7AC: aNSC_set_player_angle + 0x8054E8B4: aNSC_set_talk_info_show_item + 0x8054E8EC: aNSC_set_talk_info_show_cloth + 0x8054E924: aNSC_set_talk_info_sell_item + 0x8054E9E4: aNSC_set_talk_info_message_ctrl + 0x8054EA0C: aNSC_set_talk_info_message_ctrl_aprilfool + 0x8054EA54: aNSC_set_talk_info_message_ctrl_tokubai + 0x8054EA7C: aNSC_message_ctrl + 0x8054EE5C: aNSC_buy_item_single + 0x8054EF4C: aNSC_buy_paper + 0x8054F05C: aNSC_buy_item_only_one + 0x8054F26C: aNSC_get_start_call_msg_no + 0x8054F2A8: aNSC_set_talk_info_start_wait + 0x8054F49C: aNSC_set_talk_info_start_wait1 + 0x8054F57C: aNSC_set_talk_info_start_wait2 + 0x8054F5C8: aNSC_set_talk_info_start_wait3 + 0x8054F604: aNSC_set_talk_info_start_wait4 + 0x8054F62C: aNSC_start_wait + 0x8054F8E0: aNSC_say_hello_approach + 0x8054F970: aNSC_say_hello_end_wait + 0x8054F9E4: aNSC_check_col_chg_or_make_basement + 0x8054FAB0: aNSC_check_roof_col_order + 0x8054FBE8: aNSC_check_roof_col_order2 + 0x8054FCDC: aNSC_present_balloon_start_wait + 0x8054FD38: aNSC_present_balloon_trans_move + 0x8054FD74: aNSC_present_balloon_trans_takeout + 0x8054FE50: aNSC_present_balloon_trans_wait + 0x8054FE90: aNSC_present_balloon_end_wait + 0x8054FEF8: aNSC_set_talk_info_request_Q_start_wait + 0x8054FF28: aNSC_request_Q_start_wait + 0x8054FFAC: aNSC_request_Q_answer_wait + 0x805500C0: aNSC_request_Q_answer_wait2 + 0x80550250: aNSC_request_Q_end_wait + 0x805502C4: aNSC_answer_buy_item + 0x80550340: aNSC_buy_menu_open_wait + 0x80550398: aNSC_buy_menu_close_wait + 0x805503CC: aNSC_msg_win_open_wait + 0x80550494: aNSC_buy_sum_check + 0x80550590: aNSC_buy_check + 0x80550810: aNSC_buy_after_service + 0x8055088C: aNSC_buy_continue_check + 0x80550978: aNSC_receive_check + 0x80550A1C: aNSC_msg_win_open_wait2 + 0x80550AE4: aNSC_order_check + 0x80550BE0: aNSC_sell_check_before + 0x80550C48: aNSC_sell_check + 0x80550D00: aNSC_sell_answer0 + 0x80550F34: aNSC_sell_item_with_ticket + 0x80550FEC: aNSC_show_item_check + 0x805511B8: aNSC_chg_cloth_start_wait + 0x80551280: aNSC_chg_cloth_end_wait + 0x805512DC: aNSC_pw_entry_send_addr_start_wait + 0x80551354: aNSC_pw_msg_win_open_wait + 0x80551400: aNSC_pw_send_addr_check + 0x805514DC: aNSC_pw_sel_item_start_wait + 0x80551554: aNSC_pw_msg_win_open_wait2 + 0x80551604: aNSC_pw_send_check + 0x80551730: aNSC_pw_retry_sel_item_check + 0x805517F8: aNSC_pc_input_pw_start_wait + 0x80551870: aNSC_pc_msg_win_open_wait + 0x80551904: aNSC_pc_retry_input_pw_check + 0x805519F8: aNSC_pc_present_start_wait + 0x80551A54: aNSC_pc_present_trans_takeout + 0x80551B30: aNSC_pc_present_trans_wait + 0x80551B70: aNSC_pc_present_end_wait + 0x80551BD8: aNSC_wait + 0x80551C50: aNSC_walk_pl_other_zone + 0x80551CC8: aNSC_turn + 0x80551D60: aNSC_set_talk_info_goodbye_wait + 0x80551D90: aNSC_goodbye_wait + 0x80551E2C: aNSC_say_goodbye + 0x80551E8C: aNSC_exit_wait + 0x80551F00: aNSC_say_hello_approach_init + 0x80551F20: aNSC_say_hello_end_wait_init + 0x80551F48: aNSC_check_col_chg_or_make_basement_init + 0x80551F68: aNSC_check_roof_col_order_init + 0x80551FA8: aNSC_check_roof_col_order2_init + 0x80551FD4: aNSC_present_balloon_start_wait_init + 0x80551FF0: aNSC_present_balloon_trans_move_init + 0x8055207C: aNSC_present_balloon_trans_takeout_init + 0x805520BC: aNSC_present_balloon_end_wait_init + 0x805520CC: aNSC_request_Q_answer_wait_init + 0x8055210C: aNSC_request_Q_end_wait_init + 0x8055212C: aNSC_answer_buy_item_init + 0x80552158: aNSC_buy_menu_open_wait_init + 0x8055217C: aNSC_buy_menu_close_wait_init + 0x805521C0: aNSC_msg_win_open_wait_init + 0x805521E4: aNSC_buy_sum_check_init + 0x80552210: aNSC_buy_check_init + 0x80552308: aNSC_buy_after_service_init + 0x80552334: aNSC_order_select_menu_close_wait_init + 0x80552378: aNSC_order_check_init + 0x805523A4: aNSC_sell_check_before_init + 0x805523E4: aNSC_sell_answer0_init + 0x805524FC: aNSC_sell_answer1_init + 0x80552530: aNSC_sell_item_init + 0x80552594: aNSC_sell_item_with_ticket_init + 0x805525E4: aNSC_sell_refuse0_init + 0x805525F0: aNSC_show_item_check_init + 0x80552610: aNSC_chg_cloth_start_wait_init + 0x80552634: aNSC_pw_entry_send_addr_start_wait_init + 0x80552660: aNSC_pw_make_menu_close_wait_init + 0x805526C4: aNSC_pw_send_addr_check_init + 0x805526E4: aNSC_pw_sel_item_menu_close_wait_init + 0x80552728: aNSC_pc_input_pw_start_wait_init + 0x80552764: aNSC_pc_chk_menu_close_wait_init + 0x805527AC: aNSC_pc_present_trans_takeout_init + 0x80552834: aNSC_pc_present_end_wait_init + 0x80552844: aNSC_wait_init + 0x80552864: aNSC_walk_pl_same_zone_init + 0x80552884: aNSC_run_pl_same_zone_init + 0x805528A4: aNSC_goodbye_wait_init + 0x805528C4: aNSC_say_goodbye_init + 0x805528E8: aNSC_init_proc + 0x8055291C: aNSC_setupAction 0x806A5854: aNSC_item1_0_tanni_type 0x806A5954: aNSC_item1_1_tanni_type 0x806A5958: aNSC_item1_2_tanni_type @@ -56050,145 +56059,145 @@ src/ac_npc_depart_master.c: 0x806A5C8C: aNSC_item_tanni_type 0x806A5D80: aNSC_exchange_itemNo src/ac_npc_mamedanuki.c: - 0x8055A4ED: aNSC_set_animation - 0x8055A53D: aNSC_BGcheck - 0x8055A581: aNSC_calc_talk_start_tim - 0x8055A5A9: aNSC_request_show_camera - 0x8055A61D: aNSC_Set_ListenAble - 0x8055A641: aNSC_set_sell_camera - 0x8055A6D5: aNSC_sell_camera - 0x8055A775: aNSC_talk_demo_proc - 0x8055A7E5: aNSC_set_stop_spd - 0x8055A801: aNSC_set_walk_spd - 0x8055A82D: aNSC_set_run_spd - 0x8055A859: aNSC_getP_free_ftr_order - 0x8055A891: aNSC_set_ftr_order - 0x8055A8DD: aNSC_set_last_day_str - 0x8055A931: aNSC_set_pw_name_str - 0x8055A98D: aNSC_set_value_str - 0x8055A9E9: aNSC_set_item_name_str - 0x8055AA4D: aNSC_set_item_str - 0x8055AAA5: aNSC_set_pw_password_str - 0x8055AB05: aNSC_set_pw_info_str - 0x8055AB6D: aNSC_pc_check_password_famicom - 0x8055ABB5: aNSC_pc_check_password_npc - 0x8055AC21: aNSC_pc_check_password_card_e - 0x8055AC29: aNSC_pc_check_password_magazine - 0x8055AC9D: aNSC_pc_check_password_card_e_mini - 0x8055ACB5: aNSC_pc_check_password_user - 0x8055ACFD: aNSC_pc_check_password - 0x8055ADC1: aNSC_check_possession_item_make_password - 0x8055AE6D: aNSC_set_buy_sum_str - 0x8055AF41: aNSC_decide_next_move_act - 0x8055B0C5: aNSC_set_zone_data - 0x8055B14D: aNSC_set_player_angl - 0x8055B159: aNSC_money_check - 0x8055B179: aNSC_get_sell_price - 0x8055B199: aNSC_check_money_overflow - 0x8055B22D: aNSC_check_buy_item_sub - 0x8055B2D1: aNSC_check_buy_paper - 0x8055B3C1: aNSC_check_buy_item_single - 0x8055B4D9: aNSC_check_buy_item_plural - 0x8055B565: aNSC_check_buy_item - 0x8055B599: aNSC_check_item_with_ticket - 0x8055B619: aNSC_setup_ticket_remain - 0x8055B661: aNSC_check_same_month_ticket - 0x8055B6C5: aNSC_get_msg_no - 0x8055B6FD: aNSC_Set_continue_msg_num - 0x8055B73D: aNSC_ChangeMsgData - 0x8055B77D: aNSC_set_player_angle - 0x8055B885: aNSC_set_talk_info_show_item - 0x8055B8BD: aNSC_set_talk_info_show_cloth - 0x8055B8F5: aNSC_set_talk_info_sell_item - 0x8055B9B5: aNSC_set_talk_info_message_ctrl - 0x8055BF0D: aNSC_message_ctrl - 0x8055BFFD: aNSC_buy_item_single - 0x8055C0ED: aNSC_buy_paper - 0x8055C1FD: aNSC_buy_item_only_one - 0x8055C40D: aNSC_set_talk_info_start_wait - 0x8055C461: aNSC_start_wait - 0x8055C4E5: aNSC_say_hello_approach - 0x8055C57D: aNSC_say_hello_end_wait - 0x8055C5F1: aNSC_set_talk_info_request_Q_start_wait - 0x8055C621: aNSC_request_Q_start_wait - 0x8055C6A5: aNSC_request_Q_answer_wait - 0x8055C7B9: aNSC_request_Q_answer_wait2 - 0x8055C949: aNSC_request_Q_end_wait - 0x8055C9BD: aNSC_answer_buy_item - 0x8055CA39: aNSC_buy_menu_open_wait - 0x8055CA91: aNSC_buy_menu_close_wait - 0x8055CAC5: aNSC_msg_win_open_wait - 0x8055CB8D: aNSC_buy_sum_check - 0x8055CC89: aNSC_buy_check - 0x8055CF09: aNSC_buy_after_service - 0x8055CF85: aNSC_buy_continue_check - 0x8055D071: aNSC_receive_check - 0x8055D115: aNSC_msg_win_open_wait2 - 0x8055D1DD: aNSC_order_check - 0x8055D2D9: aNSC_sell_check_before - 0x8055D341: aNSC_sell_check - 0x8055D3F9: aNSC_sell_answer0 - 0x8055D62D: aNSC_sell_item_with_ticket - 0x8055D6E5: aNSC_show_item_check - 0x8055D8B1: aNSC_chg_cloth_start_wait - 0x8055D979: aNSC_chg_cloth_end_wait - 0x8055D9D5: aNSC_pw_entry_send_addr_start_wait - 0x8055DA4D: aNSC_pw_msg_win_open_wait - 0x8055DAF9: aNSC_pw_send_addr_check - 0x8055DBD5: aNSC_pw_sel_item_start_wait - 0x8055DC4D: aNSC_pw_msg_win_open_wait2 - 0x8055DCFD: aNSC_pw_send_check - 0x8055DE29: aNSC_pw_retry_sel_item_check - 0x8055DEF1: aNSC_pc_input_pw_start_wait - 0x8055DF69: aNSC_pc_msg_win_open_wait - 0x8055DFFD: aNSC_pc_retry_input_pw_check - 0x8055E0F1: aNSC_pc_present_start_wait - 0x8055E14D: aNSC_pc_present_trans_takeout - 0x8055E229: aNSC_pc_present_trans_wait - 0x8055E269: aNSC_pc_present_end_wait - 0x8055E2D1: aNSC_wait - 0x8055E349: aNSC_walk_pl_other_zone - 0x8055E3C1: aNSC_turn - 0x8055E459: aNSC_set_talk_info_goodbye_wait - 0x8055E489: aNSC_goodbye_wait - 0x8055E555: aNSC_say_goodbye - 0x8055E5B5: aNSC_exit_wait - 0x8055E621: aNSC_say_hello_approach_init - 0x8055E641: aNSC_say_hello_end_wait_init - 0x8055E669: aNSC_request_Q_answer_wait_init - 0x8055E6A9: aNSC_request_Q_end_wait_init - 0x8055E6C9: aNSC_answer_buy_item_init - 0x8055E6F5: aNSC_buy_menu_open_wait_init - 0x8055E719: aNSC_buy_menu_close_wait_init - 0x8055E75D: aNSC_msg_win_open_wait_init - 0x8055E781: aNSC_buy_sum_check_init - 0x8055E7AD: aNSC_buy_check_init - 0x8055E8A5: aNSC_buy_after_service_init - 0x8055E8D1: aNSC_order_select_menu_close_wait_init - 0x8055E915: aNSC_order_check_init - 0x8055E941: aNSC_sell_check_before_init - 0x8055E981: aNSC_sell_answer0_init - 0x8055EA99: aNSC_sell_answer1_init - 0x8055EACD: aNSC_sell_item_init - 0x8055EB31: aNSC_sell_item_with_ticket_init - 0x8055EB81: aNSC_sell_refuse0_init - 0x8055EB8D: aNSC_show_item_check_init - 0x8055EBAD: aNSC_chg_cloth_start_wait_init - 0x8055EBD1: aNSC_pw_entry_send_addr_start_wait_init - 0x8055EBFD: aNSC_pw_make_menu_close_wait_init - 0x8055EC61: aNSC_pw_send_addr_check_init - 0x8055EC81: aNSC_pw_sel_item_menu_close_wait_init - 0x8055ECC5: aNSC_pc_input_pw_start_wait_init - 0x8055ED01: aNSC_pc_chk_menu_close_wait_init - 0x8055ED49: aNSC_pc_present_trans_takeout_init - 0x8055EDD1: aNSC_pc_present_end_wait_init - 0x8055EDE1: aNSC_wait_init - 0x8055EE01: aNSC_walk_pl_same_zone_init - 0x8055EE21: aNSC_run_pl_same_zone_init - 0x8055EE41: aNSC_goodbye_wait_init - 0x8055EE61: aNSC_say_goodbye_init - 0x8055EE85: aNSC_init_proc - 0x8055EEB9: aNSC_setupAction + 0x8055A4EC: aNSC_set_animation + 0x8055A53C: aNSC_BGcheck + 0x8055A580: aNSC_calc_talk_start_tim + 0x8055A5A8: aNSC_request_show_camera + 0x8055A61C: aNSC_Set_ListenAble + 0x8055A640: aNSC_set_sell_camera + 0x8055A6D4: aNSC_sell_camera + 0x8055A774: aNSC_talk_demo_proc + 0x8055A7E4: aNSC_set_stop_spd + 0x8055A800: aNSC_set_walk_spd + 0x8055A82C: aNSC_set_run_spd + 0x8055A858: aNSC_getP_free_ftr_order + 0x8055A890: aNSC_set_ftr_order + 0x8055A8DC: aNSC_set_last_day_str + 0x8055A930: aNSC_set_pw_name_str + 0x8055A98C: aNSC_set_value_str + 0x8055A9E8: aNSC_set_item_name_str + 0x8055AA4C: aNSC_set_item_str + 0x8055AAA4: aNSC_set_pw_password_str + 0x8055AB04: aNSC_set_pw_info_str + 0x8055AB6C: aNSC_pc_check_password_famicom + 0x8055ABB4: aNSC_pc_check_password_npc + 0x8055AC20: aNSC_pc_check_password_card_e + 0x8055AC28: aNSC_pc_check_password_magazine + 0x8055AC9C: aNSC_pc_check_password_card_e_mini + 0x8055ACB4: aNSC_pc_check_password_user + 0x8055ACFC: aNSC_pc_check_password + 0x8055ADC0: aNSC_check_possession_item_make_password + 0x8055AE6C: aNSC_set_buy_sum_str + 0x8055AF40: aNSC_decide_next_move_act + 0x8055B0C4: aNSC_set_zone_data + 0x8055B14C: aNSC_set_player_angl + 0x8055B158: aNSC_money_check + 0x8055B178: aNSC_get_sell_price + 0x8055B198: aNSC_check_money_overflow + 0x8055B22C: aNSC_check_buy_item_sub + 0x8055B2D0: aNSC_check_buy_paper + 0x8055B3C0: aNSC_check_buy_item_single + 0x8055B4D8: aNSC_check_buy_item_plural + 0x8055B564: aNSC_check_buy_item + 0x8055B598: aNSC_check_item_with_ticket + 0x8055B618: aNSC_setup_ticket_remain + 0x8055B660: aNSC_check_same_month_ticket + 0x8055B6C4: aNSC_get_msg_no + 0x8055B6FC: aNSC_Set_continue_msg_num + 0x8055B73C: aNSC_ChangeMsgData + 0x8055B77C: aNSC_set_player_angle + 0x8055B884: aNSC_set_talk_info_show_item + 0x8055B8BC: aNSC_set_talk_info_show_cloth + 0x8055B8F4: aNSC_set_talk_info_sell_item + 0x8055B9B4: aNSC_set_talk_info_message_ctrl + 0x8055BF0C: aNSC_message_ctrl + 0x8055BFFC: aNSC_buy_item_single + 0x8055C0EC: aNSC_buy_paper + 0x8055C1FC: aNSC_buy_item_only_one + 0x8055C40C: aNSC_set_talk_info_start_wait + 0x8055C460: aNSC_start_wait + 0x8055C4E4: aNSC_say_hello_approach + 0x8055C57C: aNSC_say_hello_end_wait + 0x8055C5F0: aNSC_set_talk_info_request_Q_start_wait + 0x8055C620: aNSC_request_Q_start_wait + 0x8055C6A4: aNSC_request_Q_answer_wait + 0x8055C7B8: aNSC_request_Q_answer_wait2 + 0x8055C948: aNSC_request_Q_end_wait + 0x8055C9BC: aNSC_answer_buy_item + 0x8055CA38: aNSC_buy_menu_open_wait + 0x8055CA90: aNSC_buy_menu_close_wait + 0x8055CAC4: aNSC_msg_win_open_wait + 0x8055CB8C: aNSC_buy_sum_check + 0x8055CC88: aNSC_buy_check + 0x8055CF08: aNSC_buy_after_service + 0x8055CF84: aNSC_buy_continue_check + 0x8055D070: aNSC_receive_check + 0x8055D114: aNSC_msg_win_open_wait2 + 0x8055D1DC: aNSC_order_check + 0x8055D2D8: aNSC_sell_check_before + 0x8055D340: aNSC_sell_check + 0x8055D3F8: aNSC_sell_answer0 + 0x8055D62C: aNSC_sell_item_with_ticket + 0x8055D6E4: aNSC_show_item_check + 0x8055D8B0: aNSC_chg_cloth_start_wait + 0x8055D978: aNSC_chg_cloth_end_wait + 0x8055D9D4: aNSC_pw_entry_send_addr_start_wait + 0x8055DA4C: aNSC_pw_msg_win_open_wait + 0x8055DAF8: aNSC_pw_send_addr_check + 0x8055DBD4: aNSC_pw_sel_item_start_wait + 0x8055DC4C: aNSC_pw_msg_win_open_wait2 + 0x8055DCFC: aNSC_pw_send_check + 0x8055DE28: aNSC_pw_retry_sel_item_check + 0x8055DEF0: aNSC_pc_input_pw_start_wait + 0x8055DF68: aNSC_pc_msg_win_open_wait + 0x8055DFFC: aNSC_pc_retry_input_pw_check + 0x8055E0F0: aNSC_pc_present_start_wait + 0x8055E14C: aNSC_pc_present_trans_takeout + 0x8055E228: aNSC_pc_present_trans_wait + 0x8055E268: aNSC_pc_present_end_wait + 0x8055E2D0: aNSC_wait + 0x8055E348: aNSC_walk_pl_other_zone + 0x8055E3C0: aNSC_turn + 0x8055E458: aNSC_set_talk_info_goodbye_wait + 0x8055E488: aNSC_goodbye_wait + 0x8055E554: aNSC_say_goodbye + 0x8055E5B4: aNSC_exit_wait + 0x8055E620: aNSC_say_hello_approach_init + 0x8055E640: aNSC_say_hello_end_wait_init + 0x8055E668: aNSC_request_Q_answer_wait_init + 0x8055E6A8: aNSC_request_Q_end_wait_init + 0x8055E6C8: aNSC_answer_buy_item_init + 0x8055E6F4: aNSC_buy_menu_open_wait_init + 0x8055E718: aNSC_buy_menu_close_wait_init + 0x8055E75C: aNSC_msg_win_open_wait_init + 0x8055E780: aNSC_buy_sum_check_init + 0x8055E7AC: aNSC_buy_check_init + 0x8055E8A4: aNSC_buy_after_service_init + 0x8055E8D0: aNSC_order_select_menu_close_wait_init + 0x8055E914: aNSC_order_check_init + 0x8055E940: aNSC_sell_check_before_init + 0x8055E980: aNSC_sell_answer0_init + 0x8055EA98: aNSC_sell_answer1_init + 0x8055EACC: aNSC_sell_item_init + 0x8055EB30: aNSC_sell_item_with_ticket_init + 0x8055EB80: aNSC_sell_refuse0_init + 0x8055EB8C: aNSC_show_item_check_init + 0x8055EBAC: aNSC_chg_cloth_start_wait_init + 0x8055EBD0: aNSC_pw_entry_send_addr_start_wait_init + 0x8055EBFC: aNSC_pw_make_menu_close_wait_init + 0x8055EC60: aNSC_pw_send_addr_check_init + 0x8055EC80: aNSC_pw_sel_item_menu_close_wait_init + 0x8055ECC4: aNSC_pc_input_pw_start_wait_init + 0x8055ED00: aNSC_pc_chk_menu_close_wait_init + 0x8055ED48: aNSC_pc_present_trans_takeout_init + 0x8055EDD0: aNSC_pc_present_end_wait_init + 0x8055EDE0: aNSC_wait_init + 0x8055EE00: aNSC_walk_pl_same_zone_init + 0x8055EE20: aNSC_run_pl_same_zone_init + 0x8055EE40: aNSC_goodbye_wait_init + 0x8055EE60: aNSC_say_goodbye_init + 0x8055EE84: aNSC_init_proc + 0x8055EEB8: aNSC_setupAction 0x806A99E4: aNSC_item1_0_tanni_type 0x806A9AE4: aNSC_item1_1_tanni_type 0x806A9AE8: aNSC_item1_2_tanni_type @@ -56208,170 +56217,170 @@ src/ac_npc_mamedanuki.c: 0x806A9E1C: aNSC_item_tanni_type 0x806A9F30: aNSC_exchange_itemNo src/ac_npc_shop_master.c: - 0x80577115: aNSC_set_animation - 0x80577165: aNSC_BGcheck - 0x805771A9: aNSC_check_present_balloon - 0x80577215: aNSC_calc_talk_start_tim - 0x8057723D: aNSC_request_show_camera - 0x805772B1: aNSC_Set_ListenAble - 0x805772D5: aNSC_set_sell_camera - 0x80577369: aNSC_sell_camera - 0x80577409: aNSC_talk_demo_proc - 0x80577479: aNSC_set_stop_spd - 0x80577495: aNSC_set_walk_spd - 0x805774C1: aNSC_set_run_spd - 0x805774ED: aNSC_set_rehouse_order_date - 0x80577515: aNSC_set_make_basement_info - 0x80577571: aNSC_getP_free_ftr_order - 0x805775A9: aNSC_set_ftr_order - 0x805775F5: aNSC_set_last_day_str - 0x80577649: aNSC_set_pw_name_str - 0x805776A5: aNSC_set_value_str - 0x80577701: aNSC_set_item_name_str - 0x80577765: aNSC_set_item_str - 0x805777BD: aNSC_set_pw_password_str - 0x8057781D: aNSC_set_pw_info_str - 0x80577885: aNSC_pc_check_password_famicom - 0x805778CD: aNSC_pc_check_password_npc - 0x80577939: aNSC_pc_check_password_card_e - 0x80577941: aNSC_pc_check_password_magazine - 0x805779B5: aNSC_pc_check_password_card_e_mini - 0x805779CD: aNSC_pc_check_password_user - 0x80577A15: aNSC_pc_check_password - 0x80577AD9: aNSC_check_possession_item_make_password - 0x80577B85: aNSC_set_buy_sum_str - 0x80577C59: aNSC_decide_next_move_act - 0x80577D69: aNSC_set_zone_data - 0x80577DED: aNSC_set_player_angl - 0x80577DF9: aNSC_money_check - 0x80577E19: aNSC_get_sell_price - 0x80577E39: aNSC_check_money_overflow - 0x80577ECD: aNSC_check_buy_item_sub - 0x80577F71: aNSC_check_buy_paper - 0x80578061: aNSC_check_buy_item_single - 0x80578179: aNSC_check_buy_item_plural - 0x80578205: aNSC_check_buy_item - 0x80578239: aNSC_check_item_with_ticket - 0x805782B9: aNSC_setup_ticket_remain - 0x80578301: aNSC_check_same_month_ticket - 0x80578365: aNSC_get_msg_no - 0x805783AD: aNSC_Set_continue_msg_num - 0x805783ED: aNSC_ChangeMsgData - 0x8057842D: aNSC_set_player_angle - 0x80578535: aNSC_set_talk_info_show_item - 0x8057856D: aNSC_set_talk_info_show_cloth - 0x805785A5: aNSC_set_talk_info_sell_item - 0x80578665: aNSC_set_talk_info_message_ctrl - 0x8057868D: aNSC_set_talk_info_message_ctrl_aprilfool - 0x805786D5: aNSC_set_talk_info_message_ctrl_tokubai - 0x805786FD: aNSC_message_ctrl - 0x80578ADD: aNSC_buy_item_single - 0x80578BCD: aNSC_buy_paper - 0x80578CDD: aNSC_buy_item_only_one - 0x80578EED: aNSC_get_start_call_msg_no - 0x80578F29: aNSC_set_talk_info_start_wait - 0x8057911D: aNSC_set_talk_info_start_wait1 - 0x805791FD: aNSC_set_talk_info_start_wait2 - 0x80579249: aNSC_set_talk_info_start_wait3 - 0x80579285: aNSC_set_talk_info_start_wait4 - 0x805792AD: aNSC_start_wait - 0x80579561: aNSC_say_hello_approach - 0x805795F1: aNSC_say_hello_end_wait - 0x80579665: aNSC_check_col_chg_or_make_basement - 0x80579731: aNSC_check_roof_col_order - 0x80579869: aNSC_check_roof_col_order2 - 0x8057995D: aNSC_present_balloon_start_wait - 0x805799B9: aNSC_present_balloon_trans_move - 0x805799F5: aNSC_present_balloon_trans_takeout - 0x80579AD1: aNSC_present_balloon_trans_wait - 0x80579B11: aNSC_present_balloon_end_wait - 0x80579B79: aNSC_set_talk_info_request_Q_start_wait - 0x80579BA9: aNSC_request_Q_start_wait - 0x80579C2D: aNSC_request_Q_answer_wait - 0x80579D41: aNSC_request_Q_answer_wait2 - 0x80579ED1: aNSC_request_Q_end_wait - 0x80579F45: aNSC_answer_buy_item - 0x80579FC1: aNSC_buy_menu_open_wait - 0x8057A019: aNSC_buy_menu_close_wait - 0x8057A04D: aNSC_msg_win_open_wait - 0x8057A115: aNSC_buy_sum_check - 0x8057A211: aNSC_buy_check - 0x8057A491: aNSC_buy_after_service - 0x8057A50D: aNSC_buy_continue_check - 0x8057A5F9: aNSC_receive_check - 0x8057A69D: aNSC_msg_win_open_wait2 - 0x8057A765: aNSC_order_check - 0x8057A861: aNSC_sell_check_before - 0x8057A8C9: aNSC_sell_check - 0x8057A981: aNSC_sell_answer0 - 0x8057ABB5: aNSC_sell_item_with_ticket - 0x8057AC6D: aNSC_show_item_check - 0x8057AE39: aNSC_chg_cloth_start_wait - 0x8057AF01: aNSC_chg_cloth_end_wait - 0x8057AF5D: aNSC_pw_entry_send_addr_start_wait - 0x8057AFD5: aNSC_pw_msg_win_open_wait - 0x8057B081: aNSC_pw_send_addr_check - 0x8057B15D: aNSC_pw_sel_item_start_wait - 0x8057B1D5: aNSC_pw_msg_win_open_wait2 - 0x8057B285: aNSC_pw_send_check - 0x8057B3B1: aNSC_pw_retry_sel_item_check - 0x8057B479: aNSC_pc_input_pw_start_wait - 0x8057B4F1: aNSC_pc_msg_win_open_wait - 0x8057B585: aNSC_pc_retry_input_pw_check - 0x8057B679: aNSC_pc_present_start_wait - 0x8057B6D5: aNSC_pc_present_trans_takeout - 0x8057B7B1: aNSC_pc_present_trans_wait - 0x8057B7F1: aNSC_pc_present_end_wait - 0x8057B859: aNSC_wait - 0x8057B8D1: aNSC_walk_pl_other_zone - 0x8057B949: aNSC_turn - 0x8057B9E1: aNSC_set_talk_info_goodbye_wait - 0x8057BA11: aNSC_goodbye_wait - 0x8057BAAD: aNSC_say_goodbye - 0x8057BB0D: aNSC_exit_wait - 0x8057BB81: aNSC_say_hello_approach_init - 0x8057BBA1: aNSC_say_hello_end_wait_init - 0x8057BBC9: aNSC_check_col_chg_or_make_basement_init - 0x8057BBE9: aNSC_check_roof_col_order_init - 0x8057BC29: aNSC_check_roof_col_order2_init - 0x8057BC55: aNSC_present_balloon_start_wait_init - 0x8057BC71: aNSC_present_balloon_trans_move_init - 0x8057BCFD: aNSC_present_balloon_trans_takeout_init - 0x8057BD3D: aNSC_present_balloon_end_wait_init - 0x8057BD4D: aNSC_request_Q_answer_wait_init - 0x8057BD8D: aNSC_request_Q_end_wait_init - 0x8057BDAD: aNSC_answer_buy_item_init - 0x8057BDD9: aNSC_buy_menu_open_wait_init - 0x8057BDFD: aNSC_buy_menu_close_wait_init - 0x8057BE41: aNSC_msg_win_open_wait_init - 0x8057BE65: aNSC_buy_sum_check_init - 0x8057BE91: aNSC_buy_check_init - 0x8057BF89: aNSC_buy_after_service_init - 0x8057BFB5: aNSC_order_select_menu_close_wait_init - 0x8057BFF9: aNSC_order_check_init - 0x8057C025: aNSC_sell_check_before_init - 0x8057C065: aNSC_sell_answer0_init - 0x8057C17D: aNSC_sell_answer1_init - 0x8057C1B1: aNSC_sell_item_init - 0x8057C215: aNSC_sell_item_with_ticket_init - 0x8057C265: aNSC_sell_refuse0_init - 0x8057C271: aNSC_show_item_check_init - 0x8057C291: aNSC_chg_cloth_start_wait_init - 0x8057C2B5: aNSC_pw_entry_send_addr_start_wait_init - 0x8057C2E1: aNSC_pw_make_menu_close_wait_init - 0x8057C345: aNSC_pw_send_addr_check_init - 0x8057C365: aNSC_pw_sel_item_menu_close_wait_init - 0x8057C3A9: aNSC_pc_input_pw_start_wait_init - 0x8057C3E5: aNSC_pc_chk_menu_close_wait_init - 0x8057C42D: aNSC_pc_present_trans_takeout_init - 0x8057C4B5: aNSC_pc_present_end_wait_init - 0x8057C4C5: aNSC_wait_init - 0x8057C4E5: aNSC_walk_pl_same_zone_init - 0x8057C505: aNSC_run_pl_same_zone_init - 0x8057C525: aNSC_goodbye_wait_init - 0x8057C545: aNSC_say_goodbye_init - 0x8057C569: aNSC_init_proc - 0x8057C59D: aNSC_setupAction + 0x80577114: aNSC_set_animation + 0x80577164: aNSC_BGcheck + 0x805771A8: aNSC_check_present_balloon + 0x80577214: aNSC_calc_talk_start_tim + 0x8057723C: aNSC_request_show_camera + 0x805772B0: aNSC_Set_ListenAble + 0x805772D4: aNSC_set_sell_camera + 0x80577368: aNSC_sell_camera + 0x80577408: aNSC_talk_demo_proc + 0x80577478: aNSC_set_stop_spd + 0x80577494: aNSC_set_walk_spd + 0x805774C0: aNSC_set_run_spd + 0x805774EC: aNSC_set_rehouse_order_date + 0x80577514: aNSC_set_make_basement_info + 0x80577570: aNSC_getP_free_ftr_order + 0x805775A8: aNSC_set_ftr_order + 0x805775F4: aNSC_set_last_day_str + 0x80577648: aNSC_set_pw_name_str + 0x805776A4: aNSC_set_value_str + 0x80577700: aNSC_set_item_name_str + 0x80577764: aNSC_set_item_str + 0x805777BC: aNSC_set_pw_password_str + 0x8057781C: aNSC_set_pw_info_str + 0x80577884: aNSC_pc_check_password_famicom + 0x805778CC: aNSC_pc_check_password_npc + 0x80577938: aNSC_pc_check_password_card_e + 0x80577940: aNSC_pc_check_password_magazine + 0x805779B4: aNSC_pc_check_password_card_e_mini + 0x805779CC: aNSC_pc_check_password_user + 0x80577A14: aNSC_pc_check_password + 0x80577AD8: aNSC_check_possession_item_make_password + 0x80577B84: aNSC_set_buy_sum_str + 0x80577C58: aNSC_decide_next_move_act + 0x80577D68: aNSC_set_zone_data + 0x80577DEC: aNSC_set_player_angl + 0x80577DF8: aNSC_money_check + 0x80577E18: aNSC_get_sell_price + 0x80577E38: aNSC_check_money_overflow + 0x80577ECC: aNSC_check_buy_item_sub + 0x80577F70: aNSC_check_buy_paper + 0x80578060: aNSC_check_buy_item_single + 0x80578178: aNSC_check_buy_item_plural + 0x80578204: aNSC_check_buy_item + 0x80578238: aNSC_check_item_with_ticket + 0x805782B8: aNSC_setup_ticket_remain + 0x80578300: aNSC_check_same_month_ticket + 0x80578364: aNSC_get_msg_no + 0x805783AC: aNSC_Set_continue_msg_num + 0x805783EC: aNSC_ChangeMsgData + 0x8057842C: aNSC_set_player_angle + 0x80578534: aNSC_set_talk_info_show_item + 0x8057856C: aNSC_set_talk_info_show_cloth + 0x805785A4: aNSC_set_talk_info_sell_item + 0x80578664: aNSC_set_talk_info_message_ctrl + 0x8057868C: aNSC_set_talk_info_message_ctrl_aprilfool + 0x805786D4: aNSC_set_talk_info_message_ctrl_tokubai + 0x805786FC: aNSC_message_ctrl + 0x80578ADC: aNSC_buy_item_single + 0x80578BCC: aNSC_buy_paper + 0x80578CDC: aNSC_buy_item_only_one + 0x80578EEC: aNSC_get_start_call_msg_no + 0x80578F28: aNSC_set_talk_info_start_wait + 0x8057911C: aNSC_set_talk_info_start_wait1 + 0x805791FC: aNSC_set_talk_info_start_wait2 + 0x80579248: aNSC_set_talk_info_start_wait3 + 0x80579284: aNSC_set_talk_info_start_wait4 + 0x805792AC: aNSC_start_wait + 0x80579560: aNSC_say_hello_approach + 0x805795F0: aNSC_say_hello_end_wait + 0x80579664: aNSC_check_col_chg_or_make_basement + 0x80579730: aNSC_check_roof_col_order + 0x80579868: aNSC_check_roof_col_order2 + 0x8057995C: aNSC_present_balloon_start_wait + 0x805799B8: aNSC_present_balloon_trans_move + 0x805799F4: aNSC_present_balloon_trans_takeout + 0x80579AD0: aNSC_present_balloon_trans_wait + 0x80579B10: aNSC_present_balloon_end_wait + 0x80579B78: aNSC_set_talk_info_request_Q_start_wait + 0x80579BA8: aNSC_request_Q_start_wait + 0x80579C2C: aNSC_request_Q_answer_wait + 0x80579D40: aNSC_request_Q_answer_wait2 + 0x80579ED0: aNSC_request_Q_end_wait + 0x80579F44: aNSC_answer_buy_item + 0x80579FC0: aNSC_buy_menu_open_wait + 0x8057A018: aNSC_buy_menu_close_wait + 0x8057A04C: aNSC_msg_win_open_wait + 0x8057A114: aNSC_buy_sum_check + 0x8057A210: aNSC_buy_check + 0x8057A490: aNSC_buy_after_service + 0x8057A50C: aNSC_buy_continue_check + 0x8057A5F8: aNSC_receive_check + 0x8057A69C: aNSC_msg_win_open_wait2 + 0x8057A764: aNSC_order_check + 0x8057A860: aNSC_sell_check_before + 0x8057A8C8: aNSC_sell_check + 0x8057A980: aNSC_sell_answer0 + 0x8057ABB4: aNSC_sell_item_with_ticket + 0x8057AC6C: aNSC_show_item_check + 0x8057AE38: aNSC_chg_cloth_start_wait + 0x8057AF00: aNSC_chg_cloth_end_wait + 0x8057AF5C: aNSC_pw_entry_send_addr_start_wait + 0x8057AFD4: aNSC_pw_msg_win_open_wait + 0x8057B080: aNSC_pw_send_addr_check + 0x8057B15C: aNSC_pw_sel_item_start_wait + 0x8057B1D4: aNSC_pw_msg_win_open_wait2 + 0x8057B284: aNSC_pw_send_check + 0x8057B3B0: aNSC_pw_retry_sel_item_check + 0x8057B478: aNSC_pc_input_pw_start_wait + 0x8057B4F0: aNSC_pc_msg_win_open_wait + 0x8057B584: aNSC_pc_retry_input_pw_check + 0x8057B678: aNSC_pc_present_start_wait + 0x8057B6D4: aNSC_pc_present_trans_takeout + 0x8057B7B0: aNSC_pc_present_trans_wait + 0x8057B7F0: aNSC_pc_present_end_wait + 0x8057B858: aNSC_wait + 0x8057B8D0: aNSC_walk_pl_other_zone + 0x8057B948: aNSC_turn + 0x8057B9E0: aNSC_set_talk_info_goodbye_wait + 0x8057BA10: aNSC_goodbye_wait + 0x8057BAAC: aNSC_say_goodbye + 0x8057BB0C: aNSC_exit_wait + 0x8057BB80: aNSC_say_hello_approach_init + 0x8057BBA0: aNSC_say_hello_end_wait_init + 0x8057BBC8: aNSC_check_col_chg_or_make_basement_init + 0x8057BBE8: aNSC_check_roof_col_order_init + 0x8057BC28: aNSC_check_roof_col_order2_init + 0x8057BC54: aNSC_present_balloon_start_wait_init + 0x8057BC70: aNSC_present_balloon_trans_move_init + 0x8057BCFC: aNSC_present_balloon_trans_takeout_init + 0x8057BD3C: aNSC_present_balloon_end_wait_init + 0x8057BD4C: aNSC_request_Q_answer_wait_init + 0x8057BD8C: aNSC_request_Q_end_wait_init + 0x8057BDAC: aNSC_answer_buy_item_init + 0x8057BDD8: aNSC_buy_menu_open_wait_init + 0x8057BDFC: aNSC_buy_menu_close_wait_init + 0x8057BE40: aNSC_msg_win_open_wait_init + 0x8057BE64: aNSC_buy_sum_check_init + 0x8057BE90: aNSC_buy_check_init + 0x8057BF88: aNSC_buy_after_service_init + 0x8057BFB4: aNSC_order_select_menu_close_wait_init + 0x8057BFF8: aNSC_order_check_init + 0x8057C024: aNSC_sell_check_before_init + 0x8057C064: aNSC_sell_answer0_init + 0x8057C17C: aNSC_sell_answer1_init + 0x8057C1B0: aNSC_sell_item_init + 0x8057C214: aNSC_sell_item_with_ticket_init + 0x8057C264: aNSC_sell_refuse0_init + 0x8057C270: aNSC_show_item_check_init + 0x8057C290: aNSC_chg_cloth_start_wait_init + 0x8057C2B4: aNSC_pw_entry_send_addr_start_wait_init + 0x8057C2E0: aNSC_pw_make_menu_close_wait_init + 0x8057C344: aNSC_pw_send_addr_check_init + 0x8057C364: aNSC_pw_sel_item_menu_close_wait_init + 0x8057C3A8: aNSC_pc_input_pw_start_wait_init + 0x8057C3E4: aNSC_pc_chk_menu_close_wait_init + 0x8057C42C: aNSC_pc_present_trans_takeout_init + 0x8057C4B4: aNSC_pc_present_end_wait_init + 0x8057C4C4: aNSC_wait_init + 0x8057C4E4: aNSC_walk_pl_same_zone_init + 0x8057C504: aNSC_run_pl_same_zone_init + 0x8057C524: aNSC_goodbye_wait_init + 0x8057C544: aNSC_say_goodbye_init + 0x8057C568: aNSC_init_proc + 0x8057C59C: aNSC_setupAction 0x806BFE18: aNSC_item1_0_tanni_type 0x806BFF18: aNSC_item1_1_tanni_type 0x806BFF1C: aNSC_item1_2_tanni_type @@ -56391,188 +56400,188 @@ src/ac_npc_shop_master.c: 0x806C0250: aNSC_item_tanni_type 0x806C0344: aNSC_exchange_itemNo src/ac_npc_needlework.c: - 0x80564CA1: player_go_away - 0x80564CE1: player_buy + 0x80564CA0: player_go_away + 0x80564CE0: player_buy 0x806BE35C: dt_tbl 0x806BE3A8: proc_table 0x806BE3C8: init_table src/ac_npc_shop_mastersp.c: - 0x8057CB61: player_go_away - 0x8057CBB9: player_buy + 0x8057CB60: player_go_away + 0x8057CBB8: player_buy src/ac_npc_p_sel2.c: - 0x805682D1: aNPS2_make_door_data - 0x8056852D: aNPS2_setup_game_start + 0x805682D0: aNPS2_make_door_data + 0x8056852C: aNPS2_setup_game_start src/ac_npc_station_master.c: - 0x8057F7C1: aNPS2_make_door_data - 0x8057F825: aNPS2_setup_game_start + 0x8057F7C0: aNPS2_make_door_data + 0x8057F824: aNPS2_setup_game_start 0x806C0C14: proc_table 0x806C0C5C: dt_tbl 0x806C0CCC: init_table src/ac_npc_super_master.c: - 0x80580C21: aNSC_set_animation - 0x80580C71: aNSC_BGcheck - 0x80580CB5: aNSC_check_present_balloon - 0x80580D21: aNSC_calc_talk_start_tim - 0x80580D49: aNSC_request_show_camera - 0x80580DBD: aNSC_Set_ListenAble - 0x80580DE1: aNSC_set_sell_camera - 0x80580E75: aNSC_sell_camera - 0x80580F15: aNSC_talk_demo_proc - 0x80580F85: aNSC_set_stop_spd - 0x80580FA1: aNSC_set_walk_spd - 0x80580FCD: aNSC_set_run_spd - 0x80580FF9: aNSC_set_rehouse_order_date - 0x80581021: aNSC_set_make_basement_info - 0x8058107D: aNSC_getP_free_ftr_order - 0x805810B5: aNSC_set_ftr_order - 0x80581101: aNSC_set_last_day_str - 0x80581155: aNSC_set_pw_name_str - 0x805811B1: aNSC_set_value_str - 0x8058120D: aNSC_set_item_name_str - 0x80581271: aNSC_set_item_str - 0x805812C9: aNSC_set_pw_password_str - 0x80581329: aNSC_set_pw_info_str - 0x80581391: aNSC_pc_check_password_famicom - 0x805813D9: aNSC_pc_check_password_npc - 0x80581445: aNSC_pc_check_password_card_e - 0x8058144D: aNSC_pc_check_password_magazine - 0x805814C1: aNSC_pc_check_password_card_e_mini - 0x805814D9: aNSC_pc_check_password_user - 0x80581521: aNSC_pc_check_password - 0x805815E5: aNSC_check_possession_item_make_password - 0x80581691: aNSC_set_buy_sum_str - 0x80581765: aNSC_decide_next_move_act - 0x80581875: aNSC_set_zone_data - 0x805818F9: aNSC_set_player_angl - 0x80581905: aNSC_money_check - 0x80581925: aNSC_get_sell_price - 0x80581945: aNSC_check_money_overflow - 0x805819D9: aNSC_check_buy_item_sub - 0x80581A7D: aNSC_check_buy_paper - 0x80581B6D: aNSC_check_buy_item_single - 0x80581C85: aNSC_check_buy_item_plural - 0x80581D11: aNSC_check_buy_item - 0x80581D45: aNSC_check_item_with_ticket - 0x80581DC5: aNSC_setup_ticket_remain - 0x80581E0D: aNSC_check_same_month_ticket - 0x80581E71: aNSC_get_msg_no - 0x80581EB9: aNSC_Set_continue_msg_num - 0x80581EF9: aNSC_ChangeMsgData - 0x80581F39: aNSC_set_player_angle - 0x80582041: aNSC_set_talk_info_show_item - 0x80582079: aNSC_set_talk_info_show_cloth - 0x805820B1: aNSC_set_talk_info_sell_item - 0x80582171: aNSC_set_talk_info_message_ctrl - 0x80582199: aNSC_set_talk_info_message_ctrl_aprilfool - 0x805821E1: aNSC_set_talk_info_message_ctrl_tokubai - 0x80582209: aNSC_message_ctrl - 0x805825E9: aNSC_buy_item_single - 0x805826D9: aNSC_buy_paper - 0x805827E9: aNSC_buy_item_only_one - 0x805829F9: aNSC_get_start_call_msg_no - 0x80582A35: aNSC_set_talk_info_start_wait - 0x80582C29: aNSC_set_talk_info_start_wait1 - 0x80582D09: aNSC_set_talk_info_start_wait2 - 0x80582D55: aNSC_set_talk_info_start_wait3 - 0x80582D91: aNSC_set_talk_info_start_wait4 - 0x80582DB9: aNSC_start_wait - 0x8058306D: aNSC_say_hello_approach - 0x805830FD: aNSC_say_hello_end_wait - 0x80583171: aNSC_check_col_chg_or_make_basement - 0x8058323D: aNSC_check_roof_col_order - 0x80583375: aNSC_check_roof_col_order2 - 0x80583469: aNSC_present_balloon_start_wait - 0x805834C5: aNSC_present_balloon_trans_move - 0x80583501: aNSC_present_balloon_trans_takeout - 0x805835DD: aNSC_present_balloon_trans_wait - 0x8058361D: aNSC_present_balloon_end_wait - 0x80583685: aNSC_set_talk_info_request_Q_start_wait - 0x805836B5: aNSC_request_Q_start_wait - 0x80583739: aNSC_request_Q_answer_wait - 0x8058384D: aNSC_request_Q_answer_wait2 - 0x805839DD: aNSC_request_Q_end_wait - 0x80583A51: aNSC_answer_buy_item - 0x80583ACD: aNSC_buy_menu_open_wait - 0x80583B25: aNSC_buy_menu_close_wait - 0x80583B59: aNSC_msg_win_open_wait - 0x80583C21: aNSC_buy_sum_check - 0x80583D1D: aNSC_buy_check - 0x80583F9D: aNSC_buy_after_service - 0x80584019: aNSC_buy_continue_check - 0x80584105: aNSC_receive_check - 0x805841A9: aNSC_msg_win_open_wait2 - 0x80584271: aNSC_order_check - 0x8058436D: aNSC_sell_check_before - 0x805843D5: aNSC_sell_check - 0x8058448D: aNSC_sell_answer0 - 0x805846C1: aNSC_sell_item_with_ticket - 0x80584779: aNSC_show_item_check - 0x80584945: aNSC_chg_cloth_start_wait - 0x80584A0D: aNSC_chg_cloth_end_wait - 0x80584A69: aNSC_pw_entry_send_addr_start_wait - 0x80584AE1: aNSC_pw_msg_win_open_wait - 0x80584B8D: aNSC_pw_send_addr_check - 0x80584C69: aNSC_pw_sel_item_start_wait - 0x80584CE1: aNSC_pw_msg_win_open_wait2 - 0x80584D91: aNSC_pw_send_check - 0x80584EBD: aNSC_pw_retry_sel_item_check - 0x80584F85: aNSC_pc_input_pw_start_wait - 0x80584FFD: aNSC_pc_msg_win_open_wait - 0x80585091: aNSC_pc_retry_input_pw_check - 0x80585185: aNSC_pc_present_start_wait - 0x805851E1: aNSC_pc_present_trans_takeout - 0x805852BD: aNSC_pc_present_trans_wait - 0x805852FD: aNSC_pc_present_end_wait - 0x80585365: aNSC_wait - 0x805853DD: aNSC_walk_pl_other_zone - 0x80585455: aNSC_turn - 0x805854ED: aNSC_set_talk_info_goodbye_wait - 0x8058551D: aNSC_goodbye_wait - 0x805855B9: aNSC_say_goodbye - 0x80585619: aNSC_exit_wait - 0x8058568D: aNSC_say_hello_approach_init - 0x805856AD: aNSC_say_hello_end_wait_init - 0x805856D5: aNSC_check_col_chg_or_make_basement_init - 0x805856F5: aNSC_check_roof_col_order_init - 0x80585735: aNSC_check_roof_col_order2_init - 0x80585761: aNSC_present_balloon_start_wait_init - 0x8058577D: aNSC_present_balloon_trans_move_init - 0x80585809: aNSC_present_balloon_trans_takeout_init - 0x80585849: aNSC_present_balloon_end_wait_init - 0x80585859: aNSC_request_Q_answer_wait_init - 0x80585899: aNSC_request_Q_end_wait_init - 0x805858B9: aNSC_answer_buy_item_init - 0x805858E5: aNSC_buy_menu_open_wait_init - 0x80585909: aNSC_buy_menu_close_wait_init - 0x8058594D: aNSC_msg_win_open_wait_init - 0x80585971: aNSC_buy_sum_check_init - 0x8058599D: aNSC_buy_check_init - 0x80585A95: aNSC_buy_after_service_init - 0x80585AC1: aNSC_order_select_menu_close_wait_init - 0x80585B05: aNSC_order_check_init - 0x80585B31: aNSC_sell_check_before_init - 0x80585B71: aNSC_sell_answer0_init - 0x80585C89: aNSC_sell_answer1_init - 0x80585CBD: aNSC_sell_item_init - 0x80585D21: aNSC_sell_item_with_ticket_init - 0x80585D71: aNSC_sell_refuse0_init - 0x80585D7D: aNSC_show_item_check_init - 0x80585D9D: aNSC_chg_cloth_start_wait_init - 0x80585DC1: aNSC_pw_entry_send_addr_start_wait_init - 0x80585DED: aNSC_pw_make_menu_close_wait_init - 0x80585E51: aNSC_pw_send_addr_check_init - 0x80585E71: aNSC_pw_sel_item_menu_close_wait_init - 0x80585EB5: aNSC_pc_input_pw_start_wait_init - 0x80585EF1: aNSC_pc_chk_menu_close_wait_init - 0x80585F39: aNSC_pc_present_trans_takeout_init - 0x80585FC1: aNSC_pc_present_end_wait_init - 0x80585FD1: aNSC_wait_init - 0x80585FF1: aNSC_walk_pl_same_zone_init - 0x80586011: aNSC_run_pl_same_zone_init - 0x80586031: aNSC_goodbye_wait_init - 0x80586051: aNSC_say_goodbye_init - 0x80586075: aNSC_init_proc - 0x805860A9: aNSC_setupAction + 0x80580C20: aNSC_set_animation + 0x80580C70: aNSC_BGcheck + 0x80580CB4: aNSC_check_present_balloon + 0x80580D20: aNSC_calc_talk_start_tim + 0x80580D48: aNSC_request_show_camera + 0x80580DBC: aNSC_Set_ListenAble + 0x80580DE0: aNSC_set_sell_camera + 0x80580E74: aNSC_sell_camera + 0x80580F14: aNSC_talk_demo_proc + 0x80580F84: aNSC_set_stop_spd + 0x80580FA0: aNSC_set_walk_spd + 0x80580FCC: aNSC_set_run_spd + 0x80580FF8: aNSC_set_rehouse_order_date + 0x80581020: aNSC_set_make_basement_info + 0x8058107C: aNSC_getP_free_ftr_order + 0x805810B4: aNSC_set_ftr_order + 0x80581100: aNSC_set_last_day_str + 0x80581154: aNSC_set_pw_name_str + 0x805811B0: aNSC_set_value_str + 0x8058120C: aNSC_set_item_name_str + 0x80581270: aNSC_set_item_str + 0x805812C8: aNSC_set_pw_password_str + 0x80581328: aNSC_set_pw_info_str + 0x80581390: aNSC_pc_check_password_famicom + 0x805813D8: aNSC_pc_check_password_npc + 0x80581444: aNSC_pc_check_password_card_e + 0x8058144C: aNSC_pc_check_password_magazine + 0x805814C0: aNSC_pc_check_password_card_e_mini + 0x805814D8: aNSC_pc_check_password_user + 0x80581520: aNSC_pc_check_password + 0x805815E4: aNSC_check_possession_item_make_password + 0x80581690: aNSC_set_buy_sum_str + 0x80581764: aNSC_decide_next_move_act + 0x80581874: aNSC_set_zone_data + 0x805818F8: aNSC_set_player_angl + 0x80581904: aNSC_money_check + 0x80581924: aNSC_get_sell_price + 0x80581944: aNSC_check_money_overflow + 0x805819D8: aNSC_check_buy_item_sub + 0x80581A7C: aNSC_check_buy_paper + 0x80581B6C: aNSC_check_buy_item_single + 0x80581C84: aNSC_check_buy_item_plural + 0x80581D10: aNSC_check_buy_item + 0x80581D44: aNSC_check_item_with_ticket + 0x80581DC4: aNSC_setup_ticket_remain + 0x80581E0C: aNSC_check_same_month_ticket + 0x80581E70: aNSC_get_msg_no + 0x80581EB8: aNSC_Set_continue_msg_num + 0x80581EF8: aNSC_ChangeMsgData + 0x80581F38: aNSC_set_player_angle + 0x80582040: aNSC_set_talk_info_show_item + 0x80582078: aNSC_set_talk_info_show_cloth + 0x805820B0: aNSC_set_talk_info_sell_item + 0x80582170: aNSC_set_talk_info_message_ctrl + 0x80582198: aNSC_set_talk_info_message_ctrl_aprilfool + 0x805821E0: aNSC_set_talk_info_message_ctrl_tokubai + 0x80582208: aNSC_message_ctrl + 0x805825E8: aNSC_buy_item_single + 0x805826D8: aNSC_buy_paper + 0x805827E8: aNSC_buy_item_only_one + 0x805829F8: aNSC_get_start_call_msg_no + 0x80582A34: aNSC_set_talk_info_start_wait + 0x80582C28: aNSC_set_talk_info_start_wait1 + 0x80582D08: aNSC_set_talk_info_start_wait2 + 0x80582D54: aNSC_set_talk_info_start_wait3 + 0x80582D90: aNSC_set_talk_info_start_wait4 + 0x80582DB8: aNSC_start_wait + 0x8058306C: aNSC_say_hello_approach + 0x805830FC: aNSC_say_hello_end_wait + 0x80583170: aNSC_check_col_chg_or_make_basement + 0x8058323C: aNSC_check_roof_col_order + 0x80583374: aNSC_check_roof_col_order2 + 0x80583468: aNSC_present_balloon_start_wait + 0x805834C4: aNSC_present_balloon_trans_move + 0x80583500: aNSC_present_balloon_trans_takeout + 0x805835DC: aNSC_present_balloon_trans_wait + 0x8058361C: aNSC_present_balloon_end_wait + 0x80583684: aNSC_set_talk_info_request_Q_start_wait + 0x805836B4: aNSC_request_Q_start_wait + 0x80583738: aNSC_request_Q_answer_wait + 0x8058384C: aNSC_request_Q_answer_wait2 + 0x805839DC: aNSC_request_Q_end_wait + 0x80583A50: aNSC_answer_buy_item + 0x80583ACC: aNSC_buy_menu_open_wait + 0x80583B24: aNSC_buy_menu_close_wait + 0x80583B58: aNSC_msg_win_open_wait + 0x80583C20: aNSC_buy_sum_check + 0x80583D1C: aNSC_buy_check + 0x80583F9C: aNSC_buy_after_service + 0x80584018: aNSC_buy_continue_check + 0x80584104: aNSC_receive_check + 0x805841A8: aNSC_msg_win_open_wait2 + 0x80584270: aNSC_order_check + 0x8058436C: aNSC_sell_check_before + 0x805843D4: aNSC_sell_check + 0x8058448C: aNSC_sell_answer0 + 0x805846C0: aNSC_sell_item_with_ticket + 0x80584778: aNSC_show_item_check + 0x80584944: aNSC_chg_cloth_start_wait + 0x80584A0C: aNSC_chg_cloth_end_wait + 0x80584A68: aNSC_pw_entry_send_addr_start_wait + 0x80584AE0: aNSC_pw_msg_win_open_wait + 0x80584B8C: aNSC_pw_send_addr_check + 0x80584C68: aNSC_pw_sel_item_start_wait + 0x80584CE0: aNSC_pw_msg_win_open_wait2 + 0x80584D90: aNSC_pw_send_check + 0x80584EBC: aNSC_pw_retry_sel_item_check + 0x80584F84: aNSC_pc_input_pw_start_wait + 0x80584FFC: aNSC_pc_msg_win_open_wait + 0x80585090: aNSC_pc_retry_input_pw_check + 0x80585184: aNSC_pc_present_start_wait + 0x805851E0: aNSC_pc_present_trans_takeout + 0x805852BC: aNSC_pc_present_trans_wait + 0x805852FC: aNSC_pc_present_end_wait + 0x80585364: aNSC_wait + 0x805853DC: aNSC_walk_pl_other_zone + 0x80585454: aNSC_turn + 0x805854EC: aNSC_set_talk_info_goodbye_wait + 0x8058551C: aNSC_goodbye_wait + 0x805855B8: aNSC_say_goodbye + 0x80585618: aNSC_exit_wait + 0x8058568C: aNSC_say_hello_approach_init + 0x805856AC: aNSC_say_hello_end_wait_init + 0x805856D4: aNSC_check_col_chg_or_make_basement_init + 0x805856F4: aNSC_check_roof_col_order_init + 0x80585734: aNSC_check_roof_col_order2_init + 0x80585760: aNSC_present_balloon_start_wait_init + 0x8058577C: aNSC_present_balloon_trans_move_init + 0x80585808: aNSC_present_balloon_trans_takeout_init + 0x80585848: aNSC_present_balloon_end_wait_init + 0x80585858: aNSC_request_Q_answer_wait_init + 0x80585898: aNSC_request_Q_end_wait_init + 0x805858B8: aNSC_answer_buy_item_init + 0x805858E4: aNSC_buy_menu_open_wait_init + 0x80585908: aNSC_buy_menu_close_wait_init + 0x8058594C: aNSC_msg_win_open_wait_init + 0x80585970: aNSC_buy_sum_check_init + 0x8058599C: aNSC_buy_check_init + 0x80585A94: aNSC_buy_after_service_init + 0x80585AC0: aNSC_order_select_menu_close_wait_init + 0x80585B04: aNSC_order_check_init + 0x80585B30: aNSC_sell_check_before_init + 0x80585B70: aNSC_sell_answer0_init + 0x80585C88: aNSC_sell_answer1_init + 0x80585CBC: aNSC_sell_item_init + 0x80585D20: aNSC_sell_item_with_ticket_init + 0x80585D70: aNSC_sell_refuse0_init + 0x80585D7C: aNSC_show_item_check_init + 0x80585D9C: aNSC_chg_cloth_start_wait_init + 0x80585DC0: aNSC_pw_entry_send_addr_start_wait_init + 0x80585DEC: aNSC_pw_make_menu_close_wait_init + 0x80585E50: aNSC_pw_send_addr_check_init + 0x80585E70: aNSC_pw_sel_item_menu_close_wait_init + 0x80585EB4: aNSC_pc_input_pw_start_wait_init + 0x80585EF0: aNSC_pc_chk_menu_close_wait_init + 0x80585F38: aNSC_pc_present_trans_takeout_init + 0x80585FC0: aNSC_pc_present_end_wait_init + 0x80585FD0: aNSC_wait_init + 0x80585FF0: aNSC_walk_pl_same_zone_init + 0x80586010: aNSC_run_pl_same_zone_init + 0x80586030: aNSC_goodbye_wait_init + 0x80586050: aNSC_say_goodbye_init + 0x80586074: aNSC_init_proc + 0x805860A8: aNSC_setupAction 0x806C135C: aNSC_item1_0_tanni_type 0x806C145C: aNSC_item1_1_tanni_type 0x806C1460: aNSC_item1_2_tanni_type @@ -56592,101 +56601,101 @@ src/ac_npc_super_master.c: 0x806C1794: aNSC_item_tanni_type 0x806C1888: aNSC_exchange_itemNo src/ac_tokyoso_control.c: - 0x804AB041: aTKN1_set_request_act + 0x804AB040: aTKN1_set_request_act 0x8068F438: init_table src/ac_tokyoso_npc1.c: - 0x8058C3BD: aTKN1_set_request_act + 0x8058C3BC: aTKN1_set_request_act 0x806C2400: dt_tbl 0x806C2474: proc_table src/ac_br_shop.c: - 0x805A8769: change_FGUnit + 0x805A8768: change_FGUnit src/ac_buggy.c: - 0x805A9E19: change_FGUnit + 0x805A9E18: change_FGUnit src/ac_count02.c: - 0x805AB8B9: aCOU_actor_ct - 0x805AB989: aCOU_actor_dt - 0x805ABAE9: aCOU_wait - 0x805ABC05: aCOU_setup_action - 0x805ABCA1: aCOU_actor_move - 0x805ABDAD: aCOU_actor_init - 0x805ABE25: aCOU_actor_draw_before - 0x805ABE89: aCOU_actor_draw + 0x805AB8B8: aCOU_actor_ct + 0x805AB988: aCOU_actor_dt + 0x805ABAE8: aCOU_wait + 0x805ABC04: aCOU_setup_action + 0x805ABCA0: aCOU_actor_move + 0x805ABDAC: aCOU_actor_init + 0x805ABE24: aCOU_actor_draw_before + 0x805ABE88: aCOU_actor_draw src/ac_countdown.c: - 0x805AC0AD: aCOU_actor_ct - 0x805AC121: aCOU_actor_dt - 0x805AC335: aCOU_wait - 0x805AC401: aCOU_setup_action - 0x805AC4A1: aCOU_actor_move - 0x805AC5ED: aCOU_actor_init - 0x805AC665: aCOU_actor_draw_before - 0x805AC7B1: aCOU_actor_draw + 0x805AC0AC: aCOU_actor_ct + 0x805AC120: aCOU_actor_dt + 0x805AC334: aCOU_wait + 0x805AC400: aCOU_setup_action + 0x805AC4A0: aCOU_actor_move + 0x805AC5EC: aCOU_actor_init + 0x805AC664: aCOU_actor_draw_before + 0x805AC7B0: aCOU_actor_draw src/ac_house.c: - 0x805AFB2D: change_FGUnit + 0x805AFB2C: change_FGUnit src/ac_kamakura.c: - 0x805B1DE5: change_FGUnit + 0x805B1DE4: change_FGUnit src/ac_mikanbox.c: - 0x805B3011: aMIK_actor_ct + 0x805B3010: aMIK_actor_ct 0x805B3E59: aMIK_actor_init - 0x805B4055: aMIK_actor_draw + 0x805B4054: aMIK_actor_draw 0x806C5BB0: init_table 0x806C5BD0: obj_e_mikanbox_v src/ac_mikuji.c: - 0x805B414D: aMIK_actor_ct - 0x805B437D: aMIK_actor_init - 0x805B43F5: aMIK_actor_draw + 0x805B414C: aMIK_actor_ct + 0x805B437C: aMIK_actor_init + 0x805B43F4: aMIK_actor_draw src/ac_turi_npc0.c: - 0x805900B1: aTR0_actor_ct - 0x805901D9: aTR0_actor_dt - 0x80590285: aTR0_actor_move - 0x805902BD: aTR0_actor_draw + 0x805900B0: aTR0_actor_ct + 0x805901D8: aTR0_actor_dt + 0x80590284: aTR0_actor_move + 0x805902BC: aTR0_actor_draw src/ac_train0.c: - 0x805BFC29: aTR0_actor_ct - 0x805BFCDD: aTR0_actor_dt - 0x805C00F5: calc_speed1 - 0x805C014D: calc_speed2 - 0x805C03ED: aTR0_actor_move - 0x805C04E1: aTR0_actor_draw + 0x805BFC28: aTR0_actor_ct + 0x805BFCDC: aTR0_actor_dt + 0x805C00F4: calc_speed1 + 0x805C014C: calc_speed2 + 0x805C03EC: aTR0_actor_move + 0x805C04E0: aTR0_actor_draw src/ac_train1.c: - 0x805C0709: calc_speed1 - 0x805C0761: calc_speed2 + 0x805C0708: calc_speed1 + 0x805C0760: calc_speed2 src/ac_ev_angler.c: - 0x80518395: get_fish_save_area - 0x805186F5: getP_top_of_angler_pID - 0x80518719: set_top_of_angler_pID - 0x80518751: get_top_of_angler_size + 0x80518394: get_fish_save_area + 0x805186F4: getP_top_of_angler_pID + 0x80518718: set_top_of_angler_pID + 0x80518750: get_top_of_angler_size src/ac_turi.c: - 0x805C1291: get_fish_save_area - 0x805C12F1: get_top_of_angler_size - 0x805C1315: set_top_of_angler_pID - 0x805C134D: getP_top_of_angler_pID + 0x805C1290: get_fish_save_area + 0x805C12F0: get_top_of_angler_size + 0x805C1314: set_top_of_angler_pID + 0x805C134C: getP_top_of_angler_pID src/m_submenu.c: - 0x803EFD79: mSM_move_End + 0x803EFD78: mSM_move_End src/m_submenu_ovl.c: - 0x805EF449: mSM_move_End + 0x805EF448: mSM_move_End src/m_inventory_ovl.c: - 0x805E448D: mIV_get_win_posY + 0x805E448C: mIV_get_win_posY src/m_tag_ovl.c: - 0x805F89B1: mIV_get_win_posY + 0x805F89B0: mIV_get_win_posY src/ef_turi_hane0.c: - 0x80624049: eTH0_init - 0x806240BD: eTH0_ct - 0x80624139: eTH0_mv - 0x8062413D: eTH0_dw + 0x80624048: eTH0_init + 0x806240BC: eTH0_ct + 0x80624138: eTH0_mv + 0x8062413C: eTH0_dw src/ef_turi_hane1.c: - 0x80624261: eTH0_init - 0x806242D5: eTH0_ct - 0x806242F5: eTH0_mv - 0x806242F9: eTH0_dw + 0x80624260: eTH0_init + 0x806242D4: eTH0_ct + 0x806242F4: eTH0_mv + 0x806242F8: eTH0_dw src/ef_takurami.c: - 0x80620A7D: eTM_init - 0x80620BC5: eTM_ct - 0x80620D05: eTM_mv - 0x80620DBD: eTM_dw + 0x80620A7C: eTM_init + 0x80620BC4: eTM_ct + 0x80620D04: eTM_mv + 0x80620DBC: eTM_dw src/ef_turi_mizu.c: - 0x806247C1: eTM_init - 0x80624891: eTM_ct - 0x80624989: eTM_mv - 0x80624B11: eTM_dw + 0x806247C0: eTM_init + 0x80624890: eTM_ct + 0x80624988: eTM_mv + 0x80624B10: eTM_dw src/padmgr.c: 0x8065F138: this src/ac_gyo_release.c: diff --git a/configure.py b/configure.py index 71559bc9..3cd53d4b 100644 --- a/configure.py +++ b/configure.py @@ -9,6 +9,8 @@ import json import os import pickle import re +import subprocess +import yaml from io import StringIO from sys import executable as PYTHON, platform @@ -30,6 +32,11 @@ assert os.path.exists("tools/1.3.2/mwcceppc.exe") and \ os.path.exists("tools/1.2.5n/mwcceppc.exe"), \ "Error: Codewarrior not found!" +# Check if foresta.rel.szs exists but not foresta.rel, and if so, decompress +if not os.path.exists(c.REL) and os.path.exists(c.REL_SZS): + print("Decompressing foresta.rel.szs to foresta.rel") + subprocess.call([f'./{c.ORTHRUS}', 'ncompress', 'yaz0', '-d', c.REL_SZS, c.REL]) + # Check binaries were added assert os.path.exists(c.DOL) and os.path.exists(c.REL), \ "Error: Base binaries not found!" @@ -91,11 +98,12 @@ n.variable("ld", c.LD) n.variable("devkitppc", c.DEVKITPPC) n.variable("as", c.AS) n.variable("cpp", c.CPP) -n.variable("iconv", c.ICONV) n.variable("forcefilesgen", c.FORCEFILESGEN) n.variable("vtxdis", c.VTXDIS) n.variable("pal16dis", c.PAL16DIS) n.variable("arctool", c.ARC_TOOL) +n.variable("sjiswrap", c.SJISWRAP) +n.variable("batchassetrip", c.BATCHASSETRIP) n.newline() ############## @@ -115,7 +123,7 @@ n.newline() # Windows can't use && without this statement ALLOW_CHAIN = "cmd /c " if os.name == "nt" else "" -mwcc_cmd = ALLOW_CHAIN + f"$cpp -M $in -MF $out.d $cppflags && $cc $cflags -c $in -o $out" +mwcc_cmd = ALLOW_CHAIN + f"$cpp -M $in -MF $out.d $cppflags && $sjiswrap $cc $cflags -c $in -o $out" n.rule( "relextern", @@ -178,6 +186,12 @@ n.rule( description = "Asset include generation $out" ) +n.rule( + "batchassetrip", + command = "$batchassetrip $in $asset_yml", + description="Batch asset rip $asset_yml" +) + n.rule( "forceactivegen", command = "$forceactivegen $in $out", @@ -219,7 +233,7 @@ n.rule( n.rule( "ccs", - command = ALLOW_CHAIN + f"$cpp -M $in -MF $out.d $cppflags && $cc $cflags -S $in -o $out", + command = ALLOW_CHAIN + f"$cpp -M $in -MF $out.d $cppflags && $sjiswrap $cc $cflags -S $in -o $out", description = "CC -S $in", deps = "gcc", depfile = "$out.d" @@ -231,12 +245,6 @@ n.rule( description = "LD $out", ) -n.rule( - "iconv", - command = "$iconv $in $out", - description = "iconv $in", -) - n.rule( "forcefiles", command = "$forcefilesgen $in $out $forcefiles", @@ -261,6 +269,12 @@ n.rule( description = "$arctool -v $in $out" ) +n.rule( + "sjiswrap", + command = "$sjiswrap $in", + description = "sjiswrap $in", +) + ########## # Assets # ########## @@ -492,16 +506,29 @@ class AssetInclude(GeneratedInclude): return # Build + binary = None + asset_entries = {} + expected_files = [] for inc in includes: - n.build( - inc.asset_path, - rule="assetrip", - inputs=inc.asset.binary, - variables={ - "addrs" : f"{inc.asset.start:x} {inc.asset.end:x}" - } - ) + if binary == None: + binary = inc.asset.binary + asset_entries[inc.asset_path] = [inc.asset.start, inc.asset.end] + expected_files.append(inc.asset_path) + with open(f"{c.BUILDDIR}/{binary[7:10]}_assetrip.yml", 'w') as asset_yml: + yaml.dump(asset_entries, asset_yml) + + n.build( + outputs=expected_files, + rule = "batchassetrip", + inputs = binary, + variables = { + "asset_yml": f"{c.BUILDDIR}/{binary[7:10]}_assetrip.yml" + } + ) + + # Include + for inc in includes: if inc.asset.convtype == "vtx": n.build( inc.path, @@ -623,14 +650,19 @@ class AsmSource(Source): rule = "as", inputs = self.src_path ) - + class CSource(Source): def __init__(self, ctx: c.SourceContext, path: str): if path.startswith("src/static/dolphin/"): self.cflags = c.SDK_FLAGS self.cc = c.OCC elif path.startswith("src/static/jaudio_NES/"): - self.cflags = c.JAUDIO_CFLAGS + if path.startswith("src/static/jaudio_NES/internal/"): + self.cflags = c.JAUDIO_FUNC_ALIGN_32_CFLAGS + elif path.startswith("src/static/jaudio_NES/game/"): + self.cflags = c.JAUDIO_USER_CFLAGS + else: + self.cflags = c.JAUDIO_CFLAGS self.cc = c.CC elif path.startswith("src/static/JSystem/JGadget/"): self.cflags = c.JSYSTEM_JGADGET_CFLAGS @@ -665,7 +697,6 @@ class CSource(Source): else: self.cflags = ctx.cflags self.cc = c.CC_R - self.iconv_path = f"$builddir/iconv/{path}" # Find generated includes with open(path, encoding="utf-8") as f: @@ -675,16 +706,10 @@ class CSource(Source): super().__init__(True, path, f"$builddir/{os.path.splitext(path)[0]}.o", gen_includes) def build(self): - n.build( - self.iconv_path, - rule="iconv", - inputs=self.src_path - ) - n.build( self.o_path, rule = "cc", - inputs = self.iconv_path, + inputs = self.src_path, implicit = [inc.path for inc in self.gen_includes], variables = { "cc" : self.cc, @@ -696,7 +721,7 @@ class CSource(Source): n.build( self.s_path, rule = "ccs", - inputs = self.iconv_path, + inputs = self.src_path, implicit = [inc.path for inc in self.gen_includes], variables = { "cflags" : self.cflags @@ -900,6 +925,7 @@ n.build( inputs = c.REL_SHA, implicit = [c.REL_OUT] ) + n.default(c.REL_OK) # Optional full binary disassembly diff --git a/docker-setup.bat b/docker-setup.bat new file mode 100644 index 00000000..ede1c919 --- /dev/null +++ b/docker-setup.bat @@ -0,0 +1,26 @@ +@echo off +echo "Please ensure Docker Desktop is running before continuing." +pause +:: Check if the compilers are present. If any one compiler doesn't exist, the download process will be initiated. +IF exist tools\1.2.5n\ ( echo 1.2.5n exists ) ELSE ( goto compilers ) +IF exist tools\1.3.2\ ( echo 1.3.2 exists ) ELSE ( goto compilers ) +IF exist tools\1.3.2r\ ( echo 1.3.2r exists ) ELSE ( goto compilers ) +goto buildimage + +:buildimage +docker build -t ac-decomp . +echo "Docker image setup is now complete. You may proceed with the instructions." +pause +exit + +:compilers +curl -O https://files.decomp.dev/compilers_latest.zip +mkdir compilers_temp +powershell -command "Expand-Archive -LiteralPath 'compilers_latest.zip' -DestinationPath compilers_temp" +:: Only copy compilers that the user doesn't already have. +IF exist tools\1.2.5n\ ( echo 1.2.5n already exists, skipping copy ) ELSE ( xcopy compilers_temp\GC\1.2.5n\ tools\1.2.5n\ /E /I ) +IF exist tools\1.3.2\ ( echo 1.3.2 already exists, skipping copy ) ELSE ( xcopy compilers_temp\GC\1.3.2\ tools\1.3.2\ /E /I ) +IF exist tools\1.3.2r\ ( echo 1.3.2r already exists, skipping copy ) ELSE ( xcopy compilers_temp\GC\1.3.2r\ tools\1.3.2r\ /E /I ) +del compilers_latest.zip +rmdir /S /Q compilers_temp\ +goto buildimage diff --git a/docker-setup.sh b/docker-setup.sh new file mode 100644 index 00000000..d30b10a3 --- /dev/null +++ b/docker-setup.sh @@ -0,0 +1,31 @@ +echo "Please ensure Docker is installed before continuing." +read -p "Press Enter to continue or CTRL-C to exit." +if [ -d "tools/1.2.5n" ]; then echo "1.2.5n exists" && export one_two_five_n_exist=1; fi +if [ -d "tools/1.3.2" ]; then echo "1.3.2 exists" && export one_three_two_exist=1; fi +if [ -d "tools/1.3.2r" ]; then echo "1.3.2r exists" && export one_three_two_r_exist=1; fi +if [ "$one_two_five_n_exist" -eq 1 ] && [ "$one_three_two_exist" -eq 1 ] && [ "$one_three_two_r_exist" -eq 1 ]; then docker build -t ac-decomp . && echo "Docker image setup is now complete. You may proceed with the instructions." && exit; fi + + +if command -v curl &> /dev/null; then + curl -O https://files.decomp.dev/compilers_latest.zip +elif command -v wget &> /dev/null; then + wget https://files.decomp.dev/compilers_latest.zip +else + echo "You do not seem to have curl or wget installed on this system. Please install one or the other to continue." + exit 0 +fi + +mkdir compilers_temp +if command -v unzip &> /dev/null; then + unzip compilers_latest.zip -d compilers_temp +else + echo "You do not seem to have unzip installed on this system. Please install it to continue." + rm -r compilers_temp compilers_latest.zip + exit 1 +fi +if [ ! -d "tools/1.2.5n" ]; then mv compilers_temp/GC/1.2.5n/ tools/; fi +if [ ! -d "tools/1.3.2" ]; then mv compilers_temp/GC/1.3.2/ tools/; fi +if [ ! -d "tools/1.3.2r" ]; then mv compilers_temp/GC/1.3.2r/ tools/; fi +rm -r compilers_temp compilers_latest.zip +docker build -t ac-decomp . +echo "Docker image setup is now complete. You may proceed with the instructions." diff --git a/docs/extract_game.md b/docs/extract_game.md index 7befff7c..b7e6e645 100644 --- a/docs/extract_game.md +++ b/docs/extract_game.md @@ -40,12 +40,6 @@ Once files have been extracted you will need to copy the following files into th Make sure to rename `main.dol` to `static.dol`. -You will also need to decompress `foresta.rel.szs` using `yaz0` found in `tools/` using the following command: - -~~~~console -yaz0 -d foresta.rel.szs foresta.rel -~~~~ - It is recommended that you also copy the following symbol maps for reference: - `foresta.map` - `static.map` \ No newline at end of file diff --git a/include/ac_balloon.h b/include/ac_balloon.h index 3f379b61..be7c2737 100644 --- a/include/ac_balloon.h +++ b/include/ac_balloon.h @@ -8,6 +8,32 @@ extern "C" { #endif +#define Ac_Balloon_JOINT_NUM 8 + +typedef struct balloon_actor_s BALLOON_ACTOR; + +struct balloon_actor_s { + ACTOR actor_class; + cKF_SkeletonInfo_R_c keyframe; + s_xyz work[Ac_Balloon_JOINT_NUM]; + s_xyz morph[Ac_Balloon_JOINT_NUM]; + int _244; + Mtx mtx[2][4]; + int main_mode; + int saved_type; + int setup_mode; + int balloon_type; + s_xyz angle; + s16 lean; + f32 start_frame; + f32 speed; + xyz_t pos; + int _474; +}; + +extern void Ac_Balloon_request_fly(ACTOR* actorx, GAME* game, int balloon_type, s_xyz* angle_p, s16 lean, xyz_t* pos_p, + f32 start_frame, f32 speed); + extern ACTOR_PROFILE Balloon_Profile; #ifdef __cplusplus @@ -15,4 +41,3 @@ extern ACTOR_PROFILE Balloon_Profile; #endif #endif - diff --git a/include/ac_boat_demo.h b/include/ac_boat_demo.h index 9f2a6885..8ef8c672 100644 --- a/include/ac_boat_demo.h +++ b/include/ac_boat_demo.h @@ -17,65 +17,65 @@ extern "C" { #define aBTD_PROGRAM_SIZE 0x15244 enum { - aBTD_ACTION_SENDO_BIRTH_WAIT, - aBTD_ACTION_PL_RIDE_ON_START_WAIT, - aBTD_ACTION_PL_RIDE_ON_END_WAIT, - aBTD_ACTION_START_CALL_END_WAIT, - aBTD_ACTION_SONG_BGM_START_WAIT, - aBTD_ACTION_SING_SENDO_START_WAIT, - aBTD_ACTION_SING_SENDO_MSG_SET_WAIT, - aBTD_ACTION_SENDO_DIALOGUE_START_WAIT, - aBTD_ACTION_SING_SENDO_START_WAIT2, - aBTD_ACTION_MOVE_BOAT_END_WAIT, - aBTD_ACTION_TOUCH_WHARF_END_WAIT, - aBTD_ACTION_PL_RIDE_OFF_START_WAIT, - aBTD_ACTION_PL_RIDE_OFF_END_WAIT, - aBTD_ACTION_ANCHOR_WAIT, + aBTD_ACTION_SENDO_BIRTH_WAIT, + aBTD_ACTION_PL_RIDE_ON_START_WAIT, + aBTD_ACTION_PL_RIDE_ON_END_WAIT, + aBTD_ACTION_START_CALL_END_WAIT, + aBTD_ACTION_SONG_BGM_START_WAIT, + aBTD_ACTION_SING_SENDO_START_WAIT, + aBTD_ACTION_SING_SENDO_MSG_SET_WAIT, + aBTD_ACTION_SENDO_DIALOGUE_START_WAIT, + aBTD_ACTION_SING_SENDO_START_WAIT2, + aBTD_ACTION_MOVE_BOAT_END_WAIT, + aBTD_ACTION_TOUCH_WHARF_END_WAIT, + aBTD_ACTION_PL_RIDE_OFF_START_WAIT, + aBTD_ACTION_PL_RIDE_OFF_END_WAIT, + aBTD_ACTION_ANCHOR_WAIT, - aBTD_ACTION_NUM + aBTD_ACTION_NUM }; enum { - aBTD_DEMO_PL_RIDE_ON_START, - aBTD_DEMO_PL_RIDE_ON_END, - aBTD_DEMO_START_CALL_END, - aBTD_DEMO_MOVE_BOAT_END, - aBTD_DEMO_TOUCH_WHARF_END, - aBTD_DEMO_PL_RIDE_OFF_START, - aBTD_DEMO_PL_RIDE_OFF_END, - aBTD_DEMO_ANCHOR, + aBTD_DEMO_PL_RIDE_ON_START, + aBTD_DEMO_PL_RIDE_ON_END, + aBTD_DEMO_START_CALL_END, + aBTD_DEMO_MOVE_BOAT_END, + aBTD_DEMO_TOUCH_WHARF_END, + aBTD_DEMO_PL_RIDE_OFF_START, + aBTD_DEMO_PL_RIDE_OFF_END, + aBTD_DEMO_ANCHOR, - aBTD_DEMO_NUM + aBTD_DEMO_NUM }; typedef struct boat_demo_s BOAT_DEMO_ACTOR; -#define aBTD_GET_DEMO_ACTOR() (BOAT_DEMO_ACTOR*)(Common_Get(clip).demo_clip2->class) +#define aBTD_GET_DEMO_ACTOR() (BOAT_DEMO_ACTOR*)(Common_Get(clip).demo_clip2->demo_class) typedef void (*aBTD_PROC)(BOAT_DEMO_ACTOR*, GAME_PLAY*); struct boat_demo_s { - ACTOR actor_class; - int action; - aBTD_PROC action_proc; - int demo_act; - int song_bgm_timer; - BOAT_ACTOR* boat_actor; - NPC_SENDO_ACTOR* npc_sendo_actor; - EV_CASTAWAY_ACTOR* castaway_actor; - int at_island; - xyz_t passenger_ofs; - f32 boat_speed; - int island_npc_info_registered; - u8* island_gba_loader_p; - u8* island_gba_program_p; - u8 player_pattern; - u8 sing_dialog_ofs; - u8 sing_2nd_part; - u8 sing_2nd_part_bgm_no; - int sing_msg_no; - u16 touch_wharf_timer; - u8 touching_wharf; + ACTOR actor_class; + int action; + aBTD_PROC action_proc; + int demo_act; + int song_bgm_timer; + BOAT_ACTOR* boat_actor; + NPC_SENDO_ACTOR* npc_sendo_actor; + EV_CASTAWAY_ACTOR* castaway_actor; + int at_island; + xyz_t passenger_ofs; + f32 boat_speed; + int island_npc_info_registered; + u8* island_gba_loader_p; + u8* island_gba_program_p; + u8 player_pattern; + u8 sing_dialog_ofs; + u8 sing_2nd_part; + u8 sing_2nd_part_bgm_no; + int sing_msg_no; + u16 touch_wharf_timer; + u8 touching_wharf; }; extern ACTOR_PROFILE Boat_Demo_Profile; @@ -85,4 +85,3 @@ extern ACTOR_PROFILE Boat_Demo_Profile; #endif #endif - diff --git a/include/ac_bridge_a.h b/include/ac_bridge_a.h index 77d727ec..cba3f65a 100644 --- a/include/ac_bridge_a.h +++ b/include/ac_bridge_a.h @@ -3,6 +3,7 @@ #include "types.h" #include "m_actor.h" +#include "ac_structure.h" #ifdef __cplusplus extern "C" { @@ -15,4 +16,3 @@ extern ACTOR_PROFILE Bridge_A_Profile; #endif #endif - diff --git a/include/ac_common.h b/include/ac_common.h new file mode 100644 index 00000000..2ca103d8 --- /dev/null +++ b/include/ac_common.h @@ -0,0 +1,32 @@ +#ifndef AC_COMMON_H +#define AC_COMMON_H + +#include "types.h" +#include "m_actor.h" +#include "c_keyframe.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* sizeof(aCM_anime_c) == 0x7C */ +typedef struct actor_common_anime_s { + /* 0x00 */ int cur_keyframe; + /* 0x04 */ int state; + /* 0x08 */ cKF_SkeletonInfo_R_c keyframe; + /* 0x78 */ int anime_no; +} aCMN_anime_c; + +/* sizeof(CMN_ACTOR) == 0x210 */ +typedef struct actor_common_s { + /* 0x000 */ ACTOR actor_class; + /* 0x174 */ aCMN_anime_c anime; + /* 0x1F0 */ ClObjPipe_c col_pipe; + /* 0x20C */ int act; +} CMN_ACTOR; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/ac_effectbg.h b/include/ac_effectbg.h index 4fd4cbc6..a4f24917 100644 --- a/include/ac_effectbg.h +++ b/include/ac_effectbg.h @@ -8,6 +8,18 @@ extern "C" { #endif +enum { + EffectBG_EFFECT_SHAKE, + EffectBG_EFFECT_CUT_LEFT, + EffectBG_EFFECT_CUT_RIGHT, + EffectBG_EFFECT_SHAKE_SMALL, + EffectBG_EFFECT_SHAKE_LARGE, + + EffectBG_EFFECT_NUM +}; + +typedef void (*EffectBG_MAKE_EFFECTBG_PROC)(GAME*, s16, s16, xyz_t*); + extern ACTOR_PROFILE Effectbg_Profile; #ifdef __cplusplus @@ -15,4 +27,3 @@ extern ACTOR_PROFILE Effectbg_Profile; #endif #endif - diff --git a/include/ac_ev_broker.h b/include/ac_ev_broker.h index e5b81bfc..0e99b401 100644 --- a/include/ac_ev_broker.h +++ b/include/ac_ev_broker.h @@ -3,11 +3,27 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif +typedef struct ac_ev_broker EV_BROKER_ACTOR; + +typedef void (*aEBRK_ACT_PROC)(EV_BROKER_ACTOR*); + +/* sizeof(EV_BROKER_ACTOR) == 0x9AC */ +struct ac_ev_broker { + /* 0x000 */ NPC_ACTOR npc_class; + /* 0x994 */ int action; + /* 0x998 */ int next_action; + /* 0x99C */ int action_step; + /* 0x9A0 */ aEBRK_ACT_PROC action_proc; + /* 0x9A4 */ ACTOR* tent_actor; + /* 0x9A8 */ u8 pl_talk_lock; +}; + extern ACTOR_PROFILE Ev_Broker_Profile; #ifdef __cplusplus @@ -15,4 +31,3 @@ extern ACTOR_PROFILE Ev_Broker_Profile; #endif #endif - diff --git a/include/ac_gyo_release.h b/include/ac_gyo_release.h index bd2a82c4..aa36b74d 100644 --- a/include/ac_gyo_release.h +++ b/include/ac_gyo_release.h @@ -8,6 +8,29 @@ extern "C" { #endif +typedef struct gyo_release_actor_s GYO_RELEASE_ACTOR; + +/* sizeof(GYO_RELEASE_ACTOR) == 0x1BC */ +struct gyo_release_actor_s { + /* 0x000 */ ACTOR actor_class; + /* 0x174 */ ACTOR* gyoei_actor_p; + /* 0x178 */ int gyo_type; + /* 0x17C */ int size_type; + /* 0x180 */ int anime_frame; + /* 0x184 */ int segment; + /* 0x188 */ int _188; + /* 0x18C */ ClObjPipe_c col_pipe; + /* 0x1A8 */ s16 angle_xz; + /* 0x1AA */ s16 angle_y; + /* 0x1AC */ s16 angle_y_add; + /* 0x1AE */ s16 exist_timer; + /* 0x1B0 */ f32 shadow_scale; + /* 0x1B4 */ u8 exist_flag; + /* 0x1B5 */ u8 _1B5; + /* 0x1B6 */ s16 revert_position_flag; + /* 0x1B8 */ int revert_position_timer; +}; + extern ACTOR_PROFILE Gyo_Release_Profile; #ifdef __cplusplus @@ -15,4 +38,3 @@ extern ACTOR_PROFILE Gyo_Release_Profile; #endif #endif - diff --git a/include/ac_gyoei.h b/include/ac_gyoei.h index 69f0019f..5bfadea6 100644 --- a/include/ac_gyoei.h +++ b/include/ac_gyoei.h @@ -2,12 +2,88 @@ #define AC_GYOEI_H #include "types.h" -#include "m_actor.h" +#include "ac_tools.h" #ifdef __cplusplus extern "C" { #endif +#define aGYO_MAX_GYOEI 2 + +enum { + aGYO_TYPE_TEST, + aGYO_TYPE_KASEKI, + + aGYO_TYPE_NUM +}; + +enum { + aGYO_ROD_NORMAL, + aGYO_ROD_GOLDEN, + + aGYO_ROD_NUM +}; + +enum { + aGYO_DRAW_TYPE_GYOEI, + aGYO_DRAW_TYPE_FISH, + + aGYO_DRAW_TYPE_NUM +}; + +typedef struct gyo_ctrl_actor_s aGYO_CTRL_ACTOR; + +typedef void (*aGYO_ACT_PROC)(ACTOR*, GAME*); + +/* sizeof(aGYO_CTRL_ACTOR) == 0x250 */ +struct gyo_ctrl_actor_s { + /* 0x000 */ TOOLS_ACTOR tools_class; + /* 0x1CC */ ACTOR* linked_actor; /* Generally UKI_ACTOR */ + /* 0x1D0 */ int exist; + /* 0x1D4 */ int draw_type; + /* 0x1D8 */ int gyo_type; + /* 0x1DC */ s16 size_type; + /* 0x1E0 */ int action; + /* 0x1E4 */ aGYO_ACT_PROC act_proc; + /* 0x1E8 */ int anim_frame; + /* 0x1EC */ f32 speed_step; + /* 0x1F0 */ f32 speed; + /* 0x1F4 */ f32 range; + /* 0x1F8 */ int _1F8; + /* 0x1FC */ ClObjPipe_c col_pipe; + /* 0x218 */ int work0; + /* 0x21C */ f32 fwork0; + /* 0x220 */ f32 fwork1; + /* 0x224 */ f32 fwork2; + /* 0x228 */ f32 fwork3; + /* 0x22C */ s16 swork0; + /* 0x22E */ s16 swork1; + /* 0x230 */ s16 swork2; + /* 0x232 */ s16 swork3; + /* 0x234 */ s16 swork4; + /* 0x236 */ s16 move_counter; + /* 0x238 */ s16 move_angle; + /* 0x23A */ s16 pattern_subcounter; + /* 0x23C */ s16 pattern_counter; + /* 0x23E */ s16 touch_counter; + /* 0x240 */ u16 gyo_flags; + /* 0x242 */ u8 swim_flag; + /* 0x243 */ u8 escape_flag; + /* 0x244 */ int alpha; + /* 0x248 */ int col_flags; + /* 0x24C */ u8* overlay_p; +}; + +typedef struct gyoei_actor_s GYOEI_ACTOR; + +/* sizeof(GYOEI_ACTOR) == 0x628 */ +struct gyoei_actor_s { + /* 0x000 */ ACTOR actor_class; + /* 0x174 */ aGYO_CTRL_ACTOR ctrl[aGYO_MAX_GYOEI]; + /* 0x614 */ u8 exist[4]; + /* 0x618 */ int segment_type[4]; +}; + extern ACTOR_PROFILE Gyoei_Profile; #ifdef __cplusplus @@ -15,4 +91,3 @@ extern ACTOR_PROFILE Gyoei_Profile; #endif #endif - diff --git a/include/ac_haniwa.h b/include/ac_haniwa.h index 9f873902..fb250757 100644 --- a/include/ac_haniwa.h +++ b/include/ac_haniwa.h @@ -2,79 +2,71 @@ #define AC_HANIWA_H #include "types.h" -#include "m_actor.h" -#include "c_keyframe.h" +#include "ac_common.h" #include "m_collision_obj.h" #ifdef __cplusplus extern "C" { #endif +#define aHNW_JOINT_NUM 8 + typedef struct actor_haniwa_s HANIWA_ACTOR; typedef void (*HANIWA_ACTOR_PROC)(ACTOR*, GAME*); enum haniwa_msg { - aHNW_MSG_NO_OWNER, - aHNW_MSG_PROCEEDS, - aHNW_MSG_NORMAL, - aHNW_MSG_OTHER_OWNER, - aHNW_MSG_NEED_FRIEND, + aHNW_MSG_NO_OWNER, + aHNW_MSG_PROCEEDS, + aHNW_MSG_NORMAL, + aHNW_MSG_OTHER_OWNER, + aHNW_MSG_NEED_FRIEND, - aHNW_MSG_NUM + aHNW_MSG_NUM }; enum haniwa_handover { - aHNW_HANDOVER_YES, - aHNW_HANDOVER_NO, + aHNW_HANDOVER_YES, + aHNW_HANDOVER_NO, - aHNW_HANDOVER_NUM + aHNW_HANDOVER_NUM }; enum haniwa_action { - aHNW_ACTION_WAIT, - aHNW_ACTION_DANCE, - aHNW_ACTION_CHECK_PROCEEDS, - aHNW_ACTION_TALK_WITH_MASTER, - aHNW_ACTION_TALK_WITH_MASTER2, - aHNW_ACTION_TALK_END_WAIT, - aHNW_ACTION_MENU_OPEN_WAIT, - aHNW_ACTION_MENU_END_WAIT, - aHNW_ACTION_TALK_WITH_GUEST, - aHNW_ACTION_MENU_OPEN_WAIT_FOR_GUEST, - aHNW_ACTION_MENU_END_WAIT_FOR_GUEST, - aHNW_ACTION_ROOF_CHECK, - aHNW_ACTION_SAVE_CHECK, - aHNW_ACTION_SAVE_END_WAIT, - aHNW_ACTION_PL_APPROACH_DOOR, - aHNW_ACTION_DOOR_OPEN_WAIT, - aHNW_ACTION_DOOR_OPEN_TIMER, + aHNW_ACTION_WAIT, + aHNW_ACTION_DANCE, + aHNW_ACTION_CHECK_PROCEEDS, + aHNW_ACTION_TALK_WITH_MASTER, + aHNW_ACTION_TALK_WITH_MASTER2, + aHNW_ACTION_TALK_END_WAIT, + aHNW_ACTION_MENU_OPEN_WAIT, + aHNW_ACTION_MENU_END_WAIT, + aHNW_ACTION_TALK_WITH_GUEST, + aHNW_ACTION_MENU_OPEN_WAIT_FOR_GUEST, + aHNW_ACTION_MENU_END_WAIT_FOR_GUEST, + aHNW_ACTION_ROOF_CHECK, + aHNW_ACTION_SAVE_CHECK, + aHNW_ACTION_SAVE_END_WAIT, + aHNW_ACTION_PL_APPROACH_DOOR, + aHNW_ACTION_DOOR_OPEN_WAIT, + aHNW_ACTION_DOOR_OPEN_TIMER, - aHNW_ACTION_NUM + aHNW_ACTION_NUM }; +/* sizeof(HANIWA_ACTOR) == 0x288 */ struct actor_haniwa_s { - ACTOR actor_class; - - int saved_current_frame; - int keyframe_state; - - cKF_SkeletonInfo_R_c keyframe; - int animation_state; - - ClObjPipe_c col_pipe; - - int action; - char* bank_ram_start; - s_xyz keyframe_work_area[8]; - s_xyz keyframe_morph_area[8]; - HANIWA_ACTOR_PROC action_proc; - f32 anim_frame_speed; - int player_approach_door_stage; - u16 door_approach_frame; - u8 submenu_type; - u8 house_idx; - u8 playing_save_bgm; + /* 0x000 */ CMN_ACTOR common_actor_class; + /* 0x210 */ char* bank_ram_start; + /* 0x214 */ s_xyz keyframe_work_area[aHNW_JOINT_NUM]; + /* 0x244 */ s_xyz keyframe_morph_area[aHNW_JOINT_NUM]; + /* 0x274 */ HANIWA_ACTOR_PROC action_proc; + /* 0x278 */ f32 anim_frame_speed; + /* 0x27C */ int player_approach_door_stage; + /* 0x280 */ u16 door_approach_frame; + /* 0x282 */ u8 submenu_type; + /* 0x283 */ u8 house_idx; + /* 0x284 */ u8 playing_save_bgm; }; extern ACTOR_PROFILE Haniwa_Profile; @@ -84,4 +76,3 @@ extern ACTOR_PROFILE Haniwa_Profile; #endif #endif - diff --git a/include/ac_htable.h b/include/ac_htable.h index 20c07ace..1e48db36 100644 --- a/include/ac_htable.h +++ b/include/ac_htable.h @@ -8,6 +8,14 @@ extern "C" { #endif +typedef mActor_name_t (*aHTBL_SEARCH_PICK_UP_ITEM_LAYER2_PROC)(GAME*); + +typedef struct htable_clip_s { + aHTBL_SEARCH_PICK_UP_ITEM_LAYER2_PROC search_pick_up_item_layer2_proc; + xyz_t pickup_pos; + s16 pickup_counter; +} aHTBL_Clip_c; + extern ACTOR_PROFILE Htable_Profile; #ifdef __cplusplus @@ -15,4 +23,3 @@ extern ACTOR_PROFILE Htable_Profile; #endif #endif - diff --git a/include/ac_intro_demo.h b/include/ac_intro_demo.h index c6ca0164..42a71c8a 100644 --- a/include/ac_intro_demo.h +++ b/include/ac_intro_demo.h @@ -3,34 +3,47 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc_rcn_guide.h" +#include "ac_npc_station_master.h" +#include "ac_train1.h" +#include "m_demo.h" #ifdef __cplusplus extern "C" { #endif +#define aID_PLR_START_X_POS (mFI_BK_WORLDSIZE_X_F * 3 + 1.25f * mFI_UT_WORLDSIZE_X_F) +#define aID_PLR_START_Z_POS (mFI_BK_WORLDSIZE_Z_F * 1 + 3 * mFI_UT_WORLDSIZE_Z_F) + +#define aID_OFF_UT_X_POS (mFI_BK_WORLDSIZE_X_F * 3 + 7 * mFI_UT_WORLDSIZE_X_F + mFI_UT_WORLDSIZE_HALF_X_F) +#define aID_OFF_UT_Z_POS (mFI_BK_WORLDSIZE_Z_F * 1 + 5 * mFI_UT_WORLDSIZE_Z_F) /* A @ 5 */ + +#define aID_OUT_OF_STATION_Z_POS (mFI_BK_WORLDSIZE_Z_F * 1 + 8.25f * mFI_UT_WORLDSIZE_Z_F) + enum { - aID_STATE_0, + aID_STATE_INITIAL, aID_STATE_TAKEN_HOUSE, aID_STATE_FREE_HOUSE, - // more? aID_STATE_NUM }; -typedef struct actor_intor_demo_s INTRO_DEMO_ACTOR; +typedef struct actor_intro_demo_s INTRO_DEMO_ACTOR; -struct actor_intor_demo_s { +typedef void (*aID_ACT_PROC)(INTRO_DEMO_ACTOR*, GAME_PLAY*); + +struct actor_intro_demo_s { ACTOR actor_class; int action; - int rcn_action; - void (*action_proc)(ACTOR*, GAME*); - void* train1_actor_p; // TODO: correct type - void* station_master_actor_p; // TODO: correct type - void* rcn_guide_actor_p; // TODO: correct type - int player_in_intro_demo; + int next_action; + aID_ACT_PROC action_proc; + TRAIN1_ACTOR* train1_actor_p; + ACTOR* station_master_actor_p; // TODO: correct type + ACTOR* rcn_guide_actor_p; // TODO: correct type + int player_in_house; int player_intro_demo_state; - int selected_house; - int _198; + int house_idx; + int talk_flag; u8 first_field_bgm_state; int _1A0; int _1A4; diff --git a/include/ac_my_room.h b/include/ac_my_room.h index 95de307d..766ca477 100644 --- a/include/ac_my_room.h +++ b/include/ac_my_room.h @@ -296,6 +296,9 @@ extern u8 aMR_GetAlphaEdge(u16 ftr_name); extern int aMR_DrawDolphinMode(u16 ftr_name); extern Gfx* aMR_IconNo2Gfx1(int icon_no); extern Gfx* aMR_IconNo2Gfx2(int icon_no); +extern int aMR_RadioBgmNow(void); +extern void aMR_ThrowItem_FurnitureLock(void); +extern void aMR_ThrowItem_FurnitureUnlock(void); #ifdef __cplusplus } diff --git a/include/ac_npc.h b/include/ac_npc.h index 039bed33..3a6d7361 100644 --- a/include/ac_npc.h +++ b/include/ac_npc.h @@ -9,6 +9,7 @@ #include "m_actor_dlftbls.h" #include "m_npc.h" #include "c_keyframe.h" +#include "ac_npc_anim_def.h" #ifdef __cplusplus extern "C" { @@ -24,43 +25,102 @@ extern "C" { #define aNPC_SPNPC_BIT_SET(field, bit) ((field) |= (1 << (bit))) #define aNPC_SPNPC_BIT_CLR(field, bit) ((field) &= ~(1 << (bit))) +enum { + aNPC_JOINT_BASE_ROOT, + aNPC_JOINT_BASE, + aNPC_JOINT_LFOOT_ROOT, + aNPC_JOINT_LFOOT1, + aNPC_JOINT_LFOOT2, + aNPC_JOINT_LFOOT3, + aNPC_JOINT_RFOOT_ROOT, + aNPC_JOINT_RFOOT1, + aNPC_JOINT_RFOOT2, + aNPC_JOINT_RFOOT3, + aNPC_JOINT_TAIL_ROOT, + aNPC_JOINT_TAIL1, + aNPC_JOINT_TAIL2, + aNPC_JOINT_CHEST, + aNPC_JOINT_LARM_ROOT, + aNPC_JOINT_LARM1, + aNPC_JOINT_LARM2, + aNPC_JOINT_RARM_ROOT, + aNPC_JOINT_RARM1, + aNPC_JOINT_RARM2, + aNPC_JOINT_HAND, + aNPC_JOINT_HEAD_ROOT, + aNPC_JOINT_MOUTH_ROOT, + aNPC_JOINT_MOUTH, + aNPC_JOINT_HEAD, + aNPC_JOINT_FEEL, + + aNPC_JOINT_NUM +}; + typedef struct ac_npc_clip_s aNPC_Clip_c; +#define aNPC_EYE_TEX_NUM 8 +#define aNPC_MOUTH_TEX_NUM 6 + +/* sizeof(aNPC_draw_tex_data_c) == 0x4C */ +typedef struct ac_npc_draw_data_tex_s { + /* 0x00 */ u8* texture; // main animal texture + /* 0x04 */ u16* palette; // palette for animal + /* 0x08 */ u8* eye_texture[aNPC_EYE_TEX_NUM]; + /* 0x28 */ u8* mouth_texture[aNPC_MOUTH_TEX_NUM]; + /* 0x40 */ int _40; + /* 0x44 */ int _44; + /* 0x48 */ int _48; +} aNPC_draw_tex_data_c; + +/* sizeof(aNPC_draw_data_c) == 0x6C */ typedef struct npc_draw_data_s { - s16 model_bank; - s16 texture_bank; - u8 _04[0x68]; // TODO + /* 0x00 */ s16 model_bank; + /* 0x02 */ s16 texture_bank; + /* 0x04 */ cKF_Skeleton_R_c* model_skeleton; + /* 0x08 */ aNPC_draw_tex_data_c tex_data; + /* 0x54 */ f32 scale; + /* 0x58 */ int talk_type; + /* 0x5C */ u8 species_sub_idx; // index into the current species type + /* 0x5D */ u8 umbrella_type; // default umbrella type -- only used for special NPCs + /* 0x5E */ u8 eye_height; // height of "eye" from the ground + /* 0x5F */ u8 _5F; + /* 0x60 */ u16 _60; + /* 0x62 */ u16 voice_type; // voice/melody type + /* 0x64 */ s16 col_radius; // collision pipe radius + /* 0x66 */ s16 col_height; // collision pipe height + /* 0x68 */ s16 accessory_type; // type of accessory + /* 0x6A */ s16 accessory_joint; // joint the accessory is attached to } aNPC_draw_data_c; enum { - aNPC_ATTENTION_TYPE_NONE, - aNPC_ATTENTION_TYPE_ACTOR, - aNPC_ATTENTION_TYPE_POSITION, + aNPC_ATTENTION_TYPE_NONE, + aNPC_ATTENTION_TYPE_ACTOR, + aNPC_ATTENTION_TYPE_POSITION, - aNPC_ATTENTION_TYPE_NUM -}; - -enum { - aNPC_THINK_WAIT, - aNPC_THINK_WANDER, - aNPC_THINK_WANDER2, - aNPC_THINK_GO_HOME, - aNPC_THINK_INTO_HOUSE, - aNPC_THINK_LEAVE_HOUSE, - aNPC_THINK_IN_BLOCK, - aNPC_THINK_PITFALL, - aNPC_THINK_SLEEP, - aNPC_THINK_SPECIAL, - - aNPC_THINK_NUM + aNPC_ATTENTION_TYPE_NUM }; enum { - aNPC_THINK_TYPE_INIT, - aNPC_THINK_TYPE_CHK_INTERRUPT, - aNPC_THINK_TYPE_MAIN, + aNPC_THINK_WAIT, + aNPC_THINK_WANDER, + aNPC_THINK_WANDER2, + aNPC_THINK_GO_HOME, + aNPC_THINK_INTO_HOUSE, + aNPC_THINK_LEAVE_HOUSE, + aNPC_THINK_IN_BLOCK, + aNPC_THINK_PITFALL, + aNPC_THINK_SLEEP, + aNPC_THINK_SPECIAL, - aNPC_THINK_TYPE_NUM + aNPC_THINK_NUM +}; + +enum { + aNPC_THINK_TYPE_INIT, + aNPC_THINK_TYPE_CHK_INTERRUPT, + aNPC_THINK_TYPE_MAIN, + + aNPC_THINK_TYPE_NUM }; typedef void (*aNPC_TALK_REQUEST_PROC)(ACTOR*, GAME*); @@ -68,13 +128,13 @@ typedef int (*aNPC_TALK_INIT_PROC)(ACTOR*, GAME*); typedef int (*aNPC_TALK_END_CHECK_PROC)(ACTOR*, GAME*); typedef struct npc_ct_data_s { - mActor_proc move_proc; - mActor_proc draw_proc; - int _08; - aNPC_TALK_REQUEST_PROC talk_request_proc; - aNPC_TALK_INIT_PROC talk_init_proc; - aNPC_TALK_END_CHECK_PROC talk_end_check_proc; - int _18; + mActor_proc move_proc; + mActor_proc draw_proc; + int _08; + aNPC_TALK_REQUEST_PROC talk_request_proc; + aNPC_TALK_INIT_PROC talk_init_proc; + aNPC_TALK_END_CHECK_PROC talk_end_check_proc; + int _18; } aNPC_ct_data_c; typedef int (*aNPC_SETUP_ACTOR_PROC)(GAME_PLAY*, mActor_name_t, s8, int, s16, int, int, int, int); @@ -94,6 +154,7 @@ typedef void (*aNPC_MOVE_AFTER_PROC)(ACTOR*, GAME*); typedef void (*aNPC_DRAW_PROC)(ACTOR*, GAME*); typedef void (*aNPC_REBUILD_DMA_PROC)(); +typedef void (*aNPC_TALK_DEMO_PROC)(ACTOR*); typedef void (*aNPC_ANIMATION_INIT_PROC)(ACTOR*, int, int); typedef void (*aNPC_CHG_SCHEDULE_PROC)(NPC_ACTOR*, GAME_PLAY*, u8); typedef int (*aNPC_CLIP_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*, int, int); @@ -101,115 +162,165 @@ typedef int (*aNPC_CLIP_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*, int, int); typedef int (*aNPC_FORCE_CALL_REQ_PROC)(NPC_ACTOR*, int); struct ac_npc_clip_s { - /* 0x000 */ aNPC_SETUP_ACTOR_PROC setupActor_proc; - /* 0x004 */ void* _004; - /* 0x008 */ aNPC_FREE_OVERLAY_AREA_PROC free_overlay_area_proc; - /* 0x00C */ aNPC_GET_ACTOR_AREA_PROC get_actor_area_proc; - /* 0x010 */ aNPC_FREE_ACTOR_AREA_PROC free_actor_area_proc; - /* 0x014 */ aNPC_DMA_DRAW_DATA_PROC dma_draw_data_proc; - /* 0x018 */ aNPC_SET_ATTENTION_REQUEST_PROC set_attention_request_proc; - /* 0x01C */ void* _01C[(0x0CC - 0x01C) / sizeof(void*)]; - /* 0x0CC */ aNPC_BIRTH_CHECK_PROC birth_check_proc; - /* 0x0D0 */ aNPC_CT_PROC ct_proc; - /* 0x0D4 */ aNPC_DT_PROC dt_proc; - /* 0x0D8 */ aNPC_SAVE_PROC save_proc; - /* 0x0DC */ aNPC_INIT_PROC init_proc; - /* 0x0E0 */ aNPC_MOVE_PROC move_proc; - /* 0x0E4 */ aNPC_MOVE_BEFORE_PROC move_before_proc; - /* 0x0E8 */ aNPC_MOVE_AFTER_PROC move_after_proc; - /* 0x0EC */ void* _0EC; - /* 0x0F0 */ void* _0F0; - /* 0x0F4 */ aNPC_DRAW_PROC draw_proc; - /* 0x0F8 */ aNPC_REBUILD_DMA_PROC rebuild_dma_proc; - /* 0x0FC */ void* _0FC[(0x114 - 0x0FC) / sizeof(void*)]; - /* 0x114 */ aNPC_ANIMATION_INIT_PROC animation_init_proc; - /* 0x118 */ aNPC_CHG_SCHEDULE_PROC chg_schedule_proc; - /* 0x11C */ void* _11C; - /* 0x120 */ aNPC_CLIP_THINK_PROC think_proc; - /* 0x124 */ aNPC_FORCE_CALL_REQ_PROC force_call_req_proc; - /* 0x128 */ void* _128; + /* 0x000 */ aNPC_SETUP_ACTOR_PROC setupActor_proc; + /* 0x004 */ void* _004; + /* 0x008 */ aNPC_FREE_OVERLAY_AREA_PROC free_overlay_area_proc; + /* 0x00C */ aNPC_GET_ACTOR_AREA_PROC get_actor_area_proc; + /* 0x010 */ aNPC_FREE_ACTOR_AREA_PROC free_actor_area_proc; + /* 0x014 */ aNPC_DMA_DRAW_DATA_PROC dma_draw_data_proc; + /* 0x018 */ aNPC_SET_ATTENTION_REQUEST_PROC set_attention_request_proc; + /* 0x01C */ void* _01C[(0x0CC - 0x01C) / sizeof(void*)]; + /* 0x0CC */ aNPC_BIRTH_CHECK_PROC birth_check_proc; + /* 0x0D0 */ aNPC_CT_PROC ct_proc; + /* 0x0D4 */ aNPC_DT_PROC dt_proc; + /* 0x0D8 */ aNPC_SAVE_PROC save_proc; + /* 0x0DC */ aNPC_INIT_PROC init_proc; + /* 0x0E0 */ aNPC_MOVE_PROC move_proc; + /* 0x0E4 */ aNPC_MOVE_BEFORE_PROC move_before_proc; + /* 0x0E8 */ aNPC_MOVE_AFTER_PROC move_after_proc; + /* 0x0EC */ void* _0EC; + /* 0x0F0 */ void* _0F0; + /* 0x0F4 */ aNPC_DRAW_PROC draw_proc; + /* 0x0F8 */ aNPC_REBUILD_DMA_PROC rebuild_dma_proc; + /* 0x0FC */ void* _0FC[(0x110 - 0x0FC) / sizeof(void*)]; + /* 0x110 */ aNPC_TALK_DEMO_PROC talk_demo_proc; + /* 0x114 */ aNPC_ANIMATION_INIT_PROC animation_init_proc; + /* 0x118 */ aNPC_CHG_SCHEDULE_PROC chg_schedule_proc; + /* 0x11C */ void* _11C; + /* 0x120 */ aNPC_CLIP_THINK_PROC think_proc; + /* 0x124 */ aNPC_FORCE_CALL_REQ_PROC force_call_req_proc; + /* 0x128 */ void* _128; }; typedef struct npc_info_s { - Animal_c* animal; - mNpc_NpcList_c* list; - mNPS_schedule_c* schedule; - mNpc_EventNpc_c* event; - mNpc_MaskNpc_c* mask; - mActor_name_t npc_name; + Animal_c* animal; + mNpc_NpcList_c* list; + mNPS_schedule_c* schedule; + mNpc_EventNpc_c* event; + mNpc_MaskNpc_c* mask; + mActor_name_t npc_name; } NpcActorInfo_c; typedef struct npc_animation_s { - cKF_SkeletonInfo_R_c keyframe; - s_xyz work[27]; - s_xyz morph[27]; - int _1B4; - s8 animation_id; + cKF_SkeletonInfo_R_c keyframe; + s_xyz work[27]; + s_xyz morph[27]; + int _1B4; + s8 animation_id; } aNPC_ANIMATION_c; /* TODO: draw data */ typedef struct npc_draw_info_s { - /* 0x000 */ int main_animation_frame; - /* 0x004 */ int _04; // TODO: figure out where this is set - /* 0x008 */ int main_animation_frame_changed; - /* 0x00C */ int _08; // TODO: figure out where this is set - /* 0x010 */ int _0C; // TODO: figure out where this is set - /* 0x014 */ aNPC_ANIMATION_c main_animation; - /* 0x1D0 */ aNPC_ANIMATION_c sub_animation0; - /* 0x38C */ aNPC_ANIMATION_c sub_animation1; - /* 0x548 */ u8 _548[0x580 - 0x548]; - /* 0x580 */ int animation_id; - /* 0x584 */ int texture_bank_idx; - /* 0x588 */ u8 _588[0x5B9 - 0x588]; - /* 0x5B9 */ u8 _5B9; - /* 0x5BA */ u8 _5BA; - /* 0x5BB */ u8 _5BB; - /* 0x5BC */ u8 _5BC; - /* 0x5BD */ u8 _5BD; - /* 0x5BE */ u8 _5BE; - /* 0x5BE */ u8 _5BF[0x5D0 - 0x5BF]; - /* 0x5D0 */ f32 animation_speed; - /* 0x5D4 */ u8 _5D4[0x630 - 0x5D4]; + /* 0x000 */ int main_animation_frame; + /* 0x004 */ int main_animation_state; + /* 0x008 */ int main_animation_frame_changed; + /* 0x00C */ int sub_animation0_state; + /* 0x010 */ int sub_animation1_state; + /* 0x014 */ aNPC_ANIMATION_c main_animation; + /* 0x1D0 */ aNPC_ANIMATION_c sub_animation0; + /* 0x38C */ aNPC_ANIMATION_c sub_animation1; + /* 0x548 */ u8 _548[0x580 - 0x548]; + /* 0x580 */ int animation_id; + /* 0x584 */ int texture_bank_idx; + /* 0x588 */ u8 _588[0x5B0 - 0x588]; + /* 0x5B0 */ u8 draw_type; + /* 0x5B1 */ u8 _5B1; + /* 0x5B2 */ u8 _5B2; + /* 0x5B3 */ u8 _5B3; + /* 0x5B4 */ u8 _5B4; + /* 0x5B5 */ u8 _5B5; + /* 0x5B6 */ u8 _5B6; + /* 0x5B7 */ u8 _5B7; + /* 0x5B8 */ u8 _5B8; + /* 0x5B9 */ u8 _5B9; + /* 0x5BA */ u8 _5BA; + /* 0x5BB */ u8 _5BB; + /* 0x5BC */ u8 _5BC; + /* 0x5BD */ u8 _5BD; + /* 0x5BE */ u8 _5BE; + /* 0x5BE */ u8 _5BF[0x5D0 - 0x5BF]; + /* 0x5D0 */ f32 animation_speed; + /* 0x5D4 */ u8 _5D4[0x5D8 - 0x5D4]; + /* 0x5D8 */ xyz_t shadow_pos; + /* 0x5E4 */ u8 _5E4[0x630 - 0x5E4]; } aNPC_draw_info_c; typedef void (*aNPC_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*, int); #define aNPC_THINK_INTERRUPT_FRIENDSHIP (1 << 0) -#define aNPC_THINK_INTERRUPT_FATIGUE (1 << 1) -#define aNPC_THINK_INTERRUPT_OBSTANCE (1 << 2) -#define aNPC_THINK_INTERRUPT_ENTRANCE (1 << 3) +#define aNPC_THINK_INTERRUPT_FATIGUE (1 << 1) +#define aNPC_THINK_INTERRUPT_OBSTANCE (1 << 2) +#define aNPC_THINK_INTERRUPT_ENTRANCE (1 << 3) +/* sizeof(aNPC_think_info_c) == 0x18 */ typedef struct npc_think_info_s { - int idx; - u8 end_flag; - u8 force_call_flag; - u16 force_call_timer; - int force_call_msg_no; - u8 force_call_camera_type; - aNPC_THINK_PROC think_proc; - u32 interrupt_flags; + /* 0x00 */ int idx; + /* 0x04 */ u8 end_flag; + /* 0x05 */ u8 force_call_flag; + /* 0x06 */ u16 force_call_timer; + /* 0x08 */ int force_call_msg_no; + /* 0x0C */ u8 force_call_camera_type; + /* 0x10 */ aNPC_THINK_PROC think_proc; + /* 0x14 */ u32 interrupt_flags; } aNPC_think_info_c; typedef void (*aNPC_SCHEDULE_PROC)(NPC_ACTOR*, GAME_PLAY*, int); typedef struct npc_schedule_info_s { - u8 type; - u8 state; - mNPS_schedule_c schedule; - aNPC_SCHEDULE_PROC schedule_proc; + u8 type; + u8 state; + mNPS_schedule_c schedule; + aNPC_SCHEDULE_PROC schedule_proc; } aNPC_schedule_info_c; enum { - aNPC_ACT_OBJ_NONE, - aNPC_ACT_OBJ_PLAYER, - aNPC_ACT_OBJ_ANY_NPC, - aNPC_ACT_OBJ_TARGET_NPC, - aNPC_ACT_OBJ_4, - aNPC_ACT_OBJ_5, - aNPC_ACT_OBJ_INSECT, - aNPC_ACT_OBJ_FISH, + aNPC_ACT_OBJ_DEFAULT, + aNPC_ACT_OBJ_PLAYER, + aNPC_ACT_OBJ_ANY_NPC, + aNPC_ACT_OBJ_TARGET_NPC, + aNPC_ACT_OBJ_4, + aNPC_ACT_OBJ_5, + aNPC_ACT_OBJ_INSECT, + aNPC_ACT_OBJ_FISH, - aNPC_ACT_OBJ_NUM + aNPC_ACT_OBJ_NUM +}; + +enum { + aNPC_ACT_TYPE_DEFAULT, + aNPC_ACT_TYPE_AVOID, + aNPC_ACT_TYPE_SEARCH, + aNPC_ACT_TYPE_TO_POINT, + + aNPC_ACT_TYPE_NUM +}; + +enum { + aNPC_ACT_WAIT, + aNPC_ACT_WALK, + aNPC_ACT_WALK2, + aNPC_ACT_TURN, + aNPC_ACT_TURN2, + aNPC_ACT_CHASE_INSECT, + aNPC_ACT_CHASE_INSECT2, + aNPC_ACT_GREETING, + aNPC_ACT_TALK, + aNPC_ACT_INTO_HOUSE, + aNPC_ACT_LEAVE_HOUSE, + aNPC_ACT_UMB_OPEN, + aNPC_ACT_UMB_CLOSE, + aNPC_ACT_ENSOU, + aNPC_ACT_TALK2, + aNPC_ACT_REACT_TOOL, + aNPC_ACT_CLAP, + aNPC_ACT_TRANS, + aNPC_ACT_GET, + aNPC_ACT_GET2, + aNPC_ACT_PITFALL, + aNPC_ACT_REVIVE, + aNPC_ACT_SPECIAL, + + aNPC_ACT_NUM }; typedef void (*aNPC_ACTION_PROC)(NPC_ACTOR*, GAME_PLAY*, int); @@ -217,174 +328,174 @@ typedef void (*aNPC_ACTION_PROC)(NPC_ACTOR*, GAME_PLAY*, int); #define aNPC_ACTION_END_STEP 0xFF typedef struct npc_action_s { - u8 priority; - u8 idx; - u8 step; - u8 type; - u8 prev_priority; - u8 prev_step; - s16 act_timer; - u8 feel; - u8 act_obj; - u16 act_obj_id; - s16 move_x; - s16 move_z; - aNPC_ACTION_PROC act_proc; + u8 priority; + u8 idx; + u8 step; + u8 type; + u8 prev_priority; + u8 prev_step; + s16 act_timer; + u8 feel; + u8 act_obj; + u16 act_obj_id; + s16 move_x; + s16 move_z; + aNPC_ACTION_PROC act_proc; } aNPC_action_c; typedef struct npc_request_s { - u8 act_priority; - u8 act_idx; - u8 act_type; - u16 act_args[6]; - u8 umb_flag; - u8 _11; - u8 head_priority; - u8 head_type; - ACTOR* head_target; - xyz_t head_pos; + u8 act_priority; + u8 act_idx; + u8 act_type; + u16 act_args[6]; + u8 umb_flag; + u8 _11; + u8 head_priority; + u8 head_type; + ACTOR* head_target; + xyz_t head_pos; } aNPC_request_c; -#define aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK (1 << 0) /* 0x0001 */ -#define aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV (1 << 1) /* 0x0002 */ -#define aNPC_COND_DEMO_SKIP_MOVE_Y (1 << 2) /* 0x0004 */ -#define aNPC_COND_DEMO_SKIP_OBJ_COL_CHECK (1 << 3) /* 0x0008 */ -#define aNPC_COND_DEMO_SKIP_BGCHECK (1 << 4) /* 0x0010 */ -#define aNPC_COND_DEMO_SKIP_FORWARD_CHECK (1 << 5) /* 0x0020 */ -#define aNPC_COND_DEMO_SKIP_ITEM (1 << 6) /* 0x0040 */ -#define aNPC_COND_DEMO_SKIP_TALK_CHECK (1 << 7) /* 0x0080 */ -#define aNPC_COND_DEMO_SKIP_HEAD_LOOKAT (1 << 8) /* 0x0100 */ -#define aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK (1 << 9) /* 0x0200 */ -#define aNPC_COND_DEMO_SKIP_KUTIPAKU (1 << 10) /* 0x0400 */ -#define aNPC_COND_DEMO_SKIP_FOOTSTEPS (1 << 11) /* 0x0800 */ -#define aNPC_COND_DEMO_SKIP_FEEL_CHECK (1 << 12) /* 0x1000 */ -#define aNPC_COND_DEMO_SKIP_LOVE_CHECK (1 << 13) /* 0x2000 */ -#define aNPC_COND_DEMO_SKIP_FOOTSTEPS_VFX (1 << 14) /* 0x4000 */ -#define aNPC_COND_DEMO_SKIP_UZAI_CHECK (1 << 15) /* 0x8000 */ +#define aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK (1 << 0) /* 0x0001 */ +#define aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV (1 << 1) /* 0x0002 */ +#define aNPC_COND_DEMO_SKIP_MOVE_Y (1 << 2) /* 0x0004 */ +#define aNPC_COND_DEMO_SKIP_OBJ_COL_CHECK (1 << 3) /* 0x0008 */ +#define aNPC_COND_DEMO_SKIP_BGCHECK (1 << 4) /* 0x0010 */ +#define aNPC_COND_DEMO_SKIP_FORWARD_CHECK (1 << 5) /* 0x0020 */ +#define aNPC_COND_DEMO_SKIP_ITEM (1 << 6) /* 0x0040 */ +#define aNPC_COND_DEMO_SKIP_TALK_CHECK (1 << 7) /* 0x0080 */ +#define aNPC_COND_DEMO_SKIP_HEAD_LOOKAT (1 << 8) /* 0x0100 */ +#define aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK (1 << 9) /* 0x0200 */ +#define aNPC_COND_DEMO_SKIP_KUTIPAKU (1 << 10) /* 0x0400 */ +#define aNPC_COND_DEMO_SKIP_FOOTSTEPS (1 << 11) /* 0x0800 */ +#define aNPC_COND_DEMO_SKIP_FEEL_CHECK (1 << 12) /* 0x1000 */ +#define aNPC_COND_DEMO_SKIP_LOVE_CHECK (1 << 13) /* 0x2000 */ +#define aNPC_COND_DEMO_SKIP_FOOTSTEPS_VFX (1 << 14) /* 0x4000 */ +#define aNPC_COND_DEMO_SKIP_UZAI_CHECK (1 << 15) /* 0x8000 */ typedef struct npc_condition_s { - u8 hide_flg; - u8 hide_request; - u8 action; - u8 talk_condition; - u8 greeting_flag; - u8 entrance_flag; - u16 fatigue; - int feel_tim; - int _0C; - u32 demo_flg; - u32 talk_demo_flg_save; - u32 trans_demo_flg_save; - u8 appear_flag; - u8 appear_rotation; - u8 pitfall_flag; - u32 actor_state_save; - int _24; - int _28; - int _2C; - s8* friendship; - int over_friendship; - mActor_name_t* under_fg_p; - int ut_x; - int ut_z; + u8 hide_flg; + u8 hide_request; + u8 action; + u8 talk_condition; + u8 greeting_flag; + u8 entrance_flag; + u16 fatigue; + int feel_tim; + int _0C; + u32 demo_flg; + u32 talk_demo_flg_save; + u32 trans_demo_flg_save; + u8 appear_flag; + u8 appear_rotation; + u8 pitfall_flag; + u32 actor_state_save; + int _24; + int _28; + int _2C; + s8* friendship; + int over_friendship; + mActor_name_t* under_fg_p; + int ut_x; + int ut_z; } aNPC_condition_info_c; typedef struct npc_uzai_s { - int step; - u8 tool; - u8 flag; - u8 cross; + int step; + u8 counter; + u8 flag; + u8 cross; } aNPC_uzai_c; typedef struct npc_hand_s { - u8 item_type; - u8 requested_item_type; - mActor_name_t item; - u8 after_mode; - u8 present_flag; - u8 umbrella_disabled_flag; - u8 umbrella_type; - ACTOR* item_actor_p; - ACTOR* prev_item_actor_p; - xyz_t pos; + u8 item_type; + u8 requested_item_type; + mActor_name_t item; + u8 after_mode; + u8 present_flag; + u8 umbrella_disabled_flag; + u8 umbrella_type; + ACTOR* item_actor_p; + ACTOR* prev_item_actor_p; + xyz_t pos; } aNPC_hand_c; typedef struct npc_head_s { - s16 angle_x; - s16 angle_y; - s16 angle_add_x; - s16 angle_add_y; - s16 _08; - u8 lock_flag; - u8 target_type; - ACTOR* target; - xyz_t pos; + s16 angle_x; + s16 angle_y; + s16 angle_add_x; + s16 angle_add_y; + s16 _08; + u8 lock_flag; + u8 target_type; + ACTOR* target; + xyz_t pos; } aNPC_head_c; enum { - aNPC_FOOT_LEFT, - aNPC_FOOT_RIGHT, + aNPC_FOOT_LEFT, + aNPC_FOOT_RIGHT, - aNPC_FOOT_NUM + aNPC_FOOT_NUM }; typedef struct npc_movement_s { - f32 max_speed; - f32 acceleration; - f32 deceleration; - f32 target_pos_x; - f32 target_pos_z; - f32 avoid_pos_x; - f32 avoid_pos_z; - s16 move_timer; - u8 avoid_direction; - u8 range_type; - f32 range_center_x; - f32 range_center_z; - f32 range_radius; - s16 mv_angl; - s16 mv_add_angl; - f32 arrival_area_radius; - ACTOR* target; - s8 movement_ut_x; - s8 movement_ut_z; - s16 body_angle; - u8 override_body_angle_flag; - u8 demo_move_timer; + f32 max_speed; + f32 acceleration; + f32 deceleration; + f32 target_pos_x; + f32 target_pos_z; + f32 avoid_pos_x; + f32 avoid_pos_z; + s16 move_timer; + u8 avoid_direction; + u8 range_type; + f32 range_center_x; + f32 range_center_z; + f32 range_radius; + s16 mv_angl; + s16 mv_add_angl; + f32 arrival_area_radius; + ACTOR* target; + s8 movement_ut_x; + s8 movement_ut_z; + s16 body_angle; + u8 override_body_angle_flag; + u8 demo_move_timer; } aNPC_movement_c; typedef struct npc_collision_s { - ClObjPipe_c pipe; - f32 BGcheck_radius; - u8 collision_flag; - u8 priority; - u8 turn_flag; - u16 _24; - s16 turn_angle; - f32 bg_rev_add; + ClObjPipe_c pipe; + f32 BGcheck_radius; + u8 collision_flag; + u8 priority; + u8 turn_flag; + u16 _24; + s16 turn_angle; + f32 bg_rev_add; } aNPC_collision_c; typedef struct npc_actor_talk_info_s { - aNPC_TALK_REQUEST_PROC talk_request_proc; - aNPC_TALK_INIT_PROC talk_init_proc; - aNPC_TALK_END_CHECK_PROC talk_end_check_proc; - u8 type; - u8 default_act; - u8 demo_code; - u8 turn; - s16 default_animation; - s16 default_turn_animation; - s16 melody_inst; - s16 npc_voice_id; - u8 feel; - u8 memory; - u8 kutipaku_timer; // frames of mouth movement animation + aNPC_TALK_REQUEST_PROC talk_request_proc; + aNPC_TALK_INIT_PROC talk_init_proc; + aNPC_TALK_END_CHECK_PROC talk_end_check_proc; + u8 type; + u8 default_act; + u8 demo_code; + u8 turn; + s16 default_animation; + s16 default_turn_animation; + s16 melody_inst; + s16 npc_voice_id; + u8 feel; + u8 memory; + u8 kutipaku_timer; // frames of mouth movement animation } aNPC_talk_info_c; typedef struct npc_accessory_s { - s16 type; - s16 pos_joint_idx; // might be better suited as base_joint_idx? - ACTOR* accessory; + s16 type; + s16 pos_joint_idx; // might be better suited as base_joint_idx? + ACTOR* accessory; } aNPC_accessory_c; /* Used for think, schedule, action, & talk */ @@ -392,66 +503,66 @@ typedef void (*aNPC_PROC)(NPC_ACTOR* npc_actorx, GAME_PLAY* play, int schedule_i typedef void (*aNPC_SUB_PROC)(NPC_ACTOR* npc_actorx, GAME_PLAY* play); enum { - aNPC_SCHEDULE_TYPE_FIELD, - aNPC_SCHEDULE_TYPE_IN_HOUSE, - aNPC_SCHEDULE_TYPE_SLEEP, - aNPC_SCHEDULE_TYPE_STAND, - aNPC_SCHEDULE_TYPE_WANDER, - aNPC_SCHEDULE_TYPE_WALK_WANDER, - aNPC_SCHEDULE_TYPE_SPECIAL, + aNPC_SCHEDULE_TYPE_FIELD, + aNPC_SCHEDULE_TYPE_IN_HOUSE, + aNPC_SCHEDULE_TYPE_SLEEP, + aNPC_SCHEDULE_TYPE_STAND, + aNPC_SCHEDULE_TYPE_WANDER, + aNPC_SCHEDULE_TYPE_WALK_WANDER, + aNPC_SCHEDULE_TYPE_SPECIAL, - aNPC_SCHEDULE_TYPE_NUM + aNPC_SCHEDULE_TYPE_NUM }; struct npc_actor_s { - ACTOR actor_class; - s_xyz _174; - NpcActorInfo_c npc_info; - aNPC_draw_info_c draw; - aNPC_think_info_c think; - aNPC_schedule_info_c schedule; - aNPC_action_c action; - aNPC_request_c request; - f32 eye_y; - aNPC_condition_info_c condition_info; - aNPC_uzai_c uzai; - aNPC_hand_c left_hand; - aNPC_hand_c right_hand; - aNPC_head_c head; - xyz_t feet[aNPC_FOOT_NUM]; - mActor_proc move_proc; - mActor_proc draw_proc; - ACTOR* palActor; - int palActorIgnoreTimer; - aNPC_movement_c movement; - aNPC_collision_c collision; - aNPC_talk_info_c talk_info; - aNPC_accessory_c accessory; - int act_react_tool_timer; - int _98C; - int _990; + ACTOR actor_class; + s_xyz _174; + NpcActorInfo_c npc_info; + aNPC_draw_info_c draw; + aNPC_think_info_c think; + aNPC_schedule_info_c schedule; + aNPC_action_c action; + aNPC_request_c request; + f32 eye_y; + aNPC_condition_info_c condition_info; + aNPC_uzai_c uzai; + aNPC_hand_c left_hand; + aNPC_hand_c right_hand; + aNPC_head_c head; + xyz_t feet[aNPC_FOOT_NUM]; + mActor_proc move_proc; + mActor_proc draw_proc; + ACTOR* palActor; + int palActorIgnoreTimer; + aNPC_movement_c movement; + aNPC_collision_c collision; + aNPC_talk_info_c talk_info; + aNPC_accessory_c accessory; + int act_react_tool_timer; + int _98C; + int _990; }; typedef struct npc_control_cloth_s { - u8 dma_flag; - u8 init_flag; - s16 _02; - mActor_name_t cloth_item; - u8 in_use_count; - Object_Bank_c texture_bank; - Object_Bank_c palette_bank; + u8 dma_flag; + u8 init_flag; + s16 _02; + mActor_name_t cloth_item; + u8 in_use_count; + Object_Bank_c texture_bank; + Object_Bank_c palette_bank; } aNPC_cloth_c; typedef struct npc_control_actor_s { - ACTOR* actor_class; - aNPC_cloth_c cloth[10]; - u8 _8F4[0x9D8 - 0x8F4]; // TODO + ACTOR* actor_class; + aNPC_cloth_c cloth[10]; + u8 _8F4[0x9D8 - 0x8F4]; // TODO } NPC_CONTROL_ACTOR; -typedef struct npc_destruct_table_proc{ +typedef struct npc_destruct_table_proc { aNPC_SUB_PROC unk0; aNPC_SUB_PROC unk4; -}NPC_DT_PROCS; +} NPC_DT_PROCS; extern ACTOR_PROFILE Npc_Profile; @@ -460,4 +571,3 @@ extern ACTOR_PROFILE Npc_Profile; #endif #endif - diff --git a/include/ac_npc_anim_def.h b/include/ac_npc_anim_def.h new file mode 100644 index 00000000..b98bd76b --- /dev/null +++ b/include/ac_npc_anim_def.h @@ -0,0 +1,265 @@ +#ifndef AC_NPC_ANIM_DEF_H +#define AC_NPC_ANIM_DEF_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + aNPC_ANIM_RUN1, + aNPC_ANIM_WALK1, + aNPC_ANIM_WALK_KI1, + aNPC_ANIM_WALK_DO1, + aNPC_ANIM_WALK_AI1, + aNPC_ANIM_WAIT1, + aNPC_ANIM_WAIT_KI1, + aNPC_ANIM_WAIT_DO1, + aNPC_ANIM_WAIT_AI1, + aNPC_ANIM_WAIT_NEMU1, + aNPC_ANIM_AISATU1, + aNPC_ANIM_AISATU2, + aNPC_ANIM_AISATU3, + aNPC_ANIM_AISATU4, + aNPC_ANIM_GURATUKU1, + aNPC_ANIM_OTIRU1, + aNPC_ANIM_OTIRU2, + aNPC_ANIM_MOGAKU1, + aNPC_ANIM_DERU1, + aNPC_ANIM_DERU2, + aNPC_ANIM_TALK_TURN1, + aNPC_ANIM_TALK1, + aNPC_ANIM_OPEN1, + aNPC_ANIM_GO_OUT1, + aNPC_ANIM_UMB_OPEN1, + aNPC_ANIM_UMB_CLOSE1, + aNPC_ANIM_TRANSFER1, + aNPC_ANIM_TRANS_WAIT1, + aNPC_ANIM_GET1, + aNPC_ANIM_GET_PULL1, + aNPC_ANIM_GET_PULL_WAIT1, + aNPC_ANIM_GET_PUTAWAY1, + aNPC_ANIM_GET_EAT1, + aNPC_ANIM_GET_CHANGE1, + aNPC_ANIM_GET_RETURN1, + aNPC_ANIM_TRANSFER_F1, + aNPC_ANIM_TRANS_WAIT_F1, + aNPC_ANIM_GET_F1, + aNPC_ANIM_GET_PULL_F1, + aNPC_ANIM_GET_PULL_WAIT_F1, + aNPC_ANIM_GET_PUTAWAY_F1, + aNPC_ANIM_GET_RETURN_F1, + aNPC_ANIM_ESTIMATE_F1, + aNPC_ANIM_CONTRACT1, + aNPC_ANIM_CONTRACT2, + aNPC_ANIM_CONTRACT3, + aNPC_ANIM_NOT_CONTRACT1, + aNPC_ANIM_FLY1, + aNPC_ANIM_FLYAWAY1, + aNPC_ANIM_DELIVERY1, + aNPC_ANIM_KYORO1, + aNPC_ANIM_LANDING1, + aNPC_ANIM_LANDING2, + aNPC_ANIM_LANDING3, + aNPC_ANIM_OPEN_D1, + aNPC_ANIM_SITDOWN_D1, + aNPC_ANIM_SITDOWN_WAIT_D1, + aNPC_ANIM_STANDUP_D1, + aNPC_ANIM_OPEN_D2, + aNPC_ANIM_TO_DECK_D1, + aNPC_ANIM_KEITAI_ON1, + aNPC_ANIM_KEITAI_TALK1, + aNPC_ANIM_KEITAI_TALK2, + aNPC_ANIM_KEITAI_OFF1, + aNPC_ANIM_WAIT_E1, + aNPC_ANIM_ENSOU_E1, + aNPC_ANIM_BANZAI1, + aNPC_ANIM_CLAP1, + aNPC_ANIM_KOKKURI_D1, + aNPC_ANIM_KOKKURI_D2, + aNPC_ANIM_SAISEN1, + aNPC_ANIM_OMAIRI1, + aNPC_ANIM_SITDOWN_WAIT1, + aNPC_ANIM_SITDOWN_DRINK1, + aNPC_ANIM_SITDOWN_CLAP1, + aNPC_ANIM_DANCE1, + aNPC_ANIM_KUISINBO1, + aNPC_ANIM_SANBASI1, + aNPC_ANIM_WAIT_R1, + aNPC_ANIM_APPEAR1, + aNPC_ANIM_GO_UG1, + aNPC_ANIM_INTRO1_A, + aNPC_ANIM_INTRO1_B, + aNPC_ANIM_TAISOU1, + aNPC_ANIM_TAISOU2, + aNPC_ANIM_TAISOU3_A, + aNPC_ANIM_TAISOU3_B, + aNPC_ANIM_TAISOU4_A, + aNPC_ANIM_TAISOU4_B, + aNPC_ANIM_TAISOU5_A, + aNPC_ANIM_TAISOU5_B, + aNPC_ANIM_TAISOU6_A, + aNPC_ANIM_TAISOU6_B, + aNPC_ANIM_TAISOU7, + aNPC_ANIM_KIDUKU1, + aNPC_ANIM_KIDUKU2, + aNPC_ANIM_CRACKER_WAIT1, + aNPC_ANIM_CRACKER_FIRE1, + aNPC_ANIM_CRACKER_RUN1, + aNPC_ANIM_CRACKER_COUNT1, + aNPC_ANIM_WARMUP1, + aNPC_ANIM_READY1, + aNPC_ANIM_ASIHUMI1, + aNPC_ANIM_KOKERU1, + aNPC_ANIM_KOKERU_GETUP1, + aNPC_ANIM_TIRED1, + aNPC_ANIM_TAMAKOME1, + aNPC_ANIM_YOUI1, + aNPC_ANIM_DON1, + aNPC_ANIM_TUNAHIKI_AIKO1, + aNPC_ANIM_TUNAHIKI_YURI1, + aNPC_ANIM_TUNAHIKI_FURI1, + aNPC_ANIM_HATAFURI1, + aNPC_ANIM_TAMAHIROI1, + aNPC_ANIM_TAMANAGE1, + aNPC_ANIM_GETUP_SEG1, + aNPC_ANIM_GETUP_WAIT_SEG1, + aNPC_ANIM_PIKU_SEG1, + aNPC_ANIM_4HAKU_E1, + aNPC_ANIM_3HAKU_E1, + aNPC_ANIM_SEND_MAIL1, + aNPC_ANIM_TURI_WAIT1, + aNPC_ANIM_MISIN1, + aNPC_ANIM_WIPKOGU1, + aNPC_ANIM_WIPWAIT1, + aNPC_ANIM_WIPWAIT2, + aNPC_ANIM_GSTWAIT1, + aNPC_ANIM_GYAFUN1, + aNPC_ANIM_GYAFUN2, + aNPC_ANIM_TKYKYORO1, + aNPC_ANIM_MUKA1, + aNPC_ANIM_MUKA2, + aNPC_ANIM_GAAAN1, + aNPC_ANIM_GAAAN2, + aNPC_ANIM_SMILE1, + aNPC_ANIM_SMILE2, + aNPC_ANIM_HA1, + aNPC_ANIM_HA2, + aNPC_ANIM_PUNPUN1, + aNPC_ANIM_PUNPUN2, + aNPC_ANIM_A1, + aNPC_ANIM_A2, + aNPC_ANIM_ASERU1, + aNPC_ANIM_ASERU2, + aNPC_ANIM_BURUBURU1, + aNPC_ANIM_BURUBURU2, + aNPC_ANIM_GOUKYU1, + aNPC_ANIM_GOUKYU2, + aNPC_ANIM_HAPPY1, + aNPC_ANIM_HAPPY2, + aNPC_ANIM_HATE1, + aNPC_ANIM_HATE2, + aNPC_ANIM_HIRAMEKI1, + aNPC_ANIM_HIRAMEKI2, + aNPC_ANIM_HYUUU1, + aNPC_ANIM_HYUUU2, + aNPC_ANIM_LOVELOVE1, + aNPC_ANIM_LOVELOVE2, + aNPC_ANIM_MUUUUU1, + aNPC_ANIM_MUUUUU2, + aNPC_ANIM_OTIKOMU1, + aNPC_ANIM_OTIKOMU2, + aNPC_ANIM_SHITUREN1, + aNPC_ANIM_SHITUREN2, + aNPC_ANIM_WARUDAKUMI1, + aNPC_ANIM_WARUDAKUMI2, + aNPC_ANIM_NEBOKE1, + aNPC_ANIM_NEBOKE2, + aNPC_ANIM_LOVE1, + aNPC_ANIM_LOVE2, + aNPC_ANIM_NIKO1, + aNPC_ANIM_MUSU1, + aNPC_ANIM_KOMARI1, + aNPC_ANIM_HATE_F1, + aNPC_ANIM_HATE_F2, + aNPC_ANIM_HA_F1, + aNPC_ANIM_HA_F2, + aNPC_ANIM_HAPPY_F1, + aNPC_ANIM_HAPPY_F2, + aNPC_ANIM_ASERU_F1, + aNPC_ANIM_ASERU_F2, + aNPC_ANIM_MUUUUU_F1, + aNPC_ANIM_MUUUUU_F2, + aNPC_ANIM_LOVELOVE_F1, + aNPC_ANIM_LOVELOVE_F2, + aNPC_ANIM_A_F1, + aNPC_ANIM_A_F2, + aNPC_ANIM_SMILE_F1, + aNPC_ANIM_SMILE_F2, + aNPC_ANIM_KOMARI_F1, + aNPC_ANIM_NIKO_F1, + aNPC_ANIM_MUSU_F1, + aNPC_ANIM_HATE_I1, + aNPC_ANIM_HATE_I2, + aNPC_ANIM_HA_I1, + aNPC_ANIM_HA_I2, + aNPC_ANIM_HAPPY_I1, + aNPC_ANIM_HAPPY_I2, + aNPC_ANIM_ASERU_I1, + aNPC_ANIM_ASERU_I2, + aNPC_ANIM_MUUUUU_I1, + aNPC_ANIM_MUUUUU_I2, + aNPC_ANIM_LOVE_I1, + aNPC_ANIM_LOVE_I2, + aNPC_ANIM_SHITUREN_I1, + aNPC_ANIM_SHITUREN_I2, + aNPC_ANIM_KOMARI_I1, + aNPC_ANIM_NIKO_I1, + aNPC_ANIM_MUSU_I1, + aNPC_ANIM_SMILE_D1, + aNPC_ANIM_SMILE_D2, + aNPC_ANIM_GAAAN_D1, + aNPC_ANIM_GAAAN_D2, + aNPC_ANIM_HIRAMEKI_D1, + aNPC_ANIM_HIRAMEKI_D2, + aNPC_ANIM_HA_D1, + aNPC_ANIM_HA_D2, + aNPC_ANIM_MUSU_D1, + aNPC_ANIM_NIKO_D1, + aNPC_ANIM_KOMARI_D1, + aNPC_ANIM_HATE_D1, + aNPC_ANIM_HATE_D2, + aNPC_ANIM_PUNPUN_R1, + aNPC_ANIM_PUNPUN_R2, + aNPC_ANIM_MUSU_R1, + aNPC_ANIM_HYUUU_R1, + aNPC_ANIM_HYUUU_R2, + aNPC_ANIM_A_R1, + aNPC_ANIM_A_R2, + aNPC_ANIM_A2_R1, + aNPC_ANIM_AKIRERU_R1, + aNPC_ANIM_AKIRERU_R2, + aNPC_ANIM_MATAROU_R1, + aNPC_ANIM_MATAROU_R2, + aNPC_ANIM_GEKIDO_R1, + aNPC_ANIM_GEKIDO_R2, + aNPC_ANIM_HA_E1, + aNPC_ANIM_HA_E2, + aNPC_ANIM_KEIREI1, + aNPC_ANIM_KIEEEEI1, + aNPC_ANIM_KIEEEEI2, + aNPC_ANIM_UMBRELLA1, + aNPC_ANIM_UTIWA_WAIT1, + aNPC_ANIM_TUE1, + aNPC_ANIM_KUTIPAKU1, + aNPC_ANIM_KUTIPAKU2, + + aNPC_ANIM_NUM +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/ac_npc_guide.h b/include/ac_npc_guide.h index 36356e76..2f6d661f 100644 --- a/include/ac_npc_guide.h +++ b/include/ac_npc_guide.h @@ -3,11 +3,38 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif +typedef struct npc_guide_actor_s NPC_GUIDE_ACTOR; + +typedef void (*aNGD_PROC)(NPC_GUIDE_ACTOR*, GAME_PLAY*); + +struct npc_guide_actor_s { + NPC_ACTOR npc_class; + int action; + int next_action; + aNGD_PROC proc; + int lock_camera_flag; + int camera_morph_counter; + s16 camera_move; + s8 camera_move_cnt; + s8 camera_move_set_counter; + f32 camera_move_y; + f32 camera_move_range; + s16 camera_tilt_cur_angle; + s16 camera_tilt_goal_angle; + s16 camera_tilt_add; + int answer_flags; + ACTOR* train_door_actor; + int obj_look_type; + f32 obj_dist_ground; + int camera_eyes_flag; +}; + extern ACTOR_PROFILE Npc_Guide_Profile; #ifdef __cplusplus @@ -15,4 +42,3 @@ extern ACTOR_PROFILE Npc_Guide_Profile; #endif #endif - diff --git a/include/ac_npc_guide2.h b/include/ac_npc_guide2.h index f48a12ba..1cb62651 100644 --- a/include/ac_npc_guide2.h +++ b/include/ac_npc_guide2.h @@ -3,11 +3,38 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif +typedef struct npc_guide2_actor_s NPC_GUIDE2_ACTOR; + +typedef void (*aNG2_PROC)(NPC_GUIDE2_ACTOR*, GAME_PLAY*); + +struct npc_guide2_actor_s { + NPC_ACTOR npc_class; + int action; + int next_action; + aNG2_PROC proc; + int lock_camera_flag; + int camera_morph_counter; + s16 camera_move; + s8 camera_move_cnt; + s8 camera_move_set_counter; + f32 camera_move_y; + f32 camera_move_range; + s16 camera_tilt_cur_angle; + s16 camera_tilt_goal_angle; + s16 camera_tilt_add; + int answer_flags; + ACTOR* train_door_actor; + int obj_look_type; + f32 obj_dist_ground; + int camera_eyes_flag; +}; + extern ACTOR_PROFILE Npc_Guide2_Profile; #ifdef __cplusplus @@ -15,4 +42,3 @@ extern ACTOR_PROFILE Npc_Guide2_Profile; #endif #endif - diff --git a/include/ac_npc_rcn_guide.h b/include/ac_npc_rcn_guide.h index 3cd95614..97d863d7 100644 --- a/include/ac_npc_rcn_guide.h +++ b/include/ac_npc_rcn_guide.h @@ -3,11 +3,32 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif +typedef struct npc_rcn_guide_s NPC_RCN_GUIDE_ACTOR; + +typedef void (*aNRG_THINK_PROC)(NPC_RCN_GUIDE_ACTOR*, GAME_PLAY*); +typedef void (*aNRG_TALK_PROC)(NPC_RCN_GUIDE_ACTOR*, GAME_PLAY*); + +/* sizeof(NPC_RCN_GUIDE_ACTOR) == 0x9B4 */ +struct npc_rcn_guide_s { + /* 0x000 */ NPC_ACTOR npc_class; + /* 0x994 */ int think_idx; + /* 0x998 */ int next_think_idx; + /* 0x99C */ aNRG_THINK_PROC think_proc; + /* 0x9A0 */ int talk_idx; + /* 0x9A4 */ aNRG_TALK_PROC talk_proc; + /* 0x9A8 */ u8 talk_proc_idx; + /* 0x9A9 */ u8 path; + /* 0x9AA */ u8 melody_copy; + /* 0x9AC */ int shop_bx; + /* 0x9B0 */ int shop_bz; +}; + extern ACTOR_PROFILE Npc_Rcn_Guide_Profile; #ifdef __cplusplus @@ -15,4 +36,3 @@ extern ACTOR_PROFILE Npc_Rcn_Guide_Profile; #endif #endif - diff --git a/include/ac_npc_rcn_guide2.h b/include/ac_npc_rcn_guide2.h index 57514077..aefe1068 100644 --- a/include/ac_npc_rcn_guide2.h +++ b/include/ac_npc_rcn_guide2.h @@ -3,11 +3,32 @@ #include "types.h" #include "m_actor.h" +#include "ac_npc.h" #ifdef __cplusplus extern "C" { #endif +typedef struct npc_rcn_guide2_s NPC_RCN_GUIDE2_ACTOR; + +typedef void (*aNRG2_THINK_PROC)(NPC_RCN_GUIDE2_ACTOR*, GAME_PLAY*); +typedef void (*aNRG2_TALK_PROC)(NPC_RCN_GUIDE2_ACTOR*); + +/* sizeof(NPC_RCN_GUIDE2_ACTOR) == 0x9BC */ +struct npc_rcn_guide2_s { + /* 0x000 */ NPC_ACTOR npc_class; + /* 0x994 */ int _994; + /* 0x998 */ int think_idx; + /* 0x99C */ int next_think_idx; + /* 0x9A0 */ aNRG2_THINK_PROC think_proc; + /* 0x9A4 */ int talk_idx; + /* 0x9A8 */ int talk_proc_idx; + /* 0x9AC */ aNRG2_TALK_PROC talk_proc; + /* 0x9B0 */ int counter; + /* 0x9B4 */ int daily_speak_flag; + /* 0x9B8 */ int can_ask_again_flag; +}; + extern ACTOR_PROFILE Npc_Rcn_Guide2_Profile; #ifdef __cplusplus @@ -15,4 +36,3 @@ extern ACTOR_PROFILE Npc_Rcn_Guide2_Profile; #endif #endif - diff --git a/include/ac_npc_rtc.h b/include/ac_npc_rtc.h index 5f19b3eb..e8269035 100644 --- a/include/ac_npc_rtc.h +++ b/include/ac_npc_rtc.h @@ -9,22 +9,22 @@ extern "C" { #endif -typedef struct actor_npc_rtc_s NPCRTC_ACTOR; +typedef struct actor_npc_rtc_s NPC_RTC_ACTOR; -typedef void (*aNPCRTC_SUB_PROC)(NPCRTC_ACTOR* rtc, GAME_PLAY* play); +typedef void (*aNRTC_PROC)(NPC_RTC_ACTOR* rtc, GAME_PLAY* play); -struct actor_npc_rtc_s{ +struct actor_npc_rtc_s { NPC_ACTOR npc_class; - int unk994; - int unk998; - aNPCRTC_SUB_PROC unk99C; - int unk9A0; + int talk_idx; + int unk998; + aNRTC_PROC talk_proc; + int talk_flag; int unk9A4; - int unk9A8; - int unk9AC; - int unk9B0; - int unk9B4; - int unk9B8; + int think_idx; + int counter; + int fade_timer; + int bgm_timer; + int first_talk_timer; }; extern ACTOR_PROFILE Npc_Rtc_Profile; @@ -34,4 +34,3 @@ extern ACTOR_PROFILE Npc_Rtc_Profile; #endif #endif - diff --git a/include/ac_shop_design.h b/include/ac_shop_design.h index 70db2115..9a0a3a03 100644 --- a/include/ac_shop_design.h +++ b/include/ac_shop_design.h @@ -8,6 +8,25 @@ extern "C" { #endif +typedef struct shop_design_actor_s SHOP_DESIGN_ACTOR; + +typedef mActor_name_t (*aSD_UNITNUM2ITEMNO_PROC)(int ut_x, int ut_z); +typedef int (*aSD_REPORTGOODSSALE_PROC)(int ut_x, int ut_z); + +typedef struct shop_design_clip_s { + SHOP_DESIGN_ACTOR* design_actor; + aSD_UNITNUM2ITEMNO_PROC unitNum2ItemNo_proc; + aSD_REPORTGOODSSALE_PROC reportGoodsSale_proc; +} aSD_Clip_c; + +struct shop_design_actor_s { + ACTOR actor_class; + mActor_name_t* goods_list; + int goods_list_count; + int goods_list_max; + aSD_Clip_c clip; +}; + extern ACTOR_PROFILE Shop_Design_Profile; #ifdef __cplusplus @@ -15,4 +34,3 @@ extern ACTOR_PROFILE Shop_Design_Profile; #endif #endif - diff --git a/include/ac_shop_goods.h b/include/ac_shop_goods.h index e4694002..ef7a28fa 100644 --- a/include/ac_shop_goods.h +++ b/include/ac_shop_goods.h @@ -9,6 +9,39 @@ extern "C" { #endif +#define aSG_SINGLE_DRAW_NUM 9 + +typedef struct ac_shop_goods_s SHOP_GOODS_ACTOR; + +typedef struct ac_shop_good_single_draw_s { + mActor_name_t item; + s16 layer; + xyz_t target_pos; + xyz_t current_pos; + xyz_t start_pos; + f32 scale; + u16 counter; + s_xyz angle; + f32 velocity_y; + f32 _38; + f32 acceleration_y; + s16 _40; + u16 flags; + int delay_timer; +} aSG_single_draw_c; + +struct ac_shop_goods_s { + ACTOR actor_class; + int picture_count; + int bx; + int bz; + f32 bx_pos; + f32 bz_pos; + s16 mode; + s16 _18A; + aSG_single_draw_c single_draw[aSG_SINGLE_DRAW_NUM]; +}; + extern ACTOR_PROFILE Shop_Goods_Profile; #ifdef __cplusplus diff --git a/include/ac_shop_indoor.h b/include/ac_shop_indoor.h index 6bcb23c7..bdbc9a1f 100644 --- a/include/ac_shop_indoor.h +++ b/include/ac_shop_indoor.h @@ -12,29 +12,29 @@ typedef struct shop_indoor_actor_s SHOP_INDOOR_ACTOR; typedef int (*aSI_CHANGE_WALL_PROC)(mActor_name_t item); typedef int (*aSI_CHANGE_CARPET_PROC)(mActor_name_t item); -typedef void (*aSI_INDOOR_DMA_AGAIN_PROC)(); -typedef void (*aSI_CHANGE2DEFAULT_PROC)(); +typedef void (*aSI_INDOOR_DMA_AGAIN_PROC)(void); +typedef void (*aSI_CHANGE2DEFAULT_PROC)(void); typedef struct shop_indoor_clip_s { - SHOP_INDOOR_ACTOR* shop_indoor_actor; - aSI_CHANGE_WALL_PROC change_wall_proc; - aSI_CHANGE_CARPET_PROC change_carpet_proc; - aSI_INDOOR_DMA_AGAIN_PROC indoor_dma_again_proc; - aSI_CHANGE2DEFAULT_PROC change2default_proc; + ACTOR* shop_indoor_actor; + aSI_CHANGE_WALL_PROC change_wall_proc; + aSI_CHANGE_CARPET_PROC change_carpet_proc; + aSI_INDOOR_DMA_AGAIN_PROC indoor_dma_again_proc; + aSI_CHANGE2DEFAULT_PROC change2default_proc; } aSI_Clip_c; struct shop_indoor_actor_s { - ACTOR actor_class; - s16 floor_default_tex_no; - s16 wall_default_tex_no; - s16 floor_data_idx; - s16 wall_data_idx; - int _17C; - u8* floor_data_p[2]; - u8* wall_data_p[2]; - s16 shop_idx; - aSI_Clip_c clip; - int fukubiki_active; + ACTOR actor_class; + s16 floor_idx; + s16 wall_idx; + s16 floor_data_idx; + s16 wall_data_idx; + int _17C; + u8* floor_data_p[2]; + u8* wall_data_p[2]; + s16 shop_idx; + aSI_Clip_c clip; + int fukubiki_active; }; extern ACTOR_PROFILE Shop_Indoor_Profile; @@ -44,4 +44,3 @@ extern ACTOR_PROFILE Shop_Indoor_Profile; #endif #endif - diff --git a/include/ac_shop_level.h b/include/ac_shop_level.h index 865f7aff..4896fd24 100644 --- a/include/ac_shop_level.h +++ b/include/ac_shop_level.h @@ -8,6 +8,14 @@ extern "C" { #endif +typedef struct shop_level_actor_s SHOP_LEVEL_ACTOR; + +struct shop_level_actor_s { + ACTOR actor_class; + int bx; + int bz; +}; + extern ACTOR_PROFILE Shop_Level_Profile; #ifdef __cplusplus @@ -15,4 +23,3 @@ extern ACTOR_PROFILE Shop_Level_Profile; #endif #endif - diff --git a/include/ac_sign.h b/include/ac_sign.h index 3f3231ad..a6ad7e3e 100644 --- a/include/ac_sign.h +++ b/include/ac_sign.h @@ -3,11 +3,54 @@ #include "types.h" #include "m_actor.h" +#include "m_field_make.h" +#include "m_olib.h" #ifdef __cplusplus extern "C" { #endif +#define aSIGN_SINGLE_NUM 10 + +#define aSIGN_CULL_MAX_DIST (mFI_UNIT_BASE_SIZE_F * 4) + +typedef struct sign_actor_s SIGN_ACTOR; + +typedef struct sign_draw_s { + BlockOrUnit_c block; + u16 exist_bitfield[UT_Z_NUM]; +} aSIGN_draw_c; + +typedef struct sign_single_s { + BlockOrUnit_c block; + BlockOrUnit_c unit; + mActor_name_t item; + xyz_t scale; + f32 _20; + s16 _24; + s16 _26; + int exist_flag; +} aSIGN_single_c; + +typedef void (*aSIGN_ACTION_PROC)(SIGN_ACTOR*, GAME*); + +struct sign_actor_s { + ACTOR actor_class; + aSIGN_ACTION_PROC action_proc; + aSIGN_draw_c draw[mFM_VISIBLE_BLOCK_NUM]; + aSIGN_single_c single[aSIGN_SINGLE_NUM]; + BlockOrUnit_c target_block; + BlockOrUnit_c target_unit; + xyz_t target_pos; + xyz_t sign_birth_pos; + xyz_t sign_pos; + int _404; + int is_winter; +}; + +extern int aSIGN_set_white_sign(GAME* game, xyz_t* pos_p); +extern int aSIGN_erase_white_sign(GAME* game, xyz_t* pos_p); + extern ACTOR_PROFILE Ac_Sign_Profile; #ifdef __cplusplus @@ -15,4 +58,3 @@ extern ACTOR_PROFILE Ac_Sign_Profile; #endif #endif - diff --git a/include/ac_snowman.h b/include/ac_snowman.h index 58c6308e..34cfc033 100644 --- a/include/ac_snowman.h +++ b/include/ac_snowman.h @@ -24,7 +24,9 @@ typedef struct snowman_actor_s { int msg_info; int snowman_part; s_xyz head_vec; - u8 _1F2[0x1FC - 0x1F2]; + u8 _1F2[0x1F8 - 0x1F2]; + s16 unk_1F8; + u8 _1FA[0x2]; } SNOWMAN_ACTOR; extern ACTOR_PROFILE Snowman_Profile; diff --git a/include/ac_t_keitai.h b/include/ac_t_keitai.h index e4d0af20..4d4ca7c7 100644 --- a/include/ac_t_keitai.h +++ b/include/ac_t_keitai.h @@ -13,7 +13,7 @@ extern ACTOR_PROFILE T_Keitai_Profile; typedef void (*KEITAI_PROC)(ACTOR*); -typedef struct t_keitai_s{ +typedef struct t_keitai_s { TOOLS_ACTOR tools_class; KEITAI_PROC action_proc; int action; @@ -34,4 +34,3 @@ typedef struct t_keitai_action_anim_s { #endif #endif - diff --git a/include/ac_tools.h b/include/ac_tools.h index a12ef03d..7aca802a 100644 --- a/include/ac_tools.h +++ b/include/ac_tools.h @@ -12,78 +12,97 @@ extern "C" { extern ACTOR_PROFILE Tools_Profile; typedef enum { - TOOL_UMBRELLA0, - TOOL_UMBRELLA1, - TOOL_UMBRELLA2, - TOOL_UMBRELLA3, - TOOL_UMBRELLA4, - TOOL_UMBRELLA5, - TOOL_UMBRELLA6, - TOOL_UMBRELLA7, - TOOL_UMBRELLA8, - TOOL_UMBRELLA9, - TOOL_UMBRELLA10, - TOOL_UMBRELLA11, - TOOL_UMBRELLA12, - TOOL_UMBRELLA13, - TOOL_UMBRELLA14, - TOOL_UMBRELLA15, - TOOL_UMBRELLA16, - TOOL_UMBRELLA17, - TOOL_UMBRELLA18, - TOOL_UMBRELLA19, - TOOL_UMBRELLA20, - TOOL_UMBRELLA21, - TOOL_UMBRELLA22, - TOOL_UMBRELLA23, - TOOL_UMBRELLA24, - TOOL_UMBRELLA25, - TOOL_UMBRELLA26, - TOOL_UMBRELLA27, - TOOL_UMBRELLA28, - TOOL_UMBRELLA29, - TOOL_UMBRELLA30, - TOOL_UMBRELLA31, - TOOL_UMBRELLA32, - TOOL_KEITAI, - TOOL_UTIWA, - TOOL_HANABI, - TOOL_CRACKER, - TOOL_PISTOL, - TOOL_FLAG, - TOOL_TUMBLER, - TOOL_NPC_SAO, - TOOL_TAMA1, - TOOL_TAMA2, - TOOL_TAMA3, - TOOL_TAMA4 + TOOL_UMBRELLA0, + TOOL_UMBRELLA1, + TOOL_UMBRELLA2, + TOOL_UMBRELLA3, + TOOL_UMBRELLA4, + TOOL_UMBRELLA5, + TOOL_UMBRELLA6, + TOOL_UMBRELLA7, + TOOL_UMBRELLA8, + TOOL_UMBRELLA9, + TOOL_UMBRELLA10, + TOOL_UMBRELLA11, + TOOL_UMBRELLA12, + TOOL_UMBRELLA13, + TOOL_UMBRELLA14, + TOOL_UMBRELLA15, + TOOL_UMBRELLA16, + TOOL_UMBRELLA17, + TOOL_UMBRELLA18, + TOOL_UMBRELLA19, + TOOL_UMBRELLA20, + TOOL_UMBRELLA21, + TOOL_UMBRELLA22, + TOOL_UMBRELLA23, + TOOL_UMBRELLA24, + TOOL_UMBRELLA25, + TOOL_UMBRELLA26, + TOOL_UMBRELLA27, + TOOL_UMBRELLA28, + TOOL_UMBRELLA29, + TOOL_UMBRELLA30, + TOOL_UMBRELLA31, + TOOL_ORG_UMBRELLA0, + TOOL_ORG_UMBRELLA1, + TOOL_ORG_UMBRELLA2, + TOOL_ORG_UMBRELLA3, + TOOL_ORG_UMBRELLA4, + TOOL_ORG_UMBRELLA5, + TOOL_ORG_UMBRELLA6, + TOOL_ORG_UMBRELLA7, + TOOL_KEITAI, + TOOL_UTIWA, + TOOL_HANABI, + TOOL_CRACKER, + TOOL_PISTOL, + TOOL_FLAG, + TOOL_TUMBLER, + TOOL_NPC_SAO, + TOOL_TAMA1, + TOOL_TAMA2, + TOOL_TAMA3, + TOOL_TAMA4, + + aTOL_NUM } ToolName; -typedef struct tools_s{ - /* 0x000 */ ACTOR actor_class; - /* 0x174 */ int tool_name; - /* 0x178 */ MtxF matrix_work; - /* 0x1B8 */ int init_matrix; - /* 0x1BC */ int unk1BC; - /* 0x1C0 */ int work0; - /* 0x1C4 */ int work1; - /* 0x1C8 */ int work2; -}TOOLS_ACTOR; +enum { + aTOL_ACTION_WAIT, + aTOL_ACTION_TAKEOUT, + aTOL_ACTION_PUTAWAY, + aTOL_ACTION_DESTRUCT, + aTOL_ACTION_S_TAKEOUT, + aTOL_ACTION_SPECIAL, + + aTOL_ACTION_NUM +}; + +typedef struct tools_s { + /* 0x000 */ ACTOR actor_class; + /* 0x174 */ int tool_name; + /* 0x178 */ MtxF matrix_work; + /* 0x1B8 */ int init_matrix; + /* 0x1BC */ int unk1BC; + /* 0x1C0 */ int work0; + /* 0x1C4 */ int work1; + /* 0x1C8 */ int work2; +} TOOLS_ACTOR; + +typedef ACTOR* (*ToolBirthProc)(int, int, ACTOR*, GAME*, s16, int*); +typedef int (*ToolChgRequestModeProc)(ACTOR*, ACTOR*, int); -typedef TOOLS_ACTOR* (*ToolBirthProc)(int, int, TOOLS_ACTOR*, GAME_PLAY*, s16, int*); -typedef int (*ToolChgRequestModeProc)(ACTOR*, TOOLS_ACTOR*, int); - typedef struct ToolClip { - ToolBirthProc aTOL_birth_proc; - ToolChgRequestModeProc aTOL_chg_request_mode_proc; - int bank_id; + ToolBirthProc aTOL_birth_proc; + ToolChgRequestModeProc aTOL_chg_request_mode_proc; + int bank_id; } aTOL_Clip_c; -extern aTOL_Clip_c aTOL_clip; +extern aTOL_Clip_c aTOL_clip; #ifdef __cplusplus } #endif #endif - diff --git a/include/ac_train1.h b/include/ac_train1.h index c90c33a4..a8f979c4 100644 --- a/include/ac_train1.h +++ b/include/ac_train1.h @@ -10,7 +10,7 @@ extern "C" { #endif -typedef struct train1_s{ +typedef struct train1_s { ACTOR actor_class; int anim_state; cKF_SkeletonInfo_R_c keyframe; @@ -20,13 +20,13 @@ typedef struct train1_s{ u8 pad4[0x2b4 - 0x2A0]; int tr_action; int player_pass_exists; - int player_pass_leaving; //Not sure about this one + int player_pass_leaving; // Not sure about this one int unk2c0; ACTOR* tr_actor_p; f32 tr_speed; f32 tr0_pos; - u8 pad2[0x2D8-0x2CC]; -}TRAIN1_ACTOR; + u8 pad2[0x2D8 - 0x2CC]; +} TRAIN1_ACTOR; extern ACTOR_PROFILE Train1_Profile; @@ -35,4 +35,3 @@ extern ACTOR_PROFILE Train1_Profile; #endif #endif - diff --git a/include/ac_train_door.h b/include/ac_train_door.h index 59d630fd..83658cac 100644 --- a/include/ac_train_door.h +++ b/include/ac_train_door.h @@ -2,25 +2,20 @@ #define AC_TRAIN_DOOR_H #include "types.h" -#include "m_actor.h" -#include "c_keyframe.h" +#include "ac_common.h" #ifdef __cplusplus extern "C" { #endif +#define aTRD_JOINT_NUM 5 typedef struct traindoor_s { - ACTOR actor_class; - u8 pad [0x17C - 0x174]; - cKF_SkeletonInfo_R_c keyframe; - u8 pad2 [0x210 - 0x1ed]; - s_xyz work; - u8 pad3 [0x22e - 0x216]; - s_xyz target; - u8 pad4[0x24c - 0x234]; - int idle; -}TRAINDOOR_ACTOR; + /* 0x000 */ CMN_ACTOR common_actor_class; + /* 0x210 */ s_xyz work[aTRD_JOINT_NUM]; + /* 0x22E */ s_xyz target[aTRD_JOINT_NUM]; + /* 0x24C */ int open_flag; +} TRAINDOOR_ACTOR; extern ACTOR_PROFILE TrainDoor_Profile; @@ -29,4 +24,3 @@ extern ACTOR_PROFILE TrainDoor_Profile; #endif #endif - diff --git a/include/ac_train_window.h b/include/ac_train_window.h index 8fd831d6..dd3b80ba 100644 --- a/include/ac_train_window.h +++ b/include/ac_train_window.h @@ -15,8 +15,7 @@ typedef int (*TRAIN_WINDOW_DRAW_TYPE)(ACTOR*, GAME*); #define CRV_DEBUG_GREEN_VALUE 89 #define CRV_DEBUG_BLUE_VALUE 90 - -typedef struct train_window_s{ +typedef struct train_window_s { ACTOR actor_class; TRAIN_WINDOW_DRAW_TYPE draw_type; s16 pallete_id; @@ -34,7 +33,7 @@ typedef struct train_window_s{ f32 scroll_speed; s_xyz pos; f32 lod_factor; -}TRAIN_WINDOW_ACTOR; +} TRAIN_WINDOW_ACTOR; extern ACTOR_PROFILE Train_Window_Profile; @@ -43,4 +42,3 @@ extern ACTOR_PROFILE Train_Window_Profile; #endif #endif - diff --git a/include/ac_uki.h b/include/ac_uki.h index fa52ce6a..2562914b 100644 --- a/include/ac_uki.h +++ b/include/ac_uki.h @@ -3,11 +3,68 @@ #include "types.h" #include "m_actor.h" +#include "libultra/ultratypes.h" #ifdef __cplusplus extern "C" { #endif +enum { + aUKI_STATUS_0, + aUKI_STATUS_CARRY, + aUKI_STATUS_READY, + aUKI_STATUS_CAST, + aUKI_STATUS_FLOAT, + aUKI_STATUS_VIB, + aUKI_STATUS_COMEBACK, + aUKI_STATUS_CATCH, + + aUKI_STATUS_NUM +}; + +typedef void (*aUKI_SET_VALUE_PROC)(ACTOR* actorx, xyz_t pos, xyz_t pos_speed, int angle_speed_y, int command); +typedef mActor_name_t (*aUKI_GET_FISH_TYPE)(ACTOR* actorx); + +/* sizeof(UKI_ACTOR) == 0x2B8 */ +typedef struct actor_uki_s { + /* 0x000 */ ACTOR actor_class; + /* 0x174 */ ACTOR* child_actor; + /* 0x178 */ ClObjPipe_c col_pipe; + /* 0x194 */ f32 _194; + /* 0x198 */ MtxF mtxf; + /* 0x1D8 */ s16 proc; + /* 0x1DC */ xyz_t parabola_vec[2]; + /* 0x1F4 */ xyz_t parabola_acc[2]; + /* 0x20C */ f32 range; + /* 0x210 */ aUKI_SET_VALUE_PROC set_value_proc; + /* 0x214 */ aUKI_GET_FISH_TYPE get_fish_type_proc; + /* 0x218 */ xyz_t right_hand_pos; + /* 0x224 */ xyz_t position_speed; + /* 0x230 */ int angle_speed_y; + /* 0x234 */ int command; + /* 0x238 */ int status; + /* 0x23C */ xyz_t cast_goal_point; + /* 0x248 */ xyz_t rod_top_position; + /* 0x254 */ xyz_t left_hand_pos; + /* 0x260 */ u8 touched_flag; + /* 0x261 */ u8 hit_water_flag; + /* 0x262 */ s16 frame_timer; + /* 0x264 */ s16 cast_timer; + /* 0x266 */ s16 touch_timer; + /* 0x268 */ xyz_t uki_pos; + /* 0x274 */ xyz_t gyo_pos; + /* 0x280 */ s_xyz uki_angle; + /* 0x286 */ s16 uki_rot_speed; + /* 0x288 */ int gyo_command; + /* 0x28C */ int gyo_status; + /* 0x290 */ int gyo_type; + /* 0x294 */ f32 gyo_scale; + /* 0x298 */ int color[3]; /* rgb */ + /* 0x2A4 */ u8 _2A4[0x10]; + /* 0x2B4 */ u8 coast_flag; + /* 0x2B5 */ u8 _2B5; +} UKI_ACTOR; + extern ACTOR_PROFILE Uki_Profile; #ifdef __cplusplus @@ -15,4 +72,3 @@ extern ACTOR_PROFILE Uki_Profile; #endif #endif - diff --git a/include/ac_weather.h b/include/ac_weather.h index 7774e372..decb49aa 100644 --- a/include/ac_weather.h +++ b/include/ac_weather.h @@ -11,32 +11,32 @@ extern "C" { extern int aWeather_ChangingWeather(); extern void aWeather_RequestChangeWeatherToIsland(); extern void aWeather_RequestChangeWeatherFromIsland(); - + extern ACTOR_PROFILE Weather_Profile; -typedef struct ac_weather_priv_s{ +typedef struct ac_weather_priv_s { xyz_t pos; xyz_t speed; f32 currentY; f32 unk1C; s16 timer; - s16 work[5]; + s16 work[5]; u8 use; u8 id; u8 status; -}aWeather_Priv; +} aWeather_Priv; typedef struct weather_actor_s WEATHER_ACTOR; -typedef void (*CHANGE_WEATHER_PROC)(ACTOR* weather, s16 status, s16 level); -typedef int (*GET_WEATHER_PRV_NUM)(ACTOR* weather); -typedef void (*REMOVE_WEATHER_PRV)(ACTOR* weather, int id); +typedef void (*CHANGE_WEATHER_PROC)(ACTOR* actorx, s16 status, s16 level); +typedef int (*GET_WEATHER_PRV_NUM)(ACTOR* actorx); +typedef void (*REMOVE_WEATHER_PRV)(ACTOR* actorx, int id); typedef aWeather_Priv* (*GET_WEATHER_PRV)(u8 status, s16 timer, xyz_t* pos, xyz_t* speed, ACTOR* weather, int id); typedef int (*WEATHER_SOUND_EFFECT)(); -typedef void (*CHANGE_WEATER_INSTANCE_PROC)(WEATHER_ACTOR* weather, s16 status, s16 level); +typedef void (*CHANGE_WEATER_INSTANCE_PROC)(ACTOR* actorx, s16 status, s16 level); -typedef struct ac_weather_clip_s{ - WEATHER_ACTOR* actor; +typedef struct ac_weather_clip_s { + ACTOR* actor; CHANGE_WEATHER_PROC change_weather; GET_WEATHER_PRV_NUM get_priv_num; REMOVE_WEATHER_PRV remove_priv; @@ -44,25 +44,24 @@ typedef struct ac_weather_clip_s{ WEATHER_SOUND_EFFECT stop_sound; WEATHER_SOUND_EFFECT start_sound; CHANGE_WEATER_INSTANCE_PROC change_weather_instance; -}aWeather_Clip_c; +} aWeather_Clip_c; - -typedef void (*MK_WEATHER_PROC)(ACTOR*,GAME*); +typedef void (*MK_WEATHER_PROC)(ACTOR*, GAME*); typedef void (*CT_WEATHER_PROC)(aWeather_Priv*, GAME*); typedef void (*MV_WEATHER_PROC)(aWeather_Priv*, GAME*); typedef void (*MT_WEATHER_PROC)(aWeather_Priv*, GAME*); typedef void (*ST_WEATHER_PROC)(GAME*); typedef void (*DW_WEATHER_PROC)(aWeather_Priv*, GAME*); -typedef struct ac_weather_profile_s{ +typedef struct ac_weather_profile_s { MK_WEATHER_PROC make; CT_WEATHER_PROC constructor; MV_WEATHER_PROC move; ST_WEATHER_PROC set; DW_WEATHER_PROC draw; -}aWeather_Profile_c; +} aWeather_Profile_c; -struct weather_actor_s{ +struct weather_actor_s { /* 0x000 */ ACTOR actor_class; /* 0x174 */ aWeather_Profile_c* current_profile; /* 0x178 */ s16 current_status; @@ -74,10 +73,10 @@ struct weather_actor_s{ /* 0x184 */ u8* ptr; /* 0x188 */ xyz_t pos; /* 0x194 */ aWeather_Priv* priv; - /* 0x198 */ void* t; + /* 0x198 */ void* t; /* 0x19C */ u8 request_change; /* 0x19E */ s16 unk19E; - /* 0x1A0 */ aWeather_Clip_c clip; + /* 0x1A0 */ aWeather_Clip_c clip; /* 0x1C0 */ s16 timer; /* 0x1C2 */ s16 timer2; /* 0x1C4 */ xyz_t wind_info; @@ -90,11 +89,10 @@ struct weather_actor_s{ /* 0x1DC */ s16 start_sound_effect; /* 0x1DE */ s16 stop_sound_effect; /* 0x1E0 */ s16 basement_event; -}; +}; #ifdef __cplusplus } #endif #endif - diff --git a/include/audio.h b/include/audio.h index f71359ae..34c4afba 100644 --- a/include/audio.h +++ b/include/audio.h @@ -15,6 +15,32 @@ typedef struct audio_tempo_beat_s { /* 0x01 */ s8 beat; } TempoBeat_c; +/* sizeof(StaffRollInfo_c) == 0x18 */ +typedef struct audio_staffroll_info_s { + /* 0x00 */ s16 staffroll_part; + /* 0x02 */ s16 _01; + /* 0x08 */ f64 percent; + /* 0x10 */ s8 mouth_num; + /* 0x11 */ s8 blink_flag; + /* 0x12 */ s8 beat; +} StaffRollInfo_c; + +typedef struct radio_s { + /* 0x000 */ s8 unk0; + /* 0x004 */ f32 unk4; + /* 0x008 */ u16 tempo; +} Radio_c; + +enum { + STAFFROLL_PART_START, + STAFFROLL_PART_INTRO, + STAFFROLL_PART_MAIN, + STAFFROLL_PART_FADEOUT, + STAFFROLL_PART_FINISH, + + STAFFROLL_PART_NUM +}; + enum { VOICE_STATUS_NORMAL, VOICE_STATUS_ANGRY, @@ -34,8 +60,8 @@ extern void sAdo_BgmStart(u8 id); extern void sAdo_BgmStop(u16 id); extern void sAdo_SysTrgStart(u16 id); -extern void sAdo_PlyWalkSe(int walk, const xyz_t* pos); -extern void sAdo_PlyWalkSeRoom(int walk, const xyz_t* pos); +extern void sAdo_PlyWalkSe(u16 walk, const xyz_t* pos); +extern void sAdo_PlyWalkSeRoom(u8 walk, const xyz_t* pos); extern void sAdo_NpcWalkSe(int walk, const xyz_t* pos); extern void sAdo_NpcWalkSeRoom(int walk, const xyz_t* pos); @@ -72,7 +98,7 @@ extern s8 sAdo_GetRhythmDelay(u32 id); extern void sAdo_GetRhythmInfo(TempoBeat_c* rhythm); extern void sAdo_SetRhythmInfo(TempoBeat_c* rhythm); -extern int sAdo_InstCountGet(); +extern s8 sAdo_InstCountGet(); extern void sAdo_RhythmPos(u32 id, u8 haniwa_id, const xyz_t* pos); @@ -92,9 +118,9 @@ extern void sAdos_KishaStatusTrg(u8 state); extern void sAdos_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 distance1, u32 ongenNum2, u16 angle2, f32 distance2); -extern void sAdos_GetRadioCounter(void* p); +extern int sAdos_GetRadioCounter(Radio_c* radio); extern void sAdos_GetKappaCounter(void* p); -extern void sAdos_GetStaffRollInfo(void* p); +extern void sAdos_GetStaffRollInfo(StaffRollInfo_c* info); extern void sAdos_TTKK_ARM(u8 mode); @@ -112,7 +138,7 @@ extern void sAdo_Museum(u8 type); extern void sAdo_SoftReset(); extern u16 sAdo_Get_WalkLabel(int type); -extern int sAdo_Get_KokeruLabel(int type); +extern u16 sAdo_Get_KokeruLabel(int type); extern void sAdo_SceneMode(u8 mode); extern u8 sAdo_RoomIncectPos(u32 f, u16 u, const xyz_t* pos); @@ -121,7 +147,7 @@ extern void sAdo_FurnitureInstPos(u32 id, const xyz_t* pos); extern void sAdo_Set_ongenpos_refuse_fg(int state); extern int sAdo_GameframeEnd_Check(); -extern int sAdo_GetSoundFrameCounter(); +extern u32 sAdo_GetSoundFrameCounter(); extern int sAdo_CheckOnPlussBridge(const xyz_t* pos, u32 atr); extern void sAdo_RegistPlussBridge(const xyz_t* pos); diff --git a/include/audio_defs.h b/include/audio_defs.h index 7872a54e..c79fbe40 100644 --- a/include/audio_defs.h +++ b/include/audio_defs.h @@ -12,8 +12,9 @@ extern "C" { #define VOICE_MODE_SILENT 2 /* audio is monophonic */ -#define MONO(id) (id | 0x1000) -#define SE_FLAG_15(id) (id | 0x8000) +#define MONO(id) ((id) | 0x1000) +#define HANABI(id) ((id) | 0x2000) /* TODO: better name, this probably is some echo effect modifier */ +#define SE_FLAG_15(id) ((id) | 0x8000) // TODO: Make the rest of Sound Effects with parameters #define SE_REGISTER MONO(0x50) @@ -44,16 +45,16 @@ typedef enum audio_sound_effects { NA_SE_DRAWER_SHUT = 0x3A, NA_SE_ITEM_GET = 0x40, - NA_SE_ITEM_HORIDASHI = 0x47, - + NA_SE_47 = 0x47, NA_SE_MONEY0 = 0x49, NA_SE_MONEY1, NA_SE_MONEY2, NA_SE_COIN, + NA_SE_TEMOCHI_KAZAGURUMA, NA_SE_52 = 0x52, - NA_SE_BIRTH_FTR = 0x57, + NA_SE_ITEM_HORIDASHI = 0x57, NA_SE_CLEAN_UP_FTR = 0x58, NA_SE_TOOL_FURI = 0x5A, // swing? @@ -74,15 +75,24 @@ typedef enum audio_sound_effects { NA_SE_STONECOIN_ROLL = 0x7D, NA_SE_STONECOIN_DRAG = 0x7E, - NA_SE_A8 = 0xA8, + NA_SE_TRAIN_RIDE = 0x8D, - NA_SE_CF = 0xCF, + NA_SE_GOKI_MOVE = 0xA8, + + NA_SE_KA_BUZZ = 0xCF, NA_SE_ROD_STROKE = 0x109, NA_SE_ROD_BACK, + NA_SE_10B, + NA_SE_10C, + NA_SE_HANABI0 = HANABI(0x10F), + NA_SE_HANABI1 = HANABI(0x110), + NA_SE_HANABI2 = HANABI(0x111), + NA_SE_HANABI3 = HANABI(0x112), NA_SE_EAT = 0x113, + NA_SE_11B = 0x11B, NA_SE_WEAR = 0x11C, NA_SE_SCOOP1 = 0x11E, @@ -93,6 +103,10 @@ typedef enum audio_sound_effects { NA_SE_TREE_TOUCH = 0x134, NA_SE_TREE_YURASU, + NA_SE_PUN_YUGE = 0x13B, + + NA_SE_DOYON = 0x13F, + NA_SE_KIRIBASU_SCOOP = 0x148, NA_SE_KIRIBASU_OUT, @@ -115,6 +129,9 @@ typedef enum audio_sound_effects { NA_SE_TOILE_CHAIR_SIT = 0x410, + NA_SE_TRAINDOOR0 = 0x412, + NA_SE_TRAINDOOR1, + NA_SE_BED_IN = 0x415, NA_SE_BED_NEGAERI, NA_SE_BED_OUT, @@ -122,14 +139,17 @@ typedef enum audio_sound_effects { NA_SE_ROTATE = 0x41A, NA_SE_41C = 0x41C, - - NA_SE_SOFT_CHAIR_SIT = 0x41F, + NA_SE_AXE_HIT, + NA_SE_AXE_CUT, + NA_SE_SOFT_CHAIR_SIT, NA_SE_HARD_CHAIR_SIT, NA_SE_BUBU_CHAIR_SIT, NA_SE_SOFT_CHAIR_STANDUP, NA_SE_HARD_CHAIR_STANDUP, NA_SE_BUBU_CHAIR_STANDUP = 0x429, + NA_SE_JUMP, + NA_SE_LANDING, NA_SE_FTR_DOOR_OPEN = 0x42C, NA_SE_FTR_DOOR_CLOSE = 0x42D, NA_SE_DRAWER_OPEN = 0x42E, @@ -138,9 +158,6 @@ typedef enum audio_sound_effects { NA_SE_UMBRELLA_ROTATE = 0x432, - NA_SE_JUMP, - NA_SE_LANDING, - NA_SE_KARABURI = 0x43A, NA_SE_ROD_STROKE_SMALL = 0x445, @@ -149,12 +166,122 @@ typedef enum audio_sound_effects { NA_SE_SCOOP_ITEM_HIT, NA_SE_AXE_BALL_HIT, + NA_SE_461 = 0x461, + NA_SE_COIN_GASAGOSO = 0x465, } AudioSE; typedef enum bgm_e { - BGM_AEROBICS = 27, + BGM_SILENCE, + BGM_FIELD_00, + BGM_FIELD_01, + BGM_FIELD_02, + BGM_FIELD_03, + BGM_FIELD_04, + BGM_FIELD_05, + BGM_FIELD_06, + BGM_FIELD_07, + BGM_FIELD_08, + BGM_FIELD_09, + BGM_FIELD_10, + BGM_FIELD_11, + BGM_FIELD_12, + BGM_FIELD_13, + BGM_FIELD_14, + BGM_FIELD_15, + BGM_FIELD_16, + BGM_FIELD_17, + BGM_FIELD_18, + BGM_FIELD_19, + BGM_FIELD_20, + BGM_FIELD_21, + BGM_FIELD_22, + BGM_FIELD_23, + BGM_BROKERS_SHOP, + BGM_FORTUNE_TELLER, + BGM_SPORTSFAIR_AEROBICS, + BGM_SPORTSFAIR_FOOTRACE, + BGM_SPORTSFAIR_BALLTOSS, + BGM_HARVEST_MOON, + BGM_NEW_YEARS_1HR, + BGM_NEW_YEARS_30MIN, + BGM_NEW_YEARS_10MIN, + BGM_NEW_YEARS_5MIN, + BGM_NEW_YEARS_NOW, + BGM_NEW_YEARS_DAY, + BGM_SHOP1, + BGM_SHOP2, + BGM_SHOP3, + BGM_DIG_ITEM, + BGM_POST_OFFICE0, + BGM_INTRO_TRAIN, + BGM_INTRO_KK, + BGM_SHOP0, + BGM_POLICE_BOX, + BGM_SAVE, + BGM_INTRO_ARRIVE, + BGM_INTRO_RCN_GUIDE, + BGM_INTRO_SELECT_HOUSE, + BGM_INTRO_SELECT_HOUSE2, + BGM_INTRO_FIND_SHOP, + BGM_INTRO_CHORES, + BGM_HALLOWEEN, + BGM_XMAS_EVE, + BGM_FIREWORKS_FESTIVAL, + BGM_CHERRY_BLOSSOM_FESTIVAL, + BGM_NEW_YEARS_PARTY, + BGM_KK_HAZURE0, + BGM_NEW_YEARS_WISH, + BGM_SPORTSFAIR_TUGOFWAR, + BGM_NEW_YEARS_MORNING, + BGM_POST_OFFICE1, + BGM_TRAIN_PULL_INTO_TOWN, + BGM_TRAIN_BOARD, + BGM_ENTER_HOUSE, + BGM_RESET, + BGM_BEE_CHASE, + BGM_BEE_STUNG, + BGM_RAIN, + BGM_TITLE, + BGM_TRAIN_ARRIVAL_WAIT, + BGM_INTRO_NEW_TOWN, + BGM_INTRO_CHORES_COMPLETE, + BGM_DEBT_PAID, + BGM_ALL_INSECTS, + BGM_ALL_FISH, + BGM_KAMAKURA, + BGM_RESET2, + BGM_SHOP0_LATE, + BGM_SHOP1_LATE, + BGM_SHOP2_LATE, + BGM_SHOP3_LATE, + BGM_NINTENDO0, + BGM_NINTENDO1, + BGM_NINTENDO2, + BGM_NINTENDO3, + BGM_NINTENDO4, + BGM_MUSEUM, + BGM_TAILORS, + BGM_90, + BGM_ISLAND, + BGM_KAPPA_SONG0, + BGM_KAPPA_SONG1, + BGM_KAPPA_SONG2, + BGM_KAPPA_SONG3, + BGM_KAPPA_SONG4, + BGM_KAPPA_SONG5, + BGM_KAPPA_SONG6, + BGM_KAPPA_SONG7, + BGM_KAPPA_SONG8, + BGM_KAPPA_SONG9, + BGM_KAPPA_SONG10, + BGM_KAPPA_SONG11, + BGM_KAPPA_SONG12, + BGM_KAPPA_SONG13, + BGM_KAPPA_SONG14, + BGM_KAPPA_SONG15, + // TODO: others BGM_MD0 = 128, } BGM_e; diff --git a/include/bg_item_h.h b/include/bg_item_h.h index f9f6ee0b..3fe4f041 100644 --- a/include/bg_item_h.h +++ b/include/bg_item_h.h @@ -28,7 +28,7 @@ typedef void (*bIT_SHADOW_DRAW_PROC)(GAME*, bIT_ShadowData_c*, int); typedef void (*bIT_SINGLE_DRAW_PROC)(GAME* game, mActor_name_t fg_no, xyz_t* pos, f32 scale_f, bIT_DRAW_BF_PROC draw_bf, bIT_DRAW_AF_PROC draw_af, rgba_t* col); typedef int (*bIT_TREE_CUTCOUNT_CHECK_PROC)(GAME* game, int ut_x, int ut_z); -typedef void (*bIT_DIG_HOLE_EFFECT_ENTRY_PROC)(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames); +typedef int (*bIT_DIG_HOLE_EFFECT_ENTRY_PROC)(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames); typedef void (*bIT_BURY_HOLE_EFFECT_ENTRY_PROC)(mActor_name_t fg_item, xyz_t* pos, u16 frames); typedef int (*bIT_PIT_FALL_PROC)(mActor_name_t pit_fg_item, int ut_x, int ut_z, mActor_name_t fg_item_in_pit); typedef int (*bIT_PIT_FALL_STOP_PROC)(mActor_name_t pit_fg_item, int ut_x, int ut_z, mActor_name_t fg_item_in_pit); diff --git a/include/c_keyframe.h b/include/c_keyframe.h index 5ea08181..93333990 100644 --- a/include/c_keyframe.h +++ b/include/c_keyframe.h @@ -24,7 +24,7 @@ extern "C" { #define cKF_ANIMATION_TRANS_XZ (1 << 0) // Translation on XZ #define cKF_ANIMATION_TRANS_Y (1 << 1) // Translation on Y -#define cKF_ANIMATION_ROT_X (1 << 2) // Rotation on the X axis +#define cKF_ANIMATION_ROT_Y (1 << 2) // Rotation on the X axis enum { cKF_STATE_NONE, @@ -382,10 +382,10 @@ extern void cKF_SkeletonInfo_R_combine_work_set(cKF_SkeletonInfo_R_combine_work_ * @param joint Pointer to the joint data. * @param flag Pointer to the current joint flag. * @param combine Pointer to the combine work set structure. - * @param cwork_num Pointer to the current work layer number. + * @param part_table Pointer to the current part table. */ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_SkeletonInfo_R_combine_work_c* combine, - s8* cwork_num); + s8* part_table); /** * Combines rotation data from multiple animation layers for a joint, modifying it based on animation flags. @@ -393,34 +393,34 @@ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_S * @param joint Pointer to the current joint's rotation data. * @param flag Pointer to the animation flag affecting the current joint. * @param combine Pointer to the combine work set structure containing animation layer data. - * @param cwork_num Pointer to the layer number being processed. + * @param part_table Pointer to the current part table. */ extern void cKF_SkeletonInfo_R_combine_rotation(s16** joint, int* flag, cKF_SkeletonInfo_R_combine_work_c* combine, - s8* cwork_num); + s8* part_table); /** * Combines and plays two sets of animation data, applying translations and rotations from both. * * @param info1 First skeleton info structure to combine. * @param info2 Second skeleton info structure to combine. - * @param flag Pointer to a flag determining the combination behavior. + * @param part_table Pointer to the part table determining the combination behavior. * @return Status of the combination and play operation. */ -extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_SkeletonInfo_R_c* info2, s8* flag); +extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_SkeletonInfo_R_c* info2, s8* part_table); /** * Combines and plays three sets of animation data, applying translations and rotations, and updates playback state. * - * @param arg1 Result of playing first animation. - * @param arg2 Result of playing second animation. - * @param arg3 Result of playing third animation. + * @param state1 Result of playing first animation. + * @param state2 Result of playing second animation. + * @param state3 Result of playing third animation. * @param info1 First skeleton info structure to combine. * @param info2 Second skeleton info structure to combine. * @param info3 Third skeleton info structure to combine. - * @param flag Pointer to a flag determining the combination behavior. + * @param part_table Pointer to the part table determining the combination behavior. */ -extern void cKF_SkeletonInfo_R_T_combine_play(int* arg1, int* arg2, int* arg3, cKF_SkeletonInfo_R_c* info1, - cKF_SkeletonInfo_R_c* info2, cKF_SkeletonInfo_R_c* info3, s8* flag); +extern void cKF_SkeletonInfo_R_T_combine_play(int* state1, int* state2, int* state3, cKF_SkeletonInfo_R_c* info1, + cKF_SkeletonInfo_R_c* info2, cKF_SkeletonInfo_R_c* info3, s8* part_table); /** * Sets base shape translation and rotation for a skeleton info structure. @@ -439,16 +439,16 @@ extern void cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(cKF_SkeletonInfo_R_c /** * Adjusts the base position and correction for a skeleton info structure based on animation flags. * - * @param counter Animation counter to determine the phase of movement. * @param basepos Original base position of the model. * @param correctpos Corrected base position of the model. * @param ybase Base Y angle for rotation. * @param yidle Idle Y angle for rotation. + * @param counter Animation counter to determine the phase of movement. * @param keyframe Skeleton info structure to modify. * @param an_flag Animation flags to determine which corrections to apply. */ -extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(f32 counter, xyz_t* basepos, xyz_t* correctpos, s16 ybase, - s16 yidle, cKF_SkeletonInfo_R_c* keyframe, int animation_flag); +extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(xyz_t* basepos, xyz_t* correctpos, s16 ybase, s16 yidle, + f32 counter, cKF_SkeletonInfo_R_c* keyframe, int animation_flag); /** * Resets animation movement and flags for a skeleton info structure. @@ -462,29 +462,29 @@ extern void cKF_SkeletonInfo_R_AnimationMove_dt(cKF_SkeletonInfo_R_c* keyframe); * * @param base Base position to modify. * @param sbase Base rotation to modify. - * @param move Movement amount to apply. + * @param scale Scaling amount to apply. * @param yidle Y-axis idle angle. * @param keyframe Skeleton info structure containing animation data. */ -extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz_t* move, s16 yidle, +extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t* scale, s16 yidle, cKF_SkeletonInfo_R_c* keyframe); /** * Calculates and applies transformation to world coordinates based on animation data. * - * @param calcx X-coordinate for calculation base. - * @param calcy Y-coordinate for calculation base. - * @param calcz Z-coordinate for calculation base. - * @param base Base position result. - * @param calcp Position calculation parameters. - * @param val Angle value for rotation. - * @param trans Transformation to apply. + * @param calc_pos Calculated position result. + * @param base_pos Base world position. + * @param trans_x X-coordinate for translation. + * @param trans_y Y-coordinate for translation. + * @param trans_z Z-coordinate for translation. + * @param angle_y Angle value for rotation. + * @param scale Scaling factor. * @param keyframe Skeleton info structure containing animation data. - * @param animation_flag Flags determining which transformations to apply. + * @param trans_flag Flags determining which transformations to apply. */ -extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(f32 calcx, f32 calcy, f32 calcz, xyz_t* base, - xyz_t* calcp, s16 val, xyz_t* trans, - cKF_SkeletonInfo_R_c* keyframe, int animation_flag); +extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(xyz_t* calc_pos, const xyz_t* base_pos, f32 trans_x, + f32 trans_y, f32 trans_z, s16 angle_y, const xyz_t* scale, + cKF_SkeletonInfo_R_c* keyframe, int trans_flag); #ifdef __cplusplus } diff --git a/include/dolphin/ai.h b/include/dolphin/ai.h new file mode 100644 index 00000000..79bd974e --- /dev/null +++ b/include/dolphin/ai.h @@ -0,0 +1,50 @@ +#ifndef _DOLPHIN_AI_H_ +#define _DOLPHIN_AI_H_ + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*AISCallback)(u32 count); +typedef void (*AIDCallback)(); + +#define AI_STREAM_START 1 +#define AI_STREAM_STOP 0 + +#define AI_SAMPLERATE_32KHZ 0 +#define AI_SAMPLERATE_48KHZ 1 + +AIDCallback AIRegisterDMACallback(AIDCallback callback); +void AIInitDMA(u32 start_addr, u32 length); +BOOL AIGetDMAEnableFlag(void); +void AIStartDMA(void); +void AIStopDMA(void); +u32 AIGetDMABytesLeft(void); +u32 AIGetDMAStartAddr(void); +u32 AIGetDMALength(void); +BOOL AICheckInit(void); +AISCallback AIRegisterStreamCallback(AISCallback callback); +u32 AIGetStreamSampleCount(void); +void AIResetStreamSampleCount(void); +void AISetStreamTrigger(u32 trigger); +u32 AIGetStreamTrigger(void); +void AISetStreamPlayState(u32 state); +u32 AIGetStreamPlayState(void); +void AISetDSPSampleRate(u32 rate); +u32 AIGetDSPSampleRate(void); +void AISetStreamSampleRate(u32 rate); +u32 AIGetStreamSampleRate(void); +void AISetStreamVolLeft(u8 vol); +u8 AIGetStreamVolLeft(void); +void AISetStreamVolRight(u8 vol); +u8 AIGetStreamVolRight(void); +void AIInit(u8* stack); +void AIReset(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/dolphin/dsp.h b/include/dolphin/dsp.h index e3a5d43f..96e62398 100644 --- a/include/dolphin/dsp.h +++ b/include/dolphin/dsp.h @@ -53,6 +53,7 @@ void DSPHalt(); void DSPSendMailToDSP(u32 mail); u32 DSPCheckMailToDSP(); u32 DSPCheckMailFromDSP(); +u32 DSPReadMailFromDSP(); u32 DSPGetDMAStatus(); DSPTaskInfo* DSPAddTask(DSPTaskInfo* task); diff --git a/include/dolphin/dvd.h b/include/dolphin/dvd.h index aa43e5e4..ad67fd06 100644 --- a/include/dolphin/dvd.h +++ b/include/dolphin/dvd.h @@ -19,89 +19,89 @@ typedef void (*DVDDoneReadCallback)(s32, DVDFileInfo*); typedef void (*DVDOptionalCommandChecker)(DVDCommandBlock* block, DVDLowCallback callback); typedef struct DVDDriveInfo { - u16 revisionLevel; // _00 - u16 deviceCode; // _02 - u32 releaseDate; // _04 - u8 padding[24]; // _08 + u16 revisionLevel; // _00 + u16 deviceCode; // _02 + u32 releaseDate; // _04 + u8 padding[24]; // _08 } DVDDriveInfo; // Struct for DVD information (size 0x20) typedef struct DVDDiskID { - char gameName[4]; // _00 - char company[2]; // _04 - u8 diskNumber; // _06 - u8 gameVersion; // _07 - u8 streaming; // _08 - u8 streamBufSize; // _09, default = 0 - u8 padding[22]; // _0A, all 0s + char gameName[4]; // _00 + char company[2]; // _04 + u8 diskNumber; // _06 + u8 gameVersion; // _07 + u8 streaming; // _08 + u8 streamBufSize; // _09, default = 0 + u8 padding[22]; // _0A, all 0s } DVDDiskID; // Struct for command information (size 0x30). struct DVDCommandBlock { - DVDCommandBlock* next; // _00 - DVDCommandBlock* prev; // _04 - u32 command; // _08 - s32 state; // _0C - u32 offset; // _10 - u32 length; // _14 - void* addr; // _18 - u32 currTransferSize; // _1C - u32 transferredSize; // _20 - DVDDiskID* id; // _24 - DVDCBCallback callback; // _28 - void* userData; // _2C + DVDCommandBlock* next; // _00 + DVDCommandBlock* prev; // _04 + u32 command; // _08 + s32 state; // _0C + u32 offset; // _10 + u32 length; // _14 + void* addr; // _18 + u32 currTransferSize; // _1C + u32 transferredSize; // _20 + DVDDiskID* id; // _24 + DVDCBCallback callback; // _28 + void* userData; // _2C }; // Struct for file information (size 0x3C). // NB: we had this as DVDPlayer previously. struct DVDFileInfo { - DVDCommandBlock cBlock; // _00 - u32 startAddr; // _30 - u32 length; // _34 - DVDCallback callback; // _38 + DVDCommandBlock cBlock; // _00 + u32 startAddr; // _30 + u32 length; // _34 + DVDCallback callback; // _38 }; // Struct for directory information (size 0xC). typedef struct DVDDir { - u32 entryNum; // _00 - u32 location; // _04 - u32 next; // _08 + u32 entryNum; // _00 + u32 location; // _04 + u32 next; // _08 } DVDDir; // Struct for directory entries (size 0xC). typedef struct DVDDirEntry { - u32 entryNum; // _00 - BOOL isDir; // _04 - char* name; // _08 + u32 entryNum; // _00 + BOOL isDir; // _04 + char* name; // _08 } DVDDirEntry; // Struct for handing queues. typedef struct DVDQueue DVDQueue; struct DVDQueue { - DVDQueue* mHead; // _00 - DVDQueue* mTail; // _04 + DVDQueue* mHead; // _00 + DVDQueue* mTail; // _04 }; // DVD Boot information instructions. // Struct 1. typedef struct DVDBB1 { - u32 appLoaderLength; // _00 - void* appLoaderFunc1; // _04 - void* appLoaderFunc2; // _08 - void* appLoaderFunc3; // _0C + u32 appLoaderLength; // _00 + void* appLoaderFunc1; // _04 + void* appLoaderFunc2; // _08 + void* appLoaderFunc3; // _0C } DVDBB1; // Struct 2. typedef struct DVDBB2 { - u32 bootFilePosition; // _00 - u32 FSTPosition; // _04 - u32 FSTLength; // _08 - u32 FSTMaxLength; // _0C - void* FSTAddress; // _10 - u32 userPosition; // _14 - u32 userLength; // _18 - u32 reserved_1C; // _1C + u32 bootFilePosition; // _00 + u32 FSTPosition; // _04 + u32 FSTLength; // _08 + u32 FSTMaxLength; // _0C + void* FSTAddress; // _10 + u32 userPosition; // _14 + u32 userLength; // _18 + u32 reserved_1C; // _1C } DVDBB2; ////////////////////////////////// @@ -143,6 +143,8 @@ s32 DVDGetTransferredSize(DVDFileInfo* fileInfo); DVDDiskID* DVDGetCurrentDiskID(); BOOL DVDCompareDiskID(DVDDiskID* id1, DVDDiskID* id2); DVDLowCallback DVDLowClearCallback(); +BOOL DVDPrepareStreamAsync(DVDFileInfo* fileInfo, u32 length, u32 offset, DVDCallback callback); +s32 DVDCancelStream(DVDCommandBlock* block); BOOL DVDCheckDisk(); @@ -160,36 +162,37 @@ void DVDDumpWaitingQueue(); ////// USEFUL DVD DEFINES //////// // Macro for reading. -#define DVDReadAsync(fileInfo, addr, length, offset, callback) DVDReadAsyncPrio((fileInfo), (addr), (length), (offset), (callback), 2) +#define DVDReadAsync(fileInfo, addr, length, offset, callback) \ + DVDReadAsyncPrio((fileInfo), (addr), (length), (offset), (callback), 2) #define DVDGetFileInfoStatus(fileInfo) DVDGetCommandBlockStatus(&(fileInfo)->cBlock) // Minimum transfer size. #define DVD_MIN_TRANSFER_SIZE 32 // DVD states. -#define DVD_STATE_FATAL_ERROR -1 -#define DVD_STATE_END 0 -#define DVD_STATE_BUSY 1 -#define DVD_STATE_WAITING 2 -#define DVD_STATE_COVER_CLOSED 3 -#define DVD_STATE_NO_DISK 4 -#define DVD_STATE_COVER_OPEN 5 -#define DVD_STATE_WRONG_DISK 6 +#define DVD_STATE_FATAL_ERROR -1 +#define DVD_STATE_END 0 +#define DVD_STATE_BUSY 1 +#define DVD_STATE_WAITING 2 +#define DVD_STATE_COVER_CLOSED 3 +#define DVD_STATE_NO_DISK 4 +#define DVD_STATE_COVER_OPEN 5 +#define DVD_STATE_WRONG_DISK 6 #define DVD_STATE_MOTOR_STOPPED 7 -#define DVD_STATE_PAUSING 8 -#define DVD_STATE_IGNORED 9 -#define DVD_STATE_CANCELED 10 -#define DVD_STATE_RETRY 11 +#define DVD_STATE_PAUSING 8 +#define DVD_STATE_IGNORED 9 +#define DVD_STATE_CANCELED 10 +#define DVD_STATE_RETRY 11 // File info states. #define DVD_FILEINFO_READY 0 -#define DVD_FILEINFO_BUSY 1 +#define DVD_FILEINFO_BUSY 1 // DVD results. -#define DVD_RESULT_GOOD 0 +#define DVD_RESULT_GOOD 0 #define DVD_RESULT_FATAL_ERROR -1 -#define DVD_RESULT_IGNORED -2 -#define DVD_RESULT_CANCELED -3 +#define DVD_RESULT_IGNORED -2 +#define DVD_RESULT_CANCELED -3 #define DVD_AIS_SUCCESS 0 diff --git a/include/dolphin/hw_regs.h b/include/dolphin/hw_regs.h new file mode 100644 index 00000000..13f56cc4 --- /dev/null +++ b/include/dolphin/hw_regs.h @@ -0,0 +1,114 @@ +#ifndef _DOLPHIN_HW_REGS_H_ +#define _DOLPHIN_HW_REGS_H_ + +#ifdef __MWERKS__ +volatile u16 __VIRegs[59] : 0xCC002000; +volatile u32 __PIRegs[12] : 0xCC003000; +volatile u16 __MEMRegs[64] : 0xCC004000; +volatile u16 __DSPRegs[] : 0xCC005000; +volatile u32 __DIRegs[] : 0xCC006000; +volatile u32 __SIRegs[0x100] : 0xCC006400; +volatile u32 __EXIRegs[0x40] : 0xCC006800; +volatile u32 __AIRegs[8] : 0xCC006C00; +#else +#define __VIRegs ((volatile u16*)0xCC002000) +#define __PIRegs ((volatile u32*)0xCC003000) +#define __MEMRegs ((volatile u16*)0xCC004000) +#define __DSPRegs ((volatile u16*)0xCC005000) +#define __DIRegs ((volatile u32*)0xCC006000) +#define __SIRegs ((volatile u32*)0xCC006400) +#define __EXIRegs ((volatile u32*)0xCC006800) +#define __AIRegs ((volatile u32*)0xCC006C00) +#endif + +// Offsets for __VIRegs + +// offsets for __VIRegs[i] +#define VI_VERT_TIMING (0) +#define VI_DISP_CONFIG (1) +#define VI_HORIZ_TIMING_0L (2) +#define VI_HORIZ_TIMING_0U (3) +#define VI_HORIZ_TIMING_1L (4) +#define VI_HORIZ_TIMING_1U (5) +#define VI_VERT_TIMING_ODD (6) +#define VI_VERT_TIMING_ODD_U (7) +#define VI_VERT_TIMING_EVEN (8) +#define VI_VERT_TIMING_EVEN_U (9) + +#define VI_BBI_ODD (10) // burst blanking interval +#define VI_BBI_ODD_U (11) // burst blanking interval +#define VI_BBI_EVEN (12) // burst blanking interval +#define VI_BBI_EVEN_U (13) // burst blanking interval + +#define VI_TOP_FIELD_BASE_LEFT (14) // top in 2d, top of left pic in 3d +#define VI_TOP_FIELD_BASE_LEFT_U (15) // top in 2d, top of left pic in 3d + +#define VI_TOP_FIELD_BASE_RIGHT (16) // top of right pic in 3d +#define VI_TOP_FIELD_BASE_RIGHT_U (17) // top of right pic in 3d + +#define VI_BTTM_FIELD_BASE_LEFT (18) // bottom in 2d, bottom of left pic in 3d +#define VI_BTTM_FIELD_BASE_LEFT_U (19) // bottom in 2d, bottom of left pic in 3d + +#define VI_BTTM_FIELD_BASE_RIGHT (20) // bottom of right pic in 3d +#define VI_BTTM_FIELD_BASE_RIGHT_U (21) // bottom of right pic in 3d + +#define VI_VERT_COUNT (22) // vertical display position +#define VI_HORIZ_COUNT (23) // horizontal display position + +#define VI_DISP_INT_0 (24) // display interrupt 0L +#define VI_DISP_INT_0U (25) // display interrupt 0U +#define VI_DISP_INT_1 (26) // display interrupt 1L +#define VI_DISP_INT_1U (27) // display interrupt 1U +#define VI_DISP_INT_2 (28) // display interrupt 2L +#define VI_DISP_INT_2U (29) // display interrupt 2U +#define VI_DISP_INT_3 (30) // display interrupt 3L +#define VI_DISP_INT_3U (31) // display interrupt 3U + +#define VI_HSW (36) // horizontal scaling width +#define VI_HSR (37) // horizontal scaling register + +#define VI_FCT_0 (38) // filter coefficient table 0L +#define VI_FCT_0U (39) // filter coefficient table 0U +#define VI_FCT_1 (40) // filter coefficient table 1L +#define VI_FCT_1U (41) // filter coefficient table 1U +#define VI_FCT_2 (42) // filter coefficient table 2L +#define VI_FCT_2U (43) // filter coefficient table 2U +#define VI_FCT_3 (44) // filter coefficient table 3L +#define VI_FCT_3U (45) // filter coefficient table 3U +#define VI_FCT_4 (46) // filter coefficient table 4L +#define VI_FCT_4U (47) // filter coefficient table 4U +#define VI_FCT_5 (48) // filter coefficient table 5L +#define VI_FCT_5U (49) // filter coefficient table 5U +#define VI_FCT_6 (50) // filter coefficient table 6L +#define VI_FCT_6U (51) // filter coefficient table 6U + +#define VI_CLOCK_SEL (54) // clock select +#define VI_DTV_STAT (55) // DTV status + +#define VI_WIDTH (56) + +// offsets for __DSPRegs[i] +#define DSP_MAILBOX_IN_HI (0) +#define DSP_MAILBOX_IN_LO (1) +#define DSP_MAILBOX_OUT_HI (2) +#define DSP_MAILBOX_OUT_LO (3) +#define DSP_CONTROL_STATUS (5) + +#define DSP_ARAM_SIZE (9) +#define DSP_ARAM_MODE (11) +#define DSP_ARAM_REFRESH (13) +#define DSP_ARAM_DMA_MM_HI (16) // Main mem address +#define DSP_ARAM_DMA_MM_LO (17) +#define DSP_ARAM_DMA_ARAM_HI (18) // ARAM address +#define DSP_ARAM_DMA_ARAM_LO (19) +#define DSP_ARAM_DMA_SIZE_HI (20) // DMA buffer size +#define DSP_ARAM_DMA_SIZE_LO (21) + +#define DSP_DMA_START_HI (24) // DMA start address +#define DSP_DMA_START_LO (25) +#define DSP_DMA_CONTROL_LEN (27) +#define DSP_DMA_BYTES_LEFT (29) + +#define DSP_DMA_START_FLAG (0x8000) // set to start DSP + +#endif diff --git a/include/dolphin/mtx.h b/include/dolphin/mtx.h index 30f8c18a..b18ae3b2 100644 --- a/include/dolphin/mtx.h +++ b/include/dolphin/mtx.h @@ -7,13 +7,15 @@ extern "C" { #endif +#define MTX_PS + /////////////// TYPE DEFINES /////////////// -#define MTXDegToRad(a) ((a)*0.01745329252f) +#define MTXDegToRad(a) ((a) * 0.01745329252f) typedef struct { - f32 x; - f32 y; - f32 z; + f32 x; + f32 y; + f32 z; } Vec; typedef f32 Mtx34[3][4]; @@ -25,7 +27,7 @@ typedef f32 PSQuaternion[4]; typedef Mtx34 GC_Mtx; // TODO: fix this typedef struct Quaternion { - f32 x, y, z, w; + f32 x, y, z, w; } Quaternion; //////////////////////////////////////////// @@ -50,6 +52,9 @@ void PSMTXScale(GC_Mtx mtx, f32 xS, f32 yS, f32 zS); void PSMTXScaleApply(const GC_Mtx src, GC_Mtx dest, f32 xS, f32 yS, f32 zS); void PSMTXQuat(GC_Mtx mtx, const PSQuaternion* quat); +void PSVECNormalize(const Vec* src, Vec* dst); +void PSMTXMultVec(const GC_Mtx m, const Vec* src, Vec* dst); + //////////////////////////////////////////// //// PAIRED SINGLE MATRIX VEC FUNCTIONS //// @@ -72,15 +77,37 @@ void C_MTXLightOrtho(GC_Mtx mtx, f32 t, f32 b, f32 l, f32 r, f32 scaleS, f32 sca //////////////////////////////////////////// ////////////// MATRIX INLINES ////////////// -static inline void MTXSetPosition(GC_Mtx mtx, const Vec* pos) -{ - mtx[0][3] = pos->x; - mtx[1][3] = pos->y; - mtx[2][3] = pos->z; +static inline void MTXSetPosition(GC_Mtx mtx, const Vec* pos) { + mtx[0][3] = pos->x; + mtx[1][3] = pos->y; + mtx[2][3] = pos->z; } //////////////////////////////////////////// +#ifdef MTX_PS +#define MTXIdentity PSMTXIdentity +#define MTXCopy PSMTXCopy +#define MTXConcat PSMTXConcat +#define MTXConcatArray PSMTXConcatArray +#define MTXTranspose PSMTXTranspose +#define MTXInverse PSMTXInverse +#define MTXInvXpose PSMTXInvXpose + +#define MTXScale PSMTXScale +#define MTXTrans PSMTXTrans + +#define MTXMultVec PSMTXMultVec +#else +#define MTXIdentity C_MTXIdentity +#define MTXCopy C_MTXCopy +#define MTXConcat C_MTXConcat +#define MTXConcatArray C_MTXConcatArray +#define MTXTranspose C_MTXTranspose +#define MTXInverse C_MTXInverse +#define MTXInvXpose C_MTXInvXpose +#endif + #ifdef __cplusplus } #endif diff --git a/include/dolphin/os.h b/include/dolphin/os.h index 7187662d..e925135d 100644 --- a/include/dolphin/os.h +++ b/include/dolphin/os.h @@ -2,6 +2,8 @@ #define _DOLPHIN_OS #include "types.h" +#include "dolphin/os/OSAlloc.h" +#include "dolphin/os/OSCache.h" #include "dolphin/os/OSContext.h" #include "dolphin/os/OSInterrupt.h" #include "dolphin/os/OSMessage.h" @@ -19,47 +21,46 @@ extern void __OSPSInit(); extern void __OSFPRInit(); extern void __OSCacheInit(); -void OSPanic(const char *file, int line, const char *message, ...); +void OSPanic(const char* file, int line, const char* message, ...); void OSVReport(const char* fmt, va_list list); void OSReport(const char* fmt, ...); extern void __OSPSInit(); extern void __OSCacheInit(); -#define OSErrorLine(line, ...) \ - OSPanic(__FILE__, line, __VA_ARGS__) +#define OSErrorLine(line, ...) OSPanic(__FILE__, line, __VA_ARGS__) #ifdef DOLPHIN_DEBUG -#define DOLPHIN_ASSERTLINE(assertion, line) \ - (void) ((assertion) || (OSErrorLine(line, "Failed assertion " #assertion), 0)) -#define DOLPHIN_ASSERT(assertion) \ - (void) ((assertion) || (OSPanic(__FILE__, __LINE__, "Failed assertion " #assertion), 0)) +#define DOLPHIN_ASSERTLINE(assertion, line) \ + (void)((assertion) || (OSErrorLine(line, "Failed assertion " #assertion), 0)) +#define DOLPHIN_ASSERT(assertion) \ + (void)((assertion) || (OSPanic(__FILE__, __LINE__, "Failed assertion " #assertion), 0)) #else #define DOLPHIN_ASSERTLINE(assertion, line) #define DOLPHIN_ASSERT(assertion) #endif -//void OSResetSystem(u32, u32, u32); // goes in reset, but eh +// void OSResetSystem(u32, u32, u32); // goes in reset, but eh void OSInit(void); -#define OS_CONSOLE_RETAIL4 0x00000004 -#define OS_CONSOLE_RETAIL3 0x00000003 -#define OS_CONSOLE_RETAIL2 0x00000002 -#define OS_CONSOLE_RETAIL1 0x00000001 -#define OS_CONSOLE_RETAIL 0x00000000 -#define OS_CONSOLE_DEVHW4 0x10000007 -#define OS_CONSOLE_DEVHW3 0x10000006 -#define OS_CONSOLE_DEVHW2 0x10000005 -#define OS_CONSOLE_DEVHW1 0x10000004 -#define OS_CONSOLE_MINNOW 0x10000003 -#define OS_CONSOLE_ARTHUR 0x10000002 +#define OS_CONSOLE_RETAIL4 0x00000004 +#define OS_CONSOLE_RETAIL3 0x00000003 +#define OS_CONSOLE_RETAIL2 0x00000002 +#define OS_CONSOLE_RETAIL1 0x00000001 +#define OS_CONSOLE_RETAIL 0x00000000 +#define OS_CONSOLE_DEVHW4 0x10000007 +#define OS_CONSOLE_DEVHW3 0x10000006 +#define OS_CONSOLE_DEVHW2 0x10000005 +#define OS_CONSOLE_DEVHW1 0x10000004 +#define OS_CONSOLE_MINNOW 0x10000003 +#define OS_CONSOLE_ARTHUR 0x10000002 #define OS_CONSOLE_PC_EMULATOR 0x10000001 -#define OS_CONSOLE_EMULATOR 0x10000000 +#define OS_CONSOLE_EMULATOR 0x10000000 #define OS_CONSOLE_DEVELOPMENT 0x10000000 -#define OS_CONSOLE_DEVKIT 0x10000000 -#define OS_CONSOLE_TDEVKIT 0x20000000 +#define OS_CONSOLE_DEVKIT 0x10000000 +#define OS_CONSOLE_TDEVKIT 0x20000000 -#define OS_CONSOLE_DEV_MASK 0x10000000 +#define OS_CONSOLE_DEV_MASK 0x10000000 u32 OSGetConsoleType(); #define OS_CONSOLE_IS_DEV() ((OSGetConsoleType() & OS_CONSOLE_DEV_MASK) != 0) diff --git a/include/dolphin/os/OSAlloc.h b/include/dolphin/os/OSAlloc.h index e413f67f..ae2f1cba 100644 --- a/include/dolphin/os/OSAlloc.h +++ b/include/dolphin/os/OSAlloc.h @@ -2,14 +2,31 @@ #define OS_ALLOC_H #ifdef __cplusplus -extern "C" -{ +extern "C" { #endif - void *OSInitAlloc(void *, void *, int); +typedef int OSHeapHandle; + +extern volatile OSHeapHandle __OSCurrHeap; + +void* OSAllocFromHeap(int heap, unsigned long size); +void* OSAllocFixed(void* rstart, void* rend); +void OSFreeToHeap(int heap, void* ptr); +int OSSetCurrentHeap(int heap); +void* OSInitAlloc(void* arenaStart, void* arenaEnd, int maxHeaps); +int OSCreateHeap(void* start, void* end); +void OSDestroyHeap(int heap); +void OSAddToHeap(int heap, void* start, void* end); +long OSCheckHeap(int heap); +unsigned long OSReferentSize(void* ptr); +void OSDumpHeap(int heap); +void OSVisitAllocated(void (*visitor)(void*, unsigned long)); + +#define OSAlloc(size) OSAllocFromHeap(__OSCurrHeap, (size)) +#define OSFree(ptr) OSFreeToHeap(__OSCurrHeap, (ptr)) #ifdef __cplusplus } #endif -#endif \ No newline at end of file +#endif diff --git a/include/dolphin/os/OSFastCast.h b/include/dolphin/os/OSFastCast.h new file mode 100644 index 00000000..8b573249 --- /dev/null +++ b/include/dolphin/os/OSFastCast.h @@ -0,0 +1,124 @@ +#ifndef _DOLPHIN_OS_OSFASTCAST_H +#define _DOLPHIN_OS_OSFASTCAST_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif // ifdef __cplusplus + +/////// FAST CAST DEFINES //////// +// GQR formats. +#define OS_GQR_U8 (0x0004) // GQR 1 +#define OS_GQR_U16 (0x0005) // GQR 2 +#define OS_GQR_S8 (0x0006) // GQR 3 +#define OS_GQR_S16 (0x0007) // GQR 4 + +// GQRs for fast casting. +#define OS_FASTCAST_U8 (2) +#define OS_FASTCAST_U16 (3) +#define OS_FASTCAST_S8 (4) +#define OS_FASTCAST_S16 (5) + +////////////////////////////////// + +/////// FAST CAST INLINES //////// +// Initialise fast casting. +static inline void OSInitFastCast() { +#ifdef __MWERKS__ // clang-format off + asm { + li r3, OS_GQR_U8 + oris r3, r3, OS_GQR_U8 + mtspr 0x392, r3 + li r3, OS_GQR_U16 + oris r3, r3, OS_GQR_U16 + mtspr 0x393, r3 + li r3, OS_GQR_S8 + oris r3, r3, OS_GQR_S8 + mtspr 0x394, r3 + li r3, OS_GQR_S16 + oris r3, r3, OS_GQR_S16 + mtspr 0x395, r3 + } +#endif // clang-format on +} + +// Float to int. +static inline s16 __OSf32tos16(register f32 inF) { + register s16 out; + u32 tmp; + register u32* tmpPtr = &tmp; +#ifdef __MWERKS__ // clang-format off + asm { + psq_st inF, 0(tmpPtr), 0x1, OS_FASTCAST_S16 + lha out, 0(tmpPtr) + } +#endif // clang-format on + + return out; +} + +static inline void OSf32tos16(f32* f, s16* out) { + *out = __OSf32tos16(*f); +} + +static inline u8 __OSf32tou8(register f32 inF) { + register u8 out; + u32 tmp; + register u32* tmpPtr = &tmp; +#ifdef __MWERKS__ // clang-format off + asm { + psq_st inF, 0(tmpPtr), 0x1, OS_FASTCAST_U8 + lbz out, 0(tmpPtr) + } +#endif // clang-format on + + return out; +} + +static inline void OSf32tou8(f32* f, u8* out) { + *out = __OSf32tou8(*f); +} + +static inline s8 __OSf32tos8(register f32 inF) { + register s8 out; + u32 tmp; + register u32* tmpPtr = &tmp; +#ifdef __MWERKS__ // clang-format off + asm { + psq_st inF, 0(tmpPtr), 0x1, OS_FASTCAST_S8 + lbz out, 0(tmpPtr) + extsb out, out + } +#endif // clang-format on + + return out; +} + +static inline void OSf32tos8(f32* f, s8* out) { + *out = __OSf32tos8(*f); +} + +static inline float __OSs16tof32(register s16* s) { + register float f; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f, 0(s), 1, 5 + } +#endif // clang-format on + + return f; +} + +static inline void OSs16tof32(register s16* s, volatile register f32* f) { + *f = __OSs16tof32(s); +} + +////////////////////////////////// + +#ifdef __cplusplus +}; +#endif // ifdef __cplusplus + +#endif diff --git a/include/evw_anime.h b/include/evw_anime.h index 0fdd0686..f8afb6a9 100644 --- a/include/evw_anime.h +++ b/include/evw_anime.h @@ -5,68 +5,74 @@ #include "m_play_h.h" #ifdef __cplusplus -extern "C"{ +extern "C" { #endif #define EVW_COLOR_BUF_MAX 50 enum { - EVW_ANIME_TYPE_SCROLL1, - EVW_ANIME_TYPE_SCROLL2, - EVW_ANIME_TYPE_COLREG_MANUAL, - EVW_ANIME_TYPE_COLREG_LINEAR, - EVW_ANIME_TYPE_COLREG_NONLINEAR, - EVW_ANIME_TYPE_TEXANIME, + EVW_ANIME_TYPE_SCROLL1, + EVW_ANIME_TYPE_SCROLL2, + EVW_ANIME_TYPE_COLREG_MANUAL, + EVW_ANIME_TYPE_COLREG_LINEAR, + EVW_ANIME_TYPE_COLREG_NONLINEAR, + EVW_ANIME_TYPE_TEXANIME, - EVW_ANIME_TYPE_NUM + EVW_ANIME_TYPE_NUM }; +/* sizeof(EVW_ANIME_COL_PRIM) == 0x5 */ typedef struct evw_anime_col_prim_s { - u8 r; - u8 g; - u8 b; - u8 a; - u8 l; + /* 0x00 */ u8 r; + /* 0x01 */ u8 g; + /* 0x02 */ u8 b; + /* 0x03 */ u8 a; + /* 0x04 */ u8 l; } EVW_ANIME_COL_PRIM; +/* sizeof(EVW_ANIME_COL_ENV) == 0x4 */ typedef struct evw_anime_col_env_s { - u8 r; - u8 g; - u8 b; - u8 a; + /* 0x00 */ u8 r; + /* 0x01 */ u8 g; + /* 0x02 */ u8 b; + /* 0x03 */ u8 a; } EVW_ANIME_COL_ENV; +/* sizeof(EVW_ANIME_COLREG) == 0x10 */ typedef struct evw_anime_col_reg_s { - u16 frame_count; /* total frames in the animation */ - u16 key_count; /* number of animation keyframes */ + /* 0x00 */ u16 frame_count; /* total frames in the animation */ + /* 0x02 */ u16 key_count; /* number of animation keyframes */ - EVW_ANIME_COL_PRIM* prim_colors; /* list of primitive colors per-keyframe */ - EVW_ANIME_COL_ENV* env_colors; /* list of environment colors per-keyframe */ + /* 0x04 */ EVW_ANIME_COL_PRIM* prim_colors; /* list of primitive colors per-keyframe */ + /* 0x08 */ EVW_ANIME_COL_ENV* env_colors; /* list of environment colors per-keyframe */ - u16* keyframes; /* list of keyframe frame indices */ + /* 0x0C */ u16* keyframes; /* list of keyframe frame indices */ } EVW_ANIME_COLREG; +/* sizeof(EVW_ANIME_SCROLL) == 0x4 */ typedef struct evw_anime_scroll_s { - s8 x; /* x (s) texture position */ - s8 y; /* y (t) texture position */ - u8 width; /* texture width */ - u8 height; /* texture height */ + /* 0x00 */ s8 x; /* x (s) texture position */ + /* 0x01 */ s8 y; /* y (t) texture position */ + /* 0x02 */ u8 width; /* texture width */ + /* 0x03 */ u8 height; /* texture height */ } EVW_ANIME_SCROLL; +/* sizeof(EVW_ANIME_TEXANIME) == 0x10 */ typedef struct evw_anime_texanime_s { - u16 frame_count; /* total frames in the animation */ - u16 key_count; /* number of animation keyframes */ + /* 0x00 */ u16 frame_count; /* total frames in the animation */ + /* 0x02 */ u16 key_count; /* number of animation keyframes */ - void** texture_tbl; /* list of each texture */ - u8* animation_pattern; /* list of which texture to use per keyframe (runs at 30 FPS) */ + /* 0x04 */ void** texture_tbl; /* list of each texture */ + /* 0x08 */ u8* animation_pattern; /* list of which texture to use per keyframe (runs at 30 FPS) */ - u16* keyframes; /* list of keyframe frame indices */ + /* 0x0C */ u16* keyframes; /* list of keyframe frame indices */ } EVW_ANIME_TEXANIME; +/* sizeof(EVW_ANIME_DATA) == 0x8 */ typedef struct evw_anime_s { - s8 segment; /* Negative segments signal the end of the animation data array */ - s16 type; - void* data_p; + /* 0x00 */ s8 segment; /* Negative segments signal the end of the animation data array */ + /* 0x02 */ s16 type; + /* 0x04 */ void* data_p; } EVW_ANIME_DATA; extern void Evw_Anime_Set(GAME_PLAY* play, EVW_ANIME_DATA* evw_anime_data); @@ -75,4 +81,4 @@ extern void Evw_Anime_Set(GAME_PLAY* play, EVW_ANIME_DATA* evw_anime_data); } #endif -#endif \ No newline at end of file +#endif diff --git a/include/jaudio_NES/aictrl.h b/include/jaudio_NES/aictrl.h new file mode 100644 index 00000000..77631ce8 --- /dev/null +++ b/include/jaudio_NES/aictrl.h @@ -0,0 +1,36 @@ +#ifndef AICTRL_H +#define AICTRL_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern u32 UNIVERSAL_DACCOUNTER; +extern u32 JAC_VFRAME_COUNTER; + +typedef enum _MixMode { + MixMode_Mono, + MixMode_MonoWide, + MixMode_Extra, + MixMode_Interleave, + + MixMode_Num +} MixMode; + +typedef s16* (*MixCallback)(s32); + +extern void Jac_HeapSetup(void* pHeap, s32 size); +extern void* OSAlloc2(u32 size); +extern void Jac_Init(void); +extern MixCallback Jac_GetMixcallback(u8* mixmode); +extern void Jac_RegisterMixcallback(MixCallback mixcallback, u8 mixmode); +extern void Jac_VframeWork(void); +extern void Jac_UpdateDAC(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/astest.h b/include/jaudio_NES/astest.h new file mode 100644 index 00000000..14b9a212 --- /dev/null +++ b/include/jaudio_NES/astest.h @@ -0,0 +1,9 @@ +#ifndef ASTEST_H +#define ASTEST_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +extern void CopyStc(commonch* dstStc, commonch* srcStc); + +#endif diff --git a/include/jaudio_NES/audiocommon.h b/include/jaudio_NES/audiocommon.h new file mode 100644 index 00000000..4012025c --- /dev/null +++ b/include/jaudio_NES/audiocommon.h @@ -0,0 +1,221 @@ +#ifndef AUDIOCOMMON_H +#define AUDIOCOMMON_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#define S16_MIN (-0x8000) +#define S16_MAX (0x7FFF) + +#define AUDIO_ARAM_SIZE 0x400000 /* 4MB */ +#define AUDIO_ARAM_HEAP_SIZE 0xC000 + +#define AUDIO_GROUP_MAX 5 +#define AUDIO_SUBTRACK_NUM 16 +#define AUDIO_NOTE_MAX 128 + +#define AUDIO_TATUMS_PER_BEAT 48 + +#define AUDIO_GROUP_ALL_SUBTRACKS (0xFFFF) + +#define AUDIO_MUTE_FLAG_STOP_SAMPLES (1 << 3) +#define AUDIO_MUTE_FLAG_STOP_SUBTRACK (1 << 4) +#define AUDIO_MUTE_FLAG_SOFTEN (1 << 5) +#define AUDIO_MUTE_FLAG_STOP_NOTE (1 << 6) +#define AUDIO_MUTE_FLAG_STOP_SCRIPT (1 << 7) + +#define NA_MAKE_COMMAND(a0, a1, a2, a3) \ + (u32)((((a0) & 0xFF) << 24) | (((a1) & 0xFF) << 16) | (((a2) & 0xFF) << 8) | (((a3) & 0xFF) << 0)) + +typedef enum DSPBUF_EVENTS { + DSPBUF_EVENT_INIT = 0, + DSPBUF_EVENT_FRAME_END = 1, + DSPBUF_EVENT_MIX = 2, +} DSPBUF_EVENTS; + +typedef enum SampleMedium { + /* 0 */ MEDIUM_RAM, + /* 1 */ MEDIUM_UNK, + /* 2 */ MEDIUM_CART, + /* 3 */ MEDIUM_DISK_DRIVE, + /* 5 */ MEDIUM_RAM_UNLOADED = 5 +} SampleMedium; + +typedef enum AudioCacheType { + /* 0 */ CACHE_TEMPORARY, + /* 1 */ CACHE_PERSISTENT, + /* 2 */ CACHE_EITHER, + /* 3 */ CACHE_PERMANENT +} AudioCacheType; + +typedef enum AudioCacheLoadType { + /* 0 */ CACHE_LOAD_PERMANENT, + /* 1 */ CACHE_LOAD_PERSISTENT, + /* 2 */ CACHE_LOAD_TEMPORARY, + /* 3 */ CACHE_LOAD_EITHER, + /* 4 */ CACHE_LOAD_EITHER_NOSYNC +} AudioCacheLoadType; + +typedef enum AudioLoadStatus { + /* 0 */ LOAD_STATUS_NOT_LOADED, + /* 1 */ LOAD_STATUS_IN_PROGRESS, + /* 2 */ LOAD_STATUS_COMPLETE, + /* 3 */ LOAD_STATUS_DISCARDABLE, + /* 4 */ LOAD_STATUS_MAYBE_DISCARDABLE, + /* 5 */ LOAD_STATUS_PERMANENT +} AudioLoadStatus; + +typedef enum AdsrStatus { + /* 0 */ ADSR_STATUS_DISABLED, + /* 1 */ ADSR_STATUS_INITIAL, + /* 2 */ ADSR_STATUS_START_LOOP, + /* 3 */ ADSR_STATUS_LOOP, + /* 4 */ ADSR_STATUS_FADE, + /* 5 */ ADSR_STATUS_HANG, + /* 6 */ ADSR_STATUS_DECAY, + /* 7 */ ADSR_STATUS_RELEASE, + /* 8 */ ADSR_STATUS_SUSTAIN +} AdsrStatus; + +typedef enum PortamentoMode { + /* 0 */ PORTAMENTO_MODE_OFF, + /* 1 */ PORTAMENTO_MODE_1, + /* 2 */ PORTAMENTO_MODE_2, + /* 3 */ PORTAMENTO_MODE_3, + /* 4 */ PORTAMENTO_MODE_4, + /* 5 */ PORTAMENTO_MODE_5, + /* 6 */ PORTAMENTO_MODE_6, + /* 7 */ PORTAMENTO_MODE_7, + /* 8 */ PORTAMENTO_MODE_8, // might be PORTAMENTO_MODE_NUM +} PortamentoMode; + +typedef enum SampleBankTableType { + /* 0 */ SEQUENCE_TABLE, + /* 1 */ BANK_TABLE, + /* 2 */ WAVE_TABLE +} SampleBankTableType; + +#define VOICE_TYPE_PERCUSSION 0 +#define VOICE_TYPE_SOUND_EFF 1 +#define VOICE_TYPE_INSTRUMENT_START 2 + +#define AUDIO_SWEEP_IS_SPECIAL(s) ((s).mode & 0x80) +#define AUDIO_SWEEP_MODE(s) ((s).mode & ~0x80) + +#define AUDIO_NOTE_RELEASE (1 << 0) +#define AUDIO_NOTE_SAMPLE_NOTES (1 << 1) + +#define AUDIOCMD_ALL_GROUPS 0xFF +#define AUDIOCMD_ALL_SUBTRACKS 0xFF + +typedef enum GroupState { + /* 0 */ GROUP_STATE_0, + /* 1 */ GROUP_STATE_FADE_IN, + /* 2 */ GROUP_STATE_FADE_OUT +} GroupState; + +/* Most of these are from the MM decomp */ +typedef enum AudioCmd { + /* 0x00 */ AUDIOCMD_NOOP, + + // SubTrack Commands + /* 0x01 */ AUDIOCMD_OP_SUB_SET_VOL_SCALE, + /* 0x02 */ AUDIOCMD_OP_SUB_SET_VOL, + /* 0x03 */ AUDIOCMD_OP_SUB_SET_PAN, + /* 0x04 */ AUDIOCMD_OP_SUB_SET_FREQ_SCALE, + /* 0x05 */ AUDIOCMD_OP_SUB_SET_REVERB_VOLUME, + /* 0x06 */ AUDIOCMD_OP_SUB_SET_PORT, + /* 0x07 */ AUDIOCMD_OP_SUB_SET_PAN_WEIGHT, + /* 0x08 */ AUDIOCMD_OP_SUB_SET_MUTE, + /* 0x09 */ AUDIOCMD_OP_SUB_SET_MUTE_FLAGS, + /* 0x0A */ AUDIOCMD_OP_SUB_SET_VIBRATO_DEPTH, + /* 0x0B */ AUDIOCMD_OP_SUB_SET_VIBRATO_RATE, + /* 0x0C */ AUDIOCMD_OP_SUB_SET_COMB_FILTER_SIZE, + /* 0x0D */ AUDIOCMD_OP_SUB_SET_COMB_FILTER_GAIN, + /* 0x0E */ AUDIOCMD_OP_SUB_SET_STEREO, + /* 0x0F */ AUDIOCMD_OP_SUB_SET_SET_START_POS, + /* 0x10 */ AUDIOCMD_OP_SUB_SET_SFX_STATE, + /* 0x11 */ AUDIOCMD_OP_SUB_SET_REVERB_INDEX, + /* 0x12 */ AUDIOCMD_OP_SUB_SET_SURROUND_EFFECT_INDEX, + /* 0x13 */ AUDIOCMD_OP_SUB_SET_FILTER, + /* 0x14 */ AUDIOCMD_OP_SUB_SET_GAIN, + /* 0x15 */ AUDIOCMD_OP_SUB_SET_TRANSPOSITION, + + // Group Commands + /* 0x41 */ AUDIOCMD_OP_GRP_FADE_VOLUME_SCALE = 0x41, + /* 0x46 */ AUDIOCMD_OP_GRP_SET_PORT = 0x46, + /* 0x47 */ AUDIOCMD_OP_GRP_SET_TEMPO, + /* 0x48 */ AUDIOCMD_OP_GRP_SET_TRANSPOSITION, + /* 0x49 */ AUDIOCMD_OP_GRP_CHANGE_TEMPO, + /* 0x4A */ AUDIOCMD_OP_GRP_FADE_TO_SET_VOLUME, + /* 0x4B */ AUDIOCMD_OP_GRP_FADE_TO_SCALED_VOLUME, + /* 0x4C */ AUDIOCMD_OP_GRP_RESET_VOLUME, + /* 0x4D */ AUDIOCMD_OP_GRP_SET_BEND, + /* 0x4E */ AUDIOCMD_OP_GRP_CHANGE_TEMPO_TICKS, + + // System Commands + /* 0x81 */ AUDIOCMD_PRELOAD_SEQ = 0x81, + /* 0x82 */ AUDIOCMD_START_SEQ, + /* 0x83 */ AUDIOCMD_STOP_SEQ, + /* 0x85 */ AUDIOCMD_START_SEQ_SKIP = 0x85, + /* 0x90 */ AUDIOCMD_SET_GROUP_MASK = 0x90, + + /* 0xE0 */ AUDIOCMD_SET_PERC_BANK = 0xE0, + /* 0xE1 */ AUDIOCMD_SET_EFFECT_BANK, + /* 0xE2 */ AUDIOCMD_SET_VOICE_BANK, + /* 0xE3 */ AUDIOCMD_CLEAR_STAY_CACHE, + /* 0xE4 */ AUDIOCMD_SET_CALLBACK, + /* 0xE5 */ AUDIOCMD_SET_EXTERNAL_POINTER, + /* 0xE6 */ AUDIOCMD_SET_DELAY_LINE_PARAM, + + /* 0xF0 */ AUDIOCMD_SET_SOUND_MODE = 0xF0, + /* 0xF1 */ AUDIOCMD_MUTE, + /* 0xF2 */ AUDIOCMD_UNMUTE, + /* 0xF3 */ AUDIOCMD_LOAD_VOICE_INSTRUMENT, + /* 0xF4 */ AUDIOCMD_PRELOADWAVE_BG, + /* 0xF5 */ AUDIOCMD_PRELOADBANK_BG, + /* 0xF6 */ AUDIOCMD_FLUSH_BANKS, + /* 0xF8 */ AUDIOCMD_SYS_STOP_PROCESSING = 0xF8, + /* 0xF9 */ AUDIOCMD_RESET_AUDIO_HEAP, + /* 0xFA */ AUDIOCMD_MAIN_GROUP_SUBPORT_CMD, + /* 0xFB */ AUDIOCMD_SET_VFRAME_CALLBACK, + /* 0xFC */ AUDIOCMD_PRELOADSEQ_BG, + /* 0xFD */ AUDIOCMD_MAIN_GROUP_SET_FREQ_SCALE, + /* 0xFE */ AUDIOCMD_FORCE_STOP_ALL_GROUPS, + /* 0xFF */ AUDIOCMD_MAIN_GROUP_SET_VOL_SCALE +} AudioCmd; + +typedef enum SeqCmd { + SEQCMD_BRANCH_REL_NOT_EQ_ZERO = 0xF2, + SEQCMD_BRANCH_REL_EQ_ZERO = 0xF3, + SEQCMD_BRANCH_REL = 0xF4, + SEQCMD_BRANCH_ABS_GREQ_ZERO = 0xF5, + SEQCMD_BREAK = 0xF6, + SEQCMD_LOOP_END = 0xF7, + SEQCMD_LOOP = 0xF8, + SEQCMD_BRANCH_ABS_NOT_EQ_ZERO = 0xF9, + SEQCMD_BRANCH_ABS_EQ_ZERO = 0xFA, + SEQCMD_BRANCH_ABS = 0xFB, + SEQCMD_CALL = 0xFC, + SEQCMD_DELAY_N_FRAMES = 0xFD, + SEQCMD_DELAY_1_FRAME = 0xFE, + SEQCMD_STOP_SCRIPT = 0xFF, +} SeqCmd; + +typedef enum AUDIO_CALLBACKS { + /* 0x00 */ AUDIO_CALLBACK_SEQ_0, + /* 0x01 */ AUDIO_CALLBACK_SEQ_1, + /* 0x02 */ AUDIO_CALLBACK_SEQ_2, + /* 0x03 */ AUDIO_CALLBACK_SEQ_3, + /* 0xFE */ AUDIO_CALLBACK_DACOUT = 0xFE, + /* 0xFF */ AUDIO_CALLBACK_SOUND +} AUDIO_CALLBACKS; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/audioconst.h b/include/jaudio_NES/audioconst.h new file mode 100644 index 00000000..d131aec1 --- /dev/null +++ b/include/jaudio_NES/audioconst.h @@ -0,0 +1,17 @@ +#ifndef AUDIOCONST_H +#define AUDIOCONST_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +typedef struct ALGlobalsConst_ { + s8 maxChan; + s16 timeBase; + s32 acmdBufSize; + s32 fixSize; + s32 ememSize; +} ALGlobalsConst; + +extern ALGlobalsConst AGC; + +#endif diff --git a/include/jaudio_NES/audioheaders.h b/include/jaudio_NES/audioheaders.h new file mode 100644 index 00000000..ae6f8378 --- /dev/null +++ b/include/jaudio_NES/audioheaders.h @@ -0,0 +1,13 @@ +#ifndef AUDIOHEADERS_H +#define AUDIOHEADERS_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +extern ArcHeader AudioseqHeaderStart; +extern ArcHeader AudiobankHeaderStart; +extern ArcHeader AudiowaveHeaderStart; +extern ArcHeader AudiodataHeaderStart; +extern u16 AudiomapHeaderStart[]; + +#endif diff --git a/include/jaudio_NES/audiomacro.h b/include/jaudio_NES/audiomacro.h new file mode 100644 index 00000000..508b6b37 --- /dev/null +++ b/include/jaudio_NES/audiomacro.h @@ -0,0 +1,9 @@ +#ifndef AUDIOMACRO_H +#define AUDIOMACRO_H + +#include "types.h" +#include "jaudio_NES/sub_sys.h" + +#define AUDIOCMD_RESET_AUDIO_HEAP_CMD(spec_id) Nap_SetS32(NA_MAKE_COMMAND(AUDIOCMD_RESET_AUDIO_HEAP, 0, 0, 0), spec_id) + +#endif diff --git a/include/jaudio_NES/audiostruct.h b/include/jaudio_NES/audiostruct.h new file mode 100644 index 00000000..feb2e5da --- /dev/null +++ b/include/jaudio_NES/audiostruct.h @@ -0,0 +1,938 @@ +#ifndef AUDIOSTRUCT_H +#define AUDIOSTRUCT_H + +#include "types.h" +#include "jaudio_NES/audiocommon.h" +#include "PR/abi.h" +#include "libultra/libultra.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct chnode_ chnode; +typedef struct link_ link; + +/* sizeof(struct link_) == 0x10 */ +struct link_ { + /* 0x00 */ link* next; + /* 0x04 */ link* prev; + union { + /* 0x08 */ s32 numAfter; /* when link is head */ + /* 0x08 */ void* pData; /* when link is node */ + }; + /* 0x0C */ chnode* pNode; +}; + +/* sizeof(struct chnode_) == 0x40 */ +struct chnode_ { + /* 0x00 */ link freeList; + /* 0x10 */ link releaseList; + /* 0x20 */ link relwaitList; + /* 0x30 */ link useList; +}; + +/* forward declared */ +typedef struct note_ note; +typedef struct channel_ channel; +typedef struct group_ group; + +/* sizeof(struct AudioPort_) == 0x8 */ +typedef struct AudioPort_ { + union { + struct { + /* 0x00 */ u8 opcode; + /* 0x01 */ u8 arg0; + /* 0x02 */ u8 arg1; + /* 0x03 */ u8 arg2; + } command; + /* 0x00 */ u32 raw_cmd; + }; + union audioparam_ { + /* 0x04 */ s8 asS8; + /* 0x04 */ u8 asU8; + /* 0x04 */ s16 asS16; + /* 0x04 */ u16 asU16; + /* 0x04 */ u32 asU32; + /* 0x04 */ s32 asS32; + /* 0x04 */ f32 asF32; + /* 0x04 */ void* asVoidPtr; + } param; +} AudioPort; + +/* sizeof(ALHeap) == 0x14 */ +typedef struct ALHeap { + /* 0x00 */ u8* base; + /* 0x04 */ u8* current; + /* 0x08 */ int length; + /* 0x0C */ u32 count; + /* 0x10 */ u8* last; +} ALHeap; + +/* sizeof(ArcEntry) == 0x10 */ +typedef struct ArcEntry_ { + /* 0x00 */ u32 addr; + /* 0x04 */ size_t size; + /* 0x08 */ s8 medium; + /* 0x09 */ s8 cacheType; + /* 0x0A */ s16 param0; + /* 0x0C */ s16 param1; + /* 0x0E */ s16 param2; +} ArcEntry; + +/* sizeof(ArcHeader) == [0x10, 0x10+entries*0x10] */ +typedef struct ArcHeader_ { + /* 0x00 */ s16 numEntries; + /* 0x02 */ s16 _02; + /* 0x04 */ u8* pData; + /* 0x08 */ u8 copy; + /* 0x09 */ u8 pad[7]; + /* 0x10 */ ArcEntry entries[]; /* variable size */ +} ArcHeader; + +/* sizeof(adpcmloop) == 0x10|0x30*/ +typedef struct adpcmloop_ { + /* 0x00 */ u32 loop_start; + /* 0x04 */ u32 loop_end; + /* 0x08 */ u32 count; + /* 0x0C */ u32 sample_end; + /* 0x10 */ s16 predictor_state[16]; /* exists count > 0*/ +} adpcmloop; + +/* sizeof(adpcmbook) == [0x8, 0x8+n]*/ +typedef struct adpcmbook_ { + /* 0x00 */ s32 order; + /* 0x04 */ s32 n_predictors; + /* 0x08 */ s16 codebook[0]; /* variable length */ +} adpcmbook; + +typedef struct smzwavetable_ { + /* 0x00 */ u32 bit31 : 1; + /* 0x00 */ u32 codec : 3; + /* 0x00 */ u32 medium : 2; + /* 0x00 */ u32 bit26 : 1; + /* 0x00 */ u32 is_relocated : 1; + /* 0x00 */ u32 size : 24; + /* 0x04 */ u8* sample; + /* 0x08 */ adpcmloop* loop; + /* 0x0C */ adpcmbook* book; +} smzwavetable; + +/* sizeof(wtstr) == 0x08 */ +typedef struct wtstr_ { + /* 0x00 */ smzwavetable* wavetable; + /* 0x04 */ f32 tuning; +} wtstr; + +/* sizeof(phase) == 0x01 */ +typedef struct phase_ { + union { + struct { + /* 0x00 */ u8 _unused : 2; + /* 0x00 */ u8 type : 2; + /* 0x00 */ u8 strong_right : 1; + /* 0x00 */ u8 strong_left : 1; + /* 0x00 */ u8 strong_reverb_right : 1; + /* 0x00 */ u8 strong_reverb_left : 1; + }; + /* 0x00 */ u8 asU8; + }; +} phase; + +/* sizeof(sweep) == 0x0C */ +typedef struct sweep_ { + /* 0x00 */ u8 mode; + /* 0x02 */ u16 current; + /* 0x04 */ u16 speed; + /* 0x08 */ f32 extent; +} sweep; + +/* sizeof(vibparam) == 0x0E */ +typedef struct vibparam_ { + /* 0x00 */ u16 rate_start; + /* 0x02 */ u16 depth_start; + /* 0x04 */ u16 rate_target; + /* 0x06 */ u16 depth_target; + /* 0x08 */ u16 rate_change_delay; + /* 0x0A */ u16 depth_change_delay; + /* 0x0C */ u16 delay; +} vibparam; + +/* sizeof(tmtable) == 0x1C */ +typedef struct tmtable_ { + /* 0x00 */ vibparam* vibrato_params; + /* 0x04 */ u32 time; + /* 0x08 */ s16* curve; + /* 0x0C */ f32 depth; + /* 0x10 */ f32 rate; + /* 0x14 */ u8 active; + /* 0x16 */ u16 rate_change_timer; + /* 0x18 */ u16 depth_change_timer; + /* 0x1A */ u16 delay; +} tmtable; + +/* sizeof(envdat) == 0x04 */ +typedef struct envdat_ { + /* 0x00 */ s16 delay; + /* 0x02 */ s16 value; +} envdat; + +/* sizeof(envp) == 0x20 */ +typedef struct envp_ { + /* 0x00 */ u8 unused : 1; + /* 0x00 */ u8 hang : 1; + /* 0x00 */ u8 decay : 1; + /* 0x00 */ u8 release : 1; + /* 0x00 */ u8 status : 4; + + /* 0x01 */ u8 envelope_idx; + /* 0x02 */ s16 delay; + /* 0x04 */ f32 sustain; + /* 0x08 */ f32 velocity; + /* 0x0C */ f32 fadeout_velocity; + /* 0x10 */ f32 current; + /* 0x14 */ f32 target; + /* 0x18 */ f32 _18; + /* 0x1C */ envdat* pEnvData; +} envp; + +/* sizeof(env) == 0x08 */ +typedef struct env_ { + /* 0x00 */ u8 decay_idx; + /* 0x01 */ u8 sustain; + /* 0x04 */ envdat* envelope; +} env; + +/* sizeof(commonch) == 0x20 */ +typedef struct commonch_ { + /* 0x00 */ vu8 enabled : 1; + /* 0x00 */ u8 needs_init : 1; + /* 0x00 */ u8 finished : 1; + /* 0x00 */ u8 unused : 1; + /* 0x00 */ u8 strong_right : 1; + /* 0x00 */ u8 strong_left : 1; + /* 0x00 */ u8 strong_reverb_right : 1; + /* 0x00 */ u8 storng_reverb_left : 1; + + /* 0x01 */ u8 reverb_idx : 3; + /* 0x01 */ u8 book_ofs : 2; + /* 0x01 */ u8 is_synth_wave : 1; + /* 0x01 */ u8 has_two_parts : 1; + /* 0x01 */ u8 use_haas_effect : 1; + + /* 0x02 */ u8 gain; + /* 0x03 */ u8 haas_effect_left_delay_size; + /* 0x04 */ u8 haas_effect_right_delay_size; + /* 0x05 */ u8 target_reverb_volume; + /* 0x06 */ u8 harmonic_idx_cur_and_prev; + /* 0x07 */ u8 comb_filter_size; + /* 0x08 */ u16 target_volume_left; + /* 0x0A */ u16 target_volume_right; + /* 0x0C */ u16 frequency_fixed_point; + /* 0x0E */ u16 comb_filter_gain; + union { + /* 0x10 */ wtstr* tuned_sample; + /* 0x10 */ s16* wave_sample_addr; // for synth waves + }; + /* 0x14 */ s16* filter; + /* 0x18 */ u8 _18; + /* 0x19 */ u8 surround_effect_idx; + /* 0x1A */ u8 _1A; + /* 0x1B */ u8 _1B[4]; +} commonch; + +/* TODO: see if this has a name anywhere */ +/* sizeof(synthparams) == 0x2E0 */ +typedef struct synthparams_ { + /* 0x000 */ s16 adpcm_state[16]; + /* 0x020 */ s16 final_resample_state[16]; + /* 0x040 */ s16 filter_state[32]; + /* 0x080 */ s16 unused_state[16]; + /* 0x0A0 */ s16 haas_effect_delay_state[32]; + /* 0x0E0 */ s16 comb_filter_state[128]; + /* 0x1E0 */ s16 surround_effect_state[128]; +} synthparams; + +/* sizeof(driverch) == 0x20 */ +typedef struct driverch_ { + /* 0x00 */ u8 at_loop_point : 1; + /* 0x00 */ u8 stop_loop : 1; + /* 0x01 */ u8 sample_dma_idx; + /* 0x02 */ u8 prev_haas_effect_left_delay_size; + /* 0x03 */ u8 prev_haas_effect_right_delay_size; + /* 0x04 */ u8 cur_reverb_vol; + /* 0x05 */ u8 num_parts; + /* 0x06 */ u8 comb_filter_needs_init; + /* 0x07 */ u8 vel_conv_table_idx; + /* 0x08 */ u16 sample_pos_fractional_part; + /* 0x0A */ u16 sound_effect_gain; + /* 0x0C */ s32 sample_pos_integer_part; + /* 0x10 */ synthparams* synth_params; + /* 0x14 */ s16 current_volume_left; + /* 0x16 */ s16 current_volume_right; + /* 0x18 */ u8 _18[8]; // unused? +} driverch; + +/* TODO: madeup name, see if there's an exposde one */ +/* sizeof(playbackparams) == 0x18 */ +typedef struct playbackparams_ { + /* 0x00 */ u8 target_reverb_volume; + /* 0x01 */ u8 gain; + /* 0x02 */ u8 pan; + /* 0x03 */ u8 surround_effect_idx; + /* 0x04 */ phase stereo_phase; + /* 0x05 */ u8 comb_filter_size; + /* 0x06 */ u16 comb_filter_gain; + /* 0x08 */ f32 frequency_scale; + /* 0x0C */ f32 velocity; + /* 0x10 */ s16* filter; + /* 0x14 */ s16* filter_buf; +} playbackparams; + +/* TODO: madeup name, see if there's an exposed one */ +/* sizeof(playbackch) == 0xA0 */ +typedef struct playbackch_ { + /* 0x00 */ u8 priority; + /* 0x01 */ u8 wave_id; + /* 0x02 */ u8 harmonic_index; + /* 0x03 */ u8 bank_id; + /* 0x04 */ u8 status; + /* 0x05 */ u8 stereo_headset_effects; + /* 0x06 */ s16 adsr_volume_scale_unused; + /* 0x08 */ f32 portamento_frequency_scale; + /* 0x0C */ f32 vibrato_frequency_scale; + /* 0x10 */ note* previous_parent_note; + /* 0x14 */ note* current_parent_note; + /* 0x18 */ note* wanted_parent_note; + /* 0x1C */ playbackparams params; + /* 0x34 */ envp adsr_envp; + /* 0x54 */ sweep portamento_sweep; + /* 0x60 */ tmtable vibrato_tmtable; + /* 0x7C */ s32 _7C; + /* 0x80 */ u8 _80; + /* 0x84 */ u32 start_sample_pos; + /* 0x88 */ u8 _88[0x18]; +} playbackch; + +/* sizeof(channel) == 0x100 */ +struct channel_ { + /* 0x00 */ link link; + /* 0x10 */ driverch driver_ch; + /* 0x30 */ playbackch playback_ch; + /* 0xD0 */ commonch common_ch; + /* 0xF0 */ u8 _F0[0x10]; +}; + +/* sizeof(drvparam) == 0x1C */ +typedef struct drvparam_ { + /* 0x00 */ u8 _00; + /* 0x01 */ u8 _01; + /* 0x02 */ u8 _02; + /* 0x03 */ u8 _03; + /* 0x04 */ phase phase; + /* 0x08 */ f32 pitch; + /* 0x0C */ f32 volume; + /* 0x10 */ int _10; + /* 0x14 */ int _14; + /* 0x18 */ u8 _18; + /* 0x19 */ u8 _19; + /* 0x1A */ u16 _1A; +} drvparam; + +/* sizeof(voicetable) == 0x20 */ +typedef struct voicetable_ { + /* 0x00 */ u8 is_relocated; + /* 0x01 */ u8 normal_range_low; + /* 0x02 */ u8 normal_range_high; + /* 0x03 */ u8 adsr_decay_idx; + /* 0x04 */ envdat* envelope; + /* 0x08 */ wtstr low_pitch_tuned_sample; + /* 0x10 */ wtstr normal_pitch_tuned_sample; + /* 0x18 */ wtstr high_pitch_tuned_sample; +} voicetable; + +/* sizeof(percvoicetable) == 0x10 */ +typedef struct percvoicetable_ { + /* 0x00 */ u8 adsr_decay_idx; + /* 0x01 */ u8 pan; + /* 0x02 */ u8 is_relocated; + /* 0x04 */ wtstr tuned_sample; + /* 0x0C */ envdat* envelope; +} percvoicetable; + +/* sizeof(veffvoicetable) == 0x08 */ +typedef struct veffvoicetable_ { + /* 0x00 */ wtstr tuned_sample; +} veffvoicetable; + +/* sizeof(voiceinfo) == 0x14 */ +typedef struct voiceinfo_ { + /* 0x00 */ u8 num_instruments; + /* 0x01 */ u8 num_drums; + /* 0x02 */ u8 wave_bank_id0; + /* 0x03 */ u8 wave_bank_id1; + /* 0x04 */ u16 num_sfx; + /* 0x08 */ voicetable** instruments; + /* 0x0C */ percvoicetable** percussion; + /* 0x10 */ veffvoicetable* effects; +} voiceinfo; + +/* sizeof(delayparam) == 0x1C */ +typedef struct delayparam_ { + /* 0x00 */ s16 n_samples_after_downsampling; + /* 0x02 */ s16 n_samples; + /* 0x04 */ s16* to_down_sample_left; + /* 0x08 */ s16* to_down_sample_right; + /* 0x0C */ s32 start_pos; + /* 0x10 */ s16 size; + /* 0x12 */ s16 wrapped_size; + /* 0x14 */ u16 load_resample_pitch; + /* 0x16 */ u16 save_resample_pitch; + /* 0x18 */ u16 save_resample_num_samples; +} delayparam; + +/* sizeof(delay) == 0x2D0 */ +typedef struct delay_ { + /* 0x000 */ u8 resample_flags; + /* 0x001 */ u8 use_reverb; + /* 0x002 */ u8 frames_to_ignore; + /* 0x003 */ u8 cur_frame; + /* 0x004 */ u8 downsample_rate; + /* 0x005 */ s8 mix_reverb_idx; + /* 0x006 */ u16 delay_num_samples; + /* 0x008 */ s16 mix_reverb_strength; + /* 0x00A */ s16 volume; + /* 0x00C */ u16 decay_ratio; + /* 0x00E */ u16 downsample_pitch; + /* 0x010 */ s16 leak_rtl; + /* 0x012 */ s16 leak_ltl; + /* 0x014 */ u16 sub_delay; + /* 0x016 */ s16 sub_volume; + /* 0x018 */ u8 resample_effect_on; + /* 0x019 */ s8 resample_effect_extra_samples; + /* 0x01A */ u16 resample_effect_load_unk; + /* 0x01C */ u16 resample_effect_save_unk; + /* 0x01E */ u8 delay_num_samples_after_downsampling; + /* 0x020 */ s32 next_reverb_buf_pos; + /* 0x024 */ s32 delay_num_samples_unk; + /* 0x028 */ s16* left_reverb_buf; + /* 0x02C */ s16* right_reverb_buf; + /* 0x030 */ s16* left_load_resample_buf; + /* 0x034 */ s16* right_load_resample_buf; + /* 0x038 */ s16* left_save_resample_buf; + /* 0x03C */ s16* right_save_resample_buf; + /* 0x040 */ delayparam params[2][AUDIO_GROUP_MAX]; + /* 0x158 */ delayparam sub_params[2][AUDIO_GROUP_MAX]; + /* 0x270 */ s16* filter_left; + /* 0x274 */ s16* filter_right; + /* 0x278 */ s16* filter_left_init; + /* 0x27C */ s16* filter_right_init; + /* 0x280 */ s16* filter_left_state; + /* 0x284 */ s16* filter_right_state; + /* 0x288 */ wtstr tuned_sample; + /* 0x290 */ smzwavetable sample; + /* 0x2A0 */ adpcmloop adpcm_loop; +} delay; + +/* sizeof(macro) == 0x1C */ +typedef struct macro_ { + /* 0x00 */ u8* pc; + /* 0x04 */ u8* stack[4]; + /* 0x14 */ u8 remaining_loop_iters[4]; + /* 0x18 */ u8 depth; + /* 0x19 */ s8 value; +} macro; + +/* SubTrack struct */ +/* sizeof(sub) == 0xE0 */ +typedef struct sub_ { + /* 0x00 */ u8 enabled : 1; + /* 0x00 */ u8 finished : 1; + /* 0x00 */ u8 stop_script : 1; + /* 0x00 */ u8 muted : 1; + /* 0x00 */ u8 has_instrument : 1; + /* 0x00 */ u8 stereo_effects : 1; + /* 0x00 */ u8 large_notes : 1; + /* 0x00 */ u8 unused : 1; + + union { + struct { + /* 0x01 */ u8 frequency_scale : 1; + /* 0x01 */ u8 volume : 1; + /* 0x01 */ u8 pan : 1; + } flags; + /* 0x01 */ u8 as_byte; + } changes; + + /* 0x02 */ u8 note_alloc_policy; + /* 0x03 */ u8 mute_flags; + /* 0x04 */ u8 target_reverb_vol; + /* 0x05 */ u8 note_priority; + /* 0x06 */ u8 priority2; + /* 0x07 */ u8 bank_id; + /* 0x08 */ u8 reverb_idx; + /* 0x09 */ u8 book_ofs; + /* 0x0A */ u8 new_pan; + /* 0x0B */ u8 pan_channel_weight; + /* 0x0C */ u8 gain; + /* 0x0D */ u8 velocity_random_variance; + /* 0x0E */ u8 gate_time_random_variance; + /* 0x0F */ u8 comb_filter_size; + /* 0x10 */ u8 surround_effect_idx; + /* 0x11 */ u8 subtrack_idx; + /* 0x12 */ u8 note_semitone; + /* 0x14 */ vibparam vibrato_params; + /* 0x22 */ u16 delay; + /* 0x24 */ u16 comb_filter_gain; + /* 0x26 */ u16 dynamic_value; + /* 0x28 */ s16 inst_or_wave; + /* 0x2A */ s16 transposition; + /* 0x2C */ f32 volume_scale; + /* 0x30 */ f32 volume; + /* 0x34 */ s32 pan; + /* 0x38 */ f32 applied_volume; + /* 0x3C */ f32 frequency_scale; + /* 0x40 */ u8 (*dyn_tbl)[][2]; + /* 0x44 */ channel* channel; + /* 0x48 */ note* note; + /* 0x4C */ voicetable* voicetable; + /* 0x50 */ group* group; + /* 0x54 */ struct note_* note_layers[4]; + /* 0x64 */ macro macro_player; + /* 0x80 */ env adsr_env; + /* 0x88 */ chnode channel_node; + /* 0xC8 */ s8 port[8]; + /* 0xD0 */ u8* sfx_state; + /* 0xD4 */ s16* filter; + /* 0xD8 */ phase stereo_phase; + /* 0xDC */ s32 sample_start_pos; + /* 0xE0 */ s32 _E0; + /* 0xE4 */ u8 _unk[0x100 - 0x0E4]; +} sub; + +/* sizeof(group) == 0x160 */ +struct group_ { + struct flags_ { + /* 0x000 */ u8 enabled : 1; + /* 0x000 */ u8 finished : 1; + /* 0x000 */ u8 muted : 1; + /* 0x000 */ u8 sequence_dma_in_progress : 1; + /* 0x000 */ u8 bank_dma_in_progress : 1; + /* 0x000 */ u8 recalculate_volume : 1; + /* 0x000 */ u8 stop_seq_script : 1; + /* 0x000 */ u8 apply_bend : 1; + } flags; + + /* 0x001 */ u8 state; + /* 0x002 */ u8 note_alloc_policy; + /* 0x003 */ u8 mute_flags; + /* 0x004 */ u8 seq_id; + /* 0x005 */ u8 bank_id; + /* 0x006 */ u8 unk006; + /* 0x007 */ s8 group_idx; + /* 0x008 */ u16 tempo; + /* 0x00A */ u16 tempo_acceleration; + /* 0x00C */ s16 tempo_change; + /* 0x00E */ s16 transposition; + /* 0x010 */ u16 delay; + /* 0x012 */ u16 fade_timer; + /* 0x014 */ u16 stored_fade_timer; + /* 0x016 */ u16 counter; + /* 0x018 */ u8* seq_data; + /* 0x01C */ f32 fade_volume; + /* 0x020 */ f32 fade_velocity; + /* 0x024 */ f32 volume; + /* 0x028 */ f32 mute_volume_scale; + /* 0x02C */ f32 fade_volume_scale; + /* 0x030 */ f32 applied_fade_volume; + /* 0x034 */ f32 bend; + /* 0x038 */ sub* subtracks[AUDIO_SUBTRACK_NUM]; + /* 0x078 */ macro macro_player; + /* 0x094 */ u8* short_note_velocity_tbl; + /* 0x098 */ u8* short_note_gate_time_tbl; + /* 0x09C */ chnode channel_node; + /* 0x0DC */ s32 skip_ticks; + /* 0x0E0 */ s32 script_counter; /* is u32 in MM decomp */ + /* 0x0E4 */ u8 unkE4[0x158 - 0x0E4]; + /* 0x158 */ s8 port[8]; +}; + +/* sizeof(note) == 0x90 */ +struct note_ { + /* 0x00 */ u8 enabled : 1; + /* 0x00 */ u8 finished : 1; + /* 0x00 */ u8 muted : 1; + /* 0x00 */ u8 continuous : 1; + /* 0x00 */ u8 _00bit3 : 1; + /* 0x00 */ u8 ignore_drum_pan : 1; + /* 0x00 */ u8 _00bit1 : 1; + /* 0x00 */ u8 note_properties_need_init : 1; + /* 0x01 */ phase stereo_phase; + /* 0x02 */ u8 inst_or_wave; + /* 0x03 */ u8 gate_time; + /* 0x04 */ u8 semitone; + /* 0x05 */ u8 portamento_target_note; + /* 0x06 */ u8 pan; + /* 0x07 */ u8 note_pan; + /* 0x08 */ u8 surround_effect_idx; + /* 0x09 */ u8 target_reverb_volume; + + union { + struct { + /* 0x0A */ u16 bit0 : 1; + /* 0x0A */ u16 bit1 : 1; + /* 0x0A */ u16 bit2 : 1; + /* 0x0A */ u16 use_vibrato : 1; + /* 0x0A */ u16 add_subtrack_transposition : 1; + /* 0x0A */ u16 bit5 : 1; + /* 0x0A */ u16 bit6 : 1; + /* 0x0A */ u16 bit7 : 1; + /* 0x0B */ u16 bit8 : 1; + /* 0x0B */ u16 bit9 : 1; + /* 0x0B */ u16 bitA : 1; + /* 0x0B */ u16 bitB : 1; + /* 0x0B */ u16 bitC : 1; + /* 0x0B */ u16 bitD : 1; + /* 0x0B */ u16 bitE : 1; + /* 0x0B */ u16 bitF : 1; + } flags; + /* 0x0A */ u16 asU16; + } _0A; + + /* 0x0C */ vibparam vibrato_params; + /* 0x1A */ s16 delay; + /* 0x1C */ s16 gate_delay; + /* 0x1E */ s16 delay2; + /* 0x20 */ u16 portamento_time; + /* 0x22 */ s16 transposition; + /* 0x24 */ s16 short_note_default_delay; + /* 0x26 */ s16 last_delay; + /* 0x28 */ env adsr_env; + /* 0x30 */ sweep portamento_sweep; + /* 0x3C */ channel* channel; + /* 0x40 */ f32 frequency_scale; + /* 0x44 */ f32 bend; + /* 0x48 */ f32 velocity_square2; + /* 0x4C */ f32 velocity_square; + /* 0x50 */ f32 note_velocity; + /* 0x54 */ f32 note_frequency_scale; + /* 0x58 */ voicetable* instrument; + /* 0x5C */ wtstr* tuned_sample; + /* 0x60 */ sub* sub_track; + /* 0x64 */ macro macro_player; + /* 0x80 */ link link; +}; + +/* sizeof(Bgloadreq) == 0x14 */ +typedef struct Bgloadreq_ { + /* 0x00 */ u32 end_and_medium_key; + /* 0x04 */ smzwavetable* sample; + /* 0x08 */ u8* ram_addr; + /* 0x0C */ u32 encoded_info; + /* 0x10 */ s32 is_free; +} Bgloadreq; + +/* sizeof(Bgload) == 0x58 */ +typedef struct Bgload_ { + /* 0x00 */ s8 status; + /* 0x01 */ s8 delay; + /* 0x02 */ s8 medium; + /* 0x04 */ u8* ram_addr; + /* 0x08 */ u32 current_device_addr; + /* 0x0C */ u8* current_ram_addr; + /* 0x10 */ size_t bytes_remaining; + /* 0x14 */ size_t chunk_size; + /* 0x18 */ s32 unk_medium_param; + /* 0x1C */ u32 ret_msg; + /* 0x20 */ OSMesgQueue* ret_mq; + /* 0x24 */ OSMesgQueue mq; + /* 0x3C */ OSMesg msg[1]; + /* 0x40 */ OSIoMesg io_mesg; +} Bgload; + +/* sizeof(lpscache) == 0x64 */ +typedef struct lpscache_ { + /* 0x00 */ u8 medium; + /* 0x01 */ u8 seq_or_bank_id; + /* 0x02 */ u16 inst_id; + /* 0x04 */ s32 unk_medium_param; + /* 0x08 */ u32 current_device_addr; + /* 0x0C */ u8* current_ram_addr; + /* 0x10 */ u8* ram_addr; + /* 0x14 */ s32 status; + /* 0x18 */ size_t bytes_remaining; + /* 0x1C */ s8* is_done; + /* 0x20 */ smzwavetable sample; + /* 0x30 */ OSMesgQueue mq; + /* 0x48 */ OSMesg msg[1]; + /* 0x4C */ OSIoMesg io_mesg; +} lpscache; + +/* sizeof(WaveLoad) == 0x10 */ +typedef struct WaveLoad_ { + /* 0x00 */ u8* ram_addr; + /* 0x04 */ u32 device_addr; + /* 0x08 */ u16 size_unused; + /* 0x0A */ u16 size; + /* 0x0C */ u8 unused; + /* 0x0D */ u8 reuse_idx; + /* 0x0E */ u8 time_to_live; +} WaveLoad; + +/* sizeof(audioparams) == 0x28 */ +typedef struct audioparams_ { + /* 0x00 */ s16 spec; + /* 0x02 */ u16 sampling_frequency; + /* 0x04 */ u16 ai_sampling_frequency; + /* 0x06 */ s16 num_samples_per_frame_target; + /* 0x08 */ s16 num_samples_per_frame_max; + /* 0x0A */ s16 num_samples_per_frame_min; + /* 0x0C */ s16 updates_per_frame; + /* 0x0E */ s16 num_samples_per_update; + /* 0x10 */ s16 num_samples_per_update_max; + /* 0x12 */ s16 num_samples_per_update_min; + /* 0x14 */ s16 num_groups; + /* 0x18 */ f32 resample_rate; + /* 0x1C */ f32 updates_per_frame_inverse; + /* 0x20 */ f32 updates_per_frame_inverse_scaled; + /* 0x24 */ f32 updates_per_frame_scaled; +} audioparams; + +/* sizeof(StayHeapstrc) == 0x0C */ +typedef struct StayHeapstrc_ { + /* 0x00 */ size_t seq_heap_size; + /* 0x04 */ size_t bank_heap_size; + /* 0x08 */ size_t wave_heap_size; +} StayHeapstrc; + +/* sizeof(DataHeapstrc) == 0x08 */ +typedef struct DataHeapstrc_ { + /* 0x00 */ size_t data_size; + /* 0x04 */ size_t auto_size; +} DataHeapstrc; + +/* sizeof(AutoHeapstrc) == 0xC */ +typedef struct AutoHeapstrc_ { + /* 0x00 */ size_t seqLen; + /* 0x04 */ size_t bankLen; + /* 0x08 */ size_t waveLen; +} AutoHeapstrc; + +/* sizeof(AudioHeapstrc) == 0x10 */ +typedef struct AudioHeapstrc_ { + /* 0x00 */ size_t misc_heap_size; + /* 0x04 */ size_t unused0; + /* 0x08 */ size_t unused1; + /* 0x0C */ size_t cache_heap_size; +} AudioHeapstrc; + +/* sizeof(SwMember) == 0x14 */ +typedef struct SwMember_ { + /* 0x00 */ u8 in_use; + /* 0x01 */ s8 original_medium; + /* 0x02 */ u8 sample_bank_id; + /* 0x03 */ u8 _pad[5]; + /* 0x08 */ u8* allocated_addr; + /* 0x0C */ void* sample_addr; + /* 0x10 */ size_t size; +} SwMember; + +/* sizeof(SwHeap) == 0x298 */ +typedef struct SwHeap_ { + /* 0x000 */ ALHeap heap; + /* 0x004 */ SwMember entries[32]; + /* 0x294 */ s32 num_entries; +} SwHeap; + +/* TODO: this needs a better name, I don't see any functions which reference it */ +/* sizeof(ALHeapEntry) == 0xC */ +typedef struct ALHeapEntry_ { + /* 0x00 */ u8* addr; + /* 0x04 */ size_t size; + /* 0x08 */ s16 table_type; + /* 0x0A */ s16 id; +} ALHeapEntry; + +/* sizeof(SZStay) == 0xD8 */ +typedef struct SZStay_ { + /* 0x00 */ u32 num_entries; + /* 0x04 */ ALHeap heap; + /* 0x18 */ ALHeapEntry entries[16]; +} SZStay; + +/* sizeof(SZAuto) == 0x30 */ +typedef struct SZAuto_ { + /* 0x00 */ u32 use_entry_idx; + /* 0x04 */ ALHeap heap; + /* 0x18 */ ALHeapEntry entries[2]; +} SZAuto; + +/* sizeof(SZHeap) == 0x11C */ +typedef struct SZHeap_ { + /* 0x000 */ SZStay stay_heap; + /* 0x0D8 */ SZAuto auto_heap; + /* 0x108 */ ALHeap unused_heap; /* Might be another struct with a heap, its size matches ALHeap in MM and AC */ +} SZHeap; + +typedef u32 (*SequenceCallback)(s8, sub*); + +/* sizeof(AudioGlobals) == 0x92b0 */ +typedef struct AudioGlobals { + /* 0x0000 */ u8 _0000; + /* 0x0001 */ s8 num_synth_reverbs; + /* 0x0002 */ u16 _0002; + /* 0x0004 */ u16 _0004; + /* 0x0006 */ u8 _0006[10]; + /* 0x0010 */ s16* adpcm_code_book; + /* 0x0014 */ commonch* common_channel; + /* 0x0018 */ delay synth_delay[4]; + /* 0x0B58 */ u8 _0B58[0x30]; + /* 0x0B88 */ smzwavetable* used_samples[128]; + /* 0x0D88 */ Bgloadreq requested_samples[128]; + /* 0x1788 */ s32 num_used_samples; + /* 0x178C */ s32 num_requested_samples; + /* 0x1790 */ Bgload bgloads[16]; + /* 0x1D10 */ OSMesgQueue bgload_mq; + /* 0x1D28 */ u8 _1D28[0x40]; + /* 0x1D68 */ Bgload* current_bgload; + /* 0x1D6C */ u32 slow_load_pos; + /* 0x1D70 */ lpscache lps_cache[2]; + /* 0x1E38 */ OSPiHandle* cart_handle; + /* 0x1E3C */ OSPiHandle* drive_handle; + /* 0x1E40 */ OSMesgQueue external_load_queue; + /* 0x1E58 */ OSMesg external_load_mesg_buf[16]; + /* 0x1E98 */ OSMesgQueue preload_sample_queue; + /* 0x1EB0 */ OSMesg preload_sample_mesg_buf[16]; + /* 0x1EF0 */ OSMesgQueue cur_audio_frame_dma_queue; + /* 0x1F08 */ OSMesg cur_audio_frame_dma_mesg_buf[64]; + /* 0x2008 */ OSIoMesg cur_adio_frame_dma_io_mesg_buf[64]; + /* 0x2608 */ OSMesgQueue sync_dma_queue; + /* 0x2620 */ OSMesg sync_dma_queue_msg[1]; + /* 0x2624 */ OSIoMesg sync_dma_io_mesg; + /* 0x263C */ WaveLoad* waveload_list; + /* 0x2640 */ u32 num_waveloads; + /* 0x2644 */ u32 waveload_count; + /* 0x2648 */ s32 _2648; + /* 0x264C */ u8 waveload_dma_queue0[256]; + /* 0x274C */ u8 waveload_dma_queue1[256]; + /* 0x284C */ u8 waveload_dma_queue0_rpos; /* read pos */ + /* 0x284D */ u8 waveload_dma_queue1_rpos; /* read pos */ + /* 0x284E */ u8 waveload_dma_queue0_wpos; /* write pos */ + /* 0x284F */ u8 waveload_dma_queue1_wpos; /* write pos */ + /* 0x2850 */ ArcHeader* seq_header; + /* 0x2854 */ ArcHeader* bank_header; + /* 0x2858 */ ArcHeader* wave_header; + /* 0x285C */ ArcHeader* data_header; + /* 0x2860 */ u16* map_header; + /* 0x2864 */ u16 num_sequences; + /* 0x2868 */ voiceinfo* voice_info; + /* 0x286C */ audioparams audio_params; + /* 0x2894 */ f32 _2894; /* tempo scale? */ + /* 0x2898 */ s32 waveload_dma_buf0_size; + /* 0x289C */ s32 waveload_dma_buf1_size; + /* 0x28A0 */ u8 _28A0[16]; + /* 0x28B0 */ s32 waveload_dma_cur_buf_size; + /* 0x28B4 */ s32 max_audio_cmds; + /* 0x28B8 */ s32 num_channels; + /* 0x28BC */ s16 max_tempo; + /* 0x28BE */ s8 sound_mode; + /* 0x28C0 */ s32 frame_audio_task_count; + /* 0x28C4 */ s32 current_frame_dma_count; + /* 0x28C8 */ s32 rsp_task_idx; + /* 0x28CC */ s32 current_ai_buffer_idx; + /* 0x28D0 */ Acmd* abi_cmd_bufs[3]; + /* 0x28DC */ Acmd* unused_current_abi_cmd_buf; + /* 0x28E0 */ void* unused_current_audio_task; + /* 0x28E4 */ u8 unused_rsp_tasks[2][0x50]; // Actually a struct but we don't need it + /* 0x2984 */ u8 _2984[0x54]; // unsure what this is, new to DnM+/AC? + /* 0x29D8 */ f32 _29D8; + /* 0x29DC */ s32 refresh_rate; + /* 0x29E0 */ s16* ai_buffers[4]; + /* 0x29F0 */ s16 num_samples_per_frame[4]; + /* 0x29F8 */ u32 audio_random_seed; + /* 0x29FC */ s32 audio_error_flags; // unsure about the name, from MM + /* 0x2A00 */ vu32 reset_timer; + /* 0x2A04 */ SequenceCallback seq_callbacks[4]; + /* 0x2A14 */ s8 _2A14; + /* 0x2A18 */ s32 num_abi_cmds_max; + /* 0x2A1C */ s32 _2A1C; + /* 0x2A20 */ ALHeap session_heap; + /* 0x2A34 */ ALHeap external_heap; + /* 0x2A48 */ ALHeap init_heap; + /* 0x2A5C */ ALHeap misc_heap; + /* 0x2A70 */ ALHeap unused_heap0; + /* 0x2A84 */ ALHeap unused_heap1; + /* 0x2A98 */ ALHeap sz_data_heap; + /* 0x2AAC */ ALHeap data_heap; + /* 0x2AC0 */ ALHeap sz_auto_heap; + /* 0x2AD4 */ SZHeap seq_heap; + /* 0x2BF0 */ SZHeap bank_heap; + /* 0x2D0C */ SZHeap wave_heap; + /* 0x2E28 */ ALHeap emem_heap; + /* 0x2E3C */ ALHeapEntry emem_entries[32]; + /* 0x2FBC */ SwHeap emem_persistent_wave_heap; + /* 0x3254 */ SwHeap emem_temporary_wave_heap; + /* 0x34EC */ AudioHeapstrc audio_heap_info; + /* 0x34FC */ DataHeapstrc cache_heap; + /* 0x3504 */ StayHeapstrc persistent_common_heap_info; + /* 0x3510 */ StayHeapstrc temporary_common_heap_info; + /* 0x351C */ u8 wave_load_status[172]; + /* 0x35C8 */ u8 bank_load_status[172]; + /* 0x3674 */ u8 sequence_load_status[252]; + /* 0x3770 */ u8 reset_status; + /* 0x3771 */ u8 spec_id; + /* 0x3774 */ s32 audio_reset_fadeout_frames_left; + /* 0x3778 */ f32* adsr_decay_table; + /* 0x377C */ u8* audio_heap_p; + /* 0x3780 */ size_t audio_heap_size; + /* 0x3784 */ channel* channels; + /* 0x3788 */ struct group_ groups[AUDIO_GROUP_MAX]; + /* 0x3E68 */ note notes[AUDIO_NOTE_MAX]; + /* 0x8668 */ sub null_sub_track; /* used for 'null' sub tracks */ + /* 0x8748 */ group* groups_p[AUDIO_GROUP_MAX]; + /* 0x877C */ s32 sample_state_offset; + /* 0x8780 */ link note_link; + /* 0x8790 */ chnode channel_node; /* main chnode */ + /* 0x87D0 */ struct group_ main_group; + /* 0x8930 */ sub main_sub; + /* 0x8A30 */ u8 thread_cmd_write_pos; + /* 0x8A31 */ u8 thread_cmd_read_pos; + /* 0x8A32 */ u8 thread_cmd_queue_finished; + /* 0x8A34 */ u16 thread_cmd_group_mask[AUDIO_GROUP_MAX]; + /* 0x8A40 */ OSMesgQueue* spec_change_mq_p; + /* 0x8A44 */ OSMesgQueue* task_start_mq_p; + /* 0x8A48 */ OSMesgQueue* thread_cmd_proc_mq_p; + /* 0x8A4C */ OSMesgQueue task_start_mq; + /* 0x8A64 */ OSMesgQueue thread_cmd_proc_mq; + /* 0x8A7C */ OSMesgQueue spec_change_mq; + /* 0x8A94 */ OSMesg task_start_msg_buf[1]; + /* 0x8A98 */ OSMesg spec_change_msg_buf[1]; + /* 0x8A9C */ OSMesg thread_cmd_proc_msg_buf[4]; + /* 0x8AAC */ AudioPort audio_port_cmds[256]; + /* 0x92AC */ s32 _92AC; +} AudioGlobals; + +typedef union SOUNDID_ { + struct { + u8 wave_id; + u8 inst_id; + u8 _02; + u8 _03; + }; + + u32 uint32; +} SOUNDID; + +typedef s32 (*PlayerCallBack)(void*); + +typedef struct PLAYER_CALL_ { + PlayerCallBack callback; + void* arg; + u32 DSP_mode; +} PLAYER_CALL; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/audiotable.h b/include/jaudio_NES/audiotable.h new file mode 100644 index 00000000..855d8f54 --- /dev/null +++ b/include/jaudio_NES/audiotable.h @@ -0,0 +1,16 @@ +#ifndef AUDIOTABLE_H +#define AUDIOTABLE_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +extern f32 PCENTTABLE[]; +extern f32 PCENTTABLE2[]; +extern envdat DEFAULT_ENV[]; +extern f32 PITCHTABLE[]; +extern u8 DEFAULT_VTABLE[]; +extern u8 DEFAULT_GTABLE[]; + +extern u8 BDB_SEQDATA[]; + +#endif diff --git a/include/jaudio_NES/audiothread.h b/include/jaudio_NES/audiothread.h index 55a368c9..664c537d 100644 --- a/include/jaudio_NES/audiothread.h +++ b/include/jaudio_NES/audiothread.h @@ -1,16 +1,31 @@ #ifndef AUDIOTHREAD_H #define AUDIOTHREAD_H - #include "types.h" +#include "types.h" +#include "jaudio_NES/audiostruct.h" +#include "dolphin/os.h" + +#define AUDIO_THREAD_FLAG_DVD (1 << 0) +#define AUDIO_THREAD_FLAG_AUDIO (1 << 1) +#define AUDIO_THREAD_FLAG_NEOS (1 << 2) + +extern volatile int intcount; +OSThread jac_audioThread[3]; +OSThread jac_neosThread; +OSThread jac_dvdThread; + +extern void NeosSync(void); #ifdef __cplusplus extern "C" { #endif -void StartAudioThread(void*, u32, u32, u32); +extern void DspSyncCountClear(int count); +extern int DspSyncCountCheck(void); +extern void StartAudioThread(void* pHeap, s32 heapSize, u32 aramSize, u32 flags); #ifdef __cplusplus } #endif -#endif \ No newline at end of file +#endif diff --git a/include/jaudio_NES/audiowork.h b/include/jaudio_NES/audiowork.h new file mode 100644 index 00000000..4dc14f8f --- /dev/null +++ b/include/jaudio_NES/audiowork.h @@ -0,0 +1,29 @@ +#ifndef AUDIOWORK_H +#define AUDIOWORK_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" +#include "jaudio_NES/rate.h" +#include "jaudio_NES/audiotable.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef void (*VFRAME_CALLBACK)(void); +typedef u32 (*GRP_CALLBACK)(s8, group*); +typedef void* (*SOUND_CALLBACK)(smzwavetable*, s32, s8, s32); +typedef Acmd* (*DACOUT_CALLBACK)(Acmd*, s32, s32); + +extern AudioGlobals AG; +extern VFRAME_CALLBACK NA_VFRAME_CALLBACK; +extern SequenceCallback NA_CALLBACK; +extern GRP_CALLBACK NA_GRP_CALLBACK; +extern SOUND_CALLBACK NA_SOUND_CALLBACK; +extern DACOUT_CALLBACK NA_DACOUT_CALLBACK; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/channel.h b/include/jaudio_NES/channel.h new file mode 100644 index 00000000..74610bfb --- /dev/null +++ b/include/jaudio_NES/channel.h @@ -0,0 +1,23 @@ +#ifndef CHANNEL_H +#define CHANNEL_H + +#include "types.h" +#include "jaudio_NES/audiowork.h" + +extern s32 OverwriteBank(s32 type, s32 bankId, s32 idx, s32 voicetable); +extern channel* Nas_AllocationOnRequest(note* n); + +extern wtstr* NoteToVoice(voicetable* voicetbl, s32 note); +extern voicetable* ProgToVp(s32 prog, s32 note); +extern percvoicetable* PercToPp(s32 perc, s32 note); +extern veffvoicetable* VpercToVep(s32 vperc, s32 note); + +extern void Nas_UpdateChannel(void); + +extern void Nas_DeAllocAllVoices(chnode* node); +extern void Nas_AllocVoices(chnode* node, s32 num); +extern void Nas_InitChNode(chnode* node); +extern void Nas_Release_Channel(note* n); +extern void Nas_Release_Channel_Force(note* n); + +#endif diff --git a/include/jaudio_NES/cpubuf.h b/include/jaudio_NES/cpubuf.h new file mode 100644 index 00000000..a834d4b0 --- /dev/null +++ b/include/jaudio_NES/cpubuf.h @@ -0,0 +1,12 @@ +#ifndef CPUBUF_H +#define CPUBUF_H + +#include "types.h" +#include "jaudio_NES/rate.h" +#include "jaudio_NES/audiocommon.h" + +extern s16* CpubufProcess(DSPBUF_EVENTS event); +extern void CpuFrameEnd(void); +extern s16* MixCpu(s32 nSamples); + +#endif diff --git a/include/jaudio_NES/driver.h b/include/jaudio_NES/driver.h new file mode 100644 index 00000000..b118a753 --- /dev/null +++ b/include/jaudio_NES/driver.h @@ -0,0 +1,9 @@ +#ifndef DRIVER_H +#define DRIVER_H + +#include "types.h" +#include "jaudio_NES/audiowork.h" + +extern Acmd* Nas_smzAudioFrame(Acmd* cmds, s32* processed_cmds, s16* pSamples, s32 nSamples); + +#endif diff --git a/include/jaudio_NES/dspboot.h b/include/jaudio_NES/dspboot.h new file mode 100644 index 00000000..326a00af --- /dev/null +++ b/include/jaudio_NES/dspboot.h @@ -0,0 +1,22 @@ +#ifndef DSPBOOT_H +#define DSPBOOT_H + +#include "types.h" + +typedef struct STRUCT_DSP_TASK2 { + /* 0x00 */ u16* iram_mmem_addr; + /* 0x04 */ u32 iram_length; + /* 0x08 */ u16 iram_addr; + /* 0x0A */ u16* dram_mmem_addr; + /* 0x0E */ u32 dram_length; + /* 0x12 */ u16 dram_addr; + /* 0x16 */ u16 dsp_init_vector; +}DSPTaskInfo2; + +extern s32 __DSPCheckMXICBoot2(DSPTaskInfo2* task); +extern void DSPInit2(DSPTaskInfo2* task); +extern void DspBoot(void); + +extern u16 jdsp[]; + +#endif diff --git a/include/jaudio_NES/dspbuf.h b/include/jaudio_NES/dspbuf.h new file mode 100644 index 00000000..0068df77 --- /dev/null +++ b/include/jaudio_NES/dspbuf.h @@ -0,0 +1,13 @@ +#ifndef DSPBUF_H +#define DSPBUF_H + +#include "types.h" +#include "jaudio_NES/audiocommon.h" +#include "jaudio_NES/rate.h" + +extern s16* DspbufProcess(DSPBUF_EVENTS event); +extern s16* MixDsp(s32 nSamples); +extern void UpdateDSP(void); +extern void DspFrameEnd(void); + +#endif diff --git a/include/jaudio_NES/dspdriver.h b/include/jaudio_NES/dspdriver.h new file mode 100644 index 00000000..0e3fbba6 --- /dev/null +++ b/include/jaudio_NES/dspdriver.h @@ -0,0 +1,8 @@ +#ifndef DSPDRIVER_H +#define DSPDRIVER_H + +#include "types.h" + +extern void UpdateDSPchannelAll(void); + +#endif diff --git a/include/jaudio_NES/dspinterface.h b/include/jaudio_NES/dspinterface.h new file mode 100644 index 00000000..d1f35aea --- /dev/null +++ b/include/jaudio_NES/dspinterface.h @@ -0,0 +1,9 @@ +#ifndef DSPINTERFACE_H +#define DSPINTERFACE_H + +#include "types.h" + +extern void DSP_InitBuffer(void); +extern void DSP_InvalChannelAll(void); + +#endif diff --git a/include/jaudio_NES/dspproc.h b/include/jaudio_NES/dspproc.h new file mode 100644 index 00000000..8ab52eb0 --- /dev/null +++ b/include/jaudio_NES/dspproc.h @@ -0,0 +1,10 @@ +#ifndef DSPPROC_H +#define DSPPROC_H + +#include "types.h" + +extern u32 DSPReleaseHalt(void); +extern void DsyncFrame(u32 subframes, u32 dspbuf_start, u32 dspbuf_end); +extern void DwaitFrame(); + +#endif diff --git a/include/jaudio_NES/dummyprobe.h b/include/jaudio_NES/dummyprobe.h index 6b155fef..f45d515d 100644 --- a/include/jaudio_NES/dummyprobe.h +++ b/include/jaudio_NES/dummyprobe.h @@ -7,11 +7,11 @@ extern "C" { #endif - void Probe_Start(void); - void Probe_Finish(void); +extern void Probe_Start(s32 id, const char* label); +extern void Probe_Finish(s32 id); #ifdef __cplusplus } #endif -#endif \ No newline at end of file +#endif diff --git a/include/jaudio_NES/dummyrom.h b/include/jaudio_NES/dummyrom.h new file mode 100644 index 00000000..76d8be69 --- /dev/null +++ b/include/jaudio_NES/dummyrom.h @@ -0,0 +1,23 @@ +#ifndef DUMMYROM_H +#define DUMMYROM_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" +#include "libultra/libultra.h" + +#define DUMMYROM_DRAM_TO_ARAM 0 +#define DUMMYROM_ARAM_TO_DRAM 1 + +extern u8* JAC_ARAM_DMA_BUFFER_TOP; +ALHeap aram_hp; /* placed in common bss */ + +extern u32 GetNeos_FileTop(void); +extern u32 GetNeosRomTop(void); +extern u32 GetNeosRom_PreLoaded(void); +extern void SetPreCopy_NeosRom(u8* load_addr, u32 load_size, BOOL cut_flag); +extern BOOL ARAMStartDMAmesg(u32 dir, u32 dramAddr, u32 aramAddr, u32 size, s32 unused, OSMesgQueue* mq); +extern void Jac_SetAudioARAMSize(u32 size); +extern void ARAllocFull(u32* outSize); +extern void Jac_InitARAM(u32 loadAudiorom); + +#endif diff --git a/include/jaudio_NES/dvdthread.h b/include/jaudio_NES/dvdthread.h new file mode 100644 index 00000000..f05e6c8f --- /dev/null +++ b/include/jaudio_NES/dvdthread.h @@ -0,0 +1,30 @@ +#ifndef DVDTHREAD_H +#define DVDTHREAD_H + +#include "types.h" +#include "dolphin/dvd.h" + +typedef void (*Jac_DVDCallback)(u32); +typedef s32 (*TaskCallback)(void*); +typedef void (*ErrorCallback)(char*, u8* addr); + +extern void DVDT_ExtendPath(char* dst, char* ext); +extern s32 DVDT_AddTaskHigh(TaskCallback callback, void* stackp, size_t len); +extern s32 DVDT_AddTask(TaskCallback callback, void* stackp, size_t len); +extern void jac_dvdproc_init(); +extern void* jac_dvdproc(void*); +extern s32 DVDT_LoadtoARAM_Main(void* arg); +extern s32 DVDT_LoadtoARAM(u32 owner, char* name, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback); +extern s32 DVDT_ARAMtoDRAM_Main(void* arg); +extern s32 DVDT_DRAMtoARAM_Main(void* arg); +extern s32 DVDT_ARAMtoDRAM(u32 owner, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback); +extern s32 DVDT_DRAMtoARAM(u32 owner, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback); +extern s32 DVDT_CheckFile(char* file); +extern void DVDT_CheckPass(u32 owner, u32* status, Jac_DVDCallback callback); +extern s32 Jac_CheckFile(char* file); +extern void Jac_RegisterDVDErrorCallback(ErrorCallback callback); +extern s32 Jac_RegisterFastOpen(char* file); +extern BOOL Jac_DVDOpen(char* name, DVDFileInfo* info); + + +#endif diff --git a/include/jaudio_NES/effect.h b/include/jaudio_NES/effect.h new file mode 100644 index 00000000..df419d8d --- /dev/null +++ b/include/jaudio_NES/effect.h @@ -0,0 +1,12 @@ +#ifndef EFFECT_H +#define EFFECT_H + +#include "types.h" +#include "jaudio_NES/audiowork.h" + +extern void Nas_ChannelModInit(channel* ch); +extern void Nas_SweepInit(channel* ch); + +extern void Nas_MainCtrl(group* grp); + +#endif diff --git a/include/jaudio_NES/game64.h b/include/jaudio_NES/game64.h index ed32bfef..d39524aa 100644 --- a/include/jaudio_NES/game64.h +++ b/include/jaudio_NES/game64.h @@ -14,8 +14,8 @@ extern void Na_BgmStart(u8); extern void Na_BgmCrossfadeStart(u8); extern void Na_BgmStop(u16); extern void Na_SysTrgStart(u16); -extern void Na_PlyWalkSe(int, u16, f32); -extern void Na_PlyWalkSeRoom(int, u16, f32); +extern void Na_PlyWalkSe(u16, u16, f32); +extern void Na_PlyWalkSeRoom(u8, u16, f32); extern void Na_NpcWalkSe(int, u16, f32); extern void Na_NpcWalkSeRoom(int, u16, f32); extern void Na_PlayerStatusLevel(f32, int); @@ -61,6 +61,9 @@ extern void Na_RestartPrepare(); extern u8 Na_CheckRestartReady(); extern void Na_Restart(); +extern u8 sou_now_bgm_handle; +extern u8 sou_chime_status; + #ifdef __cplusplus } #endif diff --git a/include/jaudio_NES/game64_cpp.h b/include/jaudio_NES/game64_cpp.h new file mode 100644 index 00000000..8636a786 --- /dev/null +++ b/include/jaudio_NES/game64_cpp.h @@ -0,0 +1,11 @@ +#ifndef GAME64_CPP_H +#define GAME64_CPP_H + +#include "types.h" +#include "jaudio_NES/game64.h" + +/* C++ linkage */ +extern u8 angle2pan(u16 angle, f32 dist); +extern f32 distance2vol(f32 distance); + +#endif diff --git a/include/jaudio_NES/ipldec.h b/include/jaudio_NES/ipldec.h new file mode 100644 index 00000000..c86fc8c1 --- /dev/null +++ b/include/jaudio_NES/ipldec.h @@ -0,0 +1,8 @@ +#ifndef IPLDEC_H +#define IPLDEC_H + +#include "types.h" + +extern BOOL DspExtraTaskCheck(void); + +#endif diff --git a/include/jaudio_NES/ja_calc.h b/include/jaudio_NES/ja_calc.h new file mode 100644 index 00000000..a361ad8c --- /dev/null +++ b/include/jaudio_NES/ja_calc.h @@ -0,0 +1,8 @@ +#ifndef JA_CALC_H +#define JA_CALC_H + +#include "types.h" + +extern void Jac_InitSinTable(void); + +#endif diff --git a/include/jaudio_NES/kappa.h b/include/jaudio_NES/kappa.h index b38ae147..4e5805cd 100644 --- a/include/jaudio_NES/kappa.h +++ b/include/jaudio_NES/kappa.h @@ -7,7 +7,13 @@ extern "C" { #endif -extern void Na_GetRadioCounter(void*); +typedef struct kappa_ { + u16 unk0; + f32 unk4; +}kappa; + +extern int Na_GetKappaCounter(kappa*); +extern void Na_SetKappaSeqHandle(int flag); #ifdef __cplusplus } diff --git a/include/jaudio_NES/melody.h b/include/jaudio_NES/melody.h index 34d98d1d..b0bed689 100644 --- a/include/jaudio_NES/melody.h +++ b/include/jaudio_NES/melody.h @@ -2,14 +2,20 @@ #define MELODY_H #include "types.h" +#include "jaudio_NES/audiocommon.h" #ifdef __cplusplus extern "C" { #endif -extern void Na_Inst(u16, u8*); -extern void Na_FurnitureInst(u32, u8, u8*, u16, f32); -extern int Na_InstCountGet(); +extern void Na_MelodyInit(void); +extern void Na_Inst(u16 inst, u8* pData); +extern s8 Na_InstCountGet(void); +extern s16 Na_MelodyGetSubTrackNum(s16 inst); +extern void Na_FurnitureInst(u32 id, u8 inst, u8* melody, u16 angle, f32 dist); +extern void Na_MelodyVoice(s16 voice); + +extern u32 na_melody_id_hist[]; #ifdef __cplusplus } diff --git a/include/jaudio_NES/memory.h b/include/jaudio_NES/memory.h new file mode 100644 index 00000000..10312c7b --- /dev/null +++ b/include/jaudio_NES/memory.h @@ -0,0 +1,20 @@ +#ifndef JAUDIO_MEMORY_H +#define JAUDIO_MEMORY_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +extern void Nas_HeapInit(ALHeap* heap, u8* base, s32 len); +extern void* Nas_HeapAlloc(ALHeap* heap, s32 size); +extern void* Nas_HeapAlloc_CL(ALHeap*, s32 size); + +extern u32 Nas_SzCacheCheck(s32 type, s32 cache_type, s32 id); +extern void Nas_SzStayDelete(s32 type); + +extern void Nas_SetDelayLineParam(s32 delayIdx, s32 param_type, s32 param_value, s32 init); + +extern void Nas_SetBPFilter(s16* filter, s32 lowpass_cutoff, s32 highpass_cutoff); + +extern s32 Nas_SpecChange(void); + +#endif diff --git a/include/jaudio_NES/neosthread.h b/include/jaudio_NES/neosthread.h new file mode 100644 index 00000000..c0600c44 --- /dev/null +++ b/include/jaudio_NES/neosthread.h @@ -0,0 +1,12 @@ +#ifndef NEOSTHREAD_H +#define NEOSTHREAD_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +extern u32 Neos_Update(s16* dst); +extern void ImageLoaded(u32 param); +extern BOOL Neos_CheckBoot(void); +extern void* neosproc(void* param); + +#endif diff --git a/include/jaudio_NES/os.h b/include/jaudio_NES/os.h new file mode 100644 index 00000000..104defb5 --- /dev/null +++ b/include/jaudio_NES/os.h @@ -0,0 +1,17 @@ +#ifndef OS_H +#define OS_H + +#include "types.h" +#include "libultra/libultra.h" + +extern void Z_osWritebackDCacheAll(); +extern void osInvalDCache2(void* src, s32 size); +extern void osWritebackDCache2(void* src, s32 size); +extern void Z_osCreateMesgQueue (OSMesgQueue* mq, OSMesg* msg, s32 count ); +extern s32 Z_osSendMesg(OSMesgQueue* mq, OSMesg msg, s32 flags ); +extern s32 Z_osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flags ); +extern s32 Z_osEPiStartDma (OSPiHandle * handler, OSIoMesg* msg, s32 dir); +extern void Z_bcopy (void* dst, void* src, size_t size); + + +#endif diff --git a/include/jaudio_NES/playercall.h b/include/jaudio_NES/playercall.h new file mode 100644 index 00000000..9b9a5cab --- /dev/null +++ b/include/jaudio_NES/playercall.h @@ -0,0 +1,23 @@ +#ifndef PLAYERCALL_H +#define PLAYERCALL_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern void ResetPlayerCallback(); +extern s32 Jac_RegisterDspPlayerCallback(PlayerCallBack callback, void* arg); +extern s32 Jac_RegisterPlayerCallback(PlayerCallBack callback, void* arg); + +#ifdef __cplusplus +} +#endif + +/* C++ linkage, should these go in a different header file? */ +extern void PlayerCallback(); +extern void DspPlayerCallback(); + +#endif diff --git a/include/jaudio_NES/radio.h b/include/jaudio_NES/radio.h index c2f878ff..0599d9c8 100644 --- a/include/jaudio_NES/radio.h +++ b/include/jaudio_NES/radio.h @@ -2,16 +2,16 @@ #define RADIO_H #include "types.h" +#include "audio.h" #ifdef __cplusplus extern "C" { #endif -extern void Na_GetKappaCounter(void*); +extern int Na_GetRadioCounter(Radio_c* radio); #ifdef __cplusplus } #endif - -#endif \ No newline at end of file +#endif diff --git a/include/jaudio_NES/random.h b/include/jaudio_NES/random.h new file mode 100644 index 00000000..3fcbc880 --- /dev/null +++ b/include/jaudio_NES/random.h @@ -0,0 +1,19 @@ +#ifndef JAUDIO_RANDOM_H +#define JAUDIO_RANDOM_H + +#include "types.h" +#include "jaudio_NES/audiostruct.h" +#include "jaudio_NES/audiowork.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern s32 GetRandom_s32(void); +extern f32 GetRandom_sf32(void); + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/rate.h b/include/jaudio_NES/rate.h new file mode 100644 index 00000000..ef121740 --- /dev/null +++ b/include/jaudio_NES/rate.h @@ -0,0 +1,19 @@ +#ifndef RATE_H +#define RATE_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +extern u32 JAC_AI_SETTING; +extern u32 JAC_SUBFRAMES; +extern u32 JAC_FRAMESAMPLES; +extern u32 DAC_SIZE; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/jaudio_NES/rhythm.h b/include/jaudio_NES/rhythm.h index 44becac8..d0070c63 100644 --- a/include/jaudio_NES/rhythm.h +++ b/include/jaudio_NES/rhythm.h @@ -8,13 +8,15 @@ extern "C" { #endif -extern void Na_RhythmStart(u32, s8, s8); -extern void Na_RhythmStop(u32); +extern void Na_RhythmInit(); +extern s8 Na_GetRhythmSubTrack(u32 idx); +extern void Na_RhythmStart(u32 idx, s8 arg1, s8 arg2); +extern void Na_RhythmStop(u32 idx); extern void Na_RhythmAllStop(); -extern f32 Na_GetRhythmAnimCounter(u32); -extern s8 Na_GetRhythmDelay(u32); -extern void Na_GetRhythmInfo(TempoBeat_c* rhythm); -extern void Na_SetRhythmInfo(TempoBeat_c* rhythm); +extern f32 Na_GetRhythmAnimCounter(u32 idx); +extern s8 Na_GetRhythmDelay(u32 idx); +extern void Na_GetRhythmInfo(TempoBeat_c* tempo); +extern void Na_SetRhythmInfo(TempoBeat_c* tempo); #ifdef __cplusplus } diff --git a/include/jaudio_NES/rspsim.h b/include/jaudio_NES/rspsim.h new file mode 100644 index 00000000..93e742a0 --- /dev/null +++ b/include/jaudio_NES/rspsim.h @@ -0,0 +1,8 @@ +#ifndef RSPSIM_H +#define RSPSIM_H + +#include "types.h" + +extern void RspStart2(u32* pTaskCmds, s32 allTasks, s32 param_3); + +#endif diff --git a/include/jaudio_NES/sample.h b/include/jaudio_NES/sample.h new file mode 100644 index 00000000..3acde41c --- /dev/null +++ b/include/jaudio_NES/sample.h @@ -0,0 +1,12 @@ +#ifndef SAMPLE_H +#define SAMPLE_H + +#include "types.h" + +extern void Jac_imixcopy(s16* ta, s16* tb, s16* td, s32 s); +extern void Jac_bcopyfast(u32* src, u32* dest, u32 size); +extern void Jac_bcopy(void* src, void* dest, s32 size); +extern void Jac_bzerofast(u32* dest, u32 size); +extern void Jac_bzero(void* dest, s32 size); + +#endif diff --git a/include/jaudio_NES/staff.h b/include/jaudio_NES/staff.h index 8eea37fc..4250f4a7 100644 --- a/include/jaudio_NES/staff.h +++ b/include/jaudio_NES/staff.h @@ -2,22 +2,18 @@ #define STAFF_H #include "types.h" +#include "audio.h" #ifdef __cplusplus extern "C" { #endif -typedef struct staff_roll_info_s{ - s16 unk0; - int unk4; - f64 unk8; -}StaffRoll; - -extern void Na_GetStaffRollInfo(void*); +extern void Na_StaffRollInit(void); +extern void Na_StaffRollStart(s16 seq_no); +extern void Na_GetStaffRollInfo(StaffRollInfo_c* info); #ifdef __cplusplus } #endif - -#endif \ No newline at end of file +#endif diff --git a/include/jaudio_NES/streamctrl.h b/include/jaudio_NES/streamctrl.h new file mode 100644 index 00000000..9cb51872 --- /dev/null +++ b/include/jaudio_NES/streamctrl.h @@ -0,0 +1,46 @@ +#ifndef STREAMCTRL_H +#define STREAMCTRL_H + +#include "types.h" + +/* @unused */ +// Jac_PlayStreamBGM(s32, s32, s32); +// Jac_StopStreamBGM(s32, s32); +// Jac_VolMoveStreamBGM(s32, s32); + +#define JSTREAM_NO_TRACK_ID (-1) +#define JSTREAM_FADEOUT_TIMER (120) + +typedef struct JSTREAM_ { + s32 state; + s32 req_stream_id; + s32 now_stream_id; + f32 fadein_vol; + s32 fadein_vol_timer; + s32 _14; + s32 fadeout_timer; + f32 target_vol1; + s32 change_vol_timer1; + f32 stream_vol; + u32 total_samples; +} JSTREAM; + +typedef enum JSTREAM_STATE_ { + JSTREAM_STATE_STOPPED, + JSTREAM_STATE_REQUEST_STREAM, + JSTREAM_STATE_START, + JSTREAM_STATE_PLAYING, + JSTREAM_STATE_CANCELLED, + JSTREAM_STATE_FADEOUT, + JSTREAM_STATE_STOP, + JSTREAM_STATE_CLEANUP, + + JSTREAM_STATE_NUM +} JSTREAM_STATE; + +extern char J_STREAMNAME[][16]; +extern JSTREAM J_STREAM; + +extern void StreamMain(void); + +#endif diff --git a/include/jaudio_NES/sub_sys.h b/include/jaudio_NES/sub_sys.h new file mode 100644 index 00000000..aea7d2d3 --- /dev/null +++ b/include/jaudio_NES/sub_sys.h @@ -0,0 +1,27 @@ +#ifndef SUB_SYS_H +#define SUB_SYS_H + +#include "types.h" +#include "jaudio_NES/audiowork.h" +#include "PR/mbi.h" + +extern void Nap_AudioPortInit(void); +extern void Nap_SetF32(u32 cmd, f32 param); +extern void Nap_SetS32(u32 cmd, s32 param); +extern void Nap_SetS8(u32 cmd, s8 param); +extern void Nap_SetU16(u32 cmd, u16 param); +extern s32 Nap_SendStart(void); +extern void Nap_FlushPort(void); +extern void Nap_Process1Command(AudioPort* port); +extern void Nap_AudioPortProcess(u32 msg); +extern s32 Nap_CheckSpecChange(void); +extern s32 Nap_StartSpecChange(s32 spec_id); +extern s32 Nap_StartReset(void); +extern s8 Nap_ReadSubPort(s32 groupId, s32 subtrackId, s32 portId); +extern s8 Nap_ReadGrpPort(s32 groupId, s32 portId); +extern void Nap_WaitVsync(void); +extern u32 Nap_GetRandom(void); +extern void Nas_InitGAudio(void); +extern s32 CreateAudioTask(Acmd* cmds, s16* pSamples, u32 nSamples, s32 param_4); + +#endif diff --git a/include/jaudio_NES/system.h b/include/jaudio_NES/system.h new file mode 100644 index 00000000..552ff26f --- /dev/null +++ b/include/jaudio_NES/system.h @@ -0,0 +1,47 @@ +#ifndef SYSTEM_H +#define SYSTEM_H + +#include "types.h" +#include "libultra/libultra.h" + +typedef enum SET_EXT_POINTER_TYPE { + EXT_POINTER_TYPE_ADDR, + EXT_POINTER_TYPE_SIZE, + + EXT_POINTER_TYPE_NUM +} SET_EXT_POINTER_TYPE; + +extern void Nas_InitAudio(u64* acmdBuf, s32 acmdBufSize); +extern void Nas_FastCopy(u8* SrcAddr, u8* DestAdd, size_t size, s32 medium); +extern void Nas_StartMySeq(s32 group, s32 seq, s32 arg); +extern void Nas_StartSeq_Skip(s32 group, s32 seq, s32 skip_ticks); + +extern s32 Nas_LoadVoice(s32 progId, s32 instId, s32 percId); + +extern void Nas_PreLoadSeq(s32 seq, s32 flags, s32 param, OSMesgQueue* mq); + +extern s32 Nas_PreLoadWave_BG(s32 bankId, s32 param2, s32 param3, OSMesgQueue* mq); +extern s32 Nas_PreLoadBank_BG(s32 bankId, s32 param2, s32 param3, OSMesgQueue* mq); +extern s32 Nas_PreLoadSeq_BG(s32 seqId, s32 param2, s32 param3, OSMesgQueue* mq); + +extern void Nas_FlushBank(s32 seqId); + +extern void Nas_SetExtPointer(s32 type, s32 idx, s32 set_type, s32 param); + +extern void Nas_WaveDmaFrameWork(void); +extern void Nas_BgDmaFrameWork(s32 reset_status); +extern void MK_FrameWork(void); + +extern BOOL Nas_CheckIDseq(s32 id); +extern BOOL Nas_CheckIDbank(s32 id); + +extern void Nas_WriteIDseq(s32 id, s32 type); +extern void Nas_WriteIDbank(s32 id, s32 type); + +extern s32 VoiceLoad(s32 bank_id, u32 inst_id, s8* done_p); +extern s32 SeqLoad(s32 seq_id, u8* ram_addr, s8* done_p); +extern void MK_load(s32 type, s32 id, u8* done_p); + +extern BOOL AUDIO_SYSTEM_READY; + +#endif diff --git a/include/jaudio_NES/track.h b/include/jaudio_NES/track.h new file mode 100644 index 00000000..94811dd5 --- /dev/null +++ b/include/jaudio_NES/track.h @@ -0,0 +1,19 @@ +#ifndef TRACK_H +#define TRACK_H + +#include "types.h" +#include "jaudio_NES/audiowork.h" + +extern void Nas_ReleaseNoteTrack(note* note); +extern void Nas_ReleaseSubTrack(sub* subtrack); +extern void Nas_ReleaseGroup_Force(group* grp); +extern void Nas_ReleaseGroup(group* grp); +extern void Nas_AddList(link* root, link* list); +extern void* Nas_GetList(link* root); +extern void Nas_MySeqMain(u32 frames_left); +extern void Nas_SeqSkip(group* grp); +extern void Nas_InitMySeq(group* grp); +extern void Nas_AssignSubTrack(s32 group_idx); +extern void Nas_InitPlayer(void); + +#endif diff --git a/include/jsyswrap.h b/include/jsyswrap.h index 636776e4..3ccd7573 100644 --- a/include/jsyswrap.h +++ b/include/jsyswrap.h @@ -12,84 +12,84 @@ extern "C" { #endif enum resource_index { - RESOURCE_FGDATA, - RESOURCE_MAIL, - RESOURCE_MAIL_TABLE, - RESOURCE_MAILA, - RESOURCE_MAILA_TABLE, - RESOURCE_MAILB, - RESOURCE_MAILB_TABLE, - RESOURCE_MAILC, - RESOURCE_MAILC_TABLE, - RESOURCE_PALLET_BOY, - RESOURCE_PS, - RESOURCE_PS_TABLE, - RESOURCE_PSZ, - RESOURCE_PSZ_TABLE, - RESOURCE_SELECT, - RESOURCE_SELECT_TABLE, - RESOURCE_STRING, - RESOURCE_STRING_TABLE, - RESOURCE_SUPERZ, - RESOURCE_SUPERZ_TABLE, - RESOURCE_SUPER, - RESOURCE_SUPER_TABLE, - RESOURCE_TEX_BOY, - RESOURCE_FACE_BOY, - RESOURCE_FGNPCDATA, - RESOURCE_MESSAGE, - RESOURCE_MESSAGE_TABLE, - RESOURCE_MY_ORIGINAL, - RESOURCE_NEEDLEWORK_JOYBOOT, - RESOURCE_PLAYER_ROOM_FLOOR, - RESOURCE_PLAYER_ROOM_WALL, - RESOURCE_NPC_NAME_STR_TABLE, - RESOURCE_D_OBJ_NPC_STOCK_SCH, - RESOURCE_D_OBJ_NPC_STOCK_SCL, - RESOURCE_TITLE, - RESOURCE_MURA_SPRING, - RESOURCE_MURA_SUMMER, - RESOURCE_MURA_FALL, - RESOURCE_MURA_WINTER, - RESOURCE_ODEKAKE, - RESOURCE_OMAKE, - RESOURCE_EKI1, - RESOURCE_EKI1_2, - RESOURCE_EKI1_3, - RESOURCE_EKI1_4, - RESOURCE_EKI1_5, - RESOURCE_EKI2, - RESOURCE_EKI2_2, - RESOURCE_EKI2_3, - RESOURCE_EKI2_4, - RESOURCE_EKI2_5, - RESOURCE_EKI3, - RESOURCE_EKI3_2, - RESOURCE_EKI3_3, - RESOURCE_EKI3_4, - RESOURCE_EKI3_5, - RESOURCE_TEGAMI, - RESOURCE_TEGAMI2, - RESOURCE_FAMIKON, - RESOURCE_BOY1, - RESOURCE_BOY2, - RESOURCE_BOY3, - RESOURCE_BOY4, - RESOURCE_BOY5, - RESOURCE_BOY6, - RESOURCE_BOY7, - RESOURCE_BOY8, - RESOURCE_GIRL11, - RESOURCE_GIRL12, - RESOURCE_GIRL13, - RESOURCE_GIRL14, - RESOURCE_GIRL15, - RESOURCE_GIRL16, - RESOURCE_GIRL17, - RESOURCE_GIRL18, - RESOURCE_D_BG_ISLAND_SCH, + RESOURCE_FGDATA, + RESOURCE_MAIL, + RESOURCE_MAIL_TABLE, + RESOURCE_MAILA, + RESOURCE_MAILA_TABLE, + RESOURCE_MAILB, + RESOURCE_MAILB_TABLE, + RESOURCE_MAILC, + RESOURCE_MAILC_TABLE, + RESOURCE_PALLET_BOY, + RESOURCE_PS, + RESOURCE_PS_TABLE, + RESOURCE_PSZ, + RESOURCE_PSZ_TABLE, + RESOURCE_SELECT, + RESOURCE_SELECT_TABLE, + RESOURCE_STRING, + RESOURCE_STRING_TABLE, + RESOURCE_SUPERZ, + RESOURCE_SUPERZ_TABLE, + RESOURCE_SUPER, + RESOURCE_SUPER_TABLE, + RESOURCE_TEX_BOY, + RESOURCE_FACE_BOY, + RESOURCE_FGNPCDATA, + RESOURCE_MESSAGE, + RESOURCE_MESSAGE_TABLE, + RESOURCE_MY_ORIGINAL, + RESOURCE_NEEDLEWORK_JOYBOOT, + RESOURCE_PLAYER_ROOM_FLOOR, + RESOURCE_PLAYER_ROOM_WALL, + RESOURCE_NPC_NAME_STR_TABLE, + RESOURCE_D_OBJ_NPC_STOCK_SCH, + RESOURCE_D_OBJ_NPC_STOCK_SCL, + RESOURCE_TITLE, + RESOURCE_MURA_SPRING, + RESOURCE_MURA_SUMMER, + RESOURCE_MURA_FALL, + RESOURCE_MURA_WINTER, + RESOURCE_ODEKAKE, + RESOURCE_OMAKE, + RESOURCE_EKI1, + RESOURCE_EKI1_2, + RESOURCE_EKI1_3, + RESOURCE_EKI1_4, + RESOURCE_EKI1_5, + RESOURCE_EKI2, + RESOURCE_EKI2_2, + RESOURCE_EKI2_3, + RESOURCE_EKI2_4, + RESOURCE_EKI2_5, + RESOURCE_EKI3, + RESOURCE_EKI3_2, + RESOURCE_EKI3_3, + RESOURCE_EKI3_4, + RESOURCE_EKI3_5, + RESOURCE_TEGAMI, + RESOURCE_TEGAMI2, + RESOURCE_FAMIKON, + RESOURCE_BOY1, + RESOURCE_BOY2, + RESOURCE_BOY3, + RESOURCE_BOY4, + RESOURCE_BOY5, + RESOURCE_BOY6, + RESOURCE_BOY7, + RESOURCE_BOY8, + RESOURCE_GIRL11, + RESOURCE_GIRL12, + RESOURCE_GIRL13, + RESOURCE_GIRL14, + RESOURCE_GIRL15, + RESOURCE_GIRL16, + RESOURCE_GIRL17, + RESOURCE_GIRL18, + RESOURCE_D_BG_ISLAND_SCH, - RESOURCE_NUM + RESOURCE_NUM }; extern void JW_UpdateVideoMode(); @@ -104,7 +104,7 @@ extern int JW_JUTGamepad_getErrorStatus(); extern u32 JW_JUTGamepad_getButton(); extern u32 JW_JUTGamepad_getTrigger(); extern f32 JW_JUTGamepad_getSubStickValue(); -extern int JW_JUTGamepad_getSubStickAngle(); +extern s16 JW_JUTGamepad_getSubStickAngle(); extern void JW_BeginFrame(); extern void JW_EndFrame(); extern int JW_setClearColor(u8 r, u8 g, u8 b); diff --git a/include/lb_rtc.h b/include/lb_rtc.h index 89c1987b..418dc094 100644 --- a/include/lb_rtc.h +++ b/include/lb_rtc.h @@ -15,6 +15,16 @@ extern "C" { #define lbRTC_YEAR_MIN 1901 #define lbRTC_YEAR_MAX 2099 +typedef struct OSRTCTime { // from lbrtc library in N64 + u8 sec; + u8 min; + u8 hour; + u8 day; + u8 weekday; + u8 month; + u16 year; +} OSRTCTime; + typedef u8 lbRTC_sec_t; typedef u8 lbRTC_min_t; typedef u8 lbRTC_hour_t; @@ -23,17 +33,7 @@ typedef u8 lbRTC_weekday_t; typedef u8 lbRTC_month_t; typedef u16 lbRTC_year_t; -typedef struct lbRTC_datetime_s { - lbRTC_sec_t sec; - lbRTC_min_t min; - lbRTC_hour_t hour; - lbRTC_day_t day; - lbRTC_weekday_t weekday; - lbRTC_month_t month; - lbRTC_year_t year; -} lbRTC_time_c; /* Name leaked in lbRTC_time_c_save_data_check */ - -typedef lbRTC_time_c OSRTCTime; +typedef OSRTCTime lbRTC_time_c; /* Name leaked in lbRTC_time_c_save_data_check */ typedef struct lbRTC_ymd_s { lbRTC_year_t year; diff --git a/include/libforest/emu64/emu64.hpp b/include/libforest/emu64/emu64.hpp index 90f33886..106f7542 100644 --- a/include/libforest/emu64/emu64.hpp +++ b/include/libforest/emu64/emu64.hpp @@ -1,5 +1,5 @@ -#ifndef EMU64_H -#define EMU64_H +#ifndef EMU64_HPP +#define EMU64_HPP #include "types.h" #include "va_args.h" @@ -10,6 +10,8 @@ #include "dolphin/gx.h" #include "dolphin/mtx.h" #include "sys_ucode.h" +#include "libforest/emu64/emu64_wrapper.h" +#include "sys_ucode.h" #ifdef EMU64_DEBUG #define AFLAGS_MAX 100 @@ -35,7 +37,6 @@ #define EMU64_WARN_TIME 600 - #define EMU64_DIRTY_FLAG_PRIM_COLOR 0 #define EMU64_DIRTY_FLAG_ENV_COLOR 1 #define EMU64_DIRTY_FLAG_BLEND_COLOR 2 @@ -70,491 +71,844 @@ #define EMU64_DIRTY_FLAG_TEX_MTX 31 #define NUM_DIRTY_FLAGS 32 +#define AFLAGS_RUN_MODE 0 +#define AFLAGS_SETUP_ALL_TEVSTAGES 1 +#define AFLAGS_DECAL_OFFSET_MODE 2 /* 0 = default, 1 = <, 2 = >=, n = off */ +#define AFLAGS_SET_DIRTY_FLAGS 3 +#define AFLAGS_SKIP_ALPHA_COMPARE 4 +#define AFLAGS_SKIP_TEXTURE_CONV 5 +#define AFLAGS_PRINT_COMMAND_INFO 6 +#define AFLAGS_FORCE_ZMODE_COMPARE_FUNC_LEQUAL 7 +#define AFLAGS_FORCE_PIPE_SYNC 8 +#define AFLAGS_SKIP_TILE_SETUP 9 +#define AFLAGS_LIGHT_DISABLE_DIFFUSION 10 +#define AFLAGS_PROJECTION_CALC_W 11 +#ifdef ANIMAL_FOREST_PLUS +#define AFLAGS_FORCE_TEV_CYCLEFLAGS 11 +#endif +#define AFLAGS_COMBINE_AUTO 12 +#define AFLAGS_DISABLED_TEXOBJS 13 +#ifdef ANIMAL_FOREST_PLUS +#define AFLAGS_DECAL_OFFSETZ_VALUE 14 +#define AFLAGS_SKIP_PROJECTION_TRANSFORM 15 +#else +#define AFLAGS_SKIP_W_CALCULATION 14 +#define AFLAGS_USE_GUVECMULT 15 +#endif +#define AFLAGS_SKIP_TRI2_COUNT_VERTS 16 +#define AFLAGS_FORCE_VTX_FLAG_COPY 17 +#define ALFAGS_TEV_ALPHA_KONST 18 +#define AFLAGS_MIN_POLYGONS 19 +#define AFLAGS_MAX_POLYGONS 20 +#define AFLAGS_SET_CULLMODE 21 +#define AFLAGS_WIREFRAME 22 /* Draws wireframe over polygons */ +#define AFLAGS_SKIP_COMBINE_TEV 27 +#define AFLAGS_FORCE_TEV_COMBINE_MODE 28 /* 1 = force shade, 2 = force d1 = ENV, Ad1 = ONE */ +#define AFLAGS_SKIP_MTX_NORMALIZATION 23 +#define AFLAGS_COPY_POSITION_MTX 25 +#define AFLAGS_SKIP_COMBINE_TEV 27 +#define AFLAGS_FORCE_TEV_COMBINE_MODE 28 /* 1 = force shade, 2 = force d1 = ENV, Ad1 = ONE */ +#define AFLAGS_JUTREPORT_SEGMENT_STATS 29 +#define AFLAGS_VTX_NORMAL_MODIFY_TYPE 37 +#define AFLAGS_OVERRIDE_TEXEDGEALPHA 39 +#define AFLAGS_DO_TEXTURE_LINEAR_CONVERT 48 +#define AFLAGS_FORCE_WRAPMODE_REPEAT 49 +#define AFLAGS_SKIP_DRAW_RECTANGLE 50 +#define AFLAGS_FORCE_G_CYC_COPY 51 +#define AFLAGS_TEX_GEN_LOD_MODE 52 +#define AFLAGS_DITHERMODE 59 +#define AFLAGS_TEXMTX_LEFT_ADJUST 64 +#define AFLAGS_TEXMTX_TOP_ADJUST 65 +#define AFLAGS_LIGHT_FORCE_ATTN_MODE 72 +#define AFLAGS_LIGHT_POSITION_MULTIPLIER 73 +#define AFLAGS_LIGHT_MOVE_TO_MODEL_SPACE 74 +#define AFLAGS_LIGHT_OVERRIDE_ATTN_K0 75 +#define AFLAGS_LIGHT_OVERRIDE_ATTN_K1 76 +#define AFLAGS_LIGHT_OVERRIDE_ATTN_K2 77 + #define EMU64_TLUT_IA16 0x0000 #define EMU64_TLUT_RGBA5551 0x8000 /* TODO: figure out where this actually belongs */ namespace std { - typedef struct __va_list_struct __tag_va_List; +typedef struct __va_list_struct __tag_va_List; } +float fastcast_float(register unsigned char* s) { + register float f; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f, 0(s), 1, 2 + } +#endif // clang-format on + + return f; +} + +float fastcast_float(register unsigned short* s) { + register float f; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f, 0(s), 1, 3 + } +#endif // clang-format on + + return f; +} + +float fastcast_float(register signed char* s) { + register float f; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f, 0(s), 1, 4 + } +#endif // clang-format on + + return f; +} + +float fastcast_float(register short* s) { + register float f; + +#ifdef __MWERKS__ // clang-format off + asm { + psq_l f, 0(s), 1, 5 + } +#endif // clang-format on + + return f; +} + +#define number(n) ARRAY_COUNT(n) + +void guMtxNormalize(GC_Mtx mtx); +void N64Mtx_to_DOLMtx(const Mtx* n64, MtxP gc); + typedef union { - GXColor color; - struct { - u8 r; - u8 g; - u8 b; - u8 a; - }; - u32 raw; + GXColor color; + struct { + u8 r; + u8 g; + u8 b; + u8 a; + } rgba; + u32 raw; } EmuColor; typedef struct { - Vec position; - union { - struct { - u16 _pad0:2; - u16 cull_z_greater:1; - u16 cull_z_lesser:1; - u16 cull_y_greater:1; - u16 cull_y_lesser:1; - u16 cull_x_greater:1; - u16 cull_x_lesser:1; - u16 _pad1:7; - u16 nonshared:1; + Vec position; + union { + struct { + u16 _pad0 : 2; + u16 cull_z_greater : 1; + u16 cull_z_lesser : 1; + u16 cull_y_greater : 1; + u16 cull_y_lesser : 1; + u16 cull_x_greater : 1; + u16 cull_x_lesser : 1; + u16 _pad1 : 7; + u16 nonshared : 1; + }; + u16 flag; }; - u16 flag; - }; - struct { - s16 s, t; - } tex_coords; - short pad; - Vec normal; - EmuColor color; + struct { + s16 s, t; + } tex_coords; + short pad; + Vec normal; + EmuColor color; } Vertex; typedef struct { - EmuColor color; - Vec position; + EmuColor color; + Vec position; - u8 unk[12]; + u8 unk[12]; - struct { - f32 kc, k1, kq; /*kc = k0, kq = k2 */ - } attenuation; + struct { + f32 kc, k1, kq; /*kc = k0, kq = k2 */ + } attenuation; } EmuLight; typedef struct { - void* img_addr; /* Texture RAM address */ - u16 width; /* Texture width */ - u16 height; /* Texture height */ - u8 format; /* Texture format */ - u8 size; /* Size in bpp */ - u8 tlut_name; /* Palette/TLUT idx */ - u8 pad; + void* img_addr; /* Texture RAM address */ + u16 width; /* Texture width */ + u16 height; /* Texture height */ + u8 format; /* Texture format */ + u8 size; /* Size in bpp */ + u8 tlut_name; /* Palette/TLUT idx */ + u8 pad; } emu64_texture_info; -static inline void get_blk_wd_ht(unsigned int siz, unsigned int* blk_wd, unsigned int* blk_ht) { - static u8 blk_tbl[4][2] = { - { 8, 8 }, // G_IM_SIZ_4b - { 8, 4 }, // G_IM_SIZ_8b - { 4, 4 }, // G_IM_SIZ_16b - { 4, 4 } // G_IM_SIZ_32b - }; +typedef union GXTexFmts { + GXTexFmt texfmt; + GXCITexFmt citexfmt; + u32 raw; +} GXTexFmts; - *blk_wd = blk_tbl[siz][0]; - *blk_ht = blk_tbl[siz][1]; +static inline void get_blk_wd_ht(unsigned int siz, unsigned int* blk_wd, unsigned int* blk_ht) { + static u8 blk_tbl[4][2] = { + { 8, 8 }, // G_IM_SIZ_4b + { 8, 4 }, // G_IM_SIZ_8b + { 4, 4 }, // G_IM_SIZ_16b + { 4, 4 } // G_IM_SIZ_32b + }; + + *blk_wd = blk_tbl[siz][0]; + *blk_ht = blk_tbl[siz][1]; } extern void get_dol_wd_ht(unsigned int siz, unsigned int in_wd, unsigned int in_ht, unsigned int* wd, unsigned int* ht); static inline unsigned int rgba5551_to_rgb5a3(unsigned int rgba5551) { - if ((rgba5551 & 1)) { - return 0x8000 | (rgba5551 >> 1); // no transparency so simply swap - } - else { - return ((rgba5551 >> 3) & 0xF0) | ((rgba5551 >> 4) & ~0xFF) | ((rgba5551 >> 2) & 0x0F); - } + unsigned int rgb5a3; + + switch (rgba5551 & 1) { + default: + rgb5a3 = 0x8000 | (rgba5551 >> 1); // no transparency so simply swap + break; + case 0: + rgb5a3 = ((rgba5551 >> 4) & ~0xFF) | ((rgba5551 >> 3) & 0xF0) | ((rgba5551 >> 2) & 0x0F); + break; + } + + return rgb5a3; } static inline unsigned int get_dol_tex_siz(unsigned int siz, unsigned int in_wd, unsigned int in_ht) { - unsigned int wd; - unsigned int ht; + unsigned int wd; + unsigned int ht; - get_dol_wd_ht(siz, in_wd, in_ht, &wd, &ht); - return ((wd * ht) << siz) / 2; + get_dol_wd_ht(siz, in_wd, in_ht, &wd, &ht); + return ((wd * ht) << siz) / 2; } -static inline unsigned int get_dol_tlut_size(unsigned int count) { - return ALIGN_NEXT(count * sizeof(u16), 32); +static inline unsigned int get_dol_tlut_siz(unsigned int count) { + unsigned int siz = count * sizeof(u16); + return ALIGN_NEXT(siz, 32); } -#define AFLAGS_COMBINE_AUTO 12 -#define ALFAGS_TEV_ALPHA_KONST 18 -#define AFLAGS_2TRIS 22 /* Draws the current polygon as two triangles */ -#define AFLAGS_SKIP_COMBINE_TEV 27 -#define AFLAGS_FORCE_TEV_COMBINE_MODE 28 /* 1 = force shade, 2 = force d1 = ENV, Ad1 = ONE */ - class aflags_c { -public: - #ifndef EMU64_DEBUG - - int getMaxArray() { return AFLAGS_MAX; } - void set(u32 idx, u8 val) { this->flags[idx] = val; } /* @fabricated */ - int operator[](u32 idx) { return this->flags[idx]; } /* @fabricated */ + public: +#ifdef AFLAGS_DEBUG + static u32 getMaxArray() { + return AFLAGS_MAX; + } + void set(unsigned int idx, u8 val) { + this->flags[idx] = val; + } /* @fabricated */ + u8 operator[](unsigned int idx) { + return this->flags[idx]; + } /* @fabricated */ - #else +#else + static u32 getMaxArray() { + return AFLAGS_MAX; + } + void set(unsigned int idx, u8 val) { + } + u8 operator[](unsigned int idx) { + return 0; + } +#endif - int getMaxArray() { return AFLAGS_MAX; } - void set(u32 idx, u8 val) { } - int operator[](u32 idx) { return 0; } - - #endif - -private: - int flags[AFLAGS_MAX]; + private: + int flags[AFLAGS_MAX]; }; class Texture { -public: - /* @weak */ - Texture(void* img_p, u16 w, u16 h, u8 fmt, u8 bpp) { - this->img_p = img_p; - this->width = w; - this->height = h; - this->n64_bpp = bpp; - this->n64_fmt = fmt; - this->blockX_size = EMU64_TEX_BLOCK_SIZE_X; - this->blockY_size = EMU64_TEX_BLOCK_SIZE_Y; - } - - /* @??? (maybe not weak?) */ - ~Texture() { }; - - /* @weak */ - u32 getOffset(int x, int y) { - const int size_x = sizeof(u16) * EMU64_TEX_BLOCK_SIZE_X; - const int size_y = sizeof(u16) * EMU64_TEX_BLOCK_SIZE_Y; - - return ((((u32)x / 8) + ((u32)(((u32)y / 8) * this->width) / 8)) * (size_x * size_y)) + - ((u32)y & 7) * size_x + - ((u32)x & 7); - } - - /* @weak */ - u32 getTexel(int block_x, int block_y) { - int x = (1 << this->blockX_size) - 1; - int y = (1 << this->blockY_size) - 1; - - block_x &= x; - block_y &= y; - - u32 ofs = this->getOffset(block_x, block_y); - - switch (this->n64_bpp) { - case G_IM_SIZ_4b: - { - u8* img_p = ((u8*)this->img_p) + ofs / 2; - if ((block_x & 1) == 0) { - return *img_p >> 4; - } - else { - return *img_p & 0xF; - } - } - - case G_IM_SIZ_8b: - { - return ((u8*)this->img_p)[ofs]; - } - - case G_IM_SIZ_16b: - { - return ((u16*)this->img_p)[ofs]; - } - - default: - { - return ((u32*)this->img_p)[ofs]; - } + public: + /* @weak */ + Texture(void* img_p, u16 w, u16 h, u8 fmt, u8 bpp) { + this->img_p = img_p; + this->width = w; + this->height = h; + this->n64_bpp = bpp; + this->n64_fmt = fmt; + this->blockX_size = EMU64_TEX_BLOCK_SIZE_X; + this->blockY_size = EMU64_TEX_BLOCK_SIZE_Y; } - } - /* @weak */ - void putTexel(int block_x, int block_y, u32 texel) { - int x = (1 << this->blockX_size) - 1; - int y = (1 << this->blockY_size) - 1; - - block_x &= x; - block_y &= y; + /* @??? (maybe not weak?) */ + ~Texture() {}; - u32 ofs = this->getOffset(block_x, block_y); + /* @weak */ + u32 getOffset(int x, int y) { + const int size_x = sizeof(u16) * EMU64_TEX_BLOCK_SIZE_X; + const int size_y = sizeof(u16) * EMU64_TEX_BLOCK_SIZE_Y; - switch (this->n64_bpp) { - case G_IM_SIZ_4b: - { - u8* img_p = ((u8*)this->img_p) + ofs / 2; - if ((block_x & 1) == 0) { - *img_p = (*img_p & 0x0F) | (texel << 4); - } - else { - *img_p = (*img_p & 0xF0) | (texel & 0xF); - } - } - - case G_IM_SIZ_8b: - { - ((u8*)this->img_p)[ofs] = texel; - } - - case G_IM_SIZ_16b: - { - ((u16*)this->img_p)[ofs] = texel; - } - - case G_IM_SIZ_32b: - { - ((u32*)this->img_p)[ofs] = texel; - } + return ((((u32)x / 8) + ((u32)(((u32)y / 8) * this->width) / 8)) * (size_x * size_y)) + ((u32)y & 7) * size_x + + ((u32)x & 7); } - } - /* Member variables */ - void* img_p; - u16 width; - u16 height; - u8 blockX_size; - u8 blockY_size; - u8 n64_fmt; - u8 n64_bpp; + /* @weak */ + u32 getTexel(int block_x, int block_y) { + int x = (1 << this->blockX_size) - 1; + int y = (1 << this->blockY_size) - 1; + + block_x &= x; + block_y &= y; + + u32 ofs = this->getOffset(block_x, block_y); + + switch (this->n64_bpp) { + case G_IM_SIZ_4b: { + u8* img_p = ((u8*)this->img_p) + ofs / 2; + if ((block_x & 1) == 0) { + return *img_p >> 4; + } else { + return *img_p & 0xF; + } + } + + case G_IM_SIZ_8b: { + return ((u8*)this->img_p)[ofs]; + } + + case G_IM_SIZ_16b: { + return ((u16*)this->img_p)[ofs]; + } + + default: { + return ((u32*)this->img_p)[ofs]; + } + } + } + + /* @weak */ + void putTexel(int block_x, int block_y, u32 texel) { + int x = (1 << this->blockX_size) - 1; + int y = (1 << this->blockY_size) - 1; + + block_x &= x; + block_y &= y; + + u32 ofs = this->getOffset(block_x, block_y); + + switch (this->n64_bpp) { + case G_IM_SIZ_4b: { + u8* img_p = ((u8*)this->img_p) + ofs / 2; + if ((block_x & 1) == 0) { + *img_p = (*img_p & 0x0F) | (texel << 4); + } else { + *img_p = (*img_p & 0xF0) | (texel & 0xF); + } + } + + case G_IM_SIZ_8b: { + ((u8*)this->img_p)[ofs] = texel; + } + + case G_IM_SIZ_16b: { + ((u16*)this->img_p)[ofs] = texel; + } + + case G_IM_SIZ_32b: { + ((u32*)this->img_p)[ofs] = texel; + } + } + } + + /* Member variables */ + void* img_p; + u16 width; + u16 height; + u8 blockX_size; + u8 blockY_size; + u8 n64_fmt; + u8 n64_bpp; }; +#define EMU64_PRINTF_ENABLED_FLAG (1 << 0) #define EMU64_PRINTF_FLAG (1 << 1) #define EMU64_PRINTF1_FLAG (1 << 2) #define EMU64_PRINTF2_FLAG (1 << 3) #define EMU64_PRINTF3_FLAG (1 << 4) class emu64_print { -public: - void Printf(const char* fmt, ...) { - va_list list; - - if ((this->print_flags & EMU64_PRINTF_FLAG)) { - va_start(list, fmt); - this->Vprintf(fmt, list); - va_end(list); + public: + void Printf(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } } - } - void Printf0(const char* fmt, ...) { - va_list list; + void Printf0(const char* fmt, ...) { + va_list list; - va_start(list, fmt); - this->Vprintf(fmt, list); - va_end(list); - } - - void Printf1(const char* fmt, ...) { - va_list list; - - if ((this->print_flags & EMU64_PRINTF1_FLAG)) { - va_start(list, fmt); - this->Vprintf(fmt, list); - va_end(list); + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); } - } - void Printf2(const char* fmt, ...) { - va_list list; - - if ((this->print_flags & EMU64_PRINTF2_FLAG)) { - va_start(list, fmt); - this->Vprintf(fmt, list); - va_end(list); + void Printf1(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF1_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } } - } - void Printf3(const char* fmt, ...) { - va_list list; - - if ((this->print_flags & EMU64_PRINTF3_FLAG)) { - va_start(list, fmt); - this->Vprintf(fmt, list); - va_end(list); + void Printf2(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF2_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } } - } -protected: - u8 print_flags; + void Printf3(const char* fmt, ...) { + va_list list; -private: - void Vprintf(const char* fmt, std::__tag_va_List* va_list) { vprintf(fmt, va_list); } + if ((this->print_flags & EMU64_PRINTF3_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } + } + + protected: + u8 print_flags; + + private: + void Vprintf(const char* fmt, std::__tag_va_List* va_list) { + vprintf(fmt, va_list); + } }; -#define EMU64_ASSERTLINE(cond, line) \ - if (!cond) { \ - this->panic(#cond, __FILE__, line); \ - } +#define EMU64_ASSERTLINE(cond, line) \ + if (!cond) { \ + this->panic(#cond, __FILE__, line); \ + } #define EMU64_ASSERT(cond) EMU64_PANICLINE(cond, __LINE__) -class emu64 : public emu64_print { -public: - void emu64_init(); - void printInfo(); - void panic(char* fmt, char* file, int line); - - void emu64_change_ucode(void* ucode_p); - void texconv_tile(u8* addr, u8* converted_addr, unsigned int wd, unsigned int fmt, unsigned int siz, unsigned int start_wd, unsigned int start_ht, unsigned int end_wd, unsigned int end_ht, unsigned int line_siz); - unsigned int tmem_swap(unsigned int ofs, unsigned int blk_siz) { return ofs ^ ((ofs / blk_siz) & 4); } - void tlutconv_rgba5551(u16* rgba5551_p, u16* rgb5a3_p, unsigned int count); - void tlutconv_ia16(u16* src_ia16_p, u16* dst_ia16_p, unsigned int count); - u8* texconv_tile_new(u8* addr, unsigned int wd, unsigned int fmt, unsigned int siz, unsigned int start_wd, unsigned int start_ht, unsigned int end_wd, unsigned int end_ht, unsigned int line_siz); - u16* tlutconv_new(u16* tlut, unsigned int tlut_fmt, unsigned int count); - void tlutconv(u16* src_tlut, u16* dst_tlut, unsigned int count, unsigned int tlut_fmt); - int replace_combine_to_tev(Gfx* g); - int combine_auto(); - int combine_tev(); - void combine_manual(); - const char* combine_name(u32 param, u32 type); - const char* combine_alpha(int param, int type); - void print_combine(u64 combine); +class emu64_print { + public: + void Printf(const char* fmt, ...) { + va_list list; - /* N64 texture format[N64 bit size] -> dol texture format */ - static u16 fmtxtbl[8][4]; - static char* warningString[EMU64_WARNING_COUNT]; - static int warningTime[EMU64_WARNING_COUNT]; - static bool displayWarning; + if ((this->print_flags & EMU64_PRINTF_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } + } -private: - /* 0x0000 */ // u8 emu64_print::print_flags; - /* 0x0001 */ u8 print_commands; - /* 0x0002 */ bool disable_polygons; - /* 0x0004 */ u32 err_count; - /* 0x0008 */ u32 cmds_processed; /* ??? */ - /* 0x000C */ u32 total_vertices; - /* 0x0010 */ u32 vtx_load_calls; - /* 0x0014 */ u32 triangles; - /* 0x0018 */ u32 double_triangles; - /* 0x001C */ u32 quads; - /* 0x0020 */ u32 lines; - /* 0x0024 */ u32 load_ucode_calls; - /* 0x0028 */ u32 num_unknown_cmds; - /* 0x002C */ u32 num_unknown_ucodes; - /* 0x0030 */ int polygons; - /* 0x0034 */ u32 cullDL_calls; - /* 0x0038 */ u32 cullDL_outside_obj_count; - /* 0x003C */ u32 cullDL_visible_obj_count; - /* 0x0040 */ Gfx* gfx_p; - /* 0x0048 */ Gfx gfx; - /* 0x0050 */ u8 gfx_cmd; - /* 0x0054 */ void* work_ptr; - /* 0x0058 */ int end_dl; - /* 0x005C */ s8 ucode_len; - /* 0x0060 */ ucode_info* ucode_info; - /* 0x0064 */ int ucode_type; // maybe? - /* 0x0068 */ int _0068; /* ??? */ - /* 0x006C */ void* segments[NUM_SEGMENTS]; - /* 0x00AC */ Gfx* DL_stack[DL_MAX_STACK_LEVEL]; - /* 0x00F4 */ s8 DL_stack_level; - /* 0x00F8 */ u32 othermode_high; - /* 0x00FC */ u32 othermode_low; - /* 0x0100 */ u32 geometry_mode; - /* 0x0104 */ u32 _0104; - /* 0x0108 */ Gfx combine; - /* 0x0110 */ emu64_texture_info texture_info[NUM_TILES]; - /* 0x0170 */ Gsetimg2 setimg2_cmds[NUM_TILES]; - /* 0x01B0 */ void* tlut_addresses[NUM_TLUTS]; - /* 0x01F0 */ GXTexObj tex_objs[NUM_TILES]; - /* 0x02F0 */ GXTlutObj tlut_objs[NUM_TLUTS]; - /* 0x03B0 */ bool use_dolphin_settile[NUM_TILES]; - /* 0x03B8 */ Gsettile settile_cmds[NUM_TILES]; - /* 0x03F8 */ Gsettile_dolphin settile_dolphin_cmds[NUM_TILES]; - /* 0x0438 */ Gsettilesize_dolphin settilesize_dolphin_cmds[NUM_TILES]; - /* 0x0478 */ Gsetimg_new now_setimg; - /* 0x0480 */ u8 tex_edge_alpha; + void Printf0(const char* fmt, ...) { + va_list list; - /* 0x0484 */ union { - u32 primdepth; - struct { - u16 primdepth_z; /* Z value */ - u16 primdepth_dz; /* Delta Z */ - }; - }; + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } - /* 0x0488 */ EmuColor primitive_color; /* GX_TEVREG1 */ - /* 0x048C */ EmuColor environment_color; /* GX_TEVREG2 */ - /* 0x0490 */ EmuColor blend_color; - /* 0x0494 */ EmuColor fog_color; - /* 0x0498 */ s16 fog_zmult; - /* 0x049A */ s16 fog_zoffset; - /* 0x049C */ EmuColor fill_color; - /* 0x04A0 */ EmuColor fill_tev_color; /* GX_TEVREG0 */ - /* 0x04A4 */ bool dirty_flags[NUM_DIRTY_FLAGS]; - /* 0x04C4 */ GC_Mtx original_projection_mtx; - /* 0x04F4 */ GC_Mtx position_mtx; - /* 0x0524 */ GC_Mtx model_view_mtx_stack[MTX_STACK_SIZE]; - /* 0x0704 */ GC_Mtx position_mtx_stack[MTX_STACK_SIZE]; - /* 0x08E4 */ Mtx44 projection_mtx; - /* 0x0924 */ struct { - struct { - s8 x, y, z; - } x; - struct { - s8 x, y, z; - } y; - } lookAt; - /* 0x092C */ f32 near; /* Near clipping plane */ - /* 0x0930 */ f32 far; /* Far clipping plane */ - /* 0x0934 */ GC_Mtx model_view_mtx; - /* 0x0964 */ GC_Mtx _0964; /* UNCONFIRMED TYPE */ - /* 0x0994 */ int mtx_stack_size; - /* 0x0998 */ Gtexture_internal texture_gfx; - /* 0x09A0 */ f32 texture_scale_s; /* x-scale */ - /* 0x09A4 */ f32 texture_scale_t; /* y-scale */ - /* 0x09A8 */ Mtx44 ortho_mtx; - /* 0x09E8 */ GXProjectionType projection_type; - /* 0x09EC */ GC_Mtx perspective_mtx; - /* 0x0A1C */ u32 _0A1C; - /* 0x0A20 */ u32 rdpHalf_1; - /* 0x0A24 */ EmuLight lights[NUM_LIGHTS]; - /* 0x0B64 */ u8 num_lights; - /* 0x0B68 */ u32 lookatx_cnt; - /* 0x0B6C */ u32 lookaty_cnt; - /* 0x0B70 */ u32 _0B70; - /* 0x0B74 */ u32 texconv_cnt; - /* 0x0B78 */ u32 vertex_cnt; - /* 0x0B7C */ u32 texconv_time; - /* 0x0B80 */ u32 rsprdp_time; - /* 0x0B84 */ u32 combine_time; - /* 0x0B88 */ u32 spvertex_time; - /* 0x0B8C */ u32 setup_time; - /* 0x0B90 */ u32 loadblock_time; - /* 0x0B94 */ u32 loadtlut_time; - /* 0x0B98 */ u32 matrix_time; - /* 0x0B9C */ u32 polygons_time; - /* 0x0BA0 */ u32 dirty_check_time; - /* 0x0BA4 */ u32 dirty_lightX_time; - /* 0x0BA8 */ u32 dirty_lightX_cnt; - /* 0x0BAC */ u32 dirty_light_time; - /* 0x0BB0 */ u32 dirty_light_cnt; - /* 0x0BB4 */ u32 dirty_tex_time; - /* 0x0BB8 */ u32 dirty_tex_cnt; - /* 0x0BBC */ u32 dirty_tex1_time; - /* 0x0BC0 */ u32 dirty_tex1_cnt; - /* 0x0BC4 */ u32 dirty_tex2_time; - /* 0x0BC8 */ u32 dirty_tex2_cnt; - /* 0x0BCC */ u32 dirty_texmtx_time; - /* 0x0BD0 */ u32 dirty_texmtx_cnt; - /* 0x0BD4 */ u32 dirty_proj_time; - /* 0x0BD8 */ u32 dirty_primcolor_time; - /* 0x0BDC */ u32 dirty_envcolor_time; - /* 0x0BE0 */ u32 dirty_fillcolor_time; - /* 0x0BE4 */ u32 dirty_combine_mode_time; - /* 0x0BE8 */ u32 dirty_othermodeh_time; - /* 0x0BEC */ u32 dirty_othermodel_time; - /* 0x0BF0 */ u32 dirty_geometory_time; /* Yes, the devs misspelt this */ - /* 0x0BF4 */ u32 setuptex_time; - /* 0x0BF8 */ struct { - u32 time; - u32 calls; - } command_info[NUM_COMMANDS]; - /* 0x0DF8 */ u32 texture_cache_select_time; - /* 0x0DFC */ u32 guMtxL2F_time; - /* 0x0E00 */ u32 guMtxL2F_cnt; - /* 0x0E04 */ u32 combine_auto_cnt[5]; - /* 0x0E18 */ bool using_nonshared_mtx; - /* 0x0E1C */ Vertex vertices[VTX_COUNT]; - /* 0x201C */ u8 texture_adjust_mode; - /* 0x2020 */ u32 resolved_addresses; - /* 0x2024 */ u32 _2024; - /* 0x2028 */ u32 _2028; - /* 0x202C */ u32 _202C; - /* 0x2030 */ u32 abnormal_addresses; - /* 0x2034 */ bool rdp_pipe_sync_needed; - /* 0x2035 */ bool segment_set; - /* 0x2038 */ Gfx* dl_history[DL_HISTORY_COUNT]; - /* 0x2078 */ u8 dl_history_start; + void Printf1(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF1_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } + } + + void Printf2(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF2_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } + } + + void Printf3(const char* fmt, ...) { + va_list list; + + if ((this->print_flags & EMU64_PRINTF3_FLAG)) { + va_start(list, fmt); + this->Vprintf(fmt, list); + va_end(list); + } + } + + protected: + u8 print_flags; + + private: + void Vprintf(const char* fmt, std::__tag_va_List* va_list) { + vprintf(fmt, va_list); + } }; +#define EMU64_ASSERTLINE(cond, line) \ + if (!(cond)) { \ + this->panic(#cond, __FILE__, line); \ + } + +#define EMU64_PRINTF(msg, ...) this->Printf0(msg, __VA_ARGS__); + +#ifdef EMU64_DEBUG +#define EMU64_WARN(msg) \ + if (this->print_commands) { \ + this->Printf1(msg); \ + } +#define EMU64_WARNF(msg, ...) \ + if (this->print_commands) { \ + this->Printf1(msg, __VA_ARGS__); \ + } + +#define EMU64_LOG(msg) \ + if (this->print_commands) { \ + this->Printf2(msg); \ + } +#define EMU64_LOGF(msg, ...) \ + if (this->print_commands) { \ + this->Printf2(msg, __VA_ARGS__); \ + } + +#define EMU64_INFO(msg) \ + if (this->print_commands) { \ + this->Printf3(msg); \ + } +#define EMU64_INFOF(msg, ...) \ + if (this->print_commands) { \ + this->Printf3(msg, __VA_ARGS__); \ + } + +#define EMU64_ASSERTLINE_DEBUG(cond, line) EMU64_ASSERTLINE(cond, line) +#else +#define EMU64_WARN(msg) +#define EMU64_WARNF(msg, ...) + +#define EMU64_LOG(msg) +#define EMU64_LOGF(msg, ...) + +#define EMU64_INFO(msg) +#define EMU64_INFOF(msg, ...) + +#define EMU64_ASSERTLINE_DEBUG(cond, line) \ + do { \ + } while (0) +#endif + +#define EMU64_ASSERT(cond) EMU64_ASSERTLINE(cond, __LINE__) + +#define EMU64_PRINT_MEMBER(member) \ + do { \ + this->Printf0(#member " = %u\n", this->##member); \ + } while (0) + +#ifdef EMU64_DEBUG +#define EMU64_TIMED_SEGMENT_BEGIN() \ + { \ + u32 __timer_start = osGetCount(); \ + do { \ + } while (0) +#define EMU64_TIMED_SEGMENT_END(stat) \ + this->#stat += (osGetCount() - __timer_start); \ + (void)__timer_start; \ + } \ + do { \ + } while (0) +#else +#define EMU64_TIMED_SEGMENT_BEGIN() +#define EMU64_TIMED_SEGMENT_END(stat) +#endif + +#define EMU64_CAN_DRAW_POLYGON() \ + (aflags[AFLAGS_MAX_POLYGONS] == 0 || \ + (aflags[AFLAGS_MIN_POLYGONS] <= this->polygons && this->polygons < aflags[AFLAGS_MAX_POLYGONS])) + +class emu64 : public emu64_print { + public: + void emu64_init(); + void emu64_cleanup(); + void printInfo(); + void panic(char* msg, char* file, int line); + + void emu64_change_ucode(void* ucode_p); + void texconv_tile(u8* addr, u8* converted_addr, unsigned int wd, unsigned int fmt, unsigned int siz, + unsigned int start_wd, unsigned int start_ht, unsigned int end_wd, unsigned int end_ht, + unsigned int line_siz); + unsigned int tmem_swap(unsigned int ofs, unsigned int blk_siz) { + return ofs ^ ((ofs / blk_siz) & 4); + } + void tlutconv_rgba5551(u16* rgba5551_p, u16* rgb5a3_p, unsigned int count); + void tlutconv_ia16(u16* src_ia16_p, u16* dst_ia16_p, unsigned int count); + u8* texconv_tile_new(u8* addr, unsigned int wd, unsigned int fmt, unsigned int siz, unsigned int start_wd, + unsigned int start_ht, unsigned int end_wd, unsigned int end_ht, unsigned int line_siz); + /* @weak */ + u8* texconv_block_new(u8* addr, unsigned int wd, unsigned int ht, unsigned int fmt, unsigned int size, + unsigned int line_siz) { + return this->texconv_tile_new(addr, wd, fmt, size, 0, 0, wd - 1, ht - 1, line_siz); + } + u16* tlutconv_new(u16* tlut, unsigned int tlut_fmt, unsigned int count); + void tlutconv(u16* src_tlut, u16* dst_tlut, unsigned int count, unsigned int tlut_fmt); + int replace_combine_to_tev(Gfx* g); + int combine_auto(); + int combine_tev(); + void combine_manual(); + void combine(); + void zmode(); + void blend_mode(); + void alpha_compare(); + void cullmode(); + void texture_gen(int tile); + void texture_matrix(); + void disp_matrix(GC_Mtx mtx); + const char* segchk(u32 seg); + const char* combine_name(u32 param, u32 type); + const char* combine_alpha(int param, int type); + const char* combine_tev_color_name(u32 color_param); + const char* combine_tev_alpha_name(u32 alpha_param); + void print_geomflags(u32 flags); + void show_render(u32 data); + void show_vtx(Vtx* vtx, int count, int begin); + void print_combine(u64 combine); + void print_combine_tev(u64 combine_tev); + void print_guMtxXFM1F_dol2(MtxP mtx, GXProjectionType type, float x, float y, float z); + u32 seg2k0(u32 seg); + void setup_texture_tile(int tile); + void setup_1tri_2tri_1quad(unsigned int vtx_idx); + void draw_1tri_2tri_1quad(unsigned int n_verts, ...); + void fill_rectangle(float x0, float y0, float x1, float y1); + void draw_rectangle(Gtexrect2* rect); + void dirty_check(int tile, int n_tiles, int do_texture_matrix); + void set_position(unsigned int v); + void set_position3(unsigned int v0, unsigned int v1, unsigned int v2); + void set_position4(unsigned int v0, unsigned int v1, unsigned int v2, unsigned int v3); + + /* F3DEX2_AC opcodes */ + void dl_G_SPNOOP(); + void dl_G_DL(); + void dl_G_RDPHALF_1(); + void dl_G_TEXRECT(); + void dl_G_LOAD_UCODE(); + void dl_G_ENDDL(); + void dl_G_SETTILE(); + void dl_G_SETTILE_DOLPHIN(); + void dl_G_LOADTILE(); + void dl_G_LOADBLOCK(); + void dl_G_SETTILESIZE(); + void dl_G_LOADTLUT(); + void dl_G_SETCOMBINE_NOTEV(); + void dl_G_SETCOMBINE(); + void dl_G_SETCOMBINE_TEV(); + void dl_G_SETOTHERMODE_H(); + void dl_G_SETOTHERMODE_L(); + void dl_G_RDPSETOTHERMODE(); /* gsDPSetOtherMode */ + void dl_G_SETSCISSOR(); + void dl_G_FILLRECT(); + void dl_G_SETCIMG(); + void dl_G_SETZIMG(); + void dl_G_SETTIMG(); + void dl_G_SETENVCOLOR(); + void dl_G_SETBLENDCOLOR(); + void dl_G_SETFOGCOLOR(); + void dl_G_SETFILLCOLOR(); + void dl_G_SETTEXEDGEALPHA(); + void dl_G_SETPRIMDEPTH(); + void dl_G_SETPRIMCOLOR(); + void dl_G_RDPFULLSYNC(); + void dl_G_RDPPIPESYNC(); + void dl_G_RDPTILESYNC(); + void dl_G_RDPLOADSYNC(); + void dl_G_NOOP(); + void dl_G_MTX(); + void dl_G_VTX(); + void dl_G_MODIFYVTX(); + void dl_G_LINE3D(); + void dl_G_TRI1(); + void dl_G_TRIN_INDEPEND(); + void dl_G_TRIN(); + void dl_G_QUADN(); + void dl_G_TRI2(); + void dl_G_QUAD(); + void dl_G_CULLDL(); + void dl_G_BRANCH_Z(); + void dl_G_TEXTURE(); + void dl_G_POPMTX(); + void dl_G_GEOMETRYMODE(); + void dl_G_MOVEWORD(); + void dl_G_MOVEMEM(); + void dl_G_SPECIAL_1(); + + u32 emu64_taskstart_r(Gfx* dl_p); + void emu64_taskstart(Gfx* dl_p); + void emu64_set_ucode_info(int len, ucode_info* info); + void emu64_set_first_ucode(void* ucode_p); + void emu64_set_verbose(int verbose); + + /* N64 texture format[N64 bit size] -> dol texture format */ + static const u16 fmtxtbl[8][4]; + static char* warningString[EMU64_WARNING_COUNT]; + static u32 warningTime[EMU64_WARNING_COUNT]; + static bool displayWarning; + + private: + /* 0x0000 */ // u8 emu64_print::print_flags; + /* 0x0001 */ s8 print_commands; + /* 0x0002 */ bool disable_polygons; + /* 0x0004 */ u32 err_count; + /* 0x0008 */ u32 cmds_processed; /* ??? */ + /* 0x000C */ u32 total_vertices; + /* 0x0010 */ u32 vtx_load_calls; + /* 0x0014 */ u32 triangles; + /* 0x0018 */ u32 double_triangles; + /* 0x001C */ u32 quads; + /* 0x0020 */ u32 lines; + /* 0x0024 */ u32 load_ucode_calls; + /* 0x0028 */ u32 num_unknown_cmds; + /* 0x002C */ u32 num_unknown_ucodes; + /* 0x0030 */ int polygons; + /* 0x0034 */ u32 cullDL_calls; + /* 0x0038 */ u32 cullDL_outside_obj_count; + /* 0x003C */ u32 cullDL_visible_obj_count; + /* 0x0040 */ Gfx* gfx_p; + /* 0x0048 */ Gfx gfx; + /* 0x0050 */ u8 gfx_cmd; + /* 0x0054 */ void* work_ptr; + /* 0x0058 */ int end_dl; + /* 0x005C */ s8 ucode_len; + /* 0x0060 */ ucode_info* ucode_info_p; + /* 0x0064 */ int ucode_type; // maybe? + /* 0x0068 */ int _0068; /* ??? */ + /* 0x006C */ u32 segments[NUM_SEGMENTS]; + /* 0x00AC */ u32 DL_stack[DL_MAX_STACK_LEVEL]; + /* 0x00F4 */ s8 DL_stack_level; + /* 0x00F8 */ u32 othermode_high; + /* 0x00FC */ u32 othermode_low; + /* 0x0100 */ u32 geometry_mode; + /* 0x0104 */ u32 _0104; + /* 0x0108 */ Gfx combine_gfx; + /* 0x0110 */ emu64_texture_info texture_info[NUM_TILES]; + /* 0x0170 */ Gsetimg2 setimg2_cmds[NUM_TILES]; + /* 0x01B0 */ void* tlut_addresses[NUM_TLUTS]; + /* 0x01F0 */ GXTexObj tex_objs[NUM_TILES]; + /* 0x02F0 */ GXTlutObj tlut_objs[NUM_TLUTS]; + /* 0x03B0 */ bool use_dolphin_settile[NUM_TILES]; + /* 0x03B8 */ Gsettile settile_cmds[NUM_TILES]; + /* 0x03F8 */ Gsettile_dolphin settile_dolphin_cmds[NUM_TILES]; + /* 0x0438 */ Gsettilesize_Dolphin settilesize_dolphin_cmds[NUM_TILES]; + /* 0x0478 */ Gsetimg_new now_setimg; + /* 0x0480 */ u8 tex_edge_alpha; + + /* 0x0484 */ union { + u32 primdepth; + struct { + u16 primdepth_z; /* Z value */ + u16 primdepth_dz; /* Delta Z */ + }; + }; + + /* 0x0488 */ EmuColor primitive_color; /* GX_TEVREG1 */ + /* 0x048C */ EmuColor environment_color; /* GX_TEVREG2 */ + /* 0x0490 */ EmuColor blend_color; + /* 0x0494 */ EmuColor fog_color; + /* 0x0498 */ s16 fog_zmult; + /* 0x049A */ s16 fog_zoffset; + /* 0x049C */ EmuColor fill_color; + /* 0x04A0 */ EmuColor fill_tev_color; /* GX_TEVREG0 */ + /* 0x04A4 */ bool dirty_flags[NUM_DIRTY_FLAGS]; + /* 0x04C4 */ GC_Mtx original_projection_mtx; + /* 0x04F4 */ GC_Mtx position_mtx; + /* 0x0524 */ GC_Mtx model_view_mtx_stack[MTX_STACK_SIZE]; + /* 0x0704 */ GC_Mtx position_mtx_stack[MTX_STACK_SIZE]; + /* 0x08E4 */ Mtx44 projection_mtx; + /* 0x0924 */ struct { + struct { + s8 x, y, z; + } x; + struct { + s8 x, y, z; + } y; + } lookAt; + /* 0x092C */ f32 near; /* Near clipping plane */ + /* 0x0930 */ f32 far; /* Far clipping plane */ + /* 0x0934 */ GC_Mtx model_view_mtx; + /* 0x0964 */ GC_Mtx _0964; /* UNCONFIRMED TYPE */ + /* 0x0994 */ int mtx_stack_size; + /* 0x0998 */ Gtexture_internal texture_gfx; + /* 0x09A0 */ f32 texture_scale_s; /* x-scale */ + /* 0x09A4 */ f32 texture_scale_t; /* y-scale */ + /* 0x09A8 */ Mtx44 ortho_mtx; + /* 0x09E8 */ GXProjectionType projection_type; + /* 0x09EC */ GC_Mtx perspective_mtx; + /* 0x0A1C */ u32 _0A1C; + /* 0x0A20 */ u32 rdpHalf_1; + /* 0x0A24 */ EmuLight lights[NUM_LIGHTS]; + /* 0x0B64 */ u8 num_lights; + /* 0x0B68 */ u32 lookatx_cnt; + /* 0x0B6C */ u32 lookaty_cnt; + /* 0x0B70 */ u32 _0B70; + /* 0x0B74 */ u32 texconv_cnt; + /* 0x0B78 */ u32 vertex_cnt; + /* 0x0B7C */ u32 texconv_time; + /* 0x0B80 */ u32 rsprdp_time; + /* 0x0B84 */ u32 combine_time; + /* 0x0B88 */ u32 spvertex_time; + /* 0x0B8C */ u32 setup_time; + /* 0x0B90 */ u32 loadblock_time; + /* 0x0B94 */ u32 loadtlut_time; + /* 0x0B98 */ u32 matrix_time; + /* 0x0B9C */ u32 polygons_time; + /* 0x0BA0 */ u32 dirty_check_time; + /* 0x0BA4 */ u32 dirty_lightX_time; + /* 0x0BA8 */ u32 dirty_lightX_cnt; + /* 0x0BAC */ u32 dirty_light_time; + /* 0x0BB0 */ u32 dirty_light_cnt; + /* 0x0BB4 */ u32 dirty_tex_time; + /* 0x0BB8 */ u32 dirty_tex_cnt; + /* 0x0BBC */ u32 dirty_tex1_time; + /* 0x0BC0 */ u32 dirty_tex1_cnt; + /* 0x0BC4 */ u32 dirty_tex2_time; + /* 0x0BC8 */ u32 dirty_tex2_cnt; + /* 0x0BCC */ u32 dirty_texmtx_time; + /* 0x0BD0 */ u32 dirty_texmtx_cnt; + /* 0x0BD4 */ u32 dirty_proj_time; + /* 0x0BD8 */ u32 dirty_primcolor_time; + /* 0x0BDC */ u32 dirty_envcolor_time; + /* 0x0BE0 */ u32 dirty_fillcolor_time; + /* 0x0BE4 */ u32 dirty_combine_mode_time; + /* 0x0BE8 */ u32 dirty_othermodeh_time; + /* 0x0BEC */ u32 dirty_othermodel_time; + /* 0x0BF0 */ u32 dirty_geometory_time; /* Yes, the devs misspelt this */ + /* 0x0BF4 */ u32 setuptex_time; + /* 0x0BF8 */ struct { + u32 time; + u32 calls; + } command_info[NUM_COMMANDS]; + /* 0x0DF8 */ u32 texture_cache_select_time; + /* 0x0DFC */ u32 guMtxL2F_time; + /* 0x0E00 */ u32 guMtxL2F_cnt; + /* 0x0E04 */ u32 combine_auto_cnt[5]; + /* 0x0E18 */ bool using_nonshared_mtx; + /* 0x0E1C */ Vertex vertices[VTX_COUNT]; + /* 0x201C */ u8 texture_adjust_mode; + /* 0x2020 */ u32 resolved_addresses; + /* 0x2024 */ u32 _2024; + /* 0x2028 */ u32 _2028; + /* 0x202C */ u32 _202C; + /* 0x2030 */ u32 abnormal_addresses; + /* 0x2034 */ bool rdp_pipe_sync_needed; + /* 0x2035 */ bool segment_set; + /* 0x2038 */ Gfx* dl_history[DL_HISTORY_COUNT]; + /* 0x2078 */ u8 dl_history_start; +}; + +typedef void (emu64::* dl_func)(void); + #endif diff --git a/include/libforest/emu64/emu64_wrapper.h b/include/libforest/emu64/emu64_wrapper.h index ad4225b0..c24db954 100644 --- a/include/libforest/emu64/emu64_wrapper.h +++ b/include/libforest/emu64/emu64_wrapper.h @@ -8,6 +8,8 @@ extern "C" { #endif +extern u8 FrameCansel; + extern void emu64_set_ucode_info(int count, ucode_info* ucode_info); extern void emu64_set_first_ucode(void* ucode); extern void emu64_taskstart(Gfx* gfx); diff --git a/include/libforest/emu64/texture_cache.h b/include/libforest/emu64/texture_cache.h index a056d4f9..4c1aee8d 100644 --- a/include/libforest/emu64/texture_cache.h +++ b/include/libforest/emu64/texture_cache.h @@ -7,12 +7,12 @@ #ifdef __cplusplus extern "C" { -#define TEX_CACHE_ALIGNMENT (32-1) /* 32 byte alignment */ +#define TEX_CACHE_ALIGNMENT (32 - 1) /* 32 byte alignment */ #define NUM_TEXTURE_CACHE_DATA 10 #define TEXTURE_CACHE_LIST_SIZE 256 #define TMEM_ENTRIES 128 -#define TEX_CACHE_ALIGN(n)((n + TEX_CACHE_ALIGNMENT) & ~TEX_CACHE_ALIGNMENT) +#define TEX_CACHE_ALIGN(n) ((n + TEX_CACHE_ALIGNMENT) & ~TEX_CACHE_ALIGNMENT) /* These would be initialized by the linker. TODO: Is there a better way to do this? */ extern void* _data_segment_start; @@ -22,16 +22,16 @@ typedef struct { void* addr; Gloadblock loadblock; Gloadtile loadtile; - Gsetimg_new setimg; + Gsetimg2 setimg2; } tmem_t; typedef struct { void* start; /* Start RAM address of cache */ - void* end; /* End RAM address of cache */ + void* end; /* End RAM address of cache */ } texture_cache_data_entry_t; typedef struct { - void* original; /* Original RAM address */ + void* original; /* Original RAM address */ void* converted; /* Converted RAM address */ } texture_cache_entry_t; @@ -49,19 +49,17 @@ typedef struct { typedef struct texture_cache_s { texture_cache_funcs* funcs; /* Pointer to texture cache funcs */ - u8* buffer_start; /* Start address of cache buffer */ - u8* buffer_end; /* End address of cache buffer */ - u8* buffer_current; /* Current write position of the cache buffer */ - u8* last_alloc_end; /* Points to end address from last cache alloc */ - u8* last_alloc_start; /* Points to the start address from last cache alloc */ - bool is_overflow; /* Set to true when the cache is full */ - u32 buffer_pos; /* Write index into cache buffer */ + u8* buffer_start; /* Start address of cache buffer */ + u8* buffer_end; /* End address of cache buffer */ + u8* buffer_current; /* Current write position of the cache buffer */ + u8* last_alloc_end; /* Points to end address from last cache alloc */ + u8* last_alloc_start; /* Points to the start address from last cache alloc */ + bool is_overflow; /* Set to true when the cache is full */ + u32 buffer_pos; /* Write index into cache buffer */ } texture_cache_t; /* TMEM map */ -//static tmem_t tmem_map[TMEM_ENTRIES]; - - +// static tmem_t tmem_map[TMEM_ENTRIES]; /* Shared alloc function */ void* texture_cache_alloc(texture_cache_t* cache, u32 size); @@ -74,7 +72,6 @@ int texture_cache_data_entry(void* original, void* converted); #define TEX_BUFFER_BSS_SIZE 0x1000 extern texture_cache_t* texture_cache_select(void* address); - } #endif diff --git a/include/libforest/gbi_extensions.h b/include/libforest/gbi_extensions.h index d1a39e1a..5f7ba482 100644 --- a/include/libforest/gbi_extensions.h +++ b/include/libforest/gbi_extensions.h @@ -11,6 +11,33 @@ extern "C" { #include #include "dolphin/gx.h" +#define SOFTSPRITE_MTX_SEG 0x07 +#define ANIME_1_TXT_SEG 0x08 +#define ANIME_2_TXT_SEG 0x09 +#define ANIME_3_TXT_SEG 0x0A +#define ANIME_4_TXT_SEG 0x0B +#define ANIME_5_TXT_SEG 0x0C +#define ANIME_6_TXT_SEG 0x0D + +#define ANIME_4_TXT_SIZE 0x800 +#define ANIME_6_MODEL_SIZE 0x408 + +#define SEG_EQUALS(seg_addr, seg) (seg_addr == SEGMENT_ADDR(seg, 0)) + +#define softsprite_mtx SEGMENT_ADDR(SOFTSPRITE_MTX_SEG, 0) +#define anime_1_txt SEGMENT_ADDR(ANIME_1_TXT_SEG, 0) +#define anime_1_model SEGMENT_ADDR(ANIME_1_TXT_SEG, 0) +#define anime_2_txt SEGMENT_ADDR(ANIME_2_TXT_SEG, 0) +#define anime_2_model SEGMENT_ADDR(ANIME_2_TXT_SEG, 0) +#define anime_3_txt SEGMENT_ADDR(ANIME_3_TXT_SEG, 0) +#define anime_3_model SEGMENT_ADDR(ANIME_3_TXT_SEG, 0) +#define anime_4_txt SEGMENT_ADDR(ANIME_4_TXT_SEG, 0) +#define anime_4_model SEGMENT_ADDR(ANIME_4_TXT_SEG, 0) +#define anime_5_txt SEGMENT_ADDR(ANIME_5_TXT_SEG, 0) +#define anime_5_model SEGMENT_ADDR(ANIME_5_TXT_SEG, 0) +#define anime_6_txt SEGMENT_ADDR(ANIME_6_TXT_SEG, 0) +#define anime_6_model SEGMENT_ADDR(ANIME_6_TXT_SEG, 0) + /* New Microcode Command Ids */ #define G_TRIN 0x09 #define G_TRIN_INDEPEND 0x0A @@ -98,7 +125,7 @@ extern "C" { #define G_DECAL_EQUAL 0x20 #define G_DECAL_ALWAYS 0x30 #define G_DECAL_SPECIAL 0x40 -#define G_DECAL_ALL G_DECAL_ALWAYS | G_DECAL_SPECIAL +#define G_DECAL_ALL (G_DECAL_ALWAYS | G_DECAL_SPECIAL) /* Indicies for G_SPECIAL_1 */ #define G_SPECIAL_NONE 0 @@ -192,7 +219,7 @@ extern "C" { #define COMBINER_TEV_GET_Ad1(words)((words.w0 >> 0) & 7) typedef struct { - int cmd:8; + unsigned int cmd:8; unsigned int a0:4; unsigned int c0:5; unsigned int Aa0:3; @@ -273,12 +300,12 @@ typedef struct { unsigned int sl:14; /* Start of S coordinate */ unsigned int slen:10; /* Length of S coordinate */ - unsigned int isDolphin:1; /* If true, format is Gsettilesize_dolphin. If false, format is Gsettilesize2 */ + s8 isDolphin:1; /* If true, format is Gsettilesize_Dolphin. If false, format is Gsettilesize2 */ unsigned int pad:4; unsigned int tile:3; /* Tile descriptor */ unsigned int tl:14; /* Start of T coordinate */ unsigned int tlen:10; /* Length of T coordinate */ -} Gsettilesize_dolphin; +} Gsettilesize_Dolphin; typedef struct { int cmd:8; /* Command */ @@ -314,8 +341,9 @@ typedef struct { unsigned int level:3; unsigned int tile:3; unsigned int on:8; /* Should be 7 bits w/ 1 bit padding, but emulator doesn't do this */ - unsigned short s:16; - unsigned short t:16; + + unsigned short s; + unsigned short t; } Gtexture_internal; typedef struct { @@ -334,6 +362,229 @@ typedef struct { unsigned int data; } Gmovemem; +typedef struct Gsettexedgealpha { + unsigned int cmd:8; + unsigned int unused0:24; + + unsigned int unused1:24; + unsigned int tex_edge_alpha:8; +} Gsettexedgealpha; + +typedef struct { + int cmd:8; + unsigned int x0:10; + unsigned int x0frac:2; + unsigned int y0:10; + unsigned int y0frac:2; + unsigned int pad:8; + unsigned int x1:10; + unsigned int x1frac:2; + unsigned int y1:10; + unsigned int y1frac:2; +} Gscissor; + +typedef struct { + int cmd:8; + unsigned int x0:10; + unsigned int x0frac:2; + unsigned int y0:10; + unsigned int y0frac:2; + unsigned int pad:8; + unsigned int x1:10; + unsigned int x1frac:2; + unsigned int y1:10; + unsigned int y1frac:2; +} Gfillrect2; + +typedef struct Gnoop { + unsigned int cmd: 8; + unsigned int tag: 8; + unsigned int param0: 16; + + unsigned int param1; +} Gnoop; + +typedef struct Gmtx { + unsigned int cmd: 8; + unsigned int par: 8; + unsigned int pad: 8; + unsigned int type: 8; + + unsigned int addr; +} Gmtx; + +typedef struct Gvtx { + unsigned int cmd: 8; + unsigned int pad0: 4; + unsigned int n: 8; + unsigned int pad1: 4; + unsigned int vn:8; + + unsigned int addr; +} Gvtx; + +typedef struct Gline3D_new { + unsigned int cmd: 8; + unsigned int v0: 8; + unsigned int v1: 8; + unsigned int wd: 8; + + unsigned int pad; +} Gline3D_new; + +typedef struct Gtri1 { + unsigned int cmd: 8; + unsigned int v0: 8; + unsigned int v1: 8; + unsigned int v2: 8; + + unsigned int pad; +} Gtri1; + +typedef struct Gtri2 { + int cmd: 8; + unsigned int t0v0: 8; + unsigned int t0v1: 8; + unsigned int t0v2: 8; + + unsigned int pad: 8; + unsigned int t1v0: 8; + unsigned int t1v1: 8; + unsigned int t1v2: 8; +} Gtri2; + +typedef struct Gtrin_independ { + unsigned int cmd: 8; // 32 + unsigned int count: 7; // 24 + unsigned int f2v2: 5; // 17 + unsigned int f2v1: 5; // 12 + unsigned int f2v0: 5; // 7 + unsigned int f1v2_1: 2; // 2 + + unsigned int f1v2_0: 3; // 32 + unsigned int f1v1: 5; // 29 + unsigned int f1v0: 5; // 24 + unsigned int f0v2: 5; // 19 + unsigned int f0v1: 5; // 14 + unsigned int f0v0: 5; // 9 + unsigned int pad: 3; // 4 + unsigned int is7bit: 1; // 1 +} Gtrin_independ; + +typedef struct Gtrin { + unsigned int f3v2: 5; // 32 + unsigned int f3v1: 5; // 27 + unsigned int f3v0: 5; // 22 + unsigned int f2v2: 5; // 17 + unsigned int f2v1: 5; // 12 + unsigned int f2v0: 5; // 7 + unsigned int f1v2_1: 2; // 2 + + unsigned int f1v2_0: 3; // 32 + unsigned int f1v1: 5; // 29 + unsigned int f1v0: 5; // 24 + unsigned int f0v2: 5; // 19 + unsigned int f0v1: 5; // 14 + unsigned int f0v0: 5; // 9 + unsigned int pad: 3; // 32 + unsigned int is7bit: 1; // 1 +} Gtrin; + +typedef struct Gtrin_7b { + unsigned int f2v2: 7; // 32 + unsigned int f2v1: 7; // 25 + unsigned int f2v0: 7; // 18 + unsigned int f1v2: 7; // 11 + unsigned int f1v1_1: 4; // 4 + + unsigned int f1v1_0: 3; // 32 + unsigned int f1v0: 7; // 29 + unsigned int f0v2: 7; // 22 + unsigned int f0v1: 7; // 15 + unsigned int f0v0: 7; // 8 + unsigned int is7bit: 1; // 1 +} Gtrin_7b; + +typedef struct Gquad_independ { + unsigned int cmd: 8; // 32 + unsigned int count: 7; // 24 + unsigned int unused: 5; // 17 + unsigned int f1v3: 5; // 12 + unsigned int f1v2: 5; // 7 + unsigned int f1v1_1: 2; // 2 + + unsigned int f1v1_0: 3; // 32 + unsigned int f1v0: 5; // 29 + unsigned int f0v3: 5; // 24 + unsigned int f0v2: 5; // 19 + unsigned int f0v1: 5; // 14 + unsigned int f0v0: 5; // 9 + unsigned int pad: 3; // 4 + unsigned int is7bit: 1; // 1 +} Gquad_independ; + +typedef struct Gquad { + unsigned int f2v3: 5; // 32 + unsigned int f2v2: 5; // 27 + unsigned int f2v1: 5; // 22 + unsigned int f2v0: 5; // 17 + unsigned int f1v3: 5; // 12 + unsigned int f1v2: 5; // 7 + unsigned int f1v1_1: 2; // 2 + + unsigned int f1v1_0: 3; // 32 + unsigned int f1v0: 5; // 29 + unsigned int f0v3: 5; // 24 + unsigned int f0v2: 5; // 19 + unsigned int f0v1: 5; // 14 + unsigned int f0v0: 5; // 9 + unsigned int pad: 3; // 4 + unsigned int is7bit: 1; // 1 +} Gquad; + +typedef struct Gquad_7b { + unsigned int f1v3: 7; // 32 + unsigned int f1v2: 7; // 25 + unsigned int f1v1: 7; // 18 + unsigned int f1v0_1: 4; // 11 + unsigned int f1v0_0: 3; // 7 + unsigned int pad: 4; // 4 + + unsigned int f0v3: 7; // 32 + unsigned int f0v2: 7; // 25 + unsigned int f0v1: 7; // 18 + unsigned int f0v0: 7; // 11 + unsigned int pad0: 3; // 4 + unsigned int is7bit: 1; // 1 +} Gquad_7b; + +typedef struct Gquad0 { + int cmd: 8; + unsigned int v0: 8; + unsigned int v1: 8; + unsigned int v2: 8; + + unsigned int pad: 24; + unsigned int v3: 8; +} Gquad0; + +typedef struct Gculldl { + int cmd: 8; + unsigned int pad0: 8; + unsigned int vstart: 16; + + unsigned int pad1: 16; + unsigned int vend: 16; +} Gculldl; + +typedef struct Gspecial1 { + int cmd: 8; + int mode: 8; + unsigned int param0: 16; + + unsigned int param1; +} Gspecial1; + typedef struct { unsigned char col[3]; unsigned char kc; @@ -363,22 +614,52 @@ typedef struct { } combiner_tev_alpha; /* New Command Macros */ +#define gDPParam2(cmd, tag, param, extra) \ +do { \ + Gfx* _g = (Gfx*)(pkt); \ + _g->words.w0 = (u32)(_SHIFTL(cmd, 24, 8) | _SHIFTL(tag, 16, 8) | _SHIFTL(param, 0, 16)); \ + _g->words.w1 = (u32)(extra); \ +} while(0) + #define gsDPParam2(cmd, tag, param, extra) \ {{ \ _SHIFTL(cmd, 24, 8) | _SHIFTL(tag, 16, 8) | _SHIFTL(param, 0, 16), extra \ }} -#define gsDPNoOpTag2(tag, param, extra) gsDPParam2(G_NOOP, tag, param, extra) +#define gDPNoOpTag2(tag, param, extra) gDPParam2(G_NOOP, tag, param, extra) +#define gsDPNoOpTag2(tag, param, extra) gsDPParam2(G_NOOP, tag, param, extra) + +#define gDPNoOpHere() gDPNoOpTag2(G_TAG_HERE, __LINE__, __FILE__) #define gsDPNoOpHere() gsDPNoOpTag2(G_TAG_HERE, __LINE__, __FILE__) + +#define gDPNoOpString(str, param) gDPNoOpTag2(G_TAG_STRING, param, str) #define gsDPNoOpString(str, param) gsDPNoOpTag2(G_TAG_STRING, param, str) + +#define gDPNoOpWord(word, param) gDPNoOpTag2(G_TAG_WORD, param, word) #define gsDPNoOpWord(word, param) gsDPNoOpTag2(G_TAG_WORD, param, word) + +#define gDPNoOpFloat(float, param) gDPNoOpTag2(G_TAG_FLOAT, param, float) #define gsDPNoOpFloat(float, param) gsDPNoOpTag2(G_TAG_FLOAT, param, float) + +#define gDPNoOpQuiet() gDPNoOpTag2(G_TAG_INFO, 0, 0) #define gsDPNoOpQuiet() gsDPNoOpTag2(G_TAG_INFO, 0, 0) + +#define gDPNoOpVerbose() gDPNoOpTag2(G_TAG_INFO, 0xF, 0) #define gsDPNoOpVerbose() gsDPNoOpTag2(G_TAG_INFO, 0xF, 0) + +#define gDPNoOpCallBack(callback, param) gDPNoOpTag2(G_TAG_CALLBACK, param, callback) #define gsDPNoOpCallBack(callback, param) gsDPNoOpTag2(G_TAG_CALLBACK, param, callback) + +#define gDPNoOpOpenDisp() gDPNoOpTag2(G_TAG_OPENDISP, __LINE__, __FILE__) #define gsDPNoOpOpenDisp() gsDPNoOpTag2(G_TAG_OPENDISP, __LINE__, __FILE__) + +#define gDPNoOpCloseDisp() gDPNoOpTag2(G_TAG_CLOSEDISP, __LINE__, __FILE__) #define gsDPNoOpCloseDisp() gsDPNoOpTag2(G_TAG_CLOSEDISP, __LINE__, __FILE__) + +#define gDPNoOpFill() gDPNoOpTag2(G_TAG_FILL, 0, 0) #define gsDPNoOpFill() gsDPNoOpTag2(G_TAG_FILL, 0, 0) + +#define gDPNoOpTag3(tag, extra, param) gDPNoOpTag2(tag, param, extra) #define gsDPNoOpTag3(tag, extra, param) gsDPNoOpTag2(tag, param, extra) #define G_TLUT_DOLPHIN 2 @@ -394,7 +675,7 @@ do { \ _SHIFTL(G_LOADTLUT, 24, 8) | _SHIFTL(G_TLUT_DOLPHIN, 22, 2) | _SHIFTL(name, 16, 4) | _SHIFTL(unk, 14, 2) | _SHIFTL(count, 0, 14), (unsigned int)addr \ }} -#define gsDPSetTextureImage_Dolphin(fmt, siz, h, w, img) \ +#define gsDPSetTextureImage_Dolphin(fmt, siz, w, h, img) \ {{ \ _SHIFTL(G_SETTIMG, 24, 8) | _SHIFTL(fmt, 21, 3) | _SHIFTL(siz, 19, 2) | _SHIFTL(1, 18, 1) | \ _SHIFTL((h/4)-1, 10, 8) | _SHIFTL((w-1), 0, 10), (unsigned int)img \ @@ -439,7 +720,7 @@ do { \ #define G_DOLPHIN_TLUT_DEFAULT_MODE 15 // used almost always? CI palettes are forced to GX_TF_RGB5A3 #define gsDPLoadTextureBlock_4b_Dolphin(timg, fmt, w, h, pal, ws, wt, ss, st) \ - gsDPSetTextureImage_Dolphin(fmt, G_IM_SIZ_4b, h, w, timg), \ + gsDPSetTextureImage_Dolphin(fmt, G_IM_SIZ_4b, w, h, timg), \ gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, pal, ws, wt, ss, st) #define gDPLoadTextureTile_4b_Dolphin(pkt, timg, fmt, w, h) \ @@ -448,7 +729,11 @@ do { \ gDPSetTile_Dolphin(pkt, G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, 0, 0, 0, 0) \ } while (0); -#define gsSPNTriangles(n) \ +#define gsDPLoadMultiBlock_4b_Dolphin(timg, tile, fmt, w, h, pal, ws, wt, ss, st) \ + gsDPSetTextureImage_Dolphin(fmt, G_IM_SIZ_4b, w, h, timg), \ + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, tile, pal, ws, wt, ss, st) + +#define gsSPNTriangles_Independ(n) \ {{ \ _SHIFTL(G_TRIN_INDEPEND, 24, 8) | _SHIFTL(n-1, 17, 7), 0 \ }} @@ -488,7 +773,7 @@ do { \ #define gSPNTrianglesInit_7b(n, v0, v1, v2, v3, v4, v5) \ {{ \ - (unsigned long long)((((unsigned long long)gsSPNTriangles(n)) << 32) | (gsSPNWTriangleData2(v3, v4, v5) << 22) | \ + (unsigned long long)((((unsigned long long)gsSPNTriangles_Independ(n)) << 32) | (gsSPNWTriangleData2(v3, v4, v5) << 22) | \ (gsSPNTriangleData2(v0, v1, v2) << 1)) | G_VTX_MODE_7bit \ }} @@ -512,10 +797,16 @@ do { \ #define gsSPNTrianglesInit_7b(n, v0, v1, v2, v3, v4, v5) \ {{ \ - (unsigned long long)((((unsigned long long)gsSPNTriangles(n)) << 32) | (gsSPNWTriangleData2(v3, v4, v5) << 22) | \ + (unsigned long long)((((unsigned long long)gsSPNTriangles_Independ(n)) << 32) | (gsSPNWTriangleData2(v3, v4, v5) << 22) | \ (gsSPNTriangleData2(v0, v1, v2) << 1)) | G_VTX_MODE_7bit \ }} +#define gsSPNTriangles(n, v0, v1, v2, v3, v4, v5, v6, v7, v8) \ +{{ \ + _SHIFTL(G_TRIN, 24, 8) | _SHIFTL(n-1, 17, 7) | _SHIFTL(gsSPNTriangleData1(v6, v7, v8, 0), 2, 15) | _SHIFTL(_SHIFTR(gsSPNTriangleData1(v3, v4, v5, 0), 13, 2), 0, 2), \ + _SHIFTL(gsSPNTriangleData1(v3, v4, v5, 0), 19, 13) | _SHIFTL(gsSPNTriangleData1(v0, v1, v2, 0), 4, 15) | _SHIFTL(G_VTX_MODE_5bit, 0, 1) \ +}} + #define gDPSetTexEdgeAlpha(pkt, alpha) \ do { \ Gfx* _g = (Gfx*)(pkt); \ diff --git a/include/libultra/libultra.h b/include/libultra/libultra.h index 5e5c8cc4..c5e4bc40 100644 --- a/include/libultra/libultra.h +++ b/include/libultra/libultra.h @@ -9,32 +9,31 @@ #include "libultra/shutdown.h" #include "libultra/os_timer.h" #include "libultra/os_thread.h" +#include "libultra/os_pi.h" #include "libultra/initialize.h" #include "libc/math.h" /* TODO: sins and coss belong in libultra */ #define N64_SCREEN_HEIGHT 240 #define N64_SCREEN_WIDTH 320 - #ifdef __cplusplus extern "C" { #endif typedef u64 Z_OSTime; -int bcmp (void *v1, void *v2, u32 size); -void bcopy(void *src, void *dst, size_t n); -void bzero(void *ptr, size_t size); +int bcmp(void* v1, void* v2, u32 size); +void bcopy(void* src, void* dst, size_t n); +void bzero(void* ptr, size_t size); void osSyncPrintf(const char* fmt, ...); void osWritebackDCache(void* vaddr, u32 nbytes); u32 osGetCount(void); OSTime osGetTime(void); -extern s32 osAppNMIBuffer[]; +extern s32 osAppNMIBuffer[]; extern int osShutdown; extern u8 __osResetSwitchPressed; - #ifdef __cplusplus } #endif diff --git a/include/libultra/osContPad.h b/include/libultra/osContPad.h index 7192659b..510c7b4b 100644 --- a/include/libultra/osContPad.h +++ b/include/libultra/osContPad.h @@ -4,6 +4,8 @@ #define OS_CONT_PAD #include "types.h" +#include "libultra/os_pfs.h" +#include "dolphin/os/OSMessage.h" #ifdef __cplusplus extern "C" { @@ -11,20 +13,63 @@ extern "C" { #define MAXCONTROLLERS 4 +/* controller errors */ +#define CONT_NO_ERROR 0 +#define CONT_NO_RESPONSE_ERROR 0x8 +#define CONT_OVERRUN_ERROR 0x4 +#define CONT_RANGE_ERROR -1 + +/* Controller type */ +#define CONT_NONE 0x0000 +#define CONT_ABSOLUTE 0x0001 +#define CONT_RELATIVE 0x0002 +#define CONT_JOYPORT 0x0004 +#define CONT_EEPROM 0x8000 +#define CONT_EEP16K 0x4000 +#define CONT_TYPE_MASK 0x1f07 +#define CONT_TYPE_NORMAL 0x0005 +#define CONT_TYPE_MOUSE 0x0002 +#define CONT_TYPE_VOICE 0x0100 + +/* Controller status */ + +#define CONT_CARD_ON 0x01 +#define CONT_CARD_PULL 0x02 +#define CONT_ADDR_CRC_ER 0x04 +#define CONT_EEPROM_BUSY 0x80 + +/* Controller error number */ + +#define CONT_ERR_NO_CONTROLLER PFS_ERR_NOPACK /* 1 */ +#define CONT_ERR_CONTRFAIL CONT_OVERRUN_ERROR /* 4 */ +#define CONT_ERR_INVALID PFS_ERR_INVALID /* 5 */ +#define CONT_ERR_DEVICE PFS_ERR_DEVICE /* 11 */ +#define CONT_ERR_NOT_READY 12 +#define CONT_ERR_VOICE_MEMORY 13 +#define CONT_ERR_VOICE_WORD 14 +#define CONT_ERR_VOICE_NO_RESPONSE 15 + typedef struct { - u16 type; - u8 status; - u8 errno; + u16 type; + u8 status; + u8 errno; } OSContStatus; /* sizeof(OSContPad) == 6 */ typedef struct { - /* 0x00 */ u16 button; - /* 0x02 */ s8 stick_x; - /* 0x03 */ s8 stick_y; - /* 0x04 */ u8 errno; + /* 0x00 */ u16 button; + /* 0x02 */ s8 stick_x; + /* 0x03 */ s8 stick_y; + /* 0x04 */ u8 errno; } OSContPad; +extern s32 osContInit(OSMessageQueue* mq, u8* pattern_p, OSContStatus* status); +extern s32 osContStartQuery(OSMessageQueue* mq); +extern s32 osContStartReadData(OSMessageQueue* mq); +extern void osContGetQuery(OSContStatus* status); +extern s32 osContSetCh(u8 num_controllers); +extern void osContGetReadData(OSContPad* pad); + #ifdef __cplusplus } #endif diff --git a/include/libultra/osMesg.h b/include/libultra/osMesg.h index c54948e1..fa4524f3 100644 --- a/include/libultra/osMesg.h +++ b/include/libultra/osMesg.h @@ -5,18 +5,21 @@ #include "dolphin/os/OSThread.h" #include "dolphin/os/OSMessage.h" +#define OS_MESG_NOBLOCK 0 +#define OS_MESG_BLOCK 1 + typedef void* OSMesg; -typedef struct OSMesgQueue { +typedef struct OSMesgQueue_s { /* 0x00 */ OSThread* mtqueue; /* 0x04 */ OSThread* fullqueue; - /* 0x08 */ int validCount; + /* 0x08 */ volatile int validCount; /* 0x0C */ int first; /* 0x10 */ int msgCount; /* 0x14 */ OSMesg* msg; } OSMesgQueue; // size = 0x18 -extern void osCreateMesgQueue(OSMessageQueue* mq ,OSMessage msg, int flags); +extern void osCreateMesgQueue(OSMessageQueue* mq, OSMessage msg, int flags); extern int osSendMesg(OSMessageQueue* mq, OSMessage msg, int flags); extern int osRecvMesg(OSMessageQueue* mq, OSMessage* msg, int flags); diff --git a/include/libultra/os_pfs.h b/include/libultra/os_pfs.h new file mode 100644 index 00000000..085cd656 --- /dev/null +++ b/include/libultra/os_pfs.h @@ -0,0 +1,30 @@ +#ifndef OS_PFS_H +#define OS_PFS_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* File System error number */ + +#define PFS_ERR_NOPACK 1 /* no memory card is plugged or */ +#define PFS_ERR_NEW_PACK 2 /* ram pack has been changed to a different one */ +#define PFS_ERR_INCONSISTENT 3 /* need to run Pfschecker*/ +#define PFS_ERR_CONTRFAIL CONT_OVERRUN_ERROR +#define PFS_ERR_INVALID 5 /* invalid parameter or file not exist*/ +#define PFS_ERR_BAD_DATA 6 /* the data read from pack are bad*/ +#define PFS_DATA_FULL 7 /* no free pages on ram pack*/ +#define PFS_DIR_FULL 8 /* no free directories on ram pack*/ +#define PFS_ERR_EXIST 9 /* file exists*/ +#define PFS_ERR_ID_FATAL 10 /* dead ram pack */ +#define PFS_ERR_DEVICE 11 /* wrong device type*/ +#define PFS_ERR_NO_GBCART 12 /* no gb cartridge (64GB-PAK) */ +#define PFS_ERR_NEW_GBCART 13 /* gb cartridge may be changed */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/libultra/os_pi.h b/include/libultra/os_pi.h new file mode 100644 index 00000000..dca566e9 --- /dev/null +++ b/include/libultra/os_pi.h @@ -0,0 +1,68 @@ +#ifndef OS_PI_H +#define OS_PI_H + +#include "types.h" +#include "libultra/osMesg.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct { + /* 0x00 */ u32 errStatus; + /* 0x04 */ void* dramAddr; + /* 0x08 */ void* C2Addr; + /* 0x0C */ u32 sectorSize; + /* 0x10 */ u32 C1ErrNum; + /* 0x14 */ u32 C1ErrSector[4]; +} __OSBlockInfo; // size = 0x24 + +typedef struct { + /* 0x00 */ u32 cmdType; + /* 0x04 */ u16 transferMode; + /* 0x06 */ u16 blockNum; + /* 0x08 */ s32 sectorNum; + /* 0x0C */ uintptr_t devAddr; + /* 0x10 */ u32 bmCtlShadow; + /* 0x14 */ u32 seqCtlShadow; + /* 0x18 */ __OSBlockInfo block[2]; +} __OSTranxInfo; // size = 0x60 + +typedef struct OSPiHandle { + /* 0x00 */ struct OSPiHandle* next; + /* 0x04 */ u8 type; + /* 0x05 */ u8 latency; + /* 0x06 */ u8 pageSize; + /* 0x07 */ u8 relDuration; + /* 0x08 */ u8 pulse; + /* 0x09 */ u8 domain; + /* 0x0C */ uintptr_t baseAddress; + /* 0x10 */ u32 speed; + /* 0x14 */ __OSTranxInfo transferInfo; +} OSPiHandle; // size = 0x74 + +typedef struct { + /* 0x0 */ u8 type; + /* 0x4 */ uintptr_t address; +} OSPiInfo; // size = 0x8 + +typedef struct { + /* 0x0 */ u16 type; + /* 0x2 */ u8 pri; + /* 0x3 */ u8 status; + /* 0x4 */ OSMesgQueue* retQueue; +} OSIoMesgHdr; // size = 0x8 + +typedef struct { + /* 0x00 */ OSIoMesgHdr hdr; + /* 0x08 */ void* dramAddr; + /* 0x0C */ uintptr_t devAddr; + /* 0x10 */ size_t size; + /* 0x14 */ OSPiHandle* piHandle; +} OSIoMesg; // size = 0x88 + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/m_actor.h b/include/m_actor.h index c7a193de..eb09342b 100644 --- a/include/m_actor.h +++ b/include/m_actor.h @@ -68,7 +68,7 @@ typedef enum bank_id { ACTOR_OBJ_BANK_27, ACTOR_OBJ_BANK_UMBRELLA, ACTOR_OBJ_BANK_29, - ACTOR_OBJ_BANK_30, + ACTOR_OBJ_BANK_SHOP_GOODS, ACTOR_OBJ_BANK_31, ACTOR_OBJ_BANK_32, ACTOR_OBJ_BANK_33, @@ -86,7 +86,7 @@ typedef enum bank_id { ACTOR_OBJ_BANK_KEITAI, ACTOR_OBJ_BANK_46, ACTOR_OBJ_BANK_47, - ACTOR_OBJ_BANK_48, + ACTOR_OBJ_BANK_UKI, ACTOR_OBJ_BANK_49, ACTOR_OBJ_BANK_50, ACTOR_OBJ_BANK_51, @@ -449,7 +449,7 @@ typedef enum bank_id { ACTOR_OBJ_BANK_408, ACTOR_OBJ_BANK_EF_MUSEUM, ACTOR_OBJ_BANK_EF_MINSECT, - ACTOR_OBJ_BANK_411, + ACTOR_OBJ_BANK_AC_SIGN, ACTOR_OBJ_BANK_MURAL, ACTOR_OBJ_BANK_413, ACTOR_OBJ_BANK_414, @@ -1152,20 +1152,20 @@ struct actor_s { #define mActor_NONE_PROC1 ((mActor_proc)none_proc1) typedef struct actor_list_s { - int num_actors; - ACTOR* actor; + /* 0x00 */ int num_actors; + /* 0x04 */ ACTOR* actor; } Actor_list; typedef struct actor_info_s { - int total_num; - Actor_list list[ACTOR_PART_NUM]; + /* 0x00 */ int total_num; + /* 0x04 */ Actor_list list[ACTOR_PART_NUM]; } Actor_info; typedef struct actor_data_s { - s16 profile; - s_xyz position; - s_xyz rotation; - s16 arg; + /* 0x00 */ s16 profile; + /* 0x02 */ s_xyz position; + /* 0x08 */ s_xyz rotation; + /* 0x0E */ s16 arg; } Actor_data; extern void Actor_world_to_eye(ACTOR* actor, f32 eye_height); diff --git a/include/m_actor_dlftbls.h b/include/m_actor_dlftbls.h index 57167a8d..435f7b4e 100644 --- a/include/m_actor_dlftbls.h +++ b/include/m_actor_dlftbls.h @@ -9,16 +9,16 @@ extern "C" { #endif typedef struct actor_dlftbl_s { - u32 rom_start; // unused in AC - u32 rom_end; // unused in AC - u8* ram_start; // used only with a check, but never set in AC - u8* ram_end; // unused in AC - u8* alloc_buf; // used in AC but only on free check and data is never allocated - ACTOR_PROFILE* profile; // profile for the actor - int unk; // unused in AC - u16 flags; // related to memory pinning but functionally useless in AC since alloc_buf is never allocated - s8 num_actors; // number of this type of actor that currently exist - s8 unk2; // unused in AC + /* 0x00 */ u32 rom_start; // unused in AC + /* 0x04 */ u32 rom_end; // unused in AC + /* 0x08 */ u8* ram_start; // used only with a check, but never set in AC + /* 0x0C */ u8* ram_end; // unused in AC + /* 0x10 */ u8* alloc_buf; // used in AC but only on free check and data is never allocated + /* 0x14 */ ACTOR_PROFILE* profile; // profile for the actor + /* 0x18 */ int unk; // unused in AC + /* 0x1C */ u16 flags; // related to memory pinning but functionally useless in AC since alloc_buf is never allocated + /* 0x1E */ s8 num_actors; // number of this type of actor that currently exist + /* 0x1F */ s8 unk2; // unused in AC } ACTOR_DLFTBL; extern int actor_dlftbls_num; diff --git a/include/m_bg_type.h b/include/m_bg_type.h new file mode 100644 index 00000000..eeb748f3 --- /dev/null +++ b/include/m_bg_type.h @@ -0,0 +1,310 @@ +#ifndef M_BG_TYPE_H +#define M_BG_TYPE_H + +#include "types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +enum __bg_type__ { + BG_TYPE_GRD_S_HOLE_TEST, + BG_TYPE_GRD_S_C1_1, + BG_TYPE_GRD_S_C1_2, + BG_TYPE_GRD_S_C1_3, + BG_TYPE_GRD_S_C1_4, + BG_TYPE_GRD_S_C1_5, + BG_TYPE_GRD_S_C1_R1_1, + BG_TYPE_GRD_S_C1_R1_2, + BG_TYPE_GRD_S_C1_R1_3, + BG_TYPE_GRD_S_C1_R2_1, + BG_TYPE_GRD_S_C1_R2_2, + BG_TYPE_GRD_S_C1_R2_3, + BG_TYPE_GRD_S_C1_R3_1, + BG_TYPE_GRD_S_C1_R3_2, + BG_TYPE_GRD_S_C1_R3_3, + BG_TYPE_GRD_S_C1_S_1, + BG_TYPE_GRD_S_C1_S_2, + BG_TYPE_GRD_S_C1_S_3, + BG_TYPE_GRD_S_C1_S_4, + BG_TYPE_GRD_S_C2_1, + BG_TYPE_GRD_S_C2_2, + BG_TYPE_GRD_S_C2_3, + BG_TYPE_GRD_S_C2_R1_1, + BG_TYPE_GRD_S_C2_R1_2, + BG_TYPE_GRD_S_C2_R2_1, + BG_TYPE_GRD_S_C2_R2_2, + BG_TYPE_GRD_S_C2_S_1, + BG_TYPE_GRD_S_C2_S_2, + BG_TYPE_GRD_S_C2_S_3, + BG_TYPE_GRD_S_C3_1, + BG_TYPE_GRD_S_C3_2, + BG_TYPE_GRD_S_C3_3, + BG_TYPE_GRD_S_C3_R1_1, + BG_TYPE_GRD_S_C3_R1_2, + BG_TYPE_GRD_S_C3_R2_1, + BG_TYPE_GRD_S_C3_R2_2, + BG_TYPE_GRD_S_C3_S_1, + BG_TYPE_GRD_S_C4_1, + BG_TYPE_GRD_S_C4_2, + BG_TYPE_GRD_S_C4_3, + BG_TYPE_GRD_S_C4_R1_1, + BG_TYPE_GRD_S_C4_R1_2, + BG_TYPE_GRD_S_C4_R2_1, + BG_TYPE_GRD_S_C4_R2_2, + BG_TYPE_GRD_S_C4_R3_1, + BG_TYPE_GRD_S_C4_R3_2, + BG_TYPE_GRD_S_C4_S_1, + BG_TYPE_GRD_S_C4_S_2, + BG_TYPE_GRD_S_C5_1, + BG_TYPE_GRD_S_C5_2, + BG_TYPE_GRD_S_C5_3, + BG_TYPE_GRD_S_C5_R1_1, + BG_TYPE_GRD_S_C5_R1_2, + BG_TYPE_GRD_S_C5_R2_1, + BG_TYPE_GRD_S_C5_R2_2, + BG_TYPE_GRD_S_C5_R3_1, + BG_TYPE_GRD_S_C5_R3_2, + BG_TYPE_GRD_S_C5_S_1, + BG_TYPE_GRD_S_C5_S_2, + BG_TYPE_GRD_S_C6_1, + BG_TYPE_GRD_S_C6_2, + BG_TYPE_GRD_S_C6_3, + BG_TYPE_GRD_S_C6_R1_1, + BG_TYPE_GRD_S_C6_R1_2, + BG_TYPE_GRD_S_C6_R3_1, + BG_TYPE_GRD_S_C6_S_1, + BG_TYPE_GRD_S_C7_1, + BG_TYPE_GRD_S_C7_2, + BG_TYPE_GRD_S_C7_3, + BG_TYPE_GRD_S_C7_R1_1, + BG_TYPE_GRD_S_C7_R1_2, + BG_TYPE_GRD_S_C7_R3_1, + BG_TYPE_GRD_S_C7_R3_2, + BG_TYPE_GRD_S_C7_S_1, + BG_TYPE_GRD_S_C7_S_2, + BG_TYPE_GRD_S_C7_S_3, + BG_TYPE_GRD_S_E1_1, + BG_TYPE_GRD_S_E1_R1_1, + BG_TYPE_GRD_S_E2_1, + BG_TYPE_GRD_S_E2_C1_1, + BG_TYPE_GRD_S_E2_M_1, + BG_TYPE_GRD_S_E2_O_1, + BG_TYPE_GRD_S_E2_T_1, + BG_TYPE_GRD_S_E3_1, + BG_TYPE_GRD_S_E3_C1_1, + BG_TYPE_GRD_S_E3_M_1, + BG_TYPE_GRD_S_E3_O_1, + BG_TYPE_GRD_S_E3_T_1, + BG_TYPE_GRD_S_E4_1, + BG_TYPE_GRD_S_E5_1, + BG_TYPE_GRD_S_F_1, + BG_TYPE_GRD_S_F_2, + BG_TYPE_GRD_S_F_3, + BG_TYPE_GRD_S_F_4, + BG_TYPE_GRD_S_F_5, + BG_TYPE_GRD_S_F_6, + BG_TYPE_GRD_S_F_7, + BG_TYPE_GRD_S_F_8, + BG_TYPE_GRD_S_F_9, + BG_TYPE_GRD_S_F_10, + BG_TYPE_GRD_S_F_KO_1, + BG_TYPE_GRD_S_F_KO_2, + BG_TYPE_GRD_S_F_KO_3, + BG_TYPE_GRD_S_F_MH_1, + BG_TYPE_GRD_S_F_MH_2, + BG_TYPE_GRD_S_F_MH_3, + BG_TYPE_GRD_S_F_MU_1, + BG_TYPE_GRD_S_F_MU_2, + BG_TYPE_GRD_S_F_MU_3, + BG_TYPE_GRD_S_F_PK_1, + BG_TYPE_GRD_S_F_PK_2, + BG_TYPE_GRD_S_F_PK_3, + BG_TYPE_GRD_S_IR_1, + BG_TYPE_GRD_S_IR_2, + BG_TYPE_GRD_S_IR_3, + BG_TYPE_GRD_S_IR_4, + BG_TYPE_GRD_S_IL_1, + BG_TYPE_GRD_S_IL_2, + BG_TYPE_GRD_S_IL_3, + BG_TYPE_GRD_S_IL_4, + BG_TYPE_GRD_S_M_1, + BG_TYPE_GRD_S_M_2, + BG_TYPE_GRD_S_M_3, + BG_TYPE_GRD_S_M_4, + BG_TYPE_GRD_S_M_5, + BG_TYPE_GRD_S_M_6, + BG_TYPE_GRD_S_M_7, + BG_TYPE_GRD_S_M_8, + BG_TYPE_GRD_S_M_9, + BG_TYPE_GRD_S_M_10, + BG_TYPE_GRD_S_M_R1_1, + BG_TYPE_GRD_S_M_R1_2, + BG_TYPE_GRD_S_M_R1_3, + BG_TYPE_GRD_S_M_R1_4, + BG_TYPE_GRD_S_M_R1_5, + BG_TYPE_GRD_S_M_R1_B_1, + BG_TYPE_GRD_S_M_R1_B_2, + BG_TYPE_GRD_S_M_R1_B_3, + BG_TYPE_GRD_S_M_TA_1, + BG_TYPE_GRD_S_M_TA_2, + BG_TYPE_GRD_S_M_TA_3, + BG_TYPE_GRD_S_M_WF_1, + BG_TYPE_GRD_S_M_WF_2, + BG_TYPE_GRD_S_M_WF_3, + BG_TYPE_GRD_S_O_1, + BG_TYPE_GRD_S_O_2, + BG_TYPE_GRD_S_O_3, + BG_TYPE_GRD_S_O_4, + BG_TYPE_GRD_S_O_5, + BG_TYPE_GRD_S_O_6, + BG_TYPE_GRD_S_O_7, + BG_TYPE_GRD_S_O_8, + BG_TYPE_GRD_S_O_9, + BG_TYPE_GRD_S_O_10, + BG_TYPE_GRD_S_O_I_1, + BG_TYPE_GRD_S_O_I_2, + BG_TYPE_GRD_S_O_R1_1, + BG_TYPE_GRD_S_O_R1_2, + BG_TYPE_GRD_S_O_R1_3, + BG_TYPE_GRD_S_O_R1_4, + BG_TYPE_GRD_S_O_R1_5, + BG_TYPE_GRD_S_O_R1_B_1, + BG_TYPE_GRD_S_O_R1_B_2, + BG_TYPE_GRD_S_O_R1_B_3, + BG_TYPE_GRD_S_O_TA_1, + BG_TYPE_GRD_S_O_TA_2, + BG_TYPE_GRD_S_O_TA_3, + BG_TYPE_GRD_S_O_WF_1, + BG_TYPE_GRD_S_O_WF_2, + BG_TYPE_GRD_S_O_WF_3, + BG_TYPE_GRD_S_R1_1, + BG_TYPE_GRD_S_R1_2, + BG_TYPE_GRD_S_R1_3, + BG_TYPE_GRD_S_R1_4, + BG_TYPE_GRD_S_R1_B_1, + BG_TYPE_GRD_S_R1_B_2, + BG_TYPE_GRD_S_R1_B_3, + BG_TYPE_GRD_S_R1_P_1, + BG_TYPE_GRD_S_R2_1, + BG_TYPE_GRD_S_R2_2, + BG_TYPE_GRD_S_R2_3, + BG_TYPE_GRD_S_R2_4, + BG_TYPE_GRD_S_R2_B_1, + BG_TYPE_GRD_S_R2_B_2, + BG_TYPE_GRD_S_R2_B_3, + BG_TYPE_GRD_S_R2_P_1, + BG_TYPE_GRD_S_R3_1, + BG_TYPE_GRD_S_R3_2, + BG_TYPE_GRD_S_R3_3, + BG_TYPE_GRD_S_R3_4, + BG_TYPE_GRD_S_R3_B_1, + BG_TYPE_GRD_S_R3_B_2, + BG_TYPE_GRD_S_R3_B_3, + BG_TYPE_GRD_S_R3_P_1, + BG_TYPE_GRD_S_R4_1, + BG_TYPE_GRD_S_R4_2, + BG_TYPE_GRD_S_R4_3, + BG_TYPE_GRD_S_R4_B_1, + BG_TYPE_GRD_S_R4_B_2, + BG_TYPE_GRD_S_R4_P_1, + BG_TYPE_GRD_S_R5_1, + BG_TYPE_GRD_S_R5_2, + BG_TYPE_GRD_S_R5_3, + BG_TYPE_GRD_S_R5_B_1, + BG_TYPE_GRD_S_R5_B_2, + BG_TYPE_GRD_S_R5_P_1, + BG_TYPE_GRD_S_R6_1, + BG_TYPE_GRD_S_R6_2, + BG_TYPE_GRD_S_R6_3, + BG_TYPE_GRD_S_R6_B_1, + BG_TYPE_GRD_S_R6_B_2, + BG_TYPE_GRD_S_R6_P_1, + BG_TYPE_GRD_S_R7_1, + BG_TYPE_GRD_S_R7_2, + BG_TYPE_GRD_S_R7_3, + BG_TYPE_GRD_S_R7_B_1, + BG_TYPE_GRD_S_R7_B_2, + BG_TYPE_GRD_S_R7_P_1, + BG_TYPE_GRD_S_T_R1_1, + BG_TYPE_GRD_S_T_1, + BG_TYPE_GRD_S_T_2, + BG_TYPE_GRD_S_T_3, + BG_TYPE_GRD_S_T_4, + BG_TYPE_GRD_S_T_5, + BG_TYPE_GRD_S_T_6, + BG_TYPE_GRD_S_T_7, + BG_TYPE_GRD_S_T_8, + BG_TYPE_GRD_S_T_9, + BG_TYPE_GRD_S_T_10, + BG_TYPE_GRD_S_T_PO_1, + BG_TYPE_GRD_S_T_PO_2, + BG_TYPE_GRD_S_T_PO_3, + BG_TYPE_GRD_S_T_R1_2, + BG_TYPE_GRD_S_T_R1_3, + BG_TYPE_GRD_S_T_R1_4, + BG_TYPE_GRD_S_T_R1_5, + BG_TYPE_GRD_S_T_SH_1, + BG_TYPE_GRD_S_T_SH_2, + BG_TYPE_GRD_S_T_SH_3, + BG_TYPE_GRD_S_T_ST1_1, + BG_TYPE_GRD_S_T_ST1_2, + BG_TYPE_GRD_S_T_ST1_3, + BG_TYPE_242, + BG_TYPE_ROM_TENT, + BG_TYPE_ROOM01, + BG_TYPE_MYR_ETC, + BG_TYPE_246, + BG_TYPE_247, + BG_TYPE_248, + BG_TYPE_249, + BG_TYPE_250, + BG_TYPE_251, + BG_TYPE_252, + BG_TYPE_ROM_SHOP4_FUKU, + BG_TYPE_254, + BG_TYPE_ROM_URANAI, + BG_TYPE_ROM_SHOP4_1, + BG_TYPE_257, + BG_TYPE_258, + BG_TYPE_259, + BG_TYPE_260, + BG_TYPE_ROM_TRAIN_IN, + BG_TYPE_GRD_S_F_9_1, + BG_TYPE_GRD_S_R1_3_1, + BG_TYPE_GRD_S_C1_3_1, + BG_TYPE_GRD_S_F_9_2, + BG_TYPE_GRD_PLAYER_SELECT, + BG_TYPE_GRD_POST_OFFICE, + BG_TYPE_POLICE_INDOOR, + BG_TYPE_TMP, + BG_TYPE_TMP2, + BG_TYPE_TMPR, + BG_TYPE_TMPR2, + BG_TYPE_TMP3, + BG_TYPE_TMPR3, + BG_TYPE_TMP4, + BG_TYPE_TMPR4, + BG_TYPE_GRD_YAMISHOP, + BG_TYPE_ROM_MUSEUM1, + BG_TYPE_ROM_MUSEUM2, + BG_TYPE_ROM_MUSEUM3, + BG_TYPE_ROM_MUSEUM5, + BG_TYPE_282, + BG_TYPE_283, + BG_TYPE_284, + BG_TYPE_285, + BG_TYPE_286, + BG_TYPE_287, + BG_TYPE_288, + BG_TYPE_289, + BG_TYPE_ROM_TAILOR, + BG_TYPE_ROM_TOUDAI, + BG_TYPE_292, +}; + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/m_camera2.h b/include/m_camera2.h index cd45203c..521671a2 100644 --- a/include/m_camera2.h +++ b/include/m_camera2.h @@ -10,321 +10,321 @@ extern "C" { #endif enum { - CAMERA2_PROCESS_STOP, - CAMERA2_PROCESS_NORMAL, - CAMERA2_PROCESS_WADE, - CAMERA2_PROCESS_TALK, - CAMERA2_PROCESS_DEMO, - CAMERA2_PROCESS_ITEM, - CAMERA2_PROCESS_LOCK, - CAMERA2_PROCESS_DOOR, - CAMERA2_PROCESS_SIMPLE, - CAMERA2_PROCESS_CUST_TALK, - CAMERA2_PROCESS_INTER, - CAMERA2_PROCESS_STAFF_ROLL, - CAMERA2_PROCESS_INTER2, + CAMERA2_PROCESS_STOP, + CAMERA2_PROCESS_NORMAL, + CAMERA2_PROCESS_WADE, + CAMERA2_PROCESS_TALK, + CAMERA2_PROCESS_DEMO, + CAMERA2_PROCESS_ITEM, + CAMERA2_PROCESS_LOCK, + CAMERA2_PROCESS_DOOR, + CAMERA2_PROCESS_SIMPLE, + CAMERA2_PROCESS_CUST_TALK, + CAMERA2_PROCESS_INTER, + CAMERA2_PROCESS_STAFF_ROLL, + CAMERA2_PROCESS_INTER2, - CAMERA2_PROCESS_NUM + CAMERA2_PROCESS_NUM }; typedef struct camera_main_cust_talk_s { - ACTOR* speaker_actor; - ACTOR* listener_actor; - f32 center_ratio; - f32 cull_timer; - s16 angle_x; - s16 angle_y; - f32 distance; + ACTOR* speaker_actor; + ACTOR* listener_actor; + f32 center_ratio; + f32 cull_timer; + s16 angle_x; + s16 angle_y; + f32 distance; } CameraCustTalk; typedef struct camera_main_demo_s { - xyz_t starting_center_pos; - f32 starting_distance; - s_xyz starting_direction; + xyz_t starting_center_pos; + f32 starting_distance; + s_xyz starting_direction; - xyz_t goal_center_pos; - f32 goal_distance; - s_xyz goal_direction; + xyz_t goal_center_pos; + f32 goal_distance; + s_xyz goal_direction; - f32 goal_delta; - f32 acceleration_delta; - f32 braking_delta; - f32 now_delta; + f32 goal_delta; + f32 acceleration_delta; + f32 braking_delta; + f32 now_delta; } CameraDemo; typedef struct camera_main_door_s { - u32 flags; - int morph_counter; - xyz_t center_position; + u32 flags; + int morph_counter; + xyz_t center_position; } CameraDoor; typedef struct camera_main_inter_s { - xyz_t starting_center_pos; - xyz_t starting_eye_pos; - - xyz_t goal_center_pos; - xyz_t goal_eye_pos; + xyz_t starting_center_pos; + xyz_t starting_eye_pos; - f32 slope0; - f32 slope1; + xyz_t goal_center_pos; + xyz_t goal_eye_pos; - u32 flags; + f32 slope0; + f32 slope1; - int now_delta; - int max_delta; + u32 flags; - int pad[2]; + int now_delta; + int max_delta; + + int pad[2]; } CameraInter; typedef struct camera_main_item_s { - int type; - f32 cull_timer; + int type; + f32 cull_timer; } CameraItem; typedef struct camera_main_lock_s { - xyz_t center_pos; - xyz_t eye_pos; + xyz_t center_pos; + xyz_t eye_pos; - f32 fov_y; + f32 fov_y; - int morph_counter; + int morph_counter; - f32 near; - f32 far; + f32 near; + f32 far; } CameraLock; typedef struct camera_main_normal_s { - u32 flags; + u32 flags; - int last_indoor_distance_addition_idx; - int last_indoor_direction_addition_idx; + int last_indoor_distance_addition_idx; + int last_indoor_direction_addition_idx; - int morph_counter; + int morph_counter; } CameraNormal; typedef struct camera_main_simple_s { - xyz_t center_pos; - s_xyz angle; - f32 distance; + xyz_t center_pos; + s_xyz angle; + f32 distance; - int morph_counter; - int mode; + int morph_counter; + int mode; - f32 cull_timer; + f32 cull_timer; } CameraSimple; typedef struct camera_main_staff_roll_s { - xyz_t last_center_pos; - xyz_t last_eye_pos; - f32 last_distance; + xyz_t last_center_pos; + xyz_t last_eye_pos; + f32 last_distance; - ACTOR* speaker_actor; - ACTOR* listener_actor; + ACTOR* speaker_actor; + ACTOR* listener_actor; - s16 rotation_y_delta; - s16 r_delta; - s16 rotation_x_delta; + s16 rotation_y_delta; + s16 r_delta; + s16 rotation_x_delta; - u16 flags; - u16 morph_counter; - u16 pad; - u16 dist_counter; - s_xyz last_direction; + u16 flags; + u16 morph_counter; + u16 pad; + u16 dist_counter; + s_xyz last_direction; } CameraStaffRoll; typedef struct camera_main_talk_s { - ACTOR* speaker_actor; - ACTOR* listener_actor; + ACTOR* speaker_actor; + ACTOR* listener_actor; - xyz_t listener_pos; - - f32 cull_timer; - u32 flags; + xyz_t listener_pos; - xyz_t goal_center_pos; + f32 cull_timer; + u32 flags; + + xyz_t goal_center_pos; } CameraTalk; typedef struct camera_main_wade_s { - f32 timer; + f32 timer; - xyz_t start_pos; - xyz_t goal_pos; + xyz_t start_pos; + xyz_t goal_pos; - f32 goal_time; + f32 goal_time; } CameraWade; typedef union camera_main_data_u { - CameraCustTalk cust_talk; - CameraDemo demo; - CameraDoor door; - CameraInter inter; - CameraItem item; - CameraLock lock; - CameraNormal normal; - CameraSimple simple; - CameraStaffRoll staff_roll; - CameraTalk talk; - CameraWade wade; - - u64 align; + CameraCustTalk cust_talk; + CameraDemo demo; + CameraDoor door; + CameraInter inter; + CameraItem item; + CameraLock lock; + CameraNormal normal; + CameraSimple simple; + CameraStaffRoll staff_roll; + CameraTalk talk; + CameraWade wade; + + u64 align; } CameraMainData; /* request index data */ typedef struct camera_request_cust_talk_s { - ACTOR* speaker_actor; - ACTOR* listener_actor; - f32 center_ratio; - s16 angle_x; - s16 angle_y; - f32 distance; + ACTOR* speaker_actor; + ACTOR* listener_actor; + f32 center_ratio; + s16 angle_x; + s16 angle_y; + f32 distance; } CameraRequestCustTalk; typedef struct camera_request_demo_s { - xyz_t starting_center_pos; - f32 starting_distance; - s_xyz starting_direction; + xyz_t starting_center_pos; + f32 starting_distance; + s_xyz starting_direction; - xyz_t goal_center_pos; - f32 goal_distance; - s_xyz goal_direction; + xyz_t goal_center_pos; + f32 goal_distance; + s_xyz goal_direction; - f32 goal_delta; - f32 acceleration_delta; - f32 braking_delta; + f32 goal_delta; + f32 acceleration_delta; + f32 braking_delta; } CameraRequestDemo; typedef struct camera_request_door_s { - ACTOR* door_actor; - u32 flags; + ACTOR* door_actor; + u32 flags; } CameraRequestDoor; typedef struct camera_request_inter_s { - xyz_t starting_center_pos; - xyz_t starting_eye_pos; - - xyz_t goal_center_pos; - xyz_t goal_eye_pos; + xyz_t starting_center_pos; + xyz_t starting_eye_pos; - f32 slope0; - f32 slope1; + xyz_t goal_center_pos; + xyz_t goal_eye_pos; - u32 flags; + f32 slope0; + f32 slope1; - int morph_counter; + u32 flags; - int pad[2]; + int morph_counter; + + int pad[2]; } CameraRequestInter; typedef struct camera_request_item_s { - int type; + int type; } CameraRequestItem; typedef struct camera_request_lock_s { - xyz_t center_pos; - xyz_t eye_pos; + xyz_t center_pos; + xyz_t eye_pos; - f32 fov_y; + f32 fov_y; - int morph_counter; + int morph_counter; - f32 near; - f32 far; + f32 near; + f32 far; } CameraRequestLock; typedef struct camera_request_normal_s { - xyz_t position; + xyz_t position; - int flags; + int flags; } CameraRequestNormal; typedef struct camera_request_simple_s { - xyz_t center_pos; - s_xyz angle; - f32 distance; + xyz_t center_pos; + s_xyz angle; + f32 distance; - int morph_counter; - int mode; + int morph_counter; + int mode; } CameraRequestSimple; typedef struct camera_request_staff_roll_s { - ACTOR* speaker_actor; - ACTOR* listener_actor; + ACTOR* speaker_actor; + ACTOR* listener_actor; } CameraRequestStaffRoll; typedef struct camera_request_talk_s { - ACTOR* speaker_actor; - ACTOR* listener_actor; + ACTOR* speaker_actor; + ACTOR* listener_actor; - xyz_t listener_pos; + xyz_t listener_pos; - u32 flags; + u32 flags; } CameraRequestTalk; typedef struct camera_request_wade_s { - xyz_t goal_pos; - f32 goal_time; + xyz_t goal_pos; + f32 goal_time; } CameraRequestWade; typedef union camera_request_data_u { - CameraRequestCustTalk cust_talk; - CameraRequestDemo demo; - CameraRequestDoor door; - CameraRequestInter inter; - CameraRequestItem item; - CameraRequestLock lock; - CameraRequestNormal normal; - CameraRequestSimple simple; - CameraRequestStaffRoll staff_roll; - CameraRequestTalk talk; - CameraRequestWade wade; - - u64 align; + CameraRequestCustTalk cust_talk; + CameraRequestDemo demo; + CameraRequestDoor door; + CameraRequestInter inter; + CameraRequestItem item; + CameraRequestLock lock; + CameraRequestNormal normal; + CameraRequestSimple simple; + CameraRequestStaffRoll staff_roll; + CameraRequestTalk talk; + CameraRequestWade wade; + + u64 align; } CameraRequestData; typedef struct camera_lookat_s { - xyz_t eye; - xyz_t center; - xyz_t up; + xyz_t eye; + xyz_t center; + xyz_t up; } CameraLookat; typedef struct camera_perspective_s { - f32 fov_y; - f32 aspect_ratio; - f32 near; - f32 far; - f32 scale; + f32 fov_y; + f32 aspect_ratio; + f32 near; + f32 far; + f32 scale; } CameraPerspective; typedef struct camera_s { - CameraLookat lookat; - CameraPerspective perspective; + CameraLookat lookat; + CameraPerspective perspective; - s_xyz direction; /* camera orientation */ - s_xyz direction_velocity; /* camera orentation rate of change */ + s_xyz direction; /* camera orientation */ + s_xyz direction_velocity; /* camera orentation rate of change */ - xyz_t movement_velocity; /* camera world position velocity */ + xyz_t movement_velocity; /* camera world position velocity */ - f32 focus_distance; /* distance to the camera focal point/subject */ - f32 focus_distance_velocity; /* rate of change of the camera focus */ + f32 focus_distance; /* distance to the camera focal point/subject */ + f32 focus_distance_velocity; /* rate of change of the camera focus */ - int indoor_distance_addition_idx; /* index of indoor distance adjustment LUT value to apply */ - int indoor_direction_addition_idx; /* index of indoor direction adjustment LUT value to apply */ + int indoor_distance_addition_idx; /* index of indoor distance adjustment LUT value to apply */ + int indoor_direction_addition_idx; /* index of indoor direction adjustment LUT value to apply */ - int now_main_index; /* current main index type */ - int last_main_index; /* previous main index type */ - int requested_main_index; /* requested main index type */ - int requested_main_index_priority; /* requested main index priority value */ - int requested_main_index_flag; /* TRUE/FALSE requested main index has been set */ + int now_main_index; /* current main index type */ + int last_main_index; /* previous main index type */ + int requested_main_index; /* requested main index type */ + int requested_main_index_priority; /* requested main index priority value */ + int requested_main_index_flag; /* TRUE/FALSE requested main index has been set */ - CameraMainData main_data; /* current main index data */ - CameraRequestData request_data; /* requested index data */ + CameraMainData main_data; /* current main index data */ + CameraRequestData request_data; /* requested index data */ - xyz_t mic_pos; /* mic position */ - u32 flags; /* camera flags */ + xyz_t mic_pos; /* mic position */ + u32 flags; /* camera flags */ - xyz_t offset_eye; - xyz_t offset_center; + xyz_t offset_eye; + xyz_t offset_center; } Camera2; extern s16 getCamera2AngleY(GAME_PLAY* play); @@ -341,24 +341,36 @@ extern int Camera2_request_main_wade(GAME_PLAY* play, xyz_t* pos, int priority, extern int Camera2_request_main_talk(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, int priority); extern int Camera2_request_main_talk_pos(GAME_PLAY* play, ACTOR* speaker, xyz_t* listener_pos, int priority); extern int Camera2_request_main_normal(GAME_PLAY* play, int flags, int priority); -extern int Camera2_request_main_demo(GAME_PLAY* play, const xyz_t* start_center, const f32 start_dist, const s_xyz* start_dir, const xyz_t* goal_center, const f32 goal_dist, const s_xyz* goal_dir, const f32 goal_delta, const f32 accel_delta, const f32 braking_delta, const int priority); -extern int Camera2_request_main_demo_fromNowPos(GAME_PLAY* play, const xyz_t* goal_center, const s_xyz* goal_dir, const f32 goal_dist, const f32 goal_delta, const f32 accel_delta, const f32 braking_delta, const int priority); -extern int Camera2_request_main_demo_fromNowPos2(GAME_PLAY* play, const xyz_t* goal_center, const f32 goal_delta, const f32 accel_delta, const f32 braking_delta, const int priority); +extern int Camera2_request_main_demo(GAME_PLAY* play, const xyz_t* start_center, const f32 start_dist, + const s_xyz* start_dir, const xyz_t* goal_center, const f32 goal_dist, + const s_xyz* goal_dir, const f32 goal_delta, const f32 accel_delta, + const f32 braking_delta, const int priority); +extern int Camera2_request_main_demo_fromNowPos(GAME_PLAY* play, const xyz_t* goal_center, const s_xyz* goal_dir, + const f32 goal_dist, const f32 goal_delta, const f32 accel_delta, + const f32 braking_delta, const int priority); +extern int Camera2_request_main_demo_fromNowPos2(GAME_PLAY* play, const xyz_t* goal_center, const f32 goal_delta, + const f32 accel_delta, const f32 braking_delta, const int priority); extern int Camera2_request_main_item(GAME_PLAY* play, int type, int priority); -extern int Camera2_request_main_lock(GAME_PLAY* play, xyz_t* center_pos, xyz_t* eye_pos, f32 fov_y, int morph_counter, f32 near, f32 far, int priority); +extern int Camera2_request_main_lock(GAME_PLAY* play, xyz_t* center_pos, xyz_t* eye_pos, f32 fov_y, int morph_counter, + f32 near, f32 far, int priority); extern int Camera2_request_main_door(GAME_PLAY* play, ACTOR* door_actor, u32 flags, int priority); -extern int Camera2_request_main_simple2(GAME_PLAY* play, xyz_t* center, s_xyz* dir, f32 dist, int morph_counter, int mode, int priority); +extern int Camera2_request_main_simple2(GAME_PLAY* play, xyz_t* center, s_xyz* dir, f32 dist, int morph_counter, + int mode, int priority); extern int Camera2_request_main_simple_kirin(GAME_PLAY* play, const xyz_t* center, int priority); -extern int Camera2_request_main_simple_fishing(GAME_PLAY* play, const xyz_t* player_pos, const xyz_t* bobber_pos, int priority); +extern int Camera2_request_main_simple_fishing(GAME_PLAY* play, const xyz_t* player_pos, const xyz_t* bobber_pos, + int priority); extern int Camera2_request_main_simple_fishing_return(GAME_PLAY* play, xyz_t* player_pos, int priority); -extern int Camera2_request_main_simple(GAME_PLAY* play, xyz_t* pos, s_xyz* dir, f32 dist, int morph_counter, int priority); +extern int Camera2_request_main_simple(GAME_PLAY* play, xyz_t* pos, s_xyz* dir, f32 dist, int morph_counter, + int priority); extern void Camera2_main_Simple_AngleDistStd(GAME_PLAY* play, s_xyz* angle, f32* dist); extern int Camera2_request_main_listen_front_low_talk(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, int priority); extern int Camera2_request_main_needlework_talk(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, int priority); -extern int Camera2_request_main_cust_talk(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, f32 center_ratio, int priority, s16 angle_x, s16 angle_y, f32 distance); +extern int Camera2_request_main_cust_talk(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, f32 center_ratio, + int priority, s16 angle_x, s16 angle_y, f32 distance); extern int Camera2_request_BuySikimono_WallPaper(GAME_PLAY* play, xyz_t* center, xyz_t* eye); extern int Camera2_Inter_set_reverse_mode(GAME_PLAY* play); -extern int Camera2_request_main_inter(GAME_PLAY* play, xyz_t* start_center, xyz_t* start_eye, xyz_t* goal_center, xyz_t* goal_eye, f32 s0, f32 s1, u32 flags, int morph_counter, int priority); +extern int Camera2_request_main_inter(GAME_PLAY* play, xyz_t* start_center, xyz_t* start_eye, xyz_t* goal_center, + xyz_t* goal_eye, f32 s0, f32 s1, u32 flags, int morph_counter, int priority); extern int Camera2_request_main_staff_roll(GAME_PLAY* play, ACTOR* speaker, ACTOR* listener, int priority); extern void Init_Camera2(GAME_PLAY* play); extern void Camera2_process(GAME_PLAY* play); diff --git a/include/m_choice.h b/include/m_choice.h index bb496e99..33913ce0 100644 --- a/include/m_choice.h +++ b/include/m_choice.h @@ -124,6 +124,8 @@ extern void mChoice_no_b_set(mChoice_c* choice); extern void mChoice_no_b_close_set(mChoice_c* choice); /* Macros */ +#define mChoice_CHECK_MAIN_NORMAL() mChoice_check_main_normal(mChoice_Get_base_window_p()) + #define mChoice_GET_CHOSENUM() mChoice_Get_ChoseNum(mChoice_Get_base_window_p()) #define mChoice_CLEAR_CHOSENUM() mChoice_Clear_ChoseNum(mChoice_Get_base_window_p()) #define mChoice_NO_B_SET() mChoice_no_b_set(mChoice_Get_base_window_p()) diff --git a/include/m_clip.h b/include/m_clip.h index 68bba9de..720f09dd 100644 --- a/include/m_clip.h +++ b/include/m_clip.h @@ -24,6 +24,10 @@ #include "ac_handOverItem.h" #include "ac_quest_manager_clip.h" #include "ac_shop_goods_h.h" +#include "ac_shop_design.h" +#include "ac_effectbg.h" +#include "ac_htable.h" +#include "ac_sign.h" #ifdef __cplusplus extern "C" { @@ -37,13 +41,19 @@ typedef struct clip_s { /* 0x020 */ int arrange_ftr_num; /* 0x024 */ void* _024; /* 0x028 */ void* misin_clip; - /* 0x02C */ void* _02C; + /* 0x02C */ aHTBL_Clip_c* htbl_clip; /* 0x030 */ void* _030; /* 0x034 */ void* _034; /* 0x038 */ void* _038; /* 0x03C */ void* _03C; /* 0x040 */ aNPC_Clip_c* npc_clip; - /* 0x044 */ void* _044[(0x060 - 0x044) / sizeof(void*)]; + /* 0x044 */ void* _044; + /* 0x048 */ void* _048; + /* 0x04C */ void* _04C; + /* 0x050 */ void* _050; + /* 0x054 */ aSD_Clip_c* shop_design_clip; + /* 0x058 */ void* _058; + /* 0x05C */ void* _05C; /* 0x060 */ aSM_Clip_c* shop_manekin_clip; /* 0x064 */ void* _064; /* 0x068 */ CLIP_NONE_PROC _068; @@ -65,7 +75,7 @@ typedef struct clip_s { /* 0x0A8 */ void* _0A8; /* 0x0AC */ aGYO_Clip_c* gyo_clip; /* 0x0B0 */ aSG_Clip_c* shop_goods_clip; - /* 0x0B4 */ void* _0B4; + /* 0x0B4 */ EffectBG_MAKE_EFFECTBG_PROC make_effect_bg_proc; /* 0x0B8 */ aShopUmbrella_Clip_c* shop_umbrella_clip; /* 0x0BC */ aAR_Clip_c* arrange_room_clip; /* 0x0C0 */ void* _0C0; @@ -78,7 +88,7 @@ typedef struct clip_s { /* 0x0DC */ aAL_Clip_c* animal_logo_clip; /* 0x0E0 */ void* _0E0; /* 0x0E4 */ void* _0E4; - /* 0x0E8 */ void* _0E8; + /* 0x0E8 */ SIGN_ACTOR* sign_control_actor; /* 0x0EC */ aAPC_Clip_c* aprilfool_control_clip; /* 0x0F0 */ aEvMgr_Clip_c* event_manager_clip; /* 0x0F4 */ aGHC_Clip_c* groundhog_control_clip; diff --git a/include/m_collision_bg.h b/include/m_collision_bg.h index 3c4b3e6d..6967ece4 100644 --- a/include/m_collision_bg.h +++ b/include/m_collision_bg.h @@ -57,6 +57,46 @@ enum background_attribute { mCoBG_ATTRIBUTE_SAND, mCoBG_ATTRIBUTE_WOOD, mCoBG_ATTRIBUTE_SEA, + + mCoBG_ATTRIBUTE_25, + mCoBG_ATTRIBUTE_26, + mCoBG_ATTRIBUTE_27, + mCoBG_ATTRIBUTE_28, + mCoBG_ATTRIBUTE_29, + mCoBG_ATTRIBUTE_30, + mCoBG_ATTRIBUTE_31, + mCoBG_ATTRIBUTE_32, + mCoBG_ATTRIBUTE_33, + mCoBG_ATTRIBUTE_34, + mCoBG_ATTRIBUTE_35, + mCoBG_ATTRIBUTE_36, + mCoBG_ATTRIBUTE_37, + mCoBG_ATTRIBUTE_38, + mCoBG_ATTRIBUTE_39, + mCoBG_ATTRIBUTE_40, + mCoBG_ATTRIBUTE_41, + mCoBG_ATTRIBUTE_42, + mCoBG_ATTRIBUTE_43, + mCoBG_ATTRIBUTE_44, + mCoBG_ATTRIBUTE_45, + mCoBG_ATTRIBUTE_46, + mCoBG_ATTRIBUTE_47, + mCoBG_ATTRIBUTE_48, + mCoBG_ATTRIBUTE_49, + mCoBG_ATTRIBUTE_50, + mCoBG_ATTRIBUTE_51, + mCoBG_ATTRIBUTE_52, + mCoBG_ATTRIBUTE_53, + mCoBG_ATTRIBUTE_54, + mCoBG_ATTRIBUTE_55, + mCoBG_ATTRIBUTE_56, + mCoBG_ATTRIBUTE_57, + mCoBG_ATTRIBUTE_58, + mCoBG_ATTRIBUTE_59, + mCoBG_ATTRIBUTE_60, + mCoBG_ATTRIBUTE_61, + mCoBG_ATTRIBUTE_62, + mCoBG_ATTRIBUTE_63, // ... mCoBG_ATTRIBUTE_NONE = 100 @@ -94,6 +134,13 @@ enum { mCoBG_AREA_NUM }; +enum { + mCoBG_BLOCK_BGCHECK_MODE_NORMAL, + mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO, + + mCoBG_BLOCK_BGCHECK_MODE_NUM +}; + /* sizeof(mCoBG_CollisionData_c) == 4*/ typedef struct collision_bg_data_s { /* 1------- -------- -------- -------- */ u32 shape : 1; /* collision shape */ @@ -291,12 +338,30 @@ extern void mCoBG_BgCheckControll_RemoveDirectedUnitColumn(xyz_t* reverse_pos, A s16 check_type, int ut_x, int ut_z); extern xyz_t mCoBG_UniqueWallCheck(ACTOR* actorx, f32 range, f32 y_ofs); extern xyz_t mCoBG_ScopeWallCheck(ACTOR* actorx, const xyz_t* pos, f32 x, f32 z, f32 range, f32 y_ofs); +extern int mCoBG_ScrollCheck(xyz_t start_pos, xyz_t end_pos, f32 radius); +extern int mCoBG_GetBlockBgCheckMode(void); +extern void mCoBG_GroundCheckOnly(xyz_t* reverse_pos, ACTOR* actor, f32 check_range, f32 offset_y, s16 check_type); +extern f32 mCoBG_Wpos2BgUtCenterHeight_AddColumn(xyz_t pos); +extern f32 mCoBG_UtNum2UtCenterY_Keep(int ut_x, int ut_z); +extern int mCoBG_RegistDecalCircle(const xyz_t* pos_p, f32 radius_start, f32 radius_end, s16 timer); + +typedef int (*mCoBG_LINECHECK_PROC)(mActor_name_t); + +#define mCoBG_LINECHECK_CAT_WALL (1 << 0) +#define mCoBG_LINECHECK_CAT_GROUND (1 << 1) +#define mCoBG_LINECHECK_CAT_WATER (1 << 2) + +extern int mCoBG_LineCheck_RemoveFg(xyz_t* rev_pos, xyz_t start_pos, xyz_t end_pos, mCoBG_LINECHECK_PROC check_proc, + int category); +extern int mCoBG_GetMoveBgHeight(f32* move_bg_height, xyz_t* pos_p); +extern int mCoBG_WoodSoundEffect(const xyz_t* pos_p); extern void mCoBG_InitMoveBgData(); extern void mCoBG_InitBlockBgCheckMode(); extern void mCoBG_InitDecalCircle(); extern void mCoBG_CalcTimerDecalCircle(); +extern int mCoBG_ChangeBlockBgCheckMode(int mode); extern f32 mCoBG_GetWaterHeight_File(xyz_t wpos, char* file, int line); #define mCoBG_GetWaterHeight(wpos) mCoBG_GetWaterHeight_File(wpos, __FILE__, __LINE__) diff --git a/include/m_collision_obj.h b/include/m_collision_obj.h index 55539fcc..66255085 100644 --- a/include/m_collision_obj.h +++ b/include/m_collision_obj.h @@ -11,216 +11,210 @@ extern "C" { #endif enum collision_type { - ClObj_TYPE_JNT_SPH, - ClObj_TYPE_PIPE, - ClObj_TYPE_TRIS, + ClObj_TYPE_JNT_SPH, + ClObj_TYPE_PIPE, + ClObj_TYPE_TRIS, - ClObj_TYPE_NUM + ClObj_TYPE_NUM }; -enum weight{ - MASS_IMMOVABLE, - MASS_HEAVY, - MASS_NORMAL -}; +enum weight { MASS_IMMOVABLE, MASS_HEAVY, MASS_NORMAL }; #define MASSTYPE_IMMOVABLE 0xFF #define MASSTYPE_HEAVY 0xFE typedef struct collision_obj_s { - ACTOR* owner_actor; // actor which owns this collision object - ACTOR* collided_actor; // actor which the owner collided with or NULL + ACTOR* owner_actor; // actor which owns this collision object + ACTOR* collided_actor; // actor which the owner collided with or NULL - u8 collision_flags0; - u8 collision_flags1; + u8 collision_flags0; + u8 collision_flags1; - u8 collision_type; + u8 collision_type; } ClObj_c; typedef struct collision_elem_s { - u8 flags; + u8 flags; } ClObjElem_c; typedef struct collision_pipe_attribute_s { - Math3D_pipe_c pipe; + Math3D_pipe_c pipe; } ClObjPipeAttr_c; typedef struct collision_pipe_s { - ClObj_c collision_obj; - ClObjElem_c element; - ClObjPipeAttr_c attribute; + ClObj_c collision_obj; + ClObjElem_c element; + ClObjPipeAttr_c attribute; } ClObjPipe_c; /* static data */ typedef struct collision_obj_data_s { - u8 collision_flags0; - u8 collision_flags1; - u8 type; + u8 collision_flags0; + u8 collision_flags1; + u8 type; } ClObjData_c; typedef struct collision_obj_elem_data_s { - u8 flags; + u8 flags; } ClObjElemData_c; typedef struct collision_obj_pipe_attr_data_s { - Math3D_pipe_c pipe; + Math3D_pipe_c pipe; } ClObjPipeAttrData_c; typedef struct collision_obj_pipe_data_s { - ClObjData_c collision_data; - ClObjElemData_c element_data; - ClObjPipeAttrData_c attribute_data; + ClObjData_c collision_data; + ClObjElemData_c element_data; + ClObjPipeAttrData_c attribute_data; } ClObjPipeData_c; -typedef struct collision_check_tris_element_attr_data_s{ - xyz_t vtx[3]; -}ClObjTrisElemAttrData_c; +typedef struct collision_check_tris_element_attr_data_s { + xyz_t vtx[3]; +} ClObjTrisElemAttrData_c; -typedef struct collision_check_tris_element_data_s{ - ClObjElemData_c element; - ClObjTrisElemAttrData_c data; -}ClObjTrisElemData_c; +typedef struct collision_check_tris_element_data_s { + ClObjElemData_c element; + ClObjTrisElemAttrData_c data; +} ClObjTrisElemData_c; -typedef struct collision_check_tris_element_s{ +typedef struct collision_check_tris_element_s { Math3D_triangle_c tri; xyz_t t; -}ClObjTrisElemAttr_c; +} ClObjTrisElemAttr_c; -typedef struct collision_tris_elem_s{ - ClObjElem_c element; - ClObjTrisElemAttr_c attribute; -}ClObjTrisElem_c; +typedef struct collision_tris_elem_s { + ClObjElem_c element; + ClObjTrisElemAttr_c attribute; +} ClObjTrisElem_c; typedef struct collision_tris_s { - ClObj_c collision_obj; - int count; - ClObjTrisElem_c* elements; + ClObj_c collision_obj; + int count; + ClObjTrisElem_c* elements; } ClObjTris_c; typedef struct ClObjTris_Init { - ClObjData_c data; - int count; - ClObjTrisElemData_c* elem_data; + ClObjData_c data; + int count; + ClObjTrisElemData_c* elem_data; } ClObjTrisData_c; -typedef struct collision_obj_joint_sphere_elem_attribute_s{ +typedef struct collision_obj_joint_sphere_elem_attribute_s { Math3D_sphere_c s1; Math3D_sphere_c s2; f32 unk8; u8 unk14; -}ClObjJntSphElemAttr_c; +} ClObjJntSphElemAttr_c; -typedef struct collision_joint_sphere_elem_s{ - ClObjElem_c element; - ClObjJntSphElemAttr_c attribute; -}ClObjJntSphElem_c; +typedef struct collision_joint_sphere_elem_s { + ClObjElem_c element; + ClObjJntSphElemAttr_c attribute; +} ClObjJntSphElem_c; typedef struct collision_joint_sphere_s { - ClObj_c collision_obj; - int count; - ClObjJntSphElem_c* elements; -}ClObjJntSph_c; + ClObj_c collision_obj; + int count; + ClObjJntSphElem_c* elements; +} ClObjJntSph_c; #define Cl_COLLIDER_NUM 50 typedef struct collision_check_s { - u16 flags; - int collider_num; - ClObj_c* collider_table[Cl_COLLIDER_NUM]; + u16 flags; + int collider_num; + ClObj_c* collider_table[Cl_COLLIDER_NUM]; } CollisionCheck_c; /* This appears to again be copy-paste from OoT? */ typedef struct status_s { - xyz_t collision_vec; - s16 radius; - s16 height; - s16 offset; + xyz_t collision_vec; + s16 radius; + s16 height; + s16 offset; - u8 weight; - u8 hp; - u8 damage; + u8 weight; + u8 hp; + u8 damage; - u8 damage_effect; - u8 at_hit_effect; - u8 ac_hit_effect; + u8 damage_effect; + u8 at_hit_effect; + u8 ac_hit_effect; } Status_c; typedef struct status_data_s { - u8 health; // assuming this is inherited from OoT, seems largely unused - s16 radius; - s16 height; - s16 offset; - u8 weight; + u8 health; // assuming this is inherited from OoT, seems largely unused + s16 radius; + s16 height; + s16 offset; + u8 weight; } StatusData_c; typedef struct mco_work_s { - int count; - ClObj_c* colliders[10]; + int count; + ClObj_c* colliders[10]; } McoWork; extern McoWork mco_work; - -typedef void (*CollisionOCFunction)(GAME*, CollisionCheck_c*, ClObj_c*,ClObj_c*); +typedef void (*CollisionOCFunction)(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); typedef int (*CollisionOCClear)(GAME*, ClObj_c*); typedef int (*CollisionClearFunction)(GAME*, ClObj_c*); -extern void CollisionCheck_workTrisElemCenter(ClObjTrisElem_c *, xyz_t *); -extern int ClObj_ct(GAME *, ClObj_c *); -extern int ClObj_dt(GAME *, ClObj_c *); -extern int ClObj_set4(GAME *, ClObj_c *, ACTOR *, ClObjData_c *); -extern void ClObj_OCClear(GAME *, ClObj_c *); -extern int ClObjElem_ct(ClObjElem_c *); -extern int ClObjElem_set(ClObjElem_c *, ClObjElemData_c *); -extern void ClObjElem_OCClear(GAME *, ClObjElem_c *); -extern int ClObjJntSphElem_OCClear(GAME *, ClObjJntSphElem_c *); -extern int ClObjJntSph_OCClear(GAME *, ClObj_c *); -extern int ClObjPipeAttr_ct(GAME *, ClObjPipeAttr_c *); -extern int ClObjPipeAttr_dt(GAME *, ClObjPipeAttr_c *); -extern int ClObjPipeAttr_set(GAME *, ClObjPipeAttr_c *, ClObjPipeAttr_c *); -extern int ClObjPipe_ct(GAME *, ClObjPipe_c *); -extern int ClObjPipe_dt(GAME *, ClObjPipe_c *); -extern int ClObjPipe_set5(GAME *, ClObjPipe_c *, ACTOR *, ClObjPipeData_c *); -extern int ClObjPipe_OCClear(GAME *, ClObj_c *); -extern int ClObjTrisElemAttr_ct(GAME *, ClObjTrisElemAttr_c *); -extern int ClObjTrisElemAttr_dt(GAME *, ClObjTrisElemAttr_c *); -extern int ClObjTrisElemAttr_set(GAME *, ClObjTrisElemAttr_c *, ClObjTrisElemAttrData_c *); -extern int ClObjTrisElem_ct(GAME *, ClObjTrisElem_c *); -extern int ClObjTrisElem_dt(GAME *, ClObjTrisElem_c *); -extern int ClObjTrisElem_set(GAME *, ClObjTrisElem_c *, ClObjTrisElemData_c *); -extern int ClObjTrisElem_OCClear(GAME *, ClObjTrisElem_c *); -extern int ClObjTris_ct(GAME *, ClObjTris_c *); -extern int ClObjTris_dt_nzf(GAME *, ClObjTris_c *); -extern int ClObjTris_set5_nzm(GAME *, ClObjTris_c *, ACTOR *, ClObjTrisData_c *, ClObjTrisElem_c *); -extern int ClObjTris_OCClear(GAME *, ClObj_c *); -extern void CollisionCheck_ct(GAME *, CollisionCheck_c *); -extern void CollisionCheck_dt(GAME *, CollisionCheck_c *); -extern void CollisionCheck_clear(GAME *, CollisionCheck_c *); -extern int CollisionCheck_setOC(GAME *, CollisionCheck_c *, ClObj_c *); +extern void CollisionCheck_workTrisElemCenter(ClObjTrisElem_c*, xyz_t*); +extern int ClObj_ct(GAME*, ClObj_c*); +extern int ClObj_dt(GAME*, ClObj_c*); +extern int ClObj_set4(GAME*, ClObj_c*, ACTOR*, ClObjData_c*); +extern void ClObj_OCClear(GAME*, ClObj_c*); +extern int ClObjElem_ct(ClObjElem_c*); +extern int ClObjElem_set(ClObjElem_c*, ClObjElemData_c*); +extern void ClObjElem_OCClear(GAME*, ClObjElem_c*); +extern int ClObjJntSphElem_OCClear(GAME*, ClObjJntSphElem_c*); +extern int ClObjJntSph_OCClear(GAME*, ClObj_c*); +extern int ClObjPipeAttr_ct(GAME*, ClObjPipeAttr_c*); +extern int ClObjPipeAttr_dt(GAME*, ClObjPipeAttr_c*); +extern int ClObjPipeAttr_set(GAME*, ClObjPipeAttr_c*, ClObjPipeAttr_c*); +extern int ClObjPipe_ct(GAME*, ClObjPipe_c*); +extern int ClObjPipe_dt(GAME*, ClObjPipe_c*); +extern int ClObjPipe_set5(GAME*, ClObjPipe_c*, ACTOR*, ClObjPipeData_c*); +extern int ClObjPipe_OCClear(GAME*, ClObj_c*); +extern int ClObjTrisElemAttr_ct(GAME*, ClObjTrisElemAttr_c*); +extern int ClObjTrisElemAttr_dt(GAME*, ClObjTrisElemAttr_c*); +extern int ClObjTrisElemAttr_set(GAME*, ClObjTrisElemAttr_c*, ClObjTrisElemAttrData_c*); +extern int ClObjTrisElem_ct(GAME*, ClObjTrisElem_c*); +extern int ClObjTrisElem_dt(GAME*, ClObjTrisElem_c*); +extern int ClObjTrisElem_set(GAME*, ClObjTrisElem_c*, ClObjTrisElemData_c*); +extern int ClObjTrisElem_OCClear(GAME*, ClObjTrisElem_c*); +extern int ClObjTris_ct(GAME*, ClObjTris_c*); +extern int ClObjTris_dt_nzf(GAME*, ClObjTris_c*); +extern int ClObjTris_set5_nzm(GAME*, ClObjTris_c*, ACTOR*, ClObjTrisData_c*, ClObjTrisElem_c*); +extern int ClObjTris_OCClear(GAME*, ClObj_c*); +extern void CollisionCheck_ct(GAME*, CollisionCheck_c*); +extern void CollisionCheck_dt(GAME*, CollisionCheck_c*); +extern void CollisionCheck_clear(GAME*, CollisionCheck_c*); +extern int CollisionCheck_setOC(GAME*, CollisionCheck_c*, ClObj_c*); extern int get_type(u8); -extern void CollisionCheck_setOC_HitInfo(ClObj_c *, ClObjElem_c *, xyz_t *, ClObj_c *, ClObjElem_c *, xyz_t *, f32); -extern void CollisionCheck_OC_JntSph_Vs_JntSph(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC_JntSph_Vs_Pipe(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC_Pipe_Vs_JntSph(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC_Pipe_Vs_Pipe(GAME *, CollisionCheck_c *, ClObj_c *, ClObj_c *); -extern int CollisionCheck_Check1ClObjNoOC(ClObj_c *); -extern int CollisionCheck_Check2ClObjNoOC(ClObj_c *, ClObj_c *); -extern void CollisionCheck_OC(GAME *, CollisionCheck_c *); -extern void CollisionCheck_setOCC_HitInfo(GAME *, ClObj_c *, ClObjTrisElem_c *, xyz_t *, ClObj_c *, ClObjElem_c *, xyz_t *, xyz_t *); -extern void CollisionCheck_OCC_Tris_Vs_JntSph(GAME *, CollisionCheck_c *, ClObjTris_c *, ClObjJntSph_c *); -extern void CollisionCheck_OCC_Tris_Vs_Pipe(GAME *, CollisionCheck_c *, ClObjTris_c *, ClObjPipe_c *); -extern int CollisionCheck_Check1ClObjNoOCC(ClObj_c *); -extern void CollisionCheck_OCC(GAME *, CollisionCheck_c *); -extern int ClObjTrisElem_OCCClear(GAME *, ClObjTrisElem_c *); -extern int ClObj_OCCClear(GAME *, ClObj_c *); -extern int ClObjTris_OCCClear(GAME *, ClObj_c *); -extern int CollisionCheck_setOCC(GAME *, CollisionCheck_c *, ClObj_c *); -extern void CollisionCheck_Status_ct(Status_c *); -extern void CollisionCheck_Status_Clear(Status_c *); -extern void CollisionCheck_Status_set3(Status_c *, StatusData_c *); -extern int CollisionCheck_Uty_ActorWorldPosSetPipeC(ACTOR *, ClObjPipe_c *); - - +extern void CollisionCheck_setOC_HitInfo(ClObj_c*, ClObjElem_c*, xyz_t*, ClObj_c*, ClObjElem_c*, xyz_t*, f32); +extern void CollisionCheck_OC_JntSph_Vs_JntSph(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC_JntSph_Vs_Pipe(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC_Pipe_Vs_JntSph(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC_Pipe_Vs_Pipe(GAME*, CollisionCheck_c*, ClObj_c*, ClObj_c*); +extern int CollisionCheck_Check1ClObjNoOC(ClObj_c*); +extern int CollisionCheck_Check2ClObjNoOC(ClObj_c*, ClObj_c*); +extern void CollisionCheck_OC(GAME*, CollisionCheck_c*); +extern void CollisionCheck_setOCC_HitInfo(GAME*, ClObj_c*, ClObjTrisElem_c*, xyz_t*, ClObj_c*, ClObjElem_c*, xyz_t*, + xyz_t*); +extern void CollisionCheck_OCC_Tris_Vs_JntSph(GAME*, CollisionCheck_c*, ClObjTris_c*, ClObjJntSph_c*); +extern void CollisionCheck_OCC_Tris_Vs_Pipe(GAME*, CollisionCheck_c*, ClObjTris_c*, ClObjPipe_c*); +extern int CollisionCheck_Check1ClObjNoOCC(ClObj_c*); +extern void CollisionCheck_OCC(GAME*, CollisionCheck_c*); +extern int ClObjTrisElem_OCCClear(GAME*, ClObjTrisElem_c*); +extern int ClObj_OCCClear(GAME*, ClObj_c*); +extern int ClObjTris_OCCClear(GAME*, ClObj_c*); +extern int CollisionCheck_setOCC(GAME*, CollisionCheck_c*, ClObj_c*); +extern void CollisionCheck_Status_ct(Status_c*); +extern void CollisionCheck_Status_Clear(Status_c*); +extern void CollisionCheck_Status_set3(Status_c*, StatusData_c*); +extern int CollisionCheck_Uty_ActorWorldPosSetPipeC(ACTOR*, ClObjPipe_c*); #ifdef __cplusplus } diff --git a/include/m_common_data.h b/include/m_common_data.h index 4718ff49..192cd1e5 100644 --- a/include/m_common_data.h +++ b/include/m_common_data.h @@ -86,7 +86,7 @@ typedef struct Save_s { /* 0x00001A */ u16 copy_protect; /* 'unique' value between [1, 65520] used for copy protection (see mCD_get_land_copyProtect) */ /* 0x00001C */ u8 pad_1C[4]; - /* 0x000020 */ Private_c private[PLAYER_NUM]; /* player data */ + /* 0x000020 */ Private_c private_data[PLAYER_NUM]; /* player data */ /* 0x009120 */ mLd_land_info_c land_info; /* town name & id */ /* 0x00912C */ mNtc_board_post_c noticeboard[mNtc_BOARD_POST_COUNT]; /* noticeboard posts */ /* 0x009CE4 */ u8 pad_9CE4[4]; @@ -137,7 +137,7 @@ typedef struct Save_s { fail of town ranking */ /* 0x021395 */ u8 clear_grass; /* set by Wisp, removes all weeds */ /* 0x021396 */ u8 _021396[2]; - /* 0x021398 */ lbRTC_year_t event_year; /* might not exist and just be lbRTC_year_t */ + /* 0x021398 */ s16 event_year; /* 0x02139A */ u8 unused_2139C[6]; /* 0x0213A0 */ u8 keep_house_size[PLAYER_NUM]; /* saved flags for house sizes */ /* 0x0213A4 */ lbRTC_ymd_c force_remove_date; /* last time the NPC force remove timer was updated */ @@ -241,11 +241,12 @@ typedef struct common_data_s { /* 0x028592 */ s16 demo_profiles[2]; /* demo_profiles[0] is for demo_clip, demo_profiles[1] is for demo_clip2 */ /* 0x028596 */ u16 copy_protect_code; /* 0x028598 */ int event_keep_flags[4]; - /* 0x0285A8 */ u8 _285A8[0x0285BE - 0x0285A8]; + /* 0x0285A8 */ u8 _285A8[0x0285BD - 0x0285A8]; + /* 0x0285BD */ s8 player_warp_request; /* 0x0285BE */ s8 player_actor_exists; - /* 0x0285BF */ s8 payment_completed_type; + /* 0x0285BF */ s8 complete_payment_type; /* 0x0285C0 */ s8 player_decoy_flag; - /* 0x0285C1 */ u8 _285C1; + /* 0x0285C1 */ s8 axe_damage; /* 0x0285C2 */ u8 make_npc2_actor; /* 0x0285C4 */ s16 event_id; /* 0x0285C6 */ u8 event_title_flags; @@ -258,8 +259,8 @@ typedef struct common_data_s { /* 0x028839 */ s8 player_bee_chase_flag; /* 0x02883A */ s8 goki_shocked_flag; /* 0x02883B */ u8 time_changed_flag; - /* 0x02883C */ u8 unable_to_wade_flag; - /* 0x02883D */ u8 _02883D; + /* 0x02883C */ s8 unable_wade; + /* 0x02883D */ s8 fail_emu_flag; /* 0x02883E */ u8 train_coming_flag; /* state tracker for when train is going to spawn/has spawned */ /* 0x02883F */ u8 train_exists_flag; /* state tracker for when train exists */ /* 0x028840 */ u8 train_control_state; /* current train state */ @@ -308,7 +309,7 @@ typedef struct common_data_s { /* 0x02DB46 */ mCD_persistent_data_c travel_persistent_data; /* used for checking if travelling back to town */ /* 0x02DBA2 */ s16 island_weather; /* 0x02DBA4 */ s16 island_weather_intensity; - /* 0x02DBA6 */ s16 _2DBA6; + /* 0x02DBA6 */ s16 sunburn_time; /* 0x02DBA8 */ u8 memcard_slot; /* 0X02DBAC */ int my_room_message_control_flags; /* 0x02DBB0 */ s16 can_look_goki_count; diff --git a/include/m_demo.h b/include/m_demo.h index 2747d3df..ed016798 100644 --- a/include/m_demo.h +++ b/include/m_demo.h @@ -24,142 +24,142 @@ extern "C" { #define mDemo_WINDOW_COLOR_A 255 enum { - mDemo_STATE_WAIT, - mDemo_STATE_READY, - mDemo_STATE_RUN, - // ??? - mDemo_STATE_STOP = 9, + mDemo_STATE_WAIT, + mDemo_STATE_READY, + mDemo_STATE_RUN, + // ??? + mDemo_STATE_STOP = 9, - mDemo_STATE_NUM + mDemo_STATE_NUM }; enum { - mDemo_DIRECT_N, - mDemo_DIRECT_NE, - mDemo_DIRECT_E, - mDemo_DIRECT_SE, - mDemo_DIRECT_S, - mDemo_DIRECT_SW, - mDemo_DIRECT_W, - mDemo_DIRECT_NW, + mDemo_DIRECT_N, + mDemo_DIRECT_NE, + mDemo_DIRECT_E, + mDemo_DIRECT_SE, + mDemo_DIRECT_S, + mDemo_DIRECT_SW, + mDemo_DIRECT_W, + mDemo_DIRECT_NW, - mDemo_DIRECT_NUM + mDemo_DIRECT_NUM }; enum demo_type { - mDemo_TYPE_NONE, - mDemo_TYPE_SCROLL, - mDemo_TYPE_2, - mDemo_TYPE_DOOR, - mDemo_TYPE_4, - mDemo_TYPE_SCROLL2, - mDemo_TYPE_DOOR2, - mDemo_TYPE_TALK, - mDemo_TYPE_SPEAK, - mDemo_TYPE_REPORT, - mDemo_TYPE_SPEECH, - mDemo_TYPE_OUTDOOR, - mDemo_TYPE_12, - mDemo_TYPE_EVENTMSG, - mDemo_TYPE_EVENTMSG2, - mDemo_TYPE_15, - mDemo_TYPE_SCROLL3, + mDemo_TYPE_NONE, + mDemo_TYPE_SCROLL, + mDemo_TYPE_EXITSCENE, + mDemo_TYPE_DOOR, + mDemo_TYPE_4, + mDemo_TYPE_SCROLL2, + mDemo_TYPE_DOOR2, + mDemo_TYPE_TALK, + mDemo_TYPE_SPEAK, + mDemo_TYPE_REPORT, + mDemo_TYPE_SPEECH, + mDemo_TYPE_OUTDOOR, + mDemo_TYPE_12, + mDemo_TYPE_EVENTMSG, + mDemo_TYPE_EVENTMSG2, + mDemo_TYPE_15, + mDemo_TYPE_SCROLL3, - mDemo_TYPE_NUM + mDemo_TYPE_NUM }; enum demo_order_type { - mDemo_ORDER_PLAYER, - mDemo_ORDER_1, - mDemo_ORDER_2, - mDemo_ORDER_3, - mDemo_ORDER_NPC0, - mDemo_ORDER_NPC1, - mDemo_ORDER_NPC2, - mDemo_ORDER_7, - mDemo_ORDER_8, - mDemo_ORDER_QUEST, + mDemo_ORDER_PLAYER, + mDemo_ORDER_1, + mDemo_ORDER_2, + mDemo_ORDER_3, + mDemo_ORDER_NPC0, + mDemo_ORDER_NPC1, + mDemo_ORDER_NPC2, + mDemo_ORDER_7, + mDemo_ORDER_8, + mDemo_ORDER_QUEST, - mDemo_ORDER_NUM + mDemo_ORDER_NUM }; typedef void (*mDemo_REQUEST_PROC)(ACTOR*); typedef struct demo_clip_s { - void* class; - int type; /* 0 = none?, 1 = intro_demo, 2 = ride_off_demo */ + void* demo_class; + int type; /* 0 = none?, 1 = intro_demo, 2 = ride_off_demo */ } mDemo_Clip_c; enum demo_clip_type { - mDemo_CLIP_TYPE_NONE, - mDemo_CLIP_TYPE_INTRO_DEMO, - mDemo_CLIP_TYPE_RIDE_OFF_DEMO, - mDemo_CLIP_TYPE_PRESENT_DEMO, - mDemo_CLIP_TYPE_BOAT_DEMO, - mDemo_CLIP_TYPE_RESET_DEMO, + mDemo_CLIP_TYPE_NONE, + mDemo_CLIP_TYPE_INTRO_DEMO, + mDemo_CLIP_TYPE_RIDE_OFF_DEMO, + mDemo_CLIP_TYPE_PRESENT_DEMO, + mDemo_CLIP_TYPE_BOAT_DEMO, + mDemo_CLIP_TYPE_RESET_DEMO, - mDemo_CLIP_TYPE_NUM + mDemo_CLIP_TYPE_NUM }; typedef struct demo_req_s { - ACTOR* actor; - int type; - mDemo_REQUEST_PROC proc; - f32 talk_weight; + ACTOR* actor; + int type; + mDemo_REQUEST_PROC proc; + f32 talk_weight; } mDemo_Request_c; typedef struct demo_door_data_s { - int type; + int type; - struct { - f32 size; - int direct; - } house_info; + struct { + f32 size; + int direct; + } house_info; } mDemo_door_data_c; typedef struct demo_emsg_data_s { - int msg_no; - rgba_t window_color; - int msg_delay_timer; - int scene_delay_timer; - Door_data_c door_data; - u8 _24[4]; // unused? + int msg_no; + rgba_t window_color; + int msg_delay_timer; + int scene_delay_timer; + Door_data_c door_data; + u8 _24[4]; // unused? } mDemo_emsg_data_c; typedef struct demo_talk_data_s { - int msg_no; - int turn; - int use_zoom_sound; - int display_name; - int change_player; - int return_get_golden_axe_demo; - int return_demo_wait; - rgba_t window_color; - u8 actor_saved_weight; + int msg_no; + int turn; + int use_zoom_sound; + int display_name; + int change_player; + int return_get_golden_axe_demo; + int return_demo_wait; + rgba_t window_color; + u8 actor_saved_weight; } mDemo_talk_data_c; typedef struct demo_data_s { - ACTOR* speaker_actor; - ACTOR* listen_actor; - int speaker_able; - int listen_able; - u16 order_data[mDemo_ORDER_NUM][mDemo_ORDER_VALUE_MAX]; - s8 change_player_destiny; - int state; - mDemo_Request_c current; - mDemo_Request_c request[mDemo_REQUEST_NUM]; - int request_num; - int priority_type; - int camera_type; - int keep_camera_type; + ACTOR* speaker_actor; + ACTOR* listen_actor; + int speaker_able; + int listen_able; + u16 order_data[mDemo_ORDER_NUM][mDemo_ORDER_VALUE_MAX]; + s8 change_player_destiny; + int state; + mDemo_Request_c current; + mDemo_Request_c request[mDemo_REQUEST_NUM]; + int request_num; + int priority_type; + int camera_type; + int keep_camera_type; - union { - mDemo_door_data_c door; - mDemo_emsg_data_c emsg; - mDemo_talk_data_c talk; - } data; + union { + mDemo_door_data_c door; + mDemo_emsg_data_c emsg; + mDemo_talk_data_c talk; + } data; - mDemo_Request_c request_save; + mDemo_Request_c request_save; } mDemo_Data_c; extern ACTOR* mDemo_Get_talk_actor(); diff --git a/include/m_event.h b/include/m_event.h index 09cca249..0504a46e 100644 --- a/include/m_event.h +++ b/include/m_event.h @@ -350,6 +350,13 @@ enum { mEv_SPECIAL_STATE_NUM }; +enum { + mEv_EVENT_MAIL_VT_DAY, /* Valentine's day */ + mEv_EVENT_MAIL_WT_DAY, /* White day */ + + mEv_EVENT_MAIL_NUM +}; + #define mEv_STATUS_ACTIVE (1 << 0) /* event is active */ #define mEv_STATUS_STOP (1 << 1) /* event is stopped */ #define mEv_STATUS_SHOW (1 << 2) /* event is shown */ @@ -399,10 +406,12 @@ typedef union { mEv_dozaemon_c dozaemon; } mEv_weekly_u; +#define mEv_BARGIN_ITEM_NUM 5 + typedef struct bargin_event_s { lbRTC_time_c start_time; lbRTC_time_c end_time; - mActor_name_t items[5]; + mActor_name_t items[mEv_BARGIN_ITEM_NUM]; int kind; } mEv_bargin_c; @@ -569,56 +578,92 @@ typedef struct event_common_save_data { u8 dozaemon_completed; // used to signal when you've received an item from gulliver } mEv_save_common_data_c; -extern void mEv_clear_status(int event, s16 status); -extern int mEv_CheckFirstJob(); -extern int mEv_CheckFirstIntro(); -extern int mEv_CheckArbeit(); -extern int mEv_CheckTitleDemo(); -extern int mEv_check_status(int event, s16 status); -extern int mEv_check_status_edge(s16 status); -extern u8* mEv_get_common_area(int type, u8 id); -extern u8* mEv_reserve_common_area(int type, u8 id); -extern u8* mEv_get_save_area(int type, u8 id); -extern u8* mEv_reserve_save_area(int type, u8 id); -extern void mEv_actor_dying_message(int type, ACTOR* actor); -extern int mEv_ArbeitPlayer(u32 player_no); -extern u16 mEv_get_special_event_type(); -extern void mEv_ClearEventSaveInfo(mEv_event_save_c* event_save_data); -extern void mEv_EventON(u32 event_kind); -extern int mEv_CheckGateway(); -extern int mEv_check_schedule(int event); -extern mEv_place_data_c* mEv_get_common_place(int type, u8 id); -extern void mEv_set_status(int event, s16 status); -extern void mEv_GetEventWeather(s16* weather, s16* intensity); -extern int mEv_CheckRealArbeit(); -extern int mEv_CheckEvent(u32 event); -extern u16 mEv_get_bargain_day(); - -extern int mEv_weekday2day(lbRTC_month_t month, int week_type, int weekday); +extern void mEv_ClearSpecialEvent(mEv_special_c* special_event); +extern void mEv_ClearEventKabuPeddler(mEv_kabu_peddler_c* kabu_peddler); +extern void mEv_ClearEventSaveInfo(mEv_event_save_c* save_event); extern void mEv_ClearEventInfo(); - +extern void mEv_EventON(u32 event_kind); +extern void mEv_EventOFF(u32 event_kind); +extern int mEv_CheckEvent(u32 event_kind); +extern void mEv_ClearPersonalEventFlag(int player_no); +extern void mEv_SetFirstJob(); +extern int mEv_CheckRealArbeit(); +extern int mEv_CheckArbeit(); +extern int mEv_CheckFirstJob(); +extern void mEv_UnSetFirstJob(); +extern void mEv_SetFirstIntro(); +extern int mEv_CheckFirstIntro(); +extern void mEv_UnSetFirstIntro(); +extern void mEv_SetGateway(); +extern int mEv_CheckGateway(); +extern void mEv_UnSetGateway(); +extern int mEv_CheckTitleDemo(); +extern void mEv_SetTitleDemo(int demo_number); +extern void mEv_RenewalDataEveryDay(); +extern void mEv_GetEventWeather(s16* weather, s16* intensity); +extern lbRTC_day_t mEv_get_next_weekday(lbRTC_weekday_t weekday); +extern int mEv_weekday2day(lbRTC_month_t month, int week, int weekday); +extern int mEv_get_end_time(int event_type); +extern u16 mEv_get_bargain_day(); +extern u16 mEv_get_special_event_day(); +extern u16 mEv_get_special_event_type(); +extern int mEv_get_event_place(int event, int* bx, int* bz); +extern int mEv_bridge_time_check(); extern void mEv_init(Event_c* event); +extern void mEv_init_force(Event_c* event); extern void mEv_2nd_init(Event_c* event); - +extern int mEv_PlayerOK(); extern void mEv_run(Event_c* event); extern void mEv_finish(Event_c* event); - -extern int mEv_CheckTitleDemo(); -extern void mEv_SetTitleDemo(int titledemo_no); - -extern int mGH_check_birth2(); -extern int mMC_check_birth(); -extern void mGH_animal_return_init(); -extern void mMC_mask_cat_init(); -extern void mEv_init_force(Event_c* event); -extern void mEv_SetGateway(); -extern void mEv_UnSetGateway(); -extern void mGH_check_delete(); -extern void mMC_check_delete(); -extern void mEv_special_event_soldout(int type); - +extern int mEv_check_schedule(int event); +extern int mEv_check_run_today(int event); +extern void mEv_set_status(int event, s16 status); +extern void mEv_clear_status(int event, s16 status); +extern int mEv_check_status(int event, s16 status); +extern int mEv_check_status_edge(s16 status); +extern void mEv_set_keep(int event); +extern void mEv_clear_keep(int event); +extern int mEv_check_keep(int event); +extern u8* mEv_reserve_save_area(int type, u8 id); +extern u8* mEv_get_save_area(int type, u8 id); +extern int mEv_clear_save_area(int type, u8 id); +extern u8* mEv_reserve_common_area(int type, u8 id); +extern u8* mEv_get_common_area(int type, u8 id); +extern int mEv_clear_common_area(int type, u8 id); +extern mEv_place_data_c* mEv_reserve_common_place(int type, u8 id); +extern mEv_place_data_c* mEv_get_common_place(int type, u8 id); +extern int mEv_clear_common_place(int type, u8 id); +extern int mEv_use_block_by_other_event(int type, BlockOrUnit_c* block); +extern void mEv_erase_FG_all_in_common_place(); +extern void mEv_clear_rumor(); +extern int mEv_spread_rumor(int type); +extern int mEv_get_rumor(); +extern void mEv_actor_dying_message(int type, ACTOR* actor); +extern int mEv_LiveSonchoPresent(); +extern int mEv_LivePlayer(u32 player_no); +extern int mEv_ArbeitPlayer_kari(u32 player_no); +extern int mEv_ArbeitPlayer(u32 player_no); +extern void mEv_make_new_special_event(); +extern int mEv_GetMonth(Event_c* event); +extern int mEv_GetDay(Event_c* event); +extern int mEv_GetHour(Event_c* event); extern void mEv_debug_print4f(gfxprint_t* gfxprint); extern void mEv_sp_debug_print4f(gfxprint_t* gfxprint); +extern int mEv_change(Event_c* event); +extern int mEv_get_special_event_state(); +extern int mEv_snowman_born_check(); +extern int mEv_someone_died(); +extern void mEv_special_event_soldout(int type); +extern void mEv_toland_clear_common(); +extern void mGH_animal_return_init(); +extern int mGH_check_birth2(); +extern int mGH_check_birth(); +extern void mGH_check_delete(); +extern void mMC_mask_cat_init(); +extern int mMC_check_birth(); +extern int mMC_check_birth_day(); +extern void mMC_check_delete(); +extern void mMC_set_time(); #define mEv_IsEventActive(event) mEv_check_status(event, mEv_STATUS_ACTIVE) diff --git a/include/m_field_info.h b/include/m_field_info.h index 9b646568..490ef92a 100644 --- a/include/m_field_info.h +++ b/include/m_field_info.h @@ -6,6 +6,7 @@ #include "m_lib.h" #include "m_collision_bg.h" #include "m_field_make.h" +#include "m_bg_type.h" #ifdef __cplusplus extern "C" { @@ -24,11 +25,14 @@ extern "C" { #define mFI_UT_WORLDSIZE_HALF_X_F (mFI_UT_WORLDSIZE_X_F / 2.0f) #define mFI_UT_WORLDSIZE_HALF_Z_F (mFI_UT_WORLDSIZE_X_F / 2.0f) -#define mFI_BK_WORLDSIZE_X (mFI_UT_WORLDSIZE_X * UT_X_NUM) -#define mFI_BK_WORLDSIZE_Z (mFI_UT_WORLDSIZE_Z * UT_Z_NUM) +#define mFI_BK_WORLDSIZE_BASE (mFI_UNIT_BASE_SIZE * UT_BASE_NUM) +#define mFI_BK_WORLDSIZE_BASE_F ((f32)mFI_BK_WORLDSIZE_BASE) -#define mFI_BK_WORLDSIZE_X_F (mFI_UT_WORLDSIZE_X_F * UT_X_NUM) -#define mFI_BK_WORLDSIZE_Z_F (mFI_UT_WORLDSIZE_Z_F * UT_Z_NUM) +#define mFI_BK_WORLDSIZE_X mFI_BK_WORLDSIZE_BASE +#define mFI_BK_WORLDSIZE_Z mFI_BK_WORLDSIZE_BASE + +#define mFI_BK_WORLDSIZE_X_F mFI_BK_WORLDSIZE_BASE_F +#define mFI_BK_WORLDSIZE_Z_F mFI_BK_WORLDSIZE_BASE_F #define mFI_POS2UT(pos) ((int)((pos) / mFI_UNIT_BASE_SIZE_F)) @@ -140,7 +144,16 @@ enum { }; /* Not sure about these other than the island one */ -enum { mFI_CLIMATE_0, mFI_CLIMATE_ISLAND, mFI_CLIMATE_2, mFI_CLIMATE_3, mFI_CLIMATE_4, mFI_CLIMATE_5, mFI_CLIMATE_NUM }; +enum { + mFI_CLIMATE_0, + mFI_CLIMATE_ISLAND, + mFI_CLIMATE_2, + mFI_CLIMATE_3, + mFI_CLIMATE_4, + mFI_CLIMATE_5, + + mFI_CLIMATE_NUM, +}; enum { mFI_DIGSTATUS_MISS, @@ -185,7 +198,12 @@ typedef struct visible_block_item_info_s { } mFI_item_table_c; enum { - mFI_SOUND_SOURCE_POND = 3, // TODO: might not be correct name + mFI_SOUND_SOURCE_NONE, + mFI_SOUND_SOURCE_RIVER, + mFI_SOUND_SOURCE_OCEAN, + mFI_SOUND_SOURCE_POND, + + mFI_SOUND_SOURCE_NUM }; extern void mFI_ClearFieldData(); @@ -290,7 +308,7 @@ extern int mFI_UnregistMoveActorList(mActor_name_t actor_name, int bx, int bz); extern int mFI_AddMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, s16 arg); extern mFM_move_actor_c* mFI_MoveActorListDma(int bx, int bz); extern void mFI_InitMoveActorBitData(); -extern void mFI_SetPlayerWade(GAME_PLAY* play); +extern void mFI_SetPlayerWade(GAME* game); extern int mFI_CheckPlayerWade(int wade); extern int mFI_GetPlayerWade(); extern int mFI_GetNextBlockNum(int* bx, int* bz); diff --git a/include/m_field_make.h b/include/m_field_make.h index 5f306b54..614f4b61 100644 --- a/include/m_field_make.h +++ b/include/m_field_make.h @@ -53,271 +53,271 @@ extern "C" { #define mFM_FIELD_TEX_NUM 27 enum { - mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, - mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, - mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, - mFM_BLOCK_TYPE_3, - mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, - mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, - mFM_BLOCK_TYPE_6, - mFM_BLOCK_TYPE_7, - mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, - mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, - mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, - mFM_BLOCK_TYPE_TRACKS_STATION, - mFM_BLOCK_TYPE_TRACKS_DUMP, - mFM_BLOCK_TYPE_TRACKS_RIVER, - mFM_BLOCK_TYPE_PLAYER_HOUSE, - mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT, - mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER, - mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL, - mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT, - mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER, - mFM_BLOCK_TYPE_FLAT, // grass - mFM_BLOCK_TYPE_RIVER_SOUTH, - mFM_BLOCK_TYPE_RIVER_EAST, - mFM_BLOCK_TYPE_RIVER_WEST, - mFM_BLOCK_TYPE_RIVER_SOUTH_EAST, - mFM_BLOCK_TYPE_RIVER_EAST_SOUTH, - mFM_BLOCK_TYPE_RIVER_SOUTH_WEST, - mFM_BLOCK_TYPE_RIVER_WEST_SOUTH, - mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE, - mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE, - mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE, - mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE, - mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE, - mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE, - mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE, - mFM_BLOCK_TYPE_SLOPE_HORIZONTAL, - mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER, - mFM_BLOCK_TYPE_SLOPE_VERTICAL_RIGHT, - mFM_BLOCK_TYPE_SLOPE_TOP_RIGHT_CORNER, - mFM_BLOCK_TYPE_SLOPE_TOP_LEFT_CORNER, - mFM_BLOCK_TYPE_SLOPE_VERTICAL_LEFT, - mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER, - mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, - mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, - mFM_BLOCK_TYPE_BEACH, - mFM_BLOCK_TYPE_BEACH_RIVER, - mFM_BLOCK_TYPE_TRACKS_SHOP, - mFM_BLOCK_TYPE_SHRINE, - mFM_BLOCK_TYPE_TRACKS_POST_OFFICE, - mFM_BLOCK_TYPE_POLICE_BOX, - mFM_BLOCK_TYPE_POOL_SOUTH, - mFM_BLOCK_TYPE_POOL_EAST, - mFM_BLOCK_TYPE_POOL_WEST, - mFM_BLOCK_TYPE_POOL_SOUTH_EAST, - mFM_BLOCK_TYPE_POOL_EAST_SOUTH, - mFM_BLOCK_TYPE_POOL_SOUTH_WEST, - mFM_BLOCK_TYPE_POOL_WEST_SOUTH, - mFM_BLOCK_TYPE_76, - mFM_BLOCK_TYPE_77, - mFM_BLOCK_TYPE_78, - mFM_BLOCK_TYPE_79, - mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, - mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, - mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE, - mFM_BLOCK_TYPE_OCEAN, - mFM_BLOCK_TYPE_MUSEUM, - mFM_BLOCK_TYPE_NEEDLEWORK, - mFM_BLOCK_TYPE_86, - mFM_BLOCK_TYPE_87, - mFM_BLOCK_TYPE_88, - mFM_BLOCK_TYPE_89, - mFM_BLOCK_TYPE_90, - mFM_BLOCK_TYPE_91, - mFM_BLOCK_TYPE_92, - mFM_BLOCK_TYPE_93, - mFM_BLOCK_TYPE_OCEAN_2, - mFM_BLOCK_TYPE_OCEAN_3, - mFM_BLOCK_TYPE_OCEAN_4, - mFM_BLOCK_TYPE_OCEAN_5, - mFM_BLOCK_TYPE_ISLAND_LEFT, - mFM_BLOCK_TYPE_ISLAND_RIGHT, - mFM_BLOCK_TYPE_PORT, - mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, - mFM_BLOCK_TYPE_OCEAN_6, - mFM_BLOCK_TYPE_OCEAN_7, - mFM_BLOCK_TYPE_OCEAN_8, - mFM_BLOCK_TYPE_105, - mFM_BLOCK_TYPE_106, - mFM_BLOCK_TYPE_107, + mFM_BLOCK_TYPE_BORDER_CLIFF_TOP, + mFM_BLOCK_TYPE_BORDER_CLIFF_RIVER, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT, + mFM_BLOCK_TYPE_3, + mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_LEFT, + mFM_BLOCK_TYPE_6, + mFM_BLOCK_TYPE_7, + mFM_BLOCK_TYPE_BORDER_CLIFF_CORNER_TOP_RIGHT, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TUNNEL, + mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TUNNEL, + mFM_BLOCK_TYPE_TRACKS_STATION, + mFM_BLOCK_TYPE_TRACKS_DUMP, + mFM_BLOCK_TYPE_TRACKS_RIVER, + mFM_BLOCK_TYPE_PLAYER_HOUSE, + mFM_BLOCK_TYPE_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_CLIFF_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_CLIFF_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_CLIFF_VERTICAL_LEFT, + mFM_BLOCK_TYPE_CLIFF_BOTTOM_LEFT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_STRAIGHT_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_VERTICAL_LEFT, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_BOTTOM_LEFT_CORNER, + mFM_BLOCK_TYPE_RIVER_STRAIGHT_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_EAST_CLIFF_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_RIVER_EAST_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_HORIZONTAL, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_RIVER_WEST_CLIFF_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_VERTICAL_LEFT, + mFM_BLOCK_TYPE_WATERFALL_WEST_CLIFF_BOTTOM_LEFT_CORNER, + mFM_BLOCK_TYPE_FLAT, // grass + mFM_BLOCK_TYPE_RIVER_SOUTH, + mFM_BLOCK_TYPE_RIVER_EAST, + mFM_BLOCK_TYPE_RIVER_WEST, + mFM_BLOCK_TYPE_RIVER_SOUTH_EAST, + mFM_BLOCK_TYPE_RIVER_EAST_SOUTH, + mFM_BLOCK_TYPE_RIVER_SOUTH_WEST, + mFM_BLOCK_TYPE_RIVER_WEST_SOUTH, + mFM_BLOCK_TYPE_RIVER_SOUTH_BRIDGE, + mFM_BLOCK_TYPE_RIVER_EAST_BRIDGE, + mFM_BLOCK_TYPE_RIVER_WEST_BRIDGE, + mFM_BLOCK_TYPE_RIVER_SOUTH_EAST_BRIDGE, + mFM_BLOCK_TYPE_RIVER_EAST_SOUTH_BRIDGE, + mFM_BLOCK_TYPE_RIVER_SOUTH_WEST_BRIDGE, + mFM_BLOCK_TYPE_RIVER_WEST_SOUTH_BRIDGE, + mFM_BLOCK_TYPE_SLOPE_HORIZONTAL, + mFM_BLOCK_TYPE_SLOPE_BOTTOM_RIGHT_CORNER, + mFM_BLOCK_TYPE_SLOPE_VERTICAL_RIGHT, + mFM_BLOCK_TYPE_SLOPE_TOP_RIGHT_CORNER, + mFM_BLOCK_TYPE_SLOPE_TOP_LEFT_CORNER, + mFM_BLOCK_TYPE_SLOPE_VERTICAL_LEFT, + mFM_BLOCK_TYPE_SLOPE_BOTTOM_LEFT_CORNER, + mFM_BLOCK_TYPE_BORDER_CLIFF_LEFT_TRANSITION, + mFM_BLOCK_TYPE_BORDER_CLIFF_RIGHT_TRANSITION, + mFM_BLOCK_TYPE_BEACH, + mFM_BLOCK_TYPE_BEACH_RIVER, + mFM_BLOCK_TYPE_TRACKS_SHOP, + mFM_BLOCK_TYPE_SHRINE, + mFM_BLOCK_TYPE_TRACKS_POST_OFFICE, + mFM_BLOCK_TYPE_POLICE_BOX, + mFM_BLOCK_TYPE_POOL_SOUTH, + mFM_BLOCK_TYPE_POOL_EAST, + mFM_BLOCK_TYPE_POOL_WEST, + mFM_BLOCK_TYPE_POOL_SOUTH_EAST, + mFM_BLOCK_TYPE_POOL_EAST_SOUTH, + mFM_BLOCK_TYPE_POOL_SOUTH_WEST, + mFM_BLOCK_TYPE_POOL_WEST_SOUTH, + mFM_BLOCK_TYPE_76, + mFM_BLOCK_TYPE_77, + mFM_BLOCK_TYPE_78, + mFM_BLOCK_TYPE_79, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_LEFT, + mFM_BLOCK_TYPE_BORDER_CLIFF_OCEAN_RIGHT, + mFM_BLOCK_TYPE_BEACH_RIVER_BRIDGE, + mFM_BLOCK_TYPE_OCEAN, + mFM_BLOCK_TYPE_MUSEUM, + mFM_BLOCK_TYPE_NEEDLEWORK, + mFM_BLOCK_TYPE_86, + mFM_BLOCK_TYPE_87, + mFM_BLOCK_TYPE_88, + mFM_BLOCK_TYPE_89, + mFM_BLOCK_TYPE_90, + mFM_BLOCK_TYPE_91, + mFM_BLOCK_TYPE_92, + mFM_BLOCK_TYPE_93, + mFM_BLOCK_TYPE_OCEAN_2, + mFM_BLOCK_TYPE_OCEAN_3, + mFM_BLOCK_TYPE_OCEAN_4, + mFM_BLOCK_TYPE_OCEAN_5, + mFM_BLOCK_TYPE_ISLAND_LEFT, + mFM_BLOCK_TYPE_ISLAND_RIGHT, + mFM_BLOCK_TYPE_PORT, + mFM_BLOCK_TYPE_SEA_EXCEPTIONAL, + mFM_BLOCK_TYPE_OCEAN_6, + mFM_BLOCK_TYPE_OCEAN_7, + mFM_BLOCK_TYPE_OCEAN_8, + mFM_BLOCK_TYPE_105, + mFM_BLOCK_TYPE_106, + mFM_BLOCK_TYPE_107, - mFM_BLOCK_TYPE_NUM, + mFM_BLOCK_TYPE_NUM, - mFM_BLOCK_TYPE_NONE = 255 + mFM_BLOCK_TYPE_NONE = 255 }; /* sizeof(mFM_combination_c) == 2 */ typedef struct block_combination_s { - /* 0x00 */ u16 combination_type:14; /* acre type index */ - /* 0x00 */ u16 height:2; /* 0, 1, 2, or 3 (unused) */ + /* 0x00 */ u16 combination_type : 14; /* acre type index */ + /* 0x00 */ u16 height : 2; /* 0, 1, 2, or 3 (unused) */ } mFM_combination_c; /* sizeof(mFM_fg_c) == 0x200 */ typedef struct fg_items_s { - /* 0x000 */ mActor_name_t items[UT_Z_NUM][UT_X_NUM]; + /* 0x000 */ mActor_name_t items[UT_Z_NUM][UT_X_NUM]; } mFM_fg_c; /* sizeof (mFM_combo_info_c) == 6 */ typedef struct block_combo_s { - /* 0x00 */ mActor_name_t bg_id; - /* 0x02 */ mActor_name_t fg_id; - /* 0x05 */ u8 type; + /* 0x00 */ mActor_name_t bg_id; + /* 0x02 */ mActor_name_t fg_id; + /* 0x05 */ u8 type; } mFM_combo_info_c; typedef struct field_display_list_info_s { - int block_x; - int block_z; - u32 dma_loaded; + int block_x; + int block_z; + u32 dma_loaded; } mFM_field_draw_info_c; typedef struct field_pal_s { - u16* earth_pal; - u16* cliff_pal; - u16* bush_pal; - u16* flower0_pal; - u16* flower1_pal; - u16* flower2_pal; - u16* grass_pal; - u16* tree_pal; - u16* cedar_tree_pal; // probably? - u16* palm_tree_pal; - u16* golden_tree_pal; + u16* earth_pal; + u16* cliff_pal; + u16* bush_pal; + u16* flower0_pal; + u16* flower1_pal; + u16* flower2_pal; + u16* grass_pal; + u16* tree_pal; + u16* cedar_tree_pal; // probably? + u16* palm_tree_pal; + u16* golden_tree_pal; } mFM_field_pal_c; typedef struct field_bg_sound_source_s { - s16 kind; - xyz_t pos; + s16 kind; + xyz_t pos; } mFM_bg_sound_source_c; typedef struct field_bg_info_s { - mFM_combination_c bg_id; - Gfx* opaque_gfx; - Gfx* translucent_gfx; - EVW_ANIME_DATA* animation; - s8 animation_count; - u8 block_type; - u32 block_kind; - int rom_start_addr; - int rom_size; - mCoBG_Collision_u collision[UT_Z_NUM][UT_X_NUM]; - u8 keep_h[UT_Z_NUM][UT_X_NUM]; // base height? - mFM_bg_sound_source_c sound_source[mFM_SOUND_SOURCE_NUM]; + mFM_combination_c bg_id; + Gfx* opaque_gfx; + Gfx* translucent_gfx; + EVW_ANIME_DATA* animation; + s8 animation_count; + u8 block_type; + u32 block_kind; + int rom_start_addr; + int rom_size; + mCoBG_Collision_u collision[UT_Z_NUM][UT_X_NUM]; + u8 keep_h[UT_Z_NUM][UT_X_NUM]; // base height? + mFM_bg_sound_source_c sound_source[mFM_SOUND_SOURCE_NUM]; } mFM_bg_info_c; typedef struct field_fg_move_actor_s { - mActor_name_t name_id; - u8 ut_x; - u8 ut_z; - s8 npc_info_idx; - s16 arg; + mActor_name_t name_id; + u8 ut_x; + u8 ut_z; + s8 npc_info_idx; + s16 arg; } mFM_move_actor_c; typedef struct field_fg_move_actor_data_s { - mActor_name_t name_id; - int block_x; - int block_z; - u8 ut_x; - u8 ut_z; - s8 npc_info_idx; - s16 arg; - u32 desired_block_kind; + mActor_name_t name_id; + int block_x; + int block_z; + u8 ut_x; + u8 ut_z; + s8 npc_info_idx; + s16 arg; + u32 desired_block_kind; } mFM_move_actor_data_c; typedef struct field_fg_info_s { - mActor_name_t fg_id; - mActor_name_t* items_p; - u16* deposit_p; - mFM_move_actor_c move_actors[mFM_MOVE_ACTOR_NUM]; - u16 move_actor_bit_data; - u8 haniwa_step[mFM_HANIWA_STEP_NUM]; + mActor_name_t fg_id; + mActor_name_t* items_p; + u16* deposit_p; + mFM_move_actor_c move_actors[mFM_MOVE_ACTOR_NUM]; + u16 move_actor_bit_data; + u8 haniwa_step[mFM_HANIWA_STEP_NUM]; } mFM_fg_info_c; typedef struct field_block_info_s { - mFM_bg_info_c bg_info; - mFM_fg_info_c fg_info; + mFM_bg_info_c bg_info; + mFM_fg_info_c fg_info; } mFM_block_info_c; typedef struct field_bg_sound_source_data_s { - s16 kind; - u8 ut_x; - u8 ut_z; + s16 kind; + u8 ut_x; + u8 ut_z; } mFM_bg_sound_source_data_c; typedef struct field_bg_data_s { - mActor_name_t bg_id; - Gfx* opaque_gfx; - Gfx* translucent_gfx; - EVW_ANIME_DATA* animation; - s8 animation_count; - u32 rom_start_addr; - u32 rom_end_addr; - mCoBG_Collision_u collision[UT_Z_NUM][UT_X_NUM]; - mFM_bg_sound_source_data_c sound_source[mFM_SOUND_SOURCE_NUM]; + mActor_name_t bg_id; + Gfx* opaque_gfx; + Gfx* translucent_gfx; + EVW_ANIME_DATA* animation; + s8 animation_count; + u32 rom_start_addr; + u32 rom_end_addr; + mCoBG_Collision_u collision[UT_Z_NUM][UT_X_NUM]; + mFM_bg_sound_source_data_c sound_source[mFM_SOUND_SOURCE_NUM]; } mFM_bg_data_c; typedef struct field_fg_data_s { - mActor_name_t fg_id; - mActor_name_t items[UT_Z_NUM][UT_X_NUM]; - u8 haniwa_step[mFM_HANIWA_STEP_NUM]; + mActor_name_t fg_id; + mActor_name_t items[UT_Z_NUM][UT_X_NUM]; + u8 haniwa_step[mFM_HANIWA_STEP_NUM]; } mFM_fg_data_c; typedef struct field_data_s { - mActor_name_t field_name; - u8 block_x_max; - u8 block_z_max; - mFM_combination_c combi[BLOCK_TOTAL_NUM]; - mFM_move_actor_data_c* move_actor_data; - u32 _94; - u32 _98; - u32 _9C; - u32 _A0; + mActor_name_t field_name; + u8 block_x_max; + u8 block_z_max; + mFM_combination_c combi[BLOCK_TOTAL_NUM]; + mFM_move_actor_data_c* move_actor_data; + u32 _94; + u32 _98; + u32 _9C; + u32 _A0; } mFM_field_data_c; typedef struct field_info_s { - mActor_name_t field_id; - u32 _04; // only set, never read? - mFM_field_draw_info_c bg_draw_info[mFM_VISIBLE_BLOCK_NUM]; - u8* bg_display_list_p[mFM_VISIBLE_BLOCK_NUM]; - mFM_field_pal_c field_palette; - mFM_block_info_c* block_info; - mActor_name_t** fg2_p; - int last_bg_idx[mFM_VISIBLE_BLOCK_NUM]; - u16 bg_max; - u8 bg_num; - u8 update_fg; - u8 born_item; - u8 born_actor; - u8 block_x_max; - u8 block_z_max; + mActor_name_t field_id; + u32 _04; // only set, never read? + mFM_field_draw_info_c bg_draw_info[mFM_VISIBLE_BLOCK_NUM]; + u8* bg_display_list_p[mFM_VISIBLE_BLOCK_NUM]; + mFM_field_pal_c field_palette; + mFM_block_info_c* block_info; + mActor_name_t** fg2_p; + int last_bg_idx[mFM_VISIBLE_BLOCK_NUM]; + u16 bg_max; + u8 bg_num; + u8 update_fg; + u8 born_item; + u8 born_actor; + u8 block_x_max; + u8 block_z_max; } mFM_fdinfo_c; enum { - mFM_BG_TEX_TRIANGLE, - mFM_BG_TEX_SQUARE, - mFM_BG_TEX_CIRCLE, + mFM_BG_TEX_TRIANGLE, + mFM_BG_TEX_SQUARE, + mFM_BG_TEX_CIRCLE, - mFM_BG_TEX_NUM + mFM_BG_TEX_NUM }; extern u8* g_block_type_p; diff --git a/include/m_lib.h b/include/m_lib.h index 6c28288e..82bf72ac 100644 --- a/include/m_lib.h +++ b/include/m_lib.h @@ -34,8 +34,8 @@ extern "C" { /* degrees -> short angle */ #define DEG2SHORT_ANGLE(deg) ((s16)((deg) * (65536.0f / 360.0f))) - #define DEG2SHORT_ANGLE2(deg) ((int)((deg) * (65536.0f / 360.0f))) +#define DEG2SHORT_ANGLE3(deg) ((deg) * (65536.0f / 360.0f)) /* short angle -> degrees */ #define SHORT2DEG_ANGLE(s) ((((f32)(s)) / (65536.0f / 360.0f))) @@ -100,8 +100,7 @@ extern void none_proc2(ACTOR* actor, GAME* game); extern int _Game_play_isPause(GAME_PLAY* play); extern f32 check_percent_abs(f32 x, f32 min, f32 max, f32 scale, int shift_by_min); -extern f32 get_percent_forAccelBrake(const f32 now, const f32 start, const f32 end, const f32 accelerateDist, - const f32 brakeDist); +extern f32 get_percent_forAccelBrake(f32 now, f32 start, f32 end, f32 accelerateDist, f32 brakeDist); extern void Game_play_Projection_Trans(GAME_PLAY* const play, xyz_t* world_pos, xyz_t* screen_pos); extern f32 get_percent(const int max, const int min, const int x); diff --git a/include/m_msg.h b/include/m_msg.h index 0a87615a..ea68c5f5 100644 --- a/include/m_msg.h +++ b/include/m_msg.h @@ -359,11 +359,20 @@ extern void mMsg_sound_unset_voice_silent(mMsg_Window_c* msg_p, int update_mode) #define mMsg_GET_MSG_NUM() mMsg_Get_msg_num(mMsg_Get_base_window_p()) +#define mMsg_SET_IDLING_REQ() mMsg_Set_idling_req(mMsg_Get_base_window_p()) + #define mMsg_CHECK_MAINNORMALCONTINUE() mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) +#define mMsg_CHECK_MAINNORMAL() mMsg_Check_MainNormal(mMsg_Get_base_window_p()) #define mMsg_CHECK_MAINDISAPPEAR() mMsg_Check_MainDisappear(mMsg_Get_base_window_p()) #define mMsg_CHECK_MAINHIDE() mMsg_Check_MainHide(mMsg_Get_base_window_p()) +#define mMsg_CHECK_MAIN_WAIT() mMsg_Check_main_wait(mMsg_Get_base_window_p()) +#define mMsg_CHECK_NOT_SERIES_MAIN_WAIT() mMsg_Check_not_series_main_wait(mMsg_Get_base_window_p()) #define mMsg_REQUEST_MAIN_DISAPPEAR() mMsg_request_main_disappear(mMsg_Get_base_window_p()) +#define mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1() mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()) +#define mMsg_REQUEST_MAIN_APPEAR() mMsg_request_main_appear(mMsg_Get_base_window_p()) +#define mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE1() mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p()); +#define mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE2() mMsg_request_main_appear_wait_type2(mMsg_Get_base_window_p()); #ifdef __cplusplus } diff --git a/include/m_name_table.h b/include/m_name_table.h index 88d74367..344146f3 100644 --- a/include/m_name_table.h +++ b/include/m_name_table.h @@ -36,6 +36,10 @@ enum { NAME_TYPE_NUM }; +#define ITEM0_CAT_OBJ 0 +#define ITEM0_CAT_PLANT 8 +#define ITEM0_CAT_SIGN 9 + enum { ITEM1_CAT_PAPER, ITEM1_CAT_MONEY, @@ -141,6 +145,7 @@ typedef struct offset_table_s { /* TODO: these should be calculated via definitions later */ #define NPC_NUM 236 #define NPC_ISLANDER_NUM 18 +#define ALL_NPC_NUM NPC_NUM + 2 // include the two test villagers #define TICKET_STACK_MAX 5 #define WISP_STACK_MAX 5 @@ -211,6 +216,9 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define ITEM_IS_RSVCPORG(n) ((n) >= RSV_CPORIGINAL_FLD0_00 && (n) <= RSV_CPORIGINAL_FLD7_11) #define ITEM_IS_RSVGBAORG(n) ((n) >= RSV_GBAORIGINAL0 && (n) <= RSV_GBAORIGINAL7) +#define ITEM_IS_MYMANNIQUIN(n) ((n) >= FTR_CLOTH_MANNIQUIN_MY_ORIGINAL0 && (n) <= FTR_CLOTH_MYMANNIQUIN_END) +#define ITEM_IS_MYUMBRELLA(n) ((n) >= FTR_MYUMBRELLA_START && (n) <= FTR_MYUMBRELLA_END) + #define PAPER2TYPE(n) ((n) % PAPER_UNIQUE_NUM) #define PAPER2STACK(n) ((n) / PAPER_UNIQUE_NUM) @@ -218,6 +226,8 @@ extern int mNT_check_unknown(mActor_name_t item_no); (ITEM_NAME_GET_TYPE(n) == NAME_TYPE_FTR0 || ITEM_NAME_GET_TYPE(n) == NAME_TYPE_FTR1) #define ITEM_IS_ITEM1(n) (ITEM_NAME_GET_TYPE(n) == NAME_TYPE_ITEM1) +#define ITEM_IS_CARPET(n) ((n) >= ITM_CARPET_START && (n) < ITM_CARPET_END) +#define ITEM_IS_WALL(n) ((n) >= ITM_WALL_START && (n) < ITM_WALL_END) #define GET_NAME_ITEM0_CATEGORY(f) (((f) & 0x0800) >> 11) /* enviornmental or static background objects */ #define GET_NAME_ITEM1_CATEGORY(f) (((f) & 0x0F00) >> 8) @@ -280,12 +290,242 @@ extern int mNT_check_unknown(mActor_name_t item_no); ((item) == GOLD_TREE_BEES) \ ) +// @BUG - they check for money tree variants twice +#define IS_ITEM_COLLIDEABLE_TREE(item) \ + (((item) == TREE_S0) || \ + ((item) == TREE_APPLE_S0) || \ + ((item) == TREE_ORANGE_S0) || \ + ((item) == TREE_PEACH_S0) || \ + ((item) == TREE_PEAR_S0) || \ + ((item) == TREE_CHERRY_S0) || \ + ((item) == TREE_1000BELLS_S0) || \ + ((item) == TREE_10000BELLS_S0) || \ + ((item) == TREE_30000BELLS_S0) || \ + ((item) == TREE_1000BELLS_S0) || \ + ((item) == TREE_10000BELLS_S0) || \ + ((item) == TREE_30000BELLS_S0) || \ + ((item) == TREE_100BELLS_S0) || \ + ((item) == TREE_PALM_S0) || \ + ((item) == CEDAR_TREE_S0) || \ + ((item) == GOLD_TREE_S0) || \ + ((item) == TREE_S1) || \ + ((item) == TREE_APPLE_S1) || \ + ((item) == TREE_ORANGE_S1) || \ + ((item) == TREE_PEACH_S1) || \ + ((item) == TREE_PEAR_S1) || \ + ((item) == TREE_CHERRY_S1) || \ + ((item) == TREE_1000BELLS_S1) || \ + ((item) == TREE_10000BELLS_S1) || \ + ((item) == TREE_30000BELLS_S1) || \ + ((item) == TREE_1000BELLS_S1) || \ + ((item) == TREE_10000BELLS_S1) || \ + ((item) == TREE_30000BELLS_S1) || \ + ((item) == TREE_100BELLS_S1) || \ + ((item) == TREE_PALM_S1) || \ + ((item) == CEDAR_TREE_S1) || \ + ((item) == GOLD_TREE_S1) || \ + ((item) == TREE_S2) || \ + ((item) == TREE_APPLE_S2) || \ + ((item) == TREE_ORANGE_S2) || \ + ((item) == TREE_PEACH_S2) || \ + ((item) == TREE_PEAR_S2) || \ + ((item) == TREE_CHERRY_S2) || \ + ((item) == TREE_1000BELLS_S2) || \ + ((item) == TREE_10000BELLS_S2) || \ + ((item) == TREE_30000BELLS_S2) || \ + ((item) == TREE_1000BELLS_S2) || \ + ((item) == TREE_10000BELLS_S2) || \ + ((item) == TREE_30000BELLS_S2) || \ + ((item) == TREE_100BELLS_S2) || \ + ((item) == TREE_PALM_S2) || \ + ((item) == CEDAR_TREE_S2) || \ + ((item) == GOLD_TREE_S2) || \ + ((item) == TREE) || \ + ((item) == TREE_APPLE_FRUIT) || \ + ((item) == TREE_ORANGE_FRUIT) || \ + ((item) == TREE_PEACH_FRUIT) || \ + ((item) == TREE_PEAR_FRUIT) || \ + ((item) == TREE_CHERRY_FRUIT) || \ + ((item) == TREE_1000BELLS) || \ + ((item) == TREE_10000BELLS) || \ + ((item) == TREE_30000BELLS) || \ + ((item) == TREE_100BELLS) || \ + ((item) == TREE_PALM_FRUIT) || \ + ((item) == CEDAR_TREE) || \ + ((item) == GOLD_TREE) || \ + ((item) == GOLD_TREE_SHOVEL) || \ + ((item) == TREE_APPLE_NOFRUIT_0) || \ + ((item) == TREE_ORANGE_NOFRUIT_0) || \ + ((item) == TREE_PEACH_NOFRUIT_0) || \ + ((item) == TREE_PEAR_NOFRUIT_0) || \ + ((item) == TREE_CHERRY_NOFRUIT_0) || \ + ((item) == TREE_PALM_NOFRUIT_0) || \ + ((item) == TREE_APPLE_NOFRUIT_1) || \ + ((item) == TREE_ORANGE_NOFRUIT_1) || \ + ((item) == TREE_PEACH_NOFRUIT_1) || \ + ((item) == TREE_PEAR_NOFRUIT_1) || \ + ((item) == TREE_CHERRY_NOFRUIT_1) || \ + ((item) == TREE_PALM_NOFRUIT_1) || \ + ((item) == TREE_APPLE_NOFRUIT_2) || \ + ((item) == TREE_ORANGE_NOFRUIT_2) || \ + ((item) == TREE_PEACH_NOFRUIT_2) || \ + ((item) == TREE_PEAR_NOFRUIT_2) || \ + ((item) == TREE_CHERRY_NOFRUIT_2) || \ + ((item) == TREE_PALM_NOFRUIT_2) || \ + ((item) == TREE_BEES) || \ + ((item) == TREE_FTR) || \ + ((item) == TREE_LIGHTS) || \ + ((item) == TREE_PRESENT) || \ + ((item) == TREE_BELLS) || \ + ((item) == CEDAR_TREE_BELLS) || \ + ((item) == CEDAR_TREE_FTR) || \ + ((item) == CEDAR_TREE_BEES) || \ + ((item) == CEDAR_TREE_LIGHTS) || \ + ((item) == GOLD_TREE_BELLS) || \ + ((item) == GOLD_TREE_FTR) || \ + ((item) == GOLD_TREE_BEES) \ + ) + +#define IS_ITEM_XMAS_TREE(item) ((item) == TREE_LIGHTS || (item) == CEDAR_TREE_LIGHTS) +#define IS_ITEM_SMALL_TREE(item) ( \ + ((item) == TREE_S0) || \ + ((item) == TREE_APPLE_S0) || \ + ((item) == TREE_ORANGE_S0) || \ + ((item) == TREE_PEACH_S0) || \ + ((item) == TREE_PEAR_S0) || \ + ((item) == TREE_CHERRY_S0) || \ + ((item) == TREE_1000BELLS_S0) || \ + ((item) == TREE_10000BELLS_S0) || \ + ((item) == TREE_30000BELLS_S0) || \ + ((item) == TREE_1000BELLS_S0) || \ + ((item) == TREE_10000BELLS_S0) || \ + ((item) == TREE_30000BELLS_S0) || \ + ((item) == TREE_100BELLS_S0) || \ + ((item) == TREE_PALM_S0) || \ + ((item) == CEDAR_TREE_S0) || \ + ((item) == GOLD_TREE_S0) \ +) +#define IS_ITEM_MED_TREE(item) ( \ + ((item) == TREE_S1) || \ + ((item) == TREE_APPLE_S1) || \ + ((item) == TREE_ORANGE_S1) || \ + ((item) == TREE_PEACH_S1) || \ + ((item) == TREE_PEAR_S1) || \ + ((item) == TREE_CHERRY_S1) || \ + ((item) == TREE_1000BELLS_S1) || \ + ((item) == TREE_10000BELLS_S1) || \ + ((item) == TREE_30000BELLS_S1) || \ + ((item) == TREE_1000BELLS_S1) || \ + ((item) == TREE_10000BELLS_S1) || \ + ((item) == TREE_30000BELLS_S1) || \ + ((item) == TREE_100BELLS_S1) || \ + ((item) == TREE_PALM_S1) || \ + ((item) == CEDAR_TREE_S1) || \ + ((item) == GOLD_TREE_S1) \ +) +#define IS_ITEM_LARGE_TREE(item) ( \ + ((item) == TREE_S2) || \ + ((item) == TREE_APPLE_S2) || \ + ((item) == TREE_ORANGE_S2) || \ + ((item) == TREE_PEACH_S2) || \ + ((item) == TREE_PEAR_S2) || \ + ((item) == TREE_CHERRY_S2) || \ + ((item) == TREE_1000BELLS_S2) || \ + ((item) == TREE_10000BELLS_S2) || \ + ((item) == TREE_30000BELLS_S2) || \ + ((item) == TREE_1000BELLS_S2) || \ + ((item) == TREE_10000BELLS_S2) || \ + ((item) == TREE_30000BELLS_S2) || \ + ((item) == TREE_100BELLS_S2) || \ + ((item) == TREE_PALM_S2) || \ + ((item) == CEDAR_TREE_S2) || \ + ((item) == GOLD_TREE_S2) \ +) + +#define IS_ITEM_FULL_TREE(item) \ + (((item) == TREE) || \ + ((item) == TREE_APPLE_FRUIT) || \ + ((item) == TREE_ORANGE_FRUIT) || \ + ((item) == TREE_PEACH_FRUIT) || \ + ((item) == TREE_PEAR_FRUIT) || \ + ((item) == TREE_CHERRY_FRUIT) || \ + ((item) == TREE_1000BELLS) || \ + ((item) == TREE_10000BELLS) || \ + ((item) == TREE_30000BELLS) || \ + ((item) == TREE_100BELLS) || \ + ((item) == TREE_PALM_FRUIT) || \ + ((item) == CEDAR_TREE) || \ + ((item) == GOLD_TREE) || \ + ((item) == GOLD_TREE_SHOVEL) || \ + ((item) == TREE_APPLE_NOFRUIT_0) || \ + ((item) == TREE_ORANGE_NOFRUIT_0 ) || \ + ((item) == TREE_PEACH_NOFRUIT_0) || \ + ((item) == TREE_PEAR_NOFRUIT_0) || \ + ((item) == TREE_CHERRY_NOFRUIT_0) || \ + ((item) == TREE_PALM_NOFRUIT_0) || \ + ((item) == TREE_APPLE_NOFRUIT_1) || \ + ((item) == TREE_ORANGE_NOFRUIT_1 ) || \ + ((item) == TREE_PEACH_NOFRUIT_1) || \ + ((item) == TREE_PEAR_NOFRUIT_1) || \ + ((item) == TREE_CHERRY_NOFRUIT_1) || \ + ((item) == TREE_PALM_NOFRUIT_1) || \ + ((item) == TREE_APPLE_NOFRUIT_2) || \ + ((item) == TREE_ORANGE_NOFRUIT_2 ) || \ + ((item) == TREE_PEACH_NOFRUIT_2) || \ + ((item) == TREE_PEAR_NOFRUIT_2) || \ + ((item) == TREE_CHERRY_NOFRUIT_2) || \ + ((item) == TREE_PALM_NOFRUIT_2) || \ + ((item) == TREE_BEES) || \ + ((item) == TREE_FTR) || \ + ((item) == TREE_LIGHTS) || \ + ((item) == TREE_PRESENT) || \ + ((item) == TREE_BELLS) || \ + ((item) == CEDAR_TREE_BELLS) || \ + ((item) == CEDAR_TREE_FTR) || \ + ((item) == CEDAR_TREE_BEES) || \ + ((item) == CEDAR_TREE_LIGHTS) || \ + ((item) == GOLD_TREE_BELLS) || \ + ((item) == GOLD_TREE_FTR) || \ + ((item) == GOLD_TREE_BEES) \ + ) + +#define IS_ITEM_PALM_TREE(item) ((item) >= TREE_PALM_SAPLING && (item) < TREE_PALM_FRUIT) +#define IS_ITEM_ANY_PALM_TREE(item) ((item) >= TREE_PALM_SAPLING && (item) <= TREE_PALM_FRUIT) + +#define IS_ITEM_TREE_STUMP(item) ((item >= TREE_STUMP001 && (item) <= TREE_STUMP004) || \ + (item) >= TREE_PALM_STUMP001 && (item) <= TREE_PALM_STUMP004 || \ + (item) >= CEDAR_TREE_STUMP001 && (item) <= CEDAR_TREE_STUMP004 || \ + (item) >= GOLD_TREE_STUMP001 && (item) <= GOLD_TREE_STUMP004 \ +) + +#define IS_ITEM_HITTABLE_TREE(item) (IS_ITEM_SMALL_TREE(item) || IS_ITEM_MED_TREE(item) || IS_ITEM_LARGE_TREE(item) || IS_ITEM_FULL_TREE(item)) +#define IS_ITEM_SHAKEABLE_TREE(item) (IS_ITEM_MED_TREE(item) || IS_ITEM_LARGE_TREE(item) || IS_ITEM_FULL_TREE(item)) + +#define IS_ITEM_BEE_TREE(item) ((item) == TREE_BEES || (item) == CEDAR_TREE_BEES || (item) == GOLD_TREE_BEES) + +#define IS_ITEM_STONE(item) ((item) >= ROCK_A && (item) <= ROCK_E) +#define IS_ITEM_STONE_TC(item) (((item) >= MONEY_ROCK_A && (item) <= MONEY_ROCK_E) || (item) == MONEY_FLOWER_SEED) /* TC is ten coin */ +#define IS_ITEM_ROCK(item) (((item) >= ROCK_A && (item) <= ROCK_E) || ((item) >= MONEY_ROCK_A && (item) <= MONEY_ROCK_E) || (item) == MONEY_FLOWER_SEED) + #define IS_ITEM_GRASS(item) ((item) >= GRASS_A && (item) <= GRASS_C) /* aka IS_ITEM_WEED */ #define IS_ITEM_HANIWA(item) ((item) >= HANIWA_START && (item) <= HANIWA_END) #define IS_ITEM_DIARY(item) ((item) >= ITM_DIARY_START && (item) <= (ITM_DIARY_END-1)) +#define IS_ITEM_AXE(item) ((item) == ITM_AXE || ((item) >= ITM_AXE_USE_1 && (item) <= ITM_AXE_USE_7)) +#define IS_ITEM_GOLDEN_TOOL(item) ((item) >= ITM_GOLDEN_NET && (item) <= ITM_GOLDEN_ROD) + +#define ITEM_IS_HOLE(item) ((item) >= HOLE_START && (item) <= HOLE_END) +#define ITEM_IS_BURIED_PITFALL_HOLE(item) ((item) >= BURIED_PITFALL_HOLE_START && (item) <= BURIED_PITFALL_HOLE_END) +#define ITEM_IS_BURIED_PITFALL_HOLE_RSV(item) ((item) >= BURIED_PITFALL_HOLE_RSV_START && (item) <= BURIED_PITFALL_HOLE_RSV_END) + +#define ITEM_IS_PLAYER_HOUSE(item) ((item) >= HOUSE0 && (item) < (HOUSE3 + 1)) +#define ITEM_IS_NPC_HOUSE(item) ((item) >= NPC_HOUSE_START && (item) < NPC_HOUSE_END) +#define ITEM_IS_ISLAND_NPC_HOUSE(item) ((item) >= COTTAGE_NPC && (item) < COTTAGE_NPC_END) + +#define ITEM_IS_SIGNBOARD(item) ((item) >= SIGNBOARD_START && (item) <= SIGNBOARD_END) + #define BG_CATEGORY 0 #define ENV_CATEGORY 8 @@ -333,33 +573,60 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define HOLE23 (HOLE_START + 23) #define HOLE24 (HOLE_START + 24) #define HOLE_END HOLE24 -#define BURIED_PITFALL_START 0x002A -#define BURIED_PITFALL00 (BURIED_PITFALL_START + 0) -#define BURIED_PITFALL01 (BURIED_PITFALL_START + 1) -#define BURIED_PITFALL02 (BURIED_PITFALL_START + 2) -#define BURIED_PITFALL03 (BURIED_PITFALL_START + 3) -#define BURIED_PITFALL04 (BURIED_PITFALL_START + 4) -#define BURIED_PITFALL05 (BURIED_PITFALL_START + 5) -#define BURIED_PITFALL06 (BURIED_PITFALL_START + 6) -#define BURIED_PITFALL07 (BURIED_PITFALL_START + 7) -#define BURIED_PITFALL08 (BURIED_PITFALL_START + 8) -#define BURIED_PITFALL09 (BURIED_PITFALL_START + 9) -#define BURIED_PITFALL10 (BURIED_PITFALL_START + 10) -#define BURIED_PITFALL11 (BURIED_PITFALL_START + 11) -#define BURIED_PITFALL12 (BURIED_PITFALL_START + 12) -#define BURIED_PITFALL13 (BURIED_PITFALL_START + 13) -#define BURIED_PITFALL14 (BURIED_PITFALL_START + 14) -#define BURIED_PITFALL15 (BURIED_PITFALL_START + 15) -#define BURIED_PITFALL16 (BURIED_PITFALL_START + 16) -#define BURIED_PITFALL17 (BURIED_PITFALL_START + 17) -#define BURIED_PITFALL18 (BURIED_PITFALL_START + 18) -#define BURIED_PITFALL19 (BURIED_PITFALL_START + 19) -#define BURIED_PITFALL20 (BURIED_PITFALL_START + 20) -#define BURIED_PITFALL21 (BURIED_PITFALL_START + 21) -#define BURIED_PITFALL22 (BURIED_PITFALL_START + 22) -#define BURIED_PITFALL23 (BURIED_PITFALL_START + 23) -#define BURIED_PITFALL24 (BURIED_PITFALL_START + 24) -#define BURIED_PITFALL_END BURIED_PITFALL24 +#define BURIED_PITFALL_HOLE_START 0x002A +#define BURIED_PITFALL_HOLE00 (BURIED_PITFALL_HOLE_START + 0) +#define BURIED_PITFALL_HOLE01 (BURIED_PITFALL_HOLE_START + 1) +#define BURIED_PITFALL_HOLE02 (BURIED_PITFALL_HOLE_START + 2) +#define BURIED_PITFALL_HOLE03 (BURIED_PITFALL_HOLE_START + 3) +#define BURIED_PITFALL_HOLE04 (BURIED_PITFALL_HOLE_START + 4) +#define BURIED_PITFALL_HOLE05 (BURIED_PITFALL_HOLE_START + 5) +#define BURIED_PITFALL_HOLE06 (BURIED_PITFALL_HOLE_START + 6) +#define BURIED_PITFALL_HOLE07 (BURIED_PITFALL_HOLE_START + 7) +#define BURIED_PITFALL_HOLE08 (BURIED_PITFALL_HOLE_START + 8) +#define BURIED_PITFALL_HOLE09 (BURIED_PITFALL_HOLE_START + 9) +#define BURIED_PITFALL_HOLE10 (BURIED_PITFALL_HOLE_START + 10) +#define BURIED_PITFALL_HOLE11 (BURIED_PITFALL_HOLE_START + 11) +#define BURIED_PITFALL_HOLE12 (BURIED_PITFALL_HOLE_START + 12) +#define BURIED_PITFALL_HOLE13 (BURIED_PITFALL_HOLE_START + 13) +#define BURIED_PITFALL_HOLE14 (BURIED_PITFALL_HOLE_START + 14) +#define BURIED_PITFALL_HOLE15 (BURIED_PITFALL_HOLE_START + 15) +#define BURIED_PITFALL_HOLE16 (BURIED_PITFALL_HOLE_START + 16) +#define BURIED_PITFALL_HOLE17 (BURIED_PITFALL_HOLE_START + 17) +#define BURIED_PITFALL_HOLE18 (BURIED_PITFALL_HOLE_START + 18) +#define BURIED_PITFALL_HOLE19 (BURIED_PITFALL_HOLE_START + 19) +#define BURIED_PITFALL_HOLE20 (BURIED_PITFALL_HOLE_START + 20) +#define BURIED_PITFALL_HOLE21 (BURIED_PITFALL_HOLE_START + 21) +#define BURIED_PITFALL_HOLE22 (BURIED_PITFALL_HOLE_START + 22) +#define BURIED_PITFALL_HOLE23 (BURIED_PITFALL_HOLE_START + 23) +#define BURIED_PITFALL_HOLE24 (BURIED_PITFALL_HOLE_START + 24) +#define BURIED_PITFALL_HOLE_END BURIED_PITFALL_HOLE24 +#define BURIED_PITFALL_HOLE_RSV_START 0x0043 +#define BURIED_PITFALL_HOLE_RSV00 (BURIED_PITFALL_HOLE_RSV_START + 0) +#define BURIED_PITFALL_HOLE_RSV01 (BURIED_PITFALL_HOLE_RSV_START + 1) +#define BURIED_PITFALL_HOLE_RSV02 (BURIED_PITFALL_HOLE_RSV_START + 2) +#define BURIED_PITFALL_HOLE_RSV03 (BURIED_PITFALL_HOLE_RSV_START + 3) +#define BURIED_PITFALL_HOLE_RSV04 (BURIED_PITFALL_HOLE_RSV_START + 4) +#define BURIED_PITFALL_HOLE_RSV05 (BURIED_PITFALL_HOLE_RSV_START + 5) +#define BURIED_PITFALL_HOLE_RSV06 (BURIED_PITFALL_HOLE_RSV_START + 6) +#define BURIED_PITFALL_HOLE_RSV07 (BURIED_PITFALL_HOLE_RSV_START + 7) +#define BURIED_PITFALL_HOLE_RSV08 (BURIED_PITFALL_HOLE_RSV_START + 8) +#define BURIED_PITFALL_HOLE_RSV09 (BURIED_PITFALL_HOLE_RSV_START + 9) +#define BURIED_PITFALL_HOLE_RSV10 (BURIED_PITFALL_HOLE_RSV_START + 10) +#define BURIED_PITFALL_HOLE_RSV11 (BURIED_PITFALL_HOLE_RSV_START + 11) +#define BURIED_PITFALL_HOLE_RSV12 (BURIED_PITFALL_HOLE_RSV_START + 12) +#define BURIED_PITFALL_HOLE_RSV13 (BURIED_PITFALL_HOLE_RSV_START + 13) +#define BURIED_PITFALL_HOLE_RSV14 (BURIED_PITFALL_HOLE_RSV_START + 14) +#define BURIED_PITFALL_HOLE_RSV15 (BURIED_PITFALL_HOLE_RSV_START + 15) +#define BURIED_PITFALL_HOLE_RSV16 (BURIED_PITFALL_HOLE_RSV_START + 16) +#define BURIED_PITFALL_HOLE_RSV17 (BURIED_PITFALL_HOLE_RSV_START + 17) +#define BURIED_PITFALL_HOLE_RSV18 (BURIED_PITFALL_HOLE_RSV_START + 18) +#define BURIED_PITFALL_HOLE_RSV19 (BURIED_PITFALL_HOLE_RSV_START + 19) +#define BURIED_PITFALL_HOLE_RSV20 (BURIED_PITFALL_HOLE_RSV_START + 20) +#define BURIED_PITFALL_HOLE_RSV21 (BURIED_PITFALL_HOLE_RSV_START + 21) +#define BURIED_PITFALL_HOLE_RSV22 (BURIED_PITFALL_HOLE_RSV_START + 22) +#define BURIED_PITFALL_HOLE_RSV23 (BURIED_PITFALL_HOLE_RSV_START + 23) +#define BURIED_PITFALL_HOLE_RSV24 (BURIED_PITFALL_HOLE_RSV_START + 24) +#define BURIED_PITFALL_HOLE_RSV_END BURIED_PITFALL_HOLE_RSV24 #define SHINE_SPOT 0x005C #define HOLE_SHINE 0x005D #define TREE_BEES 0x005E @@ -535,39 +802,40 @@ extern int mNT_check_unknown(mActor_name_t item_no); /* end of environmental objects */ #define SIGNBOARD_START 0x0900 -#define SIGNBOARD (SIGNBOARD_START) -#define SIGNBOARD0_PLR0 (SIGNBOARD_START + 1) -#define SIGNBOARD1_PLR0 (SIGNBOARD0_PLR0 + 1) -#define SIGNBOARD2_PLR0 (SIGNBOARD1_PLR0 + 1) -#define SIGNBOARD3_PLR0 (SIGNBOARD2_PLR0 + 1) -#define SIGNBOARD4_PLR0 (SIGNBOARD3_PLR0 + 1) -#define SIGNBOARD5_PLR0 (SIGNBOARD4_PLR0 + 1) -#define SIGNBOARD6_PLR0 (SIGNBOARD5_PLR0 + 1) -#define SIGNBOARD7_PLR0 (SIGNBOARD6_PLR0 + 1) -#define SIGNBOARD0_PLR1 (SIGNBOARD7_PLR0 + 1) -#define SIGNBOARD1_PLR1 (SIGNBOARD0_PLR1 + 1) -#define SIGNBOARD2_PLR1 (SIGNBOARD1_PLR1 + 1) -#define SIGNBOARD3_PLR1 (SIGNBOARD2_PLR1 + 1) -#define SIGNBOARD4_PLR1 (SIGNBOARD3_PLR1 + 1) -#define SIGNBOARD5_PLR1 (SIGNBOARD4_PLR1 + 1) -#define SIGNBOARD6_PLR1 (SIGNBOARD5_PLR1 + 1) -#define SIGNBOARD7_PLR1 (SIGNBOARD6_PLR1 + 1) -#define SIGNBOARD0_PLR2 (SIGNBOARD7_PLR1 + 1) -#define SIGNBOARD1_PLR2 (SIGNBOARD0_PLR2 + 1) -#define SIGNBOARD2_PLR2 (SIGNBOARD1_PLR2 + 1) -#define SIGNBOARD3_PLR2 (SIGNBOARD2_PLR2 + 1) -#define SIGNBOARD4_PLR2 (SIGNBOARD3_PLR2 + 1) -#define SIGNBOARD5_PLR2 (SIGNBOARD4_PLR2 + 1) -#define SIGNBOARD6_PLR2 (SIGNBOARD5_PLR2 + 1) -#define SIGNBOARD7_PLR2 (SIGNBOARD6_PLR2 + 1) -#define SIGNBOARD0_PLR3 (SIGNBOARD7_PLR2 + 1) -#define SIGNBOARD1_PLR3 (SIGNBOARD0_PLR3 + 1) -#define SIGNBOARD2_PLR3 (SIGNBOARD1_PLR3 + 1) -#define SIGNBOARD3_PLR3 (SIGNBOARD2_PLR3 + 1) -#define SIGNBOARD4_PLR3 (SIGNBOARD3_PLR3 + 1) -#define SIGNBOARD5_PLR3 (SIGNBOARD4_PLR3 + 1) -#define SIGNBOARD6_PLR3 (SIGNBOARD5_PLR3 + 1) -#define SIGNBOARD7_PLR3 (SIGNBOARD6_PLR3 + 1) +#define SIGNBOARD0_PLR0 (SIGNBOARD_START + 0) +#define SIGNBOARD1_PLR0 (SIGNBOARD_START + 1) +#define SIGNBOARD2_PLR0 (SIGNBOARD_START + 2) +#define SIGNBOARD3_PLR0 (SIGNBOARD_START + 3) +#define SIGNBOARD4_PLR0 (SIGNBOARD_START + 4) +#define SIGNBOARD5_PLR0 (SIGNBOARD_START + 5) +#define SIGNBOARD6_PLR0 (SIGNBOARD_START + 6) +#define SIGNBOARD7_PLR0 (SIGNBOARD_START + 7) +#define SIGNBOARD0_PLR1 (SIGNBOARD_START + 8) +#define SIGNBOARD1_PLR1 (SIGNBOARD_START + 9) +#define SIGNBOARD2_PLR1 (SIGNBOARD_START + 10) +#define SIGNBOARD3_PLR1 (SIGNBOARD_START + 11) +#define SIGNBOARD4_PLR1 (SIGNBOARD_START + 12) +#define SIGNBOARD5_PLR1 (SIGNBOARD_START + 13) +#define SIGNBOARD6_PLR1 (SIGNBOARD_START + 14) +#define SIGNBOARD7_PLR1 (SIGNBOARD_START + 15) +#define SIGNBOARD0_PLR2 (SIGNBOARD_START + 16) +#define SIGNBOARD1_PLR2 (SIGNBOARD_START + 17) +#define SIGNBOARD2_PLR2 (SIGNBOARD_START + 18) +#define SIGNBOARD3_PLR2 (SIGNBOARD_START + 19) +#define SIGNBOARD4_PLR2 (SIGNBOARD_START + 20) +#define SIGNBOARD5_PLR2 (SIGNBOARD_START + 21) +#define SIGNBOARD6_PLR2 (SIGNBOARD_START + 22) +#define SIGNBOARD7_PLR2 (SIGNBOARD_START + 23) +#define SIGNBOARD0_PLR3 (SIGNBOARD_START + 24) +#define SIGNBOARD1_PLR3 (SIGNBOARD_START + 25) +#define SIGNBOARD2_PLR3 (SIGNBOARD_START + 26) +#define SIGNBOARD3_PLR3 (SIGNBOARD_START + 27) +#define SIGNBOARD4_PLR3 (SIGNBOARD_START + 28) +#define SIGNBOARD5_PLR3 (SIGNBOARD_START + 29) +#define SIGNBOARD6_PLR3 (SIGNBOARD_START + 30) +#define SIGNBOARD7_PLR3 (SIGNBOARD_START + 31) +#define SIGNBOARD (SIGNBOARD_START + 32) +#define SIGNBOARD_END (SIGNBOARD) #define FTR0_START 0x1000 #define FTR_CLASSIC_WARDROBE 0x1004 @@ -594,6 +862,10 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define FTR_DRACAENA_NORTH 0x13B2 #define FTR_DRACAENA_WEST 0x13B3 +#define FTR_MANHOLE_COVER 0x1444 + +#define FTR_BATH_MAT 0x154C + #define HANIWA_START 0x15B0 #define FTR_HANIWA000_SOUTH (HANIWA_START + 0) #define FTR_HANIWA000_EAST (HANIWA_START + 1) @@ -2016,6 +2288,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define ITM_DIARY_END (ITM_DIARY_START + 16) #define ITM_TICKET_START 0x2C00 +#define ITM_TICKET_END (ITM_TICKET_START + 95) #define ITM_INSECT_START 0x2D00 #define ITM_INSECT00 (ITM_INSECT_START + 0) @@ -2174,6 +2447,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define DOOR1 (DOOR0 + 1) /* 0x4001 */ #define EXIT_DOOR 0x4080 +#define EXIT_DOOR1 (EXIT_DOOR + 1) /* 0x4081 */ #define NPC_HOUSE_START 0x5000 #define NPC_HOUSE000 NPC_HOUSE_START @@ -2263,6 +2537,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define BOAT (STRUCTURE_START + 79) #define COTTAGE_MY (STRUCTURE_START + 80) #define COTTAGE_NPC (STRUCTURE_START + 81) +#define COTTAGE_NPC_END (COTTAGE_NPC + 1) #define PORT_SIGN (STRUCTURE_START + 82) #define STRUCTURE_END (STRUCTURE_START + 83) @@ -2276,6 +2551,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define ETC_SNOWMAN_BALL_A (ETC_START + 13) #define ETC_SNOWMAN_BALL_B (ETC_START + 14) #define ETC_TRAIN_WINDOW (ETC_START + 17) +#define ETC_UKI (ETC_START + 18) #define MISC_ACTOR_START 0x9000 #define MISC_ACTOR_SAMPLE MISC_ACTOR_START @@ -2751,6 +3027,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define DUMMY_DOUZOU 0xF11D #define DUMMY_NAMEPLATE 0xF11F #define DUMMY_MUSEUM 0xF120 +#define DUMMY_BRIDGE 0xF121 #define DUMMY_FLAG 0xF122 #define DUMMY_COTTAGE_MY 0xF123 #define DUMMY_COTTAGE_NPC 0xF124 @@ -2790,6 +3067,31 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define RSV_POLICE_ITEM_31 0xF147 #define RSV_POLICE_ITEM_END 0xF148 +#define RSV_SHOP_PAPER 0xFE00 +#define RSV_SHOP_CLOTH 0xFE01 +#define RSV_SHOP_FTR 0xFE02 +#define RSV_SHOP_CARPET 0xFE03 +#define RSV_SHOP_WALL 0xFE04 +#define RSV_SHOP_HALLOWEEN 0xFE05 +#define RSV_SHOP_TOOL 0xFE06 +#define RSV_SHOP_EVENT 0xFE07 +#define RSV_SHOP_PLANT 0xFE08 +#define RSV_SHOP_RARE 0xFE09 +#define RSV_SHOP_UMBRELLA 0xFE0A +#define RSV_SHOP_PAINT 0xFE0B +#define RSV_SHOP_SIGNBOARD 0xFE0C +#define RSV_SHOP_FE0D 0xFE0D +#define RSV_SHOP_SOLD_PAPER 0xFE0E +#define RSV_SHOP_SOLD_CLOTH 0xFE0F +#define RSV_SHOP_SOLD_FTR 0xFE10 +#define RSV_SHOP_SOLD_CARPET 0xFE11 +#define RSV_SHOP_SOLD_WALL 0xFE12 +#define RSV_SHOP_SOLD_PLANT 0xFE13 +#define RSV_SHOP_SOLD_TOOL 0xFE14 +#define RSV_SHOP_SOLD_RARE 0xFE15 +#define RSV_SHOP_SOLD_UMBRELLA 0xFE16 +#define RSV_SHOP_SOLD_PAINT 0xFE17 +#define RSV_SHOP_SOLD_SIGNBOARD 0xFE18 #define RSV_DOOR 0xFE1B #define RSV_FE1C 0xFE1C #define RSV_FE1F 0xFE1F @@ -2801,6 +3103,7 @@ extern int mNT_check_unknown(mActor_name_t item_no); #define RSV_CLOTH5 0xFE25 #define RSV_CLOTH6 0xFE26 #define RSV_CLOTH7 0xFE27 +#define RSV_SIGNBOARD 0xFE30 #define RSV_NW_ORIGINAL0 0xFE31 #define RSV_NW_ORIGINAL1 0xFE32 #define RSV_NW_ORIGINAL2 0xFE33 diff --git a/include/m_npc.h b/include/m_npc.h index 9343c3d3..80feb7ed 100644 --- a/include/m_npc.h +++ b/include/m_npc.h @@ -23,7 +23,7 @@ extern "C" { #define mNpc_GET_TYPE(npc_id) ((npc_id) & 0xF000) #define mNpc_IS_SPECIAL(npc_id) (mNpc_GET_TYPE(npc_id) == 0xD000) -#define ANIMAL_NUM_MIN 5 +#define ANIMAL_NUM_MIN 5 #define ANIMAL_NUM_MAX 15 /* Maximum number of villagers possible in town */ #define ANIMAL_MEMORY_NUM 7 #define ANIMAL_CATCHPHRASE_LEN 10 @@ -38,188 +38,194 @@ extern "C" { #define mNpc_ISLANDER_NO ANIMAL_NUM_MAX enum { - mNpc_MOOD_0, - mNpc_MOOD_1, - mNpc_MOOD_2, - mNpc_MOOD_3, - mNpc_MOOD_4, - mNpc_MOOD_5, - mNpc_MOOD_6, - mNpc_MOOD_7, - mNpc_MOOD_8, + mNpc_MOOD_0, + mNpc_MOOD_1, + mNpc_MOOD_2, + mNpc_MOOD_3, + mNpc_MOOD_4, + mNpc_MOOD_5, + mNpc_MOOD_6, + mNpc_MOOD_7, + mNpc_MOOD_8, - mNpc_MOOD_NUM + mNpc_MOOD_NUM }; enum { - mNpc_LETTER_RANK_BAD, - mNpc_LETTER_RANK_OK, + mNpc_LETTER_RANK_BAD, + mNpc_LETTER_RANK_OK, - mNpc_LETTER_RANK_NUM + mNpc_LETTER_RANK_NUM }; enum { - mNpc_EVENT_MAIL_VT_DAY, /* valentine's day */ - mNpc_EVENT_MAIL_WT_DAY, /* white day (JP only) */ + mNpc_EVENT_MAIL_VT_DAY, /* valentine's day */ + mNpc_EVENT_MAIL_WT_DAY, /* white day (JP only) */ - mNpc_EVENT_MAIL_NUM + mNpc_EVENT_MAIL_NUM }; enum { - mNpc_EVENT_MAIL_BEST_FRIEND, - mNpc_EVENT_MAIL_OK_FRIEND, - mNpc_EVENT_MAIL_NOT_FRIEND, + mNpc_EVENT_MAIL_BEST_FRIEND, + mNpc_EVENT_MAIL_OK_FRIEND, + mNpc_EVENT_MAIL_NOT_FRIEND, - mNpc_EVENT_MAIL_FRIEND_NUM + mNpc_EVENT_MAIL_FRIEND_NUM }; enum { - mNpc_GROW_STARTER, - mNpc_GROW_MOVE_IN, - mNpc_GROW_ISLANDER, + mNpc_GROW_STARTER, + mNpc_GROW_MOVE_IN, + mNpc_GROW_ISLANDER, - mNpc_GROW_NUM + mNpc_GROW_NUM }; enum { - mNpc_NAME_TYPE_SPNPC, - mNpc_NAME_TYPE_NPC, + mNpc_NAME_TYPE_SPNPC, + mNpc_NAME_TYPE_NPC, - mNpc_NAME_TYPE_NUM + mNpc_NAME_TYPE_NUM }; enum { - mNpc_FEEL_NORMAL, - mNpc_FEEL_HAPPY, - mNpc_FEEL_ANGRY, - mNpc_FEEL_SAD, - mNpc_FEEL_SLEEPY, - mNpc_FEEL_PITFALL, + mNpc_FEEL_NORMAL, + mNpc_FEEL_HAPPY, + mNpc_FEEL_ANGRY, + mNpc_FEEL_SAD, + mNpc_FEEL_SLEEPY, + mNpc_FEEL_PITFALL, - mNpc_FEEL_NUM, + mNpc_FEEL_NUM, - mNpc_FEEL_6 = mNpc_FEEL_NUM, - mNpc_FEEL_UZAI_0, - mNpc_FEEL_UZAI_1, + mNpc_FEEL_6 = mNpc_FEEL_NUM, + mNpc_FEEL_UZAI_0, + mNpc_FEEL_UZAI_1, - mNpc_FEEL_ALL_NUM + mNpc_FEEL_ALL_NUM }; enum { - mNpc_PATIENCE_MILDLY_ANNOYED, - mNpc_PATIENCE_ANNOYED, - mNpc_PATIENCE_NORMAL, + mNpc_PATIENCE_MILDLY_ANNOYED, + mNpc_PATIENCE_ANNOYED, + mNpc_PATIENCE_NORMAL, - mNpc_PATIENCE_NUM + mNpc_PATIENCE_NUM }; /* sizeof(Anmremail_c) == 0x16 */ typedef struct animal_remail_s { - lbRTC_ymd_c date; /* date sent */ - u8 name[ANIMAL_NAME_LEN]; /* villager name */ - u8 land_name[LAND_NAME_SIZE]; /* town name */ - struct { - u8 cond:1; /* was letter good or not */ - u8 looks:7; /* personality */ - } flags; + lbRTC_ymd_c date; /* date sent */ + u8 name[ANIMAL_NAME_LEN]; /* villager name */ + u8 land_name[LAND_NAME_SIZE]; /* town name */ + struct { + u8 cond : 1; /* was letter good or not */ + u8 looks : 7; /* personality */ + } flags; } Anmremail_c; /* sizeof(Anmplmail_c) == 0x104 */ typedef struct animal_player_maiL_s { - /* 0x000 */ u8 font; /* 'font' to use for letter info */ - /* 0x001 */ u8 paper_type; - /* 0x002 */ mActor_name_t present; - /* 0x004 */ u8 header_back_start; /* position for name insertion in header */ - /* 0x005 */ u8 header[MAIL_HEADER_LEN]; - /* 0x01D */ u8 body[MAIL_BODY_LEN]; - /* 0x0DD */ u8 footer[MAIL_FOOTER_LEN]; - /* 0x0FD */ u8 pad0; /* likely pad */ - /* 0x0FE */ lbRTC_ymd_c date; /* sent date */ + /* 0x000 */ u8 font; /* 'font' to use for letter info */ + /* 0x001 */ u8 paper_type; + /* 0x002 */ mActor_name_t present; + /* 0x004 */ u8 header_back_start; /* position for name insertion in header */ + /* 0x005 */ u8 header[MAIL_HEADER_LEN]; + /* 0x01D */ u8 body[MAIL_BODY_LEN]; + /* 0x0DD */ u8 footer[MAIL_FOOTER_LEN]; + /* 0x0FD */ u8 pad0; /* likely pad */ + /* 0x0FE */ lbRTC_ymd_c date; /* sent date */ } Anmplmail_c; /* sizeof(Anmhome_c) == 5 */ typedef struct animal_home_s { - /* 0x00 */ u8 type_unused; /* Likely the house type, but seems to be unused outside of SChk_Anmhome_c_sub */ - /* 0x01 */ u8 block_x; /* acre x position */ - /* 0x02 */ u8 block_z; /* acre y position */ - /* 0x03 */ u8 ut_x; /* unit x position */ - /* 0x04 */ u8 ut_z; /* unit z position */ + /* 0x00 */ u8 type_unused; /* Likely the house type, but seems to be unused outside of SChk_Anmhome_c_sub */ + /* 0x01 */ u8 block_x; /* acre x position */ + /* 0x02 */ u8 block_z; /* acre y position */ + /* 0x03 */ u8 ut_x; /* unit x position */ + /* 0x04 */ u8 ut_z; /* unit z position */ } Anmhome_c; /* sizeof(Anmlet_c) == 1 */ typedef struct animal_letter_info_s { - u8 exists:1; /* letter received by villager and exists */ - u8 cond:1; /* mNpc_LETTER_RANK_* */ - u8 send_reply:1; /* set when the villager should reply */ - u8 has_present_cloth:1; /* set when the villager's held present shirt is from this letter */ - u8 wearing_present_cloth:1; /* set when a villager is wearing the shirt sent with the saved letter */ - u8 bit5_7:3; /* seemingly unused */ + u8 exists : 1; /* letter received by villager and exists */ + u8 cond : 1; /* mNpc_LETTER_RANK_* */ + u8 send_reply : 1; /* set when the villager should reply */ + u8 has_present_cloth : 1; /* set when the villager's held present shirt is from this letter */ + u8 wearing_present_cloth : 1; /* set when a villager is wearing the shirt sent with the saved letter */ + u8 bit5_7 : 3; /* seemingly unused */ } Anmlet_c; /* sizeof(Anmlnd_c) == 0xA */ typedef struct animal_land_mem_s { - /* 0x00 */ u8 name[LAND_NAME_SIZE]; - /* 0x08 */ u16 id; + /* 0x00 */ u8 name[LAND_NAME_SIZE]; + /* 0x08 */ u16 id; } Anmlnd_c; typedef struct island_animal_best_ftr_s { - u32 check; - u16 have_bitfield; + u32 check; + u16 have_bitfield; } Anm_bestFtr_c; /* sizeof(memuni_u) == 0xC */ typedef union { - Anmlnd_c land; /* size = 0xA */ - Anm_bestFtr_c island; /* size = 6 */ + Anmlnd_c land; /* size = 0xA */ + Anm_bestFtr_c island; /* size = 6 */ } memuni_u; /* sizeof(Anmmem_c) == 0x138 */ typedef struct animal_memory_s { - /* 0x000 */ PersonalID_c memory_player_id; /* personal id of the player memory belongs to */ - /* 0x014 */ lbRTC_time_c last_speak_time; /* time the player last spoke to this villager */ - /* 0x01C */ memuni_u memuni; /* union between town NPC land memory & islander player action memory */ - /* 0x028 */ u64 saved_town_tune; /* memory origin town tune */ - /* 0x030 */ s8 friendship; /* friendship with the player */ - /* 0x031 */ Anmlet_c letter_info; /* saved letter flags */ - /* 0x032 */ Anmplmail_c letter; /* saved letter */ + /* 0x000 */ PersonalID_c memory_player_id; /* personal id of the player memory belongs to */ + /* 0x014 */ lbRTC_time_c last_speak_time; /* time the player last spoke to this villager */ + /* 0x01C */ memuni_u memuni; /* union between town NPC land memory & islander player action memory */ + /* 0x028 */ u64 saved_town_tune; /* memory origin town tune */ + /* 0x030 */ s8 friendship; /* friendship with the player */ + /* 0x031 */ Anmlet_c letter_info; /* saved letter flags */ + /* 0x032 */ Anmplmail_c letter; /* saved letter */ } Anmmem_c; /* sizeof(anmuni) == 8 */ typedef union { - u8 previous_land_name[LAND_NAME_SIZE]; - mActor_name_t island_ftr[mNpc_ISLAND_FTR_SAVE_NUM]; + u8 previous_land_name[LAND_NAME_SIZE]; + mActor_name_t island_ftr[mNpc_ISLAND_FTR_SAVE_NUM]; } anmuni_u; /* sizeof(AnmHPMail_c) == 0x1C */ typedef struct animal_password_mail_s { - /* 0x00 */ lbRTC_time_c receive_time; - /* 0x08 */ u8 password[20]; /* TODO: this should not be a hardcoded length */ + /* 0x00 */ lbRTC_time_c receive_time; + /* 0x08 */ u8 password[20]; /* TODO: this should not be a hardcoded length */ } AnmHPMail_c; /* sizeof(Animal_c) == 0x988 */ typedef struct animal_s { - /* 0x000 */ AnmPersonalID_c id; /* this villager's ID */ - /* 0x010 */ Anmmem_c memories[ANIMAL_MEMORY_NUM]; /* memories of players who've spoken to this villager */ - /* 0x898 */ Anmhome_c home_info; /* home position info */ - /* 0x89D */ u8 catchphrase[ANIMAL_CATCHPHRASE_LEN]; /* may be called 'word_ending' */ - /* 0x8A8 */ mQst_contest_c contest_quest; /* current contest quest information */ - /* 0x8D0 */ u8 parent_name[PLAYER_NAME_LEN]; /* name of the player who 'spawned' the villager in, unsure why this is tracked */ - /* 0x8D8 */ anmuni_u anmuni; /* name of the last town the villager lived in or saved island ftr */ - /* 0x8E0 */ u16 previous_land_id; /* id of the previous town the villager lived in */ - /* 0x8E2 */ u8 mood; /* probably called 'feel' based on code */ - /* 0x8E3 */ u8 mood_time; /* probably called 'feel_tim' based on code */ - /* 0x8E4 */ mActor_name_t cloth; /* shirt the villager is wearing */ - /* 0x8E6 */ u16 remove_info; /* info about villager moving between towns? kinda stubbed */ - /* 0x8E8 */ u8 is_home; /* TRUE when the villager is home, otherwise FALSE */ - /* 0x8E9 */ u8 moved_in; /* TRUE when the villager moved in after town creation, FALSE if they started out in town */ - /* 0x8EA */ u8 removing; /* TRUE when the villager is leaving town, FALSE otherwise */ - /* 0x8EB */ u8 cloth_original_id; /* 0xFF when not wearing an Able Sister's pattern, otherwise 0-3 indicating which pattern */ - /* 0x8EC */ s8 umbrella_id; /* 0xFF when no umbrella, 0-31 when a standard umbrella, 32-35 when using an Able Sister's pattern */ - /* 0x8ED */ u8 unk_8ED; /* Exists according to mISL_gc_to_agb_animal, but seems unused in practice */ - /* 0x8EE */ mActor_name_t present_cloth; /* The most recently received shirt from a letter which the villager may change into */ - /* 0x8F0 */ u8 animal_relations[ANIMAL_NUM_MAX]; /* relationships between all villagers in town, starts at 128 which is neutral */ - /* 0x900 */ AnmHPMail_c hp_mail[ANIMAL_HP_MAIL_NUM]; /* mail password info storage */ - /* 0x000 */ u8 unused[24]; /* unknown usage/unused */ + /* 0x000 */ AnmPersonalID_c id; /* this villager's ID */ + /* 0x010 */ Anmmem_c memories[ANIMAL_MEMORY_NUM]; /* memories of players who've spoken to this villager */ + /* 0x898 */ Anmhome_c home_info; /* home position info */ + /* 0x89D */ u8 catchphrase[ANIMAL_CATCHPHRASE_LEN]; /* may be called 'word_ending' */ + /* 0x8A8 */ mQst_contest_c contest_quest; /* current contest quest information */ + /* 0x8D0 */ u8 + parent_name[PLAYER_NAME_LEN]; /* name of the player who 'spawned' the villager in, unsure why this is tracked */ + /* 0x8D8 */ anmuni_u anmuni; /* name of the last town the villager lived in or saved island ftr */ + /* 0x8E0 */ u16 previous_land_id; /* id of the previous town the villager lived in */ + /* 0x8E2 */ u8 mood; /* probably called 'feel' based on code */ + /* 0x8E3 */ u8 mood_time; /* probably called 'feel_tim' based on code */ + /* 0x8E4 */ mActor_name_t cloth; /* shirt the villager is wearing */ + /* 0x8E6 */ u16 remove_info; /* info about villager moving between towns? kinda stubbed */ + /* 0x8E8 */ u8 is_home; /* TRUE when the villager is home, otherwise FALSE */ + /* 0x8E9 */ u8 + moved_in; /* TRUE when the villager moved in after town creation, FALSE if they started out in town */ + /* 0x8EA */ u8 removing; /* TRUE when the villager is leaving town, FALSE otherwise */ + /* 0x8EB */ u8 + cloth_original_id; /* 0xFF when not wearing an Able Sister's pattern, otherwise 0-3 indicating which pattern */ + /* 0x8EC */ s8 umbrella_id; /* 0xFF when no umbrella, 0-31 when a standard umbrella, 32-35 when using an Able + Sister's pattern */ + /* 0x8ED */ u8 unk_8ED; /* Exists according to mISL_gc_to_agb_animal, but seems unused in practice */ + /* 0x8EE */ mActor_name_t + present_cloth; /* The most recently received shirt from a letter which the villager may change into */ + /* 0x8F0 */ u8 animal_relations[ANIMAL_NUM_MAX]; /* relationships between all villagers in town, starts at 128 which + is neutral */ + /* 0x900 */ AnmHPMail_c hp_mail[ANIMAL_HP_MAIL_NUM]; /* mail password info storage */ + /* 0x000 */ u8 unused[24]; /* unknown usage/unused */ } Animal_c; /* @@ -230,69 +236,69 @@ typedef struct animal_s { /* sizeof(Anmret_c) == 0xC */ typedef struct animal_return_s { - /* 0x00 */ mActor_name_t npc_id; /* id of the villager who left */ - /* 0x02 */ u8 talk_bit; /* which players have already interacted with this villager */ - /* 0x03 */ u8 exist; /* if the villager exists */ - /* 0x04 */ lbRTC_time_c renew_time; /* time that this struct was updated */ + /* 0x00 */ mActor_name_t npc_id; /* id of the villager who left */ + /* 0x02 */ u8 talk_bit; /* which players have already interacted with this villager */ + /* 0x03 */ u8 exist; /* if the villager exists */ + /* 0x04 */ lbRTC_time_c renew_time; /* time that this struct was updated */ } Anmret_c; typedef struct demo_npc_s { - mActor_name_t npc_name; /* villager id, E0XX */ - u32 block_x, block_z; /* spawn acre */ - u32 ut_x, ut_z; /* spawn unit in acre */ + mActor_name_t npc_name; /* villager id, E0XX */ + u32 block_x, block_z; /* spawn acre */ + u32 ut_x, ut_z; /* spawn unit in acre */ } mNpc_demo_npc_c; typedef struct { - u8 type; - u8 palette; - u8 wall_id; - u8 floor_id; - mActor_name_t main_layer_id; - mActor_name_t secondary_layer_id; + u8 type; + u8 palette; + u8 wall_id; + u8 floor_id; + mActor_name_t main_layer_id; + mActor_name_t secondary_layer_id; } mNpc_NpcHouseData_c; typedef struct npc_conversation_s { - u8 beesting:1; // talk to player about their beesting - u8 fish_complete:1; // talk to the player about catching all fish - u8 insect_complete:1; // talk to the player about catching all insects - u8 unk:5; + u8 beesting : 1; // talk to player about their beesting + u8 fish_complete : 1; // talk to the player about catching all fish + u8 insect_complete : 1; // talk to the player about catching all insects + u8 unk : 5; } mNpc_NpcConversation_c; typedef struct npc_list_s { - mActor_name_t name; - mActor_name_t field_name; - xyz_t house_position; - xyz_t position; - u8 appear_flag; - mNpc_NpcConversation_c conversation_flags; - mQst_base_c quest_info; - mNpc_NpcHouseData_c house_data; - mActor_name_t reward_furniture; + mActor_name_t name; + mActor_name_t field_name; + xyz_t house_position; + xyz_t position; + u8 appear_flag; + mNpc_NpcConversation_c conversation_flags; + mQst_base_c quest_info; + mNpc_NpcHouseData_c house_data; + mActor_name_t reward_furniture; } mNpc_NpcList_c; typedef struct event_npc_s { - mActor_name_t event_id; /* event NPC id */ - mActor_name_t texture_id; /* real NPC id which is used for texture data */ - mActor_name_t npc_id; /* non-texture NPC id used for other NPC data */ - mActor_name_t cloth_id; /* cloth texture id */ - u8 exists; /* has the actor been spawned yet? */ - u8 in_use; /* is this event npc structure being used? */ - u16 _A; /* exists based on size of structure, seems unused */ + mActor_name_t event_id; /* event NPC id */ + mActor_name_t texture_id; /* real NPC id which is used for texture data */ + mActor_name_t npc_id; /* non-texture NPC id used for other NPC data */ + mActor_name_t cloth_id; /* cloth texture id */ + u8 exists; /* has the actor been spawned yet? */ + u8 in_use; /* is this event npc structure being used? */ + u16 _A; /* exists based on size of structure, seems unused */ } mNpc_EventNpc_c; typedef struct mask_npc_s { - mActor_name_t mask_id; /* 'mask' actor id */ - mActor_name_t npc_id; /* NPC actor id whose data will be used */ - mActor_name_t cloth_id; /* cloth actor id */ - u8 exists; /* has the actor been spawned yet? */ - u8 in_use; /* is this mask npc structure being used? */ - Animal_c animal_data; /* animal data is copied if the mask npc is a standard villager NPC */ + mActor_name_t mask_id; /* 'mask' actor id */ + mActor_name_t npc_id; /* NPC actor id whose data will be used */ + mActor_name_t cloth_id; /* cloth actor id */ + u8 exists; /* has the actor been spawned yet? */ + u8 in_use; /* is this mask npc structure being used? */ + Animal_c animal_data; /* animal data is copied if the mask npc is a standard villager NPC */ } mNpc_MaskNpc_c; typedef struct npc_default_data_s { - mActor_name_t cloth; - u16 catchphrase_str_idx; - s8 umbrella; + mActor_name_t cloth; + u16 catchphrase_str_idx; + s8 umbrella; } mNpc_Default_Data_c; extern void mNpc_AddNowNpcMax(u8* npc_max); @@ -340,7 +346,8 @@ extern void mNpc_CopyAnimalInfo(Animal_c* dst, Animal_c* src); extern int mNpc_SearchAnimalinfo(Animal_c* animal, mActor_name_t npc_id, int count); extern Animal_c* mNpc_GetAnimalInfoP(mActor_name_t npc_id); extern int mNpc_SearchAnimalPersonalID(AnmPersonalID_c* anm_pid); -extern AnmPersonalID_c* mNpc_GetOtherAnimalPersonalIDOtherBlock(AnmPersonalID_c* exclude_pids, int count, int bx, int bz, int check_flag); +extern AnmPersonalID_c* mNpc_GetOtherAnimalPersonalIDOtherBlock(AnmPersonalID_c* exclude_pids, int count, int bx, + int bz, int check_flag); extern AnmPersonalID_c* mNpc_GetOtherAnimalPersonalID(AnmPersonalID_c* pids, int count); extern void mNpc_SetAnimalThisLand(Animal_c* animal, int count); extern int mNpc_GetSameLooksNum(u8 looks); @@ -354,7 +361,7 @@ extern int mNpc_SendMailtoNpc(Mail_c* mail); extern void mNpc_ClearRemail(Anmremail_c* remail); extern void mNpc_Remail(); extern u8 mNpc_GetPaperType(); -extern int mNpc_SendVtdayMail(); +extern int mNpc_SendVtdayMail(int type); extern int mNpc_CheckFriendship(PersonalID_c* pid, Animal_c* animal); extern int mNpc_SendEventBirthdayCard(PersonalID_c* pid); extern int mNpc_SendEventBirthdayCard2(PersonalID_c* pid, int player_no); @@ -366,7 +373,8 @@ extern void mNpc_ChangePresentCloth(); extern u8* mNpc_GetWordEnding(ACTOR* actor); extern void mNpc_ResetWordEnding(ACTOR* actor); extern int mNpc_GetFreeEventNpcIdx(); -extern int mNpc_RegistEventNpc(mActor_name_t event_id, mActor_name_t texture_id, mActor_name_t npc_id, mActor_name_t cloth_id); +extern int mNpc_RegistEventNpc(mActor_name_t event_id, mActor_name_t texture_id, mActor_name_t npc_id, + mActor_name_t cloth_id); extern void mNpc_UnRegistEventNpc(mNpc_EventNpc_c* npc); extern void mNpc_ClearEventNpc(); extern mNpc_EventNpc_c* mNpc_GetSameEventNpc(mActor_name_t event_id); @@ -383,7 +391,8 @@ extern void mNpc_SetAnimalTitleDemo(mNpc_demo_npc_c* demo_npc, Animal_c* animal, extern int mNpc_GetReservedUtNum(int* ut_x, int* ut_z, mActor_name_t* item); extern int mNpc_BlockNum2ReservedUtNum(int* ut_x, int* ut_z, int bx, int bz); extern void mNpc_MakeReservedListBeforeFieldct(Anmhome_c* reserved, int reserved_num, u8* reserved_count); -extern void mNpc_MakeReservedListAfterFieldct(Anmhome_c* reserved, int reserved_num, u8* reserved_count, u8 bx_max, u8 bz_max); +extern void mNpc_MakeReservedListAfterFieldct(Anmhome_c* reserved, int reserved_num, u8* reserved_count, u8 bx_max, + u8 bz_max); extern mNpc_InitNpcData(); extern void mNpc_InitNpcList(mNpc_NpcList_c* npclist, int count); extern void mNpc_SetNpcList(mNpc_NpcList_c* npclist, Animal_c* animal, int count, int malloc_flag); diff --git a/include/m_player.h b/include/m_player.h index d8d2c40c..eaf287ec 100644 --- a/include/m_player.h +++ b/include/m_player.h @@ -11,6 +11,20 @@ extern "C" { #endif +#define mPlayer_DEBT0 17400 /* Buy house */ +#define mPlayer_DEBT1 148000 /* 1st upgrade main floor */ +#define mPlayer_DEBT2 398000 /* 2nd upgrade main floor */ +#define mPlayer_DEBT3 49800 /* Basement */ +#define mPlayer_DEBT4 798000 /* Upper floor */ + +/* These are in frames */ +#define mPlayer_SUNBURN_TIME_VILLAGE (15 * mTM_SECONDS_IN_MINUTE * FRAMES_PER_SECOND) +#define mPlayer_SUNBURN_TIME_ISLAND (5 * mTM_SECONDS_IN_MINUTE * FRAMES_PER_SECOND) + +#define mPlayer_SUNBURN_MAX_RANK 8 + +#define mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE 8 + typedef struct player_actor_s PLAYER_ACTOR; #define mPlayer_FORCE_POSITION_ANGLE_NONE 0 @@ -22,17 +36,67 @@ typedef struct player_actor_s PLAYER_ACTOR; #define mPlayer_FORCE_POSITION_ANGLE_ROTY (1 << 5) #define mPlayer_FORCE_POSITION_ANGLE_ROTZ (1 << 6) -#define mPlayer_JOINT_NUM 26 +#define mPlayer_WALK_FLAG_SET_POS (1 << 1) +#define mPlayer_WALK_FLAG_RESET_MORPH (1 << 2) + +#define mPlayer_NET_CATCH_TABLE_COUNT 8 + +enum { + mPlayer_JOINT_ROOT, + mPlayer_JOINT_BASE, + mPlayer_JOINT_LFOOT_BASE, + mPlayer_JOINT_LFOOT1, + mPlayer_JOINT_LFOOT2, + mPlayer_JOINT_LFOOT3, + mPlayer_JOINT_RFOOT_BASE, + mPlayer_JOINT_RFOOT1, + mPlayer_JOINT_RFOOT2, + mPlayer_JOINT_RFOOT3, + mPlayer_JOINT_TAIL_BASE, + mPlayer_JOINT_TAIL1, + mPlayer_JOINT_TAIL2, + mPlayer_JOINT_CHEST, + mPlayer_JOINT_LARM_BASE, + mPlayer_JOINT_LARM1, + mPlayer_JOINT_LARM2, + mPlayer_JOINT_RARM_BASE, + mPlayer_JOINT_RARM1, + mPlayer_JOINT_RARM2, + mPlayer_JOINT_HAND, + mPlayer_JOINT_HEAD_BASE, + mPlayer_JOINT_MOUTH_BASE, + mPlayer_JOINT_MOUTH, + mPlayer_JOINT_HEAD, + mPlayer_JOINT_FEEL, + + mPlayer_JOINT_NUM +}; enum { mPlayer_ADDRESSABLE_TRUE, mPlayer_ADDRESSABLE_FALSE_MOVEMENT, mPlayer_ADDRESSABLE_FALSE_TALKING, - mPlayer_ADDRESSABLE_FALSE_USING_TOOL, + mPlayer_ADDRESSABLE_FALSE_READY_NET, mPlayer_ADDRESSABLE_NUM }; +enum { + mPlayer_COMPLETE_PAYMENT_TYPE_NONE, + mPlayer_COMPLETE_PAYMENT_TYPE_ARBEIT, + mPlayer_COMPLETE_PAYMENT_TYPE_HOUSE, + + mPlayer_COMPLETE_PAYMENT_TYPE_NUM +}; + +enum { + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_FISHING, + + mPlayer_BGM_VOLUME_MODE_NUM +}; + enum { mPlayer_INDEX_DMA, mPlayer_INDEX_INTRO, @@ -154,9 +218,68 @@ enum { mPlayer_INDEX_DEMO_GETOFF_BOAT, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM2, - mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT + mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT, + + mPlayer_INDEX_NUM }; +#define mPlayer_MAIN_INDEX_VALID(idx) ((idx) >= 0 && (idx) < mPlayer_INDEX_NUM) + +enum { + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_1, + mPlayer_REQUEST_PRIORITY_2, + mPlayer_REQUEST_PRIORITY_3, + mPlayer_REQUEST_PRIORITY_4, + mPlayer_REQUEST_PRIORITY_5, + mPlayer_REQUEST_PRIORITY_6, + mPlayer_REQUEST_PRIORITY_7, + mPlayer_REQUEST_PRIORITY_8, + mPlayer_REQUEST_PRIORITY_9, + mPlayer_REQUEST_PRIORITY_10, + mPlayer_REQUEST_PRIORITY_11, + mPlayer_REQUEST_PRIORITY_12, + mPlayer_REQUEST_PRIORITY_13, + mPlayer_REQUEST_PRIORITY_14, + mPlayer_REQUEST_PRIORITY_15, + mPlayer_REQUEST_PRIORITY_16, + mPlayer_REQUEST_PRIORITY_17, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_23, + mPlayer_REQUEST_PRIORITY_24, + mPlayer_REQUEST_PRIORITY_25, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_27, + mPlayer_REQUEST_PRIORITY_28, + mPlayer_REQUEST_PRIORITY_29, + mPlayer_REQUEST_PRIORITY_30, + mPlayer_REQUEST_PRIORITY_31, + mPlayer_REQUEST_PRIORITY_32, + mPlayer_REQUEST_PRIORITY_33, + mPlayer_REQUEST_PRIORITY_34, + mPlayer_REQUEST_PRIORITY_35, + mPlayer_REQUEST_PRIORITY_36, + mPlayer_REQUEST_PRIORITY_37, + mPlayer_REQUEST_PRIORITY_38, + mPlayer_REQUEST_PRIORITY_39, + mPlayer_REQUEST_PRIORITY_40, + mPlayer_REQUEST_PRIORITY_41, + mPlayer_REQUEST_PRIORITY_42, + mPlayer_REQUEST_PRIORITY_43, + mPlayer_REQUEST_PRIORITY_44, + mPlayer_REQUEST_PRIORITY_45, + + mPlayer_REQUEST_PRIORITY_NUM +}; + +#define mPlayer_REQUEST_PRIORITY_NONE -1 + +#define mPlayer_REQUEST_PRIORITY_VALID(prio) ((prio) >= 0 && (prio) <= mPlayer_REQUEST_PRIORITY_45) + enum { mPlayer_ANIM_WAIT1, mPlayer_ANIM_WALK1, @@ -319,6 +442,38 @@ enum { mPlayer_ANIM_NUM }; +enum { + mPlayer_ITEM_MAIN_NONE, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_NET_NORMAL, + mPlayer_ITEM_MAIN_NET_SWING, + mPlayer_ITEM_MAIN_NET_STOP, + mPlayer_ITEM_MAIN_TUMBLE, + mPlayer_ITEM_MAIN_TUBMLE_GETUP, + mPlayer_ITEM_MAIN_NET_PULL, + mPlayer_ITEM_MAIN_NET_PUTAWAY, + mPlayer_ITEM_MAIN_NET_COMPLETE_COLLECTION, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_ROD_NORMAL, + mPlayer_ITEM_MAIN_ROD_READY, + mPlayer_ITEM_MAIN_ROD_CAST, + mPlayer_ITEM_MAIN_ROD_AIR, + mPlayer_ITEM_MAIN_ROD_RELAX, + mPlayer_ITEM_MAIN_ROD_COLLECT, + mPlayer_ITEM_MAIN_ROD_VIB, + mPlayer_ITEM_MAIN_ROD_FLY, + mPlayer_ITEM_MAIN_ROD_PUTAWAY, + mPlayer_ITEM_MAIN_SCOOP_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + + mPlayer_ITEM_MAIN_NUM, +}; + +#define mPlayer_ITEM_MAIN_VALID(main_index) \ + ((main_index) >= (mPlayer_ITEM_MAIN_NONE) && (main_index) < (mPlayer_ITEM_MAIN_NUM)) + enum { mPlayer_ITEM_KIND_AXE, mPlayer_ITEM_KIND_AXE_USE_1, @@ -411,6 +566,28 @@ enum { mPlayer_ITEM_KIND_NUM /* Are there more? */ }; +#define mPlayer_ITEM_KIND_NONE -1 + +#define mPlayer_ITEM_KIND_CHECK(kind, min, max) ((kind) >= (min) && (kind) < ((max) + 1)) +#define mPlayer_ITEM_IS_AXE(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_AXE, mPlayer_ITEM_KIND_GOLD_AXE) +#define mPlayer_ITEM_IS_NET(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_NET, mPlayer_ITEM_KIND_GOLD_NET) +#define mPlayer_ITEM_IS_ROD(kind) mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_ROD, mPlayer_ITEM_KIND_GOLD_ROD) +#define mPlayer_ITEM_IS_SHOVEL(kind) \ + mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_SHOVEL, mPlayer_ITEM_KIND_GOLD_SHOVEL) +#define mPlayer_ITEM_IS_UMBRELLA(kind) \ + mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_UMBRELLA00, mPlayer_ITEM_KIND_ORG_UMBRELLA07) +#define mPlayer_ITEM_IS_BALLOON(kind) \ + mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_RED_BALLOON, mPlayer_ITEM_KIND_BUNNY_O_BALLOON) +#define mPlayer_ITEM_IS_WINDMILL(kind) \ + mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_YELLOW_PINWHEEL, mPlayer_ITEM_KIND_FANCY_PINWHEEL) +#define mPlayer_ITEM_IS_FAN(kind) \ + mPlayer_ITEM_KIND_CHECK(kind, mPlayer_ITEM_KIND_BLUEBELL_FAN, mPlayer_ITEM_KIND_LEAF_FAN) +#define mPlayer_ITEM_IS_NOT_TOOL(kind) \ + (mPlayer_ITEM_IS_UMBRELLA(kind) || mPlayer_ITEM_IS_BALLOON(kind) || mPlayer_ITEM_IS_WINDMILL(kind) || \ + mPlayer_ITEM_IS_FAN(kind)) + +#define mPlayer_ITEM_KIND_VALID(kind) (mPlayer_ITEM_KIND_CHECK(kind, 0, mPlayer_ITEM_KIND_NUM)) + enum { mPlayer_ITEM_DATA_AXE, // model mPlayer_ITEM_DATA_AXE_B, // model @@ -472,6 +649,8 @@ enum { mPlayer_ITEM_DATA_NUM }; +#define mPlayer_ITEM_DATA_VALID(type) ((type) >= 0 && type < mPlayer_ITEM_DATA_NUM) + enum { mPlayer_ITEM_DATA_TYPE_GFX, mPlayer_ITEM_DATA_TYPE_SKELETON, @@ -488,6 +667,7 @@ enum { mPlayer_PART_TABLE_AXE, mPlayer_PART_TABLE_PICK_UP, mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_FAN, mPlayer_PART_TABLE_NUM }; @@ -508,6 +688,596 @@ enum { mPlayer_BED_ACTION_NUM }; +enum { + mPlayer_DRAW_TYPE_NONE, + mPlayer_DRAW_TYPE_NORMAL, + + mPlayer_DRAW_TYPE_NUM +}; + +enum { + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_WORLD_POS, + mPlayer_SHADOW_TYPE_ANIME_POS, + mPlayer_SHADOW_TYPE_NONE, + + mPlayer_SHADOW_TYPE_NUM +}; + +enum { + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ENTER_BUILDING, + + mPlayer_STATUS_FOR_BEE_NUM +}; + +enum { + mPlayer_NET_CATCH_TYPE_INSECT, + mPlayer_NET_CATCH_TYPE_UNK1, + + mPlayer_NET_CATCH_TYPE_NUM +}; + +enum { + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_NONE, + + mPlayer_ABLE_ITEM_NUM +}; + +enum { + mPlayer_AXE_HIT_NONE, + mPlayer_AXE_HIT_REFLECT, + mPlayer_AXE_HIT_TREE, + + mPlayer_AXE_HIT_NUM +}; + +enum { + mPlayer_AXE_BREAK_FROM_SWING, + mPlayer_AXE_BREAK_FROM_REFLECT, + + mPlayer_AXE_BREAK_FROM_NUM +}; + +enum { + mPlayer_RADIO_EXERCISE_CMD0, + mPlayer_RADIO_EXERCISE_CMD1, + mPlayer_RADIO_EXERCISE_CMD2, + mPlayer_RADIO_EXERCISE_CMD3, + mPlayer_RADIO_EXERCISE_CMD4, + mPlayer_RADIO_EXERCISE_CMD5, + mPlayer_RADIO_EXERCISE_CMD6, + mPlayer_RADIO_EXERCISE_CMD7, + mPlayer_RADIO_EXERCISE_CMD8, + mPlayer_RADIO_EXERCISE_CMD9, + mPlayer_RADIO_EXERCISE_CMD10, + mPlayer_RADIO_EXERCISE_CMD11, + mPlayer_RADIO_EXERCISE_CMD12, + mPlayer_RADIO_EXERCISE_CMD13, + mPlayer_RADIO_EXERCISE_CMD14, + mPlayer_RADIO_EXERCISE_CMD15, + mPlayer_RADIO_EXERCISE_CMD16, + mPlayer_RADIO_EXERCISE_CMD17, + + mPlayer_RADIO_EXERCISE_CMD_NUM +}; + +enum { + mPlayer_GOLDEN_ITEM_TYPE_AXE, + mPlayer_GOLDEN_ITEM_TYPE_NET, + mPlayer_GOLDEN_ITEM_TYPE_ROD, + mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + + mPlayer_GOLDEN_ITEM_TYPE_NUM +}; + +enum { + mPlayer_USE_FACE_ROM_TYPE_TEX, + mPlayer_USE_FACE_ROM_TYPE_PAL, + + mPlayer_USE_FACE_ROM_TYPE_NUM +}; + +enum { + mPlayer_EYE_TEX0, + mPlayer_EYE_TEX1, + mPlayer_EYE_TEX2, + mPlayer_EYE_TEX3, + mPlayer_EYE_TEX4, + mPlayer_EYE_TEX5, + mPlayer_EYE_TEX6, + mPlayer_EYE_TEX7, + + mPlayer_EYE_TEX_NUM +}; + +enum { + mPlayer_MOUTH_TEX0, + mPlayer_MOUTH_TEX1, + mPlayer_MOUTH_TEX2, + mPlayer_MOUTH_TEX3, + mPlayer_MOUTH_TEX4, + mPlayer_MOUTH_TEX5, + + mPlayer_MOUTH_TEX_NUM +}; + +#define mPlayer_SETUP_TEXTURE_ANIMATION_NONE (0 << 0) +/* Where is (1 << 0)? */ +#define mPlayer_SETUP_TEXTURE_ANIMATION_EYE (1 << 1) +#define mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH (1 << 2) + +typedef struct player_request_return_demo_s { + int prev_main_index; + f32 time; +} mPlayer_request_return_demo_c; + +typedef struct player_request_return_outdoor_s { + int prev_main_index; + f32 time; + f32 _08; +} mPlayer_request_return_outdoor_c; + +typedef struct player_request_return_outdoor2_s { + int prev_main_index; + f32 time; + f32 _08; +} mPlayer_request_return_outdoor2_c; + +typedef struct player_request_wait_s { + f32 morph_speed; + f32 _04; + int flags; +} mPlayer_request_wait_c; + +typedef struct player_request_talk_s { + ACTOR* talk_actor; + int turn_flag; + f32 morph_speed; + int umbrella_flag; +} mPlayer_request_talk_c; + +typedef struct player_request_hold_s { + int ftr_no; + s16 angle_y; + xyz_t player_pos; + f32 morph_speed; + int flags; +} mPlayer_request_hold_c; + +typedef struct player_request_recieve_wait_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int on_surface_flag; +} mPlayer_request_recieve_wait_c; + +typedef struct player_request_give_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int mode; + int present_flag; + int on_surface_flag; +} mPlayer_request_give_c; + +typedef struct player_request_sitdown_s { + s16 angle; + xyz_t pos; + int ftrID; +} mPlayer_request_sitdown_c; + +typedef struct player_request_close_funriture_s { + int anim_idx; +} mPlayer_request_close_furniture_c; + +typedef struct player_request_lie_bed_s { + int direction; + s16 angle; + xyz_t wpos; + int flags; +} mPlayer_request_lie_bed_c; + +typedef struct player_request_door_s { + s16 angle_y; + xyz_t player_pos; + int type; + u32 label; +} mPlayer_request_door_c; + +typedef struct player_request_outdoor_s { + int type; + int is_start_demo; +} mPlayer_request_outdoor_c; + +typedef struct player_request_demo_wait_s { + int umbrella_flag; + u32 label; +} mPlayer_request_demo_wait_c; + +typedef struct player_request_demo_walk_s { + f32 goal_pos_x; + f32 goal_pos_z; + f32 speed; + int wait_flag; +} mPlayer_request_demo_walk_c; + +typedef struct player_request_demo_geton_train_s { + s16 angle_y; + xyz_t player_pos; +} mPlayer_request_demo_geton_train_c; + +typedef struct player_request_demo_getoff_train_s { + s16 angle_y; + xyz_t player_pos; +} mPlayer_request_demo_getoff_train_c; + +typedef struct player_request_rotate_octagon_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + xyz_t pos; + s16 angle_y; +} mPlayer_request_rotate_octagon_c; + +typedef struct player_request_wash_car_s { + xyz_t car_pos; + xyz_t orig_pos; + s16 orig_angle_y; + ACTOR* parent_actor; +} mPlayer_request_wash_car_c; + +typedef struct player_request_throw_money_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_throw_money_c; + +typedef struct player_request_pray_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_pray_c; + +typedef struct player_request_mail_jump_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_mail_jump_c; + +typedef struct player_request_shock_s { + f32 start_time; + s16 target_angle_y; + u8 bee_chase_bgm_flag; + int axe_flag; +} mPlayer_request_shock_c; + +typedef struct player_request_push_snowball_s { + u32 label; + int wade_flag; +} mPlayer_request_push_snowball_c; + +typedef struct player_request_stung_mosquito_s { + u32 label; +} mPlayer_request_stung_mosquito_c; + +typedef struct player_request_notice_mosquito_s { + u32 label; +} mPlayer_request_notice_mosquito_c; + +typedef struct player_request_switch_on_lighthouse_s { + s16 angle_y; + xyz_t pos; +} mPlayer_request_switch_on_lighthouse_c; + +typedef struct player_request_demo_geton_boat_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_demo_geton_boat_c; + +typedef struct player_request_demo_getoff_boat_standup_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_demo_getoff_boat_standup_c; + +typedef struct player_request_demo_get_golden_item_s { + int type; +} mPlayer_request_demo_get_golden_item_c; + +typedef struct player_request_walk_s { + xyz_t pos; + f32 morph_speed; + int flags; +} mPlayer_request_walk_c; + +typedef struct player_request_run_s { + f32 morph_speed; + int flags; +} mPlayer_request_run_c; + +typedef struct player_request_dash_s { + f32 morph_speed; + int flags; +} mPlayer_request_dash_c; + +typedef struct player_request_turn_dash_s { + s16 target_angle_y; +} mPlayer_request_turn_dash_c; + +typedef struct player_request_fall_s { + f32 morph_speed; + int flags; +} mPlayer_request_fall_c; + +typedef struct player_request_wade_s { + int dir; +} mPlayer_request_wade_c; + +typedef struct player_request_wade_snowball_s { + int dir; + xyz_t snowball_dist; + u32 label; +} mPlayer_request_wade_snowball_c; + +typedef struct player_request_push_s { + int ftrNo; + s16 angle_y; + xyz_t player_pos; +} mPlayer_request_push_c; + +typedef struct player_request_pull_s { + int ftrNo; + s16 angle_y; + xyz_t start_pos; + xyz_t end_pos; + xyz_t ofs; +} mPlayer_request_pull_c; + +typedef struct player_request_rotate_furniture_s { + int ftrNo; + s16 angle_y; + xyz_t player_pos; + int rotate_type; +} mPlayer_request_rotate_furniture_c; + +typedef struct player_request_open_furniture_s { + s16 angle_y; + xyz_t player_pos; + int anim_idx; +} mPlayer_request_open_furniture_c; + +typedef struct player_request_wait_open_furniture_s { + int anim_idx; +} mPlayer_request_wait_open_furniture_c; + +typedef struct player_request_wait_close_furniture_s { + int anim_idx; +} mPlayer_request_wait_close_furniture_c; + +typedef struct player_request_roll_bed_s { + int move_dir; +} mPlayer_request_roll_bed_c; + +typedef struct player_request_standup_bed_s { + int move_dir; +} mPlayer_request_standup_bed_c; + +typedef struct player_request_pickup_s { + int inv_slot; + mActor_name_t item; + xyz_t target_pos; + xyz_t item_pos; + int flag; +} mPlayer_request_pickup_c; + +typedef struct player_request_pickup_jump_s { + int inv_slot; + mActor_name_t item; + xyz_t item_pos; + int ftr_flag; + int knife_and_fork_flag; +} mPlayer_request_pickup_jump_c; + +typedef struct player_request_pickup_furniture_s { + int inv_slot; + mActor_name_t item; + xyz_t item_pos; +} mPlayer_request_pickup_furniture_c; + +typedef struct player_request_pickup_exchange_s { + xyz_t target_pos; + mActor_name_t item; +} mPlayer_request_pickup_exchange_c; + +typedef struct player_request_sitdown_wait_s { + int ftrID; +} mPlayer_request_sitdown_wait_c; + +typedef struct player_request_standup_s { + int ftrID; +} mPlayer_request_standup_c; + +typedef struct player_request_swing_axe_s { + xyz_t goal_pos; + mActor_name_t hit_item; + u16 axe_damage_no; + int hit_ut_x; + int hit_ut_z; + int break_flag; +} mPlayer_request_swing_axe_c; + +typedef struct player_request_reflect_axe_s { + xyz_t goal_pos; + mActor_name_t hit_item; + u16 axe_damage_no; + ACTOR* hit_actor; + int _14; + int break_flag; +} mPlayer_request_reflect_axe_c; + +typedef struct player_request_notice_net_s { + int already_collected; +} mPlayer_request_notice_net_c; + +typedef struct player_request_putaway_net_s { + int exchange_flag; +} mPlayer_request_putaway_net_c; + +typedef struct player_request_cast_rod_s { + xyz_t bobber_target_pos; +} mPlayer_request_cast_rod_c; + +typedef struct player_request_notice_rod_s { + s16 angle_y; +} mPlayer_request_notice_rod_c; + +typedef struct player_request_putaway_rod_s { + s16 angle_y; + int exchange_flag; +} mPlayer_request_putaway_rod_c; + +typedef struct player_request_dig_scoop_s { + xyz_t dig_pos; + mActor_name_t item; +} mPlayer_request_dig_scoop_c; + +typedef struct player_request_fill_scoop_s { + xyz_t dig_pos; +} mPlayer_request_fill_scoop_c; + +typedef struct player_request_reflect_scoop_s { + xyz_t dig_pos; + mActor_name_t item; + ACTOR* hit_actor; +} mPlayer_request_reflect_scoop_c; + +typedef struct player_request_putin_scoop_s { + xyz_t dig_pos; + mActor_name_t item; + int get_gold_scoop_flag; +} mPlayer_request_putin_scoop_c; + +typedef struct player_request_putaway_scoop_s { + xyz_t dig_pos; + mActor_name_t item; + int _10; +} mPlayer_request_putaway_scoop_c; + +typedef struct player_request_get_scoop_s { + xyz_t dig_pos; + mActor_name_t item; +} mPlayer_request_get_scoop_c; + +typedef struct player_request_recieve_stretch_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int on_surface_flag; +} mPlayer_request_recieve_stretch_c; + +typedef struct player_request_recieve_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int on_surface_flag; +} mPlayer_request_recieve_c; + +typedef struct player_request_recieve_putaway_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int on_surface_flag; +} mPlayer_request_recieve_putaway_c; + +typedef struct player_request_give_wait_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t item; + int on_surface_flag; // TODO: verify this flag is correct +} mPlayer_request_give_wait_c; + +typedef struct player_request_demo_wade_s { + int dir; +} mPlayer_request_demo_wade_c; + +typedef struct player_request_release_creature_gyoei_s { + s16 angle_y; + s16 _02; +} mPlayer_request_release_creature_gyoei_c; + +typedef struct player_request_release_creature_insect_s { + xyz_t pos; + int type; +} mPlayer_request_release_creature_insect_c; + +typedef struct player_request_release_creature_balloon_s { + int balloon_type; +} mPlayer_request_release_creature_balloon_c; + +typedef union { + mPlayer_request_release_creature_gyoei_c gyoei; + mPlayer_request_release_creature_insect_c insect; + mPlayer_request_release_creature_balloon_c balloon; +} mPlayer_request_release_creature_u; + +typedef struct player_request_release_creature_s { + int type; + int gold_scoop_flag; + mPlayer_request_release_creature_u data; + ACTOR* actor; +} mPlayer_request_release_creature_c; + +typedef struct player_request_shake_tree_s { + xyz_t pos; + mActor_name_t item; + int ut_x; + int ut_z; +} mPlayer_request_shake_tree_c; + +typedef struct player_request_ready_pitfall_s { + xyz_t pos; +} mPlayer_request_ready_pitfall_c; + +typedef struct player_request_remove_grass_s { + xyz_t grass_pos; + xyz_t target_pos; +} mPlayer_request_remove_grass_c; + +typedef struct player_request_change_cloth_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t cloth_item; + u16 cloth_idx; + int try_on_flag; +} mPlayer_request_change_cloth_c; + +typedef struct player_request_swing_fan_s { + int start_swing; +} mPlayer_request_swing_fan_c; + +typedef struct player_request_radio_exercise_s { + int cmd; + f32 speed; +} mPlayer_request_radio_exercise_c; + +typedef struct player_request_demo_geton_boat_wade_s { + int dir; + f32 border_ofs; +} mPlayer_request_demo_geton_boat_wade_c; + +typedef struct player_request_demo_getoff_boat_s { + xyz_t pos; + s16 angle_y; +} mPlayer_request_demo_getoff_boat_c; + typedef struct player_request_give_from_submenu_s { xyz_t unused; // assumed based on size mActor_name_t item; @@ -522,84 +1292,866 @@ typedef struct player_request_putin_scoop_from_submenu_s { int got_gold_scoop; } mPlayer_request_putin_scoop_from_submenu_data_c; -typedef struct { - int type; - int got_gold_scoop; - s16 angle_y; - s16 item; -} mPlayer_request_release_creature_gyoei_from_submenu_c; - -typedef struct { - int type; - int got_gold_scoop; - xyz_t wpos; - int insect_type; -} mPlayer_request_release_creature_insect_from_submenu_c; - -typedef struct { - int type; - int got_gold_scoop; - int balloon_shape_type; -} mPlayer_request_release_creature_balloon_from_submenu_c; - typedef struct { int _0; ACTOR* speak_actor; } mPlayer_request_demo_wait_from_submenu_c; -typedef struct { - int direct; - s16 angle; - xyz_t wpos; - int ftr_name; -} mPlayer_request_lie_bed_c; +typedef union { + mPlayer_request_give_from_submenu_c give_from_submenu; + mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu; + mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu; + mPlayer_request_return_demo_c return_demo; + mPlayer_request_wait_c wait; + mPlayer_request_talk_c talk; + mPlayer_request_hold_c hold; + mPlayer_request_recieve_wait_c recieve_wait; + mPlayer_request_give_c give; + mPlayer_request_sitdown_c sitdown; + mPlayer_request_close_furniture_c close_furniture; + mPlayer_request_lie_bed_c lie_bed; + mPlayer_request_door_c door; + mPlayer_request_outdoor_c outdoor; + mPlayer_request_demo_wait_c demo_wait; + mPlayer_request_demo_walk_c demo_walk; + mPlayer_request_demo_geton_train_c demo_geton_train; + mPlayer_request_demo_getoff_train_c demo_getoff_train; + mPlayer_request_rotate_octagon_c rotate_octagon; + mPlayer_request_wash_car_c wash_car; + mPlayer_request_throw_money_c throw_money; + mPlayer_request_pray_c pray; + mPlayer_request_mail_jump_c mail_jump; + mPlayer_request_shock_c shock; + mPlayer_request_push_snowball_c push_snowball; + mPlayer_request_stung_mosquito_c stung_mosquito; + mPlayer_request_notice_mosquito_c notice_mosquito; + mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse; + mPlayer_request_demo_geton_boat_c demo_geton_boat; + mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup; + mPlayer_request_demo_get_golden_item_c demo_get_golden_item; + mPlayer_request_walk_c walk; + mPlayer_request_run_c run; + mPlayer_request_dash_c dash; + mPlayer_request_turn_dash_c turn_dash; + mPlayer_request_fall_c fall; + mPlayer_request_wade_c wade; + mPlayer_request_wade_snowball_c wade_snowball; + mPlayer_request_push_c push; + mPlayer_request_pull_c pull; + mPlayer_request_rotate_furniture_c rotate_furniture; + mPlayer_request_open_furniture_c open_furniture; + mPlayer_request_wait_open_furniture_c wait_open_furniture; + mPlayer_request_wait_close_furniture_c wait_close_furniture; + mPlayer_request_roll_bed_c roll_bed; + mPlayer_request_standup_bed_c standup_bed; + mPlayer_request_pickup_c pickup; + mPlayer_request_pickup_jump_c pickup_jump; + mPlayer_request_pickup_furniture_c pickup_furniture; + mPlayer_request_pickup_exchange_c pickup_exchange; + mPlayer_request_sitdown_wait_c sitdown_wait; + mPlayer_request_standup_c standup; + mPlayer_request_swing_axe_c swing_axe; + mPlayer_request_reflect_axe_c reflect_axe; + mPlayer_request_notice_net_c notice_net; + mPlayer_request_putaway_net_c putaway_net; + mPlayer_request_cast_rod_c cast_rod; + mPlayer_request_notice_rod_c notice_rod; + mPlayer_request_putaway_rod_c putaway_rod; + mPlayer_request_dig_scoop_c dig_scoop; + mPlayer_request_fill_scoop_c fill_scoop; + mPlayer_request_reflect_scoop_c reflect_scoop; + mPlayer_request_putin_scoop_c putin_scoop; + mPlayer_request_putaway_scoop_c putaway_scoop; + mPlayer_request_get_scoop_c get_scoop; + mPlayer_request_recieve_stretch_c recieve_stretch; + mPlayer_request_recieve_c recieve; + mPlayer_request_recieve_putaway_c recieve_putaway; + mPlayer_request_give_wait_c give_wait; + mPlayer_request_demo_wade_c demo_wade; + mPlayer_request_release_creature_c release_creature; + mPlayer_request_shake_tree_c shake_tree; + mPlayer_request_ready_pitfall_c ready_pitfall; + mPlayer_request_remove_grass_c remove_grass; + mPlayer_request_change_cloth_c change_cloth; + mPlayer_request_swing_fan_c swing_fan; + mPlayer_request_radio_exercise_c radio_exercise; + mPlayer_request_demo_geton_boat_wade_c demo_geton_boat_wade; + mPlayer_request_demo_getoff_boat_c demo_getoff_boat; + u64 align; // TODO: is this necessary? it makes the size correct for this and mPlayer_request_main_data +} mPlayer_request_backup_u; + +typedef struct player_request_takeout_item_s { + mPlayer_request_backup_u request_data; + int request_main_index; +} mPlayer_request_takeout_item_c; + +typedef struct player_request_putin_item_s { + mPlayer_request_backup_u request_data; + int request_main_index; +} mPlayer_request_putin_item_c; + +typedef struct player_request_knock_door_s { + mPlayer_request_backup_u request_data; + int request_main_index; + xyz_t pos; + s16 angle_y; +} mPlayer_request_knock_door_c; typedef union { mPlayer_request_give_from_submenu_c give_from_submenu; mPlayer_request_putin_scoop_from_submenu_data_c putin_scoop_from_submenu; - mPlayer_request_release_creature_gyoei_from_submenu_c release_creature_gyoei_from_submenu; - mPlayer_request_release_creature_insect_from_submenu_c release_creature_insect_from_submenu; - mPlayer_request_release_creature_balloon_from_submenu_c release_creature_balloon_from_submenu; mPlayer_request_demo_wait_from_submenu_c demo_wait_from_submenu; + mPlayer_request_return_demo_c return_demo; + mPlayer_request_return_outdoor_c return_outdoor; + mPlayer_request_return_outdoor2_c return_outdoor2; + mPlayer_request_wait_c wait; + mPlayer_request_talk_c talk; + mPlayer_request_hold_c hold; + mPlayer_request_recieve_wait_c recieve_wait; + mPlayer_request_give_c give; + mPlayer_request_sitdown_c sitdown; + mPlayer_request_close_furniture_c close_furniture; mPlayer_request_lie_bed_c lie_bed; - /* TODO: others */ - u8 force_size[72]; // TEMP + mPlayer_request_door_c door; + mPlayer_request_outdoor_c outdoor; + mPlayer_request_demo_wait_c demo_wait; + mPlayer_request_demo_walk_c demo_walk; + mPlayer_request_demo_geton_train_c demo_geton_train; + mPlayer_request_demo_getoff_train_c demo_getoff_train; + mPlayer_request_rotate_octagon_c rotate_octagon; + mPlayer_request_wash_car_c wash_car; + mPlayer_request_throw_money_c throw_money; + mPlayer_request_pray_c pray; + mPlayer_request_mail_jump_c mail_jump; + mPlayer_request_shock_c shock; + mPlayer_request_push_snowball_c push_snowball; + mPlayer_request_stung_mosquito_c stung_mosquito; + mPlayer_request_notice_mosquito_c notice_mosquito; + mPlayer_request_switch_on_lighthouse_c switch_on_lighthouse; + mPlayer_request_demo_geton_boat_c demo_geton_boat; + mPlayer_request_demo_getoff_boat_standup_c demo_getoff_boat_standup; + mPlayer_request_demo_get_golden_item_c demo_get_golden_item; + mPlayer_request_walk_c walk; + mPlayer_request_run_c run; + mPlayer_request_dash_c dash; + mPlayer_request_turn_dash_c turn_dash; + mPlayer_request_fall_c fall; + mPlayer_request_wade_c wade; + mPlayer_request_wade_snowball_c wade_snowball; + mPlayer_request_push_c push; + mPlayer_request_pull_c pull; + mPlayer_request_rotate_furniture_c rotate_furniture; + mPlayer_request_open_furniture_c open_furniture; + mPlayer_request_wait_open_furniture_c wait_open_furniture; + mPlayer_request_wait_close_furniture_c wait_close_furniture; + mPlayer_request_roll_bed_c roll_bed; + mPlayer_request_standup_bed_c standup_bed; + mPlayer_request_pickup_c pickup; + mPlayer_request_pickup_jump_c pickup_jump; + mPlayer_request_pickup_furniture_c pickup_furniture; + mPlayer_request_pickup_exchange_c pickup_exchange; + mPlayer_request_sitdown_wait_c sitdown_wait; + mPlayer_request_standup_c standup; + mPlayer_request_swing_axe_c swing_axe; + mPlayer_request_reflect_axe_c reflect_axe; + mPlayer_request_notice_net_c notice_net; + mPlayer_request_putaway_net_c putaway_net; + mPlayer_request_cast_rod_c cast_rod; + mPlayer_request_notice_rod_c notice_rod; + mPlayer_request_putaway_rod_c putaway_rod; + mPlayer_request_dig_scoop_c dig_scoop; + mPlayer_request_fill_scoop_c fill_scoop; + mPlayer_request_reflect_scoop_c reflect_scoop; + mPlayer_request_putin_scoop_c putin_scoop; + mPlayer_request_putaway_scoop_c putaway_scoop; + mPlayer_request_get_scoop_c get_scoop; + mPlayer_request_recieve_stretch_c recieve_stretch; + mPlayer_request_recieve_c recieve; + mPlayer_request_recieve_putaway_c recieve_putaway; + mPlayer_request_give_wait_c give_wait; + mPlayer_request_demo_wade_c demo_wade; + mPlayer_request_release_creature_c release_creature; + mPlayer_request_shake_tree_c shake_tree; + mPlayer_request_ready_pitfall_c ready_pitfall; + mPlayer_request_remove_grass_c remove_grass; + mPlayer_request_change_cloth_c change_cloth; + mPlayer_request_swing_fan_c swing_fan; + mPlayer_request_radio_exercise_c radio_exercise; + mPlayer_request_demo_geton_boat_wade_c demo_geton_boat_wade; + mPlayer_request_demo_getoff_boat_c demo_getoff_boat; + mPlayer_request_takeout_item_c takeout_item; + mPlayer_request_putin_item_c putin_item; + mPlayer_request_knock_door_c knock_door; + /* TODO: others? */ + // u8 force_size[72]; // TEMP } mPlayer_request_main_data; +/* Current main state data structs */ + +typedef struct player_main_intro_s { + f32 timer; +} mPlayer_main_intro_c; + +typedef struct player_main_return_demo_s { + f32 timer; + f32 max_timer; + int prev_main_index; +} mPlayer_main_return_demo_c; + +typedef struct player_main_return_outdoor_s { + f32 timer; + f32 max_timer; + int prev_main_index; +} mPlayer_main_return_outdoor_c; + +typedef struct player_main_return_outdoor2_s { + f32 timer; + f32 max_timer; + int prev_main_index; +} mPlayer_main_return_outdoor2_c; + +typedef struct player_main_wait_s { + int radio_exercise_command; +} mPlayer_main_wait_c; + +typedef struct player_main_door_s { + u32 label; +} mPlayer_main_door_c; + +typedef struct player_main_outdoor_s { + int is_demo; +} mPlayer_main_outdoor_c; + +typedef struct player_main_hold_s { + int ftr_no; + s16 angle_y; + xyz_t player_pos; + int flags; +} mPlayer_main_hold_c; + +typedef struct player_main_push_s { + int ftr_no; +} mPlayer_main_push_c; + +typedef struct player_main_pull_s { + int ftr_no; + xyz_t start_pos; + xyz_t ofs; + f32 timer; +} mPlayer_main_pull_c; + +typedef struct player_main_rotate_furniture_s { + int ftr_no; + xyz_t pos; + int _10; + int rotate_type; +} mPlayer_main_rotate_furniture_c; + +typedef struct player_main_open_furniture_s { + s16 angle_y; + xyz_t player_pos; + int anim_idx; +} mPlayer_main_open_furniture_c; + +typedef struct player_main_lie_bed_s { + int flags; +} mPlayer_main_lie_bed_c; + +typedef struct player_main_wait_bed_s { + int flags; +} mPlayer_main_wait_bed_c; + +typedef struct player_main_sitdown_s { + int ftrID; +} mPlayer_main_sitdown_c; + +typedef struct player_main_sitdown_wait_s { + int ftrID; +} mPlayer_main_sitdown_wait_c; + +typedef struct player_main_wade_s { + int dir; + xyz_t start_pos; + xyz_t end_pos; + f32 timer; +} mPlayer_main_wade_c; + +typedef struct player_main_pickup_s { + xyz_t target_pos; + xyz_t item_pos; + xyz_t item_offset; + f32 scale; + f32 timer; + mActor_name_t item; + int exchange_flag; + int signboard_flag; +} mPlayer_main_pickup_c; + +typedef struct player_main_pickup_jump_s { + xyz_t target_pos; + xyz_t item_pos; + xyz_t item_offset; + f32 scale; + mActor_name_t item; + int ftr_flag; + int exchange_flag; +} mPlayer_main_pickup_jump_c; + +typedef struct player_main_pickup_furniture_s { + xyz_t target_pos; + xyz_t item_pos; + xyz_t item_offset; + f32 scale; + mActor_name_t item; + int exchange_flag; +} mPlayer_main_pickup_furniture_c; + +typedef struct player_main_pickup_exchange_s { + xyz_t target_pos; + mActor_name_t item; + int msg_mode; + int submenu_flag; +} mPlayer_main_pickup_exchange_c; + +typedef struct player_main_axe_common_s { + /* 0x00 */ xyz_t target_pos; + /* 0x0C */ mActor_name_t item; + /* 0x0E */ u16 axe_damage_no; +} mPlayer_main_axe_common_c; + +typedef struct player_main_swing_axe_s { + /* 0x00 */ mPlayer_main_axe_common_c axe_common; + /* 0x10 */ int tree_ut_x; + /* 0x14 */ int tree_ut_z; + /* 0x18 */ int bee_flag; + /* 0x1C */ s16 bee_angle_y; + /* 0x20 */ int bee_counter; +} mPlayer_main_swing_axe_c; + +typedef struct player_main_reflect_axe_s { + /* 0x00 */ mPlayer_main_axe_common_c axe_common; + /* 0x10 */ ACTOR* reflect_actor_p; +} mPlayer_main_reflect_axe_c; + +typedef union player_main_axe_u { + mPlayer_main_swing_axe_c swing_axe; + mPlayer_main_reflect_axe_c reflect_axe; +} mPlayer_main_axe_u; + +typedef struct player_main_broken_axe_s { + mPlayer_main_axe_u axe; + int break_type; /* mPlayer_AXE_BREAK_FROM_* */ + f32 _28; + int _2C; +} mPlayer_main_broken_axe_c; + +typedef struct player_main_slip_net_s { + f32 _00; +} mPlayer_main_slip_net_c; + +typedef struct player_main_relax_rod_s { + int bee_flag; + int mosquito_flag; +} mPlayer_main_relax_rod_c; + +typedef struct player_main_dig_scoop_s { + xyz_t target_pos; + mActor_name_t item; +} mPlayer_main_dig_scoop_c; + +typedef struct player_main_fill_scoop_s { + xyz_t target_pos; +} mPlayer_main_fill_scoop_c; + +typedef struct player_main_reflect_scoop_s { + xyz_t target_pos; + mActor_name_t item; + ACTOR* reflect_actor_p; +} mPlayer_main_reflect_scoop_c; + +typedef struct player_main_get_scoop_s { + xyz_t target_pos; + mActor_name_t item; + f32 scale; + int success_flag; + f32 timer; + int msg_mode; + int submenu_flag; +} mPlayer_main_get_scoop_c; + +typedef struct player_main_putaway_scoop_s { + xyz_t target_pos; + mActor_name_t item; + f32 scale; + int submenu_flag; +} mPlayer_main_putaway_scoop_c; + +typedef struct player_main_putin_scoop_s { + xyz_t target_pos; + mActor_name_t item; + int get_gold_scoop_flag; // TODO: check this +} mPlayer_main_putin_scoop_c; + +typedef struct player_main_talk_s { + ACTOR* talk_actor_p; + int turn_flag; + int feel_type; +} mPlayer_main_talk_c; + +typedef struct player_main_recieve_wait_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + mActor_name_t item; + int surface_flag; +} mPlayer_main_recieve_wait_c; + +typedef struct player_main_recieve_stretch_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + mActor_name_t item; + int surface_flag; +} mPlayer_main_recieve_stretch_c; + +typedef struct player_main_recieve_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + mActor_name_t item; + int surface_flag; +} mPlayer_main_recieve_c; + +typedef struct player_main_recieve_putaway_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + int surface_flag; +} mPlayer_main_recieve_putaway_c; + +typedef struct player_main_give_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + mActor_name_t item; + int surface_flag; +} mPlayer_main_give_c; + +typedef struct player_main_give_wait_s { + ACTOR* talk_actor_p; + int turn_flag; + int ret_main_index; + int surface_flag; +} mPlayer_main_give_wait_c; + +typedef struct player_main_takeout_item_s { + mPlayer_request_takeout_item_c back_request_data; + f32 timer; +} mPlayer_main_takeout_item_c; + +typedef struct player_main_putin_item_s { + mPlayer_request_putin_item_c back_request_data; + f32 timer; +} mPlayer_main_putin_item_c; + +typedef struct player_main_demo_wait_s { + int effect_id; + u32 label; +} mPlayer_main_demo_wait_c; + +typedef struct player_main_release_creature_s { + int type; + int golden_scoop_flag; + ACTOR* release_actor_p; + f32 timer; + int actor_birth_flag; +} mPlayer_main_release_creature_c; + +typedef struct player_main_wash_car_s { + int anime_idx; + int change_anime_idx; + int counter; + xyz_t ret_pos; + s16 ret_angle_y; + ACTOR* control_actor; + int ret_order; + int effect_flag; +} mPlayer_main_wash_car_c; + +typedef struct player_main_rotate_octagon_s { + ACTOR* talk_actor_p; + int turn_flag; + int return_main_index; +} mPlayer_main_rotate_octagon_c; + +typedef struct player_main_swing_net_s { + f32 swing_timer; +} mPlayer_main_swing_net_c; + +typedef struct player_main_pull_net_s { + f32 timer; + int already_collected; +} mPlayer_main_pull_net_c; + +typedef struct player_main_stop_net_s { + int _00; +} mPlayer_main_stop_net_c; + +typedef struct player_main_notice_net_s { + int state; + int not_full_pocket; + int exchange_flag; + int already_collected; + int end_effect_flag; +} mPlayer_main_notice_net_c; + +typedef struct player_main_putaway_net_s { + int exchange_flag; +} mPlayer_main_putaway_net_c; + +typedef struct player_main_cast_rod_s { + xyz_t bobber_target_pos; +} mPlayer_main_cast_rod_c; + +typedef struct player_main_notice_rod_s { + f32 timer; + int state; + int not_full_pocket; + s16 angle_y; + int exchange_flag; + int already_collected; + int end_effect_flag; +} mPlayer_main_notice_rod_c; + +typedef struct player_main_putaway_rod_s { + f32 timer; + s16 angle_y; + int exchange_flag; +} mPlayer_main_putaway_rod_c; + +typedef struct player_main_demo_wade_s { + int dir; + xyz_t start_pos; + xyz_t end_pos; + f32 timer; +} mPlayer_main_demo_wade_c; + +typedef struct player_main_shake_tree_s { + xyz_t target_pos; + mActor_name_t item; + int tree_ut_x; + int tree_ut_z; + int bee_flag; + s16 bee_angle_y; + int bee_spawn_timer; +} mPlayer_main_shake_tree_c; + +typedef struct player_main_struggle_pitfall_s { + f32 button_presses; + f32 target_anim_speed; +} mPlayer_main_struggle_pitfall_c; + +typedef struct player_main_stung_bee_s { + f32 timer; +} mPlayer_main_stung_bee_c; + +typedef struct player_main_notice_bee_s { + f32 timer; + int msg_mode; +} mPlayer_main_notice_bee_c; + +typedef struct player_main_remove_grass_s { + xyz_t grass_pos; + xyz_t target_pos; +} mPlayer_main_remove_grass_c; + +typedef struct player_main_shock_s { + f32 start_time; + s16 target_angle_y; + f32 timer; + f32 end_time; + s8 bee_chase_bgm_flag; + int axe_flag; + int bgm_stop_flag; +} mPlayer_main_shock_c; + +typedef struct player_main_knock_door_s { + mPlayer_request_knock_door_c request_data; +} mPlayer_main_knock_door_c; + +typedef struct player_main_change_netcloth_s { + ACTOR* talk_actor; + int turn_flag; + int prev_main_index; + mActor_name_t cloth_item; + u16 cloth_idx; +} mPlayer_main_change_cloth_c; + +typedef struct player_main_push_snowball_s { + u32 label; +} mPlayer_main_push_snowball_c; + +typedef struct player_main_complete_payment_s { + f32 timer; + int msg_mode; +} mPlayer_main_complete_payment_c; + +typedef struct player_main_fail_emu_s { + f32 timer; + int msg_mode; +} mPlayer_main_fail_emu_c; + +typedef struct player_main_stung_mosquito_s { + u32 label; +} mPlayer_main_stung_mosquito_c; + +typedef struct player_main_notice_mosquito_s { + u32 label; + f32 timer; + int msg_mode; +} mPlayer_main_notice_mosquito_c; + +typedef struct player_main_radio_exercise_s { + int cmd; + int _04; + int _08; + int _0C; +} mPlayer_main_radio_exercise_c; + +typedef struct player_main_wade_snowball_s { + int dir; + xyz_t start_pos; + xyz_t end_pos; + f32 timer; + xyz_t snowball_dist; + u32 snowball_label; +} mPlayer_main_wade_snowball_c; + +typedef struct player_main_demo_geton_boat_wade_s { + int dir; + xyz_t start_pos; + xyz_t end_pos; + f32 timer; +} mPlayer_main_demo_geton_boat_wade_c; + +typedef struct player_main_demo_geton_boat_sitdown_s { + s16 angle_z; +} mPlayer_main_demo_geton_boat_sitdown_c; + +typedef struct player_main_demo_getoff_boat_standup_s { + xyz_t pos; + s16 angle_y; + s16 angle_z; +} mPlayer_main_demo_getoff_boat_standup_c; + +typedef struct player_main_demo_get_golden_item_s { + f32 timer; + int msg_mode; + int type; +} mPlayer_main_demo_get_golden_item_c; + +typedef struct player_main_demo_get_golden_axe_wait_s { + f32 timer; +} mPlayer_main_demo_get_golden_axe_wait_c; + +typedef struct player_main_uki_s { + xyz_t cast_goal_point; +} mPlayer_main_uki_c; + +typedef struct player_main_putaway_uki_s { + f32 unk0; +} mPlayer_main_putaway_uki_c; + +typedef struct player_main_balloon_s { + int balloon_shape_type; +} mPlayer_main_balloon_c; + +typedef struct player_main_turn_dash_s { + s16 target_angle_y; +} mPlayer_main_turn_dash_c; + +typedef struct player_main_fall_s { + f32 morph_speed; + int flags; +} mPlayer_main_turn_fall_c; + +typedef union { + mPlayer_main_intro_c intro; + mPlayer_main_return_demo_c return_demo; + mPlayer_main_return_outdoor_c return_outdoor; + mPlayer_main_return_outdoor2_c return_outdoor2; + mPlayer_main_wait_c wait; + mPlayer_main_door_c door; + mPlayer_main_outdoor_c outdoor; + mPlayer_main_hold_c hold; + mPlayer_main_push_c push; + mPlayer_main_pull_c pull; + mPlayer_main_rotate_furniture_c rotate_furniture; + mPlayer_main_open_furniture_c open_furniture; + mPlayer_main_lie_bed_c lie_bed; + mPlayer_main_wait_bed_c wait_bed; + mPlayer_main_sitdown_c sitdown; + mPlayer_main_sitdown_wait_c sitdown_wait; + mPlayer_main_wade_c wade; + mPlayer_main_pickup_c pickup; + mPlayer_main_pickup_jump_c pickup_jump; + mPlayer_main_pickup_furniture_c pickup_furniture; + mPlayer_main_pickup_exchange_c pickup_exchange; + mPlayer_main_swing_axe_c swing_axe; + mPlayer_main_reflect_axe_c reflect_axe; + mPlayer_main_broken_axe_c broken_axe; + mPlayer_main_swing_net_c swing_net; + mPlayer_main_pull_net_c pull_net; + mPlayer_main_stop_net_c stop_net; + mPlayer_main_notice_net_c notice_net; + mPlayer_main_putaway_net_c putaway_net; + mPlayer_main_slip_net_c slip_net; + mPlayer_main_cast_rod_c cast_rod; + mPlayer_main_relax_rod_c relax_rod; + mPlayer_main_notice_rod_c notice_rod; + mPlayer_main_putaway_rod_c putaway_rod; + mPlayer_main_dig_scoop_c dig_scoop; + mPlayer_main_fill_scoop_c fill_scoop; + mPlayer_main_reflect_scoop_c reflect_scoop; + mPlayer_main_get_scoop_c get_scoop; + mPlayer_main_putaway_scoop_c putaway_scoop; + mPlayer_main_putin_scoop_c putin_scoop; + mPlayer_main_demo_wade_c demo_wade; + mPlayer_main_talk_c talk; + mPlayer_main_recieve_wait_c recieve_wait; + mPlayer_main_recieve_stretch_c recieve_stretch; + mPlayer_main_recieve_c recieve; + mPlayer_main_recieve_putaway_c recieve_putaway; + mPlayer_main_give_c give; + mPlayer_main_give_wait_c give_wait; + mPlayer_main_takeout_item_c takeout_item; + mPlayer_main_putin_item_c putin_item; + mPlayer_main_demo_wait_c demo_wait; + mPlayer_main_release_creature_c release_creature; + mPlayer_main_wash_car_c wash_car; + mPlayer_main_rotate_octagon_c rotate_octagon; + mPlayer_main_shake_tree_c shake_tree; + mPlayer_main_struggle_pitfall_c struggle_pitfall; + mPlayer_main_stung_bee_c stung_bee; + mPlayer_main_notice_bee_c notice_bee; + mPlayer_main_remove_grass_c remove_grass; + mPlayer_main_shock_c shock; + mPlayer_main_knock_door_c knock_door; + mPlayer_main_change_cloth_c change_cloth; + mPlayer_main_push_snowball_c push_snowball; + mPlayer_main_complete_payment_c complete_payment; + mPlayer_main_fail_emu_c fail_emu; + mPlayer_main_stung_mosquito_c stung_mosquito; + mPlayer_main_notice_mosquito_c notice_mosquito; + mPlayer_main_radio_exercise_c radio_exercise; + mPlayer_main_wade_snowball_c wade_snowball; + mPlayer_main_demo_geton_boat_wade_c demo_geton_boat_wade; + mPlayer_main_demo_geton_boat_sitdown_c demo_geton_boat_sitdown; + mPlayer_main_demo_getoff_boat_standup_c demo_getoff_boat_standup; + mPlayer_main_demo_get_golden_item_c demo_get_golden_item; + mPlayer_main_demo_get_golden_axe_wait_c demo_get_golden_axe_wait; + mPlayer_main_uki_c uki; + mPlayer_main_putaway_uki_c putaway_uki; + mPlayer_main_balloon_c balloon; + mPlayer_main_turn_dash_c turn_dash; + mPlayer_main_turn_fall_c fall; + u8 force_size[72]; // TEMP +} mPlayer_main_data; + typedef struct { int requested_main_index; int requested_index_pending; mPlayer_request_main_data request_main_data; } mPlayer_change_data_from_submenu_c; +typedef struct controller_data_s { + MCON mcon; + s8 trigger_btn_a; + s8 btn_a; + s8 trigger_btn_b; + s8 btn_b; + mActor_name_t equipped_item; +} mPlayer_Controller_Data_c; + +typedef struct player_eye_pattern_s { + s16 pattern; + s16 timer; +} mPlayer_eye_pattern_c; + /* sizeof(struct player_actor_s) == 0x13A8 */ struct player_actor_s { /* 0x0000 */ ACTOR actor_class; /* 0x0174 */ cKF_SkeletonInfo_R_c keyframe0; /* 0x01E4 */ cKF_SkeletonInfo_R_c keyframe1; - /* 0x0252 */ s_xyz joint_data[27]; - /* 0x02F4 */ s_xyz morph_data[27]; + /* 0x0252 */ s_xyz joint_data[mPlayer_JOINT_NUM + 1]; + /* 0x02F4 */ s_xyz morph_data[mPlayer_JOINT_NUM + 1]; /* 0x0398 */ Mtx work_mtx[2][13]; /* swapped between frames */ /* 0x0A18 */ cKF_SkeletonInfo_R_c item_keyframe; /* for item animations */ /* 0x0A88 */ s_xyz item_joint_data[8]; /* 0x0AB8 */ s_xyz item_morph_data[8]; /* 0x0AE8 */ Mtx item_work_mtx[2][4]; /* swapped between frames */ - /* 0x0CE8 */ s16 eye_pattern_normal; - /* 0x0CEA */ s16 eye_pattern_normal_timer; + /* 0x0CE8 */ mPlayer_eye_pattern_c eye_pattern_normal; /* 0x0CEC */ int blink_count; /* 0x0CF0 */ int eye_tex_idx; /* 0x0CF4 */ int mouth_tex_idx; /* 0x0CF8 */ int now_main_index; /* 0x0CFC */ int prev_main_index; /* 0x0D00 */ int changed_main_index; - /* 0x0D04 */ int item_main_index; + /* 0x0D04 */ int now_item_main_index; /* 0x0D08 */ int requested_main_index; /* 0x0D0C */ int requested_main_index_priority; /* 0x0D10 */ int requested_main_index_changed; /* 0x0D14 */ int settled_requested_main_index_priority; - /* 0x0D18 */ u8 main_index_data[72]; // TODO: Union of many types... - /* 0x0D60 */ u8 requested_main_index_data[72]; // TODO: Union of many types... - /* 0x0DA8 */ u8 _0DA8[0x1010 - 0x0DA8]; /* TODO: finish */ + /* 0x0D18 */ mPlayer_main_data main_data; // TODO: Union of many types... + /* 0x0D60 */ mPlayer_request_main_data requested_main_index_data; // Union of many types... + /* 0x0DA8 */ u8 _0DA8[0x0DB4 - 0x0DA8]; /* unused */ + /* 0x0DB4 */ int animation0_idx; + /* 0x0DB8 */ int animation1_idx; + /* 0x0DBC */ int part_table_idx; + /* 0x0DC0 */ int _0DC0; + /* 0x0DC4 */ int item_shape_addr[2]; + /* 0x0DCC */ int item_anim_addr[2]; + /* 0x0DD4 */ int item_shape_segaddr[2]; + /* 0x0DDC */ int item_anim_segaddr[2]; + /* 0x0DE4 */ int item_shape_type[2]; + /* 0x0DEC */ int item_animation_idx[2]; + /* 0x0DF4 */ int item_bank_idx; + /* 0x0DF8 */ f32 item_scale; + /* 0x0DFC */ xyz_t shape_angle_delta; + /* 0x0E08 */ xyz_t world_angle_delta; + /* 0x0E14 */ s_xyz old_shape_angle; + /* 0x0E1A */ s_xyz old_world_angle; + /* 0x0E20 */ xyz_t shadow_pos; + /* 0x0E2C */ xyz_t axe_pos; + /* 0x0E38 */ xyz_t net_pos; + /* 0x0E44 */ xyz_t net_top_col_pos; + /* 0x0E50 */ xyz_t net_bot_col_pos; + /* 0x0E5C */ s_xyz net_angle; + /* 0x0E64 */ ACTOR* umbrella_actor; + /* 0x0E68 */ int umbrella_state; + /* 0x0E6C */ s8 unable_hand_item_in_demo; + /* 0x0E6D */ s8 able_hand_all_item_in_demo; + /* 0x0E70 */ u32 item_net_catch_label; + /* 0x0E74 */ s8 item_net_catch_type; + /* 0x0E75 */ s8 item_net_has_catch; + /* 0x0E78 */ u32 item_net_catch_label_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; + /* 0x0E98 */ s8 item_net_catch_type_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; + /* 0x0EA0 */ xyz_t item_net_catch_pos_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; + /* 0x0F00 */ f32 item_net_catch_radius_request_table[mPlayer_NET_CATCH_TABLE_COUNT]; + /* 0x0F20 */ int item_net_catch_request_use_count; + /* 0x0F24 */ u32 item_net_catch_label_request_force; + /* 0x0F28 */ s8 item_net_catch_type_request_force; + /* 0x0F2C */ int item_net_catch_insect_idx; + /* 0x0F30 */ ACTOR* fishing_rod_actor_p; + /* 0x0F34 */ xyz_t item_rod_top_pos; + /* 0x0F40 */ xyz_t item_rod_virtual_top_pos; + /* 0x0F4C */ int item_rod_top_pos_set; + /* 0x0F50 */ s16 item_rod_angle_z; + /* 0x0F54 */ ClObjTris_c item_axe_tris; + /* 0x0F68 */ ClObjTrisElem_c item_axe_tris_elem_tbl[1]; + /* 0x0FAC */ ClObjTris_c item_net_tris; + /* 0x0FC0 */ ClObjTrisElem_c item_net_tris_elem_tbl[1]; + /* 0x1004 */ xyz_t scoop_pos; /* 0x1010 */ ClObjPipe_c col_pipe; /* 0x102C */ xyz_t head_pos; /* 0x1038 */ xyz_t feel_pos; @@ -608,11 +2160,76 @@ struct player_actor_s { /* 0x105C */ xyz_t left_hand_pos; /* 0x1068 */ MtxF right_hand_mtx; /* 0x10A8 */ MtxF left_hand_mtx; - /* 0x10E8 */ u8 _10E8[0x1270 - 0x10E8]; + /* 0x10E8 */ xyz_t right_foot_pos; + /* 0x10F4 */ xyz_t left_foot_pos; + /* 0x1100 */ s_xyz right_foot_angle; + /* 0x1106 */ s_xyz left_foot_angle; + /* 0x110C */ int draw_effect_idx; // subtract 1 for the effect id + /* 0x1110 */ s8 part_table[mPlayer_JOINT_NUM + 1]; + /* 0x112B */ s8 item_kind; + /* 0x112C */ int item_matrix_set; + /* 0x1130 */ xyz_t net_start_pos; + /* 0x113C */ xyz_t net_end_pos; + /* 0x1148 */ xyz_t other_item_start_pos; + /* 0x1154 */ xyz_t other_item_end_pos; + /* 0x1160 */ f32 other_item_move_dist; + /* 0x1164 */ s_xyz windmill_param; + /* 0x116A */ s_xyz windmill_angle; + /* 0x1170 */ int balloon_start_pos_set_flag; + /* 0x1174 */ ACTOR* balloon_actor; + /* 0x1178 */ s16 balloon_lean_angle; + /* 0x117A */ s_xyz balloon_angle; + /* 0x1180 */ f32 balloon_add_rot_z; + /* 0x1184 */ f32 balloon_anim_max_frame; + /* 0x1188 */ f32 balloon_anim_speed; + /* 0x118C */ int balloon_stop_movement_flag; + /* 0x1190 */ s16 ballon_add_rot_x; + /* 0x1192 */ s16 balloon_add_rot_x_counter; + /* 0x1194 */ f32 balloon_current_frame; + /* 0x1198 */ s8 address_able_display; + /* 0x119A */ s_xyz head_angle; + /* 0x11A0 */ xyz_t force_position; + /* 0x11AC */ s_xyz force_angle; + /* 0x11B2 */ u8 force_position_angle_flag; + /* 0x11B4 */ f32 shake_tree_timer[3]; + /* 0x11C0 */ int shake_tree_ut_x[3]; + /* 0x11CC */ int shake_tree_ut_z[3]; + /* 0x11D8 */ int shake_tree_little[3]; + /* 0x11E4 */ xyz_t pitfall_pos; + /* 0x11F0 */ int pitfall_flag; + /* 0x11F4 */ f32 ripple_timer; + /* 0x11F8 */ s8 ripple_foot_idx; // == 0: left, != 0: right + /* 0x11F9 */ s8 bgm_volume_mode; + /* 0x11FC */ int crash_snowball_for_wade; + /* 0x1200 */ xyz_t snowball_dist; + /* 0x120C */ int request_wade_dir; + /* 0x1210 */ u16 cancel_wade_timer; + /* 0x1214 */ int excute_cancel_wade; + /* 0x1218 */ f32 geton_boat_wade_border_start; + /* 0x121C */ u16 player_frame_counter; + /* 0x121E */ s8 bee_chase_bgm_flag; + /* 0x121F */ s8 status_for_bee; + /* 0x1220 */ u32 able_force_speak_label; + /* 0x1224 */ int player_sunburn_rankup; + /* 0x1228 */ int player_sunburn_rankdown; + /* 0x122C */ s8 radio_exercise_command_ring_buffer[mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE]; + /* 0x1234 */ s8 radio_exercise_ring_buffer_cmd_timer; + /* 0x1238 */ int radio_exercise_command_ring_buffer_index; + /* 0x123C */ int radio_exercise_continue_cmd_idx; + /* 0x1240 */ f32 radio_exercise_cmd_timer; + /* 0x1244 */ u32 old_sound_frame_counter; + /* 0x1248 */ s16 boat_angleZ; + /* 0x124C */ int change_color_request; + /* 0x1250 */ int change_color_flag; + /* 0x1254 */ f32 change_color_timer; + /* 0x1258 */ int change_color_rgb[3]; + /* 0x1264 */ int change_color_near; + /* 0x1268 */ int change_color_far; + /* 0x126C */ int refuse_pickup_knife_fork_flag; /* 0x1270 */ int (*request_main_invade_all_proc)(GAME*, int); /* 0x1274 */ int (*request_main_refuse_all_proc)(GAME*, int); /* 0x1278 */ int (*request_main_return_demo_all_proc)(GAME*, int, f32, int); - /* 0x127C */ int (*request_main_wait_all_proc)(GAME*, f32, int, int); + /* 0x127C */ int (*request_main_wait_all_proc)(GAME*, f32, f32, int, int); /* 0x1280 */ int (*request_main_talk_all_proc)(GAME*, ACTOR*, int, f32, int, int); /* 0x1284 */ int (*request_main_hold_all_proc)(GAME*, int, int, const xyz_t*, f32, int, int); /* 0x1288 */ int (*request_main_recieve_wait_all_proc)(GAME*, ACTOR*, int, int, mActor_name_t, int, int); @@ -636,10 +2253,10 @@ struct player_actor_s { /* 0x12D0 */ int (*request_main_demo_standing_train_all_proc)(GAME*, int); /* 0x12D4 */ int (*request_main_stung_bee_all_proc)(GAME*, int); /* 0x12D8 */ int (*request_main_shock_all_proc)(GAME*, f32, s16, s8, int, int); - /* 0x12DC */ int (*request_main_change_cloth_forNPC_proc)(GAME*, mActor_name_t, int); + /* 0x12DC */ int (*request_main_change_cloth_forNPC_proc)(GAME*, mActor_name_t, u16, int); /* 0x12E0 */ int (*request_main_push_snowball_all_proc)(GAME*, void*, int, int); - /* 0x12E4 */ int (*request_main_stung_mosquito_all_proc)(GAME*, int, int); - /* 0x12E8 */ int (*request_main_switch_on_lighthouse_all_proc)(GAME*, const xyz_t*, int, int); + /* 0x12E4 */ int (*request_main_stung_mosquito_all_proc)(GAME*, void*, int); + /* 0x12E8 */ int (*request_main_switch_on_lighthouse_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12EC */ int (*request_main_demo_geton_boat_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12F0 */ int (*request_main_demo_getoff_boat_standup_all_proc)(GAME*, const xyz_t*, s16, int); /* 0x12F4 */ int (*request_main_demo_get_golden_item2_all_proc)(GAME*, int, int); @@ -648,7 +2265,7 @@ struct player_actor_s { /* 0x1300 */ void* (*get_door_label_proc)(GAME*); /* 0x1304 */ int (*Set_Item_net_catch_request_table_proc)(ACTOR*, GAME*, u32, s8, const xyz_t*, f32); /* 0x1308 */ f32 (*Get_Item_net_catch_swing_timer_proc)(ACTOR*, GAME*); - /* 0x130C */ u8 (*Set_Item_net_catch_request_force_proc)(ACTOR*, GAME*, u32, s8); + /* 0x130C */ int (*Set_Item_net_catch_request_force_proc)(ACTOR*, GAME*, u32, s8); /* 0x1310 */ void (*Set_force_position_angle_proc)(GAME*, const xyz_t*, const s_xyz*, u8); /* 0x1314 */ u8 (*Get_force_position_angle_proc)(GAME*, xyz_t*, s_xyz*); /* 0x1318 */ int (*Get_WadeEndPos_proc)(GAME*, xyz_t*); @@ -656,7 +2273,7 @@ struct player_actor_s { /* 0x1320 */ int (*SetParam_for_push_snowball_proc)(GAME*, const xyz_t*, s16, f32); /* 0x1324 */ int (*able_submenu_request_main_index_proc)(GAME*); /* 0x1328 */ int (*check_able_change_camera_normal_index_proc)(ACTOR*); - /* 0x132C */ int (*Check_able_force_speak_label_proc)(GAME*, ACTOR*); + /* 0x132C */ int (*Check_able_force_speak_label_proc)(GAME*, void*); /* 0x1330 */ int (*check_cancel_request_change_proc_index_proc)(int); /* 0x1334 */ u32 (*Get_item_net_catch_label_proc)(ACTOR*); /* 0x1338 */ int (*Change_item_net_catch_label_proc)(ACTOR*, u32, s8); @@ -679,18 +2296,18 @@ struct player_actor_s { /* 0x137C */ mActor_name_t (*Get_itemNo_forWindow_proc)(ACTOR*); /* 0x1380 */ int (*check_cancel_event_without_priority_proc)(GAME*); /* 0x1384 */ int (*CheckScene_AbleSubmenu_proc)(); - /* 0x1388 */ int (*Check_stung_mosquito_proc)(GAME*, ACTOR*); + /* 0x1388 */ int (*Check_stung_mosquito_proc)(GAME*, void*); /* 0x138C */ int a_btn_pressed; /* 0x1390 */ int a_btn_triggers_submenu; /* 0x1394 */ mActor_name_t item_in_front; /* item directly in front of the player */ - /* 0x1398 */ xyz_t foward_ut_pos; /* wpos of unit in front of player */ + /* 0x1398 */ xyz_t forward_ut_pos; /* wpos of unit in front of player */ /* 0x13A4 */ s8 update_scene_bg_mode; }; -void Player_actor_ct(ACTOR*, GAME*); -void Player_actor_dt(ACTOR*, GAME*); -void Player_actor_move(ACTOR*, GAME*); -void Player_actor_draw(ACTOR*, GAME*); +extern void Player_actor_ct(ACTOR*, GAME*); +extern void Player_actor_dt(ACTOR*, GAME*); +extern void Player_actor_move(ACTOR*, GAME*); +extern void Player_actor_draw(ACTOR*, GAME*); #ifdef __cplusplus } diff --git a/include/m_player_lib.h b/include/m_player_lib.h index c5ad6a6d..0ad50ffe 100644 --- a/include/m_player_lib.h +++ b/include/m_player_lib.h @@ -10,107 +10,191 @@ extern "C" { #endif -extern void mPlib_Object_Exchange_keep_Player_dt(GAME_PLAY*); -extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play); -extern void mPlib_SetData1_controller_data_for_title_demo(f32 stick_x, f32 stick_y, int btn_a, int btn_b); -extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t tool); -extern void mPlib_Clear_controller_data_for_title_demo(); -extern void mPlib_request_main_invade_type1(GAME_PLAY* play); -extern mActor_name_t mPlib_Get_itemNo_forWindow(); -extern int mPlib_check_able_change_camera_normal_index(); -extern void mPlib_request_main_refuse_type1(GAME* game); -extern void mPlib_request_main_wait_type3(GAME* game); -extern void mPlib_Set_able_force_speak_label(ACTOR* actor); -extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int flag); -extern void mPlib_Set_goal_player_demo_walk(f32 goal_x, f32 goal_z, f32 speed); -extern void mPlib_Set_able_hand_all_item_in_demo(s8 enable); -extern void mPlib_change_player_cloth_info_lv2(Private_c* priv, mActor_name_t cloth_name); -extern int mPlib_Get_address_able_display(); -extern int mPlib_get_player_actor_main_index(GAME* game); -extern int mPlib_check_player_actor_main_index_AllWade(GAME_PLAY* play); -extern int mPlib_request_main_demo_wait_type1(GAME* game, int param_2, void* param_3); -extern int mPlib_request_main_talk_type1(GAME_PLAY* play, ACTOR* other_actor, int turn, int flag); -extern int mPlib_request_main_talk_end_type1(GAME_PLAY* play, int return_demo_wait, int return_get_golden_axe_demo); -extern int mPlib_request_main_door_type1(GAME* game, const xyz_t* pos, s16 angle_y, int door_type, void* door_label); -extern int mPlib_request_main_door_type2(GAME* game, const xyz_t* pos, s16 angle_y, int door_type, void* door_label); -extern int mPlib_strength_request_main_door_priority(GAME* game); -extern int mPlib_check_request_main_wade_priority(GAME* game); -extern int mPlib_check_request_main_demo_wade_priority(GAME* game); -extern int mPlib_check_request_main_demo_geton_boat_wade_priority(GAME* game); -extern int mPlib_check_request_main_door_type1_priority(GAME* game); -extern int mPlib_check_request_main_door_type2_priority(GAME* game); -extern int mPlib_check_request_main_outdoor_priority(GAME* game); -extern int mPlib_check_request_main_talk_type1_priority(GAME* game); -extern int mPlib_check_request_main_speak_type1_priority(GAME* game); -extern int mPlib_Check_able_force_speak_label(GAME* game, ACTOR* label); -extern int mPlib_able_submenu_type1(GAME* game); -extern void mPlib_request_main_demo_wait_from_submenu(ACTOR* force_speak_label); -extern void mPlib_Load_PlayerTexAndPallet(void* tex_p, void* pal_p, int idx); -extern void mPlib_request_main_give_from_submenu(mActor_name_t disp_item, int submenu_ovl, int present_flag, - int counter_flag); -extern int mPlib_Check_tree_shaken_big(const xyz_t* pos); -extern int mPlib_Check_tree_shaken_little(const xyz_t* pos); -extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag); -extern int mPlib_able_player_warp_forEvent(); -extern int mPlib_Get_unable_wade(); -extern void mPlib_Set_boat_angleZ(s16 angleZ); -extern int mPlib_Get_end_player_demo_walk(); -extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY); -extern int mPlib_request_main_demo_getoff_boat_standup_type1(const xyz_t* pos, s16 angleY); -extern int mPlib_check_player_actor_main_index_RecieveMove(GAME* game); -extern int mPlib_check_label_player_demo_wait(GAME* game, void* label); -extern int mPlib_check_player_outdoor_start(GAME* game); -extern void mPlib_Set_change_color_request(); -extern int mPlib_check_player_open_umbrella(GAME_PLAY* play); -extern int mPlib_Check_UKI_COMEBACK_STATUS(); -extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME_PLAY* play); -extern int mPlib_request_main_close_furniture_type1(GAME* game); -extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing); -extern int mPlib_request_main_hold_type1(GAME* game, int ftr_no, int player_direct, const xyz_t* player_pos); -extern int mPlib_check_player_warp_forEvent(void); -extern int mPlib_check_player_actor_main_index_Furniture_Move(GAME* game); -extern int mPlib_request_main_sitdown_type1(GAME* game, int direct, const xyz_t* pos, int ftr_no); -extern int mPlib_request_main_lie_bed_type1(GAME* game, int direct, const xyz_t* pos, int head_direct, int ftr_no); -extern void mPlib_change_player_cloth(GAME* game, int idx); -extern u32 mPlib_Get_item_net_catch_label(void); -extern int mPlib_Check_stung_mosquito(ACTOR* actorx); -extern int mPlib_request_main_stung_mosquito_type1(ACTOR* actorx); -extern int mPlib_Check_HitAxe(xyz_t* axe_pos); -extern int mPlib_Check_StopNet(xyz_t* net_pos); -extern int mPlib_Check_DigScoop(xyz_t* scoop_pos); -extern int mPlib_Check_tree_shaken(const xyz_t* pos); -extern int mPlib_Check_VibUnit_OneFrame(const xyz_t* pos); -extern int mPlib_Get_BasicItemShapeIndex_fromItemKind(int item_kind); -extern u8 mPlib_Get_Item_DataPointerType(int idx); -extern void* mPlib_Get_Item_DataPointer(int idx); -extern int mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(int item_kind); extern cKF_Animation_R_c* mPlib_Get_Pointer_Animation(int anim_idx); +extern int mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(int item_kind); extern int mPlib_Get_BasicPartTableIndex_fromAnimeIndex(int anim_idx); +extern void* mPlib_Get_Item_DataPointer(int data_kind); +extern int mPlib_Get_BasicItemShapeIndex_fromItemKind(int item_kind); extern int mPlib_Get_BasicItemAnimeIndex_fromItemKind(int item_kind); -extern void mPlib_DMA_player_Part_Table(s8* part_table_p, int idx); +extern u8 mPlib_Get_Item_DataPointerType(int data_idx); +extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play); +extern u32 mPlib_Get_PlayerTexRom_p(int idx); +extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_idx, int bank); +extern u32 mPlib_Get_PlayerPalletRom_p(int idx); +extern void mPlib_Object_Exchange_keep_new_PlayerPallet(GAME_PLAY* play, int bank_idx, int bank); +extern int mPlib_Check_PlayerClothInAram(int idx); +extern void mPlib_Object_Exchange_keep_new_PlayerFaceTex(GAME_PLAY* play); +extern void mPlib_Object_Exchange_keep_new_PlayerFacePallet(GAME_PLAY* play, int bank, int bank_idx); +extern void mPlib_Object_Exchange_keep_Player_dt(GAME_PLAY* play); +extern u8* mPlib_get_player_tex_p(GAME* game); +extern u16* mPlib_get_player_pallet_p(GAME* game); +extern u8* mPlib_get_player_face_p(GAME* game); +extern u16* mPlib_get_player_face_pallet_p(GAME* game); +extern void mPlib_change_player_cloth(GAME* game, u16 cloth_idx); +extern void mPlib_change_player_face_pallet(GAME* game); +extern void mPlib_change_player_face(GAME* game); +extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play); +extern int mPlib_get_player_actor_main_index(GAME* game); +extern int mPlib_get_player_actor_request_main_index(GAME* game); extern cKF_Skeleton_R_c* mPlib_get_player_mdl_p(void); +extern s16 mPlib_get_player_Object_Bank(void); +extern void mPlib_DMA_player_Part_Table(s8* part_table_p, int idx); +extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t item); +extern void mPlib_change_player_cloth_info_lv2(Private_c* priv, mActor_name_t item); +extern void mPlib_Load_PlayerTexAndPallet(void* tex_p, void* pal_p, int idx); +extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(void); +extern void mPlib_Clear_change_data_from_submenu(void); +extern void mPlib_request_main_give_from_submenu(mActor_name_t item, int after_mode, int present_flag, + int surface_flag); +extern void mPlib_request_main_putin_scoop_from_submenu(const xyz_t* pos_p, mActor_name_t item, int gold_scoop_flag); +extern void mPlib_request_main_release_creature_gyoei_from_submenu(s16 angle_y, s16 item, int gold_scoop_flag); +extern void mPlib_request_main_release_creature_insect_from_submenu(int insect_type, int gold_scoop_flag); +extern s8 mPlib_Get_ItemNoToItemKind(mActor_name_t itemNo); +extern int mPlib_Get_ItemKindTOBalloonShapeType(int item_kind); +extern void mPlib_request_main_release_creature_balloon_from_submenu(mActor_name_t itemNo, int gold_scoop_flag); +extern void mPlib_request_main_wait_from_submenu(void); +extern void mPlib_request_main_demo_get_golden_item_from_submenu(void); +extern void mPlib_request_main_mail_land_from_submenu(void); +extern void mPlib_request_main_demo_wait_from_submenu(ACTOR* speak_actor_p); +extern void mPlib_Set_unable_wade(int v); +extern int mPlib_Get_unable_wade(void); +extern int mPlib_Check_able_force_speak_label(GAME* game, ACTOR* label); +extern void mPlib_Set_able_force_speak_label(ACTOR* label); +extern void mPlib_Reset_able_force_speak_label(void); extern u8* mPlib_Get_PlayerEyeTexAnimation_p(int anim_idx); extern u8* mPlib_Get_PlayerMouthTexAnimation_p(int anim_idx); extern u8* mPlib_Get_eye_tex_p(int idx); extern u8* mPlib_Get_mouth_tex_p(int idx); -extern u8* mPlib_get_player_tex_p(GAME* game); -extern u16* mPlib_get_player_pallet_p(GAME* game); -extern u16* mPlib_get_player_face_pallet_p(GAME* game); -extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos, mActor_name_t* item, ACTOR** hit_actor, int gold_shovel); - -extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(); - -extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play); -extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_id, int base_idx); -extern void mPlib_Object_Exchange_keep_new_PlayerFaceTex(GAME_PLAY* play); -extern void mPlib_Object_Exchange_keep_new_PlayerFacePallet(GAME_PLAY* play, int bank_id, int base_idx); -extern void mPlib_Object_Exchange_keep_new_PlayerPallet(GAME_PLAY* play, int bank_id, int base_idx); -extern void mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mode, int present, int on_surface); +extern int mPlib_request_main_invade_type1(GAME* game); +extern int mPlib_request_main_refuse_type1(GAME* game); +extern int mPlib_request_main_wait_type3(GAME* game); +extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type); +extern int mPlib_request_main_talk_end_type1(GAME* game, int wait_demo, int demo_get_golden_axe); +extern int mPlib_request_main_talk_type1(GAME* game, ACTOR* talk_actor_p, int turn_flag, int umbrella_flag); +extern int mPlib_request_main_hold_type1(GAME* game, int ftr_no, int player_direct, const xyz_t* player_pos_p); +extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag); +extern int mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mode, int present, int on_surface); +extern int mPlib_request_main_sitdown_type1(GAME* game, int direct, const xyz_t* pos_p, int ftr_no); +extern int mPlib_request_main_close_furniture_type1(GAME* game); +extern int mPlib_request_main_lie_bed_type1(GAME* game, int direct, const xyz_t* pos_p, int head_direct, int ftr_no); +extern int mPlib_request_main_hide_type1(GAME* game); +extern int mPlib_request_main_groundhog_type1(GAME* game); +extern int mPlib_request_main_door_type1(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label); +extern int mPlib_request_main_door_type2(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label); +extern int mPlib_request_main_outdoor_type1(GAME* game, int is_start_demo, int door_type); +extern int mPlib_request_main_wash_car_type1(GAME* game, const xyz_t* car_pos_p, const xyz_t* ret_pos_p, + s16 ret_angle_y, ACTOR* ctrl_actor_p); +extern int mPlib_request_main_rotate_octagon_type1(GAME* game, const xyz_t* pos_p, s16 angle_y); +extern int mPlib_request_main_throw_money_type1(GAME* game, const xyz_t* pos_p, s16 angle_y); +extern int mPlib_request_main_pray_type1(GAME* game, const xyz_t* pos_p, s16 angle_y); +extern int mPlib_request_main_mail_jump_type1(GAME* game, const xyz_t* pos_p, s16 angle_y); +extern int mPlib_request_main_stung_bee_type1(GAME* game); +extern int mPlib_request_main_stung_mosquito_type1(void* label); +extern int mPlib_request_main_switch_on_lighthouse_type1(GAME* game, const xyz_t* pos_p, s16 angle_y); +extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY); +extern int mPlib_request_main_demo_getoff_boat_standup_type1(const xyz_t* pos_p, s16 angleY); +extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing); +extern int mPlib_request_main_change_cloth_forNPC_type1(GAME* game, mActor_name_t cloth_item, u16 cloth_idx, + int try_on_flag); +extern int mPlib_request_main_push_snowball_type1(GAME* game, void* label); +extern int mPlib_request_main_push_snowball_end_type1(GAME* game); +extern int mPlib_request_main_demo_wait_type1(GAME* game, int umbrella_flag, void* label); +extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int wait_flag); +extern int mPlib_request_main_demo_geton_train_type1(GAME* game, const xyz_t* pos_p); +extern int mPlib_request_main_demo_getoff_train_type1(GAME* game); +extern int mPlib_request_main_demo_standing_train_type1(GAME* game); +extern int mPlib_check_request_main_talk_type1_priority(GAME* game); +extern int mPlib_check_request_main_speak_type1_priority(GAME* game); +extern int mPlib_check_request_main_door_type1_priority(GAME* game); +extern int mPlib_check_request_main_door_type2_priority(GAME* game); +extern int mPlib_check_request_main_wade_priority(GAME* game); +extern int mPlib_check_request_main_demo_wade_priority(GAME* game); +extern int mPlib_check_request_main_demo_geton_boat_wade_priority(GAME* game); +extern int mPlib_strength_request_main_wade_priority(GAME* game); +extern int mPlib_strength_request_main_demo_wade_priority(GAME* game); +extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game); +extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game); +extern int mPlib_strength_request_main_door_priority(GAME* game); +extern int mPlib_check_request_main_outdoor_priority(GAME* game); +extern int mPlib_Check_SetOrderSubmenu(void); +extern int mPlib_able_submenu_type1(GAME* game); +extern int mPlib_check_player_open_umbrella(GAME* game); +extern int mPlib_check_player_outdoor_start(GAME* game); +extern int mPlib_check_label_player_demo_wait(GAME* game, void* label); +extern void mPlib_Set_goal_player_demo_walk(f32 pos_x, f32 pos_z, f32 speed); +extern void mPlib_Get_goal_player_demo_walk(f32* pos_x_p, f32* pos_z_p, f32* speed_p); +extern void mPlib_Set_continue_player_after_demo_walk(int value); +extern int mPlib_Get_continue_player_after_demo_walk(void); +extern void mPlib_Set_end_player_demo_walk(int value); +extern int mPlib_Get_end_player_demo_walk(void); +extern int mPlib_Get_space_putin_item(void); +extern int mPlib_Get_space_putin_item_forTICKET(mActor_name_t* item_p); +extern int mPlib_Get_space_putin_item_forHITODAMA(mActor_name_t* item_p); +extern int mPlib_able_player_warp_forEvent(void); +extern int mPlib_request_player_warp_forEvent(void); +extern int mPlib_cancel_player_warp_forEvent(void); +extern int mPlib_check_player_warp_forEvent(void); +extern int mPlib_Check_HitAxe(xyz_t* pos_p); +extern int mPlib_Check_VibUnit_OneFrame(const xyz_t* pos_p); +extern int mPlib_Check_StopNet(xyz_t* pos_p); +extern u32 mPlib_Get_item_net_catch_label(void); +extern int mPlib_Change_item_net_catch_label(u32 label, s8 type); +extern int mPlib_Check_HitScoop(xyz_t* pos_p); +extern int mPlib_Check_DigScoop(xyz_t* pos_p); +extern int mPlib_Get_address_able_display(void); +extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos_p, mActor_name_t* item_p, ACTOR** reflect_actor_pp, + int gold_scoop); +extern int mPlib_Check_scene_able_change_camera_pos(void); +extern int mPlib_Check_RotateOctagon(void); +extern int mPlib_Set_EndWashCar(void); +extern int mPlib_Set_AnimeSpeedWashCar(f32 anime_speed); +extern int mPlib_Check_now_handin_item_kind(void); +extern int mPlib_Check_now_handin_item(void); +extern void mPlib_Set_able_hand_all_item_in_demo(s8 v); +extern int mPlib_Get_status_for_bee(void); +extern int mPlib_Check_end_stung_bee(void); +extern int mPlib_Check_Label_main_push_snowball(void* label); +extern int mPlib_Check_Label_main_wade_snowball(void* label); +extern int mPlib_Set_ScrollDemo_forWade_snowball(int dir, const xyz_t* snowball_dist_p); +extern int mPlib_GetSnowballPos_forWadeSnowball(xyz_t* pos_p); +extern int mPlib_CheckCondition_forWadeSnowball(const xyz_t* pos_p, s16 angle_y); +extern int mPlib_SetParam_for_push_snowball(const xyz_t* pos_p, s16 angle_y, f32 anim_speed); +extern void mPlib_Set_crash_snowball_for_wade(int v); +extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(void); +extern void mPlib_Clear_controller_data_for_title_demo(void); +extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y); +extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t item); +extern int mPlib_Check_CorrectPlayerPos_forEvent(void); +extern int mPlib_Check_UKI_COMEBACK_STATUS(void); +extern int mPlib_Check_tree_shaken(const xyz_t* pos_p); +extern int mPlib_Check_tree_shaken_little(const xyz_t* pos_p); +extern int mPlib_Check_tree_shaken_big(const xyz_t* pos_p); +extern mActor_name_t mPlib_Get_itemNo_forWindow(void); +extern int mPlib_able_birth_bee(void); +extern int mPlib_check_able_change_camera_normal_index(void); +extern int mPlib_check_player_actor_main_index_Furniture_Move(GAME* game); +extern int mPlib_check_player_actor_main_index_RecieveMove(GAME* game); +extern int mPlib_check_player_actor_main_index_Pitfall(GAME* game); +extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME* game); +extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game); +extern int mPlib_check_player_actor_main_index_AllWade(GAME* game); +extern int mPlib_check_player_actor_main_index_catch_insect(GAME* game); +extern int mPlib_check_player_actor_main_index_catch_fish(GAME* game); +extern int mPlib_check_player_actor_start_switch_on_lighthouse(GAME* game); +extern int mPlib_Check_stung_mosquito(void* label); +extern void mPlib_Set_boat_angleZ(s16 angle_z); +extern int mPlib_CheckButtonOnly_forDush(void); +extern int mPlib_Check_golden_item_get_demo_end(int gold_item_type); +extern void mPlib_Set_change_color_request(void); #define GET_PLAYER_ACTOR(play) get_player_actor_withoutCheck(play) #define GET_PLAYER_ACTOR_NOW() get_player_actor_withoutCheck((GAME_PLAY*)gamePT) #define GET_PLAYER_ACTOR_GAME(game) get_player_actor_withoutCheck((GAME_PLAY*)(game)) +#define GET_PLAYER_ACTOR_ACTOR(play) ((ACTOR*)GET_PLAYER_ACTOR(play)) +#define GET_PLAYER_ACTOR_NOW_ACTOR() ((ACTOR*)GET_PLAYER_ACTOR_NOW()) +#define GET_PLAYER_ACTOR_GAME_ACTOR(game) ((ACTOR*)GET_PLAYER_ACTOR_GAME(game)) + #ifdef __cplusplus } #endif diff --git a/include/m_private.h b/include/m_private.h index abca39d1..aa52f30b 100644 --- a/include/m_private.h +++ b/include/m_private.h @@ -87,6 +87,8 @@ enum { #define mPr_ORIGINAL_DESIGN_COUNT 8 #define mPr_RADIOCARD_MAX_DAYS 13 +#define mPr_ORIGINAL_DESIGN_IDX_VALID(idx) ((idx) >= 0 && (idx) < mPr_ORIGINAL_DESIGN_COUNT) + #define mPr_GET_ITEM_COND(all_cond, slot_no) (((all_cond) >> (((u32)(slot_no)) << 1)) & mPr_ITEM_COND_NUM) #define mPr_SET_ITEM_COND(all_cond, slot_no, cond) \ (((all_cond) & ~((u32)mPr_ITEM_COND_NUM << ((u32)(slot_no) << 1))) | ((u32)(cond) << ((u32)(slot_no) << 1))) @@ -185,11 +187,6 @@ typedef struct private_mother_mail_info_s { mPr_mother_mail_data_c data; } mPr_mother_mail_info_c; -typedef struct private_cloth_s { - u16 idx; - mActor_name_t item; -} mPr_cloth_c; - struct private_s { /* 0x0000 */ PersonalID_c player_ID; /* player's id info */ /* 0x0014 */ s8 gender; /* gender/sex of player */ diff --git a/include/m_private_h.h b/include/m_private_h.h index 3f6956aa..5a48a930 100644 --- a/include/m_private_h.h +++ b/include/m_private_h.h @@ -2,6 +2,7 @@ #define M_PRIVATE_H_H #include "types.h" +#include "m_actor_type.h" #ifdef __cplusplus extern "C" { @@ -9,6 +10,11 @@ extern "C" { typedef struct private_s Private_c; +typedef struct private_cloth_s { + u16 idx; + mActor_name_t item; +} mPr_cloth_c; + #ifdef __cplusplus } #endif diff --git a/include/m_quest.h b/include/m_quest.h index 4074d193..1cb37261 100644 --- a/include/m_quest.h +++ b/include/m_quest.h @@ -223,13 +223,13 @@ extern void mQst_SetFirstJobStart(mQst_errand_c* errand); extern void mQst_SetFirstJobChangeCloth(mQst_errand_c* errand, mActor_name_t item); extern void mQst_SetFirstJobSeed(mQst_errand_c* errand); extern void mQst_SetFirstJobHello(mQst_errand_c* errand); -extern void mQst_SetFirstJobFurniture(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot); +extern void mQst_SetFirstJobFurniture(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot); extern void mQst_SetFirstJobLetter(mQst_errand_c* errand, AnmPersonalID_c* pid); extern void mQst_SetFirstJobLetter2(mQst_errand_c* errand, AnmPersonalID_c* pid); extern void mQst_SetFirstJobOpenQuest(mQst_errand_c* errand); -extern void mQst_SetFirstJobCarpet(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot); -extern void mQst_SetFirstJobAxe(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot); -extern void mQst_SetFirstJobAxe2(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot); +extern void mQst_SetFirstJobCarpet(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot); +extern void mQst_SetFirstJobAxe(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot); +extern void mQst_SetFirstJobAxe2(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot); extern void mQst_SetFirstJobNotice(mQst_errand_c* errand); extern int mQst_GetRandom(int max); extern void mQst_GetGoods_common(mActor_name_t* item, AnmPersonalID_c* pid, int category, mActor_name_t* exist_table, diff --git a/include/m_scene.h b/include/m_scene.h index 5d2a41c1..2fe17195 100644 --- a/include/m_scene.h +++ b/include/m_scene.h @@ -26,15 +26,33 @@ enum { mSc_DIRECT_NUM }; +enum { + mSc_ITEM_TYPE_BGITEM, + mSc_ITEM_TYPE_DUMMY, + mSc_ITEM_TYPE_BGPOLICEITEM, + mSc_ITEM_TYPE_BGPOSTITEM, + + mSc_ITEM_TYPE_NUM +}; + +enum { + mSc_ROOM_TYPE_OUTDOORS, + mSc_ROOM_TYPE_MY_ROOM, + mSc_ROOM_TYPE_NPC_ROOM, + mSc_ROOM_TYPE_MISC_ROOM, + + mSc_ROOM_TYPE_NUM +}; + typedef struct door_data_s { - int next_scene_id; - u8 exit_orientation; - u8 exit_type; // 0 = normal, 1 = restart game? - u16 extra_data; - s_xyz exit_position; - mActor_name_t door_actor_name; - u8 wipe_type; - u8 pad[3]; // possibly necessary due to struct copy + /* 0x00 */ int next_scene_id; + /* 0x04 */ u8 exit_orientation; + /* 0x05 */ u8 exit_type; // 0 = normal, 1 = restart game? + /* 0x06 */ u16 extra_data; + /* 0x08 */ s_xyz exit_position; + /* 0x0E */ mActor_name_t door_actor_name; + /* 0x10 */ u8 wipe_type; + /* 0x11 */ u8 pad[3]; // possibly necessary due to struct copy } Door_data_c; #define mSc_OBJECT_BANK_NUM 70 @@ -91,45 +109,49 @@ enum { }; typedef struct { - u8 type; - u8 num_actors; - Actor_data* data_p; + /* 0x00 */ u8 type; + /* 0x01 */ u8 num_actors; + /* 0x04 */ Actor_data* data_p; } Scene_Word_Data_Actor_c; typedef struct { - u8 type; - u8 num_ctrl_actors; - s16* ctrl_actor_profile_p; + /* 0x00 */ u8 type; + /* 0x01 */ u8 num_ctrl_actors; + /* 0x04 */ s16* ctrl_actor_profile_p; } Scene_Word_Data_Ctrl_Actor_c; typedef struct { - u8 type; - u8 num_banks; - s16* banks_p; + /* 0x00 */ u8 type; + /* 0x01 */ u8 num_banks; + /* 0x04 */ s16* banks_p; } Scene_Word_Data_Object_Bank_c; typedef struct { - u8 type; - u8 num_doors; - Door_data_c* door_data_p; + /* 0x00 */ u8 type; + /* 0x01 */ u8 num_doors; + /* 0x04 */ Door_data_c* door_data_p; } Scene_Word_Data_Door_Data_c; typedef struct { - u8 type; - u8 item_type; - u8 bg_num; - u16 bg_disp_size; - u8 room_type; - u8 draw_type; + /* 0x00 */ u8 type; + /* 0x01 */ u8 item_type; + /* 0x02 */ u8 bg_num; + /* 0x04 */ u16 bg_disp_size; + /* 0x06 */ u8 room_type; + /* 0x07 */ u8 draw_type; } Scene_Word_Data_FieldCt_c; typedef struct { - u8 type; - u8 arrange_ftr_num; + /* 0x00 */ u8 type; + /* 0x01 */ u8 arrange_ftr_num; } Scene_Word_Data_ArrangeFurniture_ct_c; typedef struct { - u8 type; + /* 0x00 */ u8 type; + /* 0x01 */ u8 param0; + /* 0x02 */ u8 param1; + /* 0x03 */ u8 param2; + /* 0x04 */ u32 param3; } Scene_Word_Data_Misc_c; typedef union scene_word_u { @@ -142,9 +164,68 @@ typedef union scene_word_u { Scene_Word_Data_ArrangeFurniture_ct_c arrange_ftr_ct; } Scene_Word_u; +#define mSc_DATA_PLAYER(actor_data_p) \ + { \ + mSc_SCENE_DATA_TYPE_PLAYER_PTR, 1, 0, 0, (u32)actor_data_p, \ + } + +#define mSc_DATA_CTRL_ACTORS(n_actors, ctrl_actor_list_p) \ + { \ + mSc_SCENE_DATA_TYPE_CTRL_ACTOR_PTR, n_actors, 0, 0, (u32)ctrl_actor_list_p, \ + } + +#define mSc_DATA_ACTORS(n_actors, actor_data_p) \ + { \ + mSc_SCENE_DATA_TYPE_ACTOR_PTR, n_actors, 0, 0, (u32)actor_data_p, \ + } + +#define mSc_DATA_OBJ_BANK(n_banks, bank_list_p) \ + { \ + mSc_SCENE_DATA_TYPE_OBJECT_EXCHANGE_BANK_PTR, n_banks, 0, 0, (u32)bank_list_p, \ + } + +#define mSc_DATA_DOOR_DATA(n_doors, door_data_list_p) \ + { \ + mSc_SCENE_DATA_TYPE_DOOR_DATA_PTR, n_doors, 0, 0, (u32)door_data_list_p, \ + } + +#define mSc_DATA_FIELDCT(item_type, bg_num, bg_disp_size, room_type, draw_type) \ + { \ + mSc_SCENE_DATA_TYPE_FIELD_CT, \ + item_type, \ + bg_num, \ + 0, \ + ((((u32)bg_disp_size & 0xFFFF) << 16) | ((room_type & 0xFF) << 8) | (draw_type & 0xFF)), \ + } + +#define mSc_DATA_MY_ROOM_CT() \ + { \ + mSc_SCENE_DATA_TYPE_MY_ROOM_CT, 0, 0, 0, 0, \ + } + +#define mSc_DATA_ARRANGE_ROOM_CT() \ + { \ + mSc_SCENE_DATA_TYPE_ARRANGE_ROOM_CT, 0, 0, 0, 0, \ + } + +#define mSc_DATA_ARRANGE_FTR(ftr_num) \ + { \ + mSc_SCENE_DATA_TYPE_ARRANGE_FURNITURE_CT, ftr_num, 0, 0, 0, \ + } + +#define mSc_DATA_SOUND(p0, p1) \ + { \ + mSc_SCENE_DATA_TYPE_SOUND, p0, p1, 0, 0, \ + } + +#define mSc_DATA_END() \ + { \ + mSc_SCENE_DATA_TYPE_END, 0, 0, 0, 0, \ + } + typedef struct door_info_s { - u8 num_doors; - Door_data_c* door_data_p; + /* 0x00 */ u8 num_doors; + /* 0x04 */ Door_data_c* door_data_p; } Door_info_c; extern Scene_Word_u test01_info[]; diff --git a/include/m_submenu.h b/include/m_submenu.h index d67f0c88..9010a1c5 100644 --- a/include/m_submenu.h +++ b/include/m_submenu.h @@ -178,9 +178,9 @@ struct submenu_s { /* 0x162 */ u8 open_flag; // only set to 0 or 1, checked at least once in aQMgr_actor_move_talk_sub_hand_item_wait /* 0x163 */ u8 after_mode; /* relates to code which runs after the submenu process */ /* 0x164 */ u8 unk_164; // only set to 0 in mSM_move_LINKWait in AC - /* 0x165 */ u8 disable_start_btn_flag; /* when set to TRUE, the START button input will be ignored */ - /* 0x166 */ u8 disable_start_btn_timer; /* timer for when to disable the start button ignore flag */ - /* 0x168 */ xyz_t water_pos; /* calculated to the nearest water position to the player for releasing fish */ + /* 0x165 */ u8 start_refuse; /* when set to TRUE, the START button input will be ignored */ + /* 0x166 */ u8 start_refuse_timer; /* timer for when to disable the start button ignore flag */ + /* 0x168 */ xyz_t water_pos; /* calculated to the nearest water position to the player for releasing fish */ /* 0x174 */ Submenu_Item_c* item_p; /* pointer to a 'Submenu_Item_c' array, seemingly only points to Submenu::items */ /* 0x178 */ s16 item_num; /* number of items in the item array */ diff --git a/include/m_train_control.h b/include/m_train_control.h index c99be199..377e7580 100644 --- a/include/m_train_control.h +++ b/include/m_train_control.h @@ -2,7 +2,7 @@ #define M_TRAIN_CONTROL_H #include "types.h" -#include "m_play_h.h" +#include "game_h.h" #ifdef __cplusplus extern "C" { @@ -12,21 +12,21 @@ extern "C" { #define mTRC_FAST_SPEED 6.0f // speed when farther away from station enum { - mTRC_ACTION_NONE, - mTRC_ACTION_SPAWN_MOVING, - mTRC_ACTION_BEGIN_SLOWDOWN, - mTRC_ACTION_BEGIN_STOP, - mTRC_ACTION_SIGNAL_STOPPED, - mTRC_ACTION_WAIT_STOPPED, - mTRC_ACTION_SIGNAL_STARTING, - mTRC_ACTION_BEGIN_PULL_OUT, - mTRC_ACTION_SPEED_UP, + mTRC_ACTION_NONE, + mTRC_ACTION_SPAWN_MOVING, + mTRC_ACTION_BEGIN_SLOWDOWN, + mTRC_ACTION_BEGIN_STOP, + mTRC_ACTION_SIGNAL_STOPPED, + mTRC_ACTION_WAIT_STOPPED, + mTRC_ACTION_SIGNAL_STARTING, + mTRC_ACTION_BEGIN_PULL_OUT, + mTRC_ACTION_SPEED_UP, - mTRC_ACTION_NUM + mTRC_ACTION_NUM }; extern void mTRC_init(GAME* game); -extern void mTRC_move(GAME_PLAY* play); +extern void mTRC_move(GAME* game); #ifdef __cplusplus } diff --git a/include/padmgr.h b/include/padmgr.h index c6ffc24b..d64676e6 100644 --- a/include/padmgr.h +++ b/include/padmgr.h @@ -6,6 +6,7 @@ #include "libu64/pad.h" #include "dolphin/os/OSMessage.h" #include "libultra/osThread.h" +#include "libu64/pad.h" #ifdef __cplusplus extern "C" { @@ -13,6 +14,10 @@ extern "C" { #define PADMSGBUFCNT 8 +#define PADMGR_FLAG_HANDLE_RETRACE (1 << 0) +#define PADMGR_FLAG_HANDLE_PRENMI (1 << 1) +#define PADMGR_FLAG_DONE (1 << 2) + enum pads { PAD0, PAD1, @@ -22,6 +27,26 @@ enum pads { PAD_NUM }; +enum { + PADMGR_PAK_NONE, + PADMGR_PAK_RUMBLE, + PADMGR_PAK_CONTROLLER, + PADMGR_PAK_UNK, + + PADMGR_PAK_NUM +}; + +enum { + PADMGR_TYPE_NONE, + PADMGR_TYPE_CONTROLLER, + PADMGR_TYPE_2, + PADMGR_TYPE_MOUSE, + PADMGR_TYPE_VOICE_UNINTIALIZED, + PADMGR_TYPE_VOICE_INITIALIZED, + + PADMGR_TYPE_UNK = 255 +}; + typedef struct { u8 last_command; // PAD_MOTOR_* u8 now_command; // PAD_MOTOR_* @@ -43,22 +68,21 @@ typedef struct { /* 0x0008 */ void* callback_param; /* 0x000C */ void (*callback2)(void*); /* 0x0010 */ void* callback2_param; - /* 0x0014 */ OSContStatus pad_status[MAXCONTROLLERS]; /* 0x0024 */ OSMessage _msg24; /* 0x0028 */ OSMessage _msg28; /* 0x002C */ OSMessage _msgBuf2C[PADMSGBUFCNT]; - /* 0x004C */ OSMessageQueue _msgQueue4C; - /* 0x006C */ OSMessageQueue _msgQueue6C; + /* 0x004C */ OSMessageQueue serial_mq; + /* 0x006C */ OSMessageQueue controller_lock_mq; /* 0x008C */ OSMessageQueue _msgQueue8C; /* 0x00AC */ irqmgr_client_t irqclient; /* 0x00B4 */ u32 _unk0; /* maybe additional value in irqmgr_client_t? */ /* 0x00B8 */ OSThread thread; - /* 0x03C8 */ u8 _tmp[0x60]; // pad_t pads[MAXCONTROLLERS]; // TODO: figure out what's going on here. - /* 0x0428 */ OSContPad n64_pads[MAXCONTROLLERS]; /* Converted from PADStatus via JUTGamePad */ + /* 0x03C8 */ pad_t pads[MAXCONTROLLERS]; + /* 0x0428 */ OSContPad cur_pads[MAXCONTROLLERS]; /* Converted from PADStatus via JUTGamePad */ /* 0x0440 */ u8 num_controllers; - /* 0x0441 */ u8 device_type[4]; - /* 0x0445 */ u8 pak_type[4]; + /* 0x0441 */ u8 device_type[MAXCONTROLLERS]; + /* 0x0445 */ u8 pak_type[MAXCONTROLLERS]; /* 0x044A */ Rumble_t rumble; } padmgr; diff --git a/include/sys_math.h b/include/sys_math.h index b0dc5cd8..c4add2db 100644 --- a/include/sys_math.h +++ b/include/sys_math.h @@ -24,6 +24,8 @@ extern "C" { #define USHT_MIN ((f32)USHT_MIN_S) #define USHT_MAX ((f32)USHT_MAX_S) +#define FLT_MAX (3.4028235e+38f) + /* Macro to generate a random float in the range of [0, n) */ #define RANDOM_F(n) (fqrand() * (f32)(n)) diff --git a/include/types.h b/include/types.h index 7b9b5ae9..22ed5c24 100644 --- a/include/types.h +++ b/include/types.h @@ -4,7 +4,7 @@ #include "../tools/ppcdis/include/ppcdis.h" #ifdef IS_REL -//#pragma section const_type sconst_type ".rodata" ".rodata" data_mode=far_abs code_mode=pc_rel +// #pragma section const_type sconst_type ".rodata" ".rodata" data_mode=far_abs code_mode=pc_rel #endif typedef signed char s8; @@ -41,15 +41,16 @@ typedef u32 unknown; #define TRUE 1 #define FALSE 0 + #define NULL ((void*)0) #define nullptr 0 #define AT_ADDRESS(x) : (x) -#define ALIGN_PREV(u, align) (u & (~(align-1))) -#define ALIGN_NEXT(u, align) ((u + (align-1)) & (~(align-1))) -#define IS_ALIGNED(X, N) (((X) & ((N)-1)) == 0) -#define IS_NOT_ALIGNED(X, N) (((X) & ((N)-1)) != 0) +#define ALIGN_PREV(u, align) (u & (~(align - 1))) +#define ALIGN_NEXT(u, align) ((u + (align - 1)) & (~(align - 1))) +#define IS_ALIGNED(X, N) (((X) & ((N) - 1)) == 0) +#define IS_NOT_ALIGNED(X, N) (((X) & ((N) - 1)) != 0) #define FLAG_ON(V, F) (((V) & (F)) == 0) #define FLAG_OFF(V, F) (((V) & (F)) != 0) @@ -82,43 +83,52 @@ typedef u32 unknown; #define BUTTON_B 0x4000 #define BUTTON_A 0x8000 +#define FRAMES_PER_SECOND 60 + #define ARRAY_SIZE(arr, type) (sizeof(arr) / sizeof(type)) #define ARRAY_COUNT(arr) (int)(sizeof(arr) / sizeof(arr[0])) #define MAX(a, b) (((a) > (b)) ? (a) : (b)) #define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#define FLOOR(n, f) (((n) / (f)) * (f)) + #define F32_IS_ZERO(v) (fabsf(v) < 0.008f) /* ARGB8 color format (32 bits) to RGB5A3 color format (16 bits) */ -#define ARGB8_to_RGB5A3(argb8) \ - ((u16)(((argb8) & 0xFF000000) >= 0xE0000000 ? \ - /* Fully opaque, 5 bits per color channel */ (0x8000 | ((((argb8) >> 16) & 0xF8) << 7) | ((((argb8) >> 8) & 0xF8) << 2) | (((argb8) & 0xFF) >> 3)) : \ - /* 3 bits of transparency, 4 bits per color channel */ (((((argb8) >> 24) & 0xE0) << 7) | ((((argb8) >> 16) & 0xF0) << 4) | (((argb8) >> 8) & 0xF0) | (((argb8) & 0xF0) >> 4)))) +#define ARGB8_to_RGB5A3(argb8) \ + ((u16)(((argb8) & 0xFF000000) >= 0xE0000000 \ + ? /* Fully opaque, 5 bits per color channel */ (0x8000 | ((((argb8) >> 16) & 0xF8) << 7) | \ + ((((argb8) >> 8) & 0xF8) << 2) | \ + (((argb8) & 0xFF) >> 3)) \ + : /* 3 bits of transparency, 4 bits per color channel */ ( \ + ((((argb8) >> 24) & 0xE0) << 7) | ((((argb8) >> 16) & 0xF0) << 4) | (((argb8) >> 8) & 0xF0) | \ + (((argb8) & 0xF0) >> 4)))) -#define GPACK_RGB5A3(r, g, b, a) ARGB8_to_RGB5A3((((a) & 0xFF) << 24) | (((r) & 0xFF) << 16) | (((g) & 0xFF) << 8) | ((b) & 0xFF)) +#define GPACK_RGB5A3(r, g, b, a) \ + ARGB8_to_RGB5A3((((a) & 0xFF) << 24) | (((r) & 0xFF) << 16) | (((g) & 0xFF) << 8) | ((b) & 0xFF)) #pragma section RX "forcestrip" -#ifndef __INTELLISENSE__ - #define FORCESTRIP __declspec(section "forcestrip") +#ifndef __INTELLISENSE__ +#define FORCESTRIP __declspec(section "forcestrip") #else - #define FORCESTRIP +#define FORCESTRIP #endif #ifdef MUST_MATCH - #define MATCH_FORCESTRIP FORCESTRIP +#define MATCH_FORCESTRIP FORCESTRIP #else - #define MATCH_FORCESTRIP +#define MATCH_FORCESTRIP #endif #if !defined(__INTELLISENSE__) && defined(MUST_MATCH) - #define BSS_ORDER_GROUP_START FORCESTRIP ORDER_BSS_DATA { - #define BSS_ORDER_GROUP_END } - #define BSS_ORDER_ITEM(v) ORDER_BSS(v) +#define BSS_ORDER_GROUP_START FORCESTRIP ORDER_BSS_DATA { +#define BSS_ORDER_GROUP_END } +#define BSS_ORDER_ITEM(v) ORDER_BSS(v) #else - #define BSS_ORDER_GROUP_START - #define BSS_ORDER_GROUP_END - #define BSS_ORDER_ITEM(v) +#define BSS_ORDER_GROUP_START +#define BSS_ORDER_GROUP_END +#define BSS_ORDER_ITEM(v) #endif #ifndef __cplusplus @@ -126,4 +136,4 @@ typedef u32 unknown; typedef short wchar_t; #endif -#endif \ No newline at end of file +#endif diff --git a/include/va_args.h b/include/va_args.h index 37d308cc..536fcb08 100644 --- a/include/va_args.h +++ b/include/va_args.h @@ -17,8 +17,14 @@ typedef struct __va_list_struct { typedef _va_list_struct __va_list[1]; +void* __va_arg(_va_list_struct* list, int type); + #define __va_start(list, fmt) __builtin_va_info(&list) -#define __va_arg(list, type) (*((type*)__va_arg(ap, _var_arg_typeof(type)))) +#ifdef __MWERKS__ +#define __va_arg(list, type) (*((type*)__va_arg(list, _var_arg_typeof(type)))) +#else +#define __va_arg(list, type) 0 +#endif #define va_start __va_start #define va_arg __va_arg #define va_end __va_end diff --git a/src/ac_animal_logo_misc.c b/src/ac_animal_logo_misc.c index 64a2d1b2..d469dcbb 100644 --- a/src/ac_animal_logo_misc.c +++ b/src/ac_animal_logo_misc.c @@ -21,7 +21,7 @@ extern void flash_rom_and_player_info_clear() { bzero(save, sizeof(Save)); mFRm_ClearSaveCheckData(Save_GetPointer(save_check)); - priv_p = Save_GetPointer(private[0]); + priv_p = Save_GetPointer(private_data[0]); for (i = 0; i < PLAYER_NUM; i++) { mPr_ClearPrivateInfo(priv_p); priv_p++; @@ -96,7 +96,7 @@ extern void title_action_data_init_start_select(GAME_PLAY* play) { mCD_LoadLand(); mCPk_InitPak(0); - Common_Set(now_private, Save_GetPointer(private[0])); + Common_Set(now_private, Save_GetPointer(private_data[0])); Common_Set(player_no, 0); mTD_rtc_reserve(); diff --git a/src/ac_boat_demo.c b/src/ac_boat_demo.c index f742ab32..26c700ae 100644 --- a/src/ac_boat_demo.c +++ b/src/ac_boat_demo.c @@ -15,17 +15,17 @@ static void aBTD_actor_dt(ACTOR* actorx, GAME* game); static void aBTD_actor_move(ACTOR* actorx, GAME* game); ACTOR_PROFILE Boat_Demo_Profile = { - mAc_PROFILE_BOAT_DEMO, - ACTOR_PART_CONTROL, - ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - EMPTY_NO, - ACTOR_OBJ_BANK_KEEP, - sizeof(BOAT_DEMO_ACTOR), - &aBTD_actor_ct, - &aBTD_actor_dt, - &aBTD_actor_move, - mActor_NONE_PROC1, - NULL + mAc_PROFILE_BOAT_DEMO, + ACTOR_PART_CONTROL, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(BOAT_DEMO_ACTOR), + &aBTD_actor_ct, + &aBTD_actor_dt, + &aBTD_actor_move, + mActor_NONE_PROC1, + NULL, }; static mDemo_Clip_c aBTD_clip; @@ -46,28 +46,28 @@ extern u8 aBTD_island_ldr[]; static void aBTD_setupAction(BOAT_DEMO_ACTOR* boat_demo, GAME_PLAY* play, int action); static void aBTD_actor_ct(ACTOR* actorx, GAME* game) { - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)actorx; - GAME_PLAY* play = (GAME_PLAY*)game; + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; - Common_Get(clip).demo_clip2 = &aBTD_clip; - bzero(&aBTD_clip, sizeof(aBTD_clip)); - Common_Get(clip).demo_clip2->class = boat_demo; - Common_Get(clip).demo_clip2->type = mDemo_CLIP_TYPE_BOAT_DEMO; - boat_demo->island_gba_loader_p = aBTD_island_ldr; - boat_demo->island_gba_program_p = aBTD_island_prg; + Common_Get(clip).demo_clip2 = &aBTD_clip; + bzero(&aBTD_clip, sizeof(aBTD_clip)); + Common_Get(clip).demo_clip2->demo_class = boat_demo; + Common_Get(clip).demo_clip2->type = mDemo_CLIP_TYPE_BOAT_DEMO; + boat_demo->island_gba_loader_p = aBTD_island_ldr; + boat_demo->island_gba_program_p = aBTD_island_prg; - if (mFI_CheckBlockKind(play->block_table.block_x, play->block_table.block_z, mRF_BLOCKKIND_ISLAND) == TRUE) { - boat_demo->at_island = TRUE; - boat_demo->island_npc_info_registered = TRUE; - } + if (mFI_CheckBlockKind(play->block_table.block_x, play->block_table.block_z, mRF_BLOCKKIND_ISLAND) == TRUE) { + boat_demo->at_island = TRUE; + boat_demo->island_npc_info_registered = TRUE; + } - aBTD_setupAction(boat_demo, play, aBTD_ACTION_SENDO_BIRTH_WAIT); + aBTD_setupAction(boat_demo, play, aBTD_ACTION_SENDO_BIRTH_WAIT); } static void aBTD_actor_dt(ACTOR* actorx, GAME* game) { - if (Common_Get(clip).demo_clip2 != NULL) { - Common_Get(clip).demo_clip2 = NULL; - } + if (Common_Get(clip).demo_clip2 != NULL) { + Common_Get(clip).demo_clip2 = NULL; + } } #include "../src/ac_boat_demo_move.c_inc" diff --git a/src/ac_br_shop_move.c_inc b/src/ac_br_shop_move.c_inc index 3a21815c..389e4f7d 100644 --- a/src/ac_br_shop_move.c_inc +++ b/src/ac_br_shop_move.c_inc @@ -16,7 +16,8 @@ static void change_FGUnit(ACTOR* actor, int type) { if (mSN_ClearSnowman(name) == 0) { int dug = FALSE; - if ((((*name >= BURIED_PITFALL_START) && (*name <= BURIED_PITFALL_END)) || (*name == SHINE_SPOT))) { + if ((((*name >= BURIED_PITFALL_HOLE_START) && (*name <= BURIED_PITFALL_HOLE_END)) || + (*name == SHINE_SPOT))) { dug = TRUE; } @@ -37,9 +38,9 @@ static void change_FGUnit(ACTOR* actor, int type) { static void aBRS_set_bgOffset(STRUCTURE_ACTOR* windmill, int idx) { static mCoBG_OffsetTable_c height_table_ct[9] = { - {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, - {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, - {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, {0x64, 9, 9, 9, 9, 9, 0}, + { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, + { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, + { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, { 0x64, 9, 9, 9, 9, 9, 0 }, }; static mCoBG_OffsetTable_c* height_table[2] = { @@ -182,7 +183,7 @@ static void aBRS_open_wait(STRUCTURE_ACTOR* actor, GAME_PLAY* play) { if (actor == GET_PLAYER_ACTOR_NOW()->get_door_label_proc(gamePT)) { aBRS_rewrite_out_data(&actor->actor_class, play); goto_other_scene(play, &aBRS_br_shop_door_data, 1); - } else if (mPlib_check_player_actor_main_index_OutDoorMove(play) == 0) { + } else if (mPlib_check_player_actor_main_index_OutDoorMove(&play->game) == 0) { if (aBRS_check_player(&actor->actor_class, play) == 0) { if (aBRS_open_check(&actor->actor_class) != 2) { aBRS_setup_action(actor, 2); diff --git a/src/ac_bridge_a.c b/src/ac_bridge_a.c new file mode 100644 index 00000000..9f2bbc56 --- /dev/null +++ b/src/ac_bridge_a.c @@ -0,0 +1,197 @@ +#include "ac_bridge_a.h" + +#include "m_common_data.h" +#include "m_name_table.h" +#include "m_field_info.h" +#include "m_player_lib.h" +#include "m_rcp.h" +#include "m_debug.h" + +static void aBridgeA_actor_ct(ACTOR* actorx, GAME* game); +static void aBridgeA_actor_dt(ACTOR* actorx, GAME* game); +static void aBridgeA_actor_init(ACTOR* actorx, GAME* game); +static void aBridgeA_actor_move(ACTOR* actorx, GAME* game); +static void aBridgeA_actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Bridge_A_Profile = { + mAc_PROFILE_BRIDGE_A, + ACTOR_PART_ITEM, + ACTOR_STATE_TA_SET, + BRIDGE_A0, + ACTOR_OBJ_BANK_KEEP, + sizeof(STRUCTURE_ACTOR), + &aBridgeA_actor_ct, + &aBridgeA_actor_dt, + &aBridgeA_actor_init, + &aBridgeA_actor_draw, + NULL, +}; +// clang-format on + +static void aBridgeA_set_BgOffset(ACTOR* actorx) { + // clang-format off + static const mCoBG_OffsetTable_c rewrite_data[] = { + { mCoBG_ATTRIBUTE_31, 4, 4, 4, 4, 4, 0 }, + { mCoBG_ATTRIBUTE_27, 4, 0, 4, 4, 4, 1 }, + { mCoBG_ATTRIBUTE_28, 4, 4, 0, 4, 4, 1 }, + { mCoBG_ATTRIBUTE_29, 4, 4, 4, 0, 4, 1 }, + { mCoBG_ATTRIBUTE_30, 4, 4, 4, 4, 0, 1 }, + { mCoBG_ATTRIBUTE_31, 0, 0, 0, 0, 0, 0 }, + }; + // clang-format on + + static s_xyz unit_offset_a0[] = { + { 0, 0, 0 }, { 0, 1, -1 }, { -1, 1, 0 }, { 1, 3, 0 }, { 0, 3, 1 }, { 1, 5, -1 }, { -1, 5, 1 }, + }; + + static s_xyz unit_offset_a1[] = { + { 0, 0, 0 }, { 0, 4, -1 }, { 1, 4, 0 }, { -1, 2, 0 }, { 0, 2, 1 }, { -1, 5, -1 }, { 1, 5, 1 }, + }; + + f32 dist_to_ground = mCoBG_GetBgY_OnlyCenter_FromWpos2(actorx->world.position, 0.0f); + s_xyz* unit_offset = actorx->npc_id == BRIDGE_A0 ? unit_offset_a0 : unit_offset_a1; + int i; + + for (i = 0; i < 7; i++) { + xyz_t pos = actorx->world.position; + f32 ut_dist_to_ground; + + pos.x += unit_offset[i].x * mFI_UNIT_BASE_SIZE_F; + pos.z += unit_offset[i].z * mFI_UNIT_BASE_SIZE_F; + ut_dist_to_ground = mCoBG_GetBgY_OnlyCenter_FromWpos2(pos, 0.0f); + + /* s_xyz->y is repurposed to be the index into 'rewrite_data' array (could be new struct too) */ + if (unit_offset[i].y == 5 && ut_dist_to_ground == dist_to_ground) { + mCoBG_SetPluss5PointOffset_file(pos, rewrite_data[0], __FILE__, 217); + } else { + mCoBG_SetPluss5PointOffset_file(pos, rewrite_data[unit_offset[i].y], __FILE__, 220); + } + + /* Update all bridge units other than the main item unit */ + if (i != 0) { + mFI_SetFG_common(RSV_NO, pos, FALSE); + } + } +} + +extern cKF_Skeleton_R_c cKF_bs_r_obj_s_bridgeA; +extern cKF_Skeleton_R_c cKF_bs_r_obj_w_bridgeA; + +extern cKF_Animation_R_c cKF_ba_r_obj_s_bridgeA; +extern cKF_Animation_R_c cKF_ba_r_obj_w_bridgeA; + +static void aBridgeA_actor_ct(ACTOR* actorx, GAME* game) { + static cKF_Skeleton_R_c* skl[] = { &cKF_bs_r_obj_s_bridgeA, &cKF_bs_r_obj_w_bridgeA }; + static cKF_Animation_R_c* anm[] = { &cKF_ba_r_obj_s_bridgeA, &cKF_ba_r_obj_w_bridgeA }; + + STRUCTURE_ACTOR* bridge = (STRUCTURE_ACTOR*)actorx; + int idx; + + if (Common_Get(time).season == mTM_SEASON_WINTER) { + idx = 1; + } else { + idx = 0; + } + + bridge->actor_class.world.position.y += 1.5f; + cKF_SkeletonInfo_R_ct(&bridge->keyframe, skl[idx], anm[idx], bridge->work_area, bridge->morph_area); + cKF_SkeletonInfo_R_init_standard_repeat(&bridge->keyframe, anm[idx], NULL); + cKF_SkeletonInfo_R_play(&bridge->keyframe); + + if (actorx->npc_id == BRIDGE_A0) { + actorx->shape_info.rotation.y = DEG2SHORT_ANGLE2(0.0f); + } else { + actorx->shape_info.rotation.y = DEG2SHORT_ANGLE2(-90.0f); + } + + aBridgeA_set_BgOffset(actorx); + bridge->arg1_f = 0.0f; + bridge->arg0_f = 0.0f; + sAdo_RegistPlussBridge(&actorx->world.position); +} + +static void aBridgeA_actor_dt(ACTOR* actorx, GAME* game) { + sAdo_DeletePlussBridge(); +} + +static f32 aBridge_player_check(STRUCTURE_ACTOR* bridge, GAME_PLAY* play) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + xyz_t player_pos = player->actor_class.world.position; + xyz_t bridge_pos = bridge->actor_class.world.position; + xyz_t player_dist_from_bridge; + f32 bridge_run_speed = player->actor_class.speed * (0.75f + (f32)GETREG(TAKREG, 23) * 0.01f); + f32 dist0; + f32 dist1; + + xyz_t_sub(&player_pos, &bridge_pos, &player_dist_from_bridge); + if (bridge->actor_class.npc_id == BRIDGE_A1) { + dist0 = player_dist_from_bridge.x - player_dist_from_bridge.z; + dist1 = player_dist_from_bridge.x + player_dist_from_bridge.z; + } else { + dist0 = player_dist_from_bridge.x + player_dist_from_bridge.z; + dist1 = player_dist_from_bridge.x - player_dist_from_bridge.z; + } + + if ((dist0 > -mFI_UNIT_BASE_SIZE_F && dist0 < mFI_UNIT_BASE_SIZE_F) && + (dist1 > -mFI_UNIT_BASE_SIZE_F * 2 && dist1 < mFI_UNIT_BASE_SIZE_F * 2)) { + if (bridge_run_speed > bridge->arg0_f) { + bridge->arg1_f = 1.0f + (f32)GETREG(TAKREG, 20) * 0.01f; + bridge->arg0_f = bridge_run_speed; + } else if (bridge_run_speed > 0.1f) { + add_calc(&bridge->arg0_f, bridge_run_speed, 0.1f + (f32)GETREG(TAKREG, 22) * 0.01f, 0.1f, 0.01f); + add_calc(&bridge->arg1_f, 1.0f, 0.1f + (f32)GETREG(TAKREG, 24) * 0.01f, 0.1f, 0.01f); + return; + } + } + + add_calc(&bridge->arg1_f, 0.0f, (0.08f + (f32)GETREG(TAKREG, 21) * 0.01f) * (0.4f + bridge->arg0_f * 0.1f), 0.1f, + 0.01f); +} + +static void aBridgeA_actor_move(ACTOR* actorx, GAME* game) { + STRUCTURE_ACTOR* bridge = (STRUCTURE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + aBridge_player_check(bridge, play); + bridge->keyframe.frame_control.speed = bridge->arg0_f * 0.5f; + cKF_SkeletonInfo_R_play(&bridge->keyframe); + if (bridge->arg1_f == 0.0f) { + bridge->arg1_f = 0.0f; + bridge->arg0_f = 0.0f; + bridge->keyframe.frame_control.current_frame = 0.0f; + } +} + +static void aBridgeA_actor_init(ACTOR* actorx, GAME* game) { + mFI_SetFG_common(DUMMY_BRIDGE, actorx->home.position, FALSE); + aBridgeA_actor_move(actorx, game); + actorx->mv_proc = &aBridgeA_actor_move; +} + +static int aBridgeA_before_disp(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, + u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { + static s16 base_r_table[] = { + DEG2SHORT_ANGLE2(0.0f), DEG2SHORT_ANGLE2(0.0f), DEG2SHORT_ANGLE2(314.703369f), + DEG2SHORT_ANGLE2(90.296631f), DEG2SHORT_ANGLE2(270.302124f), DEG2SHORT_ANGLE2(44.697876f), + }; + + STRUCTURE_ACTOR* bridge = (STRUCTURE_ACTOR*)arg; + f32 rot = bridge->arg1_f; + + if (joint_idx > 1) { + f32 inv = 1.0f - rot; + + joint_rot->z = rot * (f32)joint_rot->z + inv * (f32)base_r_table[joint_idx]; + } + + return TRUE; +} + +static void aBridgeA_actor_draw(ACTOR* actorx, GAME* game) { + STRUCTURE_ACTOR* bridge = (STRUCTURE_ACTOR*)actorx; + Mtx* mtx_p = (Mtx*)GRAPH_ALLOC_TYPE(game->graph, Mtx, bridge->keyframe.skeleton->num_shown_joints); + + _texture_z_light_fog_prim(game->graph); + cKF_Si3_draw_R_SV(game, &bridge->keyframe, mtx_p, &aBridgeA_before_disp, NULL, actorx); +} diff --git a/src/ac_buggy_move.c_inc b/src/ac_buggy_move.c_inc index ad2a442c..0579b48e 100644 --- a/src/ac_buggy_move.c_inc +++ b/src/ac_buggy_move.c_inc @@ -34,7 +34,8 @@ static void change_FGUnit(STRUCTURE_ACTOR* buggy, int type) { if (mSN_ClearSnowman(unit_fg) == FALSE) { dug = FALSE; - if ((((*unit_fg >= BURIED_PITFALL_START) && (*unit_fg <= BURIED_PITFALL_END)) || (*unit_fg == SHINE_SPOT))) { + if ((((*unit_fg >= BURIED_PITFALL_HOLE_START) && (*unit_fg <= BURIED_PITFALL_HOLE_END)) || + (*unit_fg == SHINE_SPOT))) { dug = TRUE; } @@ -132,7 +133,8 @@ static int aBGY_check_player2(GAME_PLAY* play) { y = player->actor_class.world.angle.y; res = 0; - if ((y > DEG2SHORT_ANGLE2(135.0f)) && (y < DEG2SHORT_ANGLE2(225.0f)) && (player->actor_class.speed > 0.0f)) { // 0x6000 && 0xA000 + if ((y > DEG2SHORT_ANGLE2(135.0f)) && (y < DEG2SHORT_ANGLE2(225.0f)) && + (player->actor_class.speed > 0.0f)) { // 0x6000 && 0xA000 res = 1; } @@ -230,7 +232,7 @@ static void aBGY_open_wait(STRUCTURE_ACTOR* buggy, GAME_PLAY* play) { return; } - if (mPlib_check_player_actor_main_index_OutDoorMove(play) != FALSE) { + if (mPlib_check_player_actor_main_index_OutDoorMove(&play->game) != FALSE) { return; } @@ -264,12 +266,7 @@ static void aBGY_open_door(STRUCTURE_ACTOR* buggy, GAME_PLAY* play) { } static void aBGY_setup_action(STRUCTURE_ACTOR* buggy, int action) { - static aSTR_MOVE_PROC process[] = { - &aBGY_close_wait, - &aBGY_open_wait, - &aBGY_close_door, - &aBGY_open_door - }; + static aSTR_MOVE_PROC process[] = { &aBGY_close_wait, &aBGY_open_wait, &aBGY_close_door, &aBGY_open_door }; static cKF_Animation_R_c* animation[] = { &cKF_ba_r_obj_s_uranai, &cKF_ba_r_obj_w_uranai }; static f32 start_idx[] = { 1.0f, 17.0f, 17.0f, 1.0f }; @@ -314,7 +311,7 @@ static void aBGY_actor_move(ACTOR* actor, GAME* game) { (mDemo_Check(mDemo_TYPE_SCROLL3, &player->actor_class) == FALSE) && ((bx1 != bx2) || (bz1 != bz2))) { Actor_delete(actor); } else { - + buggy->keyframe_state = cKF_SkeletonInfo_R_play(&buggy->keyframe); buggy->action_proc(buggy, play); diff --git a/src/ac_douzou_move.c_inc b/src/ac_douzou_move.c_inc index fdeb2659..175f5d24 100644 --- a/src/ac_douzou_move.c_inc +++ b/src/ac_douzou_move.c_inc @@ -15,7 +15,7 @@ static int aDOU_set_check(int house_no) { int player_no = mHS_get_pl_no(house_no); - Private_c* priv = Save_GetPointer(private[player_no]); + Private_c* priv = Save_GetPointer(private_data[player_no]); mHm_hs_c* house = Save_GetPointer(homes[house_no]); if (mEv_CheckTitleDemo() != 0 && mEv_CheckTitleDemo() != -1 && mEv_CheckTitleDemo() != -9) { @@ -35,7 +35,7 @@ static int aDOU_get_color(int house_no) { static int aDOU_get_douzou_type(int house_no) { int player_no = mHS_get_pl_no(house_no); - Private_c* priv = Save_GetPointer(private[player_no]); + Private_c* priv = Save_GetPointer(private_data[player_no]); s8 sex = mPr_SEX_MALE; s8 face = mPr_FACE_TYPE0; diff --git a/src/ac_ev_broker.c b/src/ac_ev_broker.c new file mode 100644 index 00000000..1dc867fa --- /dev/null +++ b/src/ac_ev_broker.c @@ -0,0 +1,106 @@ +#include "ac_ev_broker.h" + +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_msg.h" + +enum { + aEBRK_ACTION_TALK_WAIT, + aEBRK_ACTION_TURN, + aEBRK_ACTION_ENTER, + aEBRK_ACTION_HIDE, + + aEBRK_ACTION_NUM +}; + +static void aEBRK_actor_ct(ACTOR* actorx, GAME* game); +static void aEBRK_actor_dt(ACTOR* actorx, GAME* game); +static void aEBRK_actor_init(ACTOR* actorx, GAME* game); +static void aEBRK_actor_move(ACTOR* actorx, GAME* game); +static void aEBRK_actor_draw(ACTOR* actorx, GAME* game); +static void aEBRK_actor_save(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Ev_Broker_Profile = { + mAc_PROFILE_EV_BROKER, + ACTOR_PART_NPC, + ACTOR_STATE_NO_MOVE_WHILE_CULLED | ACTOR_STATE_NO_DRAW_WHILE_CULLED, + SP_NPC_BROKER, + ACTOR_OBJ_BANK_KEEP, + sizeof(EV_BROKER_ACTOR), + &aEBRK_actor_ct, + &aEBRK_actor_dt, + &aEBRK_actor_init, + mActor_NONE_PROC1, + &aEBRK_actor_save, +}; +// clang-format on + +static void aEBRK_talk_request(ACTOR* actorx, GAME* game); +static int aEBRK_talk_init(ACTOR* actorx, GAME* game); +static int aEBRK_talk_end_chk(ACTOR* actorx, GAME* game); + +static void aEBRK_schedule_proc(NPC_ACTOR* npc_actorx, GAME_PLAY* play, int sched_type); + +static int aEBRK_get_sell_item_sum(void); +static int aEBRK_check_start_around(ACTOR* actorx, GAME* game); + +static void aEBRK_actor_ct(ACTOR* actorx, GAME* game) { + static aNPC_ct_data_c ct_data = { + &aEBRK_actor_move, &aEBRK_actor_draw, 5, &aEBRK_talk_request, &aEBRK_talk_init, &aEBRK_talk_end_chk, + }; + + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)actorx; + + if (Common_Get(clip).npc_clip->birth_check_proc(actorx, game) == TRUE) { + broker->npc_class.schedule.schedule_proc = &aEBRK_schedule_proc; + Common_Get(clip).npc_clip->ct_proc(actorx, game, &ct_data); + broker->npc_class.actor_class.status_data.weight = 254; + + if (aEBRK_get_sell_item_sum() == 0 || aEBRK_check_start_around(actorx, game) == FALSE) { + broker->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1; + broker->next_action = aEBRK_ACTION_HIDE; + } else { + int hide_npc = Common_Get(special_event_common).broker.hide_npc; + + broker->npc_class.condition_info.hide_request = hide_npc; + if (hide_npc == TRUE) { + broker->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1; + broker->next_action = aEBRK_ACTION_HIDE; + } else { + broker->next_action = aEBRK_ACTION_TALK_WAIT; + } + } + } +} + +static void aEBRK_actor_save(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->save_proc(actorx, game); +} + +static void aEBRK_actor_dt(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->dt_proc(actorx, game); + Common_Get(special_event_common).broker.hide_npc = FALSE; + mEv_actor_dying_message(mEv_EVENT_BROKER_SALE, actorx); +} + +static void aEBRK_actor_init(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->init_proc(actorx, game); +} + +static void aEBRK_set_animation(EV_BROKER_ACTOR* broker, int action) { + static int animeSeqNo[] = { + aNPC_ANIM_WAIT1, + aNPC_ANIM_WALK1, + aNPC_ANIM_WALK1, + aNPC_ANIM_WAIT1, + }; + + Common_Get(clip).npc_clip->animation_init_proc(&broker->npc_class.actor_class, animeSeqNo[action], FALSE); +} + +static void aEBRK_actor_draw(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->draw_proc(actorx, game); +} + +#include "../src/ac_ev_broker_move.c_inc" diff --git a/src/ac_ev_broker_move.c_inc b/src/ac_ev_broker_move.c_inc new file mode 100644 index 00000000..da0178bf --- /dev/null +++ b/src/ac_ev_broker_move.c_inc @@ -0,0 +1,303 @@ +static void aEBRK_set_request_act(EV_BROKER_ACTOR* broker) { + broker->npc_class.request.act_priority = 4; + broker->npc_class.request.act_idx = aNPC_ACT_SPECIAL; + broker->npc_class.request.act_type = aNPC_ACT_TYPE_SEARCH; +} + +static void aEBRK_set_pl_talk_lock(EV_BROKER_ACTOR* broker, u8 flag) { + if (broker->pl_talk_lock != flag) { + if (flag == TRUE) { + mPlib_Set_able_force_speak_label(&broker->npc_class.actor_class); + } else { + mPlib_Reset_able_force_speak_label(); + } + + broker->pl_talk_lock = flag; + } +} + +static int aEBRK_check_start_around_sub(ACTOR* check_actor, ACTOR* actorx, f32 pos_x, f32 pos_z) { + int res = TRUE; + + while (check_actor != NULL) { + if (check_actor != actorx) { + f32 dist_x = check_actor->world.position.x - pos_x; + f32 dist_z = check_actor->world.position.z - pos_z; + + if (SQ(dist_x) + SQ(dist_z) < SQ(mFI_UNIT_BASE_SIZE_F)) { + res = FALSE; + break; + } + } + + check_actor = check_actor->next_actor; + } + + return res; +} + +static int aEBRK_check_start_around(ACTOR* actorx, GAME* game) { + static int part[] = { ACTOR_PART_NPC, ACTOR_PART_BG }; + f32 pos_x = actorx->world.position.x; + f32 pos_z = actorx->world.position.z; + int i; + int res = TRUE; + + for (i = 0; i < ARRAY_COUNT(part); i++) { + if (!aEBRK_check_start_around_sub(((GAME_PLAY*)game)->actor_info.list[part[i]].actor, actorx, pos_x, pos_z)) { + res = FALSE; + break; + } + } + + return res; +} + +static void aEBRK_check_tent(ACTOR* actorx, GAME* game) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)actorx; + ACTOR* tent_actor = broker->tent_actor; + + if (broker->tent_actor == NULL) { + broker->tent_actor = + Actor_info_name_search(&((GAME_PLAY*)game)->actor_info, mAc_PROFILE_BRSHOP, ACTOR_PART_ITEM); + } else if (tent_actor->id != mAc_PROFILE_BRSHOP || (tent_actor->mv_proc == NULL && tent_actor->dw_proc == NULL)) { + Actor_delete(actorx); + } +} + +static int aEBRK_get_sell_item_sum(void) { + mActor_name_t* sell_item_p = Save_Get(event_save_data).special.event.broker.items; + int sum = 0; + int i; + + for (i = 0; i < ARRAY_COUNT(Save_Get(event_save_data).special.event.broker.items); i++) { + if (*sell_item_p != EMPTY_NO) { + sum++; + } + + sell_item_p++; + } + + return sum; +} + +static int aEBRK_check_pl_list(PersonalID_c* pid, int n) { + int res = -1; + int i; + + for (i = 0; i < n; i++) { + if (mPr_CheckCmpPersonalID(pid, &Now_Private->player_ID) == TRUE) { + res = i; + } + + pid++; + } + + return res; +} + +static void aEBRK_talk_wait(EV_BROKER_ACTOR* broker) { + int animeSeqNo = aNPC_ANIM_WAIT1; + + if (chase_angle(&broker->npc_class.actor_class.shape_info.rotation.y, DEG2SHORT_ANGLE2(0.0f), + DEG2SHORT_ANGLE2(5.625f)) == FALSE) { + animeSeqNo = aNPC_ANIM_WALK1; + } + + broker->npc_class.actor_class.world.angle.y = broker->npc_class.actor_class.shape_info.rotation.y; + + if (broker->npc_class.draw.animation_id != animeSeqNo) { + Common_Get(clip).npc_clip->animation_init_proc(&broker->npc_class.actor_class, animeSeqNo, FALSE); + } +} + +static void aEBRK_turn(EV_BROKER_ACTOR* broker) { + if (broker->npc_class.actor_class.shape_info.rotation.y == broker->npc_class.movement.mv_angl) { + broker->action_step = aNPC_ACTION_END_STEP; + } +} + +static void aEBRK_enter(EV_BROKER_ACTOR* broker) { + ACTOR* actorx = &broker->npc_class.actor_class; + f32 walk_dist = actorx->home.position.z - actorx->world.position.z; + + if (walk_dist > 60.0f) { + broker->action_step = aNPC_ACTION_END_STEP; + } +} + +static void aEBRK_set_spd_info(EV_BROKER_ACTOR* broker, int action) { + if (action == aEBRK_ACTION_ENTER) { + broker->npc_class.movement.max_speed = 1.0f; + broker->npc_class.movement.acceleration = 0.1f; + broker->npc_class.movement.deceleration = 0.1f; + } else { + broker->npc_class.actor_class.speed = 0.0f; + broker->npc_class.movement.max_speed = 0.0f; + broker->npc_class.movement.acceleration = 0.0f; + broker->npc_class.movement.deceleration = 0.0f; + } +} + +static void aEBRK_setupAction(EV_BROKER_ACTOR* broker, int action) { + static aEBRK_ACT_PROC process[] = { + &aEBRK_talk_wait, + &aEBRK_turn, + &aEBRK_enter, + (aEBRK_ACT_PROC)&none_proc1, + }; + + broker->action_step = 0; + broker->action = action; + broker->action_proc = process[action]; + aEBRK_set_animation(broker, action); + aEBRK_set_spd_info(broker, action); +} + +static void aEBRK_act_chg_data_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + nactorx->action.act_obj = aNPC_ACT_OBJ_PLAYER; +} + +static void aEBRK_act_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)nactorx; + + nactorx->action.step = 0; + aEBRK_setupAction(broker, broker->next_action); +} + +static void aEBRK_act_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)nactorx; + + (*broker->action_proc)(broker); +} + +static void aEBRK_act_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int proc) { + static aNPC_SUB_PROC act_proc[] = { + &aEBRK_act_init_proc, + &aEBRK_act_chg_data_proc, + &aEBRK_act_main_proc, + }; + + (*act_proc[proc])(nactorx, play); +} + +static void aEBRK_think_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)nactorx; + + if (nactorx->action.step == aNPC_ACTION_END_STEP) { + aEBRK_set_request_act(broker); + if (nactorx->action.idx == aNPC_ACT_TALK) { + nactorx->movement.mv_angl = DEG2SHORT_ANGLE2(180.0f); + nactorx->movement.mv_add_angl = DEG2SHORT_ANGLE2(11.25f); + broker->next_action = aEBRK_ACTION_TURN; + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + } + } else if (broker->action_step == aNPC_ACTION_END_STEP) { + switch (broker->action) { + case aEBRK_ACTION_TURN: + nactorx->condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_HEAD_LOOKAT | + aNPC_COND_DEMO_SKIP_TALK_CHECK | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | + aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_OBJ_COL_CHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | + aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; + aEBRK_setupAction(broker, aEBRK_ACTION_ENTER); + break; + case aEBRK_ACTION_ENTER: + nactorx->condition_info.hide_request = TRUE; + mPlib_request_main_wait_type3(&play->game); + aEBRK_set_pl_talk_lock(broker, FALSE); + aEBRK_setupAction(broker, aEBRK_ACTION_HIDE); + break; + } + } +} + +static void aEBRK_think_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)nactorx; + + nactorx->think.interrupt_flags = 0; + nactorx->action.act_proc = &aEBRK_act_proc; + aEBRK_set_request_act(broker); +} + +static void aEBRK_think_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int proc) { + static aNPC_SUB_PROC think_proc[] = { + &aEBRK_think_init_proc, + &aEBRK_think_main_proc, + }; + + (*think_proc[proc])(nactorx, play); +} + +static void aEBRK_schedule_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + nactorx->think.think_proc = &aEBRK_think_proc; + Common_Get(clip).npc_clip->think_proc(nactorx, play, aNPC_THINK_SPECIAL, 0); +} + +static void aEBRK_schedule_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + if (!Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 1)) { + Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 2); + } +} + +static void aEBRK_schedule_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int proc) { + static aNPC_SUB_PROC sche_proc[] = { + &aEBRK_schedule_init_proc, + &aEBRK_schedule_main_proc, + }; + + (*sche_proc[proc])(nactorx, play); +} + +static void aEBRK_set_talk_info_talk_request(ACTOR* actorx) { + int msg_no; + u8 item_name[mIN_ITEM_NAME_LEN]; + mActor_name_t item; + int idx; + + idx = aEBRK_check_pl_list(Save_Get(event_save_data).special.event.broker.pid, + ARRAY_COUNT(Save_Get(event_save_data).special.event.broker.pid)); + if (idx != -1) { + item = Save_Get(event_save_data).special.event.broker.sold_items[idx]; + mIN_copy_name_str(item_name, item); + mMsg_SET_ITEM_STR_ART(mMsg_ITEM_STR2, item_name, mIN_ITEM_NAME_LEN, item); + msg_no = 0x078A; + } else { + idx = aEBRK_check_pl_list(&Common_Get(special_event_common).broker.entered_pid, 1); + if (idx != -1) { + msg_no = 0x0789; + } else { + msg_no = 0x788; + } + } + + mDemo_Set_msg_num(msg_no); + aEBRK_set_pl_talk_lock((EV_BROKER_ACTOR*)actorx, TRUE); +} + +static void aEBRK_talk_request(ACTOR* actorx, GAME* game) { + mDemo_Request(mDemo_TYPE_TALK, actorx, &aEBRK_set_talk_info_talk_request); +} + +static int aEBRK_talk_init(ACTOR* actorx, GAME* game) { + EV_BROKER_ACTOR* broker = (EV_BROKER_ACTOR*)actorx; + + broker->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1; + mDemo_Set_ListenAble(); + return TRUE; +} + +static int aEBRK_talk_end_chk(ACTOR* actorx, GAME* game) { + int res = FALSE; + + if (mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { + res = TRUE; + } + + return res; +} + +static void aEBRK_actor_move(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->move_proc(actorx, game); + aEBRK_check_tent(actorx, game); +} diff --git a/src/ac_ev_castaway.c b/src/ac_ev_castaway.c index 28c0b9d6..85a6dd0b 100644 --- a/src/ac_ev_castaway.c +++ b/src/ac_ev_castaway.c @@ -10,91 +10,80 @@ static void aECST_actor_draw(ACTOR* actorx, GAME* game); static void aECST_actor_save(ACTOR* actorx, GAME* game); ACTOR_PROFILE Ev_Castaway_Profile = { - mAc_PROFILE_EV_CASTAWAY, - ACTOR_PART_NPC, - ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - EMPTY_NO, - ACTOR_OBJ_BANK_KEEP, - sizeof(EV_CASTAWAY_ACTOR), - &aECST_actor_ct, - &aECST_actor_dt, - &aECST_actor_init, - mActor_NONE_PROC1, - &aECST_actor_save + mAc_PROFILE_EV_CASTAWAY, + ACTOR_PART_NPC, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(EV_CASTAWAY_ACTOR), + &aECST_actor_ct, + &aECST_actor_dt, + &aECST_actor_init, + mActor_NONE_PROC1, + &aECST_actor_save, }; static void aECST_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int type); static void aECST_actor_ct(ACTOR* actorx, GAME* game) { - static aNPC_ct_data_c ct_data = { - &aECST_actor_move, - &aECST_actor_draw, - 5, - NULL, - NULL, - NULL, - 0 - }; + static aNPC_ct_data_c ct_data = { &aECST_actor_move, &aECST_actor_draw, 5, NULL, NULL, NULL, 0 }; - static xyz_t def_pos = { 3580.0f, 0.0f, 4670.0f }; // 'G-5' @ 9-4 - - EV_CASTAWAY_ACTOR* castaway = (EV_CASTAWAY_ACTOR*)actorx; + static xyz_t def_pos = { 3580.0f, 0.0f, 4670.0f }; // 'G-5' @ 9-4 - if ((*Common_Get(clip).npc_clip->birth_check_proc)(actorx, game) == TRUE) { - castaway->npc_class.schedule.schedule_proc = &aECST_schedule_proc; - (*Common_Get(clip).npc_clip->ct_proc)(actorx, game, &ct_data); - castaway->npc_class.condition_info.demo_flg = ~aNPC_COND_DEMO_SKIP_MOVE_Y; // is this a mistake? - castaway->npc_class.condition_info.hide_request = FALSE; - castaway->npc_class.palActorIgnoreTimer = -1; - aNPC_SPNPC_BIT_SET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_DOZAEMON); - actorx->status_data.weight = 254; - actorx->gravity = 0.0f; - actorx->max_velocity_y = 0.0f; - actorx->shape_info.rotation.y = DEG2SHORT_ANGLE(68.027344f); // 0x3060 - actorx->world.angle.y = DEG2SHORT_ANGLE(68.027344f); // 0x3060 - castaway->npc_class.movement.mv_angl = DEG2SHORT_ANGLE(68.027344f); // 0x3060 - actorx->world.position = def_pos; - actorx->home.position = def_pos; - } + EV_CASTAWAY_ACTOR* castaway = (EV_CASTAWAY_ACTOR*)actorx; + + if ((*Common_Get(clip).npc_clip->birth_check_proc)(actorx, game) == TRUE) { + castaway->npc_class.schedule.schedule_proc = &aECST_schedule_proc; + (*Common_Get(clip).npc_clip->ct_proc)(actorx, game, &ct_data); + castaway->npc_class.condition_info.demo_flg = ~aNPC_COND_DEMO_SKIP_MOVE_Y; // is this a mistake? + castaway->npc_class.condition_info.hide_request = FALSE; + castaway->npc_class.palActorIgnoreTimer = -1; + aNPC_SPNPC_BIT_SET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_DOZAEMON); + actorx->status_data.weight = 254; + actorx->gravity = 0.0f; + actorx->max_velocity_y = 0.0f; + actorx->shape_info.rotation.y = DEG2SHORT_ANGLE(68.027344f); // 0x3060 + actorx->world.angle.y = DEG2SHORT_ANGLE(68.027344f); // 0x3060 + castaway->npc_class.movement.mv_angl = DEG2SHORT_ANGLE(68.027344f); // 0x3060 + actorx->world.position = def_pos; + actorx->home.position = def_pos; + } } static void aECST_actor_save(ACTOR* actorx, GAME* game) { - (*Common_Get(clip).npc_clip->save_proc)(actorx, game); + (*Common_Get(clip).npc_clip->save_proc)(actorx, game); } static void aECST_actor_dt(ACTOR* actorx, GAME* game) { - (*Common_Get(clip).npc_clip->dt_proc)(actorx, game); + (*Common_Get(clip).npc_clip->dt_proc)(actorx, game); } static void aECST_actor_init(ACTOR* actorx, GAME* game) { - (*Common_Get(clip).npc_clip->init_proc)(actorx, game); + (*Common_Get(clip).npc_clip->init_proc)(actorx, game); } static void aECST_schedule_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - if (actorx->draw.animation_id != 116) { - (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)actorx, 116, 0); - } + if (actorx->draw.animation_id != 116) { + (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)actorx, aNPC_ANIM_GETUP_WAIT_SEG1, 0); + } } static void aECST_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int type) { - static aNPC_SUB_PROC sched_proc[2] = { - (aNPC_SUB_PROC)&none_proc1, - aECST_schedule_main_proc - }; + static aNPC_SUB_PROC sched_proc[2] = { (aNPC_SUB_PROC)&none_proc1, aECST_schedule_main_proc }; - (*sched_proc[type])(actorx, play); + (*sched_proc[type])(actorx, play); } static void aECST_actor_move(ACTOR* actorx, GAME* game) { - EV_CASTAWAY_ACTOR* castaway = (EV_CASTAWAY_ACTOR*)actorx; - s16 cycle = castaway->bobbing_cycle; + EV_CASTAWAY_ACTOR* castaway = (EV_CASTAWAY_ACTOR*)actorx; + s16 cycle = castaway->bobbing_cycle; - cycle += 512; - actorx->position_speed.y = (actorx->home.position.y + 4.0f + sin_s(cycle) * 4.0f) - actorx->world.position.y; - castaway->bobbing_cycle = cycle; - (*Common_Get(clip).npc_clip->move_proc)(actorx, game); + cycle += 512; + actorx->position_speed.y = (actorx->home.position.y + 4.0f + sin_s(cycle) * 4.0f) - actorx->world.position.y; + castaway->bobbing_cycle = cycle; + (*Common_Get(clip).npc_clip->move_proc)(actorx, game); } static void aECST_actor_draw(ACTOR* actorx, GAME* game) { - (*Common_Get(clip).npc_clip->draw_proc)(actorx, game); + (*Common_Get(clip).npc_clip->draw_proc)(actorx, game); } diff --git a/src/ac_ev_ghost_schedule.c_inc b/src/ac_ev_ghost_schedule.c_inc index 0423ba3a..e8e0de76 100644 --- a/src/ac_ev_ghost_schedule.c_inc +++ b/src/ac_ev_ghost_schedule.c_inc @@ -1,376 +1,305 @@ static void aEGH_look_player(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - if (ghost->npc_class.action.step == aNPC_ACTION_END_STEP) { - u8 action = 4; - s16 player_y = ghost->npc_class.actor_class.player_angle_y; - s16 rot_y = ghost->npc_class.actor_class.shape_info.rotation.y; - s16 diff = player_y - rot_y; - - if (ABS(diff) < DEG2SHORT_ANGLE(67.5f)) { - action = 0; - } + if (ghost->npc_class.action.step == aNPC_ACTION_END_STEP) { + u8 action = 4; + s16 player_y = ghost->npc_class.actor_class.player_angle_y; + s16 rot_y = ghost->npc_class.actor_class.shape_info.rotation.y; + s16 diff = player_y - rot_y; - aEGH_set_request_act(ghost, 4, action, 2, 1, 0, 0); - } + if (ABS(diff) < DEG2SHORT_ANGLE(67.5f)) { + action = 0; + } + + aEGH_set_request_act(ghost, 4, action, 2, 1, 0, 0); + } } static int aEGH_bitset_func(u16 bit) { - u32 player_no = Common_Get(player_no); - mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); - mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); + u32 player_no = Common_Get(player_no); + mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); + mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); - if (player_no == mPr_FOREIGNER) { - if (ghost_common != NULL) { - ghost_common->flags |= bit; - return TRUE; + if (player_no == mPr_FOREIGNER) { + if (ghost_common != NULL) { + ghost_common->flags |= bit; + return TRUE; + } + } else if (ghost_save != NULL) { + ghost_save->flags |= (u16)(bit << player_no); + return TRUE; } - } - else if (ghost_save != NULL) { - ghost_save->flags |= (u16)(bit << player_no); - return TRUE; - } - return FALSE; + return FALSE; } static int aEGH_bitclr_func(u16 bit) { - u32 player_no = Common_Get(player_no); - mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); - mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); + u32 player_no = Common_Get(player_no); + mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); + mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); - if (player_no == mPr_FOREIGNER) { - if (ghost_common != NULL) { - ghost_common->flags &= ~bit; - return TRUE; + if (player_no == mPr_FOREIGNER) { + if (ghost_common != NULL) { + ghost_common->flags &= ~bit; + return TRUE; + } + } else if (ghost_save != NULL) { + ghost_save->flags &= ~(u16)(bit << player_no); + return TRUE; } - } - else if (ghost_save != NULL) { - ghost_save->flags &= ~(u16)(bit << player_no); - return TRUE; - } - return FALSE; + return FALSE; } static u16 aEGH_bitcheck_func(u16 bit) { - u32 player_no = Common_Get(player_no); - mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); - mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); + u32 player_no = Common_Get(player_no); + mEv_gst_c* ghost_save = (mEv_gst_c*)mEv_get_save_area(mEv_EVENT_GHOST, 54); + mEv_gst_common_c* ghost_common = (mEv_gst_common_c*)mEv_get_common_area(mEv_EVENT_GHOST, 55); - if (player_no == mPr_FOREIGNER) { - if (ghost_common != NULL) { - return ghost_common->flags & bit; + if (player_no == mPr_FOREIGNER) { + if (ghost_common != NULL) { + return ghost_common->flags & bit; + } + } else if (ghost_save != NULL) { + return (u16)(bit << player_no) & ghost_save->flags; } - } - else if (ghost_save != NULL) { - return (u16)(bit << player_no) & ghost_save->flags; - } - return FALSE; + return FALSE; } static int aEGH_equal_block(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - int bx; - int bz; + int bx; + int bz; - mFI_Wpos2BlockNum(&bx, &bz, GET_PLAYER_ACTOR(play)->actor_class.world.position); - return bx == ghost->npc_class.actor_class.block_x && bz == ghost->npc_class.actor_class.block_z; + mFI_Wpos2BlockNum(&bx, &bz, GET_PLAYER_ACTOR(play)->actor_class.world.position); + return bx == ghost->npc_class.actor_class.block_x && bz == ghost->npc_class.actor_class.block_z; } static int aEGH_time_over() { - return Common_Get(time.now_sec) > (4 * mTM_SECONDS_IN_HOUR); + return Common_Get(time.now_sec) > (4 * mTM_SECONDS_IN_HOUR); } static void aEGH_byebye_check(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ACTOR* actorx = (ACTOR*)ghost; + ACTOR* actorx = (ACTOR*)ghost; - if ( - mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE && - mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && - aEGH_time_over() != FALSE - ) { - if (aEGH_equal_block(ghost, play)) { - switch (ghost->think_act) { - case aEGH_THINK_SPEAK: - { - aEGH_setup_think_proc(ghost, play, aEGH_THINK_BYEBYE); - ghost->msg_no = 0x2EDD; - ghost->npc_class.actor_class.talk_distance = 1000.0f; - ghost->_9AA = 1; - break; - } + if (mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && + aEGH_time_over() != FALSE) { + if (aEGH_equal_block(ghost, play)) { + switch (ghost->think_act) { + case aEGH_THINK_SPEAK: { + aEGH_setup_think_proc(ghost, play, aEGH_THINK_BYEBYE); + ghost->msg_no = 0x2EDD; + ghost->npc_class.actor_class.talk_distance = 1000.0f; + ghost->_9AA = 1; + break; + } - case aEGH_THINK_NORMAL_WAIT: - case aEGH_THINK_IRAI_AF: - case aEGH_THINK_BYE: - case aEGH_THINK_WELCOM: - { - Actor_delete((ACTOR*)ghost); - break; + case aEGH_THINK_NORMAL_WAIT: + case aEGH_THINK_IRAI_AF: + case aEGH_THINK_BYE: + case aEGH_THINK_WELCOM: { + Actor_delete((ACTOR*)ghost); + break; + } + } + } else { + aEGH_setup_think_proc(ghost, play, aEGH_THINK_IRAI); } - } } - else { - aEGH_setup_think_proc(ghost, play, aEGH_THINK_IRAI); - } - } } static void aEGH_irai(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - if (ghost->npc_class.actor_class.player_distance_xz > 220.0f) { - aEGH_setup_think_proc(ghost, play, aEGH_THINK_BYE); - } + if (ghost->npc_class.actor_class.player_distance_xz > 220.0f) { + aEGH_setup_think_proc(ghost, play, aEGH_THINK_BYE); + } } static void aEGH_bye(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - if (ghost->npc_class.actor_class.player_distance_xz < 200.0f) { - aEGH_setup_think_proc(ghost, play, aEGH_THINK_WELCOM); - } + if (ghost->npc_class.actor_class.player_distance_xz < 200.0f) { + aEGH_setup_think_proc(ghost, play, aEGH_THINK_WELCOM); + } } static void aEGH_byebye(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - if (ghost->alpha == 0) { - Actor_delete((ACTOR*)ghost); - } - else { - if (ghost->bye_bye_timer != 0) { - ghost->bye_bye_timer--; + if (ghost->alpha == 0) { + Actor_delete((ACTOR*)ghost); + } else { + if (ghost->bye_bye_timer != 0) { + ghost->bye_bye_timer--; - if (ghost->bye_bye_timer == 0) { - sAdo_SysTrgStart(0x16C); - } - } - else { - if (ghost->bye_bye_angle < 30000) { - ghost->bye_bye_angle += 60; - } + if (ghost->bye_bye_timer == 0) { + sAdo_SysTrgStart(0x16C); + } + } else { + if (ghost->bye_bye_angle < 30000) { + ghost->bye_bye_angle += 60; + } - ghost->npc_class.actor_class.shape_info.rotation.y += ghost->bye_bye_angle; - ghost->npc_class.actor_class.world.angle.y = ghost->npc_class.actor_class.shape_info.rotation.y; - ghost->npc_class.movement.mv_angl = ghost->npc_class.actor_class.world.angle.y; - ghost->npc_class.movement.mv_add_angl = 0; - } + ghost->npc_class.actor_class.shape_info.rotation.y += ghost->bye_bye_angle; + ghost->npc_class.actor_class.world.angle.y = ghost->npc_class.actor_class.shape_info.rotation.y; + ghost->npc_class.movement.mv_angl = ghost->npc_class.actor_class.world.angle.y; + ghost->npc_class.movement.mv_add_angl = 0; + } - if (ghost->bye_bye_scale_timer != 0) { - ghost->bye_bye_scale_timer--; + if (ghost->bye_bye_scale_timer != 0) { + ghost->bye_bye_scale_timer--; + } else { + ghost->npc_class.actor_class.scale.x += -0.00004f; + ghost->npc_class.actor_class.scale.z = ghost->npc_class.actor_class.scale.x; + } } - else { - ghost->npc_class.actor_class.scale.x += -0.00004f; - ghost->npc_class.actor_class.scale.z = ghost->npc_class.actor_class.scale.x; - } - } } static void aEGH_speak_byebye(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ACTOR* actorx = (ACTOR*)ghost; + ACTOR* actorx = (ACTOR*)ghost; - if ( - mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE && - mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && - aEGH_equal_block(ghost, play) == FALSE - ) { - aEGH_setup_think_proc(ghost, play, aEGH_THINK_IRAI); - } + if (mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && + aEGH_equal_block(ghost, play) == FALSE) { + aEGH_setup_think_proc(ghost, play, aEGH_THINK_IRAI); + } } static void aEGH_think_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx; + EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx; - (*ghost->think_proc)(ghost, play); - aEGH_look_player(ghost, play); + (*ghost->think_proc)(ghost, play); + aEGH_look_player(ghost, play); } static void aEGH_think_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx; - u8 think_act; + EV_GHOST_ACTOR* ghost = (EV_GHOST_ACTOR*)actorx; + u8 think_act; - if (ghost->_9AC) { - ghost->_9AC = FALSE; - } - else { - if (aEGH_bitcheck_func(aEGH_BIT_FOUND_GHOST)) { - ghost->alpha = 140; - think_act = aEGH_THINK_SPEAK; - } - else { - ghost->alpha = 0; - think_act = aEGH_THINK_IRAI_AF; - } + if (ghost->_9AC) { + ghost->_9AC = FALSE; + } else { + if (aEGH_bitcheck_func(aEGH_BIT_FOUND_GHOST)) { + ghost->alpha = 140; + think_act = aEGH_THINK_SPEAK; + } else { + ghost->alpha = 0; + think_act = aEGH_THINK_IRAI_AF; + } - actorx->actor_class.status_data.weight = 255; - actorx->condition_info.hide_request = FALSE; - aEGH_setup_think_proc(ghost, play, think_act); - actorx->condition_info.demo_flg = aNPC_COND_DEMO_SKIP_FOOTSTEPS_VFX | - aNPC_COND_DEMO_SKIP_FEEL_CHECK | - aNPC_COND_DEMO_SKIP_FOOTSTEPS | - aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | - aNPC_COND_DEMO_SKIP_HEAD_LOOKAT; - } + actorx->actor_class.status_data.weight = 255; + actorx->condition_info.hide_request = FALSE; + aEGH_setup_think_proc(ghost, play, think_act); + actorx->condition_info.demo_flg = aNPC_COND_DEMO_SKIP_FOOTSTEPS_VFX | aNPC_COND_DEMO_SKIP_FEEL_CHECK | + aNPC_COND_DEMO_SKIP_FOOTSTEPS | aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | + aNPC_COND_DEMO_SKIP_HEAD_LOOKAT; + } } static void aEGH_normal_wait_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)ghost, 126, FALSE); - ghost->npc_class.draw.main_animation.keyframe.frame_control.mode = cKF_FRAMECONTROL_REPEAT; - ghost->npc_class.action.idx = 0; - aEGH_set_request_act(ghost, 4, 0, 0, 0, 0, 0); + (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)ghost, aNPC_ANIM_GSTWAIT1, FALSE); + ghost->npc_class.draw.main_animation.keyframe.frame_control.mode = cKF_FRAMECONTROL_REPEAT; + ghost->npc_class.action.idx = 0; + aEGH_set_request_act(ghost, 4, 0, 0, 0, 0, 0); } static void aEGH_irai_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ghost->npc_class.actor_class.talk_distance = 80.0f; - aEGH_normal_wait_init(ghost, play); - ghost->msg_no = 0x2EE2; + ghost->npc_class.actor_class.talk_distance = 80.0f; + aEGH_normal_wait_init(ghost, play); + ghost->msg_no = 0x2EE2; } static void aEGH_irai_af_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ghost->npc_class.actor_class.talk_distance = 55.0f; - ghost->msg_no = 0x2EE7; - (*Common_Get(clip).npc_clip->chg_schedule_proc)((NPC_ACTOR*)ghost, play, 5); - ghost->npc_class.actor_class.status_data.weight = 80; + ghost->npc_class.actor_class.talk_distance = 55.0f; + ghost->msg_no = 0x2EE7; + (*Common_Get(clip).npc_clip->chg_schedule_proc)((NPC_ACTOR*)ghost, play, 5); + ghost->npc_class.actor_class.status_data.weight = 80; } static void aEGH_bye_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ghost->npc_class.actor_class.talk_distance = 280.0f; - aEGH_normal_wait_init(ghost, play); - ghost->msg_no = 0x2ED8; + ghost->npc_class.actor_class.talk_distance = 280.0f; + aEGH_normal_wait_init(ghost, play); + ghost->msg_no = 0x2ED8; } static void aEGH_welcom_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - ghost->npc_class.actor_class.talk_distance = 200.0f; - aEGH_normal_wait_init(ghost, play); - ghost->msg_no = 0x2ED3; + ghost->npc_class.actor_class.talk_distance = 200.0f; + aEGH_normal_wait_init(ghost, play); + ghost->msg_no = 0x2ED3; } static void aEGH_byebye_init(EV_GHOST_ACTOR* ghost, GAME_PLAY* play) { - aEGH_bitclr_func(aEGH_BIT_FOUND_GHOST); - ghost->bye_bye_angle = -1000; - ghost->bye_bye_timer = 25; - ghost->bye_bye_scale_timer = 48; - ghost->bye_bye_transparency_delay_timer = 43; - aEGH_normal_wait_init(ghost, play); - ghost->npc_class.head.lock_flag = TRUE; + aEGH_bitclr_func(aEGH_BIT_FOUND_GHOST); + ghost->bye_bye_angle = -1000; + ghost->bye_bye_timer = 25; + ghost->bye_bye_scale_timer = 48; + ghost->bye_bye_transparency_delay_timer = 43; + aEGH_normal_wait_init(ghost, play); + ghost->npc_class.head.lock_flag = TRUE; } static aEGH_setup_c dt_tbl[aEGH_THINK_NUM] = { - { - aEGH_THINK_PROC_BYE, - aEGH_THINK_INIT_NORMAL_WAIT, - aEGH_TALK_REQUEST_NONE, - aEGH_TALK_END_WAIT, - aEGH_THINK_NORMAL_WAIT - }, - { - aEGH_THINK_PROC_BYEBYE, - aEGH_THINK_INIT_BYEBYE, - aEGH_TALK_REQUEST_NONE, - aEGH_TALK_END_WAIT, - aEGH_THINK_IRAI - }, + { aEGH_THINK_PROC_BYE, aEGH_THINK_INIT_NORMAL_WAIT, aEGH_TALK_REQUEST_NONE, aEGH_TALK_END_WAIT, + aEGH_THINK_NORMAL_WAIT }, + { aEGH_THINK_PROC_BYEBYE, aEGH_THINK_INIT_BYEBYE, aEGH_TALK_REQUEST_NONE, aEGH_TALK_END_WAIT, aEGH_THINK_IRAI }, - { - aEGH_THINK_PROC_NONE, - aEGH_THINK_INIT_WELCOM, - aEGH_TALK_REQUEST_FORCE, - aEGH_TALK_END_WAIT, - aEGH_THINK_WELCOM - }, + { aEGH_THINK_PROC_NONE, aEGH_THINK_INIT_WELCOM, aEGH_TALK_REQUEST_FORCE, aEGH_TALK_END_WAIT, aEGH_THINK_WELCOM }, - { - aEGH_THINK_PROC_BYE, - aEGH_THINK_INIT_BYE, - aEGH_TALK_REQUEST_FORCE, - aEGH_TALK_GIVE_ME_WAIT, - aEGH_THINK_NORMAL_WAIT - }, + { aEGH_THINK_PROC_BYE, aEGH_THINK_INIT_BYE, aEGH_TALK_REQUEST_FORCE, aEGH_TALK_GIVE_ME_WAIT, + aEGH_THINK_NORMAL_WAIT }, - { - aEGH_THINK_PROC_IRAI, - aEGH_THINK_INIT_IRAI, - aEGH_TALK_REQUEST_FORCE, - aEGH_TALK_SELECT_WAIT, - aEGH_THINK_SPEAK - }, + { aEGH_THINK_PROC_IRAI, aEGH_THINK_INIT_IRAI, aEGH_TALK_REQUEST_FORCE, aEGH_TALK_SELECT_WAIT, aEGH_THINK_SPEAK }, - { - aEGH_THINK_PROC_SPEAK_BYEBYE, - aEGH_THINK_INIT_NORMAL_WAIT, - aEGH_TALK_REQUEST_FORCE, - aEGH_TALK_SELECT_ROOF, - aEGH_THINK_IRAI - }, + { aEGH_THINK_PROC_SPEAK_BYEBYE, aEGH_THINK_INIT_NORMAL_WAIT, aEGH_TALK_REQUEST_FORCE, aEGH_TALK_SELECT_ROOF, + aEGH_THINK_IRAI }, - { - aEGH_THINK_PROC_NONE, - aEGH_THINK_INIT_IRAI_AF, - aEGH_TALK_REQUEST_NORM, - aEGH_TALK_END_WAIT, - aEGH_THINK_SPEAK - } + { aEGH_THINK_PROC_NONE, aEGH_THINK_INIT_IRAI_AF, aEGH_TALK_REQUEST_NORM, aEGH_TALK_END_WAIT, aEGH_THINK_SPEAK } }; -static aEGH_PROC proc_table[aEGH_THINK_PROC_NUM] = { - (aEGH_PROC)&none_proc1, - &aEGH_irai, - &aEGH_bye, - &aEGH_byebye, - &aEGH_speak_byebye -}; +static aEGH_PROC proc_table[aEGH_THINK_PROC_NUM] = { (aEGH_PROC)&none_proc1, &aEGH_irai, &aEGH_bye, &aEGH_byebye, + &aEGH_speak_byebye }; -static aEGH_PROC init_table[aEGH_THINK_INIT_NUM] = { - (aEGH_PROC)&none_proc1, - &aEGH_normal_wait_init, - &aEGH_irai_init, - &aEGH_irai_af_init, - &aEGH_bye_init, - &aEGH_welcom_init, - &aEGH_byebye_init -}; +static aEGH_PROC init_table[aEGH_THINK_INIT_NUM] = { (aEGH_PROC)&none_proc1, &aEGH_normal_wait_init, &aEGH_irai_init, + &aEGH_irai_af_init, &aEGH_bye_init, &aEGH_welcom_init, + &aEGH_byebye_init }; static void aEGH_setup_think_proc(EV_GHOST_ACTOR* ghost, GAME_PLAY* play, u8 think_act) { - static aNPC_TALK_REQUEST_PROC talk_request_table[aEGH_TALK_REQUEST_NUM] = { - (aNPC_TALK_REQUEST_PROC)&none_proc1, - &aEGH_norm_talk_request, - &aEGH_force_talk_request - }; - - aEGH_setup_c* data = &dt_tbl[think_act]; + static aNPC_TALK_REQUEST_PROC talk_request_table[aEGH_TALK_REQUEST_NUM] = { (aNPC_TALK_REQUEST_PROC)&none_proc1, + &aEGH_norm_talk_request, + &aEGH_force_talk_request }; - ghost->think_act = think_act; - ghost->think_proc = proc_table[data->think_proc]; - ghost->npc_class.talk_info.talk_request_proc = talk_request_table[data->talk_request_proc]; - ghost->talk_act = data->talk_act; - ghost->after_talk_think_act = data->talk_after_act; - (*init_table[data->think_init_proc])(ghost, play); - ghost->_9A7 = TRUE; + aEGH_setup_c* data = &dt_tbl[think_act]; + + ghost->think_act = think_act; + ghost->think_proc = proc_table[data->think_proc]; + ghost->npc_class.talk_info.talk_request_proc = talk_request_table[data->talk_request_proc]; + ghost->talk_act = data->talk_act; + ghost->after_talk_think_act = data->talk_after_act; + (*init_table[data->think_init_proc])(ghost, play); + ghost->_9A7 = TRUE; } static void aEGH_think_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int think_type) { - switch (think_type) { - case 0: - aEGH_think_init_proc(actorx, play); - break; - case 1: - aEGH_think_main_proc(actorx, play); - break; - } + switch (think_type) { + case 0: + aEGH_think_init_proc(actorx, play); + break; + case 1: + aEGH_think_main_proc(actorx, play); + break; + } } static void aEGH_schedule_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - actorx->think.think_proc = &aEGH_think_proc; - (*Common_Get(clip).npc_clip->think_proc)(actorx, play, aNPC_THINK_SPECIAL, 0); + actorx->think.think_proc = &aEGH_think_proc; + (*Common_Get(clip).npc_clip->think_proc)(actorx, play, aNPC_THINK_SPECIAL, 0); } static void aEGH_schedule_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - if ((*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, 1) == FALSE) { - (*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, 2); - } + if ((*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, 1) == FALSE) { + (*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, 2); + } } static void aEGH_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int sched_type) { - switch (sched_type) { - case 0: - aEGH_schedule_init_proc(actorx, play); - break; - case 1: - aEGH_schedule_main_proc(actorx, play); - break; - } + switch (sched_type) { + case 0: + aEGH_schedule_init_proc(actorx, play); + break; + case 1: + aEGH_schedule_main_proc(actorx, play); + break; + } } diff --git a/src/ac_ev_majin.c b/src/ac_ev_majin.c index 58bdfa11..82a995ac 100644 --- a/src/ac_ev_majin.c +++ b/src/ac_ev_majin.c @@ -9,17 +9,10 @@ extern void aEMJ_actor_init(ACTOR*, GAME*); extern void aEMJ_actor_save(ACTOR*, GAME*); ACTOR_PROFILE Ev_Majin_Profile = { - mAc_PROFILE_EV_MAJIN, - ACTOR_PART_NPC, - ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - SP_NPC_EV_MAJIN, - ACTOR_OBJ_BANK_KEEP, - sizeof(EV_NPCMAJIN_ACTOR), - aEMJ_actor_ct, - aEMJ_actor_dt, - aEMJ_actor_init, - NONE_ACTOR_PROC, - aEMJ_actor_save, + mAc_PROFILE_EV_MAJIN, ACTOR_PART_NPC, ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + SP_NPC_EV_MAJIN, ACTOR_OBJ_BANK_KEEP, sizeof(EV_NPCMAJIN_ACTOR), + aEMJ_actor_ct, aEMJ_actor_dt, aEMJ_actor_init, + NONE_ACTOR_PROC, aEMJ_actor_save, }; extern void aEMJ_actor_move(ACTOR*, GAME*); @@ -31,57 +24,50 @@ static void aEMJ_schedule_proc(NPC_ACTOR*, GAME_PLAY*, int); void aEMJ_actor_ct(ACTOR* actor, GAME* game) { static aNPC_ct_data_c ct_data = { - &aEMJ_actor_move, - &aEMJ_actor_draw, - 5, - mActor_NONE_PROC1, - &aEMJ_talk_init, - &aEMJ_talk_end_chk, - 0, + &aEMJ_actor_move, &aEMJ_actor_draw, 5, mActor_NONE_PROC1, &aEMJ_talk_init, &aEMJ_talk_end_chk, 0, }; EV_NPCMAJIN_ACTOR* majin = (EV_NPCMAJIN_ACTOR*)actor; - - if(Common_Get(clip.npc_clip)->birth_check_proc(actor,game) == TRUE){ + + if (Common_Get(clip.npc_clip)->birth_check_proc(actor, game) == TRUE) { majin->npc_class.schedule.schedule_proc = aEMJ_schedule_proc; - Common_Get(clip.npc_clip)->ct_proc(actor,game,&ct_data); + Common_Get(clip.npc_clip)->ct_proc(actor, game, &ct_data); majin->npc_class.head.lock_flag = 1; - majin->npc_class.talk_info.default_turn_animation = 0x4E; - majin->npc_class.talk_info.default_animation = 0x4E; + majin->npc_class.talk_info.default_turn_animation = aNPC_ANIM_WAIT_R1; + majin->npc_class.talk_info.default_animation = aNPC_ANIM_WAIT_R1; majin->npc_class.talk_info.turn = 2; } } void aEMJ_actor_save(ACTOR* actor, GAME* game) { - Common_Get(clip.npc_clip)->save_proc(actor,game); + Common_Get(clip.npc_clip)->save_proc(actor, game); } void aEMJ_actor_dt(ACTOR* actor, GAME* game) { - - if(Common_Get(clip.groundhog_control_clip) != NULL){ + + if (Common_Get(clip.groundhog_control_clip) != NULL) { Common_Get(clip.groundhog_control_clip)->groundhog_npc_actor = NULL; } - Common_Get(clip.npc_clip)->dt_proc(actor,game); - Common_Get(clip.effect_clip)->effect_kill_proc(0x5D, 0xFFFF); - + Common_Get(clip.npc_clip)->dt_proc(actor, game); + Common_Get(clip.effect_clip)->effect_kill_proc(eEC_EFFECT_RESET_HOLE, RSV_NO); } void aEMJ_actor_init(ACTOR* actor, GAME* game) { - Common_Get(clip.npc_clip)->init_proc(actor,game); + Common_Get(clip.npc_clip)->init_proc(actor, game); } -void aEMJ_set_animation(ACTOR* actor, int idx){ - static s16 animeSeqNo[] = {79,78,80}; - - Common_Get(clip.npc_clip)->animation_init_proc(actor,animeSeqNo[idx],0); +void aEMJ_set_animation(ACTOR* actor, int idx) { + static s16 animeSeqNo[] = { aNPC_ANIM_APPEAR1, aNPC_ANIM_WAIT_R1, aNPC_ANIM_GO_UG1 }; + + Common_Get(clip.npc_clip)->animation_init_proc(actor, animeSeqNo[idx], 0); } -void aEMJ_actor_move(ACTOR* actor, GAME* game){ - Common_Get(clip.npc_clip)->move_proc(actor,game); +void aEMJ_actor_move(ACTOR* actor, GAME* game) { + Common_Get(clip.npc_clip)->move_proc(actor, game); actor->shape_info.draw_shadow = 0; } void aEMJ_actor_draw(ACTOR* actor, GAME* game) { - Common_Get(clip.npc_clip)->draw_proc(actor,game); + Common_Get(clip.npc_clip)->draw_proc(actor, game); } -#include "../src/ac_ev_majin_move.c_inc" \ No newline at end of file +#include "../src/ac_ev_majin_move.c_inc" diff --git a/src/ac_ev_majin_move.c_inc b/src/ac_ev_majin_move.c_inc index 5d690c21..e82b754b 100644 --- a/src/ac_ev_majin_move.c_inc +++ b/src/ac_ev_majin_move.c_inc @@ -18,8 +18,8 @@ void aEMJ_act_init_proc(NPC_ACTOR* actor, GAME_PLAY* play) { } void aEMJ_act_proc(NPC_ACTOR* actor, GAME_PLAY* play, int idx) { - static aNPC_SUB_PROC act_proc[] = {aEMJ_act_init_proc, (aNPC_SUB_PROC)mActor_NONE_PROC1, - (aNPC_SUB_PROC)mActor_NONE_PROC1}; + static aNPC_SUB_PROC act_proc[] = { aEMJ_act_init_proc, (aNPC_SUB_PROC)mActor_NONE_PROC1, + (aNPC_SUB_PROC)mActor_NONE_PROC1 }; act_proc[idx](actor, play); } @@ -27,13 +27,13 @@ void aEMJ_act_proc(NPC_ACTOR* actor, GAME_PLAY* play, int idx) { void aEMJ_appear(NPC_ACTOR* actor, GAME_PLAY* play) { EV_NPCMAJIN_ACTOR* majin = (EV_NPCMAJIN_ACTOR*)actor; - if (majin->npc_class.draw._04 == 1) { + if (majin->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { aEMJ_setup_think_proc(actor, 1); } } void aEMJ_retire(NPC_ACTOR* actor, GAME_PLAY* play) { - if (actor->draw._04 == 1) { + if (actor->draw.main_animation_state == cKF_STATE_STOPPED) { ((NPC_ACTOR*)(actor->actor_class.parent_actor))->npc_info.animal = (Animal_c*)1; Actor_delete(&actor->actor_class); } @@ -64,9 +64,9 @@ void aEMJ_think_init_proc(ACTOR* actor, GAME* game) { void aEMJ_setup_think_proc(NPC_ACTOR* actor, int idx) { static NPC_DT_PROCS dt_tbl[] = { - {aEMJ_appear, (aNPC_SUB_PROC)none_proc1}, - {(aNPC_SUB_PROC)none_proc1, aEMJ_force_talk_request}, - {aEMJ_retire, (aNPC_SUB_PROC)none_proc1}, + { aEMJ_appear, (aNPC_SUB_PROC)none_proc1 }, + { (aNPC_SUB_PROC)none_proc1, aEMJ_force_talk_request }, + { aEMJ_retire, (aNPC_SUB_PROC)none_proc1 }, }; EV_NPCMAJIN_ACTOR* majin = (EV_NPCMAJIN_ACTOR*)actor; @@ -106,7 +106,7 @@ void aEMJ_schedule_main_proc(NPC_ACTOR* actor, GAME_PLAY* play) { } void aEMJ_schedule_proc(NPC_ACTOR* actor, GAME_PLAY* play, int idx) { - static aNPC_SUB_PROC sche_proc[] = {aEMJ_schedule_init_proc, aEMJ_schedule_main_proc}; + static aNPC_SUB_PROC sche_proc[] = { aEMJ_schedule_init_proc, aEMJ_schedule_main_proc }; sche_proc[idx](actor, play); } @@ -132,8 +132,8 @@ void aEMJ_set_force_talk_info() { mDemo_Set_msg_num(msg_num); } -void aEMJ_force_talk_request(NPC_ACTOR* actor, GAME_PLAY* play) { - mDemo_Request(10, &actor->actor_class, aEMJ_set_force_talk_info); +void aEMJ_force_talk_request(NPC_ACTOR* actor, GAME_PLAY* play) { + mDemo_Request(10, &actor->actor_class, aEMJ_set_force_talk_info); } int aEMJ_talk_init(ACTOR* actor, GAME* play) { diff --git a/src/ac_gyoei_type.c_inc b/src/ac_gyoei_type.c_inc new file mode 100644 index 00000000..c2e64738 --- /dev/null +++ b/src/ac_gyoei_type.c_inc @@ -0,0 +1,55 @@ +typedef struct gyoei_type_s { + short size; + short search_area; + int bite_time; +} aGYO_type_c; + +// clang-format off +static aGYO_type_c gyoei_type[] = { + { 1, 3, 4 }, // aSOG_FISH_TYPE_CRUCIAN_CARP + { 2, 3, 2 }, // aSOG_FISH_TYPE_BROOK_TROUT + { 4, 2, 3 }, // aSOG_FISH_TYPE_CARP + { 4, 2, 3 }, // aSOG_FISH_TYPE_KOI + { 4, 3, 4 }, // aSOG_FISH_TYPE_CATFISH + { 1, 3, 3 }, // aSOG_FISH_TYPE_SMALL_BASS + { 3, 2, 2 }, // aSOG_FISH_TYPE_BASS + { 4, 1, 1 }, // aSOG_FISH_TYPE_LARGE_BASS + { 1, 4, 4 }, // aSOG_FISH_TYPE_BLUEGILL + { 5, 2, 4 }, // aSOG_FISH_TYPE_GIANT_CATFISH + { 5, 2, 1 }, // aSOG_FISH_TYPE_GIANT_SNAKEHEAD + { 4, 2, 3 }, // aSOG_FISH_TYPE_BARBEL_STEED + { 3, 3, 3 }, // aSOG_FISH_TYPE_DACE + { 1, 3, 3 }, // aSOG_FISH_TYPE_PALE_CHUB + { 0, 2, 1 }, // aSOG_FISH_TYPE_BITTERLING + { 0, 3, 3 }, // aSOG_FISH_TYPE_LOACH + { 0, 3, 3 }, // aSOG_FISH_TYPE_POND_SMELT + { 1, 2, 1 }, // aSOG_FISH_TYPE_SWEETFISH + { 1, 1, 1 }, // aSOG_FISH_TYPE_CHERRY_SALMON + { 4, 1, 1 }, // aSOG_FISH_TYPE_LARGE_CHAR + { 3, 2, 2 }, // aSOG_FISH_TYPE_RAINBOW_TROUT + { 5, 1, 1 }, // aSOG_FISH_TYPE_STRINGFISH + { 4, 2, 1 }, // aSOG_FISH_TYPE_SALMON + { 0, 2, 3 }, // aSOG_FISH_TYPE_GOLDFISH + { 1, 4, 3 }, // aSOG_FISH_TYPE_PIRANHA + { 3, 3, 2 }, // aSOG_FISH_TYPE_AROWANA + { 2, 1, 1 }, // aSOG_FISH_TYPE_EEL + { 1, 2, 4 }, // aSOG_FISH_TYPE_FRESHWATER_GOBY + { 1, 2, 2 }, // aSOG_FISH_TYPE_ANGELFISH + { 0, 2, 3 }, // aSOG_FISH_TYPE_GUPPY + { 0, 2, 3 }, // aSOG_FISH_TYPE_POPEYED_GOLDFISH + { 5, 2, 0 }, // aSOG_FISH_TYPE_COELACANTH + { 1, 4, 4 }, // aSOG_FISH_TYPE_CRAWFISH + { 0, 4, 3 }, // aSOG_FISH_TYPE_FROG + { 0, 2, 2 }, // aSOG_FISH_TYPE_KILLIFISH + { 3, 2, 4 }, // aSOG_FISH_TYPE_JELLYFISH + { 4, 3, 2 }, // aSOG_FISH_TYPE_SEA_BASS + { 4, 2, 1 }, // aSOG_FISH_TYPE_RED_SNAPPER + { 4, 2, 0 }, // aSOG_FISH_TYPE_BARRED_KNIFEJAW + { 6, 1, 1 }, // aSOG_FISH_TYPE_ARAPAIMA + { 7, 1, 1 }, // aSOG_FISH_TYPE_WHALE + { 0, 1, 3 }, // aSOG_FISH_TYPE_EMPTY_CAN + { 3, 2, 4 }, // aSOG_FISH_TYPE_BOOT + { 4, 2, 4 }, // aSOG_FISH_TYPE_OLD_TIRE + { 4, 2, 1 }, // aSOG_FISH_TYPE_SALMON2 +}; +// clang-format on diff --git a/src/ac_haniwa.c b/src/ac_haniwa.c index d5045fc8..37cd434d 100644 --- a/src/ac_haniwa.c +++ b/src/ac_haniwa.c @@ -32,107 +32,89 @@ static void aHNW_actor_init(ACTOR* actor, GAME* game); static void aHNW_actor_draw(ACTOR* actor, GAME* game); ACTOR_PROFILE Haniwa_Profile = { - mAc_PROFILE_HANIWA, - ACTOR_PART_BG, - ACTOR_STATE_NONE, - ACTOR_PROP_HANIWA0, - ACTOR_OBJ_BANK_12, - sizeof(HANIWA_ACTOR), + mAc_PROFILE_HANIWA, ACTOR_PART_BG, ACTOR_STATE_NONE, ACTOR_PROP_HANIWA0, ACTOR_OBJ_BANK_12, + sizeof(HANIWA_ACTOR), - &aHNW_actor_ct, - &aHNW_actor_dt, - &aHNW_actor_init, - (mActor_proc)&none_proc1, - NULL + &aHNW_actor_ct, &aHNW_actor_dt, &aHNW_actor_init, (mActor_proc)&none_proc1, NULL }; -static ClObjPipeData_c AcHaniwaCoInfoData = { - { 57, 32, ClObj_TYPE_PIPE }, - { 1 }, - { 20, 30, 0, { 0, 0, 0 } } -}; +static ClObjPipeData_c AcHaniwaCoInfoData = { { 57, 32, ClObj_TYPE_PIPE }, { 1 }, { 20, 30, 0, { 0, 0, 0 } } }; -static StatusData_c AcHaniwaStatusData = { - 0, - 20, 30, 0, - 254 -}; +static StatusData_c AcHaniwaStatusData = { 0, 20, 30, 0, 254 }; /* TODO: ct, dt, & draw are in their own TU */ static void aHNW_actor_ct(ACTOR* actor, GAME* game) { - HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; - ClObjPipe_c* pipe; - cKF_SkeletonInfo_R_c* keyframe = &haniwa->keyframe; - GAME_PLAY* play = (GAME_PLAY*)game; + HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; + ClObjPipe_c* pipe; + cKF_SkeletonInfo_R_c* keyframe = &haniwa->common_actor_class.anime.keyframe; + GAME_PLAY* play = (GAME_PLAY*)game; - cKF_SkeletonInfo_R_ct(keyframe, &cKF_bs_r_hnw, NULL, haniwa->keyframe_work_area, haniwa->keyframe_morph_area); + cKF_SkeletonInfo_R_ct(keyframe, &cKF_bs_r_hnw, NULL, haniwa->keyframe_work_area, haniwa->keyframe_morph_area); - pipe = &haniwa->col_pipe; - ClObjPipe_ct(game, pipe); - ClObjPipe_set5(game, pipe, actor, &AcHaniwaCoInfoData); - CollisionCheck_Status_set3(&haniwa->actor_class.status_data, &AcHaniwaStatusData); + pipe = &haniwa->common_actor_class.col_pipe; + ClObjPipe_ct(game, pipe); + ClObjPipe_set5(game, pipe, actor, &AcHaniwaCoInfoData); + CollisionCheck_Status_set3(&haniwa->common_actor_class.actor_class.status_data, &AcHaniwaStatusData); - { - Object_Bank_c* bank = &play->object_exchange.banks[actor->data_bank_id]; - haniwa->bank_ram_start = bank->ram_start; - } + { + Object_Bank_c* bank = &play->object_exchange.banks[actor->data_bank_id]; + haniwa->bank_ram_start = bank->ram_start; + } - haniwa->animation_state = 2; - haniwa->house_idx = actor->npc_id - ACTOR_PROP_HANIWA0; - actor->talk_distance = 43.0f; + haniwa->common_actor_class.anime.anime_no = 2; + haniwa->house_idx = actor->npc_id - ACTOR_PROP_HANIWA0; + actor->talk_distance = 43.0f; } static void aHNW_actor_dt(ACTOR* actor, GAME* game) { - HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; - GAME_PLAY* play = (GAME_PLAY*)game; + HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; - if (haniwa->playing_save_bgm) { - mBGMPsComp_delete_ps_demo(0x41, 0x168); - } + if (haniwa->playing_save_bgm) { + mBGMPsComp_delete_ps_demo(0x41, 0x168); + } - cKF_SkeletonInfo_R_dt(&haniwa->keyframe); - ClObjPipe_dt(game, &haniwa->col_pipe); + cKF_SkeletonInfo_R_dt(&haniwa->common_actor_class.anime.keyframe); + ClObjPipe_dt(game, &haniwa->common_actor_class.col_pipe); } #include "../src/ac_haniwa_move.c_inc" static void aHNW_actor_draw(ACTOR* actor, GAME* game) { - static Gfx hnw_tex_model[] = { - gsDPLoadTLUT_Dolphin(15, 16, 1, hnw_face), - gsSPEndDisplayList(), - }; + static Gfx hnw_tex_model[] = { + gsDPLoadTLUT_Dolphin(15, 16, 1, hnw_face), + gsSPEndDisplayList(), + }; - HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; - cKF_SkeletonInfo_R_c* keyframe = &haniwa->keyframe; - GRAPH* g = game->graph; - Mtx* m; - - m = GRAPH_ALLOC_TYPE(g, Mtx, keyframe->skeleton->num_shown_joints); + HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyframe = &haniwa->common_actor_class.anime.keyframe; + GRAPH* g = game->graph; + Mtx* m; - if (m != NULL) { - Gfx* gfx; - int house_idx = haniwa->house_idx; - _texture_z_light_fog_prim(g); + m = GRAPH_ALLOC_TYPE(g, Mtx, keyframe->skeleton->num_shown_joints); - OPEN_DISP(g); - gfx = NOW_POLY_OPA_DISP; + if (m != NULL) { + Gfx* gfx; + int house_idx = haniwa->house_idx; + _texture_z_light_fog_prim(g); - gSPSegment(gfx++, G_MWO_SEGMENT_B, hnw_tmem_txt); + OPEN_DISP(g); + gfx = NOW_POLY_OPA_DISP; - if (mPr_NullCheckPersonalID(&Save_Get(homes[house_idx]).ownerID) != TRUE && - Common_Get(player_no) == mHS_get_pl_no(house_idx) - ) { - gDPSetPrimColor(gfx++, 0, 128, 255, 255, 255, 255); + gSPSegment(gfx++, G_MWO_SEGMENT_B, hnw_tmem_txt); + + if (mPr_NullCheckPersonalID(&Save_Get(homes[house_idx]).ownerID) != TRUE && + Common_Get(player_no) == mHS_get_pl_no(house_idx)) { + gDPSetPrimColor(gfx++, 0, 128, 255, 255, 255, 255); + } else { + gDPSetPrimColor(gfx++, 0, 128, 255, 255, 255, 255); + } + + gSPDisplayList(gfx++, hnw_tex_model); + + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(g); + + cKF_Si3_draw_R_SV(game, keyframe, m, NULL, NULL, actor); } - else { - gDPSetPrimColor(gfx++, 0, 128, 255, 255, 255, 255); - } - - gSPDisplayList(gfx++, hnw_tex_model); - - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(g); - - cKF_Si3_draw_R_SV(game, keyframe, m, NULL, NULL, actor); - } } diff --git a/src/ac_haniwa_move.c_inc b/src/ac_haniwa_move.c_inc index 5b9d94fc..f8480caa 100644 --- a/src/ac_haniwa_move.c_inc +++ b/src/ac_haniwa_move.c_inc @@ -9,7 +9,7 @@ static int aHNW_set_save_permission() { if (player_no < PLAYER_NUM) { int arrange_idx = mHS_get_arrange_idx(player_no); house = Save_GetPointer(homes[arrange_idx]); - pid = &Save_Get(private[player_no]).player_ID; + pid = &Save_Get(private_data[player_no]).player_ID; if (mPr_NullCheckPersonalID(pid) != TRUE && mPr_CheckCmpPersonalID(pid, &house->ownerID) == TRUE) { res = TRUE; @@ -108,7 +108,7 @@ static int aHNW_check_house_door(ACTOR* actor, GAME* game) { mDemo_Clip_c* demo_clip = Common_Get(clip).demo_clip; if (demo_clip != NULL) { - INTRO_DEMO_ACTOR* demo_class = (INTRO_DEMO_ACTOR*)demo_clip->class; + INTRO_DEMO_ACTOR* demo_class = (INTRO_DEMO_ACTOR*)demo_clip->demo_class; if (demo_class != NULL && demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO && mEv_CheckFirstIntro() && demo_class->player_intro_demo_state != 0) { res = TRUE; @@ -646,11 +646,11 @@ static void aHNW_setupAction(ACTOR* actor, GAME* game, int action) { HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; int house_idx = haniwa->house_idx; - int animation_state = haniwa->animation_state; + int animation_state = haniwa->common_actor_class.anime.anime_no; int no_owner = mPr_NullCheckPersonalID(&Save_Get(homes[house_idx]).ownerID); int owner_is_player = mHS_get_pl_no(house_idx) == Common_Get(player_no); - haniwa->action = action; + haniwa->common_actor_class.act = action; haniwa->action_proc = process[action]; if (action >= aHNW_ACTION_CHECK_PROCEEDS) { @@ -674,37 +674,39 @@ static void aHNW_setupAction(ACTOR* actor, GAME* game, int action) { } if (animation_state == 2) { - cKF_SkeletonInfo_R_init(&haniwa->keyframe, haniwa->keyframe.skeleton, &cKF_ba_r_hnw_move, 1.0f, 9.0f, 1.0f, - haniwa->anim_frame_speed, 0.0f, cKF_FRAMECONTROL_REPEAT, NULL); - haniwa->saved_current_frame = haniwa->keyframe.frame_control.current_frame; + cKF_SkeletonInfo_R_init(&haniwa->common_actor_class.anime.keyframe, + haniwa->common_actor_class.anime.keyframe.skeleton, &cKF_ba_r_hnw_move, 1.0f, 9.0f, + 1.0f, haniwa->anim_frame_speed, 0.0f, cKF_FRAMECONTROL_REPEAT, NULL); + haniwa->common_actor_class.anime.cur_keyframe = + haniwa->common_actor_class.anime.keyframe.frame_control.current_frame; } - haniwa->animation_state = 0; + haniwa->common_actor_class.anime.anime_no = 0; aHNW_init_proc(actor, game, action); if (no_owner && action < aHNW_ACTION_CHECK_PROCEEDS) { - haniwa->keyframe.frame_control.mode = cKF_FRAMECONTROL_STOP; + haniwa->common_actor_class.anime.keyframe.frame_control.mode = cKF_FRAMECONTROL_STOP; } else { - haniwa->keyframe.frame_control.mode = cKF_FRAMECONTROL_REPEAT; + haniwa->common_actor_class.anime.keyframe.frame_control.mode = cKF_FRAMECONTROL_REPEAT; } } static void aHNW_common_process(ACTOR* actor, GAME* game) { HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; - cKF_SkeletonInfo_R_c* keyframe = &haniwa->keyframe; + cKF_SkeletonInfo_R_c* keyframe = &haniwa->common_actor_class.anime.keyframe; int house_idx = haniwa->house_idx; int no_owner = mPr_NullCheckPersonalID(&Save_Get(homes[house_idx]).ownerID); f32 target; if (no_owner == FALSE && keyframe->frame_control.mode == cKF_FRAMECONTROL_STOP) { - aHNW_setupAction((ACTOR*)haniwa, game, haniwa->action); + aHNW_setupAction((ACTOR*)haniwa, game, haniwa->common_actor_class.act); keyframe->frame_control.mode = cKF_FRAMECONTROL_REPEAT; - } else if (no_owner && haniwa->action < 2 && keyframe->frame_control.speed <= 0.1f) { + } else if (no_owner && haniwa->common_actor_class.act < 2 && keyframe->frame_control.speed <= 0.1f) { keyframe->frame_control.mode = cKF_FRAMECONTROL_STOP; } else { keyframe->frame_control.mode = cKF_FRAMECONTROL_REPEAT; } - if (no_owner == FALSE || haniwa->action >= aHNW_ACTION_CHECK_PROCEEDS) { + if (no_owner == FALSE || haniwa->common_actor_class.act >= aHNW_ACTION_CHECK_PROCEEDS) { aHNW_search_player((ACTOR*)haniwa); } else { aHNW_search_front((ACTOR*)haniwa, house_idx); @@ -724,13 +726,13 @@ static void aHNW_common_process(ACTOR* actor, GAME* game) { static void aHNW_actor_move(ACTOR* actor, GAME* game) { HANIWA_ACTOR* haniwa = (HANIWA_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; - cKF_SkeletonInfo_R_c* keyframe = &haniwa->keyframe; + cKF_SkeletonInfo_R_c* keyframe = &haniwa->common_actor_class.anime.keyframe; - haniwa->keyframe_state = cKF_SkeletonInfo_R_play(keyframe); + haniwa->common_actor_class.anime.state = cKF_SkeletonInfo_R_play(keyframe); (*haniwa->action_proc)((ACTOR*)haniwa, game); aHNW_common_process(actor, game); - CollisionCheck_Uty_ActorWorldPosSetPipeC(actor, &haniwa->col_pipe); - CollisionCheck_setOC(game, &play->collision_check, &haniwa->col_pipe.collision_obj); + CollisionCheck_Uty_ActorWorldPosSetPipeC(actor, &haniwa->common_actor_class.col_pipe); + CollisionCheck_setOC(game, &play->collision_check, &haniwa->common_actor_class.col_pipe.collision_obj); Actor_world_to_eye(actor, 50.0f); } @@ -743,6 +745,6 @@ static void aHNW_actor_init(ACTOR* actor, GAME* game) { actor->dw_proc = &aHNW_actor_draw; aHNW_setupAction((ACTOR*)haniwa, game, aHNW_ACTION_WAIT); // weird that we have to re-cast to ACTOR so fequently for matches - haniwa->keyframe.morph_counter = 0.0f; + haniwa->common_actor_class.anime.keyframe.morph_counter = 0.0f; aHNW_actor_move(actor, game); } diff --git a/src/ac_ins_goki.c b/src/ac_ins_goki.c index 1857804c..3e73789c 100644 --- a/src/ac_ins_goki.c +++ b/src/ac_ins_goki.c @@ -268,7 +268,7 @@ static void aIGK_move_on_flower(ACTOR* actorx, GAME* game) { aIGK_MOVE_TIMER(insect)--; if (aIGK_MOVE_TIMER(insect) <= 0) { - sAdo_OngenPos((u32)actorx, NA_SE_A8, &actorx->world.position); + sAdo_OngenPos((u32)actorx, NA_SE_GOKI_MOVE, &actorx->world.position); insect->timer = (int)(2 * (90.0f + RANDOM_F(90.0f))); aIGK_setupAction(insect, aIGK_ACTION_WAIT_ON_FLOWER, game); } else { diff --git a/src/ac_ins_ka.c b/src/ac_ins_ka.c index f899b9ae..1f68413d 100644 --- a/src/ac_ins_ka.c +++ b/src/ac_ins_ka.c @@ -283,7 +283,7 @@ static void aIKA_actor_move(ACTOR* actorx, GAME* game) { aIKA_setupAction(insect, aIKA_ACTION_LET_ESCAPE, game); } else { if (insect->action != aIKA_ACTION_ATTACK) { - sAdo_OngenPos((u32)actorx, NA_SE_CF, &actorx->world.position); + sAdo_OngenPos((u32)actorx, NA_SE_KA_BUZZ, &actorx->world.position); } if (insect->insect_flags.bit_3 == TRUE && insect->insect_flags.bit_2 == FALSE && diff --git a/src/ac_intro_demo.c b/src/ac_intro_demo.c new file mode 100644 index 00000000..83a54b03 --- /dev/null +++ b/src/ac_intro_demo.c @@ -0,0 +1,96 @@ +#include "ac_intro_demo.h" + +#include "m_name_table.h" +#include "m_common_data.h" +#include "libultra/libultra.h" +#include "m_event.h" +#include "m_play.h" +#include "m_bgm.h" +#include "m_player_lib.h" +#include "m_house.h" + +enum { + aID_ACT_FIRST_SET, + aID_ACT_TRAIN_BIRTH_WAIT, + aID_ACT_RIDE_TRAIN, + aID_ACT_RIDE_OFF_PLAYER, + aID_ACT_WALK_ONE_UNIT, + aID_ACT_GO_OUT_OF_STATION, + aID_ACT_BIRTH_RCN_GUIDE, + aID_ACT_FIRST_TALK_END_WAIT, + aID_ACT_WALK_AFTER_RCN_GUIDE, + aID_ACT_IN_HOUSE, + aID_ACT_DECIDE_HOUSE, + aID_ACT_RETIRE_RCN_GUIDE_WAIT, + aID_ACT_FIRST_JOB, + + aID_ACT_NUM +}; + +static void aID_actor_ct(ACTOR* actorx, GAME* game); +static void aID_actor_dt(ACTOR* actorx, GAME* game); +static void aID_actor_move(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Intro_Demo_Profile = { + mAc_PROFILE_INTRO_DEMO, + ACTOR_PART_CONTROL, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(INTRO_DEMO_ACTOR), + &aID_actor_ct, + &aID_actor_dt, + &aID_actor_move, + mActor_NONE_PROC1, + NULL, +}; +// clang-format on + +static mDemo_Clip_c aID_clip; + +static void aID_setupAction(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play, int action); + +static void aID_actor_ct(ACTOR* actorx, GAME* game) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + Common_Get(clip).demo_clip = &aID_clip; + bzero(&aID_clip, sizeof(aID_clip)); + Common_Get(clip).demo_clip->demo_class = actorx; + Common_Get(clip).demo_clip->type = mDemo_CLIP_TYPE_INTRO_DEMO; + + if (mEv_CheckFirstIntro() == TRUE) { + if (Common_Get(field_type) == mFI_FIELDTYPE_FG) { + switch (mFI_GET_TYPE(Common_Get(last_field_id))) { + case mFI_FIELD_PLAYER0_ROOM: + intro_demo->_1A4 = TRUE; + intro_demo->next_action = aID_ACT_DECIDE_HOUSE; + aID_setupAction(intro_demo, play, aID_ACT_BIRTH_RCN_GUIDE); + mBGMPsComp_make_ps_demo(BGM_INTRO_RCN_GUIDE, 0x168); + break; + default: + aID_setupAction(intro_demo, play, 0); + break; + } + } else { + aID_setupAction(intro_demo, play, aID_ACT_IN_HOUSE); + } + } else { + aID_setupAction(intro_demo, play, aID_ACT_FIRST_JOB); + } +} + +static void aID_actor_dt(ACTOR* actorx, GAME* game) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)actorx; + + if (Common_Get(clip).demo_clip != NULL) { + Common_Get(clip).demo_clip = NULL; + } + + if (intro_demo->first_field_bgm_state == 2) { + mBGMPsComp_delete_ps_fieldSuddenEv(BGM_INTRO_FIND_SHOP, 0x168); + } +} + +#include "../src/ac_intro_demo_move.c_inc" diff --git a/src/ac_intro_demo_move.c_inc b/src/ac_intro_demo_move.c_inc new file mode 100644 index 00000000..bef95a73 --- /dev/null +++ b/src/ac_intro_demo_move.c_inc @@ -0,0 +1,331 @@ +static void aID_change_player_demo_standing_train(GAME* game) { + if (mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_STANDING_TRAIN) { + mPlib_request_main_demo_standing_train_type1(game); + } +} + +static void aID_set_first_field_bgm(INTRO_DEMO_ACTOR* intro_demo) { + mBGMPsComp_make_ps_fieldSuddenEv(BGM_INTRO_FIND_SHOP, 0x168, 1); + mBGMPsComp_scene_mode(1); + intro_demo->first_field_bgm_state = 2; +} + +static void aID_check_set_first_field_bgm(INTRO_DEMO_ACTOR* intro_demo) { + if (intro_demo->first_field_bgm_state == 1 && sAdo_BgmFadeoutCheck() == TRUE) { + aID_set_first_field_bgm(intro_demo); + } +} + +static void aID_first_set(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + Common_Set(train_coming_flag, 3); + aID_change_player_demo_standing_train(&play->game); + aID_setupAction(intro_demo, play, aID_ACT_TRAIN_BIRTH_WAIT); +} + +static void aID_train_birth_wait(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + TRAIN1_ACTOR* train = (TRAIN1_ACTOR*)Actor_info_fgName_search(&play->actor_info, TRAIN1, ACTOR_PART_ITEM); + + aID_change_player_demo_standing_train(&play->game); + if (train != NULL) { + intro_demo->train1_actor_p = train; + train->player_pass_exists = TRUE; + aID_setupAction(intro_demo, play, aID_ACT_RIDE_TRAIN); + } +} + +static void aID_ride_train(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + TRAIN1_ACTOR* train = intro_demo->train1_actor_p; + + aID_change_player_demo_standing_train(&play->game); + if (train->tr_action == 5) { + aID_setupAction(intro_demo, play, aID_ACT_RIDE_OFF_PLAYER); + } +} + +static void aID_ride_off_player(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + ACTOR* station_master = intro_demo->station_master_actor_p; + + if (intro_demo->_1A0 == 0) { + /* Wait for the station master to speak to the player */ + if (mDemo_Check(mDemo_TYPE_SPEAK, station_master) == TRUE) { + intro_demo->_1A0 = 1; + } + } else { + /* Wait for the station master to be done speaking to the player */ + if (mDemo_Check(mDemo_TYPE_SPEAK, station_master) == FALSE) { + aID_setupAction(intro_demo, play, aID_ACT_WALK_ONE_UNIT); + } + } +} + +static void aID_walk_one_unit(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (player != NULL) { + if (player->actor_class.world.position.z >= aID_OFF_UT_Z_POS) { + /* Reached target position */ + aID_setupAction(intro_demo, play, aID_ACT_GO_OUT_OF_STATION); + } else { + /* Walk to A-3 @ 5Z, 7.5X */ + mPlib_Set_goal_player_demo_walk(aID_OFF_UT_X_POS, aID_OFF_UT_Z_POS, 2.5f); + } + } +} + +static void aID_go_out_of_station(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (player != NULL) { + if (player->actor_class.world.position.z >= aID_OUT_OF_STATION_Z_POS) { + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + intro_demo->next_action = aID_ACT_FIRST_TALK_END_WAIT; + aID_setupAction(intro_demo, play, aID_ACT_BIRTH_RCN_GUIDE); + } + } +} + +static void aID_birth_rcn_guide(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + static mActor_name_t rcn_name[] = { SP_NPC_RCN_GUIDE, SP_NPC_RCN_GUIDE_1, SP_NPC_RCN_GUIDE_2, SP_NPC_RCN_GUIDE_3 }; + static int restart_ux[] = { 6, 9, 6, 9 }; + static int restart_uz[] = { 5, 5, 12, 12 }; + static f32 restartOffsetX[] = { 10.0f, -10.0f, 10.0f, -10.0f }; + mActor_name_t name = rcn_name[mSP_GetShopLevel()]; + int type; + int data; + int ux; + int uz; + f32 ofsX; + f32 ofsZ; + s16 param; + int house_idx; + ACTOR* rcn_actor; + + if (intro_demo->_1A4 == TRUE) { + house_idx = Common_Get(last_field_id) - mFI_FIELD_PLAYER0_ROOM; + intro_demo->house_idx = house_idx; + ux = restart_ux[house_idx]; + uz = restart_uz[house_idx]; + ofsX = restartOffsetX[house_idx]; + ofsZ = 8.0f; + if (mPr_NullCheckPersonalID(&Save_Get(homes[house_idx]).ownerID) == TRUE) { + param = aID_STATE_TAKEN_HOUSE; + } else { + param = aID_STATE_FREE_HOUSE; + } + data = 3; + type = 2; + } else { + data = 3; + type = 1; + ux = 8; + uz = 15; + ofsX = 0.0f; + ofsZ = 0.0f; + param = aID_STATE_INITIAL; + } + + if (Common_Get(clip).npc_clip->setupActor_proc(play, name, -1, -1, param, data, type, ux, uz) == TRUE) { + rcn_actor = Actor_info_fgName_search(&play->actor_info, name, ACTOR_PART_NPC); + intro_demo->rcn_guide_actor_p = rcn_actor; + rcn_actor->world.position.x += ofsX; + rcn_actor->world.position.z += ofsZ; + aID_setupAction(intro_demo, play, intro_demo->next_action); + } +} + +static void aID_first_talk_end_wait(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + if (intro_demo->talk_flag == TRUE) { + intro_demo->talk_flag = FALSE; + aID_setupAction(intro_demo, play, aID_ACT_WALK_AFTER_RCN_GUIDE); + } +} + +static void aID_walk_after_rcn_guide(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + static f32 rate_table[] = { 1.0f, 0.6f }; + NPC_ACTOR* rcn_guide = (NPC_ACTOR*)intro_demo->rcn_guide_actor_p; + f32 rate = rate_table[rcn_guide->actor_class.player_distance_xz < 80.0f] * rcn_guide->actor_class.speed; + + /* Walk the player to the raccoon guide NPC's position */ + mPlib_Set_goal_player_demo_walk(rcn_guide->actor_class.world.position.x, rcn_guide->actor_class.world.position.z, + rate); + + /* If we've finished our action then stop walking and move on */ + if (((NPC_ACTOR*)intro_demo->rcn_guide_actor_p)->action.idx == 0) { + mPlib_request_main_wait_type3(&play->game); + aID_setupAction(intro_demo, play, aID_ACT_DECIDE_HOUSE); + } +} + +static void aID_decide_house(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + if (intro_demo->talk_flag == TRUE) { + aID_setupAction(intro_demo, play, aID_ACT_RETIRE_RCN_GUIDE_WAIT); + } +} + +static void aID_retire_rcn_guide_wait(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mQst_errand_c* errand; + + if (intro_demo->rcn_guide_actor_p == NULL) { + mPlib_request_main_wait_type3(&play->game); + mHS_set_use(Common_Get(player_no), intro_demo->house_idx); + + mPr_SetItemCollectBit(Now_Private->cloth.item); + mPr_SetItemCollectBit(FTR_TAPEDECK); + mPr_SetItemCollectBit(ITM_CARPET_START + + Save_Get(homes[intro_demo->house_idx]).floors[0].wall_floor.flooring_idx); + mPr_SetItemCollectBit(ITM_WALL_START + + Save_Get(homes[intro_demo->house_idx]).floors[0].wall_floor.wallpaper_idx); + + mHm_SetNowHome(); + mPlib_Set_unable_wade(FALSE); + mCoBG_ChangeBlockBgCheckMode(0); + mEv_UnSetFirstIntro(); + Now_Private->inventory.loan = mPlayer_DEBT0; + errand = mQst_GetFirstJobData(); + mQst_SetFirstJobStart(errand); + aID_setupAction(intro_demo, play, aID_ACT_FIRST_JOB); + } + + aID_check_set_first_field_bgm(intro_demo); +} + +static void aID_first_job(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + if (intro_demo->_1A8 == TRUE) { + mQst_errand_c* errand = mQst_GetFirstJobData(); + + mQst_ClearErrand(errand, 1); + mEv_UnSetFirstJob(); + mTM_off_renew_time(1); + Actor_delete(&intro_demo->actor_class); + Common_Set(complete_payment_type, mPlayer_COMPLETE_PAYMENT_TYPE_ARBEIT); + play->event.day = 0; + } else { + aID_check_set_first_field_bgm(intro_demo); + } +} + +static void aID_first_set_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + Actor_data* player_data = play->player_data; + + mBGMPsComp_make_ps_demo(BGM_INTRO_ARRIVE, 0x168); + mBGMPsComp_scene_mode(9); + player_data->position.x = aID_PLR_START_X_POS; + player_data->position.z = aID_PLR_START_Z_POS; +} + +static void aID_train_birth_wait_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + xyz_t center_pos; + + center_pos.x = 2180.0f; + center_pos.z = 820.0f; + center_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(center_pos, -35.0f); + Camera2_request_main_demo_fromNowPos2(play, ¢er_pos, 0.0f, 0.0f, 0.0f, 9); +} + +static void aID_ride_off_player_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + static xyz_t enter_pos = { 2180.0f, 0.0f, 820.0f }; + TRAIN1_ACTOR* train = intro_demo->train1_actor_p; + ACTOR* station_master = Actor_info_fgName_search(&play->actor_info, SP_NPC_STATION_MASTER, ACTOR_PART_NPC); + + intro_demo->station_master_actor_p = station_master; + train->player_pass_exists = FALSE; + mPlib_request_main_demo_getoff_train_type1(&play->game); + intro_demo->_1A0 = 0; + mCoBG_SetAttribute(enter_pos, mCoBG_ATTRIBUTE_STONE); +} + +static void aID_walk_one_unit_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mPlib_request_main_demo_walk_type1(&play->game, 2220.0f, 840.0f, 2.5f, 0); +} + +static void aID_go_out_of_station_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mPlib_request_main_wait_type3(&play->game); + Camera2_request_main_normal(play, 0, 9); +} + +static void aID_walk_after_rcn_guide_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + ACTOR* rcn_guide = intro_demo->rcn_guide_actor_p; + + /* Walk the player to the raccoon guide NPC's position */ + mPlib_request_main_demo_walk_type1(&play->game, rcn_guide->world.position.x, rcn_guide->world.position.z, + rcn_guide->speed * 0.6f, 0); +} + +static void aID_decide_house_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mPlib_Set_unable_wade(TRUE); /* We can't switch acres */ + mCoBG_ChangeBlockBgCheckMode(1); /* Acre BG check mode altered */ +} + +static void aID_retire_rcn_guide_wait_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + mBGMPsComp_delete_ps_demo(BGM_INTRO_SELECT_HOUSE2, 0x168); + mBGMPsComp_make_ps_fc_quiet(0x2D0); + intro_demo->first_field_bgm_state = 1; +} + +static void aID_first_job_init(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play) { + mQst_errand_c* errand = mQst_GetFirstJobData(); + + if (errand->base.quest_kind == mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH || + errand->base.quest_kind == mQst_ERRAND_FIRSTJOB_START || + (errand->base.quest_kind == mQst_ERRAND_FIRSTJOB_PLANT_FLOWER && errand->base.progress == 1)) { + if (Common_Get(field_type) == mFI_FIELD_FG && intro_demo->first_field_bgm_state == 0) { + aID_set_first_field_bgm(intro_demo); + } + } +} + +typedef void (*aID_INIT_PROC)(INTRO_DEMO_ACTOR*, GAME_PLAY*); + +static void aID_init_proc(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play, int act) { + // clang-format off + static aID_INIT_PROC init_proc[] = { + &aID_first_set_init, + &aID_train_birth_wait_init, + (aID_INIT_PROC)&none_proc1, + &aID_ride_off_player_init, + &aID_walk_one_unit_init, + &aID_go_out_of_station_init, + (aID_INIT_PROC)&none_proc1, + (aID_INIT_PROC)&none_proc1, + &aID_walk_after_rcn_guide_init, + (aID_INIT_PROC)&none_proc1, + &aID_decide_house_init, + &aID_retire_rcn_guide_wait_init, + &aID_first_job_init, + }; + // clang-format on + + (*init_proc[act])(intro_demo, play); +} + +static void aID_setupAction(INTRO_DEMO_ACTOR* intro_demo, GAME_PLAY* play, int act) { + // clang-format off + static aID_ACT_PROC process[] = { + &aID_first_set, + &aID_train_birth_wait, + &aID_ride_train, + &aID_ride_off_player, + &aID_walk_one_unit, + &aID_go_out_of_station, + &aID_birth_rcn_guide, + &aID_first_talk_end_wait, + &aID_walk_after_rcn_guide, + (aID_ACT_PROC)&none_proc1, + &aID_decide_house, + &aID_retire_rcn_guide_wait, + &aID_first_job, + }; + // clang-format on + + intro_demo->action_proc = process[act]; + intro_demo->action = act; + aID_init_proc(intro_demo, play, act); +} + +static void aID_actor_move(ACTOR* actorx, GAME* game) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + (*intro_demo->action_proc)(intro_demo, play); +} diff --git a/src/ac_kamakura_move.c_inc b/src/ac_kamakura_move.c_inc index c8fc9295..76cac6dc 100644 --- a/src/ac_kamakura_move.c_inc +++ b/src/ac_kamakura_move.c_inc @@ -31,7 +31,8 @@ static void change_FGUnit(STRUCTURE_ACTOR* kamakura, int type) { if (mSN_ClearSnowman(unit_fg) == FALSE) { dug = FALSE; - if ((((*unit_fg >= BURIED_PITFALL_START) && (*unit_fg <= BURIED_PITFALL_END)) || (*unit_fg == SHINE_SPOT))) { + if ((((*unit_fg >= BURIED_PITFALL_HOLE_START) && (*unit_fg <= BURIED_PITFALL_HOLE_END)) || + (*unit_fg == SHINE_SPOT))) { dug = TRUE; } @@ -171,14 +172,7 @@ static void aKKR_wait(STRUCTURE_ACTOR* kamakura, GAME_PLAY* play) { static void aKKR_setup_action(STRUCTURE_ACTOR* kamakura, int action) { static aSTR_MOVE_PROC process[] = { - &aKKR_wait, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, + &aKKR_wait, NULL, NULL, NULL, NULL, NULL, NULL, NULL, }; kamakura->action_proc = process[action]; diff --git a/src/ac_museum_fossil.c b/src/ac_museum_fossil.c index 3e3aba65..5d5f7f73 100644 --- a/src/ac_museum_fossil.c +++ b/src/ac_museum_fossil.c @@ -119,9 +119,10 @@ static void Museum_Fossil_Actor_move(ACTOR* actorx, GAME* game) { /* If the donator still lives in town we need to copy their name */ if (mMmd_DONATOR_EXISTS(donator)) { - mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, - Save_Get(private[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name, - PLAYER_NAME_LEN); + mMsg_Set_free_str( + mMsg_Get_base_window_p(), mMsg_FREE_STR0, + Save_Get(private_data[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name, + PLAYER_NAME_LEN); } } diff --git a/src/ac_museum_picture.c b/src/ac_museum_picture.c index 476fd740..34981d03 100644 --- a/src/ac_museum_picture.c +++ b/src/ac_museum_picture.c @@ -194,7 +194,7 @@ static void Museum_Picture_Actor_move(ACTOR* actorx, GAME* game) { /* If the donator still lives in town we need to copy their name */ if (mMmd_DONATOR_EXISTS(donator)) { mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, - Save_Get(private[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name, + Save_Get(private_data[mMmd_DONATOR_PLR_IDX(donator)]).player_ID.player_name, PLAYER_NAME_LEN); } } diff --git a/src/ac_my_house_draw.c_inc b/src/ac_my_house_draw.c_inc index 2e18f5fe..4a340995 100644 --- a/src/ac_my_house_draw.c_inc +++ b/src/ac_my_house_draw.c_inc @@ -239,8 +239,8 @@ static void aMHS_actor_draw(ACTOR* actorx, GAME* game) { gSPSegment(gfx++, G_MWO_SEGMENT_A, obj_myhome_mark_pal); } else { int org_idx = door_original & 7; - u16* pal = mNW_PaletteIdx2Palette(Save_Get(private[pl_no]).my_org[org_idx].palette); - u8* tex = Save_Get(private[pl_no]).my_org[org_idx].design.data; + u16* pal = mNW_PaletteIdx2Palette(Save_Get(private_data[pl_no]).my_org[org_idx].palette); + u8* tex = Save_Get(private_data[pl_no]).my_org[org_idx].design.data; gSPSegment(gfx++, G_MWO_SEGMENT_9, tex); gSPSegment(gfx++, G_MWO_SEGMENT_A, pal); diff --git a/src/ac_my_house_move.c_inc b/src/ac_my_house_move.c_inc index c5e42c11..c72d921e 100644 --- a/src/ac_my_house_move.c_inc +++ b/src/ac_my_house_move.c_inc @@ -200,12 +200,12 @@ static int aMHS_check_player_in_intro_demo(STRUCTURE_ACTOR* my_house, GAME_PLAY* return 0; } - intro_demo = (INTRO_DEMO_ACTOR*)clip->class; + intro_demo = (INTRO_DEMO_ACTOR*)clip->demo_class; if (intro_demo == NULL || clip->type != mDemo_CLIP_TYPE_INTRO_DEMO || mEv_CheckFirstIntro() == FALSE) { return 0; } - if (my_house->arg3_f == TRUE && intro_demo->player_in_intro_demo == TRUE) { + if (my_house->arg3_f == TRUE && intro_demo->player_in_house == TRUE) { return 1; } @@ -214,7 +214,7 @@ static int aMHS_check_player_in_intro_demo(STRUCTURE_ACTOR* my_house, GAME_PLAY* my_house->arg3_f = TRUE; action = my_house->action; - intro_demo->selected_house = action; + intro_demo->house_idx = action; intro_demo->player_intro_demo_state = mPr_NullCheckPersonalID(&Save_Get(homes[action]).ownerID) ? aID_STATE_TAKEN_HOUSE : aID_STATE_FREE_HOUSE; return 2; @@ -400,12 +400,12 @@ static void aMHS_open_door(STRUCTURE_ACTOR* my_house, GAME_PLAY* play) { aMHS_goto_next_pl_scene(play, my_house); if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { - demo_class = Common_Get(clip).demo_clip->class; + demo_class = Common_Get(clip).demo_clip->demo_class; if (demo_class != NULL) { intro_demo = (INTRO_DEMO_ACTOR*)demo_class; - intro_demo->player_in_intro_demo = FALSE; + intro_demo->player_in_house = FALSE; } } diff --git a/src/ac_my_room.c b/src/ac_my_room.c index b9e98172..cf152b2d 100644 --- a/src/ac_my_room.c +++ b/src/ac_my_room.c @@ -1101,7 +1101,7 @@ static void aMR_MiniDiskCommonDt(FTR_ACTOR* ftr_actor, ACTOR* actorx) { my_room->bgm_info.last_md_no = -1; /* Don't delete for aerobics radio music */ - if (my_room->bgm_info.md_no != BGM_AEROBICS) { + if (my_room->bgm_info.md_no != BGM_SPORTSFAIR_AEROBICS) { mBGMPsComp_MDPlayerPos_delete(); } } @@ -1134,7 +1134,7 @@ static void aMR_ChangeMDBgm(ACTOR* actorx, FTR_ACTOR* ftr_actor) { if (my_room->bgm_info.md_no != -1) { mBGMPsComp_make_ps_room(my_room->bgm_info.md_no, 0); - if (my_room->bgm_info.md_no != BGM_AEROBICS) { + if (my_room->bgm_info.md_no != BGM_SPORTSFAIR_AEROBICS) { mBGMPsComp_MDPlayerPos_make(); } @@ -1150,12 +1150,12 @@ static void aMR_ChangeMDBgm(ACTOR* actorx, FTR_ACTOR* ftr_actor) { my_room->bgm_info.last_md_no = my_room->bgm_info.md_no; } else { mBGMPsComp_delete_ps_room(my_room->bgm_info.last_md_no, 0); - if (my_room->bgm_info.last_md_no != BGM_AEROBICS) { + if (my_room->bgm_info.last_md_no != BGM_SPORTSFAIR_AEROBICS) { mBGMPsComp_MDPlayerPos_delete(); } mBGMPsComp_make_ps_room(my_room->bgm_info.md_no, 0); - if (my_room->bgm_info.md_no != BGM_AEROBICS) { + if (my_room->bgm_info.md_no != BGM_SPORTSFAIR_AEROBICS) { mBGMPsComp_MDPlayerPos_make(); } @@ -2209,7 +2209,7 @@ extern mActor_name_t aMR_FurnitureFg_to_FurnitureFgWithDirect(mActor_name_t item extern void aMR_RadioCommonMove(FTR_ACTOR* ftr_actor, ACTOR* actorx) { if (ftr_actor->haniwa_state == 1) { - aMR_ReserveBgm(actorx, BGM_AEROBICS, ftr_actor, 0); + aMR_ReserveBgm(actorx, BGM_SPORTSFAIR_AEROBICS, ftr_actor, 0); ftr_actor->haniwa_state = 0; } else if (ftr_actor->switch_changed_flag) { if (ftr_actor->switch_bit == FALSE) { @@ -2219,7 +2219,7 @@ extern void aMR_RadioCommonMove(FTR_ACTOR* ftr_actor, ACTOR* actorx) { ftr_actor->switch_bit = FALSE; } else { aMR_OneMDSwitchOn_TheOtherSwitchOff(ftr_actor); - aMR_ReserveBgm(actorx, BGM_AEROBICS, ftr_actor, 0); + aMR_ReserveBgm(actorx, BGM_SPORTSFAIR_AEROBICS, ftr_actor, 0); aMR_ChangeMDBgm(actorx, ftr_actor); ftr_actor->switch_bit = TRUE; } @@ -2227,7 +2227,7 @@ extern void aMR_RadioCommonMove(FTR_ACTOR* ftr_actor, ACTOR* actorx) { } extern int aMR_RadioBgmNow(void) { - if (mBGMPsComp_execute_bgm_num_get() == BGM_AEROBICS) { + if (mBGMPsComp_execute_bgm_num_get() == BGM_SPORTSFAIR_AEROBICS) { return TRUE; } diff --git a/src/ac_my_room_move.c_inc b/src/ac_my_room_move.c_inc index 5e552eda..c15c7d25 100644 --- a/src/ac_my_room_move.c_inc +++ b/src/ac_my_room_move.c_inc @@ -741,7 +741,7 @@ static void aMR_SetPullMoveAnime(FTR_ACTOR* ftr_actor, GAME* game, MY_ROOM_ACTOR cKF_SkeletonInfo_R_init_standard_stop(keyframe, &cKF_ba_r_furniture_stop, NULL); cKF_SkeletonInfo_R_play(keyframe); cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyframe, 0.0f, 0.0f, 0.0f, 0, 0, 0); - cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, pos, pos, 0, 0, keyframe, TRUE); + cKF_SkeletonInfo_R_AnimationMove_ct_base(pos, pos, 0, 0, 0.0f, keyframe, TRUE); cKF_SkeletonInfo_R_init_standard_stop_morph(keyframe, &cKF_ba_r_furniture_pull, NULL, -3.0f); cKF_SkeletonInfo_R_play(keyframe); } @@ -763,7 +763,7 @@ static void aMR_SetPushMoveAnime(FTR_ACTOR* ftr_actor, GAME* game, MY_ROOM_ACTOR cKF_SkeletonInfo_R_init_standard_stop(keyframe, &cKF_ba_r_furniture_stop, NULL); cKF_SkeletonInfo_R_play(keyframe); cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyframe, 0.0f, 0.0f, 0.0f, 0, 0, 0); - cKF_SkeletonInfo_R_AnimationMove_ct_base(0.0f, pos, pos, 0, 0, keyframe, TRUE); + cKF_SkeletonInfo_R_AnimationMove_ct_base(pos, pos, 0, 0, 0.0f, keyframe, TRUE); cKF_SkeletonInfo_R_init_standard_stop(keyframe, &cKF_ba_r_furniture_push, NULL); cKF_SkeletonInfo_R_play(keyframe); } @@ -2354,7 +2354,7 @@ static void aMR_BirthWait(FTR_ACTOR* ftr_actor, GAME* game, MY_ROOM_ACTOR* my_ro if (ftr_actor->id == my_room->rsv_ftr[i].free_no) { if (my_room->rsv_ftr[i].frames <= 0) { ftr_actor->state = aFTR_STATE_BIRTH; - sAdo_OngenTrgStart(NA_SE_BIRTH_FTR, &ftr_actor->position); + sAdo_OngenTrgStart(NA_SE_ITEM_HORIDASHI, &ftr_actor->position); } break; @@ -2885,7 +2885,7 @@ static void My_Room_Actor_move(ACTOR* actorx, GAME* game) { if (md_ftr_actor != NULL) { u16 md_angle = md_ftr_actor->s_angle_y; - if (my_room->bgm_info.md_no != BGM_AEROBICS) { + if (my_room->bgm_info.md_no != BGM_SPORTSFAIR_AEROBICS) { mBGMPsComp_MDPlayerPos_param_set(&md_ftr_actor->position, md_angle, aMR_Fname2ConpoIndex(md_ftr_actor->name), (u32)md_ftr_actor); } diff --git a/src/ac_npc_curator_move.c_inc b/src/ac_npc_curator_move.c_inc index 51868beb..99f76271 100644 --- a/src/ac_npc_curator_move.c_inc +++ b/src/ac_npc_curator_move.c_inc @@ -1,1177 +1,1015 @@ static void aCR_set_animation(NPC_CURATOR_ACTOR* curator, int action) { - static int animeSeqNo[] = { 5, 5, 9 }; + static int animeSeqNo[] = { aNPC_ANIM_WAIT1, aNPC_ANIM_WAIT1, aNPC_ANIM_WAIT_NEMU1 }; - (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)curator, animeSeqNo[action], FALSE); + (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)curator, animeSeqNo[action], FALSE); } static void aCR_set_request_act(NPC_CURATOR_ACTOR* curator) { - curator->npc_class.request.act_priority = 4; - curator->npc_class.request.act_idx = 16; - curator->npc_class.request.act_type = 2; + curator->npc_class.request.act_priority = 4; + curator->npc_class.request.act_idx = 16; + curator->npc_class.request.act_type = aNPC_ACT_TYPE_SEARCH; } static int aCR_check_sleep_time() { - int res = FALSE; + int res = FALSE; - if (Common_Get(time.now_sec) >= aCR_SLEEP_TIME_START && Common_Get(time.now_sec) < aCR_SLEEP_TIME_END) { - res = TRUE; - } + if (Common_Get(time.now_sec) >= aCR_SLEEP_TIME_START && Common_Get(time.now_sec) < aCR_SLEEP_TIME_END) { + res = TRUE; + } - return res; + return res; } static void aCR_sleep_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - curator->sleep_wait_timer--; + curator->sleep_wait_timer--; - if (curator->sleep_wait_timer <= 0) { - aCR_setupAction(curator, play, aCR_ACTION_SLEEP); // Go back to sleep - } + if (curator->sleep_wait_timer <= 0) { + aCR_setupAction(curator, play, aCR_ACTION_SLEEP); // Go back to sleep + } } static void aCR_wait_init(NPC_CURATOR_ACTOR* curator) { - curator->npc_class.condition_info.demo_flg = 0; - curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(5.625f); - curator->npc_class.movement.mv_angl = DEG2SHORT_ANGLE(0.0f); - curator->npc_class.movement.mv_add_angl = DEG2SHORT_ANGLE(5.625f); + curator->npc_class.condition_info.demo_flg = 0; + curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(5.625f); + curator->npc_class.movement.mv_angl = DEG2SHORT_ANGLE(0.0f); + curator->npc_class.movement.mv_add_angl = DEG2SHORT_ANGLE(5.625f); } static void aCR_sleep_wait_init(NPC_CURATOR_ACTOR* curator) { - aCR_wait_init(curator); - curator->sleep_wait_timer = aCR_SLEEP_WAIT_TIMER; + aCR_wait_init(curator); + curator->sleep_wait_timer = aCR_SLEEP_WAIT_TIMER; } static void aCR_sleep_init(NPC_CURATOR_ACTOR* curator) { - curator->npc_class.condition_info.demo_flg = aNPC_COND_DEMO_SKIP_HEAD_LOOKAT; - curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(1.40625f); - curator->_9B0 = 0; + curator->npc_class.condition_info.demo_flg = aNPC_COND_DEMO_SKIP_HEAD_LOOKAT; + curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(1.40625f); + curator->_9B0 = 0; } typedef void (*aCR_INIT_PROC)(NPC_CURATOR_ACTOR*); static void aCR_setupAction(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play, int action) { - static aCR_ACT_PROC process[aCR_ACTION_NUM] = { - (aCR_ACT_PROC)&none_proc1, - &aCR_sleep_wait, - (aCR_ACT_PROC)&none_proc1 - }; + static aCR_ACT_PROC process[aCR_ACTION_NUM] = { (aCR_ACT_PROC)&none_proc1, &aCR_sleep_wait, + (aCR_ACT_PROC)&none_proc1 }; - static aCR_INIT_PROC init_proc[aCR_ACTION_NUM] = { - &aCR_wait_init, - &aCR_sleep_wait_init, - &aCR_sleep_init - }; + static aCR_INIT_PROC init_proc[aCR_ACTION_NUM] = { &aCR_wait_init, &aCR_sleep_wait_init, &aCR_sleep_init }; - aCR_set_animation(curator, action); - curator->action = action; - curator->action_proc = process[action]; - (*init_proc[action])(curator); + aCR_set_animation(curator, action); + curator->action = action; + curator->action_proc = process[action]; + (*init_proc[action])(curator); } static void aCR_act_chg_data_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - curator->npc_class.action.act_obj = aNPC_ACT_OBJ_PLAYER; + curator->npc_class.action.act_obj = aNPC_ACT_OBJ_PLAYER; } static void aCR_act_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - int action; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + int action; - if (curator->action == aCR_ACTION_WAIT) { - if (aCR_check_sleep_time() == TRUE) { - action = aCR_ACTION_SLEEP_WAIT; + if (curator->action == aCR_ACTION_WAIT) { + if (aCR_check_sleep_time() == TRUE) { + action = aCR_ACTION_SLEEP_WAIT; + } else { + action = aCR_ACTION_WAIT; + } + } else { + if (aCR_check_sleep_time() == TRUE) { + action = aCR_ACTION_SLEEP; + } else { + action = aCR_ACTION_WAIT; + } } - else { - action = aCR_ACTION_WAIT; - } - } - else { - if (aCR_check_sleep_time() == TRUE) { - action = aCR_ACTION_SLEEP; - } - else { - action = aCR_ACTION_WAIT; - } - } - actorx->action.step = 0; - aCR_setupAction(curator, play, action); + actorx->action.step = 0; + aCR_setupAction(curator, play, action); } static void aCR_act_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - - (*curator->action_proc)(curator, play); + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + + (*curator->action_proc)(curator, play); } static void aCR_act_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int action) { - static aCR_ACTION_PROC act_proc[aCR_ACTION_NUM] = { - &aCR_act_init_proc, - &aCR_act_chg_data_proc, - &aCR_act_main_proc - }; + static aCR_ACTION_PROC act_proc[aCR_ACTION_NUM] = { &aCR_act_init_proc, &aCR_act_chg_data_proc, + &aCR_act_main_proc }; - (*act_proc[action])(actorx, play); + (*act_proc[action])(actorx, play); } static void aCR_think_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - if (curator->npc_class.action.step == aNPC_ACTION_END_STEP) { - aCR_set_request_act(curator); - } - else if (curator->npc_class.action.idx == 16) { - if (aCR_check_sleep_time() == TRUE) { - if (curator->action == aCR_ACTION_WAIT) { - aCR_setupAction(curator, play, aCR_ACTION_SLEEP_WAIT); - } + if (curator->npc_class.action.step == aNPC_ACTION_END_STEP) { + aCR_set_request_act(curator); + } else if (curator->npc_class.action.idx == 16) { + if (aCR_check_sleep_time() == TRUE) { + if (curator->action == aCR_ACTION_WAIT) { + aCR_setupAction(curator, play, aCR_ACTION_SLEEP_WAIT); + } + } else if (curator->action == aCR_ACTION_SLEEP) { + aCR_setupAction(curator, play, aCR_ACTION_WAIT); + } } - else if (curator->action == aCR_ACTION_SLEEP) { - aCR_setupAction(curator, play, aCR_ACTION_WAIT); - } - } } static void aCR_think_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - int action; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + int action; - if (aCR_check_sleep_time() == TRUE) { - action = aCR_ACTION_SLEEP; - } - else { - action = aCR_ACTION_WAIT; - } + if (aCR_check_sleep_time() == TRUE) { + action = aCR_ACTION_SLEEP; + } else { + action = aCR_ACTION_WAIT; + } - curator->action = action; - curator->npc_class.action.act_proc = &aCR_act_proc; - aCR_set_request_act(curator); + curator->action = action; + curator->npc_class.action.act_proc = &aCR_act_proc; + aCR_set_request_act(curator); } typedef void (*aCR_THINK_PROC)(NPC_ACTOR*, GAME_PLAY*); static void aCR_think_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int think_idx) { - static aCR_THINK_PROC think_proc[2] = { - &aCR_think_init_proc, - &aCR_think_main_proc - }; + static aCR_THINK_PROC think_proc[2] = { &aCR_think_init_proc, &aCR_think_main_proc }; - (*think_proc[think_idx])(actorx, play); + (*think_proc[think_idx])(actorx, play); } static void aCR_schedule_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - actorx->think.think_proc = &aCR_think_proc; - actorx->condition_info.hide_request = FALSE; - (*Common_Get(clip).npc_clip->think_proc)(actorx, play, aNPC_THINK_IN_BLOCK, aNPC_THINK_TYPE_INIT); + actorx->think.think_proc = &aCR_think_proc; + actorx->condition_info.hide_request = FALSE; + (*Common_Get(clip).npc_clip->think_proc)(actorx, play, aNPC_THINK_IN_BLOCK, aNPC_THINK_TYPE_INIT); } static void aCR_schedule_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - if ((*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, aNPC_THINK_TYPE_CHK_INTERRUPT) == FALSE) { - (*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, aNPC_THINK_TYPE_MAIN); - } + if ((*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, aNPC_THINK_TYPE_CHK_INTERRUPT) == FALSE) { + (*Common_Get(clip).npc_clip->think_proc)(actorx, play, -1, aNPC_THINK_TYPE_MAIN); + } } typedef void (*aCR_SCHEDULE_PROC)(NPC_ACTOR*, GAME_PLAY*); static void aCR_schedule_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int proc_idx) { - static aCR_SCHEDULE_PROC sched_proc[] = { - &aCR_schedule_init_proc, - &aCR_schedule_main_proc - }; + static aCR_SCHEDULE_PROC sched_proc[] = { &aCR_schedule_init_proc, &aCR_schedule_main_proc }; - (*sched_proc[proc_idx])(actorx, play); + (*sched_proc[proc_idx])(actorx, play); } enum { - aCR_FOSSIL_TYPE_TRICERA, - aCR_FOSSIL_TYPE_TREX, - aCR_FOSSIL_TYPE_APATO, - aCR_FOSSIL_TYPE_STEGO, - aCR_FOSSIL_TYPE_PTERA, - aCR_FOSSIL_TYPE_PLESIO, - aCR_FOSSIL_TYPE_MAMMOTH, + aCR_FOSSIL_TYPE_TRICERA, + aCR_FOSSIL_TYPE_TREX, + aCR_FOSSIL_TYPE_APATO, + aCR_FOSSIL_TYPE_STEGO, + aCR_FOSSIL_TYPE_PTERA, + aCR_FOSSIL_TYPE_PLESIO, + aCR_FOSSIL_TYPE_MAMMOTH, - aCR_FOSSIL_TYPE_NUM + aCR_FOSSIL_TYPE_NUM }; static int aCR_get_fossil_type(mActor_name_t item) { - static int fossil_ftr_start[aCR_FOSSIL_TYPE_NUM] = { - FTR_DINO_TRICERA_SKULL, - FTR_DINO_TREX_SKULL, - FTR_DINO_APATO_SKULL, - FTR_DINO_STEGO_SKULL, - FTR_DINO_PTERA_SKULL, - FTR_DINO_PLESIO_SKULL, - FTR_DINO_MAMMOTH_SKULL - }; + static int fossil_ftr_start[aCR_FOSSIL_TYPE_NUM] = { FTR_DINO_TRICERA_SKULL, FTR_DINO_TREX_SKULL, + FTR_DINO_APATO_SKULL, FTR_DINO_STEGO_SKULL, + FTR_DINO_PTERA_SKULL, FTR_DINO_PLESIO_SKULL, + FTR_DINO_MAMMOTH_SKULL }; - static int fossil_ftr_end[aCR_FOSSIL_TYPE_NUM] = { - FTR_DINO_TRICERA_BODY+3, - FTR_DINO_TREX_BODY+3, - FTR_DINO_APATO_BODY+3, - FTR_DINO_STEGO_BODY+3, - FTR_DINO_PTERA_LEFT_WING+3, - FTR_DINO_PLESIO_TORSO+3, - FTR_DINO_MAMMOTH_TORSO+3 - }; + static int fossil_ftr_end[aCR_FOSSIL_TYPE_NUM] = { FTR_DINO_TRICERA_BODY + 3, FTR_DINO_TREX_BODY + 3, + FTR_DINO_APATO_BODY + 3, FTR_DINO_STEGO_BODY + 3, + FTR_DINO_PTERA_LEFT_WING + 3, FTR_DINO_PLESIO_TORSO + 3, + FTR_DINO_MAMMOTH_TORSO + 3 }; - int res = -1; - int i; + int res = -1; + int i; - for (i = 0; i < aCR_FOSSIL_TYPE_NUM; i++) { - if (item >= fossil_ftr_start[i] && item <= fossil_ftr_end[i]) { - res = i; - break; + for (i = 0; i < aCR_FOSSIL_TYPE_NUM; i++) { + if (item >= fossil_ftr_start[i] && item <= fossil_ftr_end[i]) { + res = i; + break; + } } - } - return res; + return res; } typedef struct { - int count; - mActor_name_t* parts; + int count; + mActor_name_t* parts; } aCR_fossil_part_c; #define aCR_GetFossilPartDonator(item_no) \ - mMmd_FossilInfo(((item_no) >= FTR_DINO_START && (item_no) <= FTR_DINO_END) ? FTR_IDX_2_NO((item_no - FTR_DINO_START)) : 0) -#define aCR_GetArtDonator(item_no) \ - mMmd_ArtInfo(((item_no) >= FTR_PAINTING0 && (item_no) <= FTR_PAINTING14_WEST) ? FTR_IDX_2_NO((item_no - FTR_PAINTING0)) : 0) + mMmd_FossilInfo( \ + ((item_no) >= FTR_DINO_START && (item_no) <= FTR_DINO_END) ? FTR_IDX_2_NO((item_no - FTR_DINO_START)) : 0) +#define aCR_GetArtDonator(item_no) \ + mMmd_ArtInfo(((item_no) >= FTR_PAINTING0 && (item_no) <= FTR_PAINTING14_WEST) \ + ? FTR_IDX_2_NO((item_no - FTR_PAINTING0)) \ + : 0) #define aCR_GetInsectDonator(item_no) \ - mMmd_InsectInfo(((item_no) >= ITM_INSECT_START && (item_no) < ITM_INSECT_END) ? (item_no - ITM_INSECT_START) : 0) + mMmd_InsectInfo(((item_no) >= ITM_INSECT_START && (item_no) < ITM_INSECT_END) ? (item_no - ITM_INSECT_START) : 0) #define aCR_GetFishDonator(item_no) \ - mMmd_FishInfo(((item_no) >= ITM_FISH_START && (item_no) <= ITM_FISH_END) ? (item_no - ITM_FISH_START) : 0) + mMmd_FishInfo(((item_no) >= ITM_FISH_START && (item_no) <= ITM_FISH_END) ? (item_no - ITM_FISH_START) : 0) static int aCR_chk_fossil_parts_complete_sub(int type) { - static mActor_name_t trikera_parts[] = { FTR_DINO_TRICERA_SKULL, FTR_DINO_TRICERA_TAIL, FTR_DINO_TRICERA_BODY }; - static mActor_name_t trex_parts[] = { FTR_DINO_TREX_SKULL, FTR_DINO_TREX_TAIL, FTR_DINO_TREX_BODY }; - static mActor_name_t bront_parts[] = { FTR_DINO_APATO_SKULL, FTR_DINO_APATO_TAIL, FTR_DINO_APATO_BODY }; - static mActor_name_t stego_parts[] = { FTR_DINO_STEGO_SKULL, FTR_DINO_STEGO_TAIL, FTR_DINO_STEGO_BODY }; - static mActor_name_t ptera_parts[] = { FTR_DINO_PTERA_SKULL, FTR_DINO_PTERA_RIGHT_WING, FTR_DINO_PTERA_LEFT_WING }; - static mActor_name_t hutaba_parts[] = { FTR_DINO_PLESIO_SKULL, FTR_DINO_PLESIO_NECK, FTR_DINO_PLESIO_TORSO }; - static mActor_name_t mammoth_parts[] = { FTR_DINO_MAMMOTH_SKULL, FTR_DINO_MAMMOTH_TORSO }; - static aCR_fossil_part_c fossil_parts[aCR_FOSSIL_TYPE_NUM] = { - { ARRAY_COUNT(trikera_parts), trikera_parts }, - { ARRAY_COUNT(trex_parts), trex_parts }, - { ARRAY_COUNT(bront_parts), bront_parts }, - { ARRAY_COUNT(stego_parts), stego_parts }, - { ARRAY_COUNT(ptera_parts), ptera_parts }, - { ARRAY_COUNT(hutaba_parts), hutaba_parts }, - { ARRAY_COUNT(mammoth_parts), mammoth_parts } - }; + static mActor_name_t trikera_parts[] = { FTR_DINO_TRICERA_SKULL, FTR_DINO_TRICERA_TAIL, FTR_DINO_TRICERA_BODY }; + static mActor_name_t trex_parts[] = { FTR_DINO_TREX_SKULL, FTR_DINO_TREX_TAIL, FTR_DINO_TREX_BODY }; + static mActor_name_t bront_parts[] = { FTR_DINO_APATO_SKULL, FTR_DINO_APATO_TAIL, FTR_DINO_APATO_BODY }; + static mActor_name_t stego_parts[] = { FTR_DINO_STEGO_SKULL, FTR_DINO_STEGO_TAIL, FTR_DINO_STEGO_BODY }; + static mActor_name_t ptera_parts[] = { FTR_DINO_PTERA_SKULL, FTR_DINO_PTERA_RIGHT_WING, FTR_DINO_PTERA_LEFT_WING }; + static mActor_name_t hutaba_parts[] = { FTR_DINO_PLESIO_SKULL, FTR_DINO_PLESIO_NECK, FTR_DINO_PLESIO_TORSO }; + static mActor_name_t mammoth_parts[] = { FTR_DINO_MAMMOTH_SKULL, FTR_DINO_MAMMOTH_TORSO }; + static aCR_fossil_part_c fossil_parts[aCR_FOSSIL_TYPE_NUM] = { + { ARRAY_COUNT(trikera_parts), trikera_parts }, { ARRAY_COUNT(trex_parts), trex_parts }, + { ARRAY_COUNT(bront_parts), bront_parts }, { ARRAY_COUNT(stego_parts), stego_parts }, + { ARRAY_COUNT(ptera_parts), ptera_parts }, { ARRAY_COUNT(hutaba_parts), hutaba_parts }, + { ARRAY_COUNT(mammoth_parts), mammoth_parts } + }; - aCR_fossil_part_c* fossil_part = &fossil_parts[type]; - int i = fossil_part->count; - mActor_name_t* fossil_part_p = fossil_part->parts; - int res = TRUE; + aCR_fossil_part_c* fossil_part = &fossil_parts[type]; + int i = fossil_part->count; + mActor_name_t* fossil_part_p = fossil_part->parts; + int res = TRUE; - while (i != 0) { - int valid = aCR_GetFossilPartDonator(*fossil_part_p) >= mMmd_DONATOR_PLAYER1 - && aCR_GetFossilPartDonator(*fossil_part_p) <= mMmd_DONATOR_DELETED_PLAYER; - - if (!valid) { - res = FALSE; - break; + while (i != 0) { + int valid = aCR_GetFossilPartDonator(*fossil_part_p) >= mMmd_DONATOR_PLAYER1 && + aCR_GetFossilPartDonator(*fossil_part_p) <= mMmd_DONATOR_DELETED_PLAYER; + + if (!valid) { + res = FALSE; + break; + } + + fossil_part_p++; + i--; } - - fossil_part_p++; - i--; - } - return res; + return res; } static void aCR_chk_fossil_parts_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no_table[aCR_FOSSIL_TYPE_NUM] = { - 0x2F78, - 0x2F79, - 0x2F7A, - 0x2F7B, - 0x2F7C, - 0x2F7D, - 0x2F7E - }; - - int fossil_type = aCR_get_fossil_type(play->submenu.item_p->item); - int msg_no = 0x2F84; + static int msg_no_table[aCR_FOSSIL_TYPE_NUM] = { 0x2F78, 0x2F79, 0x2F7A, 0x2F7B, 0x2F7C, 0x2F7D, 0x2F7E }; - if (fossil_type != -1 && aCR_chk_fossil_parts_complete_sub(fossil_type) == TRUE) { - msg_no = msg_no_table[fossil_type]; - } + int fossil_type = aCR_get_fossil_type(play->submenu.item_p->item); + int msg_no = 0x2F84; - mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no); - curator->msg_no = msg_no; - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_THANKS_FOSSIL_MSG_END_WAIT); + if (fossil_type != -1 && aCR_chk_fossil_parts_complete_sub(fossil_type) == TRUE) { + msg_no = msg_no_table[fossil_type]; + } + + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no); + curator->msg_no = msg_no; + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_THANKS_FOSSIL_MSG_END_WAIT); } static void aCR_chk_fossil_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { 0x2F73, 0x2F85 }; - static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; + static int msg_no[] = { 0x2F73, 0x2F85 }; + static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int complete = FALSE; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int complete = FALSE; - if (mMmd_CountDisplayedFossil() == mMmd_FOSSIL_NUM) { - complete = TRUE; - } + if (mMmd_CountDisplayedFossil() == mMmd_FOSSIL_NUM) { + complete = TRUE; + } - mMsg_Set_continue_msg_num(msg_p, msg_no[complete]); - curator->msg_no = msg_no[complete]; - (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); + mMsg_Set_continue_msg_num(msg_p, msg_no[complete]); + curator->msg_no = msg_no[complete]; + (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); } static void aCR_chk_art_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { 0x2F73, 0x2F75 }; - static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; + static int msg_no[] = { 0x2F73, 0x2F75 }; + static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; - int complete = FALSE; + int complete = FALSE; - if (mMmd_CountDisplayedArt() == mMmd_ART_NUM) { - complete = TRUE; - } + if (mMmd_CountDisplayedArt() == mMmd_ART_NUM) { + complete = TRUE; + } - mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); - curator->msg_no = msg_no[complete]; - (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); + curator->msg_no = msg_no[complete]; + (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); } static void aCR_chk_fish_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { 0x2F73, 0x2F8A }; - static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; + static int msg_no[] = { 0x2F73, 0x2F8A }; + static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; - int complete = FALSE; + int complete = FALSE; - if (mMmd_CountDisplayedFish() == mMmd_FISH_NUM) { - complete = TRUE; - } + if (mMmd_CountDisplayedFish() == mMmd_FISH_NUM) { + complete = TRUE; + } - mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); - curator->msg_no = msg_no[complete]; - (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); + curator->msg_no = msg_no[complete]; + (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); } static void aCR_chk_insect_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { 0x2F73, 0x2F88 }; - static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; + static int msg_no[] = { 0x2F73, 0x2F88 }; + static int next_act_idx[] = { aCR_TALK_CHK_CONTINUE_TO_DONATE3, aCR_TALK_CHK_ALL_COMPLETE }; - int complete = FALSE; + int complete = FALSE; - if (mMmd_CountDisplayedInsect() == mMmd_INSECT_NUM) { - complete = TRUE; - } + if (mMmd_CountDisplayedInsect() == mMmd_INSECT_NUM) { + complete = TRUE; + } - mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); - curator->msg_no = msg_no[complete]; - (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[complete]); + curator->msg_no = msg_no[complete]; + (*curator->setupTalkAction_proc)(curator, play, next_act_idx[complete]); } static void aCR_set_after_explain_insect(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { - 0x3A56, - 0x3A56, - 0x3A56, - 0x3A56, - 0x3A57, - 0x3A57, - 0x3A5D, - 0x3A57, - 0x3A5E, - 0x3A58, - 0x3A58, - 0x3A58, - 0x3A5F, - 0x3A59, - 0x3A59, - 0x3A5A, - 0x3A5A, - 0x3A5A, - 0x3A5A, - 0x3A5B, - 0x3A5B, - 0x3A5B, - 0x3A61, - 0x3A62, - 0x3A5C, - 0x3A5C, - 0x3A63, - 0x3A64, - 0x3A56, - 0x3A5B, - 0x3A5B, - 0x3A60, - 0x3A6B, - 0x3A69, - 0x3A65, - 0x3A6C, - 0x3A68, - 0x3A6A, - 0x3A66, - 0x3A67 - }; + static int msg_no[] = { 0x3A56, 0x3A56, 0x3A56, 0x3A56, 0x3A57, 0x3A57, 0x3A5D, 0x3A57, 0x3A5E, 0x3A58, + 0x3A58, 0x3A58, 0x3A5F, 0x3A59, 0x3A59, 0x3A5A, 0x3A5A, 0x3A5A, 0x3A5A, 0x3A5B, + 0x3A5B, 0x3A5B, 0x3A61, 0x3A62, 0x3A5C, 0x3A5C, 0x3A63, 0x3A64, 0x3A56, 0x3A5B, + 0x3A5B, 0x3A60, 0x3A6B, 0x3A69, 0x3A65, 0x3A6C, 0x3A68, 0x3A6A, 0x3A66, 0x3A67 }; - int insect_type = curator->donated_item - ITM_INSECT_START; + int insect_type = curator->donated_item - ITM_INSECT_START; - if (insect_type < 0 || insect_type >= INSECT_ONLY_NUM) { - insect_type = 0; - } + if (insect_type < 0 || insect_type >= INSECT_ONLY_NUM) { + insect_type = 0; + } - mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[insect_type]); - curator->msg_no = msg_no[insect_type]; - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_AFTER_EXPLAIN_INSECT); + mMsg_Set_continue_msg_num(mMsg_Get_base_window_p(), msg_no[insect_type]); + curator->msg_no = msg_no[insect_type]; + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_AFTER_EXPLAIN_INSECT); } static void aCR_set_item_name_str(mActor_name_t item) { - u8 item_str[mIN_ITEM_NAME_LEN]; + u8 item_str[mIN_ITEM_NAME_LEN]; - mIN_copy_name_str(item_str, item); - mMsg_Set_item_str_art(mMsg_Get_base_window_p(), mMsg_FREE_STR0, item_str, sizeof(item_str), mIN_get_item_article(item)); + mIN_copy_name_str(item_str, item); + mMsg_Set_item_str_art(mMsg_Get_base_window_p(), mMsg_FREE_STR0, item_str, sizeof(item_str), + mIN_get_item_article(item)); } static void aCR_set_other_player_name_str(int player_no) { - mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(private[player_no]).player_ID.player_name, PLAYER_NAME_LEN); + mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(private_data[player_no]).player_ID.player_name, + PLAYER_NAME_LEN); } static int aCR_countDisplayed() { - return mMmd_CountDisplayedFossil() + mMmd_CountDisplayedArt() + mMmd_CountDisplayedInsect() + mMmd_CountDisplayedFish(); + return mMmd_CountDisplayedFossil() + mMmd_CountDisplayedArt() + mMmd_CountDisplayedInsect() + + mMmd_CountDisplayedFish(); } static int aCR_get_msg_no_after_talk() { - static int msg_no[] = { 0x2F58, 0x2F59, 0x2F5A, 0x2F5B }; - int displayed = aCR_countDisplayed(); - int idx; + static int msg_no[] = { 0x2F58, 0x2F59, 0x2F5A, 0x2F5B }; + int displayed = aCR_countDisplayed(); + int idx; - if (displayed == 0) { - idx = 0; - } - else if (displayed <= 36) { - idx = 1; - } - else if (displayed <= 84) { - idx = 2; - } - else { - idx = 3; - } + if (displayed == 0) { + idx = 0; + } else if (displayed <= 36) { + idx = 1; + } else if (displayed <= 84) { + idx = 2; + } else { + idx = 3; + } - return msg_no[idx]; + return msg_no[idx]; } static int aCR_get_idx_to_donate_fossil(mActor_name_t item) { - int donator = aCR_GetFossilPartDonator(item); + int donator = aCR_GetFossilPartDonator(item); - if (donator == (Common_Get(player_no) + 1)) { - return 4; - } - - switch (donator) { - case mMmd_DONATOR_NONE: - { - switch (item) { - case FTR_FOSSIL_TRILOBITE: - return 17; - case FTR_FOSSIL_AMMONITE: - return 18; - case FTR_FOSSIL_EGG: - return 19; - case FTR_FOSSIL_TRACK: - return 20; - case FTR_FOSSIL_AMBER: - return 21; - default: - return 16; - } + if (donator == (Common_Get(player_no) + 1)) { + return 4; } - case mMmd_DONATOR_DELETED_PLAYER: - return 12; - } + switch (donator) { + case mMmd_DONATOR_NONE: { + switch (item) { + case FTR_FOSSIL_TRILOBITE: + return 17; + case FTR_FOSSIL_AMMONITE: + return 18; + case FTR_FOSSIL_EGG: + return 19; + case FTR_FOSSIL_TRACK: + return 20; + case FTR_FOSSIL_AMBER: + return 21; + default: + return 16; + } + } - aCR_set_other_player_name_str(donator - 1); - return 8; + case mMmd_DONATOR_DELETED_PLAYER: + return 12; + } + + aCR_set_other_player_name_str(donator - 1); + return 8; } static int aCR_get_idx_to_donate_art(mActor_name_t item) { - int donator = aCR_GetArtDonator(item); + int donator = aCR_GetArtDonator(item); - switch (item) { - case FTR_PAINTING15_UNUSED: - case FTR_PAINTING16_UNUSED: - return 1; - } + switch (item) { + case FTR_PAINTING15_UNUSED: + case FTR_PAINTING16_UNUSED: + return 1; + } - if (donator == (Common_Get(player_no) + 1)) { - return 5; - } - - switch (donator) { - case mMmd_DONATOR_NONE: - return 22 + RANDOM(3); - case mMmd_DONATOR_DELETED_PLAYER: - return 13; - } + if (donator == (Common_Get(player_no) + 1)) { + return 5; + } - aCR_set_other_player_name_str(donator - 1); - return 9; + switch (donator) { + case mMmd_DONATOR_NONE: + return 22 + RANDOM(3); + case mMmd_DONATOR_DELETED_PLAYER: + return 13; + } + + aCR_set_other_player_name_str(donator - 1); + return 9; } static int aCR_get_idx_to_donate_insect(mActor_name_t item) { - int donator = aCR_GetInsectDonator(item); - int res; + int donator = aCR_GetInsectDonator(item); + int res; - if (donator == (Common_Get(player_no) + 1)) { - res = 7; - } - else { - switch (donator) { - case mMmd_DONATOR_NONE: - { - /* Is it a cockroach? */ - if (item == ITM_INSECT28) { - res = 26; - } - else { - res = 25; - } - break; + if (donator == (Common_Get(player_no) + 1)) { + res = 7; + } else { + switch (donator) { + case mMmd_DONATOR_NONE: { + /* Is it a cockroach? */ + if (item == ITM_INSECT28) { + res = 26; + } else { + res = 25; + } + break; + } + + case mMmd_DONATOR_DELETED_PLAYER: + res = 15; + break; + + default: + aCR_set_other_player_name_str(donator - 1); + res = 11; + break; + } } - case mMmd_DONATOR_DELETED_PLAYER: - res = 15; - break; - - default: - aCR_set_other_player_name_str(donator - 1); - res = 11; - break; - } - } - - return res; + return res; } static int aCR_get_idx_to_donate_fish(mActor_name_t item) { - int donator = aCR_GetFishDonator(item); + int donator = aCR_GetFishDonator(item); - if (donator == (Common_Get(player_no) + 1)) { - return 6; - } - - switch (donator) { - case mMmd_DONATOR_NONE: - return 27; + if (donator == (Common_Get(player_no) + 1)) { + return 6; + } - case mMmd_DONATOR_DELETED_PLAYER: - return 14; - } + switch (donator) { + case mMmd_DONATOR_NONE: + return 27; - aCR_set_other_player_name_str(donator - 1); - return 10; + case mMmd_DONATOR_DELETED_PLAYER: + return 14; + } + + aCR_set_other_player_name_str(donator - 1); + return 10; } static void aCR_after_talk_start_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - int msg_no = aCR_get_msg_no_after_talk(); - - mMsg_Set_continue_msg_num(msg_p, msg_no); - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_END_WAIT); - } + if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + int msg_no = aCR_get_msg_no_after_talk(); + + mMsg_Set_continue_msg_num(msg_p, msg_no); + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_END_WAIT); + } } static void aCR_chk_request(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int talk_act; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int talk_act; - if (mMsg_Get_msg_num(msg_p) == 0x2F50 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - talk_act = aCR_TALK_MENU_OPEN_WAIT; - break; - case mChoice_CHOICE1: - talk_act = aCR_TALK_CHK_DECIDE_TO_DONATE; - break; - case mChoice_CHOICE2: - talk_act = aCR_TALK_AFTER_TALK_START_WAIT; - break; - default: - talk_act = aCR_TALK_END_WAIT; - break; + if (mMsg_Get_msg_num(msg_p) == 0x2F50 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + talk_act = aCR_TALK_MENU_OPEN_WAIT; + break; + case mChoice_CHOICE1: + talk_act = aCR_TALK_CHK_DECIDE_TO_DONATE; + break; + case mChoice_CHOICE2: + talk_act = aCR_TALK_AFTER_TALK_START_WAIT; + break; + default: + talk_act = aCR_TALK_END_WAIT; + break; + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_chk_decide_to_donate(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int talk_act; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int talk_act; - if (mMsg_Get_msg_num(msg_p) == 0x2F5F && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - talk_act = aCR_TALK_CHK_DECIDE_TO_DONATE2; - break; - case mChoice_CHOICE1: - talk_act = aCR_TALK_END_WAIT; - break; - default: - talk_act = aCR_TALK_END_WAIT; - break; + if (mMsg_Get_msg_num(msg_p) == 0x2F5F && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + talk_act = aCR_TALK_CHK_DECIDE_TO_DONATE2; + break; + case mChoice_CHOICE1: + talk_act = aCR_TALK_END_WAIT; + break; + default: + talk_act = aCR_TALK_END_WAIT; + break; + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_chk_decide_to_donate2(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int talk_act; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int talk_act; - if (mMsg_Get_msg_num(msg_p) == 0x2F60 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - talk_act = aCR_TALK_MENU_OPEN_WAIT; - break; - case mChoice_CHOICE1: - talk_act = aCR_TALK_END_WAIT; - break; - default: - talk_act = aCR_TALK_END_WAIT; - break; + if (mMsg_Get_msg_num(msg_p) == 0x2F60 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + talk_act = aCR_TALK_MENU_OPEN_WAIT; + break; + case mChoice_CHOICE1: + talk_act = aCR_TALK_END_WAIT; + break; + default: + talk_act = aCR_TALK_END_WAIT; + break; + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_menu_open_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == TRUE) { - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MSG_WIN_CLOSE_WAIT); - } + if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == TRUE) { + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MSG_WIN_CLOSE_WAIT); + } } static void aCR_msg_win_close_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (mMsg_Check_main_wait(mMsg_Get_base_window_p()) == TRUE) { - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MENU_CLOSE_WAIT); - } + if (mMsg_Check_main_wait(mMsg_Get_base_window_p()) == TRUE) { + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MENU_CLOSE_WAIT); + } } static void aCR_menu_close_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - int talk_act; + int talk_act; - if (play->submenu.open_flag == FALSE) { - talk_act = aCR_TALK_GET_DEMO_START_WAIT; + if (play->submenu.open_flag == FALSE) { + talk_act = aCR_TALK_GET_DEMO_START_WAIT; - if (play->submenu.item_p->item == EMPTY_NO) { - talk_act = aCR_TALK_MSG_WIN_OPEN_WAIT; + if (play->submenu.item_p->item == EMPTY_NO) { + talk_act = aCR_TALK_MSG_WIN_OPEN_WAIT; + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_get_demo_start_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_TRANS_WAIT) { - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_GET_DEMO_END_WAIT); - } + if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_TRANS_WAIT) { + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_GET_DEMO_END_WAIT); + } } static void aCR_get_demo_end_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_GET_PULL_WAIT) { - curator->npc_class.talk_info.default_animation = 30; - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MSG_WIN_OPEN_WAIT); - } + if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_GET_PULL_WAIT) { + curator->npc_class.talk_info.default_animation = 30; + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_MSG_WIN_OPEN_WAIT); + } } -#define aCR_IS_FOSSIL(item) \ - ((item) >= FTR_DINO_START && (item) <= FTR_DINO_END) +#define aCR_IS_FOSSIL(item) ((item) >= FTR_DINO_START && (item) <= FTR_DINO_END) -#define aCR_IS_ART(item) \ - ((item) >= FTR_PAINTING0 && (item) <= FTR_PAINTING14_WEST) +#define aCR_IS_ART(item) ((item) >= FTR_PAINTING0 && (item) <= FTR_PAINTING14_WEST) -#define aCR_IS_INSECT(item) \ - ((item) >= ITM_INSECT_START && (item) < ITM_INSECT_END) +#define aCR_IS_INSECT(item) ((item) >= ITM_INSECT_START && (item) < ITM_INSECT_END) -#define aCR_IS_FISH(item) \ - ((item) >= ITM_FISH_START && (item) <= ITM_FISH_END) +#define aCR_IS_FISH(item) ((item) >= ITM_FISH_START && (item) <= ITM_FISH_END) typedef struct { - int msg_no; - int talk_act; + int msg_no; + int talk_act; } aCR_donate_act_c; static void aCR_msg_win_open_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static aCR_donate_act_c donate_act[] = { - { 0x2F63, aCR_TALK_END_WAIT }, - { 0x3A83, aCR_TALK_RETURN_DEMO_START_WAIT }, - { 0x2F64, aCR_TALK_RETURN_DEMO_START_WAIT }, - { 0x2F65, aCR_TALK_RETURN_DEMO_START_WAIT }, - { 0x2F6B, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F6C, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F6D, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F6E, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F67, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F68, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F69, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F6A, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F90, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F91, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F92, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F93, aCR_TALK_RETURN_DEMO_START_WAIT2 }, - { 0x2F8F, aCR_TALK_PUTAWAY_DEMO_START_WAIT2 }, - { 0x2F7F, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, - { 0x2F80, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, - { 0x2F81, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, - { 0x2F82, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, - { 0x2F83, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, - { 0x2F70, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, - { 0x2F71, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, - { 0x2F72, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, - { 0x2F86, aCR_TALK_PUTAWAY_DEMO_START_WAIT5 }, - { 0x2F87, aCR_TALK_PUTAWAY_DEMO_START_WAIT4 }, - { 0x2F89, aCR_TALK_PUTAWAY_DEMO_START_WAIT5_2 } - }; + static aCR_donate_act_c donate_act[] = { { 0x2F63, aCR_TALK_END_WAIT }, + { 0x3A83, aCR_TALK_RETURN_DEMO_START_WAIT }, + { 0x2F64, aCR_TALK_RETURN_DEMO_START_WAIT }, + { 0x2F65, aCR_TALK_RETURN_DEMO_START_WAIT }, + { 0x2F6B, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F6C, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F6D, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F6E, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F67, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F68, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F69, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F6A, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F90, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F91, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F92, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F93, aCR_TALK_RETURN_DEMO_START_WAIT2 }, + { 0x2F8F, aCR_TALK_PUTAWAY_DEMO_START_WAIT2 }, + { 0x2F7F, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, + { 0x2F80, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, + { 0x2F81, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, + { 0x2F82, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, + { 0x2F83, aCR_TALK_PUTAWAY_DEMO_START_WAIT3 }, + { 0x2F70, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, + { 0x2F71, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, + { 0x2F72, aCR_TALK_PUTAWAY_DEMO_START_WAIT }, + { 0x2F86, aCR_TALK_PUTAWAY_DEMO_START_WAIT5 }, + { 0x2F87, aCR_TALK_PUTAWAY_DEMO_START_WAIT4 }, + { 0x2F89, aCR_TALK_PUTAWAY_DEMO_START_WAIT5_2 } }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - mActor_name_t item; - int act_idx; - aCR_donate_act_c* donate_act_p; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mActor_name_t item; + int act_idx; + aCR_donate_act_c* donate_act_p; - if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { - act_idx = 0; - item = play->submenu.item_p->item; + if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { + act_idx = 0; + item = play->submenu.item_p->item; - if (item != EMPTY_NO) { - if (aCR_IS_FOSSIL(item) == TRUE) { - act_idx = aCR_get_idx_to_donate_fossil(item); - } - else if (aCR_IS_ART(item) == TRUE) { - act_idx = aCR_get_idx_to_donate_art(item); - } - else if (aCR_IS_INSECT(item) == TRUE) { - act_idx = aCR_get_idx_to_donate_insect(item); - } - else if (aCR_IS_FISH(item) == TRUE) { - act_idx = aCR_get_idx_to_donate_fish(item); - } - else if (item == ITM_FOSSIL) { - act_idx = 3; - } - else { - act_idx = 2; - } + if (item != EMPTY_NO) { + if (aCR_IS_FOSSIL(item) == TRUE) { + act_idx = aCR_get_idx_to_donate_fossil(item); + } else if (aCR_IS_ART(item) == TRUE) { + act_idx = aCR_get_idx_to_donate_art(item); + } else if (aCR_IS_INSECT(item) == TRUE) { + act_idx = aCR_get_idx_to_donate_insect(item); + } else if (aCR_IS_FISH(item) == TRUE) { + act_idx = aCR_get_idx_to_donate_fish(item); + } else if (item == ITM_FOSSIL) { + act_idx = 3; + } else { + act_idx = 2; + } - aCR_set_item_name_str(item); + aCR_set_item_name_str(item); + } + + donate_act_p = &donate_act[act_idx]; + curator->donated_item = item; + mMsg_Set_continue_msg_num(msg_p, donate_act_p->msg_no); + mMsg_Set_ForceNext(msg_p); + (*curator->setupTalkAction_proc)(curator, play, donate_act_p->talk_act); } - - donate_act_p = &donate_act[act_idx]; - curator->donated_item = item; - mMsg_Set_continue_msg_num(msg_p, donate_act_p->msg_no); - mMsg_Set_ForceNext(msg_p); - (*curator->setupTalkAction_proc)(curator, play, donate_act_p->talk_act); - } } static void aCR_return_demo_start_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1); - if (order == 10) { - int talk_act = aCR_TALK_RETURN_DEMO_END_WAIT; + if (order == 10) { + int talk_act = aCR_TALK_RETURN_DEMO_END_WAIT; - if (curator->talk_act_idx != aCR_TALK_RETURN_DEMO_START_WAIT) { - talk_act = aCR_TALK_RETURN_DEMO_END_WAIT2; + if (curator->talk_act_idx != aCR_TALK_RETURN_DEMO_START_WAIT) { + talk_act = aCR_TALK_RETURN_DEMO_END_WAIT2; + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_return_demo_end_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int talk_act = aCR_TALK_CHK_CONTINUE_TO_DONATE; + if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int talk_act = aCR_TALK_CHK_CONTINUE_TO_DONATE; - if (curator->talk_act_idx != aCR_TALK_RETURN_DEMO_END_WAIT) { - talk_act = aCR_TALK_CHK_CONTINUE_TO_DONATE2; + if (curator->talk_act_idx != aCR_TALK_RETURN_DEMO_END_WAIT) { + talk_act = aCR_TALK_CHK_CONTINUE_TO_DONATE2; + } + + curator->npc_class.talk_info.default_animation = -1; + mMsg_Unset_LockContinue(msg_p); + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - - curator->npc_class.talk_info.default_animation = -1; - mMsg_Unset_LockContinue(msg_p); - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_chk_continue_to_donate(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int chk_msg_num[] = { 0x2F66, 0x2F6F, 0x2F73 }; + static int chk_msg_num[] = { 0x2F66, 0x2F6F, 0x2F73 }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int donate_idx = curator->talk_act_idx - aCR_TALK_CHK_CONTINUE_TO_DONATE; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int donate_idx = curator->talk_act_idx - aCR_TALK_CHK_CONTINUE_TO_DONATE; - if (chk_msg_num[donate_idx] == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { - int talk_act = aCR_TALK_END_WAIT; - int msg_no; + if (chk_msg_num[donate_idx] == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { + int talk_act = aCR_TALK_END_WAIT; + int msg_no; - if (mChoice_Get_ChoseNum(mChoice_Get_base_window_p()) == mChoice_CHOICE0) { - talk_act = aCR_TALK_MENU_OPEN_WAIT; - msg_no = 0x2F62; + if (mChoice_Get_ChoseNum(mChoice_Get_base_window_p()) == mChoice_CHOICE0) { + talk_act = aCR_TALK_MENU_OPEN_WAIT; + msg_no = 0x2F62; + } else { + msg_no = aCR_get_msg_no_after_talk(); + } + + if (curator->talk_act_idx != aCR_TALK_CHK_CONTINUE_TO_DONATE3) { + mMsg_Set_continue_msg_num(msg_p, msg_no); + } + + (*curator->setupTalkAction_proc)(curator, play, talk_act); } - else { - msg_no = aCR_get_msg_no_after_talk(); - } - - if (curator->talk_act_idx != aCR_TALK_CHK_CONTINUE_TO_DONATE3) { - mMsg_Set_continue_msg_num(msg_p, msg_no); - } - - (*curator->setupTalkAction_proc)(curator, play, talk_act); - } } static void aCR_putaway_demo_start_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1); - - if (order == 14) { - (*curator->setupTalkAction_proc)(curator, play, curator->talk_act_idx + (aCR_TALK_PUTAWAY_DEMO_END_WAIT - aCR_TALK_PUTAWAY_DEMO_START_WAIT)); - } + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1); + + if (order == 14) { + (*curator->setupTalkAction_proc)( + curator, play, curator->talk_act_idx + (aCR_TALK_PUTAWAY_DEMO_END_WAIT - aCR_TALK_PUTAWAY_DEMO_START_WAIT)); + } } static void aCR_putaway_demo_start_wait5_2(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[FISH_NUM + 1] = { - 0x3A6D, - 0x3A6E, - 0x3A6D, - 0x3A80, - 0x3A6D, - 0x3A6D, - 0x3A6E, - 0x3A6F, - 0x3A6D, - 0x3A70, - 0x3A71, - 0x3A6D, - 0x3A6E, - 0x3A72, - 0x3A6D, - 0x3A6D, - 0x3A6D, - 0x3A73, - 0x3A6E, - 0x3A81, - 0x3A6E, - 0x3A74, - 0x3A6D, - 0x3A7D, - 0x3A75, - 0x3A76, - 0x3A6E, - 0x3A6E, - 0x3A7E, - 0x3A77, - 0x3A7D, - 0x3A79, - 0x3A7C, - 0x3A82, - 0x3A77, - 0x3A7F, - 0x3A6D, - 0x3A7A, - 0x3A7B, - 0x3A78 - // uninitialized entry here - }; + static int msg_no[FISH_NUM + 1] = { + 0x3A6D, 0x3A6E, 0x3A6D, 0x3A80, 0x3A6D, 0x3A6D, 0x3A6E, 0x3A6F, 0x3A6D, 0x3A70, 0x3A71, 0x3A6D, 0x3A6E, 0x3A72, + 0x3A6D, 0x3A6D, 0x3A6D, 0x3A73, 0x3A6E, 0x3A81, 0x3A6E, 0x3A74, 0x3A6D, 0x3A7D, 0x3A75, 0x3A76, 0x3A6E, 0x3A6E, + 0x3A7E, 0x3A77, 0x3A7D, 0x3A79, 0x3A7C, 0x3A82, 0x3A77, 0x3A7F, 0x3A6D, 0x3A7A, 0x3A7B, 0x3A78 + // uninitialized entry here + }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (mMsg_Get_msg_num(msg_p) == 0x2F89) { - int fish_type = curator->donated_item - ITM_FISH_START; + if (mMsg_Get_msg_num(msg_p) == 0x2F89) { + int fish_type = curator->donated_item - ITM_FISH_START; - if (fish_type < 0 || fish_type >= (FISH_NUM + 1)) { - fish_type = 0; + if (fish_type < 0 || fish_type >= (FISH_NUM + 1)) { + fish_type = 0; + } + + mMsg_Set_continue_msg_num(msg_p, msg_no[fish_type]); + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_PUTAWAY_DEMO_START_WAIT6); } - - mMsg_Set_continue_msg_num(msg_p, msg_no[fish_type]); - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_PUTAWAY_DEMO_START_WAIT6); - } } static void aCR_putaway_demo_end_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { - curator->npc_class.talk_info.default_animation = -1; - mMsg_Unset_LockContinue(mMsg_Get_base_window_p()); + if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { + curator->npc_class.talk_info.default_animation = -1; + mMsg_Unset_LockContinue(mMsg_Get_base_window_p()); - switch (curator->talk_act_idx) { - case aCR_TALK_PUTAWAY_DEMO_END_WAIT: - aCR_chk_art_complete(curator, play); - break; - case aCR_TALK_PUTAWAY_DEMO_END_WAIT2: - aCR_chk_fossil_parts_complete(curator, play); - break; - case aCR_TALK_PUTAWAY_DEMO_END_WAIT3: - aCR_chk_fossil_complete(curator, play); - break; - case aCR_TALK_PUTAWAY_DEMO_END_WAIT4: - aCR_chk_insect_complete(curator, play); - break; - case aCR_TALK_PUTAWAY_DEMO_END_WAIT5: - aCR_set_after_explain_insect(curator, play); - break; - case aCR_TALK_PUTAWAY_DEMO_END_WAIT6: - aCR_chk_fish_complete(curator, play); - break; + switch (curator->talk_act_idx) { + case aCR_TALK_PUTAWAY_DEMO_END_WAIT: + aCR_chk_art_complete(curator, play); + break; + case aCR_TALK_PUTAWAY_DEMO_END_WAIT2: + aCR_chk_fossil_parts_complete(curator, play); + break; + case aCR_TALK_PUTAWAY_DEMO_END_WAIT3: + aCR_chk_fossil_complete(curator, play); + break; + case aCR_TALK_PUTAWAY_DEMO_END_WAIT4: + aCR_chk_insect_complete(curator, play); + break; + case aCR_TALK_PUTAWAY_DEMO_END_WAIT5: + aCR_set_after_explain_insect(curator, play); + break; + case aCR_TALK_PUTAWAY_DEMO_END_WAIT6: + aCR_chk_fish_complete(curator, play); + break; + } } - } } static void aCR_after_explain_insect(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { - aCR_chk_insect_complete(curator, play); - } + if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { + aCR_chk_insect_complete(curator, play); + } } static void aCR_thanks_fossil_msg_end_wait(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { - aCR_chk_fossil_complete(curator, play); - } + if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p)) { + aCR_chk_fossil_complete(curator, play); + } } static void aCR_chk_all_complete(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - static int msg_no[] = { 0x2F76, 0x2F77 }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + static int msg_no[] = { 0x2F76, 0x2F77 }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - int msg_idx = 0; + if (curator->msg_no == mMsg_Get_msg_num(msg_p) && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + int msg_idx = 0; - if (aCR_countDisplayed() == (mMmd_FOSSIL_NUM + mMmd_ART_NUM + mMmd_INSECT_NUM + mMmd_FISH_NUM)) { - mMsm_SetCompMail(); - msg_idx = 1; + if (aCR_countDisplayed() == (mMmd_FOSSIL_NUM + mMmd_ART_NUM + mMmd_INSECT_NUM + mMmd_FISH_NUM)) { + mMsm_SetCompMail(); + msg_idx = 1; + } + + mMsg_Set_continue_msg_num(msg_p, msg_no[msg_idx]); + (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_END_WAIT); } - - mMsg_Set_continue_msg_num(msg_p, msg_no[msg_idx]); - (*curator->setupTalkAction_proc)(curator, play, aCR_TALK_END_WAIT); - } } static void aCR_msg_win_close_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()); + mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()); } static void aCR_menu_close_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mSM_open_submenu(&play->submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_CURATOR, 0); + mSM_open_submenu(&play->submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_CURATOR, 0); } static void aCR_get_demo_end_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3); - Common_Get(clip).handOverItem_clip->player_after_mode = 8; + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3); + Common_Get(clip).handOverItem_clip->player_after_mode = 8; } static void aCR_msg_win_open_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - mMsg_request_main_appear_wait_type1(msg_p); - mMsg_Unset_LockContinue(msg_p); + mMsg_request_main_appear_wait_type1(msg_p); + mMsg_Unset_LockContinue(msg_p); } static void aCR_return_demo_end_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - mMsg_Set_LockContinue(mMsg_Get_base_window_p()); + mMsg_Set_LockContinue(mMsg_Get_base_window_p()); } static void aCR_putaway_demo_end_wait_init(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play) { - Submenu_Item_c* sm_item_p = play->submenu.item_p; + Submenu_Item_c* sm_item_p = play->submenu.item_p; - if (mMmd_RequestMuseumDisplay(sm_item_p->item) == TRUE) { - mPr_SetPossessionItem(Common_Get(now_private), sm_item_p->slot_no, EMPTY_NO, mPr_ITEM_COND_NORMAL); - } + if (mMmd_RequestMuseumDisplay(sm_item_p->item) == TRUE) { + mPr_SetPossessionItem(Common_Get(now_private), sm_item_p->slot_no, EMPTY_NO, mPr_ITEM_COND_NORMAL); + } - mMsg_Set_LockContinue(mMsg_Get_base_window_p()); + mMsg_Set_LockContinue(mMsg_Get_base_window_p()); } typedef void (*aCR_TALK_INIT_PROC)(NPC_CURATOR_ACTOR*, GAME_PLAY*); static void aCR_talk_init_proc(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play, int talk_act) { - static aCR_TALK_INIT_PROC init_proc[aCR_TALK_NUM] = { - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - &aCR_msg_win_close_wait_init, - &aCR_menu_close_wait_init, - (aCR_TALK_INIT_PROC)none_proc1, - &aCR_get_demo_end_wait_init, - &aCR_msg_win_open_wait_init, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - &aCR_return_demo_end_wait_init, - &aCR_return_demo_end_wait_init, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - &aCR_putaway_demo_end_wait_init, - &aCR_putaway_demo_end_wait_init, - &aCR_putaway_demo_end_wait_init, - &aCR_putaway_demo_end_wait_init, - &aCR_putaway_demo_end_wait_init, - &aCR_putaway_demo_end_wait_init, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1, - (aCR_TALK_INIT_PROC)none_proc1 - }; + static aCR_TALK_INIT_PROC init_proc[aCR_TALK_NUM] = { + (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + &aCR_msg_win_close_wait_init, &aCR_menu_close_wait_init, (aCR_TALK_INIT_PROC)none_proc1, + &aCR_get_demo_end_wait_init, &aCR_msg_win_open_wait_init, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1, &aCR_return_demo_end_wait_init, &aCR_return_demo_end_wait_init, + (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1, &aCR_putaway_demo_end_wait_init, &aCR_putaway_demo_end_wait_init, + &aCR_putaway_demo_end_wait_init, &aCR_putaway_demo_end_wait_init, &aCR_putaway_demo_end_wait_init, + &aCR_putaway_demo_end_wait_init, (aCR_TALK_INIT_PROC)none_proc1, (aCR_TALK_INIT_PROC)none_proc1, + (aCR_TALK_INIT_PROC)none_proc1 + }; - (*init_proc[talk_act])(curator, play); + (*init_proc[talk_act])(curator, play); } static void aCR_setupTalkAction(NPC_CURATOR_ACTOR* curator, GAME_PLAY* play, int talk_act) { - static aCR_TALK_ACT_PROC process[aCR_TALK_NUM] = { - (aCR_TALK_INIT_PROC)&none_proc1, - &aCR_after_talk_start_wait, - &aCR_chk_request, - &aCR_chk_decide_to_donate, - &aCR_chk_decide_to_donate2, - &aCR_menu_open_wait, - &aCR_msg_win_close_wait, - &aCR_menu_close_wait, - &aCR_get_demo_start_wait, - &aCR_get_demo_end_wait, - &aCR_msg_win_open_wait, - &aCR_return_demo_start_wait, - &aCR_return_demo_start_wait, - &aCR_return_demo_end_wait, - &aCR_return_demo_end_wait, - &aCR_chk_continue_to_donate, - &aCR_chk_continue_to_donate, - &aCR_chk_continue_to_donate, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait, - &aCR_putaway_demo_start_wait5_2, - &aCR_putaway_demo_end_wait, - &aCR_putaway_demo_end_wait, - &aCR_putaway_demo_end_wait, - &aCR_putaway_demo_end_wait, - &aCR_putaway_demo_end_wait, - &aCR_putaway_demo_end_wait, - &aCR_after_explain_insect, - &aCR_thanks_fossil_msg_end_wait, - &aCR_chk_all_complete - }; + static aCR_TALK_ACT_PROC process[aCR_TALK_NUM] = { (aCR_TALK_INIT_PROC)&none_proc1, + &aCR_after_talk_start_wait, + &aCR_chk_request, + &aCR_chk_decide_to_donate, + &aCR_chk_decide_to_donate2, + &aCR_menu_open_wait, + &aCR_msg_win_close_wait, + &aCR_menu_close_wait, + &aCR_get_demo_start_wait, + &aCR_get_demo_end_wait, + &aCR_msg_win_open_wait, + &aCR_return_demo_start_wait, + &aCR_return_demo_start_wait, + &aCR_return_demo_end_wait, + &aCR_return_demo_end_wait, + &aCR_chk_continue_to_donate, + &aCR_chk_continue_to_donate, + &aCR_chk_continue_to_donate, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait, + &aCR_putaway_demo_start_wait5_2, + &aCR_putaway_demo_end_wait, + &aCR_putaway_demo_end_wait, + &aCR_putaway_demo_end_wait, + &aCR_putaway_demo_end_wait, + &aCR_putaway_demo_end_wait, + &aCR_putaway_demo_end_wait, + &aCR_after_explain_insect, + &aCR_thanks_fossil_msg_end_wait, + &aCR_chk_all_complete }; - curator->talk_act_idx = talk_act; - curator->talk_proc = process[talk_act]; - aCR_talk_init_proc(curator, play, talk_act); + curator->talk_act_idx = talk_act; + curator->talk_proc = process[talk_act]; + aCR_talk_init_proc(curator, play, talk_act); } static void aCR_set_talk_info(ACTOR* actorx) { - static int msg_no[2][2][2][3] = { - { - { { 0x2F8B, 0x2F8C, 0x2F8C }, { 0x2F8D, 0x2F95, 0x2F8E } }, - { { 0x2F4E, 0x2F4F, 0x2F4F }, { 0x2F51, 0x2F96, 0x2F52 } } - }, - { - { { 0x2F53, 0x2F54, 0x2F54 }, { 0x2F55, 0x2F94, 0x2F56 } }, - { { 0x2F53, 0x2F54, 0x2F54 }, { 0x2F55, 0x2F94, 0x2F56 } } - } - }; + static int msg_no[2][2][2][3] = { { { { 0x2F8B, 0x2F8C, 0x2F8C }, { 0x2F8D, 0x2F95, 0x2F8E } }, + { { 0x2F4E, 0x2F4F, 0x2F4F }, { 0x2F51, 0x2F96, 0x2F52 } } }, + { { { 0x2F53, 0x2F54, 0x2F54 }, { 0x2F55, 0x2F94, 0x2F56 } }, + { { 0x2F53, 0x2F54, 0x2F54 }, { 0x2F55, 0x2F94, 0x2F56 } } } }; - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - int talk_act = aCR_TALK_END_WAIT; - int sel_msg_no; + int talk_act = aCR_TALK_END_WAIT; + int sel_msg_no; - if (Common_Get(clip).aprilfool_control_clip != NULL && Common_Get(clip).aprilfool_control_clip->talk_chk_proc(SP_NPC_CURATOR) == FALSE) { - sel_msg_no = (*Common_Get(clip).aprilfool_control_clip->get_msg_num_proc)(SP_NPC_CURATOR, TRUE); - } - else { - int completed = FALSE; - int not_foreigner = FALSE; - int not_first_talk = FALSE; - int action_idx = 0; + if (Common_Get(clip).aprilfool_control_clip != NULL && + Common_Get(clip).aprilfool_control_clip->talk_chk_proc(SP_NPC_CURATOR) == FALSE) { + sel_msg_no = (*Common_Get(clip).aprilfool_control_clip->get_msg_num_proc)(SP_NPC_CURATOR, TRUE); + } else { + int completed = FALSE; + int not_foreigner = FALSE; + int not_first_talk = FALSE; + int action_idx = 0; - if (aCR_countDisplayed() == (mMmd_FOSSIL_NUM + mMmd_ART_NUM + mMmd_INSECT_NUM + mMmd_FISH_NUM)) { - completed = TRUE; - } - - if (mLd_PlayerManKindCheck() == FALSE) { - not_foreigner = TRUE; - } - - if (aNPC_SPNPC_BIT_GET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_CURATOR)) { - not_first_talk = TRUE; - } - - if (aCR_check_sleep_time() == TRUE) { - if (curator->action == aCR_ACTION_SLEEP_WAIT) { - action_idx = 1; - } - } - else { - action_idx = 2; - } - - if (completed == FALSE) { - if (not_foreigner == FALSE) { - if (not_first_talk == FALSE) { - talk_act = aCR_TALK_AFTER_TALK_START_WAIT; + if (aCR_countDisplayed() == (mMmd_FOSSIL_NUM + mMmd_ART_NUM + mMmd_INSECT_NUM + mMmd_FISH_NUM)) { + completed = TRUE; } - } - else { - talk_act = aCR_TALK_CHK_REQUEST; - } + + if (mLd_PlayerManKindCheck() == FALSE) { + not_foreigner = TRUE; + } + + if (aNPC_SPNPC_BIT_GET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_CURATOR)) { + not_first_talk = TRUE; + } + + if (aCR_check_sleep_time() == TRUE) { + if (curator->action == aCR_ACTION_SLEEP_WAIT) { + action_idx = 1; + } + } else { + action_idx = 2; + } + + if (completed == FALSE) { + if (not_foreigner == FALSE) { + if (not_first_talk == FALSE) { + talk_act = aCR_TALK_AFTER_TALK_START_WAIT; + } + } else { + talk_act = aCR_TALK_CHK_REQUEST; + } + } + + sel_msg_no = msg_no[completed][not_foreigner][not_first_talk][action_idx]; } - sel_msg_no = msg_no[completed][not_foreigner][not_first_talk][action_idx]; - } - - mDemo_Set_msg_num(sel_msg_no); - curator->talk_act_idx = talk_act; + mDemo_Set_msg_num(sel_msg_no); + curator->talk_act_idx = talk_act; } static void aCR_talk_request(ACTOR* actorx, GAME* game) { - mDemo_Request(mDemo_TYPE_TALK, actorx, &aCR_set_talk_info); + mDemo_Request(mDemo_TYPE_TALK, actorx, &aCR_set_talk_info); } static int aCR_talk_init(ACTOR* actorx, GAME* game) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - GAME_PLAY* play = (GAME_PLAY*)game; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; - (*curator->setupTalkAction_proc)(curator, play, curator->talk_act_idx); - mDemo_Set_ListenAble(); - aNPC_SPNPC_BIT_SET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_CURATOR); - curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(5.625f); - curator->action = aCR_ACTION_WAIT; + (*curator->setupTalkAction_proc)(curator, play, curator->talk_act_idx); + mDemo_Set_ListenAble(); + aNPC_SPNPC_BIT_SET(Common_Get(spnpc_first_talk_flags), aNPC_SPNPC_BIT_CURATOR); + curator->npc_class.head.angle_add_y = DEG2SHORT_ANGLE(5.625f); + curator->action = aCR_ACTION_WAIT; - return TRUE; + return TRUE; } static int aCR_talk_end_chk(ACTOR* actorx, GAME* game) { - NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; - GAME_PLAY* play = (GAME_PLAY*)game; - int res = FALSE; + NPC_CURATOR_ACTOR* curator = (NPC_CURATOR_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + int res = FALSE; - (*curator->talk_proc)(curator, play); + (*curator->talk_proc)(curator, play); - if (mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { - res = TRUE; - } + if (mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { + res = TRUE; + } - return res; + return res; } static void aCR_actor_move(ACTOR* actorx, GAME* game) { - (*Common_Get(clip).npc_clip->move_proc)(actorx, game); + (*Common_Get(clip).npc_clip->move_proc)(actorx, game); } diff --git a/src/ac_npc_guide.c b/src/ac_npc_guide.c new file mode 100644 index 00000000..b8fc7bf4 --- /dev/null +++ b/src/ac_npc_guide.c @@ -0,0 +1,152 @@ +#include "ac_npc_guide.h" + +#include "m_play.h" +#include "m_common_data.h" +#include "ac_train_door.h" +#include "m_player_lib.h" +#include "m_font.h" +#include "m_msg.h" +#include "m_timeIn_ovl.h" +#include "m_ledit_ovl.h" +#include "libultra/libultra.h" +#include "m_bgm.h" +#include "m_soncho.h" + +enum { + aNGD_ACTION_ENTER, + aNGD_ACTION_APPROACH, + aNGD_ACTION_TALK_START_WAIT, + aNGD_ACTION_TIME_CHECK, + aNGD_ACTION_SDON_AND_PB_WAIT, + aNGD_ACTION_TIME_MENU_OPEN_WAIT, + aNGD_ACTION_TIME_MENU_CLOSE_WAIT, + aNGD_ACTION_MSG_WIN_OPEN_WAIT, + aNGD_ACTION_CONFIRM_INPUT_DATA, + aNGD_ACTION_WAIT_PERMISSION, + aNGD_ACTION_SITDOWN, + aNGD_ACTION_PNAME_MENU_OPEN_WAIT, + aNGD_ACTION_PNAME_MENU_CLOSE_WAIT, + aNGD_ACTION_SEX_SELECT_WAIT, + aNGD_ACTION_SEX_SELECT_WAIT2, + aNGD_ACTION_SEX_SELECT_AFTER, + aNGD_ACTION_CNAME_MENU_OPEN_WAIT, + aNGD_ACTION_CNAME_MENU_CLOSE_WAIT, + aNGD_ACTION_STANDUP_START_WAIT, + aNGD_ACTION_STANDUP, + aNGD_ACTION_MOVE_READY, + aNGD_ACTION_MOVE_TO_AISLE, + aNGD_ACTION_MOVE_TO_DOOR, + aNGD_ACTION_MOVE_TO_DECK, + aNGD_ACTION_KEITAI_ON, + aNGD_ACTION_KEITAI_TALK, + aNGD_ACTION_KEITAI_OFF, + aNGD_ACTION_OPEN_DOOR, + aNGD_ACTION_RETURN_APPROACH, + aNGD_ACTION_LAST_TALK_START_WAIT, + aNGD_ACTION_SITDOWN2_START_WAIT, + aNGD_ACTION_SITDOWN2, + aNGD_ACTION_LAST_TALK_END_WAIT, + aNGD_ACTION_SCENE_CHANGE_WAIT, + + aNGD_ACTION_NUM +}; + +enum { + aNGD_OBJ_LOOK_TYPE_NORMAL, + aNGD_OBJ_LOOK_TYPE_TALK, + + aNGD_OBJ_LOOK_TYPE_NUM +}; + +static void aNGD_actor_ct(ACTOR* actorx, GAME* game); +static void aNGD_actor_dt(ACTOR* actorx, GAME* game); +static void aNGD_actor_init(ACTOR* actorx, GAME* game); +static void aNGD_actor_save(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Npc_Guide_Profile = { + mAc_PROFILE_NPC_GUIDE, + ACTOR_PART_NPC, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + SP_NPC_GUIDE, + ACTOR_OBJ_BANK_KEEP, + sizeof(NPC_GUIDE_ACTOR), + &aNGD_actor_ct, + &aNGD_actor_dt, + &aNGD_actor_init, + mActor_NONE_PROC1, + &aNGD_actor_save, +}; +// clang-format on + +static void aNGD_actor_move(ACTOR* actorx, GAME* game); +static void aNGD_actor_draw(ACTOR* actorx, GAME* game); + +static void aNGD_setupAction(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play, int action); + +static void aNGD_actor_ct(ACTOR* actorx, GAME* game) { + static aNPC_ct_data_c ct_data = { &aNGD_actor_move, &aNGD_actor_draw, 0, NULL, NULL, NULL, 0 }; + NPC_GUIDE_ACTOR* guide = (NPC_GUIDE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player; + + Common_Get(clip).npc_clip->ct_proc(actorx, game, &ct_data); + guide->npc_class.condition_info.hide_flg = FALSE; // show guide actor + guide->npc_class.condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_HEAD_LOOKAT | aNPC_COND_DEMO_SKIP_TALK_CHECK | + aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | aNPC_COND_DEMO_SKIP_BGCHECK | + aNPC_COND_DEMO_SKIP_OBJ_COL_CHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | + aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; + guide->camera_morph_counter = 40; + guide->obj_look_type = aNGD_OBJ_LOOK_TYPE_NORMAL; + guide->npc_class.eye_y = 30.0f; + guide->camera_move_set_counter = 1; + guide->npc_class.palActorIgnoreTimer = -1; + guide->train_door_actor = Actor_info_fgName_search(&play->actor_info, TRAIN_DOOR, ACTOR_PART_BG); + guide->npc_class.actor_class.shape_info.draw_shadow = TRUE; + guide->npc_class.actor_class.world.position.z = 130.0f; + + /* Put the player into demo wait state */ + mPlib_request_main_demo_wait_type1(game, 0, NULL); + player = GET_PLAYER_ACTOR(play); + if (player != NULL) { + /* Make the player invisible during the intro train ride */ + player->actor_class.state_bitfield |= ACTOR_STATE_INVISIBLE; + } + + aNGD_setupAction(guide, play, aNGD_ACTION_ENTER); + + /* Play train noises sfx repeatedly */ + sAdo_SysLevStart(NA_SE_TRAIN_RIDE); + + /* Disable sunlight */ + Common_Set(sunlight_flag, FALSE); + + /* Turn on echo for sound effects */ + sAdo_TrgSeEcho(TRUE); + sAdo_LevSeEcho(TRUE); +} + +static void aNGD_actor_save(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->save_proc(actorx, game); +} + +static void aNGD_actor_dt(ACTOR* actorx, GAME* game) { + /* Update all animals in town to have this town's info */ + mNpc_SetAnimalThisLand(Save_Get(animals), ANIMAL_NUM_MAX); + Common_Get(clip).npc_clip->dt_proc(actorx, game); + + /* Stop train noise sfx */ + sAdo_SysLevStop(NA_SE_TRAIN_RIDE); +} + +static void aNGD_actor_init(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->init_proc(actorx, game); +} + +static void aNGD_actor_draw(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->draw_proc(actorx, game); +} + +#include "../src/ac_npc_guide_animation.c_inc" +#include "../src/ac_npc_guide_move.c_inc" diff --git a/src/ac_npc_guide2.c b/src/ac_npc_guide2.c new file mode 100644 index 00000000..73008c9b --- /dev/null +++ b/src/ac_npc_guide2.c @@ -0,0 +1,138 @@ +#include "ac_npc_guide2.h" + +#include "m_play.h" +#include "m_common_data.h" +#include "ac_train_door.h" +#include "m_player_lib.h" +#include "m_font.h" +#include "m_msg.h" +#include "m_timeIn_ovl.h" +#include "m_ledit_ovl.h" +#include "libultra/libultra.h" +#include "m_bgm.h" +#include "m_soncho.h" + +enum { + aNG2_ACTION_ENTER, + aNG2_ACTION_APPROACH, + aNG2_ACTION_TALK_START_WAIT, + aNG2_ACTION_WAIT_PERMISSION, + aNG2_ACTION_SITDOWN, + aNG2_ACTION_SDON_AND_PB_WAIT, + aNG2_ACTION_PNAME_MENU_OPEN_WAIT, + aNG2_ACTION_PNAME_MENU_CLOSE_WAIT, + aNG2_ACTION_MSG_WIN_OPEN_WAIT, + aNG2_ACTION_PNAME_NG, + aNG2_ACTION_SEX_SELECT_WAIT, + aNG2_ACTION_SEX_SELECT_WAIT2, + aNG2_ACTION_SEX_SELECT_AFTER, + aNG2_ACTION_STANDUP_START_WAIT, + aNG2_ACTION_STANDUP, + aNG2_ACTION_MOVE_READY, + aNG2_ACTION_MOVE_TO_AISLE, + aNG2_ACTION_MOVE_TO_DOOR, + aNG2_ACTION_MOVE_TO_DECK, + aNG2_ACTION_KEITAI_ON, + aNG2_ACTION_KEITAI_TALK, + aNG2_ACTION_KEITAI_OFF, + aNG2_ACTION_OPEN_DOOR, + aNG2_ACTION_RETURN_APPROACH, + aNG2_ACTION_LAST_TALK_START_WAIT, + aNG2_ACTION_SITDOWN2_START_WAIT, + aNG2_ACTION_SITDOWN2, + aNG2_ACTION_LAST_TALK_END_WAIT, + aNG2_ACTION_SCENE_CHANGE_WAIT, + + aNG2_ACTION_NUM +}; + +enum { + aNG2_OBJ_LOOK_TYPE_NORMAL, + aNG2_OBJ_LOOK_TYPE_TALK, + + aNG2_OBJ_LOOK_TYPE_NUM +}; + +static void aNG2_actor_ct(ACTOR* actorx, GAME* game); +static void aNG2_actor_dt(ACTOR* actorx, GAME* game); +static void aNG2_actor_init(ACTOR* actorx, GAME* game); +static void aNG2_actor_save(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Npc_Guide2_Profile = { + mAc_PROFILE_NPC_GUIDE2, + ACTOR_PART_NPC, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + SP_NPC_GUIDE2, + ACTOR_OBJ_BANK_KEEP, + sizeof(NPC_GUIDE2_ACTOR), + &aNG2_actor_ct, + &aNG2_actor_dt, + &aNG2_actor_init, + mActor_NONE_PROC1, + &aNG2_actor_save, +}; +// clang-format on + +static void aNG2_actor_move(ACTOR* actorx, GAME* game); +static void aNG2_actor_draw(ACTOR* actorx, GAME* game); + +static void aNG2_setupAction(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play, int action); + +static void aNG2_actor_ct(ACTOR* actorx, GAME* game) { + static aNPC_ct_data_c ct_data = { &aNG2_actor_move, &aNG2_actor_draw, 0, NULL, NULL, NULL, 0 }; + NPC_GUIDE2_ACTOR* guide2 = (NPC_GUIDE2_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player; + + Common_Get(clip).npc_clip->ct_proc(actorx, game, &ct_data); + guide2->npc_class.condition_info.hide_flg = FALSE; // show guide2 actor + guide2->npc_class.condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_HEAD_LOOKAT | aNPC_COND_DEMO_SKIP_TALK_CHECK | + aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | aNPC_COND_DEMO_SKIP_BGCHECK | + aNPC_COND_DEMO_SKIP_OBJ_COL_CHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | + aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; + guide2->camera_morph_counter = 40; + guide2->obj_look_type = aNG2_OBJ_LOOK_TYPE_NORMAL; + guide2->npc_class.eye_y = 30.0f; + guide2->camera_move_set_counter = 1; + guide2->npc_class.palActorIgnoreTimer = -1; + guide2->train_door_actor = Actor_info_fgName_search(&play->actor_info, TRAIN_DOOR, ACTOR_PART_BG); + guide2->npc_class.actor_class.shape_info.draw_shadow = TRUE; + guide2->npc_class.actor_class.world.position.z = 130.0f; + + /* Put the player into demo wait state */ + mPlib_request_main_demo_wait_type1(game, 0, NULL); + player = GET_PLAYER_ACTOR(play); + if (player != NULL) { + /* Make the player invisible during the intro train ride */ + player->actor_class.state_bitfield |= ACTOR_STATE_INVISIBLE; + } + + aNG2_setupAction(guide2, play, aNG2_ACTION_ENTER); + + /* Play train noises sfx repeatedly */ + sAdo_SysLevStart(NA_SE_TRAIN_RIDE); +} + +static void aNG2_actor_save(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->save_proc(actorx, game); +} + +static void aNG2_actor_dt(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->dt_proc(actorx, game); + + /* Stop train noise sfx */ + sAdo_SysLevStop(NA_SE_TRAIN_RIDE); +} + +static void aNG2_actor_init(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->init_proc(actorx, game); +} + +static void aNG2_actor_draw(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->draw_proc(actorx, game); +} + +#include "../src/ac_npc_guide2_animation.c_inc" +#include "../src/ac_npc_guide2_move.c_inc" diff --git a/src/ac_npc_guide2_animation.c_inc b/src/ac_npc_guide2_animation.c_inc new file mode 100644 index 00000000..d97d7618 --- /dev/null +++ b/src/ac_npc_guide2_animation.c_inc @@ -0,0 +1,45 @@ +typedef struct npc_guide_animation_s { + int anim_id; + int talk_flag; +} aNG2_anime_c; + +static void aNG2_set_animation(NPC_GUIDE2_ACTOR* guide2, int action) { + // clang-format off + static aNG2_anime_c anime[] = { + { aNPC_ANIM_OPEN_D1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_SITDOWN_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_STANDUP_D1, FALSE }, + { aNPC_ANIM_WAIT1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_TO_DECK_D1, FALSE }, + { aNPC_ANIM_KEITAI_ON1, FALSE }, + { aNPC_ANIM_KEITAI_TALK1, TRUE }, + { aNPC_ANIM_KEITAI_OFF1, FALSE }, + { aNPC_ANIM_OPEN_D2, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WAIT1, FALSE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_SITDOWN_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, FALSE }, + }; + // clang-format on + + aNG2_anime_c* anime_info = &anime[action]; + + Common_Get(clip).npc_clip->animation_init_proc(&guide2->npc_class.actor_class, anime_info->anim_id, + anime_info->talk_flag); +} diff --git a/src/ac_npc_guide2_move.c_inc b/src/ac_npc_guide2_move.c_inc new file mode 100644 index 00000000..b9fb762d --- /dev/null +++ b/src/ac_npc_guide2_move.c_inc @@ -0,0 +1,823 @@ +static void aNG2_set_camera(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + static s8 mov_def_cnt[] = { 3, 0 }; + static f32 obj_look_y_max[] = { 30.0f, 20.0f }; + static f32 obj_look_y_spd[] = { 0.5f, 2.5f }; + + xyz_t eye; + xyz_t pos; + xyz_t ground; + s16 move; + f32 moveX; + f32 moveY; + int obj_look_type = guide2->obj_look_type; + s16 cur_angle; + f32 inter; + f32 sin; + f32 ground_y; + s16 angle; + + move = guide2->camera_move; + guide2->camera_move += 0xE20; + angle = move; + angle += 0xE20; + moveX = cos_s(angle) * 0.1f; + angle = move; + angle += 0xE20; + moveY = sin_s(angle) * guide2->camera_move_range; + + if (guide2->camera_move_y <= 0.0f && moveY >= 0.0f) { + s8 cnt = guide2->camera_move_cnt; + + cnt--; + if (cnt < 0) { + s8 set_cnt = guide2->camera_move_set_counter; + + set_cnt--; + if (set_cnt < 0) { + set_cnt = ARRAY_COUNT(mov_def_cnt) - 1; + } + + guide2->camera_move_set_counter = set_cnt; + cnt = mov_def_cnt[set_cnt]; + guide2->camera_move_range = 0.3f; + } else { + guide2->camera_move_range *= 0.35f; + } + + guide2->camera_move_cnt = cnt; + } + + guide2->camera_move_y = moveY; + cur_angle = guide2->camera_tilt_cur_angle; + chase_angle(&cur_angle, guide2->camera_tilt_goal_angle, guide2->camera_tilt_add); + guide2->camera_tilt_cur_angle = cur_angle; + sin = sin_s(cur_angle); + + /* Set camera eye pos */ + eye.x = moveX + sin * 20.0f + 100.0f; + eye.y = moveY + sin * -5.0f + 80.0f; + eye.z = 400.0f; + + /* Move NPC head to current target */ + chase_f(&guide2->npc_class.eye_y, obj_look_y_max[obj_look_type], obj_look_y_spd[obj_look_type] * 0.5f); + + /* Set ground pos */ + ground.x = guide2->npc_class.draw.shadow_pos.x; + ground.z = guide2->npc_class.draw.shadow_pos.z; + if (obj_look_type == aNG2_OBJ_LOOK_TYPE_TALK) { + /* Use the guide2's NPC shadow position for Y */ + ground_y = guide2->npc_class.draw.shadow_pos.y; + } else { + /* Get the ground position for Y */ + ground_y = mCoBG_GetBgY_OnlyCenter_FromWpos2(ground, 0.0f); + } + + chase_f(&guide2->obj_dist_ground, ground_y, 0.5f); + ground.y = guide2->obj_dist_ground; + + /* Set camera center pos */ + if (guide2->lock_camera_flag == TRUE) { + pos.x = ground.x; + pos.y = ground.y + guide2->npc_class.eye_y; + pos.z = ground.z; + } else if (mDemo_Check(mDemo_TYPE_SPEAK, &guide2->npc_class.actor_class) == TRUE) { + int morph_counter = guide2->camera_morph_counter; + f32 r; + + guide2->camera_morph_counter = morph_counter - 1; + if ((morph_counter - 1) == 0) { + guide2->lock_camera_flag = TRUE; + } + + r = (40.0f - (f32)(morph_counter - 1)) / 40.0f; + inter = cKF_HermitCalc(r, 1.0f, 0.0f, 1.0f, 3.2f, 0.0f); + + pos.x = (ground.x - 90.0f) * inter + 90.0f; + pos.y = ((ground.y + guide2->npc_class.eye_y) - 80.0f) * inter + 80.0f; + pos.z = (ground.z - 280.0f) * inter + 280.0f; + } else { + /* Default position */ + pos.x = 90.0f; + pos.y = 80.0f; + pos.z = 280.0f; + } + + pos.x += moveX; + pos.y += moveY; + + Camera2_change_priority(play, 0); + Camera2_request_main_lock(play, &pos, &eye, 40.0f, 0, 60.0f, 800.0f, 5); +} + +static void aNG2_set_camera_eyes(NPC_GUIDE2_ACTOR* guide2) { + if (guide2->camera_eyes_flag == TRUE) { + guide2->npc_class.request.head_pos.x = 100.0f; + guide2->npc_class.request.head_pos.y = guide2->npc_class.actor_class.eye.position.y; + guide2->npc_class.request.head_pos.z = 400.0f; + guide2->npc_class.request.head_priority = 3; + guide2->npc_class.request.head_type = 2; + } +} + +static void aNG2_set_walk_spd(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.movement.max_speed = 1.0f; + guide2->npc_class.movement.acceleration = 0.1f; + guide2->npc_class.movement.deceleration = 0.2f; +} + +static void aNG2_set_walk_spd2(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.movement.max_speed = 1.5f; + guide2->npc_class.movement.acceleration = 0.15f; + guide2->npc_class.movement.deceleration = 0.3f; +} + +static void aNG2_set_stop_spd(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.actor_class.speed = 0.0f; + guide2->npc_class.movement.max_speed = 0.0f; + guide2->npc_class.movement.acceleration = 0.0f; + guide2->npc_class.movement.deceleration = 0.0f; +} + +static int aNG2_make_keitai(NPC_GUIDE2_ACTOR* guide2, GAME* game) { + int res = FALSE; + + if (guide2->npc_class.right_hand.item_actor_p == NULL) { + if (Common_Get(clip).tools_clip != NULL) { + ACTOR* keitai = Common_Get(clip).tools_clip->aTOL_birth_proc( + TOOL_KEITAI, aTOL_ACTION_TAKEOUT, &guide2->npc_class.actor_class, game, -1, NULL); + + if (keitai != NULL) { + guide2->npc_class.right_hand.item_actor_p = keitai; + res = TRUE; + } + } + } else { + res = TRUE; + } + + return res; +} + +static int aNG2_chg_cond_keitai(NPC_GUIDE2_ACTOR* guide2, int cond) { + int res = FALSE; + + if (Common_Get(clip).tools_clip != NULL) { + if (Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc( + &guide2->npc_class.actor_class, guide2->npc_class.right_hand.item_actor_p, cond) == TRUE) { + res = TRUE; + } + } + + return res; +} + +static void aNG2_talk_demo_proc(ACTOR* actorx) { + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + Common_Get(clip).npc_clip->talk_demo_proc(actorx); + } +} + +static u8* aNG2_getP_other_pl_name(void) { + Private_c* priv; + u32 player_no; + int i; + + player_no = Common_Get(player_no); + priv = Save_Get(private_data) + player_no; + + /* Search for players before this one's player no */ + for (i = player_no; i != 0; i--) { + priv--; + if (mPr_NullCheckPersonalID(&priv->player_ID) != TRUE) { + return priv->player_ID.player_name; + } + } + + priv = Save_Get(private_data) + player_no; + /* Search for players after this one's player no */ + for (i = (PLAYER_NUM - 1) - player_no; i != 0; i--) { + priv++; + if (mPr_NullCheckPersonalID(&priv->player_ID) != TRUE) { + return priv->player_ID.player_name; + } + } + + /* No other players to reference */ + return NULL; +} + +static int aNG2_check_pname(void) { + int ok = TRUE; + int i; + + for (i = 0; i < PLAYER_NUM; i++) { + Private_c* priv = Save_GetPointer(private_data[i]); + + if (i != Common_Get(player_no)) { + if (mem_cmp(Now_Private->player_ID.player_name, priv->player_ID.player_name, PLAYER_NAME_LEN) == TRUE) { + /* Another player has the same name in this town */ + ok = FALSE; + break; + } + } + } + + return ok; +} + +static void aNG2_check_talk_msg_no(NPC_GUIDE2_ACTOR* guide2) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide2->npc_class.actor_class) == TRUE) { + int msg_no = mMsg_GET_MSG_NUM(); + int flags; + + switch (msg_no) { + case 0x2AC9: + flags = (1 << 3); + break; + case 0x2ADB: + flags = (1 << 2); + break; + case 0x2ADD: + flags = (1 << 1); + break; + case 0x2AD3: + flags = (1 << 0); + break; + default: + flags = 0; + break; + } + + guide2->answer_flags |= flags; + } +} + +static void aNG2_set_pl_face_type(NPC_GUIDE2_ACTOR* guide2) { + static int face_type_table[mPr_SEX_NUM][mPr_FACE_TYPE_NUM] = { + /* Male faces */ + { + mPr_FACE_TYPE5, + mPr_FACE_TYPE6, + mPr_FACE_TYPE1, + mPr_FACE_TYPE4, + mPr_FACE_TYPE0, + mPr_FACE_TYPE2, + mPr_FACE_TYPE7, + mPr_FACE_TYPE3, + }, + /* Female faces */ + { + mPr_FACE_TYPE0, + mPr_FACE_TYPE5, + mPr_FACE_TYPE2, + mPr_FACE_TYPE6, + mPr_FACE_TYPE4, + mPr_FACE_TYPE7, + mPr_FACE_TYPE3, + mPr_FACE_TYPE1, + }, + }; + + int answer_flags = guide2->answer_flags; + int face_type; + + if ((answer_flags & 1) == 0) { + /* Select a random face for the player */ + face_type = RANDOM(mPr_FACE_TYPE_NUM); + } else { + /* Select a face based on choices */ + face_type = face_type_table[Now_Private->gender][answer_flags >> 1]; + } + + Now_Private->face = face_type; +} + +static void aNG2_calc_body_angl(NPC_GUIDE2_ACTOR* guide2, f32 pos_x, f32 pos_z) { + f32 dX = pos_x - guide2->npc_class.actor_class.world.position.x; + f32 dZ = pos_z - guide2->npc_class.actor_class.world.position.z; + s16 angl = atans_table(dZ, dX); + + chase_angle(&guide2->npc_class.actor_class.shape_info.rotation.y, angl, DEG2SHORT_ANGLE2(11.25f)); + guide2->npc_class.actor_class.world.angle.y = guide2->npc_class.actor_class.shape_info.rotation.y; +} + +static void aNG2_set_default_talk_info(void) { + mDemo_Set_camera(CAMERA2_PROCESS_NUM); + mDemo_Set_talk_change_player(FALSE); + mDemo_Set_use_zoom_sound(TRUE); +} + +static void aNG2_enter(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (guide2->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + guide2->camera_eyes_flag = TRUE; + aNG2_setupAction(guide2, play, aNG2_ACTION_APPROACH); + } else if (cKF_FrameControl_passCheck_now(&guide2->npc_class.draw.main_animation.keyframe.frame_control, 20.0f) == + TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide2->train_door_actor; + + train_door->open_flag = TRUE; + } +} + +static void aNG2_approach(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (guide2->npc_class.actor_class.world.position.z >= 290.0f) { + guide2->npc_class.actor_class.world.position.z = 290.0f; + aNG2_setupAction(guide2, play, aNG2_ACTION_TALK_START_WAIT); + } +} + +static void aNG2_set_talk_info_talk_start_wait(ACTOR* actorx) { + mMsg_SET_FREE_STR(mMsg_FREE_STR0, aNG2_getP_other_pl_name(), PLAYER_NAME_LEN); + mDemo_Set_msg_num(0x2AD5); + aNG2_set_default_talk_info(); + ((NPC_GUIDE2_ACTOR*)actorx)->obj_look_type = aNG2_OBJ_LOOK_TYPE_TALK; +} + +static void aNG2_talk_start_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + ACTOR* actorx = (ACTOR*)guide2; + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE && + chase_angle(&actorx->shape_info.rotation.y, actorx->player_angle_y, 0x400) == TRUE) { + guide2->camera_eyes_flag = FALSE; + aNG2_setupAction(guide2, play, aNG2_ACTION_WAIT_PERMISSION); + mDemo_Set_ListenAble(); + } + } else { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNG2_set_talk_info_talk_start_wait); + } +} + +static void aNG2_wait_permission(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + aNG2_setupAction(guide2, play, aNG2_ACTION_SITDOWN); + } +} + +static void aNG2_sitdown(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.actor_class.world.position.x = 100.0f; + guide2->npc_class.actor_class.world.position.z = 280.0f; + guide2->npc_class.actor_class.shape_info.rotation.y = 0; + + /* Wait for the sit animation to finish before continuing */ + if (guide2->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + mMsg_UNSET_LOCKCONTINUE(); + guide2->next_action = aNG2_ACTION_PNAME_MENU_OPEN_WAIT; + aNG2_setupAction(guide2, play, aNG2_ACTION_SDON_AND_PB_WAIT); + } +} + +static void aNG2_sdon_and_pb_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0 && mMsg_CHECK_MAINNORMALCONTINUE()) { + aNG2_setupAction(guide2, play, guide2->next_action); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNG2_pname_menu_open_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (mMsg_CHECK_MAIN_WAIT() == TRUE) { + aNG2_setupAction(guide2, play, 7); + } +} + +static void aNG2_pname_menu_close_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (play->submenu.open_flag == FALSE) { + aNG2_setupAction(guide2, play, 8); + } +} + +static void aNG2_msg_win_open_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + static int msg_no[] = { 0x2ACA, 0x2AE2 }; + static int next_act_idx[] = { 10, 9 }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { + int idx = 0; + + mMsg_Unset_LockContinue(msg_p); + + /* Check if the player's name already exists in town */ + if (aNG2_check_pname() == FALSE) { + idx = 1; + } + + mMsg_Set_continue_msg_num(msg_p, msg_no[idx]); + mMsg_Set_ForceNext(msg_p); + aNG2_setupAction(guide2, play, next_act_idx[idx]); + } +} + +static void aNG2_sex_select_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: // male + case mChoice_CHOICE1: // female + aNG2_setupAction(guide2, play, aNG2_ACTION_SEX_SELECT_WAIT2); + break; + case mChoice_CHOICE2: // 'That's not right' + guide2->next_action = aNG2_ACTION_PNAME_MENU_OPEN_WAIT; + aNG2_setupAction(guide2, play, aNG2_ACTION_SDON_AND_PB_WAIT); + break; + } + } +} + +static void aNG2_sex_select_wait2(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + static int next_act_idx[] = { aNG2_ACTION_STANDUP_START_WAIT, aNG2_ACTION_SEX_SELECT_AFTER }; + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + int idx = -1; + + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: // male + switch (order) { + case 1: // That's right + Now_Private->gender = mPr_SEX_MALE; + break; + case 2: // I'm not a boy + Now_Private->gender = mPr_SEX_FEMALE; + break; + } + + idx = 0; + mMsg_Set_continue_msg_num(msg_p, 0x2AD9); + mMsg_Set_ForceNext(msg_p); + break; + case mChoice_CHOICE1: // female + switch (order) { + case 1: // That's right + Now_Private->gender = mPr_SEX_FEMALE; + break; + case 2: // I'm not a girl + Now_Private->gender = mPr_SEX_MALE; + break; + } + idx = 1; + break; + } + + if (idx != -1) { + aNG2_setupAction(guide2, play, next_act_idx[idx]); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } + } + } +} + +static void aNG2_sex_select_after(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0 && mMsg_Check_MainNormalContinue(msg_p)) { + aNG2_setupAction(guide2, play, aNG2_ACTION_STANDUP_START_WAIT); + mMsg_Set_continue_msg_num(msg_p, 0x2AD9); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNG2_standup_start_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + /* Wait for guide2 to stop speaking to us */ + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide2->npc_class.actor_class) == FALSE) { + guide2->obj_look_type = aNG2_OBJ_LOOK_TYPE_NORMAL; + aNG2_setupAction(guide2, play, aNG2_ACTION_STANDUP); + } +} + +static void aNG2_standup(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + /* Wait for animation to finish */ + if (guide2->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + aNG2_setupAction(guide2, play, guide2->next_action); + } +} + +static void aNG2_move_ready(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.actor_class.world.position.x = 100.0f; + guide2->npc_class.actor_class.world.position.z = 300.0f; + aNG2_setupAction(guide2, play, aNG2_ACTION_MOVE_TO_AISLE); +} + +static void aNG2_move_to_aisle(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_calc_body_angl(guide2, 140.0f, 290.0f); + if (guide2->npc_class.actor_class.world.position.x > 140.0f) { + aNG2_setupAction(guide2, play, aNG2_ACTION_MOVE_TO_DOOR); + } +} + +static void aNG2_move_to_door(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_calc_body_angl(guide2, 140.0f, 130.0f); + /* Check if we reached the door */ + if (guide2->npc_class.actor_class.world.position.z < 130.0f) { + aNG2_setupAction(guide2, play, aNG2_ACTION_MOVE_TO_DECK); + } + + /* Check if we should start rotating */ + if (guide2->npc_class.draw.shadow_pos.z < 140.0f) { + guide2->camera_tilt_goal_angle = DEG2SHORT_ANGLE2(90.0f); + guide2->camera_tilt_add = DEG2SHORT_ANGLE2(2.8125f); + } +} + +static void aNG2_move_to_deck(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (cKF_FrameControl_passCheck_now(&guide2->npc_class.draw.main_animation.keyframe.frame_control, 9.0f) == TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide2->train_door_actor; + + train_door->open_flag = TRUE; + } + + /* Reuse standup state to wait for animation to finish */ + aNG2_standup(guide2, play); +} + +static void aNG2_set_talk_info_keitai_on(ACTOR* actorx) { + mDemo_Set_msg_num(0x2ADE); + aNG2_set_default_talk_info(); +} + +static void aNG2_keitai_on(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + static f32 anmSpd[] = { 0.0f, 0.5f }; + int idx = aNG2_make_keitai(guide2, &play->game); + + guide2->npc_class.draw.main_animation.keyframe.frame_control.speed = anmSpd[idx]; + if (idx != 0) { + if (mDemo_Check(mDemo_TYPE_SPEAK, (ACTOR*)guide2) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE) { + mDemo_Set_ListenAble(); + } + } else { + /* Request to start speaking */ + mDemo_Request(mDemo_TYPE_SPEAK, (ACTOR*)guide2, &aNG2_set_talk_info_keitai_on); + } + } + + /* Wait for animation to finish */ + if (guide2->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + aNG2_setupAction(guide2, play, aNG2_ACTION_KEITAI_TALK); + } +} + +static void aNG2_keitai_talk(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide2->npc_class.actor_class) == FALSE) { + aNG2_setupAction(guide2, play, aNG2_ACTION_KEITAI_OFF); + } else if (guide2->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + Common_Get(clip).npc_clip->animation_init_proc(&guide2->npc_class.actor_class, aNPC_ANIM_KEITAI_TALK2, TRUE); + } +} + +static void aNG2_open_door(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + chase_angle(&guide2->npc_class.actor_class.shape_info.rotation.y, DEG2SHORT_ANGLE2(-180.0f), + DEG2SHORT_ANGLE2(0.703125f)); + if (cKF_FrameControl_passCheck_now(&guide2->npc_class.draw.main_animation.keyframe.frame_control, 22.0f) == TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide2->train_door_actor; + + train_door->open_flag = TRUE; + if (guide2->npc_class.draw.shadow_pos.z < 140.0f) { + guide2->camera_tilt_goal_angle = 0; + guide2->camera_tilt_add = 0x600; + } + } + + /* Reuse standup state to wait for animation to finish */ + aNG2_standup(guide2, play); +} + +static void aNG2_return_approach(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.actor_class.world.position.x = 140.0f; + guide2->npc_class.actor_class.world.angle.y = 0; + guide2->npc_class.actor_class.shape_info.rotation.y = 0; + if (guide2->npc_class.actor_class.world.position.z > 290.0f) { + aNG2_setupAction(guide2, play, aNG2_ACTION_LAST_TALK_START_WAIT); + } +} + +static void aNG2_set_talk_info_last_talk_start_wait(ACTOR* actorx) { + mDemo_Set_msg_num(0x2AD1); + aNG2_set_default_talk_info(); + ((NPC_GUIDE2_ACTOR*)actorx)->obj_look_type = aNG2_OBJ_LOOK_TYPE_TALK; +} + +static void aNG2_last_talk_start_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + ACTOR* actorx = (ACTOR*)guide2; + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE && + chase_angle(&actorx->shape_info.rotation.y, actorx->player_angle_y, 0x400) == TRUE) { + guide2->camera_eyes_flag = FALSE; + aNG2_setupAction(guide2, play, aNG2_ACTION_SITDOWN2_START_WAIT); + mDemo_Set_ListenAble(); + } + } else { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNG2_set_talk_info_last_talk_start_wait); + } +} + +static void aNG2_sitdown2_start_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0) { + aNG2_setupAction(guide2, play, aNG2_ACTION_SITDOWN2); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNG2_sitdown2(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.actor_class.world.position.x = 100.0f; + guide2->npc_class.actor_class.world.position.z = 280.0f; + guide2->npc_class.actor_class.shape_info.rotation.y = 0; + + /* Wait for animation to finish */ + aNG2_standup(guide2, play); +} + +static void aNG2_last_talk_end_wait(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide2->npc_class.actor_class) == FALSE) { + aNG2_setupAction(guide2, play, aNG2_ACTION_SCENE_CHANGE_WAIT); + } +} + +/* Init procs */ + +static void aNG2_sitdown_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + mMsg_SET_LOCKCONTINUE(); +} + +static void aNG2_pname_menu_open_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_LockContinue(msg_p); + mMsg_request_main_disappear_wait_type1(msg_p); +} + +static void aNG2_pname_menu_close_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + Submenu* submenu = &play->submenu; + + mSM_open_submenu(submenu, mSM_OVL_LEDIT, mLE_TYPE_PLAYER_NAME, 0); +} + +static void aNG2_msg_win_open_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE1(); +} + +static void aNG2_pname_ng_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->next_action = 6; +} + +static void aNG2_standup_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->next_action = aNG2_ACTION_MOVE_READY; +} + +static void aNG2_move_ready_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; +} + +static void aNG2_move_to_aisle_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_set_walk_spd2(guide2, play); +} + +static void aNG2_move_to_deck_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_set_stop_spd(guide2, play); + guide2->npc_class.actor_class.world.position.x = 140.0f; + guide2->npc_class.actor_class.world.position.z = 130.0f; + guide2->next_action = aNG2_ACTION_KEITAI_ON; +} + +static void aNG2_keitai_off_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_chg_cond_keitai(guide2, aTOL_ACTION_PUTAWAY); + guide2->next_action = aNG2_ACTION_OPEN_DOOR; +} + +static void aNG2_open_door_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->next_action = aNG2_ACTION_RETURN_APPROACH; +} + +static void aNG2_return_approach_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->camera_eyes_flag = TRUE; + aNG2_set_walk_spd2(guide2, play); + guide2->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; +} + +static void aNG2_sitdown2_start_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); +} + +static void aNG2_sitdown2_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + guide2->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; + guide2->next_action = aNG2_ACTION_LAST_TALK_END_WAIT; +} + +static void aNG2_last_talk_end_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + aNG2_chg_cond_keitai(guide2, aTOL_ACTION_DESTRUCT); + guide2->npc_class.right_hand.item_actor_p = NULL; +} + +static void aNG2_scene_change_wait_init(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play) { + /* Init next scene transition */ + goto_next_scene(play, 0, 1); + play->fb_wipe_type = 3; + Common_Get(transition).wipe_type = 4; + + mEv_SetFirstJob(); + mEv_SetFirstIntro(); + mEnv_DecideWeather_NormalGameStart(); + aNG2_set_pl_face_type(guide2); + mPr_SetNowPrivateCloth(); + Common_Set(submenu_disabled, TRUE); + mBGMPsComp_make_ps_wipe(0x41C2); + mBGMPsComp_scene_mode(18); +} + +typedef void (*aNG2_INIT_PROC)(NPC_GUIDE2_ACTOR*, GAME_PLAY*); + +static void aNG2_init_proc(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play, int action) { + static aNG2_INIT_PROC init_proc[] = { + (aNG2_INIT_PROC)&none_proc1, + &aNG2_set_walk_spd, + &aNG2_set_stop_spd, + (aNG2_INIT_PROC)&none_proc1, + &aNG2_sitdown_init, + (aNG2_INIT_PROC)&none_proc1, + &aNG2_pname_menu_open_wait_init, + &aNG2_pname_menu_close_wait_init, + &aNG2_msg_win_open_wait_init, + &aNG2_pname_ng_init, + (aNG2_INIT_PROC)&none_proc1, + (aNG2_INIT_PROC)&none_proc1, + (aNG2_INIT_PROC)&none_proc1, + (aNG2_INIT_PROC)&none_proc1, + &aNG2_standup_init, + &aNG2_move_ready_init, + &aNG2_move_to_aisle_init, + (aNG2_INIT_PROC)&none_proc1, + &aNG2_move_to_deck_init, + (aNG2_INIT_PROC)&none_proc1, + (aNG2_INIT_PROC)&none_proc1, + &aNG2_keitai_off_init, + &aNG2_open_door_init, + &aNG2_return_approach_init, + &aNG2_set_stop_spd, + &aNG2_sitdown2_start_wait_init, + &aNG2_sitdown2_init, + &aNG2_last_talk_end_wait_init, + &aNG2_scene_change_wait_init, + }; + + (*init_proc[action])(guide2, play); +} + +static void aNG2_setupAction(NPC_GUIDE2_ACTOR* guide2, GAME_PLAY* play, int action) { + static aNG2_PROC process[] = { + &aNG2_enter, + &aNG2_approach, + &aNG2_talk_start_wait, + &aNG2_wait_permission, + &aNG2_sitdown, + &aNG2_sdon_and_pb_wait, + &aNG2_pname_menu_open_wait, + &aNG2_pname_menu_close_wait, + &aNG2_msg_win_open_wait, + &aNG2_sdon_and_pb_wait, + &aNG2_sex_select_wait, + &aNG2_sex_select_wait2, + &aNG2_sex_select_after, + &aNG2_standup_start_wait, + &aNG2_standup, + &aNG2_move_ready, + &aNG2_move_to_aisle, + &aNG2_move_to_door, + &aNG2_move_to_deck, + &aNG2_keitai_on, + &aNG2_keitai_talk, + &aNG2_standup, + &aNG2_open_door, + &aNG2_return_approach, + &aNG2_last_talk_start_wait, + &aNG2_sitdown2_start_wait, + &aNG2_sitdown2, + &aNG2_last_talk_end_wait, + (aNG2_PROC)&none_proc1, + }; + + guide2->action = action; + guide2->proc = process[action]; + aNG2_set_animation(guide2, action); + aNG2_init_proc(guide2, play, action); +} + +static void aNG2_actor_move(ACTOR* actorx, GAME* game) { + NPC_GUIDE2_ACTOR* guide2 = (NPC_GUIDE2_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + Common_Get(clip).npc_clip->move_before_proc(actorx, game); + aNG2_talk_demo_proc(actorx); + aNG2_check_talk_msg_no(guide2); + (*guide2->proc)(guide2, play); + Common_Get(clip).npc_clip->move_after_proc(actorx, game); + aNG2_set_camera(guide2, play); + aNG2_set_camera_eyes(guide2); + mSC_change_player_freeze(play); +} diff --git a/src/ac_npc_guide_animation.c_inc b/src/ac_npc_guide_animation.c_inc new file mode 100644 index 00000000..7c6b5279 --- /dev/null +++ b/src/ac_npc_guide_animation.c_inc @@ -0,0 +1,59 @@ +typedef struct npc_guide_animation_s { + int anim_id; + int talk_flag; +} aNGD_anime_c; + +static void aNGD_set_animation(NPC_GUIDE_ACTOR* guide, int action) { + // clang-format off + static aNGD_anime_c anime[] = { + { aNPC_ANIM_OPEN_D1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_SITDOWN_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_STANDUP_D1, FALSE }, + { aNPC_ANIM_WAIT1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_TO_DECK_D1, FALSE }, + { aNPC_ANIM_KEITAI_ON1, FALSE }, + { aNPC_ANIM_KEITAI_TALK1, TRUE }, + { aNPC_ANIM_KEITAI_OFF1, FALSE }, + { aNPC_ANIM_OPEN_D2, FALSE }, + { aNPC_ANIM_WALK1, FALSE }, + { aNPC_ANIM_WAIT1, FALSE }, + { aNPC_ANIM_WAIT1, TRUE }, + { aNPC_ANIM_SITDOWN_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, TRUE }, + { aNPC_ANIM_SITDOWN_WAIT_D1, FALSE }, + }; + // clang-format on + + aNGD_anime_c* anime_info = &anime[action]; + int anim_id = anime_info->anim_id; + int talk_flag = anime_info->talk_flag; + + if ((action == aNGD_ACTION_SDON_AND_PB_WAIT || action == aNGD_ACTION_MSG_WIN_OPEN_WAIT || + action == aNGD_ACTION_CONFIRM_INPUT_DATA) && + guide->next_action != aNGD_ACTION_TIME_MENU_OPEN_WAIT && + guide->next_action != aNGD_ACTION_TIME_MENU_CLOSE_WAIT) { + anim_id = aNPC_ANIM_SITDOWN_WAIT_D1; + talk_flag = TRUE; + } + + Common_Get(clip).npc_clip->animation_init_proc(&guide->npc_class.actor_class, anim_id, talk_flag); +} diff --git a/src/ac_npc_guide_move.c_inc b/src/ac_npc_guide_move.c_inc new file mode 100644 index 00000000..501839ba --- /dev/null +++ b/src/ac_npc_guide_move.c_inc @@ -0,0 +1,908 @@ +static void aNGD_set_camera(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + static s8 mov_def_cnt[] = { 3, 0 }; + static f32 obj_look_y_max[] = { 30.0f, 20.0f }; + static f32 obj_look_y_spd[] = { 0.5f, 2.5f }; + + xyz_t eye; + xyz_t pos; + xyz_t ground; + s16 move; + f32 moveX; + f32 moveY; + int obj_look_type = guide->obj_look_type; + s16 cur_angle; + f32 inter; + f32 sin; + f32 ground_y; + s16 angle; + + move = guide->camera_move; + guide->camera_move += 0xE20; + angle = move; + angle += 0xE20; + moveX = cos_s(angle) * 0.1f; + angle = move; + angle += 0xE20; + moveY = sin_s(angle) * guide->camera_move_range; + + if (guide->camera_move_y <= 0.0f && moveY >= 0.0f) { + s8 cnt = guide->camera_move_cnt; + + cnt--; + if (cnt < 0) { + s8 set_cnt = guide->camera_move_set_counter; + + set_cnt--; + if (set_cnt < 0) { + set_cnt = ARRAY_COUNT(mov_def_cnt) - 1; + } + + guide->camera_move_set_counter = set_cnt; + cnt = mov_def_cnt[set_cnt]; + guide->camera_move_range = 0.3f; + } else { + guide->camera_move_range *= 0.35f; + } + + guide->camera_move_cnt = cnt; + } + + guide->camera_move_y = moveY; + cur_angle = guide->camera_tilt_cur_angle; + chase_angle(&cur_angle, guide->camera_tilt_goal_angle, guide->camera_tilt_add); + guide->camera_tilt_cur_angle = cur_angle; + sin = sin_s(cur_angle); + + /* Set camera eye pos */ + eye.x = moveX + sin * 20.0f + 100.0f; + eye.y = moveY + sin * -5.0f + 80.0f; + eye.z = 400.0f; + + /* Move NPC head to current target */ + chase_f(&guide->npc_class.eye_y, obj_look_y_max[obj_look_type], obj_look_y_spd[obj_look_type] * 0.5f); + + /* Set ground pos */ + ground.x = guide->npc_class.draw.shadow_pos.x; + ground.z = guide->npc_class.draw.shadow_pos.z; + if (obj_look_type == aNGD_OBJ_LOOK_TYPE_TALK) { + /* Use the guide's NPC shadow position for Y */ + ground_y = guide->npc_class.draw.shadow_pos.y; + } else { + /* Get the ground position for Y */ + ground_y = mCoBG_GetBgY_OnlyCenter_FromWpos2(ground, 0.0f); + } + + chase_f(&guide->obj_dist_ground, ground_y, 0.5f); + ground.y = guide->obj_dist_ground; + + /* Set camera center pos */ + if (guide->lock_camera_flag == TRUE) { + pos.x = ground.x; + pos.y = ground.y + guide->npc_class.eye_y; + pos.z = ground.z; + } else if (mDemo_Check(mDemo_TYPE_SPEAK, &guide->npc_class.actor_class) == TRUE) { + int morph_counter = guide->camera_morph_counter; + f32 r; + + guide->camera_morph_counter = morph_counter - 1; + if ((morph_counter - 1) == 0) { + guide->lock_camera_flag = TRUE; + } + + r = (40.0f - (f32)(morph_counter - 1)) / 40.0f; + inter = cKF_HermitCalc(r, 1.0f, 0.0f, 1.0f, 3.2f, 0.0f); + + pos.x = (ground.x - 90.0f) * inter + 90.0f; + pos.y = ((ground.y + guide->npc_class.eye_y) - 80.0f) * inter + 80.0f; + pos.z = (ground.z - 280.0f) * inter + 280.0f; + } else { + /* Default position */ + pos.x = 90.0f; + pos.y = 80.0f; + pos.z = 280.0f; + } + + pos.x += moveX; + pos.y += moveY; + + Camera2_change_priority(play, 0); + Camera2_request_main_lock(play, &pos, &eye, 40.0f, 0, 60.0f, 800.0f, 5); +} + +static void aNGD_set_camera_eyes(NPC_GUIDE_ACTOR* guide) { + if (guide->camera_eyes_flag == TRUE) { + guide->npc_class.request.head_pos.x = 100.0f; + guide->npc_class.request.head_pos.y = guide->npc_class.actor_class.eye.position.y; + guide->npc_class.request.head_pos.z = 400.0f; + guide->npc_class.request.head_priority = 3; + guide->npc_class.request.head_type = 2; + } +} + +static void aNGD_set_walk_spd(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.movement.max_speed = 1.0f; + guide->npc_class.movement.acceleration = 0.1f; + guide->npc_class.movement.deceleration = 0.2f; +} + +static void aNGD_set_walk_spd2(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.movement.max_speed = 1.5f; + guide->npc_class.movement.acceleration = 0.15f; + guide->npc_class.movement.deceleration = 0.3f; +} + +static void aNGD_set_stop_spd(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.actor_class.speed = 0.0f; + guide->npc_class.movement.max_speed = 0.0f; + guide->npc_class.movement.acceleration = 0.0f; + guide->npc_class.movement.deceleration = 0.0f; +} + +static int aNGD_make_keitai(NPC_GUIDE_ACTOR* guide, GAME* game) { + int res = FALSE; + + if (guide->npc_class.right_hand.item_actor_p == NULL) { + if (Common_Get(clip).tools_clip != NULL) { + ACTOR* keitai = Common_Get(clip).tools_clip->aTOL_birth_proc(TOOL_KEITAI, aTOL_ACTION_TAKEOUT, + &guide->npc_class.actor_class, game, -1, NULL); + + if (keitai != NULL) { + guide->npc_class.right_hand.item_actor_p = keitai; + res = TRUE; + } + } + } else { + res = TRUE; + } + + return res; +} + +static int aNGD_chg_cond_keitai(NPC_GUIDE_ACTOR* guide, int cond) { + int res = FALSE; + + if (Common_Get(clip).tools_clip != NULL) { + if (Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc( + &guide->npc_class.actor_class, guide->npc_class.right_hand.item_actor_p, cond) == TRUE) { + res = TRUE; + } + } + + return res; +} + +static void aNGD_talk_demo_proc(ACTOR* actorx) { + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + Common_Get(clip).npc_clip->talk_demo_proc(actorx); + } +} + +static void aNGD_check_talk_msg_no(NPC_GUIDE_ACTOR* guide) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide->npc_class.actor_class) == TRUE) { + int msg_no = mMsg_GET_MSG_NUM(); + int flags; + + switch (msg_no) { + case 0x2AC9: + flags = (1 << 3); + break; + case 0x2ACD: + flags = (1 << 2); + break; + case 0x2ACF: + flags = (1 << 1); + break; + case 0x2AD3: + flags = (1 << 0); + break; + default: + flags = 0; + break; + } + + guide->answer_flags |= flags; + } +} + +static void aNGD_set_pl_face_type(NPC_GUIDE_ACTOR* guide) { + static int face_type_table[mPr_SEX_NUM][mPr_FACE_TYPE_NUM] = { + /* Male faces */ + { + mPr_FACE_TYPE5, + mPr_FACE_TYPE6, + mPr_FACE_TYPE1, + mPr_FACE_TYPE4, + mPr_FACE_TYPE0, + mPr_FACE_TYPE2, + mPr_FACE_TYPE7, + mPr_FACE_TYPE3, + }, + /* Female faces */ + { + mPr_FACE_TYPE0, + mPr_FACE_TYPE5, + mPr_FACE_TYPE2, + mPr_FACE_TYPE6, + mPr_FACE_TYPE4, + mPr_FACE_TYPE7, + mPr_FACE_TYPE3, + mPr_FACE_TYPE1, + }, + }; + + int answer_flags = guide->answer_flags; + int face_type; + + if ((answer_flags & 1) == 0) { + /* Select a random face for the player */ + face_type = RANDOM(mPr_FACE_TYPE_NUM); + } else { + /* Select a face based on choices */ + face_type = face_type_table[Now_Private->gender][answer_flags >> 1]; + } + + Now_Private->face = face_type; +} + +static void aNGD_calc_body_angl(NPC_GUIDE_ACTOR* guide, f32 pos_x, f32 pos_z) { + f32 dX = pos_x - guide->npc_class.actor_class.world.position.x; + f32 dZ = pos_z - guide->npc_class.actor_class.world.position.z; + s16 angl = atans_table(dZ, dX); + + chase_angle(&guide->npc_class.actor_class.shape_info.rotation.y, angl, DEG2SHORT_ANGLE2(11.25f)); + guide->npc_class.actor_class.world.angle.y = guide->npc_class.actor_class.shape_info.rotation.y; +} + +static void aNGD_set_default_talk_info(void) { + mDemo_Set_camera(CAMERA2_PROCESS_NUM); + mDemo_Set_talk_change_player(FALSE); + mDemo_Set_use_zoom_sound(TRUE); +} + +static void aNGD_enter(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (guide->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + guide->camera_eyes_flag = TRUE; + aNGD_setupAction(guide, play, aNGD_ACTION_APPROACH); + } else if (cKF_FrameControl_passCheck_now(&guide->npc_class.draw.main_animation.keyframe.frame_control, 20.0f) == + TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide->train_door_actor; + + train_door->open_flag = TRUE; + } +} + +static void aNGD_approach(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (guide->npc_class.actor_class.world.position.z >= 290.0f) { + guide->npc_class.actor_class.world.position.z = 290.0f; + aNGD_setupAction(guide, play, aNGD_ACTION_TALK_START_WAIT); + } +} + +static void aNGD_set_talk_info_talk_start_wait(ACTOR* actorx) { + mDemo_Set_msg_num(0x2AC6); + aNGD_set_default_talk_info(); + ((NPC_GUIDE_ACTOR*)actorx)->obj_look_type = aNGD_OBJ_LOOK_TYPE_TALK; +} + +static void aNGD_talk_start_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + ACTOR* actorx = (ACTOR*)guide; + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE && + chase_angle(&actorx->shape_info.rotation.y, actorx->player_angle_y, 0x400) == TRUE) { + guide->camera_eyes_flag = FALSE; + aNGD_setupAction(guide, play, aNGD_ACTION_TIME_CHECK); + mDemo_Set_ListenAble(); + } + } else { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNGD_set_talk_info_talk_start_wait); + } +} + +static void aNGD_time_check(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + aNGD_setupAction(guide, play, aNGD_ACTION_WAIT_PERMISSION); + break; + case mChoice_CHOICE1: + guide->next_action = aNGD_ACTION_TIME_MENU_OPEN_WAIT; + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + break; + } + } +} + +static void aNGD_sdon_and_pb_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0 && mMsg_CHECK_MAINNORMALCONTINUE()) { + aNGD_setupAction(guide, play, guide->next_action); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNGD_time_menu_open_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAIN_WAIT() == TRUE) { + aNGD_setupAction(guide, play, guide->action + 1); + } +} + +static void aNGD_time_menu_close_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (play->submenu.open_flag == FALSE) { + aNGD_setupAction(guide, play, aNGD_ACTION_MSG_WIN_OPEN_WAIT); + } +} + +static void aNGD_msg_win_open_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + static int msg_no[] = { 0x2AE5, 0x2ACA, 0x2AE4 }; + static int next_act_idx[] = { + aNGD_ACTION_CONFIRM_INPUT_DATA, + aNGD_ACTION_SEX_SELECT_WAIT, + aNGD_ACTION_CONFIRM_INPUT_DATA, + }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { + int idx = -1; + + switch (guide->next_action) { + case aNGD_ACTION_TIME_MENU_CLOSE_WAIT: + idx = 0; + break; + case aNGD_ACTION_PNAME_MENU_CLOSE_WAIT: + idx = 1; + break; + case aNGD_ACTION_CNAME_MENU_CLOSE_WAIT: + idx = 2; + break; + } + + if (idx >= 0) { + mMsg_Unset_LockContinue(msg_p); + mMsg_Set_continue_msg_num(msg_p, msg_no[idx]); + mMsg_Set_ForceNext(msg_p); + aNGD_setupAction(guide, play, next_act_idx[idx]); + } + } +} + +static void aNGD_confirm_input_data(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + switch (guide->next_action) { + case aNGD_ACTION_TIME_MENU_CLOSE_WAIT: + aNGD_setupAction(guide, play, aNGD_ACTION_WAIT_PERMISSION); + break; + case aNGD_ACTION_CNAME_MENU_CLOSE_WAIT: + aNGD_setupAction(guide, play, aNGD_ACTION_STANDUP_START_WAIT); + break; + } + break; + case mChoice_CHOICE1: + switch (guide->next_action) { + case aNGD_ACTION_TIME_MENU_CLOSE_WAIT: + guide->next_action = aNGD_ACTION_TIME_MENU_OPEN_WAIT; + break; + case aNGD_ACTION_CNAME_MENU_CLOSE_WAIT: + guide->next_action = aNGD_ACTION_CNAME_MENU_OPEN_WAIT; + break; + } + + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + break; + } + } +} + +static void aNGD_wait_permission(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + aNGD_setupAction(guide, play, aNGD_ACTION_SITDOWN); + } +} + +static void aNGD_sitdown(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.actor_class.world.position.x = 100.0f; + guide->npc_class.actor_class.world.position.z = 280.0f; + guide->npc_class.actor_class.shape_info.rotation.y = 0; + + /* Wait for the sit animation to finish before continuing */ + if (guide->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + mMsg_UNSET_LOCKCONTINUE(); + guide->next_action = aNGD_ACTION_PNAME_MENU_OPEN_WAIT; + Common_Set(sunlight_flag, TRUE); // turn on the sunlight as we exit tunnel + /* Turn off echoes since we exited the tunnel */ + sAdo_TrgSeEcho(FALSE); + sAdo_LevSeEcho(FALSE); + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + } +} + +static void aNGD_sex_select_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: // male + case mChoice_CHOICE1: // female + aNGD_setupAction(guide, play, aNGD_ACTION_SEX_SELECT_WAIT2); + break; + case mChoice_CHOICE2: // 'That's not right' + guide->next_action = aNGD_ACTION_PNAME_MENU_OPEN_WAIT; + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + break; + } + } +} + +static void aNGD_sex_select_wait2(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0 && mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: // male + switch (order) { + case 1: // That's right + Now_Private->gender = mPr_SEX_MALE; + break; + case 2: // I'm not a boy + Now_Private->gender = mPr_SEX_FEMALE; + break; + } + + guide->next_action = aNGD_ACTION_CNAME_MENU_OPEN_WAIT; + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + break; + case mChoice_CHOICE1: // female + switch (order) { + case 1: // That's right + Now_Private->gender = mPr_SEX_FEMALE; + break; + case 2: // I'm not a girl + Now_Private->gender = mPr_SEX_MALE; + break; + } + aNGD_setupAction(guide, play, aNGD_ACTION_SEX_SELECT_AFTER); + break; + } + + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNGD_sex_select_after(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0 && mMsg_Check_MainNormalContinue(msg_p)) { + mMsg_Set_continue_msg_num(msg_p, 0x2AD8); + mMsg_Set_ForceNext(msg_p); + guide->next_action = aNGD_ACTION_CNAME_MENU_OPEN_WAIT; + aNGD_setupAction(guide, play, aNGD_ACTION_SDON_AND_PB_WAIT); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNGD_standup_start_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + /* Wait for guide to stop speaking to us */ + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide->npc_class.actor_class) == FALSE) { + guide->obj_look_type = aNGD_OBJ_LOOK_TYPE_NORMAL; + aNGD_setupAction(guide, play, aNGD_ACTION_STANDUP); + } +} + +static void aNGD_standup(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + /* Wait for animation to finish */ + if (guide->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + aNGD_setupAction(guide, play, guide->next_action); + } +} + +static void aNGD_move_ready(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.actor_class.world.position.x = 100.0f; + guide->npc_class.actor_class.world.position.z = 300.0f; + aNGD_setupAction(guide, play, aNGD_ACTION_MOVE_TO_AISLE); +} + +static void aNGD_move_to_aisle(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_calc_body_angl(guide, 140.0f, 290.0f); + if (guide->npc_class.actor_class.world.position.x > 140.0f) { + aNGD_setupAction(guide, play, aNGD_ACTION_MOVE_TO_DOOR); + } +} + +static void aNGD_move_to_door(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_calc_body_angl(guide, 140.0f, 130.0f); + /* Check if we reached the door */ + if (guide->npc_class.actor_class.world.position.z < 130.0f) { + aNGD_setupAction(guide, play, aNGD_ACTION_MOVE_TO_DECK); + } + + /* Check if we should start rotating */ + if (guide->npc_class.draw.shadow_pos.z < 140.0f) { + guide->camera_tilt_goal_angle = DEG2SHORT_ANGLE2(90.0f); + guide->camera_tilt_add = DEG2SHORT_ANGLE2(2.8125f); + } +} + +static void aNGD_move_to_deck(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (cKF_FrameControl_passCheck_now(&guide->npc_class.draw.main_animation.keyframe.frame_control, 9.0f) == TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide->train_door_actor; + + train_door->open_flag = TRUE; + } + + /* Reuse standup state to wait for animation to finish */ + aNGD_standup(guide, play); +} + +static void aNGD_set_talk_info_keitai_on(ACTOR* actorx) { + mDemo_Set_msg_num(0x2AD0); + aNGD_set_default_talk_info(); +} + +static void aNGD_keitai_on(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + static f32 anmSpd[] = { 0.0f, 0.5f }; + int idx = aNGD_make_keitai(guide, &play->game); + + guide->npc_class.draw.main_animation.keyframe.frame_control.speed = anmSpd[idx]; + if (idx != 0) { + if (mDemo_Check(mDemo_TYPE_SPEAK, (ACTOR*)guide) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE) { + mDemo_Set_ListenAble(); + } + } else { + /* Request to start speaking */ + mDemo_Request(mDemo_TYPE_SPEAK, (ACTOR*)guide, &aNGD_set_talk_info_keitai_on); + } + } + + /* Wait for animation to finish */ + if (guide->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + aNGD_setupAction(guide, play, aNGD_ACTION_KEITAI_TALK); + } +} + +static void aNGD_keitai_talk(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide->npc_class.actor_class) == FALSE) { + aNGD_setupAction(guide, play, aNGD_ACTION_KEITAI_OFF); + } else if (guide->npc_class.draw.main_animation_state == cKF_STATE_STOPPED) { + Common_Get(clip).npc_clip->animation_init_proc(&guide->npc_class.actor_class, aNPC_ANIM_KEITAI_TALK2, TRUE); + } +} + +static void aNGD_open_door(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + chase_angle(&guide->npc_class.actor_class.shape_info.rotation.y, DEG2SHORT_ANGLE2(-180.0f), + DEG2SHORT_ANGLE2(0.703125f)); + if (cKF_FrameControl_passCheck_now(&guide->npc_class.draw.main_animation.keyframe.frame_control, 22.0f) == TRUE) { + TRAINDOOR_ACTOR* train_door = (TRAINDOOR_ACTOR*)guide->train_door_actor; + + train_door->open_flag = TRUE; + if (guide->npc_class.draw.shadow_pos.z < 140.0f) { + guide->camera_tilt_goal_angle = 0; + guide->camera_tilt_add = 0x600; + } + } + + /* Reuse standup state to wait for animation to finish */ + aNGD_standup(guide, play); +} + +static void aNGD_return_approach(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.actor_class.world.position.x = 140.0f; + guide->npc_class.actor_class.world.angle.y = 0; + guide->npc_class.actor_class.shape_info.rotation.y = 0; + if (guide->npc_class.actor_class.world.position.z > 290.0f) { + aNGD_setupAction(guide, play, aNGD_ACTION_LAST_TALK_START_WAIT); + } +} + +static void aNGD_set_talk_info_last_talk_start_wait(ACTOR* actorx) { + mDemo_Set_msg_num(0x2AD1); + aNGD_set_default_talk_info(); + ((NPC_GUIDE_ACTOR*)actorx)->obj_look_type = aNGD_OBJ_LOOK_TYPE_TALK; +} + +static void aNGD_last_talk_start_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + ACTOR* actorx = (ACTOR*)guide; + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == TRUE) { + if (mDemo_Check_ListenAble() == FALSE && + chase_angle(&actorx->shape_info.rotation.y, actorx->player_angle_y, 0x400) == TRUE) { + guide->camera_eyes_flag = FALSE; + aNGD_setupAction(guide, play, aNGD_ACTION_SITDOWN2_START_WAIT); + mDemo_Set_ListenAble(); + } + } else { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNGD_set_talk_info_last_talk_start_wait); + } +} + +static void aNGD_sitdown2_start_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0) { + aNGD_setupAction(guide, play, aNGD_ACTION_SITDOWN2); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNGD_sitdown2(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.actor_class.world.position.x = 100.0f; + guide->npc_class.actor_class.world.position.z = 280.0f; + guide->npc_class.actor_class.shape_info.rotation.y = 0; + + /* Wait for animation to finish */ + aNGD_standup(guide, play); +} + +static void aNGD_last_talk_end_wait(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + if (mDemo_Check(mDemo_TYPE_SPEAK, &guide->npc_class.actor_class) == FALSE) { + aNGD_setupAction(guide, play, aNGD_ACTION_SCENE_CHANGE_WAIT); + } +} + +/* Init procs */ + +static void aNGD_time_menu_open_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_LockContinue(msg_p); + mMsg_request_main_disappear_wait_type1(msg_p); + guide->next_action = aNGD_ACTION_TIME_MENU_CLOSE_WAIT; +} + +static void aNGD_time_menu_close_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + Submenu* submenu = &play->submenu; + + switch (guide->next_action) { + case aNGD_ACTION_TIME_MENU_CLOSE_WAIT: + mSM_open_submenu(submenu, mSM_OVL_TIMEIN, mTI_OVL_OPEN_INITIAL, 0); + break; + case aNGD_ACTION_PNAME_MENU_CLOSE_WAIT: + mSM_open_submenu(submenu, mSM_OVL_LEDIT, mLE_TYPE_PLAYER_NAME, 0); + break; + case aNGD_ACTION_CNAME_MENU_CLOSE_WAIT: + mSM_open_submenu(submenu, mSM_OVL_LEDIT, mLE_TYPE_COUNTRY_NAME, 0); + break; + } +} + +static void aNGD_msg_win_open_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE1(); +} + +static void aNGD_sitdown_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_SET_LOCKCONTINUE(); +} + +static void aNGD_pname_menu_open_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_LockContinue(msg_p); + mMsg_request_main_disappear_wait_type1(msg_p); + guide->next_action = aNGD_ACTION_PNAME_MENU_CLOSE_WAIT; +} + +static void aNGD_cname_menu_open_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_LockContinue(msg_p); + mMsg_request_main_disappear_wait_type1(msg_p); + guide->next_action = aNGD_ACTION_CNAME_MENU_CLOSE_WAIT; +} + +static void aNGD_standup_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->next_action = aNGD_ACTION_MOVE_READY; +} + +static void aNGD_move_ready_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; +} + +static void aNGD_move_to_aisle_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_set_walk_spd2(guide, play); +} + +static void aNGD_move_to_deck_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_set_stop_spd(guide, play); + guide->npc_class.actor_class.world.position.x = 140.0f; + guide->npc_class.actor_class.world.position.z = 130.0f; + guide->next_action = aNGD_ACTION_KEITAI_ON; +} + +static void aNGD_keitai_off_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_chg_cond_keitai(guide, aTOL_ACTION_PUTAWAY); + guide->next_action = aNGD_ACTION_OPEN_DOOR; +} + +static void aNGD_open_door_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->next_action = aNGD_ACTION_RETURN_APPROACH; +} + +static void aNGD_return_approach_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->camera_eyes_flag = TRUE; + aNGD_set_walk_spd2(guide, play); + guide->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; +} + +static void aNGD_sitdown2_start_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); +} + +static void aNGD_sitdown2_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + guide->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; + guide->next_action = aNGD_ACTION_LAST_TALK_END_WAIT; +} + +static void aNGD_last_talk_end_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + aNGD_chg_cond_keitai(guide, aTOL_ACTION_DESTRUCT); + guide->npc_class.right_hand.item_actor_p = NULL; +} + +static void aNGD_scene_change_wait_init(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play) { + u8 term; + int town_day; + + /* Init next scene transition */ + goto_next_scene(play, 0, 1); + play->fb_wipe_type = 3; + Common_Get(transition).wipe_type = 4; + + /* Clear plant growth renew time */ + Save_Set(all_grow_renew_time, mTM_rtcTime_clear_code); + + /* Update player ID town info */ + if (Now_Private != NULL) { + mLd_CopyLandName(Now_Private->player_ID.land_name, Save_Get(land_info).name); + } + + /* Init island */ + bcopy(Save_GetPointer(land_info), &Save_Get(island).landinfo, sizeof(mLd_land_info_c)); // Copy the town's land info + mNpc_DecideIslandNpc(&Save_Get(island).animal); // Pick islander + + /* Update some renew time values to current rtc time */ + lbRTC_TimeCopy(Save_GetPointer(last_grow_time), Common_GetPointer(time.rtc_time)); + mTM_set_renew_time(Save_GetPointer(renew_time), Common_GetPointer(time.rtc_time)); + mTM_set_season(); // initialize the season + + /* Initialize first Stalk Market info */ + Kabu_decide_price_schedule(); + + /* Init Post Office */ + mPO_post_office_init(); + + /* Set insect term info */ + Save_Set(insect_term, Common_Get(time.rtc_time.month)); + Save_Set(insect_term_transition_offset, RANDOM(6)); + + /* Set fish term info */ + term = Common_Get(time.rtc_time.month) * 2; + if (Common_Get(time.rtc_time.day) > 15) { + term++; + } + Save_Set(gyoei_term, term); + Save_Set(gyoei_term_transition_offset, RANDOM(6)); + + /* Decide Town Day date */ + town_day = 1 + RANDOM(30); + if (town_day >= 4) { + town_day++; // add one to prevent conflict with Fireworks Festival (4th of July) + } + Save_Set(town_day, town_day); + + mSP_ShopGameStartCt(NULL); + mNtc_SetInitData(); + mPr_SetNowPrivateCloth(); + mEv_SetFirstJob(); + mEv_SetFirstIntro(); + mEnv_DecideWeather_FirstGameStart(); + mCD_calendar_clear(-1); + mCD_calendar_wellcome_on(); + mNpc_SetParentNameAllAnimal(); + aNGD_set_pl_face_type(guide); + Common_Set(submenu_disabled, TRUE); + mRmTp_SetDefaultLightSwitchData(1); + mBGMPsComp_make_ps_wipe(0x41C2); + mBGMPsComp_scene_mode(18); +} + +typedef void (*aNGD_INIT_PROC)(NPC_GUIDE_ACTOR*, GAME_PLAY*); + +static void aNGD_init_proc(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play, int action) { + static aNGD_INIT_PROC init_proc[] = { + (aNGD_INIT_PROC)&none_proc1, + &aNGD_set_walk_spd, + &aNGD_set_stop_spd, + (aNGD_INIT_PROC)&none_proc1, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_time_menu_open_wait_init, + &aNGD_time_menu_close_wait_init, + &aNGD_msg_win_open_wait_init, + (aNGD_INIT_PROC)&none_proc1, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_sitdown_init, + &aNGD_pname_menu_open_wait_init, + &aNGD_time_menu_close_wait_init, + (aNGD_INIT_PROC)&none_proc1, + (aNGD_INIT_PROC)&none_proc1, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_cname_menu_open_wait_init, + &aNGD_time_menu_close_wait_init, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_standup_init, + &aNGD_move_ready_init, + &aNGD_move_to_aisle_init, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_move_to_deck_init, + (aNGD_INIT_PROC)&none_proc1, + (aNGD_INIT_PROC)&none_proc1, + &aNGD_keitai_off_init, + &aNGD_open_door_init, + &aNGD_return_approach_init, + &aNGD_set_stop_spd, + &aNGD_sitdown2_start_wait_init, + &aNGD_sitdown2_init, + &aNGD_last_talk_end_wait_init, + &aNGD_scene_change_wait_init, + }; + + (*init_proc[action])(guide, play); +} + +static void aNGD_setupAction(NPC_GUIDE_ACTOR* guide, GAME_PLAY* play, int action) { + static aNGD_PROC process[] = { + &aNGD_enter, + &aNGD_approach, + &aNGD_talk_start_wait, + &aNGD_time_check, + &aNGD_sdon_and_pb_wait, + &aNGD_time_menu_open_wait, + &aNGD_time_menu_close_wait, + &aNGD_msg_win_open_wait, + &aNGD_confirm_input_data, + &aNGD_wait_permission, + &aNGD_sitdown, + &aNGD_time_menu_open_wait, + &aNGD_time_menu_close_wait, + &aNGD_sex_select_wait, + &aNGD_sex_select_wait2, + &aNGD_sex_select_after, + &aNGD_time_menu_open_wait, + &aNGD_time_menu_close_wait, + &aNGD_standup_start_wait, + &aNGD_standup, + &aNGD_move_ready, + &aNGD_move_to_aisle, + &aNGD_move_to_door, + &aNGD_move_to_deck, + &aNGD_keitai_on, + &aNGD_keitai_talk, + &aNGD_standup, + &aNGD_open_door, + &aNGD_return_approach, + &aNGD_last_talk_start_wait, + &aNGD_sitdown2_start_wait, + &aNGD_sitdown2, + &aNGD_last_talk_end_wait, + (aNGD_PROC)&none_proc1, + }; + + guide->action = action; + guide->proc = process[action]; + aNGD_set_animation(guide, action); + aNGD_init_proc(guide, play, action); +} + +static void aNGD_actor_move(ACTOR* actorx, GAME* game) { + NPC_GUIDE_ACTOR* guide = (NPC_GUIDE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + Common_Get(clip).npc_clip->move_before_proc(actorx, game); + aNGD_talk_demo_proc(actorx); + aNGD_check_talk_msg_no(guide); + (*guide->proc)(guide, play); + Common_Get(clip).npc_clip->move_after_proc(actorx, game); + aNGD_set_camera(guide, play); + aNGD_set_camera_eyes(guide); + mSC_change_player_freeze(play); +} diff --git a/src/ac_npc_rcn_guide.c b/src/ac_npc_rcn_guide.c new file mode 100644 index 00000000..97c9b91e --- /dev/null +++ b/src/ac_npc_rcn_guide.c @@ -0,0 +1,162 @@ +#include "ac_npc_rcn_guide.h" + +#include "m_play.h" +#include "m_name_table.h" +#include "libultra/libultra.h" +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_bgm.h" +#include "m_msg.h" +#include "m_font.h" +#include "m_house.h" +#include "ac_intro_demo.h" + +/* sizeof(aNRG_talk_data_c) == 0x0C */ +typedef struct rcn_guide_talk_data_s { + /* 0x00 */ int msg_no; + /* 0x04 */ u8 turn_flag; + /* 0x05 */ u8 camera_type; + /* 0x06 */ u8 melody_flag; + /* 0x08 */ aNRG_TALK_PROC talk_proc; +} aNRG_talk_data_c; + +enum { + aNRC_THINK_CALL, + aNRC_THINK_APPROACH, + aNRG_THINK_INTRODUCE, + aNRC_THINK_TURN, + aNRC_THINK_TAKE_WITH, + aNRC_THINK_EXPLAIN, + aNRC_THINK_DECIDE_HOUSE_WAIT, + aNRC_THINK_STOP_WADE, + aNRC_THINK_BEFORE_OPEN_DOOR_TALK, + aNRC_THINK_BEFORE_OPEN_DOOR_TALK2, + aNRC_THINK_ENTER_WAIT, + aNRC_THINK_RESTART_WAIT, + aNRC_THINK_RESTART_TALK, + aNRC_THINK_DECIDE_HOUSE, + aNRC_THINK_EXIT_TURN, + aNRC_THINK_EXIT, + aNRC_THINK_WAIT, + + aNRC_THINK_NUM +}; + +enum { + aNRG_FORCE_TALK_CALL, + aNRG_FORCE_TALK_INTRODUCE, + aNRG_FORCE_TALK_EXPLAIN, + aNRG_FORCE_TALK_STOP_WADE, + aNRG_FORCE_TALK_BEFORE_OPEN_DOOR_TALK, + aNRG_FORCE_TALK_BEFORE_OPEN_DOOR2_TALK, + aNRG_FORCE_TALK_HOUSE_TAKEN, + aNRG_FORCE_TALK_HOUSE_VACANT, + + aNRG_FORCE_TALK_NUM +}; + +enum { + aNRG_NORM_TALK_DECIDE_HOUSE, + + aNRG_NORM_TALK_NUM +}; + +static void aNRG_actor_ct(ACTOR* actorx, GAME* game); +static void aNRG_actor_save(ACTOR* actorx, GAME* game); +static void aNRG_actor_dt(ACTOR* actorx, GAME* game); +static void aNRG_actor_init(ACTOR* actorx, GAME* game); +static void aNRG_actor_draw(ACTOR* actorx, GAME* game); +static void aNRG_actor_move(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Npc_Rcn_Guide_Profile = { + mAc_PROFILE_NPC_RCN_GUIDE, + ACTOR_PART_NPC, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + SP_NPC_RCN_GUIDE, + ACTOR_OBJ_BANK_KEEP, + sizeof(NPC_RCN_GUIDE_ACTOR), + &aNRG_actor_ct, + &aNRG_actor_dt, + &aNRG_actor_init, + mActor_NONE_PROC1, + &aNRG_actor_save, +}; +// clang-format on + +static void aNRG_force_talk_request(ACTOR* actorx, GAME* game); +static int aNRG_talk_init(ACTOR* actorx, GAME* game); +static int aNRG_talk_end_chk(ACTOR* actorx, GAME* game); + +static void aNRG_schedule_proc(NPC_ACTOR* nactorx, GAME_PLAY* game, int sched_idx); +static void aNRG_setup_think_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play, int think_idx); + +static void aNRG_actor_ct(ACTOR* actorx, GAME* game) { + // clang-format off + static aNPC_ct_data_c ct_data = { + &aNRG_actor_move, + &aNRG_actor_draw, + 5, + &aNRG_force_talk_request, + &aNRG_talk_init, + &aNRG_talk_end_chk, + 0, + }; + // clang-format on + + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player; + s16 angle_y; + + if (Common_Get(clip).npc_clip->birth_check_proc(actorx, &play->game) == TRUE) { + rcn_guide->npc_class.schedule.schedule_proc = &aNRG_schedule_proc; + Common_Get(clip).npc_clip->ct_proc(actorx, &play->game, &ct_data); + rcn_guide->npc_class.collision.priority = 2; + rcn_guide->melody_copy = rcn_guide->npc_class.talk_info.melody_inst; + + /* Set shop acre */ + mFI_BlockKind2BkNum(&rcn_guide->shop_bx, &rcn_guide->shop_bz, mRF_BLOCKKIND_SHOP); + + rcn_guide->npc_class.draw.main_animation.keyframe.morph_counter = 0.0f; + rcn_guide->npc_class.actor_class.status_data.weight = 255; + + player = GET_PLAYER_ACTOR(play); + if (player != NULL) { + angle_y = search_position_angleY(&rcn_guide->npc_class.actor_class.world.position, + &player->actor_class.world.position); + } else { + angle_y = 0; + } + + rcn_guide->npc_class.actor_class.shape_info.rotation.y = angle_y; + rcn_guide->npc_class.actor_class.world.angle.y = angle_y; + } +} + +static void aNRG_actor_save(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->save_proc(actorx, game); +} + +static void aNRG_actor_dt(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + + /* Stop playing the initial intro music when destruct due to entering a house */ + if (rcn_guide->think_idx == aNRC_THINK_WAIT) { + mBGMPsComp_delete_ps_demo(BGM_INTRO_RCN_GUIDE, 0x168); + } + + Common_Get(clip).npc_clip->dt_proc(actorx, game); +} + +static void aNRG_actor_init(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->init_proc(actorx, game); +} + +static void aNRG_actor_draw(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->draw_proc(actorx, game); +} + +#include "../src/ac_npc_rcn_guide_move.c_inc" +#include "../src/ac_npc_rcn_guide_talk.c_inc" +#include "../src/ac_npc_rcn_guide_schedule.c_inc" diff --git a/src/ac_npc_rcn_guide2.c b/src/ac_npc_rcn_guide2.c new file mode 100644 index 00000000..95531d34 --- /dev/null +++ b/src/ac_npc_rcn_guide2.c @@ -0,0 +1,229 @@ +#include "ac_npc_rcn_guide2.h" + +#include "m_common_data.h" +#include "m_bgm.h" +#include "m_player_lib.h" +#include "m_font.h" +#include "m_msg.h" +#include "m_soncho.h" +#include "ac_intro_demo.h" + +enum { + aNRG2_JOB1, + aNRG2_JOB2, + aNRG2_JOB3, + aNRG2_JOB4, + aNRG2_JOB5, + aNRG2_JOB6, + aNRG2_JOB7, + aNRG2_JOB8, + aNRG2_JOB9, + aNRG2_JOB10, + aNRG2_JOB11, + + aNRG2_JOB_NUM +}; + +enum { + aNRG2_NORM_TALK_JOB1_START, + aNRG2_NORM_TALK_JOB2_START, + aNRG2_NORM_TALK_JOB3_START, + aNRG2_NORM_TALK_JOB4_START, + aNRG2_NORM_TALK_JOB5_START, + aNRG2_NORM_TALK_JOB5_2_START, + aNRG2_NORM_TALK_JOB6_START, + aNRG2_NORM_TALK_JOB7_START, + aNRG2_NORM_TALK_JOB10_START, + aNRG2_NORM_TALK_JOB11_START, + + aNRG2_NORM_TALK_JOB1_REFUSE, + aNRG2_NORM_TALK_JOB2_REFUSE, + aNRG2_NORM_TALK_JOB3_REFUSE, + aNRG2_NORM_TALK_JOB4_REFUSE, + aNRG2_NORM_TALK_JOB5_REFUSE, + aNRG2_NORM_TALK_JOB5_2_REFUSE, + aNRG2_NORM_TALK_JOB6_REFUSE, + aNRG2_NORM_TALK_JOB7_REFUSE, + + aNRG2_NORM_TALK_J1_CONT1, + aNRG2_NORM_TALK_J1_CONT2, + aNRG2_NORM_TALK_J1_CONT3, + + aNRG2_NORM_TALK_J2_CONT1, + + aNRG2_NORM_TALK_J3_CONT1, + aNRG2_NORM_TALK_J3_CONT2, + + aNRG2_NORM_TALK_J4_CONT1, + aNRG2_NORM_TALK_J4_CONT2, + aNRG2_NORM_TALK_J5_CONT3, + + aNRG2_NORM_TALK_J5_CONT1, + aNRG2_NORM_TALK_J5_CONT2, + + aNRG2_NORM_TALK_J6_CONT1, + aNRG2_NORM_TALK_J6_CONT2, + + aNRG2_NORM_TALK_J7_CONT1, + + aNRG2_NORM_TALK_J10_CONT1, + + aNRG2_NORM_TALK_J11_CONT1, + + aNRG2_NORM_TALK_J1_END, + aNRG2_NORM_TALK_J2_END, + aNRG2_NORM_TALK_J3_END, + aNRG2_NORM_TALK_J4_END, + aNRG2_NORM_TALK_J5_END, + aNRG2_NORM_TALK_J6_END, + aNRG2_NORM_TALK_J7_END, + aNRG2_NORM_TALK_J10_END, + aNRG2_NORM_TALK_J11_END, + + aNRG2_NORM_TALK_AGAIN, + + aNRG2_NORM_TALK_NUM +}; + +enum { + aNRG2_FORCE_TALK_SAY_HELLO, + aNRG2_FORCE_TALK_SAY_HELLO2, + aNRG2_FORCE_TALK_SAY_HELLO_SP, + aNRG2_FORCE_TALK_CLOTH_CHK, + aNRG2_FORCE_TALK_UPSTAIR_CHK, + + aNRG2_FORCE_TALK_NUM +}; + +enum { + aNRG2_THINK_SAY_HELLO, + aNRG2_THINK_SAY_HELLO2, + aNRG2_THINK_SAY_HELLO3, + aNRG2_THINK_SEND_AWAY, + aNRG2_THINK_TALK_START_WAIT, + aNRG2_THINK_JOB_START_WAIT, + aNRG2_THINK_ALL_JOB_END, + + aNRG2_THINK_NUM +}; + +enum { + aNRG2_TALK_SAY_HELLO, + aNRG2_TALK_SAY_HELLO_SP, + aNRG2_TALK_SAY_HELLO_SP2, + aNRG2_TALK_CLOTH_CHK, + aNRG2_TALK_TALK_END_WAIT, + aNRG2_TALK_DEMO_START_WAIT, + aNRG2_TALK_DEMO_END_WAIT, + aNRG2_TALK_DEMO_END_WAIT2, + aNRG2_TALK_JOB_START, + aNRG2_TALK_JOB_END, + aNRG2_TALK_3RD_JOB_END, + aNRG2_TALK_DEMO2_START_WAIT, + aNRG2_TALK_DEMO2_START_WAIT2, + aNRG2_TALK_DEMO2_END, + aNRG2_TALK_GIVE_NEW_PAPER, + aNRG2_TALK_CHECK_MORE_PAPER, + aNRG2_TALK_DECIDE_NEW_TARGET, + aNRG2_TALK_DEMO3_START_WAIT, + aNRG2_TALK_DEMO3_START_WAIT2, + aNRG2_TALK_DEMO3_END_WAIT, + aNRG2_TALK_ALL_JOB_END, + + aNRG2_TALK_NUM +}; + +typedef struct rcn_guide2_talk_info_s { + int msg_no; + aNRG2_TALK_PROC talk_proc; +} aNRG2_talk_info_c; + +static void aNRG2_actor_ct(ACTOR* actorx, GAME* game); +static void aNRG2_actor_save(ACTOR* actorx, GAME* game); +static void aNRG2_actor_dt(ACTOR* actorx, GAME* game); +static void aNRG2_actor_init(ACTOR* actorx, GAME* game); +static void aNRG2_actor_draw(ACTOR* actorx, GAME* game); +static void aNRG2_actor_move(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Npc_Rcn_Guide2_Profile = { + mAc_PROFILE_NPC_RCN_GUIDE2, + ACTOR_PART_NPC, + ACTOR_STATE_NONE, + SP_NPC_RCN_GUIDE2, + ACTOR_OBJ_BANK_KEEP, + sizeof(NPC_RCN_GUIDE2_ACTOR), + &aNRG2_actor_ct, + &aNRG2_actor_dt, + &aNRG2_actor_init, + mActor_NONE_PROC1, + &aNRG2_actor_save, +}; +// clang-format on + +static void aNRG2_change_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, int talk_proc_idx); +static void aNRG2_force_talk_request(ACTOR* actorx, GAME* game); +static int aNRG2_talk_init(ACTOR* actorx, GAME* game); +static int aNRG2_talk_end_chk(ACTOR* actorx, GAME* game); + +static void aNRG2_schedule_proc(NPC_ACTOR* nactorx, GAME_PLAY* game, int sched_idx); +static void aNRG2_setup_think_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play, int think_idx); + +static void aNRG2_actor_ct(ACTOR* actorx, GAME* game) { + // clang-format off + static aNPC_ct_data_c ct_data = { + &aNRG2_actor_move, + &aNRG2_actor_draw, + 5, + &aNRG2_force_talk_request, + &aNRG2_talk_init, + &aNRG2_talk_end_chk, + 1, + }; + // clang-format on + + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + + if (Common_Get(clip).npc_clip->birth_check_proc(actorx, game) == TRUE) { + int shop_type = 0; + + switch (actorx->npc_id) { + case SP_NPC_RCN_GUIDE2: + shop_type = 0; + break; + case SP_NPC_RCN_GUIDE2_1: + shop_type = 1; + break; + case SP_NPC_RCN_GUIDE2_2: + shop_type = 2; + break; + case SP_NPC_RCN_GUIDE2_3: + shop_type = 3; + break; + } + + rcn_guide2->npc_class.draw.draw_type = shop_type; + rcn_guide2->npc_class.schedule.schedule_proc = &aNRG2_schedule_proc; + Common_Get(clip).npc_clip->ct_proc(actorx, game, &ct_data); + } +} + +static void aNRG2_actor_save(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->save_proc(actorx, game); +} + +static void aNRG2_actor_dt(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->dt_proc(actorx, game); +} + +static void aNRG2_actor_init(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->init_proc(actorx, game); +} + +static void aNRG2_actor_draw(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->draw_proc(actorx, game); +} + +#include "../src/ac_npc_rcn_guide2_move.c_inc" +#include "../src/ac_npc_rcn_guide2_talk.c_inc" +#include "../src/ac_npc_rcn_guide2_schedule.c_inc" diff --git a/src/ac_npc_rcn_guide2_move.c_inc b/src/ac_npc_rcn_guide2_move.c_inc new file mode 100644 index 00000000..08775226 --- /dev/null +++ b/src/ac_npc_rcn_guide2_move.c_inc @@ -0,0 +1,30 @@ +static void aNRG2_set_exit_info(ACTOR* actorx) { + GAME_PLAY* play = (GAME_PLAY*)gamePT; + + if (goto_other_scene(play, Common_GetPointer(structure_exit_door_data), TRUE) != 1) { + mDemo_End(actorx); + } else { + mBGMPsComp_scene_mode(14); + mBGMPsComp_make_ps_wipe(0x195); + } +} + +static void aNRG2_exit_check(ACTOR* actorx, GAME_PLAY* play) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (player != NULL && player->item_in_front == EXIT_DOOR1 && play->fb_wipe_mode == 0) { + mDemo_Request(mDemo_TYPE_EXITSCENE, actorx, &aNRG2_set_exit_info); + } +} + +static void aNRG2_actor_move(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (rcn_guide2->npc_class.action.idx == aNPC_ACT_WAIT) { + rcn_guide2->npc_class.action.step = aNPC_ACTION_END_STEP; + } + + Common_Get(clip).npc_clip->move_proc(actorx, game); + aNRG2_exit_check(actorx, play); +} diff --git a/src/ac_npc_rcn_guide2_schedule.c_inc b/src/ac_npc_rcn_guide2_schedule.c_inc new file mode 100644 index 00000000..f83eba0f --- /dev/null +++ b/src/ac_npc_rcn_guide2_schedule.c_inc @@ -0,0 +1,374 @@ +static int aNRG2_setup_j1_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + int talk_idx = aNRG2_NORM_TALK_J1_CONT1; + + if (mPr_GetPossessionItemIdxWithCond(Now_Private, ITM_CLOTH016, mPr_ITEM_COND_NORMAL) == -1) { + if (mPr_GetPossessionItemIdx(Now_Private, EMPTY_NO) == -1) { + talk_idx = aNRG2_NORM_TALK_J1_CONT3; + } else { + talk_idx = aNRG2_NORM_TALK_J1_CONT2; + } + } + + return talk_idx; +} + +static int aNRG2_setup_j2_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + int talk_idx = aNRG2_NORM_TALK_J2_CONT1; + + if (rcn_guide2->can_ask_again_flag == TRUE) { + talk_idx = aNRG2_NORM_TALK_AGAIN; + } + + return talk_idx; +} + +static int aNRG2_setup_j3_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_idx = aNRG2_NORM_TALK_J3_CONT1; + + if (mQst_CheckRemoveTarget(errand_p) == TRUE) { + talk_idx = aNRG2_NORM_TALK_J3_CONT2; + } else if (rcn_guide2->can_ask_again_flag == TRUE) { + talk_idx = aNRG2_NORM_TALK_AGAIN; + } + + return talk_idx; +} + +static int aNRG2_setup_j4_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_idx = aNRG2_NORM_TALK_J4_CONT1; + + if (rcn_guide2->can_ask_again_flag == TRUE) { + talk_idx = aNRG2_NORM_TALK_AGAIN; + } else if (mQst_CheckRemoveTarget(errand_p) == TRUE) { + talk_idx = aNRG2_NORM_TALK_J4_CONT2; + } else if (errand_p->base.progress == 3) { + talk_idx = aNRG2_NORM_TALK_J5_CONT3; + } + + return talk_idx; +} + +static int aNRG2_setup_j5_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_idx = aNRG2_NORM_TALK_J5_CONT1; + + if (mQst_CheckRemoveTarget(errand_p) == TRUE) { + talk_idx = aNRG2_NORM_TALK_J5_CONT2; + } + + return talk_idx; +} + +static int aNRG2_setup_j6_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_idx = aNRG2_NORM_TALK_J6_CONT1; + + if (mQst_CheckRemoveTarget(errand_p) == TRUE) { + talk_idx = aNRG2_NORM_TALK_J6_CONT2; + } else if (rcn_guide2->can_ask_again_flag == TRUE) { + talk_idx = aNRG2_NORM_TALK_AGAIN; + } + + return talk_idx; +} + +static int aNRG2_setup_j7_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + int talk_idx = aNRG2_NORM_TALK_J7_CONT1; + + if (rcn_guide2->can_ask_again_flag == TRUE) { + talk_idx = aNRG2_NORM_TALK_AGAIN; + } + + return talk_idx; +} + +static int aNRG2_setup_j10_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + return aNRG2_NORM_TALK_J10_CONT1; +} + +static int aNRG2_setup_j11_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + return aNRG2_NORM_TALK_J11_CONT1; +} + +typedef int (*aNRG2_SETUP_JOB_CONT_PROC)(NPC_RCN_GUIDE2_ACTOR*); + +static void aNRG2_setup_job_cont(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + // clang-format off + static aNRG2_SETUP_JOB_CONT_PROC setup_job_cont_proc[] = { + &aNRG2_setup_j1_cont, + &aNRG2_setup_j2_cont, + &aNRG2_setup_j3_cont, + &aNRG2_setup_j4_cont, + &aNRG2_setup_j5_cont, + &aNRG2_setup_j6_cont, + &aNRG2_setup_j7_cont, + &aNRG2_setup_j4_cont, + &aNRG2_setup_j6_cont, + &aNRG2_setup_j10_cont, + &aNRG2_setup_j11_cont, + }; + // clang-format on + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int idx = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + rcn_guide2->talk_idx = (*setup_job_cont_proc[idx])(rcn_guide2); +} + +static void aNRG2_talk_start_wait(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + // clang-format off + static int job_end_talk_idx[] = { + aNRG2_NORM_TALK_J1_END, + aNRG2_NORM_TALK_J2_END, + aNRG2_NORM_TALK_J3_END, + aNRG2_NORM_TALK_J4_END, + aNRG2_NORM_TALK_J5_END, + aNRG2_NORM_TALK_J6_END, + aNRG2_NORM_TALK_J7_END, + aNRG2_NORM_TALK_J4_END, + aNRG2_NORM_TALK_J6_END, + aNRG2_NORM_TALK_J10_END, + aNRG2_NORM_TALK_J11_END, + }; + // clang-format on + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int idx = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + if (mQst_CheckFirstJobFin(errand_p) == TRUE) { + rcn_guide2->talk_idx = job_end_talk_idx[idx]; + rcn_guide2->can_ask_again_flag = FALSE; + } else { + aNRG2_setup_job_cont(rcn_guide2); + } +} + +static void aNRG2_job_start_wait(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + // clang-format off + static int job_start_talk_idx[] = { + aNRG2_NORM_TALK_JOB1_START, + aNRG2_NORM_TALK_JOB2_START, + aNRG2_NORM_TALK_JOB3_START, + aNRG2_NORM_TALK_JOB4_START, + aNRG2_NORM_TALK_JOB5_START, + aNRG2_NORM_TALK_JOB6_START, + aNRG2_NORM_TALK_JOB7_START, + aNRG2_NORM_TALK_JOB4_START, + aNRG2_NORM_TALK_JOB6_START, + aNRG2_NORM_TALK_JOB10_START, + aNRG2_NORM_TALK_JOB11_START, + }; + // clang-format on + + // clang-format off + static int job_start_refuse_talk_idx[] = { + aNRG2_NORM_TALK_JOB1_REFUSE, + aNRG2_NORM_TALK_JOB2_REFUSE, + aNRG2_NORM_TALK_JOB3_REFUSE, + aNRG2_NORM_TALK_JOB4_REFUSE, + aNRG2_NORM_TALK_JOB5_REFUSE, + aNRG2_NORM_TALK_JOB6_REFUSE, + aNRG2_NORM_TALK_JOB7_REFUSE, + aNRG2_NORM_TALK_JOB4_REFUSE, + aNRG2_NORM_TALK_JOB6_REFUSE, + -1, + -1, + }; + // clang-format on + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int idx = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + if (aNRG2_check_job_start() == TRUE) { + rcn_guide2->talk_idx = job_start_talk_idx[idx]; + } else { + rcn_guide2->talk_idx = job_start_refuse_talk_idx[idx]; + } +} + +static void aNRG2_all_job_end(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + if (play->fb_wipe_mode == 0) { + rcn_guide2->counter++; + + if (rcn_guide2->counter > 60) { + aNRG2_setup_think_proc(rcn_guide2, play, aNRG2_THINK_SEND_AWAY); + } + } +} + +static void aNRG2_think_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)nactorx; + + if (nactorx->action.step == aNPC_ACTION_END_STEP) { + (*rcn_guide2->think_proc)(rcn_guide2, play); + } +} + +static void aNRG2_think_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)nactorx; + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int think_idx; + + rcn_guide2->npc_class.condition_info.hide_request = FALSE; + rcn_guide2->npc_class.actor_class.status_data.weight = 255; + rcn_guide2->npc_class.actor_class.shape_info.rotation.y = rcn_guide2->npc_class.actor_class.player_angle_y; + rcn_guide2->npc_class.actor_class.world.angle.y = rcn_guide2->npc_class.actor_class.player_angle_y; + + if (Common_Get(quest).work == 0) { + Common_Get(quest).work = 1; + rcn_guide2->daily_speak_flag = TRUE; + + if (errand_p->base.quest_kind == mQst_ERRAND_FIRSTJOB_START) { + if (Now_Private->cloth.item == ITM_CLOTH016) { + aNRG2_setup_job(aNRG2_JOB2); + think_idx = aNRG2_THINK_SAY_HELLO3; + } else { + aNRG2_setup_job(aNRG2_JOB1); + think_idx = aNRG2_THINK_SAY_HELLO; + } + } else { + think_idx = aNRG2_THINK_SAY_HELLO2; + } + } else if (errand_p->base.progress == 1) { + think_idx = aNRG2_THINK_JOB_START_WAIT; + } else { + think_idx = aNRG2_THINK_TALK_START_WAIT; + } + + if (Save_Get(scene_no) == SCENE_DEPART) { + /* Replace the upstairs warps with reserve items */ + mFI_UtNumtoFGSet_common(RSV_POLICE_ITEM_0, 7, 1, FALSE); + mFI_UtNumtoFGSet_common(RSV_POLICE_ITEM_0, 8, 1, FALSE); + } + + aNRG2_setup_think_proc(rcn_guide2, play, think_idx); +} + +static void aNRG2_send_away_init(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + goto_other_scene(play, Common_GetPointer(structure_exit_door_data), 1); + mBGMPsComp_scene_mode(14); +} + +static void aNRG2_talk_start_wait_init(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + aNRG2_talk_start_wait(rcn_guide2, play); +} + +static void aNRG2_job_start_wait_init(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + aNRG2_job_start_wait(rcn_guide2, play); +} + +static void aNRG2_all_job_end_init(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play) { + INTRO_DEMO_ACTOR* intro_demo; + + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + intro_demo = + (INTRO_DEMO_ACTOR*)Actor_info_name_search(&play->actor_info, mAc_PROFILE_INTRO_DEMO, ACTOR_PART_CONTROL); + intro_demo->_1A8 = TRUE; +} + +typedef void (*aNRG2_THINK_INIT_PROC)(NPC_RCN_GUIDE2_ACTOR*, GAME_PLAY*); + +typedef struct rcn_guide2_think_data_s { + aNRG2_THINK_PROC think_proc; + aNRG2_THINK_INIT_PROC think_init_proc; + aNPC_TALK_REQUEST_PROC talk_request_proc; + u8 talk_idx; + u8 next_think_idx; +} aNRG2_think_data_c; + +static void aNRG2_setup_think_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, GAME_PLAY* play, int think_idx) { + // clang-format off + static aNRG2_think_data_c dt_tbl[] = { + { + (aNRG2_THINK_PROC)&none_proc1, + (aNRG2_THINK_INIT_PROC)&none_proc1, + &aNRG2_force_talk_request, + aNRG2_FORCE_TALK_SAY_HELLO, + aNRG2_THINK_SEND_AWAY, + }, + { + (aNRG2_THINK_PROC)&none_proc1, + (aNRG2_THINK_INIT_PROC)&none_proc1, + &aNRG2_force_talk_request, + aNRG2_FORCE_TALK_SAY_HELLO2, + aNRG2_THINK_SEND_AWAY, + }, + { + (aNRG2_THINK_PROC)&none_proc1, + (aNRG2_THINK_INIT_PROC)&none_proc1, + &aNRG2_force_talk_request, + aNRG2_FORCE_TALK_SAY_HELLO_SP, + aNRG2_THINK_SEND_AWAY, + }, + { + (aNRG2_THINK_PROC)&none_proc1, + &aNRG2_send_away_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + 0, + aNRG2_THINK_SEND_AWAY, + }, + { + &aNRG2_talk_start_wait, + &aNRG2_talk_start_wait_init, + &aNRG2_norm_talk_request, + aNRG2_NORM_TALK_JOB1_START, + aNRG2_THINK_TALK_START_WAIT, + }, + { + &aNRG2_job_start_wait, + &aNRG2_job_start_wait_init, + &aNRG2_norm_talk_request, + aNRG2_NORM_TALK_JOB1_START, + aNRG2_THINK_JOB_START_WAIT, + }, + { + &aNRG2_all_job_end, + &aNRG2_all_job_end_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + 0, + aNRG2_THINK_ALL_JOB_END, + }, + }; + // clang-format on + + aNRG2_think_data_c* data = &dt_tbl[think_idx]; + static u16 arg_data[6] = { 0, 0, 0, 0, 0, 0 }; + + rcn_guide2->think_idx = think_idx; + rcn_guide2->think_proc = data->think_proc; + rcn_guide2->npc_class.talk_info.talk_request_proc = data->talk_request_proc; + rcn_guide2->talk_idx = data->talk_idx; + rcn_guide2->next_think_idx = data->next_think_idx; + rcn_guide2->npc_class.request.act_priority = 1; + rcn_guide2->npc_class.request.act_idx = aNPC_ACT_WAIT; + rcn_guide2->npc_class.request.act_type = aNPC_ACT_TYPE_DEFAULT; + mem_copy((u8*)rcn_guide2->npc_class.request.act_args, (u8*)arg_data, sizeof(arg_data)); + (*data->think_init_proc)(rcn_guide2, play); +} + +static void aNRG2_think_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int proc_type) { + static aNPC_SUB_PROC think_proc[] = { &aNRG2_think_init_proc, &aNRG2_think_main_proc }; + + (*think_proc[proc_type])(nactorx, play); +} + +static void aNRG2_schedule_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + nactorx->think.think_proc = &aNRG2_think_proc; + Common_Get(clip).npc_clip->think_proc(nactorx, play, aNPC_THINK_IN_BLOCK, 0); +} + +static void aNRG2_schedule_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + int res = Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 1); + + if (res == 0) { + Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 2); + } +} + +static void aNRG2_schedule_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int proc_type) { + static aNPC_SUB_PROC sche_proc[] = { &aNRG2_schedule_init_proc, &aNRG2_schedule_main_proc }; + + (*sche_proc[proc_type])(nactorx, play); +} diff --git a/src/ac_npc_rcn_guide2_talk.c_inc b/src/ac_npc_rcn_guide2_talk.c_inc new file mode 100644 index 00000000..fdabbd42 --- /dev/null +++ b/src/ac_npc_rcn_guide2_talk.c_inc @@ -0,0 +1,912 @@ +static void aNRG2_set_str_j3(void) { + static u8 choume_str[] = { 'Q', 'A', 'B', 'C', 'D', 'E', 'F' }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + AnmPersonalID_c* to_id_p = &errand_p->recipient; + int idx = mNpc_SearchAnimalinfo(Save_Get(animals), to_id_p->npc_id, ANIMAL_NUM_MAX); + u8 str[ANIMAL_NAME_LEN]; + + if (idx != -1) { + /* Set msg string 3 & 4 to acre Z & X respectively */ + Anmhome_c* home_p = &Save_Get(animals[idx]).home_info; + + mMsg_Set_free_str(msg_p, mMsg_FREE_STR3, &choume_str[home_p->block_z], 1); + mFont_UnintToString(str, sizeof(str), home_p->block_x, sizeof(str), TRUE, FALSE, TRUE); + mMsg_Set_free_str(msg_p, mMsg_FREE_STR4, str, sizeof(str)); + } + + mNpc_GetNpcWorldNameAnm(str, to_id_p); + mMsg_Set_free_str_cl(msg_p, mMsg_FREE_STR5, str, sizeof(str), 1); +} + +static void aNRG2_set_str_j4(void) { + int bx; + int bz; + u8 str[1]; + + /* Set recipient home acre */ + aNRG2_set_str_j3(); + /* Set post office acre string */ + mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_POSTOFFICE); + mFont_UnintToString(str, sizeof(str), bx, sizeof(str), TRUE, FALSE, TRUE); + /* We only care about the X acre since the post office is always in the A row */ + mMsg_SET_FREE_STR(mMsg_FREE_STR6, str, sizeof(str)); +} + +typedef void (*aNRG2_SET_STR_PROC)(void); + +static void aNRG2_set_str_proc(void) { + static aNRG2_SET_STR_PROC process[] = { + (aNRG2_SET_STR_PROC)&none_proc1, + (aNRG2_SET_STR_PROC)&none_proc1, + &aNRG2_set_str_j3, + &aNRG2_set_str_j4, + &aNRG2_set_str_j3, + &aNRG2_set_str_j3, + (aNRG2_SET_STR_PROC)&none_proc1, + &aNRG2_set_str_j4, + &aNRG2_set_str_j3, + (aNRG2_SET_STR_PROC)&none_proc1, + (aNRG2_SET_STR_PROC)&none_proc1, + }; + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int idx = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + /* Set the current job strings, index is job quest idx relative to first job */ + (*process[idx])(); +} + +static void aNRG2_set_possession(void) { + // clang-format off + static mActor_name_t set_item[] = { + ITM_CLOTH016, + ITM_WHITE_PANSY_BAG, + EMPTY_NO, + ITM_PAPER55, + EMPTY_NO, + ITM_AXE, + EMPTY_NO, + ITM_PAPER55, + ITM_AXE, + EMPTY_NO, + EMPTY_NO, + }; + // clang-format on + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + u32 job_kind = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + if (job_kind == aNRG2_JOB2) { + int i; + /* Give player 7 random flower bags */ + for (i = 0; i < 7; i++) { + mActor_name_t item = ITM_WHITE_PANSY_BAG + RANDOM(9); + + mPr_SetFreePossessionItem(Now_Private, item, mPr_ITEM_COND_NORMAL); + } + + /* Give player 3 saplings */ + for (i = 0; i < 3; i++) { + mPr_SetFreePossessionItem(Now_Private, ITM_SAPLING, mPr_ITEM_COND_NORMAL); + } + } else { + switch (job_kind) { + case aNRG2_JOB3: + case aNRG2_JOB5: + /* Set the random errand item with quest condition */ + mPr_SetFreePossessionItem(Now_Private, errand_p->item, mPr_ITEM_COND_QUEST); + break; + case aNRG2_JOB1: + case aNRG2_JOB4: + case aNRG2_JOB7: + case aNRG2_JOB8: + /* Set the static job item with normal condition */ + mPr_SetFreePossessionItem(Now_Private, set_item[job_kind], mPr_ITEM_COND_NORMAL); + break; + case aNRG2_JOB2: + case aNRG2_JOB6: + case aNRG2_JOB9: + default: + /* Set the static job item with quest condition */ + mPr_SetFreePossessionItem(Now_Private, set_item[job_kind], mPr_ITEM_COND_QUEST); + break; + case aNRG2_JOB10: + case aNRG2_JOB11: + break; + } + } +} + +static int aNRG2_check_job_start(void) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int res = FALSE; + u32 free_slots = mPr_GetPossessionItemSum(Now_Private, EMPTY_NO); + + switch (errand_p->base.quest_kind) { + case mQst_ERRAND_FIRSTJOB_PLANT_FLOWER: + /* Need at least 10 inventory slots free for the planting chore */ + if (free_slots >= 10) { + res = TRUE; + } + break; + case mQst_ERRAND_FIRSTJOB_POST_NOTICE: + case mQst_ERRAND_FIRSTJOB_INTRODUCTIONS: + case mQst_ERRAND_FIRSTJOB_OPEN: + /* These chores have no items and thus can always be started */ + res = TRUE; + break; + default: + /* Default requires at least one free inventory slot */ + if (free_slots > 0) { + res = TRUE; + } + break; + } + + return res; +} + +/* Is this a typo of setup? */ +static void aNRG2_stepup_j1(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + /* Job 1: change into 'work clothes' */ + mQst_SetFirstJobChangeCloth(errand_p, ITM_CLOTH016); +} + +static void aNRG2_stepup_j2(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + /* Job 2: plant flower seeds & tree saplings */ + mQst_SetFirstJobSeed(errand_p); +} + +static void aNRG2_stepup_j3(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* List of 'no good' furniture, seemingly only ones you can walk on? */ + static mActor_name_t ng_list[] = { FTR_MANHOLE_COVER, FTR_BATH_MAT }; + mQst_errand_c* errand_p; + AnmPersonalID_c* anm_pid_p; + mActor_name_t ftr; + u32 free_idx; + + /* Get first job quest data */ + errand_p = mQst_GetFirstJobData(); + + /* Get first free inventory slot index */ + free_idx = mPr_GetPossessionItemIdx(Now_Private, EMPTY_NO); + + /* Get an unused target villager for delivery target */ + anm_pid_p = mNpc_GetOtherAnimalPersonalID(errand_p->info.first_job.used_ids, errand_p->info.first_job.used_num); + + /* Roll random ABC list furniture to be delivered */ + mSP_SelectRandomItem_New(NULL, &ftr, 1, ng_list, ARRAY_COUNT(ng_list), mSP_KIND_FURNITURE, mSP_LISTTYPE_ABC, FALSE); + + /* Job 3: deliver furniture */ + mQst_SetFirstJobFurniture(errand_p, anm_pid_p, ftr, free_idx); +} + +static void aNRG2_stepup_j4(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p; + AnmPersonalID_c* anm_pid_p; + + // Get first job quest data + errand_p = mQst_GetFirstJobData(); + + // Get an unused target villager for letter recipient + anm_pid_p = mNpc_GetOtherAnimalPersonalID(errand_p->info.first_job.used_ids, errand_p->info.first_job.used_num); + + // Force a memory with the animal in the event the player hasn't spoken to them yet + // This could happen if an animal moves in before the chore is started, + // but after the introductions sequence is finished. + // This prevents the case where the recipient would not be listed + // in the recipient menu despite being assigned by Nook. + mNpc_SetAnimalPersonalID2Memory(anm_pid_p); + + // Job 4: send letter + if (kind == aNRG2_JOB4) { + mQst_SetFirstJobLetter(errand_p, anm_pid_p); + } else { + mQst_SetFirstJobLetter2(errand_p, anm_pid_p); + } + + // Allow Nook to remind the player about this chore + rcn_guide2->can_ask_again_flag = TRUE; +} + +static void aNRG2_stepup_j5(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p; + AnmPersonalID_c* anm_pid_p; + mActor_name_t ftr; + u32 free_idx; + + /* Get first job quest data */ + errand_p = mQst_GetFirstJobData(); + + /* Get first free inventory slot index */ + free_idx = mPr_GetPossessionItemIdx(Now_Private, EMPTY_NO); + + /* Get an unused target villager for delivery target */ + anm_pid_p = mNpc_GetOtherAnimalPersonalID(errand_p->info.first_job.used_ids, errand_p->info.first_job.used_num); + + /* Roll random ABC list carpet to be delivered */ + mSP_SelectRandomItem_New(NULL, &ftr, 1, NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_ABC, FALSE); + + /* Job 5: deliver carpet */ + mQst_SetFirstJobCarpet(errand_p, anm_pid_p, ftr, free_idx); +} + +static void aNRG2_stepup_j6(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p; + u32 free_idx; + + // Get first job quest data + errand_p = mQst_GetFirstJobData(); + + // Get the first free inventory slot + free_idx = mPr_GetPossessionItemIdx(Now_Private, EMPTY_NO); + + // Job 5: deliver axe + if (kind == aNRG2_JOB6) { + mQst_SetFirstJobAxe(errand_p, &errand_p->info.first_job.used_ids[1], ITM_AXE, free_idx); + } else { + mQst_SetFirstJobAxe2(errand_p, &errand_p->info.first_job.used_ids[1], ITM_AXE, free_idx); + } +} + +static void aNRG2_stepup_j7(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + /* Job 7: post on notice board */ + mQst_SetFirstJobNotice(errand_p); +} + +static void aNRG2_stepup_j10(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + /* Job 10: introductions */ + mQst_SetFirstJobHello(errand_p); +} + +static void aNRG2_stepup_j11(u32 kind, NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + /* Job 11: open quest */ + mQst_SetFirstJobOpenQuest(errand_p); +} + +typedef void (*aNRG2_STEPUP_PROC)(u32, NPC_RCN_GUIDE2_ACTOR*); + +static void aNRG2_stepup_job(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, u32 job_kind) { + // clang-format off + static aNRG2_STEPUP_PROC stepup_job_proc[] = { + &aNRG2_stepup_j1, + &aNRG2_stepup_j2, + &aNRG2_stepup_j3, + &aNRG2_stepup_j4, + &aNRG2_stepup_j5, + &aNRG2_stepup_j6, + &aNRG2_stepup_j7, + &aNRG2_stepup_j4, + &aNRG2_stepup_j6, + &aNRG2_stepup_j10, + &aNRG2_stepup_j11, + }; + // clang-format on + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + if (errand_p->base.progress == 1) { + (*stepup_job_proc[job_kind])(job_kind, rcn_guide2); + aNRG2_set_str_proc(); + } +} + +static void aNRG2_setup_job(int job_kind) { + // clang-format off + static u32 kind[] = { + mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH, + mQst_ERRAND_FIRSTJOB_PLANT_FLOWER, + mQst_ERRAND_FIRSTJOB_DELIVER_FTR, + mQst_ERRAND_FIRSTJOB_SEND_LETTER, + mQst_ERRAND_FIRSTJOB_DELIVER_CARPET, + mQst_ERRAND_FIRSTJOB_DELIVER_AXE, + mQst_ERRAND_FIRSTJOB_POST_NOTICE, + mQst_ERRAND_FIRSTJOB_SEND_LETTER2, + mQst_ERRAND_FIRSTJOB_DELIVER_AXE2, + mQst_ERRAND_FIRSTJOB_INTRODUCTIONS, + mQst_ERRAND_FIRSTJOB_OPEN, + }; + // clang-format on + + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + errand_p->base.quest_kind = kind[job_kind]; + errand_p->base.progress = 1; +} + +static void aNRG2_say_hello_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + // clang-format off + static int job_start_msg_no[] = { + 0x07F1, + 0x07F6, + 0x07FB, + 0x0802, + 0x080C, + 0x0813, + 0x0818, + 0x0802, + 0x0813, + 0x0821, + 0x0827, + }; + // clang-format on + + // clang-format off + static int job_start_refuse_msg_no[] = { + 0x07F0, + 0x07F5, + 0x07FA, + 0x07FA, + 0x07FA, + 0x07FA, + 0x0818, + 0x07FA, + 0x07FA, + -1, + -1, + }; + // clang-format on + + static int next_talk_idx[] = { aNRG2_TALK_DEMO_START_WAIT, aNRG2_TALK_TALK_END_WAIT }; + + mMsg_Window_c* msg_p; + mQst_errand_c* errand_p; + int msg_no; + int talk_idx; + int job_kind; + + msg_p = mMsg_Get_base_window_p(); + errand_p = mQst_GetFirstJobData(); + if (errand_p->base.progress == 1) { + job_kind = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + if (aNRG2_check_job_start() == TRUE) { + /* The next job can be started */ + + // Initial setup + aNRG2_stepup_job(rcn_guide2, job_kind); + // Set quest items if necessary + aNRG2_set_possession(); + // Setup params + msg_no = job_start_msg_no[job_kind]; + rcn_guide2->next_think_idx = aNRG2_THINK_TALK_START_WAIT; + talk_idx = 0; + } else { + /* The next job can't be started */ + msg_no = job_start_refuse_msg_no[job_kind]; + rcn_guide2->next_think_idx = aNRG2_THINK_JOB_START_WAIT; + talk_idx = 1; + } + + mMsg_Set_continue_msg_num(msg_p, msg_no); + aNRG2_change_talk_proc(rcn_guide2, next_talk_idx[talk_idx]); + } else { + /* We're still in the middle of a job? */ + rcn_guide2->next_think_idx = aNRG2_THINK_TALK_START_WAIT; + mMsg_Set_CancelNormalContinue(msg_p); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); + } +} + +static void aNRG2_say_hello_sp_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* Special message on first meeting at shop if player is already wearing uniform */ + mMsg_SET_CONTINUE_MSG_NUM(0x0837); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_SAY_HELLO_SP2); +} + +static void aNRG2_say_hello_sp2_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + if (mMsg_GET_MSG_NUM() == 0x0837) { + aNRG2_say_hello_talk_proc(rcn_guide2); + } +} + +static void aNRG2_cloth_chk_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + if (errand_p->base.progress == 1) { + rcn_guide2->next_think_idx = aNRG2_THINK_JOB_START_WAIT; + } else { + rcn_guide2->next_think_idx = aNRG2_THINK_TALK_START_WAIT; + } + + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); +} + +static void aNRG2_demo_start_wait_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* List of display items for each job */ + static mActor_name_t itemNo[] = { + ITM_CLOTH016, /* work uniform */ + ITM_WHITE_PANSY_BAG, /* flower bag */ + FTR_FAN, /* furniture */ + ITM_PAPER55, /* simple paper */ + ITM_CARPET00, /* carpet */ + ITM_AXE, /* axe */ + EMPTY_NO, /* no item */ + ITM_PAPER55, /* simple paper */ + ITM_AXE, /* axe */ + EMPTY_NO, /* no item */ + EMPTY_NO, /* no item */ + }; + + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 1); + + if (order == 4) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + u32 kind = errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + + /* Set params for hand over item */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 0, itemNo[kind]); + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 1, 7); + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 2, 0); + /* Don't let the player continue dialog */ + mMsg_SET_LOCKCONTINUE(); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_DEMO_END_WAIT); + } +} + +static void aNRG2_demo_end_wait_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* Wait for the hand over process item to start */ + if (rcn_guide2->npc_class.action.idx == 10 && Common_Get(clip).handOverItem_clip->master_actor != NULL) { + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_DEMO_END_WAIT2); + } +} + +static void aNRG2_demo_end_wait2_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* Wait for the hand over item process to finish */ + if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { + /* Allow player to continue dialog */ + mMsg_UNSET_LOCKCONTINUE(); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); + } +} + +static void aNRG2_job_start_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_proc_idx; + + /* Setup job quest info */ + aNRG2_stepup_job(rcn_guide2, errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH); + /* Give the player the necessary item(s) for the job */ + aNRG2_set_possession(); + + if (errand_p->base.quest_kind == mQst_ERRAND_FIRSTJOB_INTRODUCTIONS || + errand_p->base.quest_kind == mQst_ERRAND_FIRSTJOB_OPEN) { + talk_proc_idx = aNRG2_TALK_TALK_END_WAIT; + } else { + talk_proc_idx = aNRG2_TALK_DEMO_START_WAIT; + } + + aNRG2_change_talk_proc(rcn_guide2, talk_proc_idx); + rcn_guide2->next_think_idx = aNRG2_THINK_TALK_START_WAIT; +} + +static void aNRG2_job_end_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + static int next_job_no[] = { + aNRG2_JOB2, aNRG2_JOB3, aNRG2_JOB4, aNRG2_JOB11, aNRG2_JOB6, aNRG2_JOB7, + aNRG2_JOB7, aNRG2_JOB9, aNRG2_JOB7, aNRG2_JOB3, aNRG2_JOB5, + }; + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int next_job; + + /* If the finished quest was the planting flowers & saplings job & the player hasn't spoken to all villagers & + * Tortimer, then set the job to introductions. + */ + if (errand_p->base.quest_kind == mQst_ERRAND_FIRSTJOB_PLANT_FLOWER && + (mNpc_CheckFriendAllAnimal(&Now_Private->player_ID) == FALSE || mSC_check_ArbeitPlayer() == FALSE)) { + next_job = aNRG2_JOB10; + } else { + next_job = next_job_no[errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH]; + } + + aNRG2_setup_job(next_job); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_SAY_HELLO); +} + +static void aNRG2_3rd_job_end_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + /* Hand over the map */ + if (order != 0) { + aNRG2_job_end_talk_proc(rcn_guide2); + + /* Set params for hand over item */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 2); + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 0, ITM_TOWN_MAP); + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 1, 7); + mDemo_Set_OrderValue(mDemo_ORDER_NPC1, 2, 0); + + /* Enable map flag */ + Common_Set(map_flag, TRUE); + + /* Clear demo order */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + } +} + +static void aNRG2_demo2_start_wait_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + /* Take quest item back from player */ + if (order != 0) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int idx = mPr_GetPossessionItemIdxWithCond(Now_Private, errand_p->item, mPr_ITEM_COND_QUEST); + + // This is bad, if you somehow don't have the quest item, the first item in your inventory will be deleted + if (idx == -1) { + idx = 0; + } + + /* Clear item */ + mPr_SetPossessionItem(Now_Private, idx, 0, mPr_ITEM_COND_NORMAL); + + /* Clear demo order */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + + /* Prevent player from continuing dialogue */ + mMsg_SET_LOCKCONTINUE(); + + /* Tell the player to play hand over animation */ + mPlib_request_main_give_type1(gamePT, errand_p->item, 7, FALSE, FALSE); + + aNRG2_setup_job(errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_DEMO2_START_WAIT2); + } +} + +static void aNRG2_demo2_start_wait2_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* Wait for hand over item request mode */ + if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_TRANS_WAIT) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_DEMO2_END); + } +} + +static void aNRG2_demo2_end_wait_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + /* Wait for hand over item to finish */ + if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { + /* Allow player to continue the dialogue now */ + mMsg_UNSET_LOCKCONTINUE(); + aNRG2_job_start_talk_proc(rcn_guide2); + } +} + +static void aNRG2_give_new_paper_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (aNRG2_check_job_start() == TRUE) { + /* Give another piece of stationery to the player */ + mMsg_Set_continue_msg_num(msg_p, 0x0805); // 'Here! Here's another piece of paper.' + aNRG2_job_start_talk_proc(rcn_guide2); + rcn_guide2->can_ask_again_flag = TRUE; + } else { + /* Player has full pockets so tell them */ + mMsg_Set_continue_msg_num(msg_p, 0x07FA); // '...What have we here?' + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); + rcn_guide2->can_ask_again_flag = FALSE; + } +} + +static void aNRG2_check_more_paper_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + mQst_errand_c* errand_p; + + if (order != 0) { + /* Clear the demo order */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + /* Player asked for more paper, so give them some if they have inv space */ + errand_p = mQst_GetFirstJobData(); + aNRG2_give_new_paper_talk_proc(rcn_guide2); + errand_p->base.progress = 2; + break; + case mChoice_CHOICE1: + /* Player said they don't need more paper */ + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); + rcn_guide2->can_ask_again_flag = FALSE; + break; + } + } +} + +static void aNRG2_decide_new_target_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + mQst_errand_c* errand_p; + + if (order != 0) { + errand_p = mQst_GetFirstJobData(); + + /* Clear the demo order */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + + aNRG2_setup_job(errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH); + aNRG2_stepup_job(rcn_guide2, errand_p->base.quest_kind - mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_CHECK_MORE_PAPER); + } +} + +static void aNRG2_demo3_start_wait_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + mQst_errand_c* errand_p; + int idx; + + if (order != 0) { + errand_p = mQst_GetFirstJobData(); + idx = mPr_GetPossessionItemIdxWithCond(Now_Private, errand_p->item, mPr_ITEM_COND_QUEST); + + if (idx == -1) { + /* If the job's tool item can't be found then try the player's equipped item */ + if (Now_Private->equipment == errand_p->item) { + Now_Private->equipment = EMPTY_NO; + } + } else { + mPr_SetPossessionItem(Now_Private, idx, EMPTY_NO, mPr_ITEM_COND_NORMAL); + } + + /* Clear the demo order */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + + mMsg_SET_LOCKCONTINUE(); + mPlib_request_main_give_type1(gamePT, errand_p->item, 7, FALSE, FALSE); + aNRG2_setup_job(aNRG2_JOB8); + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_DEMO3_START_WAIT2); + } +} + +static void aNRG2_all_job_end_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2) { + rcn_guide2->next_think_idx = aNRG2_THINK_ALL_JOB_END; + aNRG2_change_talk_proc(rcn_guide2, aNRG2_TALK_TALK_END_WAIT); +} + +static void aNRG2_change_talk_proc(NPC_RCN_GUIDE2_ACTOR* rcn_guide2, int talk_proc_idx) { + // clang-format off + static aNRG2_TALK_PROC proc[] = { + &aNRG2_say_hello_talk_proc, + &aNRG2_say_hello_sp_talk_proc, + &aNRG2_say_hello_sp2_talk_proc, + &aNRG2_cloth_chk_talk_proc, + (aNRG2_TALK_PROC)&none_proc1, + &aNRG2_demo_start_wait_talk_proc, + &aNRG2_demo_end_wait_talk_proc, + &aNRG2_demo_end_wait2_talk_proc, + &aNRG2_job_start_talk_proc, + &aNRG2_job_end_talk_proc, + &aNRG2_3rd_job_end_talk_proc, + &aNRG2_demo2_start_wait_talk_proc, + &aNRG2_demo2_start_wait2_talk_proc, + &aNRG2_demo2_end_wait_talk_proc, + &aNRG2_give_new_paper_talk_proc, + &aNRG2_check_more_paper_talk_proc, + &aNRG2_decide_new_target_talk_proc, + &aNRG2_demo3_start_wait_talk_proc, + &aNRG2_demo2_start_wait2_talk_proc, + &aNRG2_demo2_end_wait_talk_proc, + &aNRG2_all_job_end_talk_proc, + }; + // clang-format on + + rcn_guide2->talk_proc = proc[talk_proc_idx]; +} + +static void aNRG2_set_goods_talk_info(ACTOR* actorx) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + int msg_no = 0x081C; + + /* Check if it's a raffle day */ + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + msg_no = 0x0833; + } + + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_turn(TRUE); + rcn_guide2->talk_proc = (aNRG2_TALK_PROC)&none_proc1; +} + +static int aNRG2_goods_talk_request(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int res = FALSE; + + if (player != NULL) { + int ux; + int uz; + mActor_name_t item; + + mFI_Wpos2UtNum(&ux, &uz, player->forward_ut_pos); + item = Common_Get(clip).shop_design_clip->unitNum2ItemNo_proc(ux, uz); + if (player->a_btn_pressed == TRUE && item != EXIT_DOOR1 && item != EMPTY_NO && item != RSV_WALL_NO && + item != RSV_NO && item != DOOR0) { + /* Player interacted with shop goods, tell them they're inaccessible currently */ + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNRG2_set_goods_talk_info); + rcn_guide2->talk_proc_idx = 0; + res = TRUE; + } + } + + return res; +} + +static int aNRG2_cloth_check(void) { + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int res = FALSE; + + if (errand_p->base.quest_kind > mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH && + errand_p->info.first_job.wrong_cloth == FALSE && Now_Private->cloth.item != ITM_CLOTH016) { + /* Player changed out of work uniform on the job, now they get a stern talking to! */ + res = TRUE; + } + + return res; +} + +static int aNRG2_check_upstair(void) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + u16 angle_y = player->actor_class.shape_info.rotation.y; + int res = FALSE; + + if (angle_y > DEG2SHORT_ANGLE2(135.0f) && angle_y < DEG2SHORT_ANGLE2(225.0f) && + player->item_in_front == RSV_POLICE_ITEM_0) { + res = TRUE; + } + + return res; +} + +static void aNRG2_set_force_talk_info(ACTOR* actorx) { + static aNRG2_talk_info_c dt_tbl[] = { + { 0x07EE, &aNRG2_say_hello_talk_proc }, /* 'Well, finally you arrive!' */ + { 0x07EF, &aNRG2_say_hello_talk_proc }, /* 'So you're back again today?' */ + { 0x07EE, &aNRG2_say_hello_sp_talk_proc }, /* 'Well, finally you arrive!' (already wearing work uniform) */ + { 0x0832, &aNRG2_cloth_chk_talk_proc }, /* 'Why did you change out of your uniform, hm?' */ + { 0x0834, (aNRG2_TALK_PROC)&none_proc1 }, /* 'Stop right there!' (Going up to 2nd floor) */ + }; + + aNRG2_talk_info_c* data; + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + int talk_idx; + + /* Figure out our talk state */ + if (aNRG2_cloth_check() == TRUE) { + talk_idx = aNRG2_FORCE_TALK_CLOTH_CHK; // Player changed out of their work uniform + errand_p->info.first_job.wrong_cloth = TRUE; + } else if (aNRG2_check_upstair() == TRUE) { + talk_idx = aNRG2_FORCE_TALK_UPSTAIR_CHK; // Player tried going upstairs in Nookington's + } else { + talk_idx = rcn_guide2->talk_idx; + } + data = &dt_tbl[talk_idx]; + + /* If assigning a new job then set the necessary text strings */ + if (mQst_CheckFirstJobFin(errand_p) == FALSE) { + aNRG2_set_str_proc(); + } + + /* Apply the relevant data */ + mDemo_Set_msg_num(data->msg_no); + mDemo_Set_talk_turn(TRUE); + rcn_guide2->talk_proc = data->talk_proc; +} + +static void aNRG2_force_talk_request(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNRG2_set_force_talk_info); + rcn_guide2->talk_proc_idx = 0; +} + +static void aNRG2_set_norm_talk_info(ACTOR* actorx) { + // clang-format off + static aNRG2_talk_info_c dt_tbl[] = { + { 0x07F1, &aNRG2_job_start_talk_proc }, + { 0x07F6, &aNRG2_job_start_talk_proc }, + { 0x07FB, &aNRG2_job_start_talk_proc }, + { 0x0802, &aNRG2_job_start_talk_proc }, + { 0x080C, &aNRG2_job_start_talk_proc }, + { 0x0830, &aNRG2_job_start_talk_proc }, + { 0x0813, &aNRG2_job_start_talk_proc }, + { 0x0818, &aNRG2_job_start_talk_proc }, + { 0x0821, &aNRG2_job_start_talk_proc }, + { 0x0827, &aNRG2_job_start_talk_proc }, + { 0x07F0, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07F5, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FA, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FA, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FA, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0826, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FA, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0818, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07F3, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x081F, &aNRG2_job_start_talk_proc }, + { 0x0835, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07F8, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FE, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07FF, &aNRG2_demo2_start_wait_talk_proc }, + { 0x0807, &aNRG2_check_more_paper_talk_proc }, + { 0x0808, &aNRG2_decide_new_target_talk_proc }, + { 0x0804, &aNRG2_give_new_paper_talk_proc }, + { 0x080F, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0810, &aNRG2_demo2_start_wait_talk_proc }, + { 0x0815, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0816, &aNRG2_demo3_start_wait_talk_proc }, + { 0x0819, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0822, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x0829, (aNRG2_TALK_PROC)&none_proc1 }, + { 0x07F4, &aNRG2_job_end_talk_proc }, + { 0x07F9, &aNRG2_job_end_talk_proc }, + { 0x0801, &aNRG2_3rd_job_end_talk_proc }, + { 0x080B, &aNRG2_job_end_talk_proc }, + { 0x0812, &aNRG2_job_end_talk_proc }, + { 0x0818, &aNRG2_job_end_talk_proc }, + { 0x081A, &aNRG2_all_job_end_talk_proc }, + { 0x0828, &aNRG2_job_end_talk_proc }, + { 0x0830, &aNRG2_job_end_talk_proc }, + { 0x0836, (aNRG2_TALK_PROC)&none_proc1 }, + }; + // clang-format on + + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + int talk_idx = rcn_guide2->talk_idx; + aNRG2_talk_info_c* data = &dt_tbl[talk_idx]; + mQst_errand_c* errand_p = mQst_GetFirstJobData(); + + if (talk_idx >= aNRG2_NORM_TALK_J1_CONT1 && talk_idx <= aNRG2_NORM_TALK_J11_CONT1) { + rcn_guide2->can_ask_again_flag = TRUE; + } + + if (mQst_CheckFirstJobFin(errand_p) == FALSE) { + aNRG2_set_str_proc(); + } + + mDemo_Set_msg_num(data->msg_no); + rcn_guide2->talk_proc = data->talk_proc; +} + +static void aNRG2_norm_talk_request(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + + if (aNRG2_goods_talk_request(actorx, game) == FALSE) { + if (aNRG2_cloth_check() == TRUE) { + aNRG2_force_talk_request(actorx, game); + } else if (aNRG2_check_upstair() == TRUE) { + aNRG2_force_talk_request(actorx, game); + } else { + mDemo_Request(mDemo_TYPE_TALK, actorx, &aNRG2_set_norm_talk_info); + rcn_guide2->talk_proc_idx = 0; + } + } +} + +static int aNRG2_talk_init(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + + rcn_guide2->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1; + mDemo_Set_ListenAble(); + return TRUE; +} + +static int aNRG2_talk_end_chk(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE2_ACTOR* rcn_guide2 = (NPC_RCN_GUIDE2_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + int res = FALSE; + + (*rcn_guide2->talk_proc)(rcn_guide2); + + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { + aNRG2_setup_think_proc(rcn_guide2, play, rcn_guide2->next_think_idx); + res = TRUE; + } + + return res; +} diff --git a/src/ac_npc_rcn_guide_move.c_inc b/src/ac_npc_rcn_guide_move.c_inc new file mode 100644 index 00000000..8a72a78c --- /dev/null +++ b/src/ac_npc_rcn_guide_move.c_inc @@ -0,0 +1,39 @@ +static int aNRG_set_request_act(NPC_RCN_GUIDE_ACTOR* rcn_guide, u8 act_prio, u8 act_idx, u8 act_type, u16 obj, int x, + int z) { + u16 args[6]; + int res = FALSE; + + if (act_prio >= rcn_guide->npc_class.request.act_priority) { + bzero(args, sizeof(args)); + args[0] = obj; + args[2] = x; + args[3] = z; + rcn_guide->npc_class.request.act_priority = act_prio; + rcn_guide->npc_class.request.act_idx = act_idx; + rcn_guide->npc_class.request.act_type = act_type; + mem_copy((u8*)rcn_guide->npc_class.request.act_args, (u8*)args, sizeof(args)); + res = TRUE; + } + + return res; +} + +static void aNRG_set_house_master_name(int house_idx) { + mMsg_SET_FREE_STR(mMsg_FREE_STR0, Save_Get(private_data[mHS_get_pl_no(house_idx)]).player_ID.player_name, + PLAYER_NAME_LEN); +} + +static void aNRG_set_shop_address(NPC_RCN_GUIDE_ACTOR* rcn_guide) { + static u8 choume_str[] = { 'Q', 'A', 'B', 'C', 'D', 'E', 'F' }; + u8 str[1]; + + /* Set the row (Z) string */ + mMsg_SET_FREE_STR(mMsg_FREE_STR1, &choume_str[rcn_guide->shop_bz], 1); + /* Set the column (X) string */ + mFont_UnintToString(str, sizeof(str), rcn_guide->shop_bx, sizeof(str), TRUE, FALSE, TRUE); + mMsg_SET_FREE_STR(mMsg_FREE_STR2, str, sizeof(str)); +} + +static void aNRG_actor_move(ACTOR* actorx, GAME* game) { + Common_Get(clip).npc_clip->move_proc(actorx, game); +} diff --git a/src/ac_npc_rcn_guide_schedule.c_inc b/src/ac_npc_rcn_guide_schedule.c_inc new file mode 100644 index 00000000..dcfd47e2 --- /dev/null +++ b/src/ac_npc_rcn_guide_schedule.c_inc @@ -0,0 +1,407 @@ +typedef void (*aNRG_THINK_INIT_PROC)(NPC_RCN_GUIDE_ACTOR*, GAME_PLAY*); + +typedef struct npc_rcn_guide_setup_think_s { + aNRG_THINK_PROC think_proc; + aNRG_THINK_INIT_PROC think_init_proc; + aNPC_TALK_REQUEST_PROC talk_request_proc; + u8 talk_idx; + u8 next_think_idx; +} aNRG_setup_think_c; + +static void aNRG_approach(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (rcn_guide->npc_class.action.step == aNPC_ACTION_END_STEP && rcn_guide->npc_class.action.idx == 2) { + aNRG_setup_think_proc(rcn_guide, play, aNRG_THINK_INTRODUCE); + } +} + +static void aNRG_turn(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (rcn_guide->npc_class.action.step == aNPC_ACTION_END_STEP && rcn_guide->npc_class.action.idx == 3) { + aNRG_setup_think_proc(rcn_guide, play, rcn_guide->next_think_idx); + } +} + +static void aNRG_take_with(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (rcn_guide->npc_class.action.step == aNPC_ACTION_END_STEP && rcn_guide->npc_class.action.idx == 2) { + int path = rcn_guide->path; + + if (path >= 1) { + aNRG_setup_think_proc(rcn_guide, play, aNRC_THINK_EXPLAIN); + } else { + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_WALK2, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, 2240, + 1500); + path++; + } + + rcn_guide->path = path; + } +} + +static void aNRG_decide_house_wait(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + int next_think_idx = -1; + + if (GET_PLAYER_ACTOR_NOW()->excute_cancel_wade) { + /* Player is trying to leave the acre, so let them know they can't */ + next_think_idx = aNRC_THINK_STOP_WADE; + } else if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { + ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; + + if (demo_actor != NULL) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)demo_actor; + + switch (intro_demo->player_intro_demo_state) { + case 1: + next_think_idx = aNRC_THINK_BEFORE_OPEN_DOOR_TALK; + break; + case 2: + next_think_idx = aNRC_THINK_BEFORE_OPEN_DOOR_TALK2; + break; + } + } + } + + if (next_think_idx >= 0) { + aNRG_setup_think_proc(rcn_guide, play, next_think_idx); + } +} + +static void aNRG_enter_wait(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { + ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; + + if (demo_actor != NULL) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)demo_actor; + + intro_demo->player_in_house = TRUE; + aNRG_setup_think_proc(rcn_guide, play, aNRC_THINK_WAIT); + } + } +} + +static void aNRG_exit(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + static s16 moveX[] = { 2240, 2240, 2240, 2240 }; + static s16 moveZ[] = { 1900, 1980, 1300, 1220 }; + + if (rcn_guide->npc_class.action.step == aNPC_ACTION_END_STEP) { + f32 posZ = rcn_guide->npc_class.actor_class.world.position.z; + int idx; + + if (posZ < 1540.0f) { + if (posZ <= 1220.0f) { + idx = -1; + } else if (posZ <= 1300.0f) { + idx = 3; + } else { + idx = 2; + } + } else { + if (posZ >= 1980.0f) { + idx = -1; + } else if (posZ >= 1900.0f) { + idx = 1; + } else { + idx = 0; + } + } + + if (idx == -1) { + if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { + ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; + + if (demo_actor != NULL) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)demo_actor; + + intro_demo->rcn_guide_actor_p = NULL; + Actor_delete(&rcn_guide->npc_class.actor_class); + play->submenu.start_refuse = FALSE; + } + } + } else { + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_WALK2, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, moveX[idx], + moveZ[idx]); + } + } +} + +static void aNRG_restart_wait(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + int think_idx; + + if (mPlib_check_player_actor_main_index_OutDoorMove2(&play->game) == FALSE) { + switch (rcn_guide->npc_class.actor_class.actor_specific) { + case 1: + think_idx = aNRC_THINK_DECIDE_HOUSE; + break; + default: + think_idx = aNRC_THINK_RESTART_TALK; + break; + } + + aNRG_setup_think_proc(rcn_guide, play, think_idx); + } +} + +static void aNRG_think_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)nactorx; + + (*rcn_guide->think_proc)(rcn_guide, play); +} + +static void aNRG_think_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)nactorx; + int think_idx; + + switch (rcn_guide->npc_class.actor_class.actor_specific) { + case 1: + case 2: + think_idx = aNRC_THINK_RESTART_WAIT; + break; + default: + think_idx = aNRC_THINK_CALL; + break; + } + + aNRG_setup_think_proc(rcn_guide, play, think_idx); + rcn_guide->npc_class.condition_info.hide_request = FALSE; +} + +static void aNRG_call_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + s16 angle_y = atans_table(980.0f - rcn_guide->npc_class.actor_class.world.position.z, + 2320.0f - rcn_guide->npc_class.actor_class.world.position.x); + + rcn_guide->npc_class.actor_class.shape_info.rotation.y = angle_y; + rcn_guide->npc_class.actor_class.world.angle.y = angle_y; +} + +static void aNRG_approach_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + f32 x; + f32 z; + + /* Player cannot open the start menu */ + play->submenu.start_refuse = TRUE; + /* Make the player stand around waiting */ + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + + if (player != NULL) { + /* Move to a bit below where the player is */ + x = player->actor_class.world.position.x; + z = player->actor_class.world.position.z + 70.0f; + } else { + /* Move to a predefined position -- how would the player even be NULL? */ + x = 2320.0f; + z = 1050.0f; + } + + /* Request action to move to desired location */ + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_WALK2, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, x, z); +} + +static void aNRG_introduce_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_WAIT, aNPC_ACT_TYPE_DEFAULT, aNPC_ACT_OBJ_DEFAULT, 0, 0); +} + +static void aNRG_turn_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + mPlib_request_main_demo_wait_type1(&play->game, 0, NULL); + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_TURN, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, 2240, 1300); +} + +static void aNRG_take_with_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { + ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; + + if (demo_actor != NULL) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)demo_actor; + + intro_demo->talk_flag = TRUE; + } + } + + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_WALK2, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, 2240, 1300); +} + +static void aNRG_before_open_door_talk2_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)Common_Get(clip).demo_clip->demo_class; + + aNRG_set_house_master_name(intro_demo->house_idx); +} + +static void aNRG_exit_turn_init(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + static s16 moveX[] = { 2240, 2240 }; + static s16 moveZ[] = { 1900, 1300 }; + int idx = 0; + + if (rcn_guide->npc_class.actor_class.world.position.z < 1540.0f) { + idx = 1; + } + + aNRG_set_request_act(rcn_guide, 4, aNPC_ACT_TURN, aNPC_ACT_TYPE_TO_POINT, aNPC_ACT_OBJ_DEFAULT, moveX[idx], + moveZ[idx]); + if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) { + ACTOR* demo_actor = (ACTOR*)Common_Get(clip).demo_clip->demo_class; + + if (demo_actor != NULL) { + INTRO_DEMO_ACTOR* intro_demo = (INTRO_DEMO_ACTOR*)demo_actor; + + intro_demo->talk_flag = TRUE; + } + } + rcn_guide->next_think_idx = aNRC_THINK_EXIT; +} + +static void aNRG_setup_think_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play, int think_idx) { + // clang-format off + static aNRG_setup_think_c dt_tbl[] = { + { + (aNRG_THINK_PROC)&none_proc1, + &aNRG_call_init, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_APPROACH, + }, + { + &aNRG_approach, + &aNRG_approach_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_APPROACH, + }, + { + (aNRG_THINK_PROC)&none_proc1, + &aNRG_introduce_init, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_INTRODUCE, + aNRC_THINK_TURN, + }, + { + &aNRG_turn, + &aNRG_turn_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_TAKE_WITH, + }, + { + &aNRG_take_with, + &aNRG_take_with_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_TAKE_WITH, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_EXPLAIN, + aNRC_THINK_DECIDE_HOUSE_WAIT, + }, + { + &aNRG_decide_house_wait, + &aNRG_introduce_init, + &aNRG_norm_talk_request, + aNRG_NORM_TALK_DECIDE_HOUSE, + aNRC_THINK_DECIDE_HOUSE_WAIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_STOP_WADE, + aNRC_THINK_DECIDE_HOUSE_WAIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_BEFORE_OPEN_DOOR_TALK, + aNRC_THINK_ENTER_WAIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + &aNRG_before_open_door_talk2_init, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_BEFORE_OPEN_DOOR2_TALK, + aNRC_THINK_ENTER_WAIT, + }, + { + &aNRG_enter_wait, + (aNRG_THINK_INIT_PROC)&none_proc1, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_ENTER_WAIT, + }, + { + &aNRG_restart_wait, + (aNRG_THINK_INIT_PROC)&none_proc1, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_RESTART_WAIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_HOUSE_TAKEN, + aNRC_THINK_DECIDE_HOUSE_WAIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + &aNRG_force_talk_request, + aNRG_FORCE_TALK_HOUSE_VACANT, + aNRC_THINK_DECIDE_HOUSE_WAIT, + }, + { + &aNRG_turn, + &aNRG_exit_turn_init, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_EXIT_TURN, + }, + { + &aNRG_exit, + (aNRG_THINK_INIT_PROC)&none_proc1, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_EXIT, + }, + { + (aNRG_THINK_PROC)&none_proc1, + (aNRG_THINK_INIT_PROC)&none_proc1, + (aNPC_TALK_REQUEST_PROC)&none_proc1, + aNRG_FORCE_TALK_CALL, + aNRC_THINK_WAIT, + }, + }; + // clang-format on + aNRG_setup_think_c* think_data = &dt_tbl[think_idx]; + + rcn_guide->think_idx = think_idx; + rcn_guide->think_proc = think_data->think_proc; + rcn_guide->npc_class.talk_info.talk_request_proc = think_data->talk_request_proc; + rcn_guide->talk_idx = think_data->talk_idx; + rcn_guide->next_think_idx = think_data->next_think_idx; + (*think_data->think_init_proc)(rcn_guide, play); +} + +static void aNRG_think_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int type) { + static aNPC_SUB_PROC think_proc[] = { &aNRG_think_init_proc, &aNRG_think_main_proc }; + + (*think_proc[type])(nactorx, play); +} + +static void aNRG_schedule_init_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + nactorx->think.think_proc = &aNRG_think_proc; + Common_Get(clip).npc_clip->think_proc(nactorx, play, aNPC_THINK_SPECIAL, 0); +} + +static void aNRG_schedule_main_proc(NPC_ACTOR* nactorx, GAME_PLAY* play) { + int res = Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 1); + + if (res == 0) { + Common_Get(clip).npc_clip->think_proc(nactorx, play, -1, 2); + } +} + +static void aNRG_schedule_proc(NPC_ACTOR* nactorx, GAME_PLAY* play, int type) { + static aNPC_SUB_PROC sche_proc[] = { &aNRG_schedule_init_proc, &aNRG_schedule_main_proc }; + + (*sche_proc[type])(nactorx, play); +} diff --git a/src/ac_npc_rcn_guide_talk.c_inc b/src/ac_npc_rcn_guide_talk.c_inc new file mode 100644 index 00000000..27277609 --- /dev/null +++ b/src/ac_npc_rcn_guide_talk.c_inc @@ -0,0 +1,170 @@ +enum { + aNRG_TALK_DEMAND_PAYMENT, + aNRG_TALK_MENU_OPEN_WAIT, + aNRG_TALK_MENU_CLOSE_WAIT, + aNRG_TALK_DEMO_START_WAIT, + aNRG_TALK_DEMO_END_WAIT, + aNRG_TALK_FINISHED, + + aNRG_TALK_NUM +}; + +static void aNRG_demand_payment_change_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, int talk_proc_idx); + +static void aNRG_demand_payment_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + u16 order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + + if (order != 0) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1(); + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_MENU_OPEN_WAIT); + } +} + +static void aNRG_menu_open_wait_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (mMsg_CHECK_MAIN_WAIT() == TRUE) { + Submenu* submenu = &play->submenu; + int idx = mPr_GetPossessionItemIdxWithCond(Now_Private, ITM_MONEY_1000, mPr_ITEM_COND_QUEST); + + mSM_open_submenu(submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_QUEST, idx); + mMsg_SET_LOCKCONTINUE(); + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_MENU_CLOSE_WAIT); + } +} + +static void aNRG_menu_close_wait_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + Submenu* submenu = &play->submenu; + + if (submenu->open_flag == FALSE) { + if (submenu->item_p->item == EMPTY_NO) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_request_main_appear_wait_type1(msg_p); + mMsg_ChangeMsgData(msg_p, 0x07EB); /* 'You better pay it all back, or I will have to...' */ + mMsg_Set_ForceNext(msg_p); + mMsg_Unset_LockContinue(msg_p); + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_DEMAND_PAYMENT); /* Go back to first state */ + } else { + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_DEMO_START_WAIT); /* Handed over the Bells */ + } + } +} + +static void aNRG_demo_start_wait_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (Common_Get(clip).handOverItem_clip->request_mode == aHOI_REQUEST_TRANS_WAIT) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 1, 3); + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_DEMO_END_WAIT); + } +} + +static void aNRG_demo_end_wait_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, GAME_PLAY* play) { + if (Common_Get(clip).handOverItem_clip->master_actor == NULL) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + aNRG_set_shop_address(rcn_guide); + rcn_guide->next_think_idx = aNRC_THINK_EXIT_TURN; + mMsg_request_main_appear_wait_type1(msg_p); + mMsg_Set_ForceNext(msg_p); + aNRG_demand_payment_change_talk_proc(rcn_guide, aNRG_TALK_FINISHED); + } +} + +static void aNRG_demand_payment_change_talk_proc(NPC_RCN_GUIDE_ACTOR* rcn_guide, int talk_proc_idx) { + // clang-format off + static aNRG_TALK_PROC talk_proc[] = { + &aNRG_demand_payment_talk_proc, + &aNRG_menu_open_wait_talk_proc, + &aNRG_menu_close_wait_talk_proc, + &aNRG_demo_start_wait_talk_proc, + &aNRG_demo_end_wait_talk_proc, + (aNRG_TALK_PROC)&none_proc1, + }; + // clang-format on + + rcn_guide->talk_proc = talk_proc[talk_proc_idx]; +} + +static void aNRG_set_force_talk_info(ACTOR* actorx) { + // clang-format off + static aNRG_talk_data_c dt_tbl[] = { + { 0x07DE, TRUE, CAMERA2_PROCESS_NORMAL, TRUE, (aNRG_TALK_PROC)&none_proc1 }, /* Step down from train station */ + { 0x07DF, TRUE, CAMERA2_PROCESS_TALK, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Ask about call from Rover */ + { 0x07E1, TRUE, CAMERA2_PROCESS_TALK, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Show houses */ + { 0x07E2, TRUE, CAMERA2_PROCESS_NORMAL, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Player tries leaving acre */ + { 0x07E4, FALSE, CAMERA2_PROCESS_NORMAL, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Player enters empty house */ + { 0x07E3, FALSE, CAMERA2_PROCESS_NORMAL, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Player enters taken house */ + { 0x07E5, TRUE, CAMERA2_PROCESS_TALK, TRUE, (aNRG_TALK_PROC)&none_proc1 }, /* Player exits taken house */ + { 0x07E6, TRUE, CAMERA2_PROCESS_TALK, TRUE, &aNRG_demand_payment_talk_proc }, /* Player exits empty house */ + }; + // clang-format on + + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + int talk_idx = rcn_guide->talk_idx; + aNRG_talk_data_c* data = &dt_tbl[talk_idx]; + + mDemo_Set_msg_num(data->msg_no); + mDemo_Set_talk_turn(data->turn_flag); + mDemo_Set_camera(data->camera_type); + rcn_guide->talk_proc_idx = aNRG_TALK_DEMAND_PAYMENT; + rcn_guide->talk_proc = data->talk_proc; + if (data->melody_flag == TRUE) { + rcn_guide->npc_class.talk_info.melody_inst = rcn_guide->melody_copy; + } else { + rcn_guide->npc_class.talk_info.melody_inst = 0; + } + + if (talk_idx == 0) { + mBGMPsComp_make_ps_quiet(0); + } +} + +static void aNRG_force_talk_request(ACTOR* actorx, GAME* game) { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aNRG_set_force_talk_info); +} + +static void aNRG_set_norm_talk_info(ACTOR* actorx) { + static aNRG_talk_data_c dt_tbl[] = { + { 0x0820, TRUE, CAMERA2_PROCESS_TALK, FALSE, (aNRG_TALK_PROC)&none_proc1 }, /* Normal talk about houses */ + }; + + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + aNRG_talk_data_c* data = &dt_tbl[rcn_guide->talk_idx]; + + mDemo_Set_msg_num(data->msg_no); + mDemo_Set_talk_turn(data->turn_flag); + mDemo_Set_camera(data->camera_type); + rcn_guide->talk_proc_idx = aNRG_TALK_DEMAND_PAYMENT; + rcn_guide->talk_proc = data->talk_proc; + if (data->melody_flag == TRUE) { + rcn_guide->npc_class.talk_info.melody_inst = rcn_guide->melody_copy; + } else { + rcn_guide->npc_class.talk_info.melody_inst = 0; + } +} + +static void aNRG_norm_talk_request(ACTOR* actorx, GAME* game) { + mDemo_Request(mDemo_TYPE_TALK, actorx, &aNRG_set_norm_talk_info); +} + +static int aNRG_talk_init(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + + rcn_guide->npc_class.talk_info.talk_request_proc = (aNPC_TALK_REQUEST_PROC)&none_proc1; + mDemo_Set_ListenAble(); + return TRUE; +} + +static int aNRG_talk_end_chk(ACTOR* actorx, GAME* game) { + NPC_RCN_GUIDE_ACTOR* rcn_guide = (NPC_RCN_GUIDE_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + int res = FALSE; + + (*rcn_guide->talk_proc)(rcn_guide, play); + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { + /* We're done talking so move onto the next schedule step */ + aNRG_setup_think_proc(rcn_guide, play, rcn_guide->next_think_idx); + res = TRUE; + } + + return res; +} diff --git a/src/ac_npc_rtc.c b/src/ac_npc_rtc.c index 36069570..bf49f9d4 100644 --- a/src/ac_npc_rtc.c +++ b/src/ac_npc_rtc.c @@ -1,4 +1,5 @@ #include "ac_npc_rtc.h" + #include "m_name_table.h" #include "m_common_data.h" #include "m_player_lib.h" @@ -10,49 +11,96 @@ #include "boot.h" #include "m_string.h" #include "libultra/libultra.h" +#include "m_timeIn_ovl.h" -extern void aNRTC_actor_ct(ACTOR*, GAME*); -extern void aNRTC_actor_dt(ACTOR*, GAME*); -extern void aNRTC_actor_init(ACTOR*, GAME*); -extern void aNRTC_actor_save(ACTOR*, GAME*); +enum { + aNRTC_THINK_START, + aNRTC_THINK_TITLE, + aNRTC_THINK_DOOR, + aNRTC_THINK_CHECK, + aNRTC_THINK_IPMENU, + aNRTC_THINK_WAIT, -ACTOR_PROFILE Npc_Rtc_Profile = { - mAc_PROFILE_NPC_RTC, ACTOR_PART_NPC, ACTOR_STATE_NONE, SP_NPC_RTC, ACTOR_OBJ_BANK_KEEP, sizeof(NPCRTC_ACTOR), - aNRTC_actor_ct, aNRTC_actor_dt, aNRTC_actor_init, mActor_NONE_PROC1, aNRTC_actor_save, + aNRTC_THINK_NUM }; -extern void aNRTC_actor_move(ACTOR*, GAME*); -extern void aNRTC_actor_draw(ACTOR*, GAME*); +enum { + aNRTC_TALK_BREAK_DATA, + aNRTC_TALK_BREAK_DATA2, + aNRTC_TALK_RTC_ERR, + aNRTC_TALK_TIMER_OPEN_MSG_WAIT, + aNRTC_TALK_TIMER_OPEN_WAIT, + aNRTC_TALK_TIMER_CLOSE_WAIT, + aNRTC_TALK_DELETE_BF, + aNRTC_TALK_DELETE, + aNRTC_TALK_FORMAT_CHK, + aNRTC_TALK_FORMAT, + aNRTC_TALK_END, -extern int aNRTC_talk_init(ACTOR*, GAME*); -extern int aNRTC_talk_end_chk(ACTOR*, GAME*); + aNRTC_TALK_NUM +}; -extern void aNRTC_schedule_proc(NPC_ACTOR*, GAME_PLAY*, int); +static void aNRTC_actor_ct(ACTOR*, GAME*); +static void aNRTC_actor_dt(ACTOR*, GAME*); +static void aNRTC_actor_init(ACTOR*, GAME*); +static void aNRTC_actor_save(ACTOR*, GAME*); -extern void aNRTC_talk_request(ACTOR* actor, GAME*); +// clang-format off +ACTOR_PROFILE Npc_Rtc_Profile = { + mAc_PROFILE_NPC_RTC, + ACTOR_PART_NPC, + ACTOR_STATE_NONE, + SP_NPC_RTC, + ACTOR_OBJ_BANK_KEEP, + sizeof(NPC_RTC_ACTOR), + &aNRTC_actor_ct, + &aNRTC_actor_dt, + &aNRTC_actor_init, + mActor_NONE_PROC1, + &aNRTC_actor_save, +}; -extern void aNRTC_change_talk_proc(NPCRTC_ACTOR* rtc, int idx); +static void aNRTC_actor_move(ACTOR*, GAME*); +static void aNRTC_actor_draw(ACTOR*, GAME*); -u8 aNRTC_sound_mode[] = { 0x00, 0x01, 0x02, 0x00 }; -u8 aNRTC_voice_mode[] = { 0x00, 0x01, 0x02, 0x00 }; +static int aNRTC_talk_init(ACTOR*, GAME*); +static int aNRTC_talk_end_chk(ACTOR*, GAME*); -void aNRTC_actor_ct(ACTOR* actor, GAME* game) { - static aNPC_ct_data_c ct_data = { &aNRTC_actor_move, &aNRTC_actor_draw, 5, mActor_NONE_PROC1, - &aNRTC_talk_init, &aNRTC_talk_end_chk, 0 }; +static void aNRTC_schedule_proc(NPC_ACTOR*, GAME_PLAY*, int); - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; +static void aNRTC_talk_request(ACTOR* actor, GAME*); + +static void aNRTC_change_talk_proc(NPC_RTC_ACTOR* rtc, int idx); + +static u8 aNRTC_sound_mode[] = { Config_SOUND_MODE_0, Config_SOUND_MODE_1, Config_SOUND_MODE_2 }; +static u8 aNRTC_voice_mode[] = { Config_VOICE_MODE_ANIMALESE, Config_VOICE_MODE_CLICK, Config_VOICE_MODE_SILENT }; + +static void aNRTC_actor_ct(ACTOR* actor, GAME* game) { + // clang-format off + static aNPC_ct_data_c ct_data = { + &aNRTC_actor_move, + &aNRTC_actor_draw, + 5, + mActor_NONE_PROC1, + &aNRTC_talk_init, + &aNRTC_talk_end_chk, + 0, + }; + // clang-format on + + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; PLAYER_ACTOR* player; xyz_t center; xyz_t eye; if (Common_Get(clip.npc_clip)->birth_check_proc(actor, game) == TRUE) { - rtc->npc_class.schedule.schedule_proc = aNRTC_schedule_proc; + rtc->npc_class.schedule.schedule_proc = &aNRTC_schedule_proc; Common_Get(clip.npc_clip)->ct_proc(actor, game, &ct_data); actor->status_data.weight = MASSTYPE_IMMOVABLE; mPlib_request_main_demo_wait_type1(game, 0, NULL); player = GET_PLAYER_ACTOR(play); if (player != NULL) { - player->actor_class.state_bitfield |= 0x80; + player->actor_class.state_bitfield |= ACTOR_STATE_INVISIBLE; } center.x = 100.0f; @@ -70,35 +118,36 @@ void aNRTC_actor_ct(ACTOR* actor, GAME* game) { rtc->npc_class.condition_info.hide_request = 0; rtc->npc_class.talk_info.default_act = 9; rtc->npc_class.talk_info.melody_inst = 0; - rtc->unk9A0 = 0; + rtc->talk_flag = FALSE; } } -void aNRTC_actor_save(ACTOR* actor, GAME* game) { +static void aNRTC_actor_save(ACTOR* actor, GAME* game) { Common_Get(clip.npc_clip)->save_proc(actor, game); } -void aNRTC_actor_dt(ACTOR* actor, GAME* game) { +static void aNRTC_actor_dt(ACTOR* actor, GAME* game) { Common_Get(clip.npc_clip)->dt_proc(actor, game); } -void aNRTC_actor_init(ACTOR* actor, GAME* game) { +static void aNRTC_actor_init(ACTOR* actor, GAME* game) { Common_Get(clip.npc_clip)->init_proc(actor, game); } -void aNRTC_actor_move(ACTOR* actor, GAME* game) { - StaffRoll info; +static void aNRTC_actor_move(ACTOR* actor, GAME* game) { + StaffRollInfo_c info; f32 val = 0.5f; u8 arm_flag = TRUE; - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; - if (rtc->npc_class.draw.animation_id == 0x76) { + if (rtc->npc_class.draw.animation_id == aNPC_ANIM_4HAKU_E1) { sAdos_GetStaffRollInfo(&info); - if (info.unk0 != 4) { + if (info.staffroll_part != STAFFROLL_PART_FINISH) { val = 0.0f; arm_flag = FALSE; - rtc->npc_class.draw.main_animation.keyframe.frame_control.current_frame = 1.0f + (64.0f * (f32)info.unk8); + rtc->npc_class.draw.main_animation.keyframe.frame_control.current_frame = + 1.0f + (64.0f * (f32)info.percent); } } @@ -108,10 +157,9 @@ void aNRTC_actor_move(ACTOR* actor, GAME* game) { mSC_change_player_freeze(play); } -void aNRTC_actor_draw(ACTOR* actor, GAME* game) { +static void aNRTC_actor_draw(ACTOR* actor, GAME* game) { Common_Get(clip.npc_clip)->draw_proc(actor, game); } #include "../src/ac_npc_rtc_think.c.inc" - #include "../src/ac_npc_rtc_talk.c.inc" diff --git a/src/ac_npc_rtc_talk.c.inc b/src/ac_npc_rtc_talk.c.inc index fb990e47..a0725679 100644 --- a/src/ac_npc_rtc_talk.c.inc +++ b/src/ac_npc_rtc_talk.c.inc @@ -1,69 +1,67 @@ static void aNRTC_set_slot_name(int slot_id, int str_no) { u8 name[mIN_ITEM_NAME_LEN]; - mString_Load_StringFromRom(name, sizeof(name), 0x6CD + slot_id); - mMsg_Set_free_str(mMsg_Get_base_window_p(), str_no, name, sizeof(name)); + mString_Load_StringFromRom(name, sizeof(name), 0x06CD + slot_id); + mMsg_SET_FREE_STR(str_no, name, sizeof(name)); } -static void aNRTC_rtc_err(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int num; - - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) { - num = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); - switch (num) { - case 0: - aNRTC_change_talk_proc(rtc, 3); +static void aNRTC_rtc_err(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_TIMER_OPEN_MSG_WAIT); break; - case 1: - rtc->unk9A8 = 1; - aNRTC_change_talk_proc(rtc, 10); + case mChoice_CHOICE1: + rtc->think_idx = aNRTC_THINK_TITLE; + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); break; } } } -static void aNRTC_timer_open_msg_wait(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(4, 9); +static void aNRTC_timer_open_msg_wait(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + int order = mDemo_Get_OrderValue(mDemo_TYPE_4, 9); if (order == 1) { - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) { - mDemo_Set_OrderValue(4, 9, 0); - aNRTC_change_talk_proc(rtc, 4); - mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()); + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + mDemo_Set_OrderValue(mDemo_TYPE_4, 9, 0); + aNRTC_change_talk_proc(rtc, aNRTC_TALK_TIMER_OPEN_WAIT); + mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1(); } } } -static void aNRTC_timer_open_wait(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { +static void aNRTC_timer_open_wait(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { Submenu* submenu = &play->submenu; - if (mMsg_Check_main_wait(mMsg_Get_base_window_p()) == 1) { - aNRTC_change_talk_proc(rtc, 5); - mSM_open_submenu(submenu, 3, 1, 0); - mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p()); + + if (mMsg_CHECK_MAIN_WAIT() == TRUE) { + aNRTC_change_talk_proc(rtc, aNRTC_THINK_WAIT); + mSM_open_submenu(submenu, mSM_OVL_TIMEIN, mTI_OVL_OPEN_INITIAL, 0); + mMsg_REQUEST_MAIN_APPEAR_WAIT_TYPE1(); } } -static void aNRTC_timer_close_wait(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { +static void aNRTC_timer_close_wait(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { if (play->submenu.open_flag == FALSE) { - if (mMsg_Check_not_series_main_wait(mMsg_Get_base_window_p()) == 1) { - mMsg_Set_ForceNext(mMsg_Get_base_window_p()); - rtc->unk9A8 = 2; - aNRTC_change_talk_proc(rtc, 0xA); + if (mMsg_CHECK_NOT_SERIES_MAIN_WAIT() == TRUE) { + mMsg_SET_FORCENEXT(); + rtc->think_idx = aNRTC_THINK_DOOR; + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); } } } -static void aNRTC_delete_bf(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(4, 9); +static void aNRTC_delete_bf(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + int order = mDemo_Get_OrderValue(mDemo_TYPE_4, 9); - if ((mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) && (order != 0)) { + if ((mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) && (order != 0)) { - mMsg_Set_LockContinue(mMsg_Get_base_window_p()); - aNRTC_change_talk_proc(rtc, 7); + mMsg_SET_LOCKCONTINUE(); + aNRTC_change_talk_proc(rtc, aNRTC_TALK_DELETE); } } -static void aNRTC_delete(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { +static void aNRTC_delete(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { mMsg_Window_c* window; int card; int card_ret; @@ -73,258 +71,251 @@ static void aNRTC_delete(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { switch (card_ret) { case 0: - rtc->unk9A8 = 3; - mMsg_Set_continue_msg_num(window, 0x9DE); + rtc->think_idx = aNRTC_THINK_CHECK; + mMsg_Set_continue_msg_num(window, 0x09DE); break; case 22: case 2: - rtc->unk9A8 = 1; - mMsg_Set_continue_msg_num(window, 0x9DF); + rtc->think_idx = aNRTC_THINK_TITLE; + mMsg_Set_continue_msg_num(window, 0x09DF); break; case 25: return; case 15: - rtc->unk9A8 = 3; - mMsg_Set_continue_msg_num(window, 0x9E1); + rtc->think_idx = aNRTC_THINK_CHECK; + mMsg_Set_continue_msg_num(window, 0x09E1); break; default: - rtc->unk9A8 = 1; - mMsg_Set_continue_msg_num(window, 0x9DF); + rtc->think_idx = aNRTC_THINK_TITLE; + mMsg_Set_continue_msg_num(window, 0x09DF); break; } - if (card_ret != 0x19) { + if (card_ret != 25) { mMsg_Unset_LockContinue(window); - aNRTC_change_talk_proc(rtc, 10); + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); } } -static void aNRTC_format_chk(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int num; - - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) { - aNRTC_change_talk_proc(rtc, 0xA); - num = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); - switch (num) { - case 0: - rtc->unk9A8 = 3; +static void aNRTC_format_chk(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + rtc->think_idx = aNRTC_THINK_CHECK; break; - case 1: - rtc->unk9A8 = 2; + case mChoice_CHOICE1: + rtc->think_idx = aNRTC_THINK_DOOR; break; - case 2: - rtc->unk9A8 = 1; + case mChoice_CHOICE2: + rtc->think_idx = aNRTC_THINK_TITLE; break; - case 3: - rtc->unk9A8 = 3; - aNRTC_change_talk_proc(rtc, 9); + case mChoice_CHOICE3: + rtc->think_idx = aNRTC_THINK_CHECK; + aNRTC_change_talk_proc(rtc, aNRTC_TALK_FORMAT); break; } } } -static void aNRTC_format(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { +static void aNRTC_format(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { int order; mMsg_Window_c* window; - int card_ret; window = mMsg_Get_base_window_p(); - order = mDemo_Get_OrderValue(4, 9); + order = mDemo_Get_OrderValue(mDemo_TYPE_4, 9); switch (order) { case 1: - mDemo_Set_OrderValue(4, 9, 2); + mDemo_Set_OrderValue(mDemo_TYPE_4, 9, 2); mMsg_Set_LockContinue(window); break; case 2: - card_ret = mCD_card_format_bg(Common_Get(memcard_slot)); - switch (card_ret) { - case 1: - mMsg_Set_continue_msg_num(window, 0x9E9); + switch (mCD_card_format_bg(Common_Get(memcard_slot))) { + case mCD_RESULT_SUCCESS: + mMsg_Set_continue_msg_num(window, 0x09E9); mMsg_Unset_LockContinue(window); - aNRTC_change_talk_proc(rtc, 0xA); - rtc->unk9A8 = 3; - mDemo_Set_OrderValue(4, 9, 0); + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); + rtc->think_idx = aNRTC_THINK_CHECK; + mDemo_Set_OrderValue(mDemo_TYPE_4, 9, 0); break; - case -1: + case mCD_RESULT_ERROR: mMsg_Unset_LockContinue(window); - aNRTC_change_talk_proc(rtc, 0xA); - rtc->unk9A8 = 1; - mMsg_Set_continue_msg_num(window, 0x9E7); - mDemo_Set_OrderValue(4, 9, 0); - case 0: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); + rtc->think_idx = aNRTC_THINK_TITLE; + mMsg_Set_continue_msg_num(window, 0x09E7); + mDemo_Set_OrderValue(mDemo_TYPE_4, 9, 0); + case mCD_RESULT_BUSY: break; } break; } } -static void aNRTC_break_data(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int num; - - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) { - aNRTC_change_talk_proc(rtc, 0xA); - num = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); - switch (num) { - case 0: - rtc->unk9A8 = 3; +static void aNRTC_break_data(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + rtc->think_idx = aNRTC_THINK_CHECK; break; - case 1: - aNRTC_change_talk_proc(rtc, 6); + case mChoice_CHOICE1: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_DELETE_BF); break; } } } -static void aNRTC_break_data_2(NPCRTC_ACTOR* rtc, GAME_PLAY* play) { - int num; - - if (mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == 1) { - aNRTC_change_talk_proc(rtc, 0xA); - num = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); - switch (num) { - case 0: - rtc->unk9A8 = 3; +static void aNRTC_break_data_2(NPC_RTC_ACTOR* rtc, GAME_PLAY* play) { + if (mMsg_CHECK_MAINNORMALCONTINUE() == TRUE) { + aNRTC_change_talk_proc(rtc, aNRTC_TALK_END); + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + rtc->think_idx = aNRTC_THINK_CHECK; break; - case 1: - rtc->unk9A8 = 2; + case mChoice_CHOICE1: + rtc->think_idx = aNRTC_THINK_DOOR; break; - case 2: - rtc->unk9A8 = 1; + case mChoice_CHOICE2: + rtc->think_idx = aNRTC_THINK_TITLE; break; - case 3: - rtc->unk9A8 = 4; + case mChoice_CHOICE3: + rtc->think_idx = aNRTC_THINK_IPMENU; break; } } } -static void aNRTC_change_talk_proc(NPCRTC_ACTOR* rtc, int idx) { - static aNPCRTC_SUB_PROC process[] = { - aNRTC_break_data, - aNRTC_break_data_2, - aNRTC_rtc_err, - aNRTC_timer_open_msg_wait, - aNRTC_timer_open_wait, - aNRTC_timer_close_wait, - aNRTC_delete_bf, - aNRTC_delete, - aNRTC_format_chk, - aNRTC_format, - (aNPCRTC_SUB_PROC)none_proc1, +static void aNRTC_change_talk_proc(NPC_RTC_ACTOR* rtc, int idx) { + // clang-format off + static aNRTC_PROC process[] = { + &aNRTC_break_data, + &aNRTC_break_data_2, + &aNRTC_rtc_err, + &aNRTC_timer_open_msg_wait, + &aNRTC_timer_open_wait, + &aNRTC_timer_close_wait, + &aNRTC_delete_bf, + &aNRTC_delete, + &aNRTC_format_chk, + &aNRTC_format, + (aNRTC_PROC)&none_proc1, }; - rtc->unk994 = idx; - rtc->unk99C = process[idx]; + // clang-format on + + rtc->talk_idx = idx; + rtc->talk_proc = process[idx]; } static void aNRTC_set_talk_info_talk_request() { int msg; switch (Common_Get(save_error_type)) { - case 0: - msg = 0x9CC; + case mFRm_ERROR_BAD_RTC: + msg = 0x09CC; break; - case 2: - msg = 0x9D1; + case mFRm_ERROR_DATA_CORRUPTED: + msg = 0x09D1; break; - case 6: - msg = 0x9DA; + case mFRm_ERROR_MEMCARD_INVALID: + msg = 0x09DA; break; - case 7: - msg = 0x9D8; + case mFRm_ERROR_MEMCARD_NO_SPACE: + msg = 0x09D8; break; - case 9: - msg = 0x9D4; + case mFRm_ERROR_NO_MEMCARD: + msg = 0x09D4; break; - case 1: - msg = 0x9E2; + case mFRm_ERROR_MEMCARD_TRAVELDATA_CONFLICT: + msg = 0x09E2; break; - case 4: - msg = 0x9E4; + case mFRm_ERROR_MEMCARD_DAMAGED: + msg = 0x09E4; break; - case 3: - msg = 0x9E3; + case mFRm_ERROR_MEMCARD_NO_FILES: + msg = 0x09E3; break; - case 5: - msg = 0x9E5; + case mFRm_ERROR_MEMCARD_FORMAT: + msg = 0x09E5; break; - case 8: - msg = 0x9E6; + case mFRm_ERROR_NOT_MEMCARD: + msg = 0x09E6; break; default: - msg = 0x9D4; + msg = 0x09D4; break; } + mDemo_Set_msg_num(msg); - mDemo_Set_camera(1); + mDemo_Set_camera(CAMERA2_PROCESS_NORMAL); } static void aNRTC_talk_request(ACTOR* actor, GAME* game) { - mDemo_Request(8, actor, aNRTC_set_talk_info_talk_request); + mDemo_Request(mDemo_TYPE_SPEAK, actor, &aNRTC_set_talk_info_talk_request); } static int aNRTC_talk_init(ACTOR* actor, GAME* game) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; mDemo_Set_ListenAble(); aNRTC_set_slot_name(Common_Get(memcard_slot), mMsg_FREE_STR4); switch (Common_Get(save_error_type)) { - case 0: - aNRTC_change_talk_proc(rtc, 2); + case mFRm_ERROR_BAD_RTC: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_RTC_ERR); break; - case 2: - aNRTC_change_talk_proc(rtc, 0); + case mFRm_ERROR_DATA_CORRUPTED: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_BREAK_DATA); break; - case 5: - aNRTC_change_talk_proc(rtc, 8); + case mFRm_ERROR_MEMCARD_FORMAT: + aNRTC_change_talk_proc(rtc, aNRTC_TALK_FORMAT_CHK); break; default: - aNRTC_change_talk_proc(rtc, 1); + aNRTC_change_talk_proc(rtc, aNRTC_TALK_BREAK_DATA2); break; } rtc->npc_class.talk_info.talk_request_proc = mActor_NONE_PROC1; - mMsg_Set_idling_req(mMsg_Get_base_window_p()); - return 1; + mMsg_SET_IDLING_REQ(); + return TRUE; } static int aNRTC_talk_end_chk(ACTOR* actor, GAME* game) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; - int res = 0; + int res = FALSE; mMsg_Window_c* window; window = mMsg_Get_base_window_p(); - rtc->unk99C(rtc, play); + (*rtc->talk_proc)(rtc, play); - if (mMsg_Check_idling_now(window) == 1) { + if (mMsg_Check_idling_now(window) == TRUE) { mMsg_request_main_disappear_wait_type1(window); aNRTC_think_init_proc(&rtc->npc_class, play); - rtc->unk9A0 = 0; - res = 1; - rtc->unk9B4 = 0x32; - rtc->unk9B0 = 0x4B; + rtc->talk_flag = FALSE; + res = TRUE; + rtc->bgm_timer = 50; + rtc->fade_timer = 75; bzero(&play->fade_color_value, sizeof(rgba8888_t)); } else { - int unk9AC; - unk9AC = rtc->unk9AC; - if ((mMsg_Check_MainNormal(mMsg_Get_base_window_p()) == 1) || - (((mChoice_check_main_normal(mChoice_Get_base_window_p()) == 1) != 0))) { - unk9AC++; - if (unk9AC > 0x258) { - unk9AC = 0x258; + int counter = rtc->counter; + + if ((mMsg_CHECK_MAINNORMAL() == TRUE) || (mChoice_CHECK_MAIN_NORMAL() == TRUE)) { + counter++; + if (counter > 600) { + counter = 600; } } else { - unk9AC = 0; + counter = 0; } - if (mDemo_Get_OrderValue(4, 0) == 0) { - if (unk9AC >= 0x258) { - if (rtc->npc_class.draw.animation_id != 0x76) { - mDemo_Set_OrderValue(4, 0, 0xFF); + + if (mDemo_Get_OrderValue(mDemo_TYPE_4, 0) == 0) { + if (counter >= 600) { + if (rtc->npc_class.draw.animation_id != aNPC_ANIM_4HAKU_E1) { + mDemo_Set_OrderValue(mDemo_TYPE_4, 0, 0xFF); } - } else if (rtc->npc_class.draw.animation_id == 0x76) { - mDemo_Set_OrderValue(4, 0, 0xFD); + } else if (rtc->npc_class.draw.animation_id == aNPC_ANIM_4HAKU_E1) { + mDemo_Set_OrderValue(mDemo_TYPE_4, 0, 0xFD); } } - rtc->unk9AC = unk9AC; + rtc->counter = counter; } return res; } diff --git a/src/ac_npc_rtc_think.c.inc b/src/ac_npc_rtc_think.c.inc index 0a879161..f4b8fa58 100644 --- a/src/ac_npc_rtc_think.c.inc +++ b/src/ac_npc_rtc_think.c.inc @@ -2,30 +2,40 @@ static void aNRTC_talk_request(ACTOR* actor, GAME*); static void aNRTC_think_start(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; - if (rtc->unk9B8 > 0) { - rtc->unk9B8--; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; + if (rtc->first_talk_timer > 0) { + rtc->first_talk_timer--; } else { - rtc->unk9A0 = 1; - rtc->npc_class.talk_info.talk_request_proc = aNRTC_talk_request; - rtc->npc_class.condition_info.demo_flg = 0x100; + rtc->talk_flag = TRUE; + rtc->npc_class.talk_info.talk_request_proc = &aNRTC_talk_request; + rtc->npc_class.condition_info.demo_flg = aNPC_COND_DEMO_SKIP_HEAD_LOOKAT; } } static void aNRTC_think_title(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; play->fb_wipe_type = 3; play->fb_fade_type = 4; - mPlib_request_main_invade_type1(play); + mPlib_request_main_invade_type1((GAME*)play); Actor_info_save_actor(play); - rtc->unk9A8 = 5; + rtc->think_idx = aNRTC_THINK_WAIT; } -Door_data_c door_data = { SCENE_PLAYERSELECT, 4, FALSE, 0, { 100, 0, 120 }, EMPTY_NO, 3, { 0, 0, 0 } }; +// clang-format off +static Door_data_c door_data = { + SCENE_PLAYERSELECT, + mSc_DIRECT_NORTH, + FALSE, + 0, + { 100, 0, 120 }, + EMPTY_NO, + 3, + { 0, 0, 0 }, +}; +// clang-format on static void aNRTC_think_door(NPC_ACTOR* actor, GAME_PLAY* play) { - if (sAdo_BgmFadeoutCheck() != 0) { goto_other_scene(play, &door_data, 1); Common_Set(transition.wipe_type, 3); @@ -33,54 +43,61 @@ static void aNRTC_think_door(NPC_ACTOR* actor, GAME_PLAY* play) { } static void aNRTC_think_check(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; if (sAdo_BgmFadeoutCheck() != 0) { goto_other_scene(play, &door_data, 1); mCD_ReCheckLoadLand(play); Common_Set(transition.wipe_type, 3); - rtc->unk9A8 = 5; + rtc->think_idx = aNRTC_THINK_WAIT; } } static void aNRTC_think_ipmenu(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; if (sAdo_BgmFadeoutCheck() != 0) { HotResetIplMenu(); - rtc->unk9A8 = 5; + rtc->think_idx = aNRTC_THINK_WAIT; } } -aNPC_SUB_PROC aNRTC_proc_table[] = { - aNRTC_think_start, aNRTC_think_title, aNRTC_think_door, - aNRTC_think_check, aNRTC_think_ipmenu, (aNPC_SUB_PROC)mActor_NONE_PROC1, +// clang-format off +static aNPC_SUB_PROC aNRTC_proc_table[] = { + &aNRTC_think_start, + &aNRTC_think_title, + &aNRTC_think_door, + &aNRTC_think_check, + &aNRTC_think_ipmenu, + (aNPC_SUB_PROC)mActor_NONE_PROC1, }; +// clang-format on static void aNRTC_think_main_proc(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; - if (rtc->unk9B0 > 0) { - rtc->unk9B0--; - if (rtc->unk9B0 == 0) { + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; + if (rtc->fade_timer > 0) { + rtc->fade_timer--; + if (rtc->fade_timer == 0) { play->fade_color_value.c.a = -1; - } else if (rtc->unk9B0 < 25) { - play->fade_color_value.c.a = 255.0f * (1.0f - (0.04f * rtc->unk9B0)); + } else if (rtc->fade_timer < 25) { + play->fade_color_value.c.a = 255.0f * (1.0f - (0.04f * rtc->fade_timer)); } - } else if (rtc->unk9A0 == 0) { - aNRTC_proc_table[rtc->unk9A8](actor, play); + } else if (rtc->talk_flag == 0) { + aNRTC_proc_table[rtc->think_idx](actor, play); } - if (rtc->unk9B4 == 0) { - if (rtc->unk9A8 == 1) { + + if (rtc->bgm_timer == 0) { + if (rtc->think_idx == 1) { mBGMPsComp_make_ps_wipe(0x21C2); } else { mBGMPsComp_make_ps_wipe(0x621C); } - rtc->unk9B4 = -2; - } else if (rtc->unk9B4 > 0) { - rtc->unk9B4--; + rtc->bgm_timer = -2; + } else if (rtc->bgm_timer > 0) { + rtc->bgm_timer--; } } static void aNRTC_think_init_proc(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; rtc->npc_class.request.act_priority = 4; rtc->npc_class.request.act_idx = 8; rtc->npc_class.request.act_type = 0; @@ -88,34 +105,37 @@ static void aNRTC_think_init_proc(NPC_ACTOR* actor, GAME_PLAY* play) { static void aNRTC_think_proc(NPC_ACTOR* actor, GAME_PLAY* play, int idx) { static aNPC_SUB_PROC think_proc[] = { - aNRTC_think_init_proc, - aNRTC_think_main_proc, + &aNRTC_think_init_proc, + &aNRTC_think_main_proc, }; think_proc[idx](actor, play); } static void aNRTC_schedule_init_proc(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; rtc->npc_class.draw._5BE = 1; - rtc->npc_class.talk_info.default_animation = 0x76; - rtc->unk9B4 = -1; - rtc->unk9B0 = 0; - rtc->unk9B8 = 0x5A; + rtc->npc_class.talk_info.default_animation = aNPC_ANIM_4HAKU_E1; + rtc->bgm_timer = -1; + rtc->fade_timer = 0; + rtc->first_talk_timer = 90; rtc->npc_class.think.think_proc = aNRTC_think_proc; - rtc->unk9A8 = 0; - Common_Get(clip.npc_clip)->think_proc(actor, play, 6, 0); + rtc->think_idx = 0; + Common_Get(clip.npc_clip)->think_proc(actor, play, aNPC_THINK_IN_BLOCK, 0); } static void aNRTC_schedule_main_proc(NPC_ACTOR* actor, GAME_PLAY* play) { - NPCRTC_ACTOR* rtc = (NPCRTC_ACTOR*)actor; + NPC_RTC_ACTOR* rtc = (NPC_RTC_ACTOR*)actor; if (Common_Get(clip.npc_clip)->think_proc(actor, play, -1, 1) == 0) { Common_Get(clip.npc_clip)->think_proc(actor, play, -1, 2); } } static void aNRTC_schedule_proc(NPC_ACTOR* actor, GAME_PLAY* play, int idx) { - static aNPC_SUB_PROC sche_proc[] = { aNRTC_schedule_init_proc, aNRTC_schedule_main_proc }; + static aNPC_SUB_PROC sche_proc[] = { + &aNRTC_schedule_init_proc, + &aNRTC_schedule_main_proc, + }; sche_proc[idx](actor, play); } diff --git a/src/ac_npc_sendo_move.c_inc b/src/ac_npc_sendo_move.c_inc index 5a244707..8b62a29b 100644 --- a/src/ac_npc_sendo_move.c_inc +++ b/src/ac_npc_sendo_move.c_inc @@ -1,1463 +1,1290 @@ enum { - aSEN_TALK_END_WAIT, - aSEN_TALK_SING_END_WAIT, - aSEN_TALK_PL_RIDE_ON_CHECK, - aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM, - aSEN_TALK_MSG_WIN_CLOSE_WAIT, - aSEN_TALK_GET_ISLAND_NAME_MENU_START_WAIT, - aSEN_TALK_GET_ISLAND_NAME_MENU_END_WAIT, - aSEN_TALK_MSG_WIN_OPEN_WAIT, - aSEN_TALK_PL_RIDE_ON_CHECK2, - aSEN_TALK_CHK_WRITE_FOR_AGB, - aSEN_TALK_CHK_REWRITE_FOR_AGB, - aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, - aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT, - aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT, - aSEN_TALK_TRANS_PRG_FOR_AGB_END_WAIT, - aSEN_TALK_TRANS_PRG2_FOR_AGB_END_WAIT, - aSEN_TALK_CHK_POWER_AGB, - aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB, - aSEN_TALK_CHK_READ_AGB, - aSEN_TALK_CHK_RETRY_READ_AGB, - aSEN_TALK_CHK_USE_ISLAND_DATA_IN_RAM, - aSEN_TALK_CHK_POWER_AGB2, - aSEN_TALK_CHK_TRANS_ISLAND_DATA_FROM_AGB2, - aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB2, - aSEN_TALK_CHK_READ_AGB2, - aSEN_TALK_CHK_POWER_AGB3, - aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB3, - aSEN_TALK_CHK_READ_AGB3, + aSEN_TALK_END_WAIT, + aSEN_TALK_SING_END_WAIT, + aSEN_TALK_PL_RIDE_ON_CHECK, + aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM, + aSEN_TALK_MSG_WIN_CLOSE_WAIT, + aSEN_TALK_GET_ISLAND_NAME_MENU_START_WAIT, + aSEN_TALK_GET_ISLAND_NAME_MENU_END_WAIT, + aSEN_TALK_MSG_WIN_OPEN_WAIT, + aSEN_TALK_PL_RIDE_ON_CHECK2, + aSEN_TALK_CHK_WRITE_FOR_AGB, + aSEN_TALK_CHK_REWRITE_FOR_AGB, + aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, + aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT, + aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT, + aSEN_TALK_TRANS_PRG_FOR_AGB_END_WAIT, + aSEN_TALK_TRANS_PRG2_FOR_AGB_END_WAIT, + aSEN_TALK_CHK_POWER_AGB, + aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB, + aSEN_TALK_CHK_READ_AGB, + aSEN_TALK_CHK_RETRY_READ_AGB, + aSEN_TALK_CHK_USE_ISLAND_DATA_IN_RAM, + aSEN_TALK_CHK_POWER_AGB2, + aSEN_TALK_CHK_TRANS_ISLAND_DATA_FROM_AGB2, + aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB2, + aSEN_TALK_CHK_READ_AGB2, + aSEN_TALK_CHK_POWER_AGB3, + aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB3, + aSEN_TALK_CHK_READ_AGB3, - aSEN_TALK_NUM + aSEN_TALK_NUM }; enum { - aSEN_ACTION_TALK_START_WAIT, - aSEN_ACTION_TALK_START_WAIT2, + aSEN_ACTION_TALK_START_WAIT, + aSEN_ACTION_TALK_START_WAIT2, - /* TODO: finish */ + /* TODO: finish */ }; typedef struct npc_sendo_think_setup_s { - aSEN_PROC think_proc; - aSEN_PROC think_init_proc; - aNPC_TALK_REQUEST_PROC talk_request_proc; - u8 talk_act; - u8 next_action; - int animation_id; + aSEN_PROC think_proc; + aSEN_PROC think_init_proc; + aNPC_TALK_REQUEST_PROC talk_request_proc; + u8 talk_act; + u8 next_action; + int animation_id; } aSEN_think_setup_c; typedef struct npc_sendo_talk_request_s { - int msg_no; - u8 player_talk_turn; - u8 msg_camera_type; - u8 sendo_talk_turn; - u8 talk_act; + int msg_no; + u8 player_talk_turn; + u8 msg_camera_type; + u8 sendo_talk_turn; + u8 talk_act; } aSEN_talk_request_c; static void aSEN_set_anime_current(NPC_SENDO_ACTOR* sendo_actor) { - f32 length; - f32 start; - f32 a; + f32 length; + f32 start; + f32 a; - start = sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.start_frame; - length = sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.end_frame - start; - a = (start + sendo_actor->anime_progress * length) - sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.current_frame; + start = sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.start_frame; + length = sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.end_frame - start; + a = (start + sendo_actor->anime_progress * length) - + sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.current_frame; - if (a < 0) { - a += length; - } + if (a < 0) { + a += length; + } - sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.speed = a; + sendo_actor->npc_class.draw.main_animation.keyframe.frame_control.speed = a; } static void aSEN_set_request_act(NPC_SENDO_ACTOR* sendo) { - sendo->npc_class.request.act_priority = 4; - sendo->npc_class.request.act_idx = 22; - sendo->npc_class.request.act_type = 2; + sendo->npc_class.request.act_priority = 4; + sendo->npc_class.request.act_idx = 22; + sendo->npc_class.request.act_type = 2; } static void aSEN_pl_ride_on_end_wait(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - u8 act; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + u8 act; - if (boat_demo->action == aBTD_ACTION_START_CALL_END_WAIT) { - if (boat_demo->at_island == FALSE) { - mISL_ClearNowPlayerAction(); + if (boat_demo->action == aBTD_ACTION_START_CALL_END_WAIT) { + if (boat_demo->at_island == FALSE) { + mISL_ClearNowPlayerAction(); - if (sendo->use_island_data_in_ram == TRUE) { - act = 5; - } - else { - act = 4; - } + if (sendo->use_island_data_in_ram == TRUE) { + act = 5; + } else { + act = 4; + } + } else { + act = 6; + } + + aSEN_setup_think_proc(sendo, play, act); } - else { - act = 6; - } - - aSEN_setup_think_proc(sendo, play, act); - } } static void aSEN_sing_start_wait(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - u8 act; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + u8 act; - if (boat_demo->action == aBTD_ACTION_SING_SENDO_MSG_SET_WAIT) { - if (boat_demo->at_island == FALSE) { - act = 8; - } - else { - act = 9; - } + if (boat_demo->action == aBTD_ACTION_SING_SENDO_MSG_SET_WAIT) { + if (boat_demo->at_island == FALSE) { + act = 8; + } else { + act = 9; + } - aSEN_setup_think_proc(sendo, play, act); - } + aSEN_setup_think_proc(sendo, play, act); + } } static void aSEN_touch_wharf_start_wait(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - if (boat_demo->action == aBTD_ACTION_TOUCH_WHARF_END_WAIT) { - aSEN_setup_think_proc(sendo, play, 11); - } + if (boat_demo->action == aBTD_ACTION_TOUCH_WHARF_END_WAIT) { + aSEN_setup_think_proc(sendo, play, 11); + } } static void aSEN_touch_wharf_end_wait(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - u8 act; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + u8 act; - if (boat_demo->action == aBTD_ACTION_PL_RIDE_OFF_START_WAIT) { - if (boat_demo->at_island == FALSE) { - act = 12; - } - else { - act = 13; - } + if (boat_demo->action == aBTD_ACTION_PL_RIDE_OFF_START_WAIT) { + if (boat_demo->at_island == FALSE) { + act = 12; + } else { + act = 13; + } - mMsg_sound_unset_voice_silent(mMsg_Get_base_window_p(), TRUE); - aSEN_setup_think_proc(sendo, play, act); - } + mMsg_sound_unset_voice_silent(mMsg_Get_base_window_p(), TRUE); + aSEN_setup_think_proc(sendo, play, act); + } } static void aSEN_pl_ride_off_end_wait(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u32 destiny_pact[] = { - mISL_PLAYER_ACTION_DESTINY_POPULAR, - mISL_PLAYER_ACTION_DESTINY_UNPOPULAR, - mISL_PLAYER_ACTION_DESTINY_BAD_LUCK, - mISL_PLAYER_ACTION_DESTINY_MONEY_LUCK, - mISL_PLAYER_ACTION_DESTINY_GOODS_LUCK - }; + static u32 destiny_pact[] = { mISL_PLAYER_ACTION_DESTINY_POPULAR, mISL_PLAYER_ACTION_DESTINY_UNPOPULAR, + mISL_PLAYER_ACTION_DESTINY_BAD_LUCK, mISL_PLAYER_ACTION_DESTINY_MONEY_LUCK, + mISL_PLAYER_ACTION_DESTINY_GOODS_LUCK }; - static u32 sex_pact[] = { - mISL_PLAYER_ACTION_SEX_MALE, - mISL_PLAYER_ACTION_SEX_FEMALE - }; + static u32 sex_pact[] = { mISL_PLAYER_ACTION_SEX_MALE, mISL_PLAYER_ACTION_SEX_FEMALE }; - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - u8 act; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + u8 act; - if (boat_demo->action == aBTD_ACTION_ANCHOR_WAIT) { - if (boat_demo->at_island == FALSE) { - u32 destiny = Common_Get(now_private)->destiny.type; - u32 sex = Common_Get(now_private)->gender; + if (boat_demo->action == aBTD_ACTION_ANCHOR_WAIT) { + if (boat_demo->at_island == FALSE) { + u32 destiny = Common_Get(now_private)->destiny.type; + u32 sex = Common_Get(now_private)->gender; - if (destiny != mPr_DESTINY_NORMAL) { - mISL_SetNowPlayerAction(destiny_pact[destiny - 1]); - } + if (destiny != mPr_DESTINY_NORMAL) { + mISL_SetNowPlayerAction(destiny_pact[destiny - 1]); + } - if (sex < mPr_SEX_NUM) { - mISL_SetNowPlayerAction(sex_pact[sex]); - } + if (sex < mPr_SEX_NUM) { + mISL_SetNowPlayerAction(sex_pact[sex]); + } - act = 15; + act = 15; + } else { + act = 16; + } + + aSEN_setup_think_proc(sendo, play, act); } - else { - act = 16; - } - - aSEN_setup_think_proc(sendo, play, act); - } } static void aSEN_think_main_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - if (sendo->npc_class.action.step == aNPC_ACTION_END_STEP && sendo->npc_class.action.idx != 22) { - aSEN_set_request_act(sendo); - } + if (sendo->npc_class.action.step == aNPC_ACTION_END_STEP && sendo->npc_class.action.idx != 22) { + aSEN_set_request_act(sendo); + } - (*sendo->action_proc)(sendo, play); + (*sendo->action_proc)(sendo, play); } static void aSEN_think_init_proc(NPC_ACTOR* actorx, GAME_PLAY* play) { - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - u8 act; + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + u8 act; - actorx->think.interrupt_flags = 0; - actorx->action.act_proc = (aNPC_ACTION_PROC)&none_proc1; + actorx->think.interrupt_flags = 0; + actorx->action.act_proc = (aNPC_ACTION_PROC)&none_proc1; - aSEN_set_request_act(sendo); - if (boat_demo->at_island == FALSE) { - if (mEnv_NowWeather() == mEnv_WEATHER_RAIN) { - act = 1; + aSEN_set_request_act(sendo); + if (boat_demo->at_island == FALSE) { + if (mEnv_NowWeather() == mEnv_WEATHER_RAIN) { + act = 1; + } else { + act = 0; + } + } else { + act = 2; } - else { - act = 0; - } - } - else { - act = 2; - } - aSEN_setup_think_proc(sendo, play, act); + aSEN_setup_think_proc(sendo, play, act); } static void aSEN_talk_start_wait_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.condition_info.demo_flg = - aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | - aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | - aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | - aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; //0x3A77; + sendo->npc_class.condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | + aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | + aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; // 0x3A77; } static void aSEN_pl_ride_on_end_wait_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - boat_demo->demo_act = aBTD_DEMO_PL_RIDE_ON_END; + boat_demo->demo_act = aBTD_DEMO_PL_RIDE_ON_END; } static void aSEN_start_call_v_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.talk_info.melody_inst = 0; - sendo->npc_class.condition_info.demo_flg = - aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | - aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_HEAD_LOOKAT | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | - aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | - aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; //0x3B77; + sendo->npc_class.talk_info.melody_inst = 0; + sendo->npc_class.condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_HEAD_LOOKAT | aNPC_COND_DEMO_SKIP_ITEM | + aNPC_COND_DEMO_SKIP_FORWARD_CHECK | aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | + aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; // 0x3B77; } static void aSEN_sing_start_wait_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - boat_demo->demo_act = aBTD_DEMO_MOVE_BOAT_END; - sendo->npc_class.talk_info.default_animation = 123; - sendo->npc_class.draw._5BE = 1; + boat_demo->demo_act = aBTD_DEMO_MOVE_BOAT_END; + sendo->npc_class.talk_info.default_animation = 123; + sendo->npc_class.draw._5BE = 1; } static void aSEN_touch_wharf_end_wait_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.head.angle_add_x = 128; - sendo->npc_class.head.angle_add_y = 256; + sendo->npc_class.head.angle_add_x = 128; + sendo->npc_class.head.angle_add_y = 256; } static void aSEN_arrive_call_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.head.angle_add_x = 512; - sendo->npc_class.head.angle_add_y = 1024; - sendo->npc_class.talk_info.default_animation = 124; - sendo->npc_class.draw._5BE = 0; + sendo->npc_class.head.angle_add_x = 512; + sendo->npc_class.head.angle_add_y = 1024; + sendo->npc_class.talk_info.default_animation = 124; + sendo->npc_class.draw._5BE = 0; } static void aSEN_pl_ride_off_end_wait_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - boat_demo->demo_act = aBTD_DEMO_PL_RIDE_OFF_END; + boat_demo->demo_act = aBTD_DEMO_PL_RIDE_OFF_END; } static void aSEN_out_of_service_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.talk_info.melody_inst = 0x11A; + sendo->npc_class.talk_info.melody_inst = 0x11A; } static void aSEN_out_of_service2_init(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - sendo->npc_class.talk_info.default_animation = 125; - mISL_RestoreIsland(); - aSEN_out_of_service_init(sendo, play); - sendo->npc_class.condition_info.demo_flg = - aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | - aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | - aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | - aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; //0x3A77; + sendo->npc_class.talk_info.default_animation = 125; + mISL_RestoreIsland(); + aSEN_out_of_service_init(sendo, play); + sendo->npc_class.condition_info.demo_flg = + aNPC_COND_DEMO_SKIP_LOVE_CHECK | aNPC_COND_DEMO_SKIP_FEEL_CHECK | aNPC_COND_DEMO_SKIP_FOOTSTEPS | + aNPC_COND_DEMO_SKIP_ENTRANCE_CHECK | aNPC_COND_DEMO_SKIP_ITEM | aNPC_COND_DEMO_SKIP_FORWARD_CHECK | + aNPC_COND_DEMO_SKIP_BGCHECK | aNPC_COND_DEMO_SKIP_MOVE_Y | aNPC_COND_DEMO_SKIP_MOVE_CIRCLE_REV | + aNPC_COND_DEMO_SKIP_MOVE_RANGE_CHECK; // 0x3A77; } static void aSEN_norm_talk_request(ACTOR*, GAME*); static void aSEN_force_talk_request(ACTOR*, GAME*); static void aSEN_setup_think_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play, u8 think_act) { - static aSEN_think_setup_c dt_tbl[] = { - { - (aSEN_PROC)&none_proc1, - aSEN_talk_start_wait_init, - aSEN_norm_talk_request, - 0, - 0, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_talk_start_wait_init, - aSEN_norm_talk_request, - 1, - 1, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_talk_start_wait_init, - aSEN_norm_talk_request, - 2, - 2, - 0x7C - }, - { - aSEN_pl_ride_on_end_wait, - aSEN_pl_ride_on_end_wait_init, - (aNPC_TALK_REQUEST_PROC)&none_proc1, - 0, - 3, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_start_call_v_init, - aSEN_force_talk_request, - 0, - 7, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_start_call_v_init, - aSEN_force_talk_request, - 1, - 7, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_start_call_v_init, - aSEN_force_talk_request, - 2, - 7, - 0x7C - }, - { - aSEN_sing_start_wait, - aSEN_sing_start_wait_init, - (aNPC_TALK_REQUEST_PROC)&none_proc1, - 0, - 7, - 0x7B - }, - { - (aSEN_PROC)&none_proc1, - (aSEN_PROC)&none_proc1, - aSEN_force_talk_request, - 3, - 10, - 0x7B - }, - { - (aSEN_PROC)&none_proc1, - (aSEN_PROC)&none_proc1, - aSEN_force_talk_request, - 4, - 10, - 0x7B - }, - { - aSEN_touch_wharf_start_wait, - (aSEN_PROC)&none_proc1, - (aNPC_TALK_REQUEST_PROC)&none_proc1, - 0, - 10, - 0x7B - }, - { - aSEN_touch_wharf_end_wait, - aSEN_touch_wharf_end_wait_init, - (aNPC_TALK_REQUEST_PROC)&none_proc1, - 0, - 11, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_arrive_call_init, - aSEN_force_talk_request, - 5, - 14, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_arrive_call_init, - aSEN_force_talk_request, - 6, - 14, - 0x7C - }, - { - aSEN_pl_ride_off_end_wait, - aSEN_pl_ride_off_end_wait_init, - (aNPC_TALK_REQUEST_PROC)&none_proc1, - 0, - 14, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_out_of_service_init, - aSEN_norm_talk_request, - 3, - 15, - 0x7C - }, - { - (aSEN_PROC)&none_proc1, - aSEN_out_of_service2_init, - aSEN_norm_talk_request, - 4, - 16, - 0x7D - } - }; - - aSEN_think_setup_c* data = &dt_tbl[think_act]; + static aSEN_think_setup_c dt_tbl[] = { + { (aSEN_PROC)&none_proc1, aSEN_talk_start_wait_init, aSEN_norm_talk_request, 0, 0, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_talk_start_wait_init, aSEN_norm_talk_request, 1, 1, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_talk_start_wait_init, aSEN_norm_talk_request, 2, 2, aNPC_ANIM_WIPWAIT1 }, + { aSEN_pl_ride_on_end_wait, aSEN_pl_ride_on_end_wait_init, (aNPC_TALK_REQUEST_PROC)&none_proc1, 0, 3, + aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_start_call_v_init, aSEN_force_talk_request, 0, 7, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_start_call_v_init, aSEN_force_talk_request, 1, 7, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_start_call_v_init, aSEN_force_talk_request, 2, 7, aNPC_ANIM_WIPWAIT1 }, + { aSEN_sing_start_wait, aSEN_sing_start_wait_init, (aNPC_TALK_REQUEST_PROC)&none_proc1, 0, 7, + aNPC_ANIM_WIPKOGU1 }, + { (aSEN_PROC)&none_proc1, (aSEN_PROC)&none_proc1, aSEN_force_talk_request, 3, 10, aNPC_ANIM_WIPKOGU1 }, + { (aSEN_PROC)&none_proc1, (aSEN_PROC)&none_proc1, aSEN_force_talk_request, 4, 10, aNPC_ANIM_WIPKOGU1 }, + { aSEN_touch_wharf_start_wait, (aSEN_PROC)&none_proc1, (aNPC_TALK_REQUEST_PROC)&none_proc1, 0, 10, + aNPC_ANIM_WIPKOGU1 }, + { aSEN_touch_wharf_end_wait, aSEN_touch_wharf_end_wait_init, (aNPC_TALK_REQUEST_PROC)&none_proc1, 0, 11, + aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_arrive_call_init, aSEN_force_talk_request, 5, 14, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_arrive_call_init, aSEN_force_talk_request, 6, 14, aNPC_ANIM_WIPWAIT1 }, + { aSEN_pl_ride_off_end_wait, aSEN_pl_ride_off_end_wait_init, (aNPC_TALK_REQUEST_PROC)&none_proc1, 0, 14, + aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_out_of_service_init, aSEN_norm_talk_request, 3, 15, aNPC_ANIM_WIPWAIT1 }, + { (aSEN_PROC)&none_proc1, aSEN_out_of_service2_init, aSEN_norm_talk_request, 4, 16, aNPC_ANIM_WIPWAIT2 }, + }; - sendo->action = think_act; - sendo->action_proc = data->think_proc; - sendo->npc_class.talk_info.talk_request_proc = data->talk_request_proc; - sendo->talk_action = data->talk_act; - sendo->next_action = data->next_action; - (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)sendo, data->animation_id, FALSE); - (*data->think_init_proc)(sendo, play); + aSEN_think_setup_c* data = &dt_tbl[think_act]; + + sendo->action = think_act; + sendo->action_proc = data->think_proc; + sendo->npc_class.talk_info.talk_request_proc = data->talk_request_proc; + sendo->talk_action = data->talk_act; + sendo->next_action = data->next_action; + (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)sendo, data->animation_id, FALSE); + (*data->think_init_proc)(sendo, play); } static void aSEN_think_proc(NPC_ACTOR* actorx, GAME_PLAY* play, int think_act) { - static aNPC_SUB_PROC think_proc[] = { &aSEN_think_init_proc, &aSEN_think_main_proc }; + static aNPC_SUB_PROC think_proc[] = { &aSEN_think_init_proc, &aSEN_think_main_proc }; - (*think_proc[think_act])(actorx, play); + (*think_proc[think_act])(actorx, play); } static void aSEN_schedule_init_proc(NPC_ACTOR* npc_actorx, GAME_PLAY* play) { - npc_actorx->think.think_proc = &aSEN_think_proc; - npc_actorx->condition_info.hide_request = FALSE; - npc_actorx->palActorIgnoreTimer = -1; - npc_actorx->talk_info.default_animation = 124; - npc_actorx->actor_class.talk_distance = 60.0f; - npc_actorx->collision.priority = 1; - npc_actorx->actor_class.shape_info.draw_shadow = FALSE; - npc_actorx->actor_class.state_bitfield |= ACTOR_STATE_NO_MOVE_WHILE_CULLED; - npc_actorx->actor_class.status_data.weight = 254; - npc_actorx->draw._5B9 = 1; - npc_actorx->actor_class.shape_info.rotation.y = DEG2SHORT_ANGLE(80.0f); - npc_actorx->movement.mv_angl = DEG2SHORT_ANGLE(80.0f); + npc_actorx->think.think_proc = &aSEN_think_proc; + npc_actorx->condition_info.hide_request = FALSE; + npc_actorx->palActorIgnoreTimer = -1; + npc_actorx->talk_info.default_animation = 124; + npc_actorx->actor_class.talk_distance = 60.0f; + npc_actorx->collision.priority = 1; + npc_actorx->actor_class.shape_info.draw_shadow = FALSE; + npc_actorx->actor_class.state_bitfield |= ACTOR_STATE_NO_MOVE_WHILE_CULLED; + npc_actorx->actor_class.status_data.weight = 254; + npc_actorx->draw._5B9 = 1; + npc_actorx->actor_class.shape_info.rotation.y = DEG2SHORT_ANGLE(80.0f); + npc_actorx->movement.mv_angl = DEG2SHORT_ANGLE(80.0f); - (*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, aNPC_THINK_SPECIAL, aNPC_THINK_TYPE_INIT); + (*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, aNPC_THINK_SPECIAL, aNPC_THINK_TYPE_INIT); } static void aSEN_schedule_main_proc(NPC_ACTOR* npc_actorx, GAME_PLAY* play) { - if ((*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, -1, aNPC_THINK_TYPE_CHK_INTERRUPT) == FALSE) { - (*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, -1, aNPC_THINK_TYPE_MAIN); - } + if ((*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, -1, aNPC_THINK_TYPE_CHK_INTERRUPT) == FALSE) { + (*Common_Get(clip).npc_clip->think_proc)(npc_actorx, play, -1, aNPC_THINK_TYPE_MAIN); + } } static void aSEN_schedule_proc(NPC_ACTOR* npc_actorx, GAME_PLAY* play, int sched_type) { - static aNPC_SUB_PROC sche_proc[] = { &aSEN_schedule_init_proc, &aSEN_schedule_main_proc }; + static aNPC_SUB_PROC sche_proc[] = { &aSEN_schedule_init_proc, &aSEN_schedule_main_proc }; - (*sche_proc[sched_type])(npc_actorx, play); + (*sche_proc[sched_type])(npc_actorx, play); } static int aSEN_get_msg_no(NPC_SENDO_ACTOR* sendo, int msg_no) { - static int msg_base_no[2][mPr_SEX_NUM] = { - { 0x3091, 0x3163 }, - { 0x3096, 0x3168 } - }; + static int msg_base_no[2][mPr_SEX_NUM] = { { 0x3091, 0x3163 }, { 0x3096, 0x3168 } }; - int msg_base; - int msg; - int msg_index; + int msg_base; + int msg; + int msg_index; - if (msg_no == 0x3091 || msg_no == 0x3096) { - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - - msg_base = msg_base_no[boat_demo->at_island][Common_Get(now_private)->gender]; - msg = boat_demo->sing_msg_no; - msg_index = msg - msg_base; + if (msg_no == 0x3091 || msg_no == 0x3096) { + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - if (msg_index < 0 || msg_index >= 5) { - msg = msg_base; + msg_base = msg_base_no[boat_demo->at_island][Common_Get(now_private)->gender]; + msg = boat_demo->sing_msg_no; + msg_index = msg - msg_base; + + if (msg_index < 0 || msg_index >= 5) { + msg = msg_base; + } + } else if (Common_Get(now_private)->gender != mPr_SEX_MALE) { + msg = 210 + msg_no; + } else { + msg = msg_no; } - } - else if (Common_Get(now_private)->gender != mPr_SEX_MALE) { - msg = 210 + msg_no; - } - else { - msg = msg_no; - } - return msg; + return msg; } static void aSEN_agb_trans_se_proc(NPC_SENDO_ACTOR* sendo, int enable) { - if (enable == TRUE) { - if (sendo->agb_trans_se == FALSE) { - sAdo_SysLevStart(NA_SE_ITEM_HORIDASHI); - sendo->agb_trans_se = TRUE; + if (enable == TRUE) { + if (sendo->agb_trans_se == FALSE) { + sAdo_SysLevStart(NA_SE_47); + sendo->agb_trans_se = TRUE; + } + } else { + if (sendo->agb_trans_se == TRUE) { + sAdo_SysLevStop(NA_SE_47); + sendo->agb_trans_se = FALSE; + } } - } - else { - if (sendo->agb_trans_se == TRUE) { - sAdo_SysLevStop(NA_SE_ITEM_HORIDASHI); - sendo->agb_trans_se = FALSE; - } - } } static int aSEN_compare_ram_island_and_village() { - int res = FALSE; - int same_land_info = mLd_CheckCmpLand( - Save_Get(land_info).name, Save_Get(land_info).id, - Save_Get(island).landinfo.name, Save_Get(island).landinfo.id - ); + int res = FALSE; + int same_land_info = mLd_CheckCmpLand(Save_Get(land_info).name, Save_Get(land_info).id, + Save_Get(island).landinfo.name, Save_Get(island).landinfo.id); - if (same_land_info == TRUE) { - res = TRUE; - } + if (same_land_info == TRUE) { + res = TRUE; + } - return res; + return res; } static int aSEN_compare_ram_island_and_agb_island() { - int res = FALSE; - int agb_island_and_island_same_name = mLd_CheckCmpLandName(Common_Get(transfer_island).name, Save_Get(island).name); // Why bother checking this lol... + int res = FALSE; + int agb_island_and_island_same_name = mLd_CheckCmpLandName( + Common_Get(transfer_island).name, Save_Get(island).name); // Why bother checking this lol... - if (agb_island_and_island_same_name == TRUE) { - int agb_island_and_island_same_land = mLd_CheckCmpLand( - Common_Get(transfer_island).landinfo.name, Common_Get(transfer_island).landinfo.id, - Save_Get(island).landinfo.name, Save_Get(island).landinfo.id - ); + if (agb_island_and_island_same_name == TRUE) { + int agb_island_and_island_same_land = + mLd_CheckCmpLand(Common_Get(transfer_island).landinfo.name, Common_Get(transfer_island).landinfo.id, + Save_Get(island).landinfo.name, Save_Get(island).landinfo.id); - if (agb_island_and_island_same_land == TRUE) { - res = TRUE; + if (agb_island_and_island_same_land == TRUE) { + res = TRUE; + } } - } - return res; + return res; } static int aSEN_chk_exist_island_data_in_ram() { - int res = TRUE; + int res = TRUE; - if (Save_Get(island).renew_time.year == 0) { - lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); - res = FALSE; - } + if (Save_Get(island).renew_time.year == 0) { + lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); + res = FALSE; + } - return res; + return res; } static void aSEN_set_island_info_for_agb(Island_c* dst, Island_c* src) { - bcopy(src, dst, sizeof(Island_c)); - mAGrw_SpoilKabuIsland(dst); - mISL_gc_to_agb(Common_GetPointer(agb_island), dst); + bcopy(src, dst, sizeof(Island_c)); + mAGrw_SpoilKabuIsland(dst); + mISL_gc_to_agb(Common_GetPointer(agb_island), dst); } static void aSEN_setup_pl_ride_on(NPC_SENDO_ACTOR* sendo) { - sendo->next_action = 3; - mDemo_Set_talk_return_demo_wait(TRUE); + sendo->next_action = 3; + mDemo_Set_talk_return_demo_wait(TRUE); } static void aSEN_change_talk_proc(NPC_SENDO_ACTOR*, u8); static void aSEN_sing_end_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - if (boat_demo->action == aBTD_ACTION_TOUCH_WHARF_END_WAIT && sendo->npc_class.draw.animation_id != 124) { - sendo->next_action = 11; - (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)sendo, 124, FALSE); - } + if (boat_demo->action == aBTD_ACTION_TOUCH_WHARF_END_WAIT && sendo->npc_class.draw.animation_id != 124) { + sendo->next_action = 11; + (*Common_Get(clip).npc_clip->animation_init_proc)((ACTOR*)sendo, 124, FALSE); + } } static void aSEN_pl_ride_on_check_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - /* Player chose not to ride */ - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_LockContinue(msg_p); - mGcgba_InitVar(); - sendo->gba_comm_tries = 0; - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB); - break; - case mChoice_CHOICE1: - /* Player chose to ride */ - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3074)); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - - break; + if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + /* Player chose not to ride */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_LockContinue(msg_p); + mGcgba_InitVar(); + sendo->gba_comm_tries = 0; + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB); + break; + case mChoice_CHOICE1: + /* Player chose to ride */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3074)); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + + break; + } } - } } static void aSEN_chk_exist_island_data_in_ram_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_MSG_WIN_CLOSE_WAIT, aSEN_TALK_END_WAIT }; - static int msg_no[] = { 0x3079, 0x30BE }; + static u8 next_talk_idx[] = { aSEN_TALK_MSG_WIN_CLOSE_WAIT, aSEN_TALK_END_WAIT }; + static int msg_no[] = { 0x3079, 0x30BE }; - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0) { - int keep_island = -1; + if (order != 0) { + int keep_island = -1; - if (aSEN_chk_exist_island_data_in_ram() == FALSE) { - keep_island = 0; + if (aSEN_chk_exist_island_data_in_ram() == FALSE) { + keep_island = 0; + } else { + keep_island = 1; + mISL_KeepIsland(Save_GetPointer(island)); + } + + /* Why do they check against -1 here? */ + if (keep_island != -1) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + aSEN_setup_pl_ride_on(sendo); + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[keep_island])); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); + } } - else { - keep_island = 1; - mISL_KeepIsland(Save_GetPointer(island)); - } - - /* Why do they check against -1 here? */ - if (keep_island != -1) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - aSEN_setup_pl_ride_on(sendo); - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[keep_island])); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); - } - } } static void aSEN_msg_win_close_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0) { - mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()); - aSEN_change_talk_proc(sendo, aSEN_TALK_GET_ISLAND_NAME_MENU_START_WAIT); - } + if (order != 0) { + mMsg_request_main_disappear_wait_type1(mMsg_Get_base_window_p()); + aSEN_change_talk_proc(sendo, aSEN_TALK_GET_ISLAND_NAME_MENU_START_WAIT); + } } static void aSEN_get_island_name_menu_start_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - if (mMsg_Check_main_wait(mMsg_Get_base_window_p()) == TRUE) { - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mSM_open_submenu_new(&play->submenu, mSM_OVL_LEDIT, mLE_TYPE_ISLAND_NAME, 0, Save_Get(island).name); - aSEN_change_talk_proc(sendo, aSEN_TALK_GET_ISLAND_NAME_MENU_END_WAIT); - } + if (mMsg_Check_main_wait(mMsg_Get_base_window_p()) == TRUE) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mSM_open_submenu_new(&play->submenu, mSM_OVL_LEDIT, mLE_TYPE_ISLAND_NAME, 0, Save_Get(island).name); + aSEN_change_talk_proc(sendo, aSEN_TALK_GET_ISLAND_NAME_MENU_END_WAIT); + } } static void aSEN_get_island_name_menu_end_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - if (play->submenu.open_flag == FALSE) { - mISL_KeepIsland(Save_GetPointer(island)); - mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p()); - aSEN_change_talk_proc(sendo, aSEN_TALK_MSG_WIN_OPEN_WAIT); - } + if (play->submenu.open_flag == FALSE) { + mISL_KeepIsland(Save_GetPointer(island)); + mMsg_request_main_appear_wait_type1(mMsg_Get_base_window_p()); + aSEN_change_talk_proc(sendo, aSEN_TALK_MSG_WIN_OPEN_WAIT); + } } static void aSEN_msg_win_open_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x30BE)); - mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(island).name, mISL_ISLAND_NAME_LEN); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - } + if (mMsg_Check_not_series_main_wait(msg_p) == TRUE) { + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x30BE)); + mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(island).name, mISL_ISLAND_NAME_LEN); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + } } static void aSEN_pl_ride_on_check2_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - /* Player chose to ride */ - if (aSEN_compare_ram_island_and_village() == FALSE) { - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_LockContinue(msg_p); - mGcgba_InitVar(); - sendo->gba_comm_tries = 0; - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB2); + if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + /* Player chose to ride */ + if (aSEN_compare_ram_island_and_village() == FALSE) { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_LockContinue(msg_p); + mGcgba_InitVar(); + sendo->gba_comm_tries = 0; + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB2); + } else { + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3082)); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_WRITE_FOR_AGB); + } + + mNpc_SetIslandGetFtrtoRoom(); + + break; + case mChoice_CHOICE1: + /* Player chose not to ride */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3081)); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; } - else { - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3082)); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_WRITE_FOR_AGB); - } - - mNpc_SetIslandGetFtrtoRoom(); - - break; - case mChoice_CHOICE1: - /* Player chose not to ride */ - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3081)); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; } - } } static void aSEN_chk_write_for_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - /* Player chose to send a copy of the island to the GBA */ - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_LockContinue(msg_p); - mMsg_Set_ForceNext(msg_p); - mGcgba_InitVar(); - sendo->gba_comm_tries = 0; - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB3); - break; - case mChoice_CHOICE1: - /* Player chose not to send a copy of the island to the GBA */ - aSEN_setup_pl_ride_on(sendo); - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3083)); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; + if (order != 0) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + /* Player chose to send a copy of the island to the GBA */ + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_LockContinue(msg_p); + mMsg_Set_ForceNext(msg_p); + mGcgba_InitVar(); + sendo->gba_comm_tries = 0; + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_POWER_AGB3); + break; + case mChoice_CHOICE1: + /* Player chose not to send a copy of the island to the GBA */ + aSEN_setup_pl_ride_on(sendo); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_continue_msg_num(msg_p, aSEN_get_msg_no(sendo, 0x3083)); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } } - } } static void aSEN_chk_rewrite_for_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, aSEN_TALK_END_WAIT }; - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + static u8 next_talk_idx[] = { aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, aSEN_TALK_END_WAIT }; + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0) { - int keep_island = -1; + if (order != 0) { + int keep_island = -1; - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - keep_island = 0; - break; - case mChoice_CHOICE1: - keep_island = 1; - mGcgba_EndComm(); - sendo->next_action = 2; - break; + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + keep_island = 0; + break; + case mChoice_CHOICE1: + keep_island = 1; + mGcgba_EndComm(); + sendo->next_action = 2; + break; + } + + if (keep_island != -1) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); + } } - - if (keep_island != -1) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); - } - } } static void aSEN_trans_data_for_agb_start_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0) { - u8 talk_act; + if (order != 0) { + u8 talk_act; - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - mMsg_Set_LockContinue(mMsg_Get_base_window_p()); + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + mMsg_Set_LockContinue(mMsg_Get_base_window_p()); - if (sendo->talk_action == aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT) { - aSEN_set_island_info_for_agb(Common_GetPointer(transfer_island), Save_GetPointer(island)); - talk_act = aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT; + if (sendo->talk_action == aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT) { + aSEN_set_island_info_for_agb(Common_GetPointer(transfer_island), Save_GetPointer(island)); + talk_act = aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT; + } else { + talk_act = aSEN_TALK_TRANS_PRG_FOR_AGB_END_WAIT; + } + + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, talk_act); } - else { - talk_act = aSEN_TALK_TRANS_PRG_FOR_AGB_END_WAIT; - } - - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, talk_act); - } } static void aSEN_trans_data_for_agb_end_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - switch (mGcgba_Send((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully sent to GBA */ - aSEN_agb_trans_se_proc(sendo, FALSE); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3083)); - mMsg_Unset_LockContinue(msg_p); - mMsg_Set_ForceNext(msg_p); - bcopy(Common_GetPointer(transfer_island), Save_GetPointer(island), sizeof(Island_c)); - aSEN_setup_pl_ride_on(sendo); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; - } + switch (mGcgba_Send((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully sent to GBA */ + aSEN_agb_trans_se_proc(sendo, FALSE); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3083)); + mMsg_Unset_LockContinue(msg_p); + mMsg_Set_ForceNext(msg_p); + bcopy(Common_GetPointer(transfer_island), Save_GetPointer(island), sizeof(Island_c)); + aSEN_setup_pl_ride_on(sendo); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Sending data to GBA */ - aSEN_agb_trans_se_proc(sendo, TRUE); - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Sending data to GBA */ + aSEN_agb_trans_se_proc(sendo, TRUE); + break; + } - default: - { - /* Failed to send data to GBA */ - aSEN_agb_trans_se_proc(sendo, FALSE); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); - mMsg_Unset_LockContinue(msg_p); - mMsg_Set_ForceNext(msg_p); - bcopy(Save_GetPointer(island), Common_GetPointer(transfer_island), sizeof(Island_c)); - sendo->next_action = 2; - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; + default: { + /* Failed to send data to GBA */ + aSEN_agb_trans_se_proc(sendo, FALSE); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); + mMsg_Unset_LockContinue(msg_p); + mMsg_Set_ForceNext(msg_p); + bcopy(Save_GetPointer(island), Common_GetPointer(transfer_island), sizeof(Island_c)); + sendo->next_action = 2; + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } } - } } static void aSEN_trans_prg_for_agb_end_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - switch (mGcgba_Boot(boat_demo->island_gba_loader_p, aBTD_LOADER_SIZE)) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully sent to GBA */ - aSEN_agb_trans_se_proc(sendo, TRUE); - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG2_FOR_AGB_END_WAIT); - break; - } + switch (mGcgba_Boot(boat_demo->island_gba_loader_p, aBTD_LOADER_SIZE)) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully sent to GBA */ + aSEN_agb_trans_se_proc(sendo, TRUE); + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG2_FOR_AGB_END_WAIT); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Sending data to GBA */ - aSEN_agb_trans_se_proc(sendo, TRUE); - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Sending data to GBA */ + aSEN_agb_trans_se_proc(sendo, TRUE); + break; + } - default: - { - /* Failed to send data to GBA */ - aSEN_agb_trans_se_proc(sendo, FALSE); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); - sendo->next_action = 2; - mMsg_Unset_LockContinue(msg_p); - mMsg_Set_ForceNext(msg_p); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; + default: { + /* Failed to send data to GBA */ + aSEN_agb_trans_se_proc(sendo, FALSE); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); + sendo->next_action = 2; + mMsg_Unset_LockContinue(msg_p); + mMsg_Set_ForceNext(msg_p); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } } - } } static void aSEN_trans_prg2_for_agb_end_wait_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - switch (mGcgba_Send(boat_demo->island_gba_program_p, aBTD_PROGRAM_SIZE)) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully sent to GBA */ - aSEN_agb_trans_se_proc(sendo, TRUE); - aSEN_set_island_info_for_agb(Common_GetPointer(transfer_island), Save_GetPointer(island)); - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT); - break; - } + switch (mGcgba_Send(boat_demo->island_gba_program_p, aBTD_PROGRAM_SIZE)) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully sent to GBA */ + aSEN_agb_trans_se_proc(sendo, TRUE); + aSEN_set_island_info_for_agb(Common_GetPointer(transfer_island), Save_GetPointer(island)); + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_DATA_FOR_AGB_END_WAIT); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Sending data to GBA */ - aSEN_agb_trans_se_proc(sendo, TRUE); - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Sending data to GBA */ + aSEN_agb_trans_se_proc(sendo, TRUE); + break; + } - default: - { - /* Failed to send data to GBA */ - aSEN_agb_trans_se_proc(sendo, FALSE); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); - sendo->next_action = 2; - mMsg_Unset_LockContinue(msg_p); - mMsg_Set_ForceNext(msg_p); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; + default: { + /* Failed to send data to GBA */ + aSEN_agb_trans_se_proc(sendo, FALSE); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x308A)); + sendo->next_action = 2; + mMsg_Unset_LockContinue(msg_p); + mMsg_Set_ForceNext(msg_p); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } } - } } static void aSEN_chk_power_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_ConnectEnabled()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully communicated with GBA */ - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB); - break; + switch (mGcgba_ConnectEnabled()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully communicated with GBA */ + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB); + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + + /* Try up to 5 times to connect with the GBA */ + sendo->gba_comm_tries++; + if (sendo->gba_comm_tries >= 5) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3075)); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + } else { + mGcgba_InitVar(); + } + + break; + } } - - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } - - default: - { - /* Failed to communicate with GBA */ - - /* Try up to 5 times to connect with the GBA */ - sendo->gba_comm_tries++; - if (sendo->gba_comm_tries >= 5) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3075)); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - } - else{ - mGcgba_InitVar(); - } - - break; - } - } } static void aSEN_chk_exist_island_data_in_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_IsIsland()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Confirmed an island is loaded on the GBA */ - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB); - break; - } + switch (mGcgba_IsIsland()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Confirmed an island is loaded on the GBA */ + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } - default: - { - /* Failed to communicate with GBA */ - sendo->use_island_data_in_ram = TRUE; - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 1); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM); - break; + default: { + /* Failed to communicate with GBA */ + sendo->use_island_data_in_ram = TRUE; + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 1); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM); + break; + } } - } } static void aSEN_chk_read_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_END_WAIT, aSEN_TALK_CHK_RETRY_READ_AGB, aSEN_TALK_CHK_USE_ISLAND_DATA_IN_RAM }; - static int msg_no[] = { 0x3076, 0x3078, 0x30C0 }; - int talk_act = -1; + static u8 next_talk_idx[] = { aSEN_TALK_END_WAIT, aSEN_TALK_CHK_RETRY_READ_AGB, + aSEN_TALK_CHK_USE_ISLAND_DATA_IN_RAM }; + static int msg_no[] = { 0x3076, 0x3078, 0x30C0 }; + int talk_act = -1; - switch (mGcgba_Recv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Read the island from the GBA */ - if (Common_Get(agb_island).in_use == TRUE) { - talk_act = 2; - } - else { - mISL_KeepIsland(Save_GetPointer(island)); - mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); - bcopy(Common_GetPointer(transfer_island), Save_GetPointer(island), sizeof(Island_c)); - aSEN_setup_pl_ride_on(sendo); - talk_act = 0; - } - break; + switch (mGcgba_Recv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { + case GBA2_GBA_STATE_SUCCESS: { + /* Read the island from the GBA */ + if (Common_Get(agb_island).in_use == TRUE) { + talk_act = 2; + } else { + mISL_KeepIsland(Save_GetPointer(island)); + mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); + bcopy(Common_GetPointer(transfer_island), Save_GetPointer(island), sizeof(Island_c)); + aSEN_setup_pl_ride_on(sendo); + talk_act = 0; + } + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + talk_act = 1; + break; + } } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; + if (talk_act != -1) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); + mMsg_Set_ForceNext(msg_p); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); } - - default: - { - /* Failed to communicate with GBA */ - talk_act = 1; - break; - } - } - - if (talk_act != -1) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); - mMsg_Set_ForceNext(msg_p); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); - } } static void aSEN_chk_retry_read_agb_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_END_WAIT, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + static u8 next_talk_idx[] = { aSEN_TALK_END_WAIT, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - int keep_island = -1; + if (order != 0 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + int keep_island = -1; - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - keep_island = 0; - break; - case mChoice_CHOICE1: - keep_island = 1; - mMsg_Set_LockContinue(msg_p); - sendo->use_island_data_in_ram = TRUE; - break; + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + keep_island = 0; + break; + case mChoice_CHOICE1: + keep_island = 1; + mMsg_Set_LockContinue(msg_p); + sendo->use_island_data_in_ram = TRUE; + break; + } + + if (keep_island != -1) { + aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); + } } - - if (keep_island != -1) { - aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); - } - } } static void aSEN_chk_use_island_data_in_ram_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM, aSEN_TALK_END_WAIT }; - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + static u8 next_talk_idx[] = { aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_RAM, aSEN_TALK_END_WAIT }; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { - int keep_island = -1; + if (order != 0 && mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + int keep_island = -1; - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - keep_island = 0; - mMsg_Set_LockContinue(msg_p); - sendo->use_island_data_in_ram = TRUE; - break; - case mChoice_CHOICE1: - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - keep_island = 1; - break; + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + keep_island = 0; + mMsg_Set_LockContinue(msg_p); + sendo->use_island_data_in_ram = TRUE; + break; + case mChoice_CHOICE1: + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + keep_island = 1; + break; + } + + if (keep_island != -1) { + aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); + } } - - if (keep_island != -1) { - aSEN_change_talk_proc(sendo, next_talk_idx[keep_island]); - } - } } static void aSEN_chk_power_agb2_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_ConnectEnabled()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully communicated with GBA */ - lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB2); - break; + switch (mGcgba_ConnectEnabled()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully communicated with GBA */ + lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB2); + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + + /* Try up to 5 times to connect with the GBA */ + sendo->gba_comm_tries++; + if (sendo->gba_comm_tries >= 5) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3089)); + mMsg_Set_ForceNext(msg_p); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_TRANS_ISLAND_DATA_FROM_AGB2); + } else { + mGcgba_InitVar(); + } + + break; + } } - - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } - - default: - { - /* Failed to communicate with GBA */ - - /* Try up to 5 times to connect with the GBA */ - sendo->gba_comm_tries++; - if (sendo->gba_comm_tries >= 5) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3089)); - mMsg_Set_ForceNext(msg_p); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_TRANS_ISLAND_DATA_FROM_AGB2); - } - else{ - mGcgba_InitVar(); - } - - break; - } - } } static void aSEN_chk_trans_island_data_from_agb2_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); + int order = mDemo_Get_OrderValue(mDemo_ORDER_NPC0, 9); - if (order != 0 && mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == TRUE) { - switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { - case mChoice_CHOICE0: - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - aSEN_setup_pl_ride_on(sendo); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; - case mChoice_CHOICE1: - mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - break; + if (order != 0 && mMsg_Check_MainNormalContinue(mMsg_Get_base_window_p()) == TRUE) { + switch (mChoice_Get_ChoseNum(mChoice_Get_base_window_p())) { + case mChoice_CHOICE0: + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + aSEN_setup_pl_ride_on(sendo); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + case mChoice_CHOICE1: + mDemo_Set_OrderValue(mDemo_ORDER_NPC0, 9, 0); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + break; + } } - } } static void aSEN_chk_exist_island_data_in_agb2_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_IsIsland()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Confirmed an island is loaded on the GBA */ - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB2); - break; - } + switch (mGcgba_IsIsland()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Confirmed an island is loaded on the GBA */ + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB2); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } - default: - { - /* Failed to communicate with GBA */ - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + default: { + /* Failed to communicate with GBA */ + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3086)); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT); - break; + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3086)); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT); + break; + } } - } } static void aSEN_chk_read_agb2_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_CHK_REWRITE_FOR_AGB, aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, aSEN_TALK_END_WAIT }; - static int msg_no[] = { 0x3087, 0x3086, 0x308A }; - int talk_act = -1; + static u8 next_talk_idx[] = { + aSEN_TALK_CHK_REWRITE_FOR_AGB, + aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, + aSEN_TALK_END_WAIT, + }; + static int msg_no[] = { 0x3087, 0x3086, 0x308A }; + int talk_act = -1; - switch (mGcgba_CheckRecv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Read the island from the GBA */ - mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); - if (aSEN_compare_ram_island_and_agb_island() == TRUE) { - talk_act = 1; - } - else { - talk_act = 0; - } - break; + switch (mGcgba_CheckRecv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { + case GBA2_GBA_STATE_SUCCESS: { + /* Read the island from the GBA */ + mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); + if (aSEN_compare_ram_island_and_agb_island() == TRUE) { + talk_act = 1; + } else { + talk_act = 0; + } + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + talk_act = 2; + sendo->next_action = 2; + break; + } } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; + if (talk_act != -1) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_free_str(msg_p, mMsg_FREE_STR1, Common_Get(agb_island).name, mISL_ISLAND_NAME_LEN); + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); } - - default: - { - /* Failed to communicate with GBA */ - talk_act = 2; - sendo->next_action = 2; - break; - } - } - - if (talk_act != -1) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Set_free_str(msg_p, mMsg_FREE_STR1, Common_Get(agb_island).name, mISL_ISLAND_NAME_LEN); - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); - } } static void aSEN_chk_power_agb3_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_ConnectEnabled()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Successfully communicated with GBA */ - lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB3); - break; + switch (mGcgba_ConnectEnabled()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Successfully communicated with GBA */ + lbRTC_TimeCopy(&Save_Get(island).renew_time, Common_GetPointer(time.rtc_time)); + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_EXIST_ISLAND_DATA_IN_AGB3); + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + + /* Try up to 5 times to connect with the GBA */ + sendo->gba_comm_tries++; + if (sendo->gba_comm_tries >= 5) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3085)); + mMsg_Set_ForceNext(msg_p); + mGcgba_EndComm(); + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + } else { + mGcgba_InitVar(); + } + + break; + } } - - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } - - default: - { - /* Failed to communicate with GBA */ - - /* Try up to 5 times to connect with the GBA */ - sendo->gba_comm_tries++; - if (sendo->gba_comm_tries >= 5) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3085)); - mMsg_Set_ForceNext(msg_p); - mGcgba_EndComm(); - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - } - else{ - mGcgba_InitVar(); - } - - break; - } - } } static void aSEN_chk_exist_island_data_in_agb3_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - switch (mGcgba_IsIsland()) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Confirmed an island is loaded on the GBA */ - mGcgba_InitVar(); - aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB3); - break; - } + switch (mGcgba_IsIsland()) { + case GBA2_GBA_STATE_SUCCESS: { + /* Confirmed an island is loaded on the GBA */ + mGcgba_InitVar(); + aSEN_change_talk_proc(sendo, aSEN_TALK_CHK_READ_AGB3); + break; + } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; - } + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } - default: - { - /* Failed to communicate with GBA */ - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + default: { + /* Failed to communicate with GBA */ + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3086)); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT); - break; + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, 0x3086)); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, aSEN_TALK_TRANS_PRG_FOR_AGB_START_WAIT); + break; + } } - } } static void aSEN_chk_read_agb3_talk_proc(NPC_SENDO_ACTOR* sendo, GAME_PLAY* play) { - static u8 next_talk_idx[] = { aSEN_TALK_CHK_REWRITE_FOR_AGB, aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, aSEN_TALK_END_WAIT }; - static int msg_no[] = { 0x30BA, 0x3086, 0x308A }; - int talk_act = -1; + static u8 next_talk_idx[] = { aSEN_TALK_CHK_REWRITE_FOR_AGB, aSEN_TALK_TRANS_DATA_FOR_AGB_START_WAIT, + aSEN_TALK_END_WAIT }; + static int msg_no[] = { 0x30BA, 0x3086, 0x308A }; + int talk_act = -1; - switch (mGcgba_CheckRecv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { - case GBA2_GBA_STATE_SUCCESS: - { - /* Read the island from the GBA */ - mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); - if (aSEN_compare_ram_island_and_agb_island() == TRUE) { - talk_act = 1; - } - else { - talk_act = 0; - } - break; + switch (mGcgba_CheckRecv((u8*)Common_GetPointer(agb_island), sizeof(Common_Get(agb_island)))) { + case GBA2_GBA_STATE_SUCCESS: { + /* Read the island from the GBA */ + mISL_agb_to_gc(Common_GetPointer(transfer_island), Common_GetPointer(agb_island)); + if (aSEN_compare_ram_island_and_agb_island() == TRUE) { + talk_act = 1; + } else { + talk_act = 0; + } + break; + } + + case GBA2_GBA_STATE_TRANSMITTING: { + /* Communication in progress */ + break; + } + + default: { + /* Failed to communicate with GBA */ + talk_act = 2; + sendo->next_action = 2; + break; + } } - case GBA2_GBA_STATE_TRANSMITTING: - { - /* Communication in progress */ - break; + if (talk_act != -1) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + mMsg_Set_free_str(msg_p, mMsg_FREE_STR1, Common_Get(agb_island).name, mISL_ISLAND_NAME_LEN); + mMsg_Unset_LockContinue(msg_p); + mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); + mMsg_Set_ForceNext(msg_p); + aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); } - - default: - { - /* Failed to communicate with GBA */ - talk_act = 2; - sendo->next_action = 2; - break; - } - } - - if (talk_act != -1) { - mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); - - mMsg_Set_free_str(msg_p, mMsg_FREE_STR1, Common_Get(agb_island).name, mISL_ISLAND_NAME_LEN); - mMsg_Unset_LockContinue(msg_p); - mMsg_ChangeMsgData(msg_p, aSEN_get_msg_no(sendo, msg_no[talk_act])); - mMsg_Set_ForceNext(msg_p); - aSEN_change_talk_proc(sendo, next_talk_idx[talk_act]); - } } static void aSEN_change_talk_proc(NPC_SENDO_ACTOR* sendo, u8 talk_idx) { - static aSEN_PROC talk_proc[aSEN_TALK_NUM] = { - (aSEN_PROC)&none_proc1, - aSEN_sing_end_wait_talk_proc, - aSEN_pl_ride_on_check_talk_proc, - aSEN_chk_exist_island_data_in_ram_talk_proc, - aSEN_msg_win_close_wait_talk_proc, - aSEN_get_island_name_menu_start_wait_talk_proc, - aSEN_get_island_name_menu_end_wait_talk_proc, - aSEN_msg_win_open_wait_talk_proc, - aSEN_pl_ride_on_check2_talk_proc, - aSEN_chk_write_for_agb_talk_proc, - aSEN_chk_rewrite_for_agb_talk_proc, - aSEN_trans_data_for_agb_start_wait_talk_proc, - aSEN_trans_data_for_agb_end_wait_talk_proc, - aSEN_trans_data_for_agb_start_wait_talk_proc, - aSEN_trans_prg_for_agb_end_wait_talk_proc, - aSEN_trans_prg2_for_agb_end_wait_talk_proc, - aSEN_chk_power_agb_talk_proc, - aSEN_chk_exist_island_data_in_agb_talk_proc, - aSEN_chk_read_agb_talk_proc, - aSEN_chk_retry_read_agb_talk_proc, - aSEN_chk_use_island_data_in_ram_talk_proc, - aSEN_chk_power_agb2_talk_proc, - aSEN_chk_trans_island_data_from_agb2_talk_proc, - aSEN_chk_exist_island_data_in_agb2_talk_proc, - aSEN_chk_read_agb2_talk_proc, - aSEN_chk_power_agb3_talk_proc, - aSEN_chk_exist_island_data_in_agb3_talk_proc, - aSEN_chk_read_agb3_talk_proc - }; + static aSEN_PROC talk_proc[aSEN_TALK_NUM] = { + (aSEN_PROC)&none_proc1, + aSEN_sing_end_wait_talk_proc, + aSEN_pl_ride_on_check_talk_proc, + aSEN_chk_exist_island_data_in_ram_talk_proc, + aSEN_msg_win_close_wait_talk_proc, + aSEN_get_island_name_menu_start_wait_talk_proc, + aSEN_get_island_name_menu_end_wait_talk_proc, + aSEN_msg_win_open_wait_talk_proc, + aSEN_pl_ride_on_check2_talk_proc, + aSEN_chk_write_for_agb_talk_proc, + aSEN_chk_rewrite_for_agb_talk_proc, + aSEN_trans_data_for_agb_start_wait_talk_proc, + aSEN_trans_data_for_agb_end_wait_talk_proc, + aSEN_trans_data_for_agb_start_wait_talk_proc, + aSEN_trans_prg_for_agb_end_wait_talk_proc, + aSEN_trans_prg2_for_agb_end_wait_talk_proc, + aSEN_chk_power_agb_talk_proc, + aSEN_chk_exist_island_data_in_agb_talk_proc, + aSEN_chk_read_agb_talk_proc, + aSEN_chk_retry_read_agb_talk_proc, + aSEN_chk_use_island_data_in_ram_talk_proc, + aSEN_chk_power_agb2_talk_proc, + aSEN_chk_trans_island_data_from_agb2_talk_proc, + aSEN_chk_exist_island_data_in_agb2_talk_proc, + aSEN_chk_read_agb2_talk_proc, + aSEN_chk_power_agb3_talk_proc, + aSEN_chk_exist_island_data_in_agb3_talk_proc, + aSEN_chk_read_agb3_talk_proc, + }; - sendo->talk_action = talk_idx; - sendo->talk_proc = talk_proc[talk_idx]; + sendo->talk_action = talk_idx; + sendo->talk_proc = talk_proc[talk_idx]; } static void aSEN_set_force_talk_info(ACTOR* actorx) { - static aSEN_talk_request_c dt_tbl[7] = { - { 0x3077, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, - { 0x30BF, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, - { 0x3084, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, - { 0x3091, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_SING_END_WAIT }, - { 0x3096, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_SING_END_WAIT }, - { 0x307A, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, - { 0x308B, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT } - }; + static aSEN_talk_request_c dt_tbl[7] = { + { 0x3077, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, + { 0x30BF, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, + { 0x3084, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, + { 0x3091, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_SING_END_WAIT }, + { 0x3096, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_SING_END_WAIT }, + { 0x307A, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, + { 0x308B, 0, CAMERA2_PROCESS_NORMAL, 2, aSEN_TALK_END_WAIT }, + }; - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - aSEN_talk_request_c* talk_request = &dt_tbl[sendo->talk_action]; - - mDemo_Set_msg_num(aSEN_get_msg_no(sendo, talk_request->msg_no)); - mDemo_Set_talk_turn(talk_request->player_talk_turn); - mDemo_Set_camera(talk_request->msg_camera_type); - mDemo_Set_talk_change_player(0); - mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(island).name, mISL_ISLAND_NAME_LEN); - sendo->npc_class.talk_info.turn = talk_request->sendo_talk_turn; - aSEN_change_talk_proc(sendo, talk_request->talk_act); -} - -static void aSEN_force_talk_request(ACTOR* actorx, GAME* game) { - mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aSEN_set_force_talk_info); -} - -static void aSEN_set_norm_talk_info(ACTOR* actorx) { - static aSEN_talk_request_c dt_tbl[7] = { - { 0x3073, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK }, - { 0x30B9, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK }, - { 0x3080, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK2 }, - { 0x307B, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_END_WAIT }, - { 0x308C, 1, CAMERA2_PROCESS_TALK, 0, aSEN_TALK_END_WAIT }, - // unused - // unused - }; - - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - - if (Common_Get(clip).aprilfool_control_clip != NULL && (*Common_Get(clip).aprilfool_control_clip->talk_chk_proc)(SP_NPC_SENDO) == FALSE) { - int aprilfool_msg_no = (*Common_Get(clip).aprilfool_control_clip->get_msg_num_proc)(SP_NPC_SENDO, 1); - - mDemo_Set_msg_num(aprilfool_msg_no); - mDemo_Set_talk_turn(1); - mDemo_Set_camera(CAMERA2_PROCESS_TALK); - sendo->npc_class.talk_info.turn = 0; - aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); - } - else { + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; aSEN_talk_request_c* talk_request = &dt_tbl[sendo->talk_action]; mDemo_Set_msg_num(aSEN_get_msg_no(sendo, talk_request->msg_no)); mDemo_Set_talk_turn(talk_request->player_talk_turn); mDemo_Set_camera(talk_request->msg_camera_type); + mDemo_Set_talk_change_player(0); mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(island).name, mISL_ISLAND_NAME_LEN); sendo->npc_class.talk_info.turn = talk_request->sendo_talk_turn; aSEN_change_talk_proc(sendo, talk_request->talk_act); - } +} + +static void aSEN_force_talk_request(ACTOR* actorx, GAME* game) { + mDemo_Request(mDemo_TYPE_SPEAK, actorx, &aSEN_set_force_talk_info); +} + +static void aSEN_set_norm_talk_info(ACTOR* actorx) { + static aSEN_talk_request_c dt_tbl[7] = { + { 0x3073, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK }, + { 0x30B9, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK }, + { 0x3080, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_PL_RIDE_ON_CHECK2 }, + { 0x307B, 1, CAMERA2_PROCESS_TALK, 1, aSEN_TALK_END_WAIT }, + { 0x308C, 1, CAMERA2_PROCESS_TALK, 0, aSEN_TALK_END_WAIT }, + // unused + // unused + }; + + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; + + if (Common_Get(clip).aprilfool_control_clip != NULL && + (*Common_Get(clip).aprilfool_control_clip->talk_chk_proc)(SP_NPC_SENDO) == FALSE) { + int aprilfool_msg_no = (*Common_Get(clip).aprilfool_control_clip->get_msg_num_proc)(SP_NPC_SENDO, 1); + + mDemo_Set_msg_num(aprilfool_msg_no); + mDemo_Set_talk_turn(1); + mDemo_Set_camera(CAMERA2_PROCESS_TALK); + sendo->npc_class.talk_info.turn = 0; + aSEN_change_talk_proc(sendo, aSEN_TALK_END_WAIT); + } else { + aSEN_talk_request_c* talk_request = &dt_tbl[sendo->talk_action]; + + mDemo_Set_msg_num(aSEN_get_msg_no(sendo, talk_request->msg_no)); + mDemo_Set_talk_turn(talk_request->player_talk_turn); + mDemo_Set_camera(talk_request->msg_camera_type); + mMsg_Set_free_str(mMsg_Get_base_window_p(), mMsg_FREE_STR0, Save_Get(island).name, mISL_ISLAND_NAME_LEN); + sendo->npc_class.talk_info.turn = talk_request->sendo_talk_turn; + aSEN_change_talk_proc(sendo, talk_request->talk_act); + } } static void aSEN_norm_talk_request(ACTOR* actorx, GAME* game) { - mDemo_Request(mDemo_TYPE_TALK, actorx, &aSEN_set_norm_talk_info); + mDemo_Request(mDemo_TYPE_TALK, actorx, &aSEN_set_norm_talk_info); } static int aSEN_talk_init(ACTOR* actorx, GAME* game) { - mDemo_Set_ListenAble(); - return TRUE; + mDemo_Set_ListenAble(); + return TRUE; } static int aSEN_talk_end_chk(ACTOR* actorx, GAME* game) { - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - GAME_PLAY* play = (GAME_PLAY*)game; + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; - int res = FALSE; - - (*sendo->talk_proc)(sendo, play); - if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { - aSEN_setup_think_proc(sendo, play, sendo->next_action); - res = TRUE; - } + int res = FALSE; - return res; + (*sendo->talk_proc)(sendo, play); + if (mDemo_Check(mDemo_TYPE_SPEAK, actorx) == FALSE && mDemo_Check(mDemo_TYPE_TALK, actorx) == FALSE) { + aSEN_setup_think_proc(sendo, play, sendo->next_action); + res = TRUE; + } + + return res; } static void aSEN_set_matrix(NPC_SENDO_ACTOR* sendo) { - BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)sendo->npc_class.actor_class.parent_actor; - if (boat_demo != NULL) { - BOAT_ACTOR* boat = (BOAT_ACTOR*)boat_demo->boat_actor; + if (boat_demo != NULL) { + BOAT_ACTOR* boat = (BOAT_ACTOR*)boat_demo->boat_actor; - if (boat != NULL) { - Matrix_translate(boat->actor_class.world.position.x, boat->actor_class.world.position.y, boat->actor_class.world.position.z, 0); - Matrix_RotateY(boat->actor_class.shape_info.rotation.y, 1); - Matrix_RotateZ(boat->actor_class.shape_info.rotation.z, 1); - Matrix_translate(-8.0f, 20.0f, -34.0f, 1); - Matrix_RotateY(sendo->npc_class.actor_class.shape_info.rotation.y, 1); - Matrix_get(&aSEN_matrix); - Matrix_Position_Zero(&sendo->npc_class.actor_class.world.position); + if (boat != NULL) { + Matrix_translate(boat->actor_class.world.position.x, boat->actor_class.world.position.y, + boat->actor_class.world.position.z, 0); + Matrix_RotateY(boat->actor_class.shape_info.rotation.y, 1); + Matrix_RotateZ(boat->actor_class.shape_info.rotation.z, 1); + Matrix_translate(-8.0f, 20.0f, -34.0f, 1); + Matrix_RotateY(sendo->npc_class.actor_class.shape_info.rotation.y, 1); + Matrix_get(&aSEN_matrix); + Matrix_Position_Zero(&sendo->npc_class.actor_class.world.position); - sendo->npc_class._174 = boat->actor_class.shape_info.rotation; + sendo->npc_class._174 = boat->actor_class.shape_info.rotation; + } } - } } static void aSEN_actor_move(ACTOR* actorx, GAME* game) { - NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; + NPC_SENDO_ACTOR* sendo = (NPC_SENDO_ACTOR*)actorx; - aSEN_set_matrix(sendo); + aSEN_set_matrix(sendo); - if (sendo->npc_class.draw._5BE == 1) { - sAdos_GetKappaCounter(&sendo->kappa_counter); - aSEN_set_anime_current(sendo); - } + if (sendo->npc_class.draw._5BE == 1) { + sAdos_GetKappaCounter(&sendo->kappa_counter); + aSEN_set_anime_current(sendo); + } - (*Common_Get(clip).npc_clip->move_proc)(actorx, game); + (*Common_Get(clip).npc_clip->move_proc)(actorx, game); } diff --git a/src/ac_shop_design.c b/src/ac_shop_design.c new file mode 100644 index 00000000..5db792a1 --- /dev/null +++ b/src/ac_shop_design.c @@ -0,0 +1,451 @@ +#include "ac_shop_design.h" + +#include "m_common_data.h" +#include "m_name_table.h" + +static void Shop_Design_Actor_ct(ACTOR* actorx, GAME* game); +static void Shop_Design_Actor_dt(ACTOR* actorx, GAME* game); +static void Shop_Design_Actor_move(ACTOR* actorx, GAME* game); +static void Shop_Design_Actor_draw(ACTOR* actorx, GAME* game); + +ACTOR_PROFILE Shop_Design_Profile = { + mAc_PROFILE_SHOP_DESIGN, + ACTOR_PART_CONTROL, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(SHOP_DESIGN_ACTOR), + &Shop_Design_Actor_ct, + &Shop_Design_Actor_dt, + &Shop_Design_Actor_move, + &Shop_Design_Actor_draw, + NULL, +}; + +static mActor_name_t aSD_ItemName2ReservePointName(mActor_name_t item) { + int tanuki_shop_status = Common_Get(tanuki_shop_status); + + if (tanuki_shop_status == mSP_TANUKI_SHOP_STATUS_EVENT) { + return RSV_SHOP_EVENT; + } + + if (item == ITM_SIGNBOARD) { + return RSV_SHOP_SIGNBOARD; + } + + if (ITEM_IS_FTR(item)) { + return RSV_SHOP_FTR; + } + + if (item == RSV_SHOP_SOLD_FTR) { + return RSV_SHOP_FTR; + } + + if ((item >= ITM_PAPER_START && item <= ITM_PAPER_END) || (item >= ITM_DIARY00 && item <= ITM_DIARY15)) { + return RSV_SHOP_PAPER; + } + + if (item == RSV_SHOP_SOLD_PAPER) { + return RSV_SHOP_PAPER; + } + + if (item >= ITM_CARPET_START && item <= (ITM_CARPET_END - 4)) { + return RSV_SHOP_CARPET; + } + + if (item == RSV_SHOP_SOLD_CARPET) { + return RSV_SHOP_CARPET; + } + + if (item >= ITM_WALL_START && item <= (ITM_WALL_END - 4)) { + return RSV_SHOP_WALL; + } + + if (item == RSV_SHOP_SOLD_WALL) { + return RSV_SHOP_WALL; + } + + if (item >= ITM_CLOTH_START && item <= ITM_CLOTH_END) { + return RSV_SHOP_CLOTH; + } + + if (item == RSV_SHOP_SOLD_CLOTH) { + return RSV_SHOP_CLOTH; + } + + if (item >= ITM_TOOL_START && item <= ITM_TOOL_END) { + if (item >= ITM_UMBRELLA_START && item <= (ITM_UMBRELLA_END - 1)) { + return RSV_SHOP_UMBRELLA; + } + + if (item >= ITM_RED_PAINT && item <= ITM_BROWN_PAINT) { + return RSV_SHOP_PAINT; + } + + /* @BUG - this is impossible to reach, maybe signboard used to be in the TOOL category before? */ + if (item == ITM_SIGNBOARD) { + return RSV_SHOP_SIGNBOARD; + } + + return RSV_SHOP_TOOL; + } + + if (item == RSV_SHOP_SOLD_TOOL) { + return RSV_SHOP_TOOL; + } + + if (item == RSV_SHOP_SOLD_UMBRELLA) { + return RSV_SHOP_UMBRELLA; + } + + if (item == RSV_SHOP_SOLD_PAINT) { + return RSV_SHOP_PAINT; + } + + if (item == RSV_SHOP_SOLD_SIGNBOARD) { + return RSV_SHOP_SIGNBOARD; + } + + if ((item >= ITM_SAPLING && item <= ITM_CEDAR_SAPLING) || + ((item >= ITM_WHITE_PANSY_BAG && item <= ITM_YELLOW_TULIP_BAG && + tanuki_shop_status == mSP_TANUKI_SHOP_STATUS_HALLOWEEN))) { + return RSV_SHOP_HALLOWEEN; + } + + if ((item >= ITM_WHITE_PANSY_BAG && item <= ITM_YELLOW_TULIP_BAG) || item == ITM_FOOD_CANDY) { + return RSV_SHOP_PLANT; + } + + return EMPTY_NO; +} + +static void aSD_MakeHukubukuroFg(void) { + static mActor_name_t reserve_table[] = { + RSV_SHOP_TOOL, RSV_SHOP_SIGNBOARD, RSV_SHOP_PAINT, RSV_SHOP_PAPER, RSV_SHOP_HALLOWEEN, RSV_SHOP_PLANT, + }; + int n = Save_Get(shop).flowers_candy_grab_bag_count; + int i; + + /* Search all reserve items */ + for (i = 0; i < ARRAY_COUNT(reserve_table); i++) { + /* Replace all reserve items of this type to grab bags */ + while (n > 0 && mSP_SetGoods2ReservedPoint(ITM_HUKUBUKURO_BAG, reserve_table[i]) != FALSE) { + n--; + } + } + + /* Search all reserve items */ + for (i = 0; i < ARRAY_COUNT(reserve_table); i++) { + /* Replace any left with reserve RSV_SHOP_SOLD_PLANT */ + while (mSP_SetGoods2ReservedPoint(RSV_SHOP_SOLD_PLANT, reserve_table[i]) != FALSE) {} + } +} + +static void aSD_MakePlantFg_normal(void) { + while (mSP_SetGoods2ReservedPoint(RSV_SHOP_SOLD_PLANT, RSV_SHOP_HALLOWEEN) != FALSE) {} + while (mSP_SetGoods2ReservedPoint(RSV_SHOP_SOLD_PLANT, RSV_SHOP_PLANT) != FALSE) {} +} + +static void aSD_MakePlantFg_hal(void) { + int n = Save_Get(shop).flowers_candy_grab_bag_count; + + /* Fill plant spots with candy */ + while (n > 0 && mSP_SetGoods2ReservedPoint(ITM_FOOD_CANDY, RSV_SHOP_PLANT) != FALSE) { + n--; + } + + /* Clear the remaining plant reserve spots */ + while (mSP_SetGoods2ReservedPoint(RSV_SHOP_SOLD_PLANT, RSV_SHOP_PLANT) != FALSE) {} +} + +static void aSD_MakePlantFg(void) { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_HALLOWEEN) { + aSD_MakePlantFg_hal(); + } else { + aSD_MakePlantFg_normal(); + } +} + +static void aSD_MakeGoodsFg(mActor_name_t* goods_p, int count) { + int i; + + for (i = 0; i < count; i++) { + if (goods_p[i] != EMPTY_NO) { + mActor_name_t reserve_name = aSD_ItemName2ReservePointName(goods_p[i]); + + if (reserve_name != EMPTY_NO) { + mSP_SetGoods2ReservedPoint(goods_p[i], reserve_name); + } + } + } +} + +/* Mispelling of 'rare' */ +static void aSD_MakeReaGoodsFg(mActor_name_t item) { + if (item != EMPTY_NO) { + mSP_SetGoods2ReservedPoint(item, RSV_SHOP_RARE); + } +} + +static void aSD_MakeLotteryGoodsFg(mActor_name_t* lottery_items) { + mSP_SetGoods2ReservedPoint(lottery_items[2], RSV_SHOP_FTR); + mSP_SetGoods2ReservedPoint(lottery_items[0], RSV_SHOP_FTR); + mSP_SetGoods2ReservedPoint(lottery_items[1], RSV_SHOP_FTR); +} + +static mActor_name_t aSD_UnitNum2ItemNo(int ux, int uz); +static int aSD_ReportGoodsSales(int ux, int uz); + +static void aSD_SetClipProc(ACTOR* actorx, int clear) { + SHOP_DESIGN_ACTOR* shop_design = (SHOP_DESIGN_ACTOR*)actorx; + + if (clear) { + Common_Get(clip).shop_design_clip = NULL; + } else { + Common_Get(clip).shop_design_clip = &shop_design->clip; + shop_design->clip.design_actor = shop_design; + shop_design->clip.unitNum2ItemNo_proc = &aSD_UnitNum2ItemNo; + shop_design->clip.reportGoodsSale_proc = &aSD_ReportGoodsSales; + } +} + +static void aSD_GetGoodsInfo(SHOP_DESIGN_ACTOR* shop_design) { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + int count = 0; + int i; + + shop_design->goods_list = Save_Get(event_save_data).special.event.bargin.items; + shop_design->goods_list_max = mEv_BARGIN_ITEM_NUM; + for (i = 0; i < mEv_BARGIN_ITEM_NUM; i++) { + if (shop_design->goods_list[i] != EMPTY_NO) { + count++; + } + } + shop_design->goods_list_count = count; + } else { + shop_design->goods_list = Save_Get(shop).items; + shop_design->goods_list_count = mSP_CountElementInGoodsList(); + shop_design->goods_list_max = mSP_GOODS_COUNT; + } + + /* Check if player is from a different town and, if so, set the flag for Nookington's */ + mSP_SetNewVisitor(); +} + +static void aSD_SetReservedPointFill000(void) { + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(0, 0); + int i; + + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_p[i] >= RSV_SHOP_PAPER && fg_p[i] <= RSV_SHOP_SIGNBOARD) { + fg_p[i] = RSV_NO; // TODO: I suppose RSV_NO is actually called 'FILL000' + } + } +} + +static void Shop_Design_Actor_ct(ACTOR* actorx, GAME* game) { + SHOP_DESIGN_ACTOR* shop_design = (SHOP_DESIGN_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + int scene_no = Save_Get(scene_no); + + actorx->actor_specific = -1; // no valid shop type + if (scene_no == SCENE_SHOP0) { + actorx->actor_specific = 0; + } else if (scene_no == SCENE_CONVENI) { + actorx->actor_specific = 1; + } else if (scene_no == SCENE_SUPER) { + actorx->actor_specific = 2; + } else if (scene_no == SCENE_DEPART) { + actorx->actor_specific = 3; + } + + /* Check if the shop is currently having the monthly lottery raffle */ + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI && actorx->actor_specific != -1) { + /* garagara likely referes to ガラガラ抽選 or 'raffle drum/rattle lottery' */ + static xyz_t garagara_set_table[] = { + { 160.0f, 60.0f, 190.0f }, /* Nook's Cranny */ + { 240.0f, 60.0f, 190.0f }, /* Nook 'n' Go */ + { 240.0f, 60.0f, 350.0f }, /* Nookway */ + { 240.0f, 60.0f, 350.0f }, /* Nookington's */ + { 160.0f, 60.0f, 180.0f }, /* Nookington's 2nd floor? */ + }; + + /* Make the raffle drum actor */ + Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_GARAGARA, + garagara_set_table[actorx->actor_specific].x, + garagara_set_table[actorx->actor_specific].y, + garagara_set_table[actorx->actor_specific].z, 0, 0, 0, -1, -1, -1, EMPTY_NO, 0, -1, -1); + } + + if (scene_no == SCENE_SHOP0 || scene_no == SCENE_CONVENI || scene_no == SCENE_SUPER || scene_no == SCENE_DEPART || + scene_no == SCENE_DEPART_2) { + aSD_GetGoodsInfo(shop_design); + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + aSD_MakeLotteryGoodsFg(Save_Get(shop).lottery_items); + } else { + aSD_MakeGoodsFg(shop_design->goods_list, shop_design->goods_list_count); + if (Common_Get(tanuki_shop_status) != mSP_TANUKI_SHOP_STATUS_EVENT) { + aSD_MakeReaGoodsFg(Save_Get(shop).rare_item); + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_HUKUBUKURO_SALE) { + aSD_MakeHukubukuroFg(); + } else { + aSD_MakePlantFg(); + } + } + } + + aSD_SetReservedPointFill000(); + aSD_SetClipProc(actorx, FALSE); + } +} + +static void Shop_Design_Actor_dt(ACTOR* actorx, GAME* game) { + aSD_SetClipProc(actorx, TRUE); +} + +static void Shop_Design_Actor_draw(ACTOR* actorx, GAME* game) { + // nothing +} + +static void Shop_Design_Actor_move(ACTOR* actorx, GAME* game) { + // nothing +} + +static mActor_name_t aSD_UnitNum2ItemNo(int ux, int uz) { + int bx = ux / UT_X_NUM; + int bz = uz / UT_Z_NUM; + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + int local_ux = ux - bx * UT_X_NUM; + int local_uz = uz - bz * UT_Z_NUM; + mActor_name_t item = fg_p[local_ux + local_uz * UT_X_NUM]; + + if ((item >= RSV_SHOP_FE0D && item <= RSV_SHOP_SOLD_SIGNBOARD)) { + return RSV_NO; + } + + if ( + // clang-format off + ITEM_IS_FTR(item) || + (item >= ITM_PAPER_START && item <= ITM_PAPER_END) || + (item >= ITM_CARPET_START && item <= ITM_CARPET_END - 4) || + (item >= ITM_WALL_START && item <= ITM_WALL_END - 4) || + (item >= ITM_CLOTH_START && item <= ITM_CLOTH_END) || + (item >= ITM_TOOL_START && item <= ITM_TOOL_END) || + (item >= ITM_SAPLING && item <= ITM_CEDAR_SAPLING) || + (item >= ITM_WHITE_PANSY_BAG && item <= ITM_YELLOW_TULIP_BAG) || + (item >= ITM_DIARY00 && item <= ITM_DIARY15) || + (item == ITM_FOOD_CANDY) || + (item == RSV_FE1F) || + (item == ITM_HUKUBUKURO_BAG) || + (item == ITM_SIGNBOARD) + // clang-format on + ) { + if (item == RSV_FE1F) { + if (Common_Get(clip).my_room_clip != NULL) { + mActor_name_t ftr_item; + + Common_Get(clip).my_room_clip->unitNum2ftrItemNoftrId_proc(&ftr_item, NULL, ux, uz, mCoBG_LAYER0); + return ftr_item; + } else { + return RSV_NO; + } + } else { + return item; + } + } else { + return RSV_NO; + } +} + +static int aSD_ReportGoodsSales(int ux, int uz) { + mActor_name_t item = aSD_UnitNum2ItemNo(ux, uz); + u32 price = mSP_ItemNo2ItemPrice(item); + mActor_name_t rsv_item = EMPTY_NO; + + if (Common_Get(clip).shop_design_clip != NULL) { + SHOP_DESIGN_ACTOR* shop_design = Common_Get(clip).shop_design_clip->design_actor; + + mSP_PlusSales(price); + if (item == ITM_HUKUBUKURO_BAG) { + mSP_ShopSaleReport(item, shop_design->goods_list, shop_design->goods_list_max, RSV_SHOP_SOLD_PLANT); + mFI_UtNumtoFGSet_common(RSV_SHOP_SOLD_PLANT, ux, uz, FALSE); + return FALSE; + } else if ((item >= ITM_SAPLING && item <= ITM_CEDAR_SAPLING) || + (item >= ITM_WHITE_PANSY_BAG && item <= ITM_YELLOW_TULIP_BAG) || item == ITM_FOOD_CANDY) { + if (mSP_ShopSaleReport(item, shop_design->goods_list, shop_design->goods_list_max, RSV_SHOP_SOLD_PLANT)) { + return TRUE; + } else { + mFI_UtNumtoFGSet_common(RSV_SHOP_SOLD_PLANT, ux, uz, FALSE); + return FALSE; + } + } else if (item >= ITM_CLOTH_START && item <= ITM_CLOTH_END) { + mSP_ShopSaleReport(item, shop_design->goods_list, shop_design->goods_list_max, RSV_SHOP_SOLD_CLOTH); + Common_Get(clip).shop_manekin_clip->change2naked_manekin_proc(ux, uz); + mFI_UtNumtoFGSet_common(RSV_NO, ux, uz, FALSE); + return FALSE; + } else if (ITEM_IS_FTR(item) && Common_Get(clip).my_room_clip != NULL) { + mActor_name_t ftr_item; + int ftrID; + + Common_Get(clip).my_room_clip->unitNum2ftrItemNoftrId_proc(&ftr_item, &ftrID, ux, uz, mCoBG_LAYER0); + Common_Get(clip).my_room_clip->ftrId2extinguishFtr_proc(ftrID); + if (item == Save_Get(shop).rare_item) { + rsv_item = RSV_SHOP_SOLD_RARE; + } else { + rsv_item = RSV_SHOP_SOLD_FTR; + } + } + + if (item >= ITM_CARPET_START && item <= (ITM_CARPET_END - 4)) { + rsv_item = RSV_SHOP_SOLD_CARPET; + } + + if (item >= ITM_WALL_START && item <= (ITM_WALL_END - 4)) { + rsv_item = RSV_SHOP_SOLD_WALL; + } + + if (item == ITM_SIGNBOARD) { + rsv_item = RSV_SHOP_SOLD_SIGNBOARD; + } + + if (item >= ITM_TOOL_START && item <= ITM_TOOL_END) { + if (item >= ITM_UMBRELLA_START && item <= (ITM_UMBRELLA_END - 1)) { + if (Common_Get(clip).shop_umbrella_clip != NULL) { + Common_Get(clip).shop_umbrella_clip->delete_umbrella_proc(ux, uz); + } + + rsv_item = RSV_SHOP_SOLD_UMBRELLA; + } else if (item >= ITM_RED_PAINT && item <= ITM_BROWN_PAINT) { + rsv_item = RSV_SHOP_SOLD_PAINT; + } else if (item == ITM_SIGNBOARD) { + rsv_item = RSV_SHOP_SOLD_SIGNBOARD; + } else { + rsv_item = RSV_SHOP_SOLD_TOOL; + } + } + + if (item >= ITM_PAPER_START && item <= ITM_PAPER_END) { + return TRUE; + } + + if (item >= ITM_DIARY00 && item <= ITM_DIARY15) { + rsv_item = RSV_SHOP_SOLD_PAPER; + } + + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT && mEv_CheckEvent(mEv_SPNPC_SHOP) == FALSE) { + return FALSE; + } + + if (rsv_item != EMPTY_NO) { + if (mSP_ShopSaleReport(item, shop_design->goods_list, shop_design->goods_list_max, rsv_item)) { + return TRUE; + } + + mFI_UtNumtoFGSet_common(rsv_item, ux, uz, FALSE); + } + + return FALSE; + } else { + return FALSE; + } +} diff --git a/src/ac_shop_goods.c b/src/ac_shop_goods.c new file mode 100644 index 00000000..a3155114 --- /dev/null +++ b/src/ac_shop_goods.c @@ -0,0 +1,528 @@ +#include "ac_shop_goods.h" + +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_rcp.h" +#include "sys_matrix.h" +#include "ac_my_room.h" +#include "m_malloc.h" + +static void Shop_Goods_Actor_ct(ACTOR* actorx, GAME* game); +static void Shop_Goods_Actor_dt(ACTOR* actorx, GAME* game); +static void Shop_Goods_Actor_move(ACTOR* actorx, GAME* game); +static void Shop_Goods_Actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Shop_Goods_Profile = { + mAc_PROFILE_SHOP_GOODS, + ACTOR_PART_CONTROL, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_SHOP_GOODS, + sizeof(SHOP_GOODS_ACTOR), + &Shop_Goods_Actor_ct, + &Shop_Goods_Actor_dt, + &Shop_Goods_Actor_move, + &Shop_Goods_Actor_draw, + NULL, +}; +// clang-format on + +#define aSG_DATA_ROTATE_Y_FLAG (1 << 0) + +#include "../src/ac_shop_goods_data.c_inc" + +#define aSG_SCALE_FLAG (1 << 0) + +static s16 SG_angle_y[UT_Z_NUM][UT_X_NUM]; +static SHOP_GOODS_ACTOR* Glb_shop_goods_actor; +static int picture_count; +static s16 mode; + +static s16 Shop_Goods_Actor_single_get_angle_y(int ut_z, int ut_x, int layer) { + if (layer == mCoBG_LAYER1) { + return SG_angle_y[ut_z][ut_x]; + } + + return 0; +} + +static void Shop_Goods_Actor_single_set_angle_y(int ut_z, int ut_x, int layer, s16 angle_y) { + if (layer == mCoBG_LAYER1) { + SG_angle_y[ut_z][ut_x] = angle_y; + } +} + +static void Shop_Goods_draw_ta_set(GAME* game) { + OPEN_DISP(game->graph); + + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_DOLPHIN); + gDPSetTextureAdjustMode(NEXT_POLY_XLU_DISP, G_TA_DOLPHIN); + + CLOSE_DISP(game->graph); +} + +static void Shop_Goods_draw_ta_clr(GAME* game) { + OPEN_DISP(game->graph); + + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_N64); + gDPSetTextureAdjustMode(NEXT_POLY_XLU_DISP, G_TA_N64); + + CLOSE_DISP(game->graph); +} + +static int Shop_Goods_Actor_drop_entry(SHOP_GOODS_ACTOR* shop_goods, mActor_name_t item, xyz_t* now_pos, + xyz_t* target_pos, s16 layer, int timer, u16 flags); + +static int Shop_Goods_Actor_player_drop_entry(GAME* game, mActor_name_t item, int ut_x, int ut_z, int layer, + int delay_timer) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + int res = 0; + xyz_t now_pos; + xyz_t target_pos; + mActor_name_t* fg_p; + + target_pos.x = 0.0f; + target_pos.y = 0.0f; + target_pos.z = 0.0f; + + mFI_UtNum2CenterWpos(&target_pos, ut_x, ut_z); + + if (layer == mCoBG_LAYER0) { + target_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(target_pos, -1.0f); + } else { + target_pos.y = mCoBG_GetBgY_AngleS_FromWpos(NULL, target_pos, -1.0f); + } + + if (layer == mCoBG_LAYER0) { + fg_p = mFI_GetUnitFG(target_pos); + } else { + fg_p = mFI_GetUnitFG2(target_pos); + } + + if (*fg_p == EMPTY_NO) { + xyz_t_move(&now_pos, &player_actor->world.position); + now_pos.y += 50.0f; + + if (Shop_Goods_Actor_drop_entry(Glb_shop_goods_actor, item, &now_pos, &target_pos, layer, delay_timer, 1)) { + if (layer == mCoBG_LAYER0) { + mFI_SetFG_common(RSV_NO, target_pos, FALSE); + } else { + mFI_SetFG2(RSV_NO, target_pos); + } + + if (layer == mCoBG_LAYER1) { + SG_angle_y[ut_z][ut_x] = 0; + } + + res = 1; + aMR_ThrowItem_FurnitureLock(); + } + } else { + res = -1; + } + + return res; +} + +static int Shop_Goods_Actor_drop_entry(SHOP_GOODS_ACTOR* shop_goods, mActor_name_t item, xyz_t* now_pos, + xyz_t* target_pos, s16 layer, int delay_timer, u16 flags) { + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + int i; + f32 dist_xz; + f32 dist_y; + int res = FALSE; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + if (single_draw_p->counter == 0) { + xyz_t_move(&single_draw_p->start_pos, now_pos); + xyz_t_move(&single_draw_p->current_pos, now_pos); + xyz_t_move(&single_draw_p->target_pos, target_pos); + single_draw_p->item = item; + single_draw_p->layer = layer; + single_draw_p->angle.y = search_position_angleY(&single_draw_p->current_pos, &single_draw_p->target_pos); + single_draw_p->flags = flags; + single_draw_p->acceleration_y = -1.2f; + single_draw_p->counter = 1; + single_draw_p->_40 = 0; + single_draw_p->delay_timer = delay_timer; + + if ((flags & 1)) { + single_draw_p->scale = 0.0f; + } else { + single_draw_p->scale = 1.0f; + } + + dist_xz = search_position_distanceXZ(&single_draw_p->target_pos, &single_draw_p->current_pos); + dist_y = single_draw_p->target_pos.y - single_draw_p->current_pos.y; + if (dist_xz != 0.0f) { + f32 tmp = + ((single_draw_p->acceleration_y * 0.5f) + (single_draw_p->acceleration_y * 0.5f) * 28.0f) * 14.0f; + + single_draw_p->velocity_y = (dist_y - tmp) / 28.0f; + } else { + single_draw_p->velocity_y = 0.0f; + } + + res = TRUE; + break; + } + + single_draw_p++; + } + + return res; +} + +static void Shop_Goods_Actor_drop_destruct(SHOP_GOODS_ACTOR* shop_goods) { + int i; + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + if (single_draw_p->counter != 0) { + if (single_draw_p->layer == mCoBG_LAYER0) { + mFI_SetFG_common(single_draw_p->item, single_draw_p->target_pos, FALSE); + } else { + mFI_SetFG2(single_draw_p->item, single_draw_p->target_pos); + } + } + + single_draw_p++; + } +} + +static void Shop_Goods_Actor_drop_move(SHOP_GOODS_ACTOR* shop_goods) { + int i; + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++, single_draw_p++) { + if (single_draw_p->delay_timer > 0) { + single_draw_p->delay_timer--; + continue; + } + + if (single_draw_p->counter != 0) { + f32 percent_xz = (f32)single_draw_p->counter * (1.0f / 30.0f); + + if (percent_xz > 1.0f) { + percent_xz = 1.0f; + } else { + percent_xz = percent_xz; + } + + single_draw_p->velocity_y += single_draw_p->acceleration_y * 0.5f; + single_draw_p->current_pos.y += single_draw_p->velocity_y * 0.5f; + single_draw_p->current_pos.x = + single_draw_p->start_pos.x + percent_xz * (single_draw_p->target_pos.x - single_draw_p->start_pos.x); + single_draw_p->current_pos.z = + single_draw_p->start_pos.z + percent_xz * (single_draw_p->target_pos.z - single_draw_p->start_pos.z); + + if ((single_draw_p->flags & aSG_SCALE_FLAG)) { + single_draw_p->scale = 0.1f + (1.0f - SQ(1.0f - (f32)single_draw_p->counter / 28.0f)) * 0.9f; + } + + if (single_draw_p->counter == 27) { + if (single_draw_p->item == ITM_FOOD_APPLE || single_draw_p->item == ITM_FOOD_CHERRY || + single_draw_p->item == ITM_FOOD_PEAR || single_draw_p->item == ITM_FOOD_PEACH || + single_draw_p->item == ITM_FOOD_ORANGE) { + sAdo_OngenTrgStart(0x127, &single_draw_p->current_pos); + } else if (single_draw_p->item == ITM_MONEY_1000 || single_draw_p->item == ITM_MONEY_10000 || + single_draw_p->item == ITM_MONEY_30000 || single_draw_p->item == ITM_MONEY_100) { + sAdo_OngenTrgStart(0x444, &single_draw_p->current_pos); + } else { + sAdo_OngenTrgStart(0x128, &single_draw_p->current_pos); + } + } + + if (single_draw_p->current_pos.y <= single_draw_p->target_pos.y) { + if (single_draw_p->_40 == 0) { + single_draw_p->flags &= ~aSG_SCALE_FLAG; + single_draw_p->scale = 1.0f; + xyz_t_move(&single_draw_p->current_pos, &single_draw_p->target_pos); + single_draw_p->velocity_y = -single_draw_p->velocity_y * 0.25f; + single_draw_p->_40++; + if (single_draw_p->velocity_y > 3.0f) { + single_draw_p->velocity_y = 3.0f; + } + } else { + if (single_draw_p->layer == mCoBG_LAYER0) { + mFI_SetFG_common(single_draw_p->item, single_draw_p->target_pos, FALSE); + } else { + mFI_SetFG2(single_draw_p->item, single_draw_p->target_pos); + } + + single_draw_p->counter = 0; + aMR_ThrowItem_FurnitureUnlock(); + } + } else { + single_draw_p->counter++; + } + } + } +} + +static void Shop_Goods_Actor_single_drawR(GAME* game, mActor_name_t item, xyz_t* pos, xyz_t* scale, s16 angle_y, + int layer) { + GAME_PLAY* play = (GAME_PLAY*)game; + const aSG_data_c* src_data_p = l_shop_goods_dsp_table; + int i; + + for (i = 0; i < picture_count; i++) { + const aSG_data_c* data_p = &src_data_p[i]; + // Global_light* glight = &((GAME_PLAY*)game)->global_light; + LightsN* lightsN; + + if (item >= data_p->item_start && item <= data_p->item_end) { + int xlu_flag = data_p->xlu_gfx0[mode] != NULL; + GRAPH* graph; + + if (xlu_flag) { + _texture_z_light_fog_prim_xlu(game->graph); + } + + _texture_z_light_fog_prim(game->graph); + + graph = play->game.graph; + OPEN_DISP(graph); + + lightsN = Global_light_read(&play->global_light, graph); + LightsN_list_check(lightsN, play->global_light.list, pos); + LightsN_disp(lightsN, play->game.graph); + + Matrix_translate(pos->x, pos->y, pos->z, 0); + if ((data_p->flags & aSG_DATA_ROTATE_Y_FLAG) && layer == mCoBG_LAYER1) { + Matrix_RotateY(angle_y, 1); + } + Matrix_scale(scale->x, scale->y, scale->z, 1); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_OPA_DISP, data_p->gfx0[mode]); + + if (data_p->gfx1[mode] != NULL) { + gSPDisplayList(NEXT_POLY_OPA_DISP, data_p->gfx1[mode]); + } + + if (xlu_flag != FALSE) { + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_XLU_DISP, data_p->xlu_gfx0[mode]); + + if (data_p->xlu_gfx1[mode] != NULL) { + gSPDisplayList(NEXT_POLY_XLU_DISP, data_p->xlu_gfx1[mode]); + } + } + + CLOSE_DISP(graph); + return; + } + } +} + +static void Shop_Goods_Actor_single_draw(GAME* game, mActor_name_t item, xyz_t* pos, f32 scale, s16 angle_y, + int layer) { + xyz_t xyz_scale; + + Shop_Goods_draw_ta_set(game); + xyz_scale.x = scale; + xyz_scale.y = scale; + xyz_scale.z = scale; + Shop_Goods_Actor_single_drawR(game, item, pos, &xyz_scale, angle_y, layer); + Shop_Goods_draw_ta_clr(game); +} + +static void Shop_Goods_Actor_drop_draw(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + int i; + aSG_single_draw_c* single_draw_p = shop_goods->single_draw; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + if (single_draw_p->counter != 0) { + int ut_x; + int ut_z; + s16 angle_y; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, single_draw_p->target_pos)) { + angle_y = SG_angle_y[ut_z][ut_x]; + } else { + angle_y = 0; + } + + Shop_Goods_Actor_single_draw(game, single_draw_p->item, &single_draw_p->current_pos, + single_draw_p->scale * 0.01f, angle_y, single_draw_p->layer); + } + + single_draw_p++; + } +} + +static int aSG_CountPictureKind(void) { + const aSG_data_c* data_p = l_shop_goods_dsp_table; + int count = 0; + + for (data_p; data_p->item_start != EMPTY_NO || data_p->item_end != EMPTY_NO; data_p++) { + count++; + } + + return count; +} + +static void Shop_Goods_Actor_ct(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + int i; + + shop_goods->picture_count = aSG_CountPictureKind(); + picture_count = shop_goods->picture_count; + + mFI_Wpos2BlockNum(&shop_goods->bx, &shop_goods->bz, actorx->world.position); + shop_goods->bx_pos = (f32)shop_goods->bx * mFI_BK_WORLDSIZE_X_F; + shop_goods->bz_pos = (f32)shop_goods->bz * mFI_BK_WORLDSIZE_Z_F; + + shop_goods->mode = actorx->actor_specific; + mode = shop_goods->mode; + + for (i = 0; i < aSG_SINGLE_DRAW_NUM; i++) { + shop_goods->single_draw[i].counter = 0; + } + + Glb_shop_goods_actor = shop_goods; + + if (Common_Get(clip).shop_goods_clip == NULL) { + Common_Get(clip).shop_goods_clip = (aSG_Clip_c*)zelda_malloc(sizeof(aSG_Clip_c)); + Common_Get(clip).shop_goods_clip->single_draw_proc = &Shop_Goods_Actor_single_draw; + Common_Get(clip).shop_goods_clip->player_drop_entry_proc = &Shop_Goods_Actor_player_drop_entry; + Common_Get(clip).shop_goods_clip->single_get_angle_y_proc = &Shop_Goods_Actor_single_get_angle_y; + Common_Get(clip).shop_goods_clip->single_set_angle_y_proc = &Shop_Goods_Actor_single_set_angle_y; + } +} + +static void Shop_Goods_Actor_dt(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + + Shop_Goods_Actor_drop_destruct(shop_goods); + if (Common_Get(clip).shop_goods_clip != NULL) { + zelda_free(Common_Get(clip).shop_goods_clip); +/* @BUG - shouldn't shop_goods_clip get set to NULL? */ +#ifdef BUGFIXES + Common_Get(clip).shop_goods_clip = NULL; +#endif + } +} + +static void Shop_Goods_Actor_move(ACTOR* actorx, GAME* game) { + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + + Shop_Goods_Actor_drop_move(shop_goods); +} + +static void aSG_DrawGoods(GRAPH* graph, Global_light* glight, SHOP_GOODS_ACTOR* shop_goods, int bx, int bz, int ux, + int uz, const aSG_data_c* data_p, int layer) { + xyz_t pos; + int mode = shop_goods->mode; + Gfx* gfx0 = data_p->gfx0[mode]; + Gfx* gfx1 = data_p->gfx1[mode]; + Gfx* xlu_gfx0 = data_p->xlu_gfx0[mode]; + Gfx* xlu_gfx1 = data_p->xlu_gfx1[mode]; + LightsN* lightsN; + + mFI_BkandUtNum2CenterWpos(&pos, bx, bz, ux, uz); + if (layer == mCoBG_LAYER0) { + pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(pos, 0.0f); + } else { + pos.y = mCoBG_GetBgY_AngleS_FromWpos(NULL, pos, 0.0f); + } + + OPEN_DISP(graph); + + lightsN = Global_light_read(glight, graph); + LightsN_list_check(lightsN, glight->list, &pos); + LightsN_disp(lightsN, graph); + + if (gfx0 != NULL || xlu_gfx0 != NULL) { + Matrix_translate(pos.x, pos.y, pos.z, 0); + if ((data_p->flags & aSG_DATA_ROTATE_Y_FLAG) && layer == mCoBG_LAYER1) { + Matrix_RotateY(SG_angle_y[uz][ux], 1); + } + Matrix_scale(0.01f, 0.01f, 0.01f, 1); + + if (gfx0 != NULL) { + _texture_z_light_fog_prim(graph); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_OPA_DISP, gfx0); + + if (gfx1 != NULL) { + gSPDisplayList(NEXT_POLY_OPA_DISP, gfx1); + } + } + + if (xlu_gfx0 != NULL) { + _texture_z_light_fog_prim_xlu(graph); + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_XLU_DISP, xlu_gfx0); + + if (xlu_gfx1 != NULL) { + gSPDisplayList(NEXT_POLY_XLU_DISP, xlu_gfx1); + } + } + } + + CLOSE_DISP(graph); +} + +static void aSG_DrawGoodsPicture(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Global_light* glight = &play->global_light; + SHOP_GOODS_ACTOR* shop_goods = (SHOP_GOODS_ACTOR*)actorx; + const aSG_data_c* data_p = l_shop_goods_dsp_table; + int picture_count = shop_goods->picture_count; + int bx = shop_goods->bx; + int bz = shop_goods->bz; + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + mActor_name_t* fg2_p = mFI_BkNum2UtFGTop_layer(bx, bz, mCoBG_LAYER1); + s16 mode = shop_goods->mode; + int ux; + int uz; + int i; + + if (fg_p != NULL) { + for (uz = 0; uz < UT_Z_NUM; uz++) { + for (ux = 0; ux < UT_X_NUM; ux++) { + if (*fg_p != RSV_NO) { + for (i = 0; i < picture_count; i++) { + if (*fg_p >= data_p[i].item_start && *fg_p <= data_p[i].item_end) { + aSG_DrawGoods(game->graph, glight, shop_goods, bx, bz, ux, uz, &data_p[i], mCoBG_LAYER0); + break; + } + } + } + + fg_p++; + } + } + } + + if (mode == 1 && fg2_p != NULL) { + for (uz = 0; uz < UT_Z_NUM; uz++) { + for (ux = 0; ux < UT_X_NUM; ux++) { + if (*fg2_p != RSV_NO) { + for (i = 0; i < picture_count; i++) { + if (*fg2_p >= data_p[i].item_start && *fg2_p <= data_p[i].item_end) { + aSG_DrawGoods(game->graph, glight, shop_goods, bx, bz, ux, uz, &data_p[i], mCoBG_LAYER1); + break; + } + } + } + + fg2_p++; + } + } + } +} + +static void Shop_Goods_Actor_draw(ACTOR* actorx, GAME* game) { + _texture_z_light_fog_prim(game->graph); + Shop_Goods_draw_ta_set(game); + aSG_DrawGoodsPicture(actorx, game); + Shop_Goods_draw_ta_clr(game); + Shop_Goods_Actor_drop_draw(actorx, game); +} diff --git a/src/ac_shop_goods_data.c_inc b/src/ac_shop_goods_data.c_inc new file mode 100644 index 00000000..629c242d --- /dev/null +++ b/src/ac_shop_goods_data.c_inc @@ -0,0 +1,971 @@ +extern Gfx obj_apple2_modelT[]; +extern Gfx obj_axeT_mat_model[]; +extern Gfx obj_axeT_gfx_model[]; +extern Gfx obj_paper_mat_model[]; +extern Gfx obj_paper_gfx_model[]; +extern Gfx obj_carpetT_mat_model[]; +extern Gfx obj_carpetT_gfx_model[]; +extern Gfx item_fish_modelT[]; +extern Gfx obj_shop_fossil_mat_model[]; +extern Gfx obj_shop_fossil_gfx_model[]; +extern Gfx obj_fukuT_mat_model[]; +extern Gfx obj_fukuT_gfx_model[]; +extern Gfx item_kabu_modelT[]; +extern Gfx obj_shop_kanbanT_mat_model[]; +extern Gfx obj_shop_kanbanT_gfx_model[]; +extern Gfx obj_shop_kaza1_model[]; +extern Gfx obj_shop_kaza2_model[]; +extern Gfx obj_shop_kaza3_model[]; +extern Gfx obj_shop_kaza4_model[]; +extern Gfx obj_shop_kaza5_model[]; +extern Gfx obj_shop_kaza6_model[]; +extern Gfx obj_shop_kaza7_model[]; +extern Gfx obj_shop_kaza8_model[]; +extern Gfx item_matutake_modelT[]; +extern Gfx obj_mdT_mat_model[]; +extern Gfx obj_mdT_gfx_model[]; +extern Gfx obj_shop_cnaegiT_mat_model[]; +extern Gfx obj_shop_cnaegiT_gfx_model[]; +extern Gfx obj_naegiT_mat_model[]; +extern Gfx obj_naegiT_gfx_model[]; +extern Gfx obj_netT_mat_model[]; +extern Gfx obj_netT_gfx_model[]; +extern Gfx item_orange_modelT[]; +extern Gfx obj_paintT_a_mat_model[]; +extern Gfx obj_paintT_b_mat_model[]; +extern Gfx obj_paintT_c_mat_model[]; +extern Gfx obj_paintT_d_mat_model[]; +extern Gfx obj_paintT_e_mat_model[]; +extern Gfx obj_paintT_f_mat_model[]; +extern Gfx obj_paintT_g_mat_model[]; +extern Gfx obj_paintT_h_mat_model[]; +extern Gfx obj_paintT_i_mat_model[]; +extern Gfx obj_paintT_j_mat_model[]; +extern Gfx obj_paintT_k_mat_model[]; +extern Gfx obj_paintT_l_mat_model[]; +extern Gfx obj_paintT_gfx_model[]; +extern Gfx obj_rodT_mat_model[]; +extern Gfx obj_rodT_gfx_model[]; +extern Gfx obj_rod_lineT_mat_model[]; +extern Gfx obj_rod_lineT_gfx_model[]; +extern Gfx obj_sangoT_mat_model[]; +extern Gfx obj_sangoT_gfx_model[]; +extern Gfx obj_seed_mat_model[]; +extern Gfx obj_seed_gfx_model[]; +extern Gfx obj_honegaiT_mat_model[]; +extern Gfx obj_honegaiT_gfx_model[]; +extern Gfx obj_horagaiT_mat_model[]; +extern Gfx obj_horagaiT_gfx_model[]; +extern Gfx obj_komagaiT_mat_model[]; +extern Gfx obj_komagaiT_gfx_model[]; +extern Gfx obj_takaragaiT_mat_model[]; +extern Gfx obj_takaragaiT_gfx_model[]; +extern Gfx obj_ougigaiT_mat_model[]; +extern Gfx obj_ougigaiT_gfx_model[]; +extern Gfx obj_sakuragaiT_mat_model[]; +extern Gfx obj_sakuragaiT_gfx_model[]; +extern Gfx obj_shakogaiT_mat_model[]; +extern Gfx obj_shakogaiT_gfx_model[]; +extern Gfx obj_shovelT_mat_model[]; +extern Gfx obj_shovelT_gfx_model[]; +extern Gfx obj_soldoutT_mat_model[]; +extern Gfx obj_soldoutT_gfx_model[]; +extern Gfx obj_ticketT_mat_model[]; +extern Gfx obj_ticketT_gfx_model[]; +extern Gfx obj_axe2T_mat_model[]; +extern Gfx obj_axe2T_gfx_model[]; +extern Gfx obj_net2T_mat_model[]; +extern Gfx obj_net2T_gfx_model[]; +extern Gfx obj_rod2T_mat_model[]; +extern Gfx obj_rod2T_gfx_model[]; +extern Gfx obj_rod2_lineT_mat_model[]; +extern Gfx obj_rod2_lineT_gfx_model[]; +extern Gfx obj_shovel2T_mat_model[]; +extern Gfx obj_shovel2T_gfx_model[]; +extern Gfx obj_g2T_mat_model[]; +extern Gfx obj_g2T_gfx_model[]; +extern Gfx obj_nagagutuT_mat_model[]; +extern Gfx obj_nagagutuT_gfx_model[]; +extern Gfx obj_g1T_mat_model[]; +extern Gfx obj_g1T_gfx_model[]; +extern Gfx obj_shop_utiwa1_mat_model[]; +extern Gfx obj_shop_utiwa1_gfx_model[]; +extern Gfx obj_shop_utiwa2_mat_model[]; +extern Gfx obj_shop_utiwa2_gfx_model[]; +extern Gfx obj_shop_utiwa3_mat_model[]; +extern Gfx obj_shop_utiwa3_gfx_model[]; +extern Gfx obj_shop_utiwa4_mat_model[]; +extern Gfx obj_shop_utiwa4_gfx_model[]; +extern Gfx obj_shop_utiwa5_mat_model[]; +extern Gfx obj_shop_utiwa5_gfx_model[]; +extern Gfx obj_shop_utiwa6_mat_model[]; +extern Gfx obj_shop_utiwa6_gfx_model[]; +extern Gfx obj_shop_utiwa7_mat_model[]; +extern Gfx obj_shop_utiwa7_gfx_model[]; +extern Gfx obj_shop_utiwa8_mat_model[]; +extern Gfx obj_shop_utiwa8_gfx_model[]; +extern Gfx obj_wallT_mat_model[]; +extern Gfx obj_wallT_gfx_model[]; +extern Gfx int_iid_diary_model[]; +extern Gfx int_iid_funediary_model[]; +extern Gfx int_iid_mdiary_model[]; +extern Gfx int_iid_newediary_model[]; +extern Gfx int_ike_nikki_fan1_on_model[]; +extern Gfx int_ike_nikki_fan2_on_model[]; +extern Gfx int_ike_nikki_fan3_on_model[]; +extern Gfx int_ike_nikki_fan4_on_model[]; +extern Gfx int_ike_nikki_fan5_on_model[]; +extern Gfx int_ike_nikki_wafu1_on_model[]; +extern Gfx bag_DL_mode[]; +extern Gfx bag_DL_vtx[]; +extern Gfx obj_shop_candy_modelT[]; +extern Gfx obj_item_cocoT_mat_model[]; +extern Gfx obj_item_cocoT_gfx_model[]; +extern Gfx nuts_DL_mode[]; +extern Gfx nuts_DL_vtx[]; +extern Gfx obj_otosiT_mat_model[]; +extern Gfx obj_otosiT_gfx_model[]; +extern Gfx peach_DL_mode[]; +extern Gfx peach_DL_vtx[]; +extern Gfx pear_DL_mode[]; +extern Gfx pear_DL_vtx[]; +extern Gfx int_nog_collegenote_model[]; +extern Gfx int_nog_harddiaryT_model[]; +extern Gfx int_nog_schoolnote_model[]; +extern Gfx int_nog_systemnote_model[]; +extern Gfx int_nog_tudurinoteT_model[]; +extern Gfx int_tak_nikki01_on_model[]; + +typedef struct ac_shop_goods_data_s { + mActor_name_t item_start; + mActor_name_t item_end; + Gfx* gfx0[2]; + Gfx* gfx1[2]; + Gfx* xlu_gfx0[2]; + Gfx* xlu_gfx1[2]; + int flags; +} aSG_data_c; + +// clang-format off +static const aSG_data_c l_shop_goods_dsp_table[] = { + { + ITM_PAPER00, + ITM_PAPER_END - 1, + { obj_paper_mat_model, obj_paper_mat_model }, + { obj_paper_gfx_model, obj_paper_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + 0xFE0E, + 0xFE0E, + { obj_soldoutT_mat_model, obj_soldoutT_mat_model }, + { obj_soldoutT_gfx_model, obj_soldoutT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + 0xFE10, + 0xFE18, + { obj_soldoutT_mat_model, obj_soldoutT_mat_model }, + { obj_soldoutT_gfx_model, obj_soldoutT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_CARPET00, + ITM_CARPET66, + { obj_carpetT_mat_model, obj_carpetT_mat_model }, + { obj_carpetT_gfx_model, obj_carpetT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_WALL00, + ITM_WALL66, + { obj_wallT_mat_model, obj_wallT_mat_model }, + { obj_wallT_gfx_model, obj_wallT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_CLOTH000, + ITM_CLOTH254, + { NULL, obj_wallT_mat_model }, + { NULL, obj_wallT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_AXE, + ITM_AXE, + { obj_axeT_mat_model, obj_axeT_mat_model }, + { obj_axeT_gfx_model, obj_axeT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_AXE_USE_1, + ITM_AXE_USE_7, + { obj_axeT_mat_model, obj_axeT_mat_model }, + { obj_axeT_gfx_model, obj_axeT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHOVEL, + ITM_SHOVEL, + { obj_shovelT_mat_model, obj_shovelT_mat_model }, + { obj_shovelT_gfx_model, obj_shovelT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_NET, + ITM_NET, + { obj_netT_mat_model, obj_netT_mat_model }, + { obj_netT_gfx_model, obj_netT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_ROD, + ITM_ROD, + { obj_rodT_mat_model, obj_rodT_mat_model }, + { obj_rodT_gfx_model, obj_rodT_gfx_model }, + { obj_rod_lineT_mat_model, obj_rod_lineT_mat_model }, + { obj_rod_lineT_gfx_model, obj_rod_lineT_gfx_model }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SAPLING, + ITM_SAPLING, + { obj_naegiT_mat_model, obj_naegiT_mat_model }, + { obj_naegiT_gfx_model, obj_naegiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_WHITE_PANSY_BAG, + ITM_YELLOW_TULIP_BAG, + { obj_seed_mat_model, obj_seed_mat_model }, + { obj_seed_gfx_model, obj_seed_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_CEDAR_SAPLING, + ITM_CEDAR_SAPLING, + { obj_shop_cnaegiT_mat_model, obj_shop_cnaegiT_mat_model }, + { obj_shop_cnaegiT_gfx_model, obj_shop_cnaegiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_YELLOW_PINWHEEL, + ITM_YELLOW_PINWHEEL, + { obj_shop_kaza1_model, obj_shop_kaza1_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_RED_PINWHEEL, + ITM_RED_PINWHEEL, + { obj_shop_kaza2_model, obj_shop_kaza2_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_TIGER_PINWHEEL, + ITM_TIGER_PINWHEEL, + { obj_shop_kaza3_model, obj_shop_kaza3_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GREEN_PINWHEEL, + ITM_GREEN_PINWHEEL, + { obj_shop_kaza4_model, obj_shop_kaza4_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_PINK_PINWHEEL, + ITM_PINK_PINWHEEL, + { obj_shop_kaza5_model, obj_shop_kaza5_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_STRIPED_PINWHEEL, + ITM_STRIPED_PINWHEEL, + { obj_shop_kaza6_model, obj_shop_kaza6_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FLOWER_PINWHEEL, + ITM_FLOWER_PINWHEEL, + { obj_shop_kaza7_model, obj_shop_kaza7_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FANCY_PINWHEEL, + ITM_FANCY_PINWHEEL, + { obj_shop_kaza8_model, obj_shop_kaza8_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_BLUEBELL_FAN, + ITM_BLUEBELL_FAN, + { obj_shop_utiwa1_mat_model, obj_shop_utiwa1_mat_model }, + { obj_shop_utiwa1_gfx_model, obj_shop_utiwa1_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_PLUM_FAN, + ITM_PLUM_FAN, + { obj_shop_utiwa2_mat_model, obj_shop_utiwa2_mat_model }, + { obj_shop_utiwa2_gfx_model, obj_shop_utiwa2_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_BAMBOO_FAN, + ITM_BAMBOO_FAN, + { obj_shop_utiwa3_mat_model, obj_shop_utiwa3_mat_model }, + { obj_shop_utiwa3_gfx_model, obj_shop_utiwa3_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_CLOUD_FAN, + ITM_CLOUD_FAN, + { obj_shop_utiwa4_mat_model, obj_shop_utiwa4_mat_model }, + { obj_shop_utiwa4_gfx_model, obj_shop_utiwa4_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_MAPLE_FAN, + ITM_MAPLE_FAN, + { obj_shop_utiwa5_mat_model, obj_shop_utiwa5_mat_model }, + { obj_shop_utiwa5_gfx_model, obj_shop_utiwa5_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FAN_FAN, + ITM_FAN_FAN, + { obj_shop_utiwa6_mat_model, obj_shop_utiwa6_mat_model }, + { obj_shop_utiwa6_gfx_model, obj_shop_utiwa6_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FLOWER_FAN, + ITM_FLOWER_FAN, + { obj_shop_utiwa7_mat_model, obj_shop_utiwa7_mat_model }, + { obj_shop_utiwa7_gfx_model, obj_shop_utiwa7_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_LEAF_FAN, + ITM_LEAF_FAN, + { obj_shop_utiwa8_mat_model, obj_shop_utiwa8_mat_model }, + { obj_shop_utiwa8_gfx_model, obj_shop_utiwa8_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FOOD_APPLE, + ITM_FOOD_APPLE, + { obj_apple2_modelT, obj_apple2_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_PEACH, + ITM_FOOD_PEACH, + { peach_DL_mode, peach_DL_mode }, + { peach_DL_vtx, peach_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_ORANGE, + ITM_FOOD_ORANGE, + { item_orange_modelT, item_orange_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FISH00, + ITM_FISH39, + { item_fish_modelT, item_fish_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_MUSHROOM, + ITM_FOOD_MUSHROOM, + { item_matutake_modelT, item_matutake_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_KABU_10, + ITM_KABU_SPOILED, + { item_kabu_modelT, item_kabu_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_CANDY, + ITM_FOOD_CANDY, + { obj_shop_candy_modelT, obj_shop_candy_modelT }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_CHERRY, + ITM_FOOD_CHERRY, + { nuts_DL_mode, nuts_DL_mode }, + { nuts_DL_vtx, nuts_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_PEAR, + ITM_FOOD_PEAR, + { pear_DL_mode, pear_DL_mode }, + { pear_DL_vtx, pear_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_FOOD_COCONUT, + ITM_FOOD_COCONUT, + { obj_item_cocoT_mat_model, obj_item_cocoT_mat_model }, + { obj_item_cocoT_gfx_model, obj_item_cocoT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_MONEY_1000, + ITM_MONEY_100, + { bag_DL_mode, bag_DL_mode }, + { bag_DL_vtx, bag_DL_vtx }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_MINIDISK00, + ITM_MINIDISK54, + { obj_mdT_mat_model, obj_mdT_mat_model }, + { obj_mdT_gfx_model, obj_mdT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_TICKET_START, + ITM_TICKET_END, + { obj_ticketT_mat_model, obj_ticketT_mat_model }, + { obj_ticketT_gfx_model, obj_ticketT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_HUKUBUKURO_BAG, + ITM_HUKUBUKURO_PRESENT, + { obj_fukuT_mat_model, obj_fukuT_mat_model }, + { obj_fukuT_gfx_model, obj_fukuT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DUST0_EMPTY_CAN, + ITM_DUST0_EMPTY_CAN, + { obj_g2T_mat_model, obj_g2T_mat_model }, + { obj_g2T_gfx_model, obj_g2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DUST1_BOOT, + ITM_DUST1_BOOT, + { obj_nagagutuT_mat_model, obj_nagagutuT_mat_model }, + { obj_nagagutuT_gfx_model, obj_nagagutuT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DUST2_OLD_TIRE, + ITM_DUST2_OLD_TIRE, + { obj_g1T_mat_model, obj_g1T_mat_model }, + { obj_g1T_gfx_model, obj_g1T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_FOSSIL, + ITM_FOSSIL, + { obj_shop_fossil_mat_model, obj_shop_fossil_mat_model }, + { obj_shop_fossil_gfx_model, obj_shop_fossil_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_PITFALL, + ITM_PITFALL, + { obj_otosiT_mat_model, obj_otosiT_mat_model }, + { obj_otosiT_gfx_model, obj_otosiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_SHELL1, + ITM_SHELL1, + { obj_komagaiT_mat_model, obj_komagaiT_mat_model }, + { obj_komagaiT_gfx_model, obj_komagaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL3, + ITM_SHELL3, + { obj_takaragaiT_mat_model, obj_takaragaiT_mat_model }, + { obj_takaragaiT_gfx_model, obj_takaragaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL2, + ITM_SHELL2, + { obj_honegaiT_mat_model, obj_honegaiT_mat_model }, + { obj_honegaiT_gfx_model, obj_honegaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL6, + ITM_SHELL6, + { obj_horagaiT_mat_model, obj_horagaiT_mat_model }, + { obj_horagaiT_gfx_model, obj_horagaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL4, + ITM_SHELL4, + { obj_sakuragaiT_mat_model, obj_sakuragaiT_mat_model }, + { obj_sakuragaiT_gfx_model, obj_sakuragaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL0, + ITM_SHELL0, + { obj_ougigaiT_mat_model, obj_ougigaiT_mat_model }, + { obj_ougigaiT_gfx_model, obj_ougigaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL5, + ITM_SHELL5, + { obj_shakogaiT_mat_model, obj_shakogaiT_mat_model }, + { obj_shakogaiT_gfx_model, obj_shakogaiT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SHELL7, + ITM_SHELL7, + { obj_sangoT_mat_model, obj_sangoT_mat_model }, + { obj_sangoT_gfx_model, obj_sangoT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_RED_PAINT, + ITM_RED_PAINT, + { obj_paintT_a_mat_model, obj_paintT_a_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_ORANGE_PAINT, + ITM_ORANGE_PAINT, + { obj_paintT_b_mat_model, obj_paintT_b_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_YELLOW_PAINT, + ITM_YELLOW_PAINT, + { obj_paintT_c_mat_model, obj_paintT_c_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_PALE_GREEN_PAINT, + ITM_PALE_GREEN_PAINT, + { obj_paintT_d_mat_model, obj_paintT_d_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_GREEN_PAINT, + ITM_GREEN_PAINT, + { obj_paintT_e_mat_model, obj_paintT_e_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_SKY_BLUE_PAINT, + ITM_SKY_BLUE_PAINT, + { obj_paintT_f_mat_model, obj_paintT_f_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_BLUE_PAINT, + ITM_BLUE_PAINT, + { obj_paintT_g_mat_model, obj_paintT_g_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_PURPLE_PAINT, + ITM_PURPLE_PAINT, + { obj_paintT_h_mat_model, obj_paintT_h_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_PINK_PAINT, + ITM_PINK_PAINT, + { obj_paintT_i_mat_model, obj_paintT_i_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_BLACK_PAINT, + ITM_BLACK_PAINT, + { obj_paintT_j_mat_model, obj_paintT_j_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_WHITE_PAINT, + ITM_WHITE_PAINT, + { obj_paintT_k_mat_model, obj_paintT_k_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_BROWN_PAINT, + ITM_BROWN_PAINT, + { obj_paintT_l_mat_model, obj_paintT_l_mat_model }, + { obj_paintT_gfx_model, obj_paintT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, + { + ITM_GOLDEN_NET, + ITM_GOLDEN_NET, + { obj_net2T_mat_model, obj_net2T_mat_model }, + { obj_net2T_gfx_model, obj_net2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GOLDEN_AXE, + ITM_GOLDEN_AXE, + { obj_axe2T_mat_model, obj_axe2T_mat_model }, + { obj_axe2T_gfx_model, obj_axe2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GOLDEN_SHOVEL, + ITM_GOLDEN_SHOVEL, + { obj_shovel2T_mat_model, obj_shovel2T_mat_model }, + { obj_shovel2T_gfx_model, obj_shovel2T_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_GOLDEN_ROD, + ITM_GOLDEN_ROD, + { obj_rod2T_mat_model, obj_rod2T_mat_model }, + { obj_rod2T_gfx_model, obj_rod2T_gfx_model }, + { obj_rod2_lineT_mat_model, obj_rod2_lineT_mat_model }, + { obj_rod2_lineT_gfx_model, obj_rod2_lineT_gfx_model }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_SIGNBOARD, + ITM_SIGNBOARD, + { obj_shop_kanbanT_mat_model, obj_shop_kanbanT_mat_model }, + { obj_shop_kanbanT_gfx_model, obj_shop_kanbanT_gfx_model }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY00, + ITM_DIARY00, + { int_nog_collegenote_model, int_nog_collegenote_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY01, + ITM_DIARY01, + { int_nog_schoolnote_model, int_nog_schoolnote_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY02, + ITM_DIARY02, + { int_nog_systemnote_model, int_nog_systemnote_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY03, + ITM_DIARY03, + { int_nog_harddiaryT_model, int_nog_harddiaryT_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY04, + ITM_DIARY04, + { int_nog_tudurinoteT_model, int_nog_tudurinoteT_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY05, + ITM_DIARY05, + { int_iid_diary_model, int_iid_diary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY06, + ITM_DIARY06, + { int_iid_funediary_model, int_iid_funediary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY07, + ITM_DIARY07, + { int_iid_mdiary_model, int_iid_mdiary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY08, + ITM_DIARY08, + { int_iid_newediary_model, int_iid_newediary_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY09, + ITM_DIARY09, + { int_tak_nikki01_on_model, int_tak_nikki01_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY10, + ITM_DIARY10, + { int_ike_nikki_fan1_on_model, int_ike_nikki_fan1_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY11, + ITM_DIARY11, + { int_ike_nikki_fan2_on_model, int_ike_nikki_fan2_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY12, + ITM_DIARY12, + { int_ike_nikki_fan3_on_model, int_ike_nikki_fan3_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY13, + ITM_DIARY13, + { int_ike_nikki_fan4_on_model, int_ike_nikki_fan4_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY14, + ITM_DIARY14, + { int_ike_nikki_fan5_on_model, int_ike_nikki_fan5_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + ITM_DIARY15, + ITM_DIARY15, + { int_ike_nikki_wafu1_on_model, int_ike_nikki_wafu1_on_model }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + aSG_DATA_ROTATE_Y_FLAG + }, + { + EMPTY_NO, + EMPTY_NO, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + { NULL, NULL }, + 0 + }, +}; +// clang-format on diff --git a/src/ac_shop_indoor.c b/src/ac_shop_indoor.c new file mode 100644 index 00000000..82ab4638 --- /dev/null +++ b/src/ac_shop_indoor.c @@ -0,0 +1,527 @@ +#include "ac_shop_indoor.h" + +#include "m_common_data.h" +#include "m_malloc.h" +#include "m_rcp.h" +#include "sys_matrix.h" + +enum { + aSI_SHOP_TYPE_ZAKKA, + aSI_SHOP_TYPE_CONVENI, + aSI_SHOP_TYPE_SUPER, + aSI_SHOP_TYPE_DEPART_1F, + aSI_SHOP_TYPE_DEPART_2F, + + aSI_SHOP_TYPE_NUM +}; + +enum { + aSI_SE_MODE_NORMAL, + aSI_SE_MODE_SILENT, + + aSI_SE_MODE_NUM +}; + +static int aSI_se_mode = aSI_SE_MODE_NORMAL; + +typedef struct shop_indoor_disp_s { + Gfx* wall_gfx; + Gfx* wall_xlu_gfx; + Gfx* floor_gfx; + Gfx* floor_xlu_gfx; + Gfx* fukubiki_gfx; + Gfx* fukubiki_xlu_gfx; +} aSI_disp_data_c; + +extern Gfx rom_shop1w_model[]; +extern Gfx rom_shop1w_modelT[]; +extern Gfx rom_shop1f_model[]; +extern Gfx rom_shop1f_modelT[]; +extern Gfx rom_shop1_fuku_model[]; +extern Gfx rom_shop1_fuku_modelT[]; + +extern Gfx rom_shop2w_model[]; +extern Gfx rom_shop2w_modelT[]; +extern Gfx rom_shop2f_model[]; +extern Gfx rom_shop2f_modelT[]; +extern Gfx rom_shop2_fuku_model[]; +extern Gfx rom_shop2_fuku_modelT[]; + +extern Gfx rom_shop3w_model[]; +extern Gfx rom_shop3w_modelT[]; +extern Gfx rom_shop3f_model[]; +extern Gfx rom_shop3f_modelT[]; +extern Gfx rom_shop3_fuku_model[]; +extern Gfx rom_shop3_fuku_modelT[]; + +extern Gfx rom_shop4_fuku_model[]; +extern Gfx rom_shop4_fuku_modelT[]; + +extern Gfx rom_shop4_2w_model[]; +extern Gfx rom_shop4_2w_modelT[]; +extern Gfx rom_shop4_2f_model[]; +extern Gfx rom_shop4_2f_modelT[]; + +static aSI_disp_data_c aSI_disp_data_table[] = { + { + rom_shop1w_model, + rom_shop1w_modelT, + rom_shop1f_model, + rom_shop1f_modelT, + rom_shop1_fuku_model, + rom_shop1_fuku_modelT, + }, + { + rom_shop2w_model, + rom_shop2w_modelT, + rom_shop2f_model, + rom_shop2f_modelT, + rom_shop2_fuku_model, + rom_shop2_fuku_modelT, + }, + { + rom_shop3w_model, + rom_shop3w_modelT, + rom_shop3f_model, + rom_shop3f_modelT, + rom_shop3_fuku_model, + rom_shop3_fuku_modelT, + }, + { + rom_shop1w_model, + rom_shop1w_modelT, + rom_shop1f_model, + rom_shop1f_modelT, + rom_shop4_fuku_model, + rom_shop4_fuku_modelT, + }, + { + rom_shop4_2w_model, + rom_shop4_2w_modelT, + rom_shop4_2f_model, + rom_shop4_2f_modelT, + rom_shop1_fuku_model, + rom_shop1_fuku_modelT, + }, +}; + +static s16 aSI_wall_default_table[] = { + (u8)ITM_WALL67, (u8)ITM_WALL68, (u8)ITM_WALL69, (u8)ITM_WALL68, (u8)ITM_WALL70, +}; +static s16 aSI_floor_default_table[] = { + (u8)ITM_CARPET67, (u8)ITM_CARPET68, (u8)ITM_CARPET69, (u8)ITM_CARPET70, (u8)ITM_CARPET70, +}; + +static void Shop_Indoor_Actor_ct(ACTOR* actorx, GAME* game); +static void Shop_Indoor_Actor_dt(ACTOR* actorx, GAME* game); +static void Shop_Indoor_Actor_move(ACTOR* actorx, GAME* game); +static void Shop_Indoor_Actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Shop_Indoor_Profile = { + mAc_PROFILE_SHOP_INDOOR, + ACTOR_PART_FG, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(SHOP_INDOOR_ACTOR), + &Shop_Indoor_Actor_ct, + &Shop_Indoor_Actor_dt, + &Shop_Indoor_Actor_move, + &Shop_Indoor_Actor_draw, + NULL, +}; +// clang-format on + +static int aSI_GetShopIndoorBank(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + u8** floor_data_pp = shop_indoor->floor_data_p; + u8** wall_data_pp = shop_indoor->wall_data_p; + int i; + + for (i = 0; i < 2; i++) { + wall_data_pp[i] = zelda_malloc_align(aMI_WALL_BANK_SIZE, 32); + } + + for (i = 0; i < 2; i++) { + floor_data_pp[i] = zelda_malloc_align(aMI_FLOOR_BANK_SIZE, 32); + } +} + +static void aSI_CopyFloorTexture(ACTOR* actorx, s16 floor_idx, s16 bank_idx) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + u8** floor_data_pp = shop_indoor->floor_data_p; + + if (bank_idx == 2) { + int i; + + for (i = 0; i < 2; i++) { + u8* floor_data_p = floor_data_pp[i]; + + if (floor_data_p != NULL) { + mRmTp_CopyFloorData(floor_data_p, floor_idx); + } + } + } else { + u8* floor_data_p = floor_data_pp[bank_idx]; + + if (floor_data_p != NULL) { + mRmTp_CopyFloorData(floor_data_p, floor_idx); + } + } +} + +static void aSI_CopyWallTexture(ACTOR* actorx, s16 wall_idx, s16 bank_idx) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + u8** wall_data_pp = shop_indoor->wall_data_p; + + if (bank_idx == 2) { + int i; + + for (i = 0; i < 2; i++) { + u8* wall_data_p = wall_data_pp[i]; + + if (wall_data_p != NULL) { + mRmTp_CopyWallData(wall_data_p, wall_idx); + } + } + } else { + u8* wall_data_p = wall_data_pp[bank_idx]; + + if (wall_data_p != NULL) { + mRmTp_CopyWallData(wall_data_p, wall_idx); + } + } +} + +static void aSI_ShopIndoorCopy(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + + aSI_CopyWallTexture(actorx, (s16)aSI_wall_default_table[shop_indoor->shop_idx], 2); + aSI_CopyFloorTexture(actorx, (s16)aSI_floor_default_table[shop_indoor->shop_idx], 2); +} + +static int aSI_ChangeWall(mActor_name_t item); +static int aSI_ChangeCarpet(mActor_name_t item); +static void aSI_IndoorDmaAgain(void); +static void aSI_Change2Default(void); + +static void aSI_SetClipProc(ACTOR* actorx, int clear) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + + if (clear == TRUE) { + Common_Get(clip).shop_indoor_clip = NULL; + } else { + aSI_Clip_c* clip_p = &shop_indoor->clip; + + Common_Get(clip).shop_indoor_clip = clip_p; + clip_p->shop_indoor_actor = actorx; + clip_p->change_wall_proc = &aSI_ChangeWall; + clip_p->change_carpet_proc = &aSI_ChangeCarpet; + clip_p->indoor_dma_again_proc = &aSI_IndoorDmaAgain; + clip_p->change2default_proc = &aSI_Change2Default; + } +} + +static void Shop_Indoor_Actor_ct(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int i; + int scene_no = Save_Get(scene_no); + static int scene_no_table[] = { SCENE_SHOP0, SCENE_CONVENI, SCENE_SUPER, SCENE_DEPART, SCENE_DEPART_2 }; + + for (i = 0; i < aSI_SHOP_TYPE_NUM; i++) { + if (scene_no == scene_no_table[i]) { + actorx->actor_specific = i; + shop_indoor->shop_idx = i; + } + } + + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI && + actorx->actor_specific != aSI_SHOP_TYPE_DEPART_2F) { + shop_indoor->fukubiki_active = TRUE; + } + + shop_indoor->floor_idx = aSI_floor_default_table[shop_indoor->shop_idx]; + shop_indoor->wall_idx = aSI_wall_default_table[shop_indoor->shop_idx]; + shop_indoor->floor_data_idx = 0; +/* @BUG - floor_data_idx is set again instead of wall_data_idx */ +#ifndef BUGFIXES + shop_indoor->floor_data_idx = 0; +#else + shop_indoor->wall_data_idx = 0; +#endif + shop_indoor->_17C = 0; + shop_indoor->floor_data_p[0] = NULL; + shop_indoor->floor_data_p[1] = NULL; + shop_indoor->wall_data_p[0] = NULL; + shop_indoor->wall_data_p[1] = NULL; + + aSI_GetShopIndoorBank(actorx, game); + aSI_ShopIndoorCopy(actorx, game); + aSI_SetClipProc(actorx, FALSE); +} + +static void Shop_Indoor_Actor_dt(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int i; + + aSI_SetClipProc(actorx, TRUE); + for (i = 0; i < 2; i++) { + if (shop_indoor->floor_data_p[i] != NULL) { + zelda_free(shop_indoor->floor_data_p[i]); + } + + if (shop_indoor->wall_data_p[i] != NULL) { + zelda_free(shop_indoor->wall_data_p[i]); + } + } +} + +static void aSI_DrawShopFloor(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int data_idx = shop_indoor->floor_data_idx; + int shop_level = actorx->actor_specific; + u16* pal; + u8* tex0; + u8* tex1; + u8* tex2; + u8* tex3; + GAME_PLAY* play = (GAME_PLAY*)game; + + pal = (u16*)shop_indoor->floor_data_p[data_idx]; + tex0 = (u8*)(shop_indoor->floor_data_p[data_idx] + aMI_PAL_SIZE); + tex1 = (u8*)(shop_indoor->floor_data_p[data_idx] + aMI_PAL_SIZE + aMI_TEX_SIZE); + tex2 = (u8*)(shop_indoor->floor_data_p[data_idx] + aMI_PAL_SIZE + aMI_TEX_SIZE * 2); + tex3 = (u8*)(shop_indoor->floor_data_p[data_idx] + aMI_PAL_SIZE + aMI_TEX_SIZE * 3); + + _texture_z_light_fog_prim_xlu(game->graph); + _texture_z_light_fog_prim(game->graph); + Global_kankyo_set_room_prim(play); + + if (shop_indoor->floor_data_p[data_idx] != NULL) { + if (aSI_disp_data_table[shop_level].floor_gfx != NULL) { + OPEN_DISP(game->graph); + + /* Load floor palette & textures */ + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_1_TXT_SEG, tex0); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_2_TXT_SEG, tex1); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_3_TXT_SEG, tex2); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_4_TXT_SEG, tex3); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_5_TXT_SEG, pal); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_OPA_DISP, aSI_disp_data_table[shop_level].floor_gfx); + + CLOSE_DISP(game->graph); + } + + if (aSI_disp_data_table[shop_level].floor_xlu_gfx != NULL) { + OPEN_DISP(game->graph); + + /* Load floor palette & textures */ + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, tex0); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_2_TXT_SEG, tex1); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_3_TXT_SEG, tex2); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_4_TXT_SEG, tex3); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_5_TXT_SEG, pal); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_XLU_DISP, aSI_disp_data_table[shop_level].floor_xlu_gfx); + + CLOSE_DISP(game->graph); + } + } +} + +static void aSI_DrawShopFukubiki(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int shop_level = shop_indoor->shop_idx; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (aSI_disp_data_table[shop_level].fukubiki_gfx != NULL) { + _texture_z_light_fog_prim(game->graph); + + if (shop_level == aSI_SHOP_TYPE_CONVENI) { + xyz_t mirror_pos = { 10.0f, 10.0f, 10.0f }; + + Setpos_HiliteReflect_init(&mirror_pos, play); + } + + OPEN_DISP(game->graph); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + Global_kankyo_set_room_prim(play); + gSPDisplayList(NEXT_POLY_OPA_DISP, aSI_disp_data_table[shop_level].fukubiki_gfx); + + CLOSE_DISP(game->graph); + } + + if (aSI_disp_data_table[shop_level].fukubiki_xlu_gfx != NULL) { + _texture_z_light_fog_prim_xlu(game->graph); + OPEN_DISP(game->graph); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(NEXT_POLY_XLU_DISP, aSI_disp_data_table[shop_level].fukubiki_xlu_gfx); + + CLOSE_DISP(game->graph); + } +} + +static void aSI_DrawShopWall(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int data_idx = shop_indoor->wall_data_idx; + u16* pal = (u16*)shop_indoor->wall_data_p[data_idx]; + u8* tex0 = (u8*)(shop_indoor->wall_data_p[data_idx] + aMI_PAL_SIZE); + u8* tex1 = (u8*)(shop_indoor->wall_data_p[data_idx] + aMI_PAL_SIZE + aMI_TEX_SIZE); + int shop_level = actorx->actor_specific; + + if (aSI_disp_data_table[shop_level].wall_gfx != NULL) { + GAME_PLAY* play = (GAME_PLAY*)game; + + OPEN_DISP(game->graph); + + _texture_z_light_fog_prim(game->graph); + + if (shop_level == aSI_SHOP_TYPE_CONVENI) { + xyz_t mirror_pos = { 10.0f, 10.0f, 10.0f }; + + Setpos_HiliteReflect_init(&mirror_pos, play); + } + + /* Load floor palette & textures */ + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_1_TXT_SEG, tex0); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_2_TXT_SEG, tex1); + gSPSegment(NEXT_POLY_OPA_DISP, ANIME_3_TXT_SEG, pal); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_OPA_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + Global_kankyo_set_room_prim(play); + gSPDisplayList(NEXT_POLY_OPA_DISP, aSI_disp_data_table[shop_level].wall_gfx); + + CLOSE_DISP(game->graph); + } + + if (aSI_disp_data_table[shop_level].wall_xlu_gfx != NULL) { + GAME_PLAY* play = (GAME_PLAY*)game; + + OPEN_DISP(game->graph); + + _texture_z_light_fog_prim_xlu(game->graph); + + /* Load floor palette & textures */ + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, tex0); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_2_TXT_SEG, tex1); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_3_TXT_SEG, pal); + + Matrix_translate(0.0f, 0.0f, 0.0f, 0); + Matrix_scale(0.0625f, 0.0625f, 0.0625f, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + Global_kankyo_set_room_prim(play); + gSPDisplayList(NEXT_POLY_XLU_DISP, aSI_disp_data_table[shop_level].wall_xlu_gfx); + + CLOSE_DISP(game->graph); + } +} + +static void aSI_DrawShopIndoor(ACTOR* actorx, GAME* game) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + + if (shop_indoor->fukubiki_active == TRUE) { + aSI_DrawShopFukubiki(actorx, game); + } else { + aSI_DrawShopWall(actorx, game); + aSI_DrawShopFloor(actorx, game); + } +} + +static void Shop_Indoor_Actor_draw(ACTOR* actorx, GAME* game) { + aSI_DrawShopIndoor(actorx, game); +} + +static void Shop_Indoor_Actor_move(ACTOR* actorx, GAME* game) { + // nothing +} + +static int aSI_ChangeCarpet(mActor_name_t item) { + if (Common_Get(clip).shop_indoor_clip != NULL) { + ACTOR* actorx = Common_Get(clip).shop_indoor_clip->shop_indoor_actor; + + if (actorx != NULL && ITEM_IS_CARPET(item)) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int floor_data_idx = shop_indoor->floor_data_idx; + + shop_indoor->floor_idx = (mActor_name_t)item - ITM_CARPET_START; + shop_indoor->floor_data_idx = (floor_data_idx ^ 1) & 1; + aSI_CopyFloorTexture(actorx, shop_indoor->floor_idx, shop_indoor->floor_data_idx); + + if (aSI_se_mode == aSI_SE_MODE_NORMAL) { + sAdo_SysTrgStart(NA_SE_11B); + } + + return TRUE; + } + } + + return FALSE; +} + +static int aSI_ChangeWall(mActor_name_t item) { + if (Common_Get(clip).shop_indoor_clip != NULL) { + ACTOR* actorx = Common_Get(clip).shop_indoor_clip->shop_indoor_actor; + + if (actorx != NULL && ITEM_IS_WALL(item)) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + int wall_data_idx = shop_indoor->wall_data_idx; + + shop_indoor->wall_idx = (mActor_name_t)item - ITM_WALL_START; + shop_indoor->wall_data_idx = (wall_data_idx ^ 1) & 1; + aSI_CopyWallTexture(actorx, shop_indoor->wall_idx, shop_indoor->wall_data_idx); + sAdo_SysTrgStart(NA_SE_11B); + return TRUE; + } + } + + return FALSE; +} + +static void aSI_Change2Default(void) { + ACTOR* actorx = Common_Get(clip).shop_indoor_clip->shop_indoor_actor; + + if (actorx != NULL) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + s16 shop_level = shop_indoor->shop_idx; + + aSI_se_mode = aSI_SE_MODE_SILENT; + aSI_ChangeWall(ITM_WALL_START + (mActor_name_t)aSI_wall_default_table[shop_level]); + aSI_ChangeCarpet(ITM_CARPET_START + (mActor_name_t)aSI_floor_default_table[shop_level]); + aSI_se_mode = aSI_SE_MODE_NORMAL; + } +} + +static void aSI_IndoorDmaAgain(void) { + if (Common_Get(clip).shop_indoor_clip != NULL) { + ACTOR* actorx = Common_Get(clip).shop_indoor_clip->shop_indoor_actor; + + if (actorx != NULL) { + SHOP_INDOOR_ACTOR* shop_indoor = (SHOP_INDOOR_ACTOR*)actorx; + + aSI_CopyWallTexture(actorx, shop_indoor->wall_idx, 2); + aSI_CopyFloorTexture(actorx, shop_indoor->floor_idx, 2); + } + } +} diff --git a/src/ac_shop_level.c b/src/ac_shop_level.c new file mode 100644 index 00000000..2fd802fc --- /dev/null +++ b/src/ac_shop_level.c @@ -0,0 +1,397 @@ +#include "ac_shop_level.h" + +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_house.h" +#include "m_handbill.h" +#include "m_string.h" + +static void Shop_Level_Actor_ct(ACTOR* actorx, GAME* game); +static void Shop_Level_Actor_dt(ACTOR* actorx, GAME* game); +static void Shop_Level_Actor_move(ACTOR* actorx, GAME* game); +static void Shop_Level_Actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Shop_Level_Profile = { + mAc_PROFILE_SHOP_LEVEL, + ACTOR_PART_CONTROL, + ACTOR_STATE_CAN_MOVE_IN_DEMO_SCENES | ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEEP, + sizeof(SHOP_LEVEL_ACTOR), + &Shop_Level_Actor_ct, + &Shop_Level_Actor_dt, + &Shop_Level_Actor_move, + &Shop_Level_Actor_draw, + NULL, +}; +// clang-format on + +static void aSL_SetShopRenewalChirashi_Notice(int shop_level, lbRTC_time_c* time_p) { + static int renewal_chirashi_bunmen[] = { 0x0018, 0x0019, 0x001A, 0x001A }; + int header_back_start; + Mail_c mail; + Mail_ct_c* content = &mail.content; + u8 year_str[6]; + u8 month_str[9]; + u8 day_str[4]; + lbRTC_time_c renew_start_date = *time_p; + int i; + + lbRTC_Sub_DD(&renew_start_date, 1); + for (i = 0; i < PLAYER_NUM; i++) { + int player_no = mHS_get_pl_no_detail(i); + int free_idx = mMl_chk_mail_free_space(Save_Get(homes[i]).mailbox, HOME_MAILBOX_SIZE); + + if (free_idx >= 0 && player_no != -1 && mEv_ArbeitPlayer(player_no) == FALSE) { + int year_str_len; + + mString_Load_StringFromRom(month_str, sizeof(month_str), + mString_MONTH_START + (renew_start_date.month - 1)); + mHandbill_Set_free_str(mHandbill_FREE_STR0, month_str, sizeof(month_str)); + mString_Load_StringFromRom(day_str, sizeof(day_str), mString_DAY_START + (renew_start_date.day - 1)); + mHandbill_Set_free_str(mHandbill_FREE_STR1, day_str, sizeof(day_str)); + year_str_len = mString_Load_YearStringFromRom(year_str, renew_start_date.year); + mHandbill_Set_free_str(mHandbill_FREE_STR2, year_str, year_str_len); + mMl_clear_mail(&mail); + mHandbill_Load_HandbillFromRom(content->header, &header_back_start, content->footer, content->body, + renewal_chirashi_bunmen[shop_level & 3]); + content->header_back_start = header_back_start; + content->font = mMl_FONT_0; + content->paper_type = (u8)ITM_PAPER55; + content->mail_type = mMl_TYPE_SHOP_SALE_LEAFLET; + mPr_CopyPersonalID(&mail.header.recipient.personalID, &Save_Get(private_data[player_no]).player_ID); + mail.header.recipient.type = mMl_NAME_TYPE_PLAYER; + mMl_copy_mail(&Save_Get(homes[i]).mailbox[free_idx], &mail); + } + } +} + +static void aSL_SetRenewalChiraswhi_Notice(void) { + if (Save_Get(shop).shop_info.send_upgrade_notice == TRUE) { + if (mSP_GetShopLevel() < mSP_GetRealShopLevel()) { + lbRTC_time_c* rtc_time_p = Common_GetPointer(time.rtc_time); + lbRTC_time_c renew_time = Save_Get(shop).renewal_time; + + lbRTC_Sub_DD(&renew_time, 1); + if (lbRTC_IsOverTime(&renew_time, rtc_time_p) == lbRTC_OVER || + lbRTC_IsEqualTime(rtc_time_p, &renew_time, lbRTC_CHECK_YEARS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_DAYS)) { + aSL_SetShopRenewalChirashi_Notice(mSP_GetShopLevel(), &Save_Get(shop).renewal_time); + Save_Get(shop).shop_info.send_upgrade_notice = FALSE; + } + } else { + aSL_SetShopRenewalChirashi_Notice((mSP_GetShopLevel() - 1) & 3, &Save_Get(shop).renewal_time); + Save_Get(shop).shop_info.send_upgrade_notice = FALSE; + } + } +} + +typedef struct shop_level_rewrite_offset_s { + int ofs_ux; + int ofs_uz; +} aSL_rewrite_ofs_c; + +// clang-format off +static aSL_rewrite_ofs_c aSL_zakka_rw[] = { + { -1, -1 }, + { 0, -1 }, + { -2, 0 }, + { -1, 0 }, + { 1, 0 }, + { -2, 1 }, + { -1, 1 }, + { 0, 1 }, + { 1, 1 }, + { -1, 2 }, + { 0, 2 }, +}; +// clang-format on + +// clang-format off +static aSL_rewrite_ofs_c aSL_conveni_rw[] = { + { -2, -2 }, + { -1, -2 }, + { -3, -1 }, + { -2, -1 }, + { -1, -1 }, + { 0, -1 }, + { -3, 0 }, + { -2, 0 }, + { -1, 0 }, + { 1, 0 }, + { -2, 1 }, + { -1, 1 }, + { 0, 1 }, + { 1, 1 }, + { -1, 2 }, + { 0, 2 }, +}; +// clang-format on + +// clang-format off +static aSL_rewrite_ofs_c aSL_super_rw[] = { + { -1, -3 }, + { 0, -3 }, + { -2, -2 }, + { -1, -2 }, + { 0, -2 }, + { 1, -2 }, + { -3, -1 }, + { -2, -1 }, + { -1, -1 }, + { 0, -1 }, + { 1, -1 }, + { 2, -1 }, + { -3, 0 }, + { -2, 0 }, + { -1, 0 }, + { 1, 0 }, + { 2, 0 }, + { -2, 1 }, + { -1, 1 }, + { 0, 1 }, + { 1, 1 }, + { -1, 2 }, + { 0, 2 }, +}; +// clang-format on + +static void aSL_GroundClean(s16 level, s16 next_level, mActor_name_t* fg_p, int bx, int bz, int ux, int uz) { + static aSL_rewrite_ofs_c* table[] = { + aSL_zakka_rw, + aSL_conveni_rw, + aSL_super_rw, + aSL_super_rw, + }; + static int rw_cnt[] = { + ARRAY_COUNT(aSL_zakka_rw), + ARRAY_COUNT(aSL_conveni_rw), + ARRAY_COUNT(aSL_super_rw), + ARRAY_COUNT(aSL_super_rw), + }; + + int i; + aSL_rewrite_ofs_c* rewrite_ofs_p; + u16* deposit_p; + + deposit_p = mFI_GetDepositP(bx, bz); + rewrite_ofs_p = table[next_level & 3]; + + for (i = 0; i < rw_cnt[next_level & 3]; i++) { + int rewrite_ux = (ux + rewrite_ofs_p[i].ofs_ux) & 0xF; + int rewrite_uz = (uz + rewrite_ofs_p[i].ofs_uz) & 0xF; + int rewrite_unit = rewrite_uz * UT_X_NUM + rewrite_ux; + + mPB_keep_item(fg_p[rewrite_unit]); + mFI_BlockDepositOFF(deposit_p, rewrite_ux, rewrite_uz); + fg_p[rewrite_unit] = RSV_NO; + } +} + +static int aSL_RewriteShopFg(ACTOR* actorx, GAME* game, s16 level, s16 next_level) { + SHOP_LEVEL_ACTOR* shop_level = (SHOP_LEVEL_ACTOR*)actorx; + int i; + int ux; + int uz; + mActor_name_t* fg_top_p; + mActor_name_t* fg_p; + + fg_top_p = mFI_BkNumtoUtFGTop(shop_level->bx, shop_level->bz); + fg_p = fg_top_p; + + if (fg_top_p != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + /* @BUG - shouldn't this just be <= SHOP3? This goes one over which would include the Post Office */ + if (*fg_top_p >= SHOP0 && *fg_top_p <= (SHOP3 + 1)) { + ux = i & 0xF; + uz = (i >> 4) & 0xF; + *fg_top_p = SHOP0 + next_level; + aSL_GroundClean((s16)level, (s16)next_level, fg_p, shop_level->bx, shop_level->bz, ux, uz); + return TRUE; + } + + fg_top_p++; + } + } + + return FALSE; +} + +static void aSL_RenewShop(ACTOR* actorx, GAME* game) { + int last_scene = Common_Get(last_scene_no); + + if (last_scene == SCENE_SHOP0 || last_scene == SCENE_CONVENI || last_scene == SCENE_SUPER || + last_scene == SCENE_DEPART || last_scene == SCENE_DEPART_2) { + return; + } + + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG && Save_Get(scene_no) == SCENE_FG && + mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == TRUE) { + lbRTC_time_c renew_time = Save_Get(shop).renewal_time; + lbRTC_time_c now_time = Common_Get(time.rtc_time); + + aSL_SetRenewalChiraswhi_Notice(); + if (lbRTC_IsOverTime(&renew_time, &now_time) == lbRTC_OVER || + lbRTC_IsEqualTime(&now_time, &renew_time, lbRTC_CHECK_YEARS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_DAYS)) { + if (aSL_RewriteShopFg(actorx, game, mSP_GetShopLevel(), mSP_GetRealShopLevel()) && mSP_RenewShopLevel()) { + mEv_EventOFF(mEv_SAVED_RENEWSHOP); + mSP_NewExchangeDay(); + mSP_ExchangeLineUp_ZeldaMalloc(); + } + } + } +} + +static void Shop_Level_Actor_ct(ACTOR* actorx, GAME* game) { + SHOP_LEVEL_ACTOR* shop_level = (SHOP_LEVEL_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + ACTOR* player_actor = GET_PLAYER_ACTOR_ACTOR(play); + xyz_t* pos_p; + int shop_block_flag; + + shop_level->bx = 0; + shop_level->bz = 0; + if (player_actor != NULL) { + pos_p = &player_actor->world.position; + } else { + pos_p = &actorx->world.position; + } + + /* Try to move shop level actor to where the player currently is */ + actorx->world.position = *pos_p; + shop_block_flag = mFI_BlockKind2BkNum(&shop_level->bx, &shop_level->bz, mRF_BLOCKKIND_SHOP); + if (Save_Get(scene_no) == SCENE_FG) { + mSP_SetShopRareFurnitureChirashi(Common_Get(player_no), Save_Get(shop).items, mSP_GOODS_COUNT, NULL); + Save_Get(shop).shop_info.not_loaded_before = FALSE; + } + + if (shop_block_flag) { + aSL_RenewShop(actorx, game); + } +} + +static void Shop_Level_Actor_dt(ACTOR* actorx, GAME* game) { + // nothing +} + +static void Shop_Level_Actor_draw(ACTOR* actorx, GAME* game) { + // nothing +} + +static void aSL_JudgeRenewShop(ACTOR* actorx, GAME* game) { + if (Save_Get(scene_no) == SCENE_FG && mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE) { + if (mSP_GetShopLevel() < mSP_GetRealShopLevel()) { + lbRTC_time_c now_time = Common_Get(time.rtc_time); + lbRTC_time_c renewal_two_days = now_time; + lbRTC_time_c renewal_one_day; + u16 bargain_date; + + renewal_two_days.hour = mSP_GetShopOpenTime(); + renewal_two_days.min = 0; + renewal_two_days.sec = 0; + lbRTC_Add_DD(&renewal_two_days, 2); + renewal_one_day = now_time; + lbRTC_Add_DD(&renewal_one_day, 1); + bargain_date = mEv_get_bargain_day(); + if (bargain_date != 0) { + lbRTC_month_t bargain_month = (bargain_date >> 8) & 0xFF; + lbRTC_day_t bargain_day = bargain_date & 0xFF; + + /* No upgrading shop if a Nook sale event happens within 2 days */ + if ((now_time.month == bargain_month && now_time.day == bargain_day) || + (renewal_two_days.month == bargain_month && renewal_two_days.day == bargain_day) || + (renewal_one_day.month == bargain_month && renewal_one_day.day == bargain_day)) { + return; + } + } + + { + lbRTC_year_t now_year = now_time.year; + lbRTC_month_t now_month = now_time.month; + lbRTC_day_t max_day = lbRTC_GetDaysByMonth(now_year, now_time.month); + lbRTC_day_t now_day = now_time.day; + + /* No upgrading shop if lottery day is within 2 days */ + if (now_day == max_day || + (renewal_two_days.day == lbRTC_GetDaysByMonth(renewal_two_days.year, renewal_two_days.month)) || + (renewal_one_day.day == lbRTC_GetDaysByMonth(renewal_one_day.year, renewal_one_day.month))) { + return; + } + /* Don't upgrade shop on sale day */ + if ((now_month == lbRTC_NOVEMBER && + now_day == (lbRTC_Weekly_day(now_year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) + 1)) || + (renewal_two_days.month == lbRTC_NOVEMBER && + renewal_two_days.day == + (lbRTC_Weekly_day(renewal_two_days.year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) + 1)) || + (renewal_one_day.month == lbRTC_NOVEMBER && + renewal_one_day.day == + (lbRTC_Weekly_day(renewal_one_day.year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) + 1))) { + return; + } + } + + mEv_EventON(mEv_SAVED_RENEWSHOP); + Save_Get(shop).renewal_time = renewal_two_days; + Save_Get(shop).shop_info.send_upgrade_notice = TRUE; + Save_Get(shop).shop_info.upgrading_today = TRUE; + } + } + + if (Save_Get(scene_no) == SCENE_FG && mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == TRUE) { + lbRTC_time_c now_time = Common_Get(time.rtc_time); + lbRTC_time_c renewal_time = Save_Get(shop).renewal_time; + + lbRTC_Sub_DD(&renewal_time, 2); + if (lbRTC_IsOverTime(&now_time, &renewal_time) == lbRTC_OVER) { + mEv_EventOFF(mEv_SAVED_RENEWSHOP); + Save_Get(shop).shop_info.upgrading_today = FALSE; + Save_Get(shop).shop_info.send_upgrade_notice = FALSE; + return; + } + } + + aSL_SetRenewalChiraswhi_Notice(); + mSP_SetRenewalChiraswhi_AppoDay(); +} + +static void aSL_ExchangeShopGoodsInGame(ACTOR* actorx, GAME* game, lbRTC_hour_t hour) { + lbRTC_time_c now_time = Common_Get(time.rtc_time); + lbRTC_hour_t now_hour = now_time.hour; + + if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE && Save_Get(scene_no) == SCENE_FG && now_hour >= hour && + mSP_CheckExchangeDay2()) { + if (mSP_CheckExchangeMonth()) { + mSP_LotteryLineUp_ZeldaMalloc(); + } + + mSP_NewExchangeDay(); + mSP_ExchangeLineUp_ZeldaMalloc(); + } +} + +static void aSL_ReportShopOpen2Event(void) { + int status = mSP_ShopOpen(); // @unused + + if (mSP_ShopOpen() == mSP_SHOP_STATUS_OPEN || mSP_ShopOpen() == mSP_SHOP_STATUS_OPENEVENT) { + mEv_EventON(mEv_DAILY_OPEN_SHOP); + } else { + mEv_EventOFF(mEv_DAILY_OPEN_SHOP); + } +} + +static void Shop_Level_Actor_move(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + ACTOR* player_actor = GET_PLAYER_ACTOR_ACTOR(play); + xyz_t* pos_p; + + if (player_actor != NULL) { + pos_p = &player_actor->world.position; + } else { + pos_p = &actorx->world.position; + } + + actorx->world.position = *pos_p; + aSL_JudgeRenewShop(actorx, game); + aSL_ExchangeShopGoodsInGame(actorx, game, 6); + aSL_ReportShopOpen2Event(); +} diff --git a/src/ac_shop_move.c_inc b/src/ac_shop_move.c_inc index 67a2669e..1444a046 100644 --- a/src/ac_shop_move.c_inc +++ b/src/ac_shop_move.c_inc @@ -234,7 +234,7 @@ static void aSHOP_open_wait(STRUCTURE_ACTOR* shop, GAME_PLAY* play) { actor = &shop->actor_class; game = &play->game; - if (mPlib_check_player_actor_main_index_OutDoorMove(play) != FALSE) { + if (mPlib_check_player_actor_main_index_OutDoorMove(&play->game) != FALSE) { return; } diff --git a/src/ac_sign.c b/src/ac_sign.c new file mode 100644 index 00000000..2f46d959 --- /dev/null +++ b/src/ac_sign.c @@ -0,0 +1,1022 @@ +#include "ac_sign.h" + +#include "m_common_data.h" +#include "m_debug.h" +#include "m_skin_matrix.h" +#include "libultra/libultra.h" +#include "m_player_lib.h" +#include "m_msg.h" +#include "m_choice.h" +#include "m_needlework_ovl.h" +#include "sys_matrix.h" +#include "m_rcp.h" + +enum { + aSIGN_ACTION_WAIT, + aSIGN_ACTION_TALK, + aSIGN_ACTION_TALK_END, + aSIGN_ACTION_MENU_OPEN_WAIT, + aSIGN_ACTION_MENU_END_WAIT, + aSIGN_ACTION_SINGLE_BIRTH, + aSIGN_ACTION_SINGLE_ERASE, + + aSIGN_ACTION_NUM +}; + +extern Vtx obj_kanban_shadow_v[]; +extern Gfx obj_kanban_shadowT_model[]; + +static u8 aSIGN_shadow_vtx_fix_flg_table[] = { TRUE, FALSE, FALSE, TRUE }; +static bIT_ShadowData_c aSIGN_shadow_data = { + ARRAY_COUNT(aSIGN_shadow_vtx_fix_flg_table), + aSIGN_shadow_vtx_fix_flg_table, + 50.0f, + obj_kanban_shadow_v, + obj_kanban_shadowT_model, +}; + +static void aSIGN_actor_ct(ACTOR* actorx, GAME* game); +static void aSIGN_actor_dt(ACTOR* actorx, GAME* game); +static void aSIGN_actor_move(ACTOR* actorx, GAME* game); +static void aSIGN_actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Ac_Sign_Profile = { + mAc_PROFILE_AC_SIGN, + ACTOR_PART_ITEM, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_AC_SIGN, + sizeof(SIGN_ACTOR), + &aSIGN_actor_ct, + &aSIGN_actor_dt, + &aSIGN_actor_move, + &aSIGN_actor_draw, + NULL, +}; +// clang-format on + +static void aSIGN_setup_action(SIGN_ACTOR* sign, int action); +static void aSIGN_change_my_original(SIGN_ACTOR* sign, GAME* game, u16 design_no); +static void aSIGN_single_birth(SIGN_ACTOR* sign, GAME* game); +static void aSIGN_single_erase(SIGN_ACTOR* sign, GAME* game); + +static void aSIGN_actor_ct(ACTOR* actorx, GAME* game) { + SIGN_ACTOR* sign = (SIGN_ACTOR*)actorx; + + Common_Get(clip).sign_control_actor = sign; + sign->is_winter = Common_Get(time.season) == mTM_SEASON_WINTER; + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); +} + +static void aSIGN_actor_dt(ACTOR* actorx, GAME* game) { + Common_Get(clip).sign_control_actor = NULL; +} + +static int aSIGN_no_cull_check(GAME_PLAY* play, int bz, int bx, int ut_z, int ut_x) { + xyz_t center_pos; + xyz_t clip_pos; + f32 w; + f32 max_dist = aSIGN_CULL_MAX_DIST; + + if (GETREG(NMREG, 5)) { + max_dist = GETREG(NMREG, 5); + } + + /* Get the world space of the unit */ + mFI_BkandUtNum2CenterWpos(¢er_pos, bx, bz, ut_x, ut_z); + center_pos.y = mFI_UNIT_BASE_SIZE_F + mCoBG_GetBgY_OnlyCenter_FromWpos2(center_pos, 0.0f); + + /* Transform world space to clip space */ + Skin_Matrix_PrjMulVector(&play->projection_matrix, ¢er_pos, &clip_pos, &w); + + /* Test that the clip space is within the camera bounds */ + if (clip_pos.z > -max_dist) { + f32 inv_w = (w < 1.0f) ? 1.0f : (1.0f / w); + + if (inv_w * (fabsf(clip_pos.x) - max_dist) < 1.0f && inv_w * (fabsf(clip_pos.y) - max_dist) < 1.0f) { + return TRUE; + } + } + + return FALSE; +} + +static int aSIGN_no_cull_talk_area(GAME_PLAY* play, int bz, int bx, int ut_z, int ut_x) { + xyz_t center_pos; + + mFI_BkandUtNum2CenterWpos(¢er_pos, bx, bz, ut_x, ut_z); + if (Camera2_CheckEnterCullingArea(center_pos.x, center_pos.z, 65.0f) == FALSE) { + return TRUE; + } + + return FALSE; +} + +static int aSIGN_draw_anime_check(SIGN_ACTOR* sign, int ut_z, int ut_x) { + int i; + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + if (sign->single[i].exist_flag && sign->single[i].unit.z == ut_z && sign->single[i].unit.x == ut_x) { + return TRUE; + } + } + + return FALSE; +} + +static void aSIGN_draw_set(SIGN_ACTOR* sign, aSIGN_draw_c* draw, GAME_PLAY* play, int bz, int bx, int base_ut_z, + int base_ut_x) { + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + int ut_z; + int ut_x; + int ut_z_max = 5; + int ut_x_max = 7; + + if (GETREG(NMREG, 2)) { + ut_z_max = GETREG(NMREG, 2); + } + + if (GETREG(NMREG, 3)) { + ut_x_max = GETREG(NMREG, 3); + } + + draw->block.z = bz; + draw->block.x = bx; + + if (fg_p != NULL) { + + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + u16 ut_x_bitfield = 0; + u16 x_bit = 1; + + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + int ut_z_local = base_ut_z - ut_z; + int ut_x_local = base_ut_x - ut_x; + + ut_z_local = ABS(ut_z_local); + ut_x_local = ABS(ut_x_local); + + if (ITEM_NAME_GET_TYPE(*fg_p) == NAME_TYPE_ITEM0 && ITEM_NAME_GET_CAT(*fg_p) == ITEM0_CAT_SIGN) { + if (aSIGN_draw_anime_check(sign, ut_z, ut_x) == FALSE) { + if ((ut_z_local <= ut_z_max && ut_x_local <= ut_z_max) || + (ut_z_local <= ut_x_max && ut_x_local <= ut_x_max && + aSIGN_no_cull_check(play, bz, bx, ut_z, ut_x))) { + if (Camera2_CheckCullingMode()) { + if (aSIGN_no_cull_talk_area(play, bz, bx, ut_z, ut_x)) { + ut_x_bitfield |= x_bit; + } + } else { + ut_x_bitfield |= x_bit; + } + } + } + } + + x_bit <<= 1; + fg_p++; + } + + draw->exist_bitfield[ut_z] = ut_x_bitfield; + } + } +} + +static void aSIGN_actor_set_draw(SIGN_ACTOR* sign, GAME* game) { + xyz_t* camera_center_pos_p = Camera2_getCenterPos_p(); + int bz_max = mFI_GetBlockZMax(); + int bx_max = mFI_GetBlockXMax(); + int bz0; + int bx0; + xyz_t pos; + int ut_z; + int ut_x; + int t_bz; + int t_bx; + int bz; + int bx; + int base_ut_z; + int base_ut_x; + int t_base_ut_z; + int t_base_ut_x; + int i; + int j; + aSIGN_draw_c* draw_p; + + for (i = 0, draw_p = sign->draw; i < 2; i++) { + for (j = 0; j < 2; j++) { + bzero(draw_p->exist_bitfield, sizeof(draw_p->exist_bitfield)); + draw_p++; + } + } + + pos = *camera_center_pos_p; + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DOOR) { + pos.z -= mFI_UT_WORLDSIZE_Z_F; + } + + if (GETREG(NMREG, 4)) { + pos.z -= (f32)GETREG(NMREG, 4); + } else { + pos.z -= 2 * mFI_UT_WORLDSIZE_Z_F; + } + + if (mFI_Wpos2BkandUtNuminBlock(&bx0, &bz0, &ut_x, &ut_z, pos)) { + if (ut_z < (UT_Z_NUM / 2)) { + t_bz = bz0 - 1; + t_base_ut_z = ut_z + UT_Z_NUM; + } else { + t_bz = bz0; + t_base_ut_z = ut_z; + } + + if (ut_x < (UT_X_NUM / 2)) { + t_bx = bx0 - 1; + t_base_ut_x = ut_x + UT_X_NUM; + } else { + t_bx = bx0; + t_base_ut_x = ut_x; + } + + bz = t_bz; + base_ut_z = t_base_ut_z; + for (i = 0, draw_p = sign->draw; i < 2; i++) { + bx = t_bx; + base_ut_x = t_base_ut_x; + for (j = 0; j < 2; j++) { + if (bz >= 0 && bz < bz_max && bx >= 0 && bx < bx_max) { + aSIGN_draw_set(sign, draw_p, (GAME_PLAY*)game, bz, bx, base_ut_z, base_ut_x); + } + + bx++; + base_ut_x -= UT_X_NUM; + draw_p++; + } + + bz++; + base_ut_z -= UT_Z_NUM; + } + } +} + +static int aSIGN_actor_BkandUtNum_formal(int* bz_p, int* bx_p, int* ut_z_p, int* ut_x_p) { + int bz_max = mFI_GetBlockZMax(); + int bx_max = mFI_GetBlockXMax(); + + if (*ut_z_p < 0) { + (*ut_z_p) += UT_Z_NUM; + (*bz_p)--; + } else if (*ut_z_p >= UT_Z_NUM) { + (*ut_z_p) -= UT_Z_NUM; + (*bz_p)++; + } + + if (*ut_x_p < 0) { + (*ut_x_p) += UT_X_NUM; + (*bx_p)--; + } else if (*ut_x_p >= UT_X_NUM) { + (*ut_x_p) -= UT_X_NUM; + (*bx_p)++; + } + + return *bz_p >= 0 && *bz_p < bz_max && *bx_p >= 0 && *bx_p < bx_max; +} + +static int aSIGN_actor_set_target(SIGN_ACTOR* sign, GAME* game) { + xyz_t sign_pos; + int base_bz; + int base_bx; + int base_ut_z; + int base_ut_x; + int bz; + int bx; + int ut_z; + int ut_x; + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + f32 min_dist = FLT_MAX; + int z; + int x; + int i; + int j; + aSIGN_draw_c* draw_p; + int res = FALSE; + + if (mFI_Wpos2BkandUtNuminBlock(&base_bx, &base_bz, &base_ut_x, &base_ut_z, player_actor->world.position)) { + + for (z = -1; z < 1; z++) { + + for (x = -1; x < 2; x++) { + bz = base_bz; + bx = base_bx; + ut_x = base_ut_x + x; + ut_z = base_ut_z + z; + + if (aSIGN_actor_BkandUtNum_formal(&bz, &bx, &ut_z, &ut_x)) { + for (i = 0, draw_p = sign->draw; i < 2; i++) { + for (j = 0; j < 2; j++) { + if (draw_p->block.z == bz && draw_p->block.x == bx && + (draw_p->exist_bitfield[ut_z] & (1 << ut_x)) != 0) { + mFI_BkandUtNum2CenterWpos(&sign_pos, bx, bz, ut_x, ut_z); + sign_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(sign_pos, 0.0f); + if (player_actor->world.position.z > sign_pos.z) { + s16 angle_y = search_position_angleY(&sign_pos, &player_actor->world.position); + int abs_angle_y = ABS(angle_y); + + if (abs_angle_y < DEG2SHORT_ANGLE2(45.0f)) { + s16 d_angle_y = + (angle_y + DEG2SHORT_ANGLE2(180.0f)) - player_actor->shape_info.rotation.y; + s16 diff_angle_y = ABS(d_angle_y); + + if (diff_angle_y <= DEG2SHORT_ANGLE2(68.83483f)) { + f32 dist_sq = Math3DLengthSquare(&player_actor->world.position, &sign_pos); + + if (dist_sq < SQ(55.0f) && dist_sq < min_dist) { + res = TRUE; + min_dist = dist_sq; + sign->sign_pos.x = sign_pos.x; + sign->sign_pos.y = sign_pos.y; + sign->sign_pos.z = sign_pos.z; + sign->target_block.z = bz; + sign->target_block.x = bx; + sign->target_unit.z = ut_z; + sign->target_unit.x = ut_x; + xyz_t_move(&sign->target_pos, &sign_pos); + } + } + } + } + } + + draw_p++; + } + } + } + } + } + } + + return res; +} + +static ACTOR* aSIGN_search_exist_npc_inCircle_forSign(GAME* game, const xyz_t* pos_p, f32 max_dist) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info_p = &play->actor_info; + ACTOR* actor = actor_info_p->list[ACTOR_PART_NPC].actor; + f32 x = pos_p->x; + f32 z = pos_p->z; + + for (actor; actor != NULL; actor = actor->next_actor) { + f32 dist = Math3DVecLengthSquare2D(actor->world.position.x - x, actor->world.position.z - z); + + if (dist < max_dist) { + NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor; + + if (npc_actor->condition_info.hide_flg == FALSE) { + return actor; + } + } + } + + actor = actor_info_p->list[ACTOR_PART_BG].actor; + for (actor; actor != NULL; actor = actor->next_actor) { + if (actor->id == mAc_PROFILE_PSNOWMAN) { + f32 dist = Math3DVecLengthSquare2D(actor->world.position.x - x, actor->world.position.z - z); + + if (dist < max_dist) { + return actor; + } + } + } + + return NULL; +} + +static int aSIGN_single_anime_check(aSIGN_single_c* single_p, xyz_t pos) { + int bz; + int bx; + int ut_z; + int ut_x; + + mFI_Wpos2BkandUtNuminBlock(&bx, &bz, &ut_x, &ut_z, pos); + if (single_p->block.x == bx && single_p->block.z == bz && single_p->unit.x == ut_x && single_p->unit.z == ut_z) { + return TRUE; + } + + return FALSE; +} + +extern int aSIGN_set_white_sign(GAME* game, xyz_t* pos_p) { + SIGN_ACTOR* sign = Common_Get(clip).sign_control_actor; + int no_free_single = TRUE; + ACTOR* actor_in_circle; + int i; + + if (sign == NULL) { + return FALSE; + } + + actor_in_circle = aSIGN_search_exist_npc_inCircle_forSign(game, pos_p, 20.0f); + if (actor_in_circle != NULL) { + return FALSE; + } + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + if (sign->single[i].exist_flag == FALSE) { + no_free_single = FALSE; + break; + } + } + + if (no_free_single) { + return FALSE; + } + + sign->sign_birth_pos = *pos_p; + sAdo_OngenTrgStart(NA_SE_ITEM_HORIDASHI, &sign->sign_birth_pos); + aSIGN_setup_action(sign, aSIGN_ACTION_SINGLE_BIRTH); + return TRUE; +} + +extern int aSIGN_erase_white_sign(GAME* game, xyz_t* pos_p) { + SIGN_ACTOR* sign = Common_Get(clip).sign_control_actor; + int i; + + if (sign == NULL) { + return FALSE; + } + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + aSIGN_single_c* single = &sign->single[i]; + + if (single->exist_flag != 0) { + /* Check if a sign is already being erected here */ + if (aSIGN_single_anime_check(single, *pos_p) != FALSE) { + return FALSE; + } + } else { + mActor_name_t* fg_p = mFI_GetUnitFG(*pos_p); + + single->scale.x = 0.0099f; + single->scale.y = 0.0099f; + single->scale.z = 0.0099f; + + mFI_Wpos2BkandUtNuminBlock(&single->block.x, &single->block.z, &single->unit.x, &single->unit.z, *pos_p); + single->exist_flag = 2; + single->item = *fg_p; + } + } + + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + return TRUE; +} + +static void aSIGN_set_talk_info(ACTOR* actorx) { + int player_no = Common_Get(player_no); + rgba_t window_color; + + if (player_no < PLAYER_NUM) { + if (GETREG(NMREG, 90)) { + mDemo_Set_msg_num(0x3065); + } else { + mDemo_Set_msg_num(0x3064); + } + } else { + mDemo_Set_msg_num(0x3065); + } + + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_ListenAble(); + window_color.r = 185; + window_color.g = 60; + window_color.b = 40; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mDemo_Set_camera(CAMERA2_PROCESS_NORMAL); + mDemo_Set_use_zoom_sound(TRUE); +} + +static void aSIGN_talk(SIGN_ACTOR* sign, GAME* game) { + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (mDemo_Check(mDemo_TYPE_SPEAK, &sign->actor_class)) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + s_xyz player_angle = player_actor->shape_info.rotation; + s16 target_y = search_position_angleY(&player_actor->world.position, &sign->target_pos); + + add_calc_short_angle2(&player_angle.y, target_y, 0.3f, DEG2SHORT_ANGLE2(22.5f), DEG2SHORT_ANGLE2(1.40625f)); + GET_PLAYER_ACTOR_NOW()->Set_force_position_angle_proc(gamePT, NULL, &player_angle, + mPlayer_FORCE_POSITION_ANGLE_ROTY); + + if (mMsg_Check_MainNormalContinue(msg_p) == TRUE) { + switch (mChoice_GET_CHOSENUM()) { + case mChoice_CHOICE0: + mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1(); + aSIGN_setup_action(sign, aSIGN_ACTION_MENU_OPEN_WAIT); + break; + case mChoice_CHOICE1: + default: + mMsg_REQUEST_MAIN_DISAPPEAR_WAIT_TYPE1(); + aSIGN_setup_action(sign, aSIGN_ACTION_TALK_END); + break; + } + } + } else { + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + } +} + +static void aSIGN_talk_end(SIGN_ACTOR* sign, GAME* game) { + if (mMsg_CHECK_MAIN_WAIT()) { + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + mMsg_request_main_forceoff(); + } +} + +static void aSIGN_wait(SIGN_ACTOR* sign, GAME* game) { + if (mDemo_Get_talk_actor() == NULL && aSIGN_actor_set_target(sign, game) && chkTrigger(BUTTON_A) && + mDemo_Get_talk_actor() == NULL) { + mDemo_Request(mDemo_TYPE_SPEAK, &sign->actor_class, &aSIGN_set_talk_info); + aSIGN_setup_action(sign, aSIGN_ACTION_TALK); + } +} + +static void aSIGN_menu_open_wait(SIGN_ACTOR* sign, GAME* game) { + u32 player_no = Common_Get(player_no); + GAME_PLAY* play = (GAME_PLAY*)game; + Submenu* submenu_p = &play->submenu; + + if (mMsg_CHECK_MAIN_WAIT()) { + + mSM_open_submenu(submenu_p, mSM_OVL_NEEDLEWORK, 0, player_no); + aSIGN_setup_action(sign, aSIGN_ACTION_MENU_END_WAIT); + mMsg_request_main_forceoff(); + } +} + +static void aSIGN_menu_end_wait(SIGN_ACTOR* sign, GAME* game) { + u32 player_no = Common_Get(player_no); + GAME_PLAY* play = (GAME_PLAY*)game; + Submenu* submenu_p = &play->submenu; + + if (submenu_p->open_flag == FALSE && mMsg_CHECK_NOT_SERIES_MAIN_WAIT() == TRUE) { + Submenu_Item_c* sm_item_p = submenu_p->item_p; + + if (sm_item_p->item == RSV_NO) { + int img_no = mNW_get_image_no(submenu_p, sm_item_p->slot_no); + img_no += player_no * mPr_ORIGINAL_DESIGN_COUNT; + + aSIGN_change_my_original(sign, game, img_no); + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + } else { + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + } + } +} + +static void aSIGN_setup_action(SIGN_ACTOR* sign, int action) { + // clang-format off + static aSIGN_ACTION_PROC process[] = { + &aSIGN_wait, + &aSIGN_talk, + &aSIGN_talk_end, + &aSIGN_menu_open_wait, + &aSIGN_menu_end_wait, + &aSIGN_single_birth, + &aSIGN_single_erase, + }; + // clang-format on + + sign->action_proc = process[action]; +} + +static void aSIGN_change_my_original(SIGN_ACTOR* sign, GAME* game, u16 design_no) { + mActor_name_t* fg_p = mFI_GetUnitFG(sign->sign_pos); + + if (ITEM_IS_SIGNBOARD(*fg_p)) { + mFI_SetFG_common(SIGNBOARD_START + design_no, sign->sign_pos, TRUE); + sAdo_OngenTrgStart(NA_SE_461, &sign->sign_pos); + } +} + +static void aSIGN_single_birth(SIGN_ACTOR* sign, GAME* game) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); // unused + xyz_t sign_birth_pos = sign->sign_birth_pos; + int i; + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + if (sign->single[i].exist_flag != 0) { + if (aSIGN_single_anime_check(&sign->single[i], sign_birth_pos)) { + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + return; + } + } else { + mActor_name_t* fg_p = mFI_GetUnitFG(sign_birth_pos); // unused + + sign->single[i].item = SIGNBOARD; + sign->single[i].scale.x = 0.0001f; + sign->single[i].scale.y = 0.0001f; + sign->single[i].scale.z = 0.0001f; + mFI_Wpos2BkandUtNuminBlock(&sign->single[i].block.x, &sign->single[i].block.z, &sign->single[i].unit.x, + &sign->single[i].unit.z, sign_birth_pos); + sign->single[i].exist_flag = 1; + sign->single[i]._24 = 0; + sign->single[i]._20 = 0.005f; + sign->single[i]._26 = 6000; + + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + mFI_BkandUtNum2CenterWpos(&sign_birth_pos, sign->single[i].block.x, sign->single[i].block.z, + sign->single[i].unit.x, sign->single[i].unit.z); + mFI_SetFG_common(RSV_SIGNBOARD, sign_birth_pos, TRUE); + mCoBG_RegistDecalCircle(&sign_birth_pos, 16.0f, 19.0f, 36); + return; + } + } + + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); +} + +static void aSIGN_single_erase(SIGN_ACTOR* sign, GAME* game) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); // unused + xyz_t sign_birth_pos = sign->sign_birth_pos; + int i; + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + aSIGN_single_c* single = &sign->single[i]; + + if (single->exist_flag != 0) { + if (aSIGN_single_anime_check(single, sign_birth_pos)) { + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + return; + } + } else { + mActor_name_t* fg_p = mFI_GetUnitFG(sign_birth_pos); + + single->scale.x = 0.0099f; + single->scale.y = 0.0099f; + single->scale.z = 0.0099f; + mFI_Wpos2BkandUtNuminBlock(&single->block.x, &single->block.z, &single->unit.x, &single->unit.z, + sign_birth_pos); + single->exist_flag = 2; + single->item = *fg_p; + + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); + return; + } + } + + aSIGN_setup_action(sign, aSIGN_ACTION_WAIT); +} + +static void aSIGN_single_all_check(SIGN_ACTOR* sign) { + s16 prev_angle; + s16 now_angle; + xyz_t* scale_p; + int i; + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + if (sign->single[i].exist_flag != 0) { + f32 wobble; + + if (sign->single[i].exist_flag == 1) { + + prev_angle = sign->single[i]._24; + sign->single[i]._24 = prev_angle + sign->single[i]._26; + now_angle = sign->single[i]._24; + sign->single[i].scale.y = sign->single[i]._20 * sinf_table((f32)now_angle * 0.0000958738f); + sign->single[i].scale.x = 0.01f - sign->single[i].scale.y; + sign->single[i].scale.y += 0.01f; + sign->single[i].scale.z = sign->single[i].scale.x; + + if ((prev_angle < 0 && now_angle >= 0) || (prev_angle < -0x8000 && now_angle >= -0x8000)) { + sign->single[i]._20 *= 0.4f; + sign->single[i]._26 += 750; + } + } + + if (sign->single[i].exist_flag == 2) { + scale_p = &sign->single[i].scale; + add_calc(&scale_p->x, 0.0f, 0.5f, 0.0006f, 0.001f); + add_calc(&scale_p->y, 0.0f, 0.5f, 0.0006f, 0.001f); + add_calc(&scale_p->z, 0.0f, 0.5f, 0.0006f, 0.001f); + } + + // wobble = ABS(sign->single[i]._20); + if (ABS(sign->single[i]._20) < 0.0002f && sign->single[i].exist_flag == 1) { + xyz_t center_pos; + + mFI_BkandUtNum2CenterWpos(¢er_pos, sign->single[i].block.x, sign->single[i].block.z, + sign->single[i].unit.x, sign->single[i].unit.z); + mFI_SetFG_common(SIGNBOARD_END, center_pos, TRUE); + sign->single[i].exist_flag = 0; + } + + if (sign->single[i].scale.x <= 0.0f && sign->single[i].exist_flag == 2) { + xyz_t center_pos; + + mFI_BkandUtNum2CenterWpos(¢er_pos, sign->single[i].block.x, sign->single[i].block.z, + sign->single[i].unit.x, sign->single[i].unit.z); + center_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(center_pos, 0.0f); // unused?? + sign->single[i].exist_flag = 0; + } + } + } +} + +static void aSIGN_random_set(void); +static void aSIGN_all_clear(void); + +static void aSIGN_actor_move(ACTOR* actorx, GAME* game) { + SIGN_ACTOR* sign = (SIGN_ACTOR*)actorx; + + (*sign->action_proc)(sign, game); + aSIGN_single_all_check(sign); + aSIGN_actor_set_draw(sign, game); + + if (GETREG(NMREG, 1)) { + int type = GETREG(NMREG, 0); + + if (type == 1000 || type == 100) { + aSIGN_random_set(); + SETREG(NMREG, 0, 0); + } + + if (GETREG(NMREG, 0) == 10) { + aSIGN_all_clear(); + SETREG(NMREG, 0, 0); + } + } +} + +static void aSIGN_random_set(void) { + mActor_name_t* fg_p; + int ut_z; + int ut_x; + int bz; + int bx; + int bx_max = mFI_GetBlockXMax(); + int bz_max = mFI_GetBlockZMax(); + + for (bz = 0; bz < bz_max; bz++) { + + for (bx = 0; bx < bx_max; bx++) { + fg_p = mFI_BkNumtoUtFGTop(bx, bz); + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (*fg_p == TREE && GETREG(NMREG, 0) == 1000) { + mFI_UtNumtoFGSet_common(SIGNBOARD_START + (qrand() >> 27), bx * UT_X_NUM + ut_x, + bz * UT_Z_NUM + ut_z, TRUE); + } else if (*fg_p == EMPTY_NO && GETREG(NMREG, 0) == 100) { + if ((ut_z & 1) != 0 && (ut_x & 1) != 0) { + mFI_UtNumtoFGSet_common(SIGNBOARD_START + (u16)(qrand() >> 27), bx * UT_X_NUM + ut_x, + bz * UT_Z_NUM + ut_z, TRUE); + } + } + + fg_p++; + } + } + } + } +} + +static void aSIGN_all_clear(void) { + mActor_name_t* fg_p; + int ut_z; + int ut_x; + int bz; + int bx; + int bx_max = mFI_GetBlockXMax(); + int bz_max = mFI_GetBlockZMax(); + + for (bz = 0; bz < bz_max; bz++) { + for (bx = 0; bx < bx_max; bx++) { + fg_p = mFI_BkNumtoUtFGTop(bx, bz); + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (*fg_p >= SIGNBOARD_START && *fg_p < (SIGNBOARD_END + 1)) { + mFI_UtNumtoFGSet_common(EMPTY_NO, bx * UT_X_NUM + ut_x, bz * UT_Z_NUM + ut_z, TRUE); + } + + fg_p++; + } + } + } + } +} + +static void aSIGN_draw_shadow(GAME* game, bIT_ShadowData_c* shadow_data); + +extern u8 hakushi_tex[]; +extern u16 hakushi_pal[]; +extern Gfx write_model[]; +extern Gfx obj_sign_s_model[]; +extern Gfx obj_sign_w_model[]; + +static void aSIGN_single_all_draw(SIGN_ACTOR* sign, GAME* game) { + static Gfx* mdl[] = { obj_sign_s_model, obj_sign_w_model }; + + GRAPH* graph = game->graph; + int i; + + _texture_z_light_fog_prim_npc(graph); + + OPEN_DISP(graph); + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_DOLPHIN); + CLOSE_DISP(graph); + + for (i = 0; i < aSIGN_SINGLE_NUM; i++) { + if (sign->single[i].exist_flag != 0) { + xyz_t sign_pos; + u32 player_no; + int my_original_idx; + u16* pal_p; + u8* tex_p; + + Matrix_push(); + mFI_BkandUtNum2CenterWpos(&sign_pos, sign->single[i].block.x, sign->single[i].block.z, + sign->single[i].unit.x, sign->single[i].unit.z); + sign_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(sign_pos, 0.0f); + player_no = (sign->single[i].item >> 3) & 3; + my_original_idx = sign->single[i].item & 7; + + Matrix_translate(sign_pos.x, sign_pos.y, sign_pos.z - 1.0f, 0); + Matrix_scale(sign->single[i].scale.x, sign->single[i].scale.y, sign->single[i].scale.z, 1); + + OPEN_POLY_OPA_DISP(graph); + + if ((sign->single[i].item >> 5) & 1) { + pal_p = hakushi_pal; + tex_p = hakushi_tex; + } else { + pal_p = mNW_PaletteIdx2Palette(Save_Get(private_data[player_no]).my_org[my_original_idx].palette); + tex_p = Save_Get(private_data[player_no]).my_org[my_original_idx].design.data; + } + + gSPSegment(POLY_OPA_DISP++, ANIME_1_TXT_SEG, pal_p); + gSPSegment(POLY_OPA_DISP++, ANIME_2_TXT_SEG, tex_p); + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, write_model); + gSPDisplayList(POLY_OPA_DISP++, mdl[sign->is_winter]); + + CLOSE_POLY_OPA_DISP(graph); + + aSIGN_draw_shadow(game, &aSIGN_shadow_data); + Matrix_pull(); + } + } + + OPEN_DISP(graph); + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_N64); + CLOSE_DISP(graph); +} + +static void aSIGN_actor_draw(ACTOR* actorx, GAME* game) { + static Gfx* mdl[] = { obj_sign_s_model, obj_sign_w_model }; + + GRAPH* graph = game->graph; + SIGN_ACTOR* sign = (SIGN_ACTOR*)actorx; + MtxF* mtxf = get_Matrix_now(); + mActor_name_t* fg_p; + int ut_z; + int ut_x; + int i; + int j; + aSIGN_draw_c* draw_p; + u16 exist_bitfield; + u16 ut_bit; + + aSIGN_single_all_draw(sign, game); + _texture_z_light_fog_prim_npc(graph); + + draw_p = sign->draw; + + OPEN_DISP(graph); + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_DOLPHIN); + CLOSE_DISP(graph); + + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + fg_p = mFI_BkNumtoUtFGTop(draw_p->block.x, draw_p->block.z); + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + exist_bitfield = draw_p->exist_bitfield[ut_z]; + + if (exist_bitfield == 0) { + fg_p += UT_X_NUM; + } else { + for (ut_x = 0, ut_bit = 1; ut_x < UT_X_NUM; ut_x++) { + if ((exist_bitfield & ut_bit) != 0) { + mActor_name_t item = *fg_p; + + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM0 && + ITEM_NAME_GET_CAT(item) == ITEM0_CAT_SIGN) { + xyz_t sign_pos; + u32 player_no; + int my_original_idx; + u16* pal_p; + u8* tex_p; + + mFI_BkandUtNum2CenterWpos(&sign_pos, draw_p->block.x, draw_p->block.z, ut_x, ut_z); + sign_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(sign_pos, 0.0f); + + player_no = (item >> 3) & 3; + my_original_idx = item & 7; + + OPEN_POLY_OPA_DISP(graph); + + /* Copy sign position to world matrix translation */ + mtxf->mf[3][0] = sign_pos.x; + mtxf->mf[3][1] = sign_pos.y; + mtxf->mf[3][2] = sign_pos.z; + + if ((item >> 5) & 1) { + pal_p = hakushi_pal; + tex_p = hakushi_tex; + } else { + pal_p = mNW_PaletteIdx2Palette( + Save_Get(private_data[player_no]).my_org[my_original_idx].palette); + tex_p = Save_Get(private_data[player_no]).my_org[my_original_idx].design.data; + } + + gSPSegment(POLY_OPA_DISP++, ANIME_1_TXT_SEG, pal_p); + gSPSegment(POLY_OPA_DISP++, ANIME_2_TXT_SEG, tex_p); + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(POLY_OPA_DISP++, write_model); + gSPDisplayList(POLY_OPA_DISP++, mdl[sign->is_winter]); + + CLOSE_POLY_OPA_DISP(graph); + + /* Draw shadow behind the sign */ + mtxf->mf[3][0] = sign_pos.x; + mtxf->mf[3][1] = sign_pos.y; + mtxf->mf[3][2] = sign_pos.z - 1.0f; + aSIGN_draw_shadow(game, &aSIGN_shadow_data); + } + } + + ut_bit <<= 1; + fg_p++; + } + } + } + + draw_p++; + } + } + + OPEN_DISP(graph); + gDPSetTextureAdjustMode(NEXT_POLY_OPA_DISP, G_TA_N64); + CLOSE_DISP(graph); +} + +static void aSIGN_copy_vtx(Vtx* dst, Vtx* src, u32 n_vtx, u8* vtx_fix_flg_table, int fix_ofs) { + int i; + + for (i = 0; i != n_vtx; i++) { + *dst = *src; + + if (*vtx_fix_flg_table == TRUE) { + dst->v.ob[0] = src->v.ob[0] + fix_ofs; + } else { + dst->v.ob[0] = src->v.ob[0]; + } + + src++; + dst++; + vtx_fix_flg_table++; + } +} + +static void aSIGN_draw_shadow(GAME* game, bIT_ShadowData_c* shadow_data) { + GAME_PLAY* play = (GAME_PLAY*)game; + GRAPH* graph = game->graph; + Vtx* vtx = (Vtx*)GRAPH_ALLOC_TYPE(graph, Vtx, shadow_data->vtx_num); + rgba_t color; + u8 l; + u8 r; + u8 g; + u8 b; + u8 a; + + if (vtx != NULL) { + aSIGN_copy_vtx(vtx, shadow_data->vtx, shadow_data->vtx_num, shadow_data->vtx_fix_flags, + play->kankyo.shadow_pos * shadow_data->size); + } else { + vtx = shadow_data->vtx; + } + + OPEN_SHADOW_DISP(graph); + + gDPPipeSync(SHADOW_DISP++); + gSPMatrix(SHADOW_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPSegment(SHADOW_DISP++, ANIME_3_TXT_SEG, vtx); + l = play->kankyo.shadow_alpha; + r = play->kankyo.base_light.shadow_color[0]; + g = play->kankyo.base_light.shadow_color[1]; + b = play->kankyo.base_light.shadow_color[2]; + a = play->kankyo.shadow_alpha; + gDPSetPrimColor(SHADOW_DISP++, 0, l, r, g, b, a); + gSPDisplayList(SHADOW_DISP++, shadow_data->gfx); + + CLOSE_SHADOW_DISP(graph); +} diff --git a/src/ac_t_keitai.c b/src/ac_t_keitai.c index ed084420..151557d7 100644 --- a/src/ac_t_keitai.c +++ b/src/ac_t_keitai.c @@ -6,26 +6,14 @@ #include "m_rcp.h" #include "m_common_data.h" -enum { - aTKT_ACTION_WAIT, - aTKT_ACTION_TAKEOUT, - aTKT_ACTION_PUTAWAY, - aTKT_ACTION_DESTRUCT, - aTKT_ACTION_TAKEOUT2, - aTKT_ACTION_DELETED // Placeholder. Unknown use. -}; - extern cKF_Animation_R_c cKF_ba_r_tol_keitai_1_keitai_on1; extern cKF_Animation_R_c cKF_ba_r_tol_keitai_1_keitai_off1; extern cKF_Skeleton_R_c cKF_bs_r_tol_keitai_1; KEITAI_ACTION_ANIM aTKT_anm_dt[6] = { - { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 1.0f }, - { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 68.0f }, - { &cKF_ba_r_tol_keitai_1_keitai_off1, 1.0f, 61.0f}, - { &cKF_ba_r_tol_keitai_1_keitai_off1, 1.0f, 61.0f}, - { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 68.0f}, - { NULL, 0.0f, 0.0f} + { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 1.0f }, { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 68.0f }, + { &cKF_ba_r_tol_keitai_1_keitai_off1, 1.0f, 61.0f }, { &cKF_ba_r_tol_keitai_1_keitai_off1, 1.0f, 61.0f }, + { &cKF_ba_r_tol_keitai_1_keitai_on1, 1.0f, 68.0f }, { NULL, 0.0f, 0.0f }, }; static void aTKT_actor_ct(ACTOR* actor, GAME* game); @@ -33,149 +21,148 @@ static void aTKT_actor_move(ACTOR* actor, GAME* game); static void aTKT_actor_draw(ACTOR* actor, GAME* game); ACTOR_PROFILE T_Keitai_Profile = { - mAc_PROFILE_T_KEITAI, - ACTOR_PART_BG, - ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - EMPTY_NO, - ACTOR_OBJ_BANK_KEITAI, - sizeof(KEITAI_ACTOR), - &aTKT_actor_ct, - NONE_ACTOR_PROC, - &aTKT_actor_move, - &aTKT_actor_draw, - NULL + mAc_PROFILE_T_KEITAI, + ACTOR_PART_BG, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_KEITAI, + sizeof(KEITAI_ACTOR), + &aTKT_actor_ct, + NONE_ACTOR_PROC, + &aTKT_actor_move, + &aTKT_actor_draw, + NULL, }; static void aTKT_setupAction(KEITAI_ACTOR* actor, int action); static void aTKT_actor_ct(ACTOR* actor, GAME* game) { - KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; - cKF_SkeletonInfo_R_ct(&keitai->keyframe, &cKF_bs_r_tol_keitai_1, NULL, keitai->work, keitai->morph); - keitai->bank_ram_start = ((GAME_PLAY*)game)->object_exchange.banks[actor->data_bank_id].ram_start; - aTKT_setupAction(keitai, aTKT_ACTION_TAKEOUT); + KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; + cKF_SkeletonInfo_R_ct(&keitai->keyframe, &cKF_bs_r_tol_keitai_1, NULL, keitai->work, keitai->morph); + keitai->bank_ram_start = ((GAME_PLAY*)game)->object_exchange.banks[actor->data_bank_id].ram_start; + aTKT_setupAction(keitai, aTOL_ACTION_TAKEOUT); } static void aTKT_calc_scale(ACTOR* actor, int idx) { - static f32 start_scale[2] = { 0.0f, 1.0f }; - static f32 end_scale[2] = { 1.0f, 0.0f }; - static f32 start_chno[2] = { 10.0f, 33.0f }; - static f32 end_chno[2] = { 20.0f, 41.0f }; + static f32 start_scale[2] = { 0.0f, 1.0f }; + static f32 end_scale[2] = { 1.0f, 0.0f }; + static f32 start_chno[2] = { 10.0f, 33.0f }; + static f32 end_chno[2] = { 20.0f, 41.0f }; - f32 current_frame; - f32 starting_chno; - f32 ending_chno; - f32 starting_scale; - f32 ending_scale; - f32 scale; - KEITAI_ACTOR* keitai; + f32 current_frame; + f32 starting_chno; + f32 ending_chno; + f32 starting_scale; + f32 ending_scale; + f32 scale; + KEITAI_ACTOR* keitai; - keitai = (KEITAI_ACTOR*)actor; - current_frame = keitai->keyframe.frame_control.current_frame; - starting_chno = start_chno[idx]; - ending_chno = end_chno[idx]; - starting_scale = start_scale[idx]; - ending_scale = end_scale[idx]; - - if (current_frame < starting_chno) { - scale = starting_scale; - } else if (current_frame > ending_chno) { - scale = ending_scale; - } else { - scale = starting_scale + ((ending_scale - starting_scale) * ((current_frame - starting_chno) / (ending_chno - starting_chno))); - } - - actor->scale.x = scale; - actor->scale.y = scale; - actor->scale.z = scale; + keitai = (KEITAI_ACTOR*)actor; + current_frame = keitai->keyframe.frame_control.current_frame; + starting_chno = start_chno[idx]; + ending_chno = end_chno[idx]; + starting_scale = start_scale[idx]; + ending_scale = end_scale[idx]; + + if (current_frame < starting_chno) { + scale = starting_scale; + } else if (current_frame > ending_chno) { + scale = ending_scale; + } else { + scale = starting_scale + + ((ending_scale - starting_scale) * ((current_frame - starting_chno) / (ending_chno - starting_chno))); + } + + actor->scale.x = scale; + actor->scale.y = scale; + actor->scale.z = scale; } static void aTKT_takeout(ACTOR* actor) { - aTKT_calc_scale(actor, 0); + aTKT_calc_scale(actor, 0); } static void aTKT_putaway(ACTOR* actor) { - aTKT_calc_scale(actor, 1); + aTKT_calc_scale(actor, 1); } static void aTKT_destruct(ACTOR* actor) { - Actor_delete(actor); + Actor_delete(actor); } static void aTKT_s_takeout(ACTOR* actor) { - KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; + KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; - actor->scale.x = 1.0f; - actor->scale.y = 1.0f; - actor->scale.z = 1.0f; + actor->scale.x = 1.0f; + actor->scale.y = 1.0f; + actor->scale.z = 1.0f; - keitai->keyframe.frame_control.current_frame = keitai->keyframe.frame_control.end_frame; + keitai->keyframe.frame_control.current_frame = keitai->keyframe.frame_control.end_frame; } static void aTKT_setupAction(KEITAI_ACTOR* keitai, int action) { - static KEITAI_PROC action_process[] = {(KEITAI_PROC)none_proc1, aTKT_takeout, aTKT_putaway, aTKT_destruct, aTKT_s_takeout, NULL}; - - KEITAI_ACTION_ANIM *action_anim; - f32 starting_frame; - f32 ending_frame; + static KEITAI_PROC process[] = { + (KEITAI_PROC)none_proc1, aTKT_takeout, aTKT_putaway, aTKT_destruct, aTKT_s_takeout, NULL, + }; - keitai->action_proc = action_process[action]; - keitai->action = action; - keitai->tools_class.work0 = action; - - action_anim = &aTKT_anm_dt[action]; - starting_frame = action_anim->start_frame; - - cKF_SkeletonInfo_R_init( - &keitai->keyframe, keitai->keyframe.skeleton, - action_anim->animation, starting_frame, action_anim->end_frame, starting_frame, - 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, NULL - ); + KEITAI_ACTION_ANIM* action_anim; + f32 starting_frame; + f32 ending_frame; + + keitai->action_proc = process[action]; + keitai->action = action; + keitai->tools_class.work0 = action; + + action_anim = &aTKT_anm_dt[action]; + starting_frame = action_anim->start_frame; + + cKF_SkeletonInfo_R_init(&keitai->keyframe, keitai->keyframe.skeleton, action_anim->animation, starting_frame, + action_anim->end_frame, starting_frame, 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, NULL); } static void aTKT_actor_move(ACTOR* actor, GAME* game) { - KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; - int action = keitai->tools_class.work0; - if (action != keitai->action) { - aTKT_setupAction(keitai, action); - } + KEITAI_ACTOR* keitai = (KEITAI_ACTOR*)actor; + int action = keitai->tools_class.work0; + if (action != keitai->action) { + aTKT_setupAction(keitai, action); + } - cKF_SkeletonInfo_R_play(&keitai->keyframe); - keitai->action_proc(actor); + cKF_SkeletonInfo_R_play(&keitai->keyframe); + keitai->action_proc(actor); } static void aTKT_actor_draw(ACTOR* actor, GAME* game) { - cKF_SkeletonInfo_R_c* keyf; - GRAPH* graph; - Mtx* mtx; - Gfx* gfx; - KEITAI_ACTOR* keitai; + cKF_SkeletonInfo_R_c* keyf; + GRAPH* graph; + Mtx* mtx; + Gfx* gfx; + KEITAI_ACTOR* keitai; - keitai = (KEITAI_ACTOR*)actor; - keyf = &keitai->keyframe; - graph = game->graph; - mtx = GRAPH_ALLOC_TYPE(graph, Mtx, keyf->skeleton->num_shown_joints); + keitai = (KEITAI_ACTOR*)actor; + keyf = &keitai->keyframe; + graph = game->graph; + mtx = GRAPH_ALLOC_TYPE(graph, Mtx, keyf->skeleton->num_shown_joints); - if (mtx != NULL) { - if (keitai->tools_class.init_matrix == TRUE) { - Matrix_put(&keitai->tools_class.matrix_work); - Matrix_Position_Zero(&actor->world.position); - keitai->tools_class.init_matrix = FALSE; + if (mtx != NULL) { + if (keitai->tools_class.init_matrix == TRUE) { + Matrix_put(&keitai->tools_class.matrix_work); + Matrix_Position_Zero(&actor->world.position); + keitai->tools_class.init_matrix = FALSE; + } else { + Matrix_translate(actor->world.position.x, actor->world.position.y, actor->world.position.z, FALSE); + Matrix_scale(0.01f, 0.01f, 0.01f, TRUE); + } + + _texture_z_light_fog_prim_npc(graph); + + OPEN_DISP(graph); + + gfx = NOW_POLY_OPA_DISP; + Matrix_scale(actor->scale.x, actor->scale.y, actor->scale.z, TRUE); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + SET_POLY_OPA_DISP(gfx); + + cKF_Si3_draw_R_SV(game, keyf, mtx, NULL, NULL, NULL); + CLOSE_DISP(graph); } - else { - Matrix_translate(actor->world.position.x, actor->world.position.y, actor->world.position.z, FALSE); - Matrix_scale(0.01f, 0.01f, 0.01f, TRUE); - } - - _texture_z_light_fog_prim_npc(graph); - - OPEN_DISP(graph); - - gfx = NOW_POLY_OPA_DISP; - Matrix_scale(actor->scale.x, actor->scale.y, actor->scale.z, TRUE); - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - SET_POLY_OPA_DISP(gfx); - - cKF_Si3_draw_R_SV(game, keyf, mtx, NULL, NULL, NULL); - CLOSE_DISP(graph); - } } diff --git a/src/ac_t_umbrella.c b/src/ac_t_umbrella.c index 6f520a89..ff50ac2f 100644 --- a/src/ac_t_umbrella.c +++ b/src/ac_t_umbrella.c @@ -7,12 +7,12 @@ #include "m_common_data.h" enum { - aTUMB_ACTION_TAKEOUT_BEFORE, - aTUMB_ACTION_OPENING, // Placeholder. Unknown use. - aTUMB_ACTION_DELETED2, // Placeholder. Unknown use. - aTUMB_ACTION_DESTRUCT, - aTUMB_ACTION_DELETED3, // Placeholder. Unknown use. - aTUMB_ACTION_DELETED4 // Placeholder. Unknown use. + aTUMB_ACTION_TAKEOUT_BEFORE, + aTUMB_ACTION_OPENING, // Placeholder. Unknown use. + aTUMB_ACTION_DELETED2, // Placeholder. Unknown use. + aTUMB_ACTION_DESTRUCT, + aTUMB_ACTION_DELETED3, // Placeholder. Unknown use. + aTUMB_ACTION_DELETED4 // Placeholder. Unknown use. }; static void aTUMB_actor_ct(ACTOR* actor, GAME* game); @@ -20,17 +20,17 @@ static void aTUMB_actor_move(ACTOR* actor, GAME* game); static void aTUMB_actor_draw(ACTOR* actor, GAME* game); ACTOR_PROFILE T_Umbrella_Profile = { - mAc_PROFILE_T_UMBRELLA, - ACTOR_PART_BG, - ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, - EMPTY_NO, - ACTOR_OBJ_BANK_UMBRELLA, - sizeof(UMBRELLA_ACTOR), - &aTUMB_actor_ct, - NONE_ACTOR_PROC, - &aTUMB_actor_move, - &aTUMB_actor_draw, - NULL + mAc_PROFILE_T_UMBRELLA, + ACTOR_PART_BG, + ACTOR_STATE_NO_DRAW_WHILE_CULLED | ACTOR_STATE_NO_MOVE_WHILE_CULLED, + EMPTY_NO, + ACTOR_OBJ_BANK_UMBRELLA, + sizeof(UMBRELLA_ACTOR), + &aTUMB_actor_ct, + NONE_ACTOR_PROC, + &aTUMB_actor_move, + &aTUMB_actor_draw, + NULL, }; extern Gfx e_umb01_model[]; @@ -103,284 +103,244 @@ extern Gfx kasa_umb_w_model[]; static void aTUMB_setupAction(UMBRELLA_ACTOR* umbrella, int action); static void aTUMB_actor_ct(ACTOR* actor, GAME* game) { - UMBRELLA_ACTOR* umbrella = (UMBRELLA_ACTOR*)actor; - aTUMB_setupAction(umbrella, umbrella->tools_class.work0); + UMBRELLA_ACTOR* umbrella = (UMBRELLA_ACTOR*)actor; + aTUMB_setupAction(umbrella, umbrella->tools_class.work0); } static void aTUMB_OngenTrgStart_sub(ACTOR* actor, u16 id) { - sAdo_OngenTrgStart(id, &actor->world.position); + sAdo_OngenTrgStart(id, &actor->world.position); } static void aTUMB_OngenTrgStart(ACTOR* actor, int idx) { - switch(idx) { - case 1: - aTUMB_OngenTrgStart_sub(actor, 0x139); - break; - case 2: - aTUMB_OngenTrgStart_sub(actor, 0x10E); - break; - } + switch (idx) { + case 1: + aTUMB_OngenTrgStart_sub(actor, 0x139); + break; + case 2: + aTUMB_OngenTrgStart_sub(actor, 0x10E); + break; + } } static void aTUMB_calc_model_scale_sub(xyz_t* scale, UMBRELLA_ACTOR* umbrella, int idx) { - static f32 e_open_sect_table[6] = { 0.0f, 7.0f, 11.0f, 18.0f, 22.0f, 26.0f }; - static f32 e_open_scale_table[12] = { - 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 1.0f,0.5f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f - }; + static f32 e_open_sect_table[6] = { 0.0f, 7.0f, 11.0f, 18.0f, 22.0f, 26.0f }; + static f32 e_open_scale_table[12] = { 0.0f, 0.0f, 0.0f, 0.0f, 0.5f, 1.0f, 0.5f, 1.0f, 1.0f, 1.0f, 1.0f, 1.0f }; - static f32 kasa_open_sect_table[4] = { 0.0f, 15.0f, 22.0f, 26.0f }; - static f32 kasa_open_scale_table[8] = { - 3.0f, 0.15f, 3.0f, 0.15f, 1.0f, 1.0f, 0.9, 1.0f - }; + static f32 kasa_open_sect_table[4] = { 0.0f, 15.0f, 22.0f, 26.0f }; + static f32 kasa_open_scale_table[8] = { 3.0f, 0.15f, 3.0f, 0.15f, 1.0f, 1.0f, 0.9, 1.0f }; - static UMBRELLA_DATA_TABLE open_data_table[2] = { - { 6, e_open_sect_table, e_open_scale_table }, - { 4, kasa_open_sect_table, kasa_open_scale_table } - }; + static UMBRELLA_DATA_TABLE open_data_table[2] = { { 6, e_open_sect_table, e_open_scale_table }, + { 4, kasa_open_sect_table, kasa_open_scale_table } }; - static f32 e_close_sect_table[6] = { 0.0f, 4.0f, 12.0f, 15.0f, 22.0f, 30.0f }; - static f32 e_close_scale_table[12] = { - 1.0f, 1.0f, 1.0f, 1.0f, 0.5f, 1.0f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f - }; + static f32 e_close_sect_table[6] = { 0.0f, 4.0f, 12.0f, 15.0f, 22.0f, 30.0f }; + static f32 e_close_scale_table[12] = { 1.0f, 1.0f, 1.0f, 1.0f, 0.5f, 1.0f, 0.5f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f }; - static f32 kasa_close_sect_table[4] = { 0.0f, 4.0f, 12.0f, 30.0f }; - static f32 kasa_close_scale_table[8] = { - 1.0f, 1.0f, 1.2f, 1.0f, 3.0f, 0.15f, 3.0f, 0.15f - }; + static f32 kasa_close_sect_table[4] = { 0.0f, 4.0f, 12.0f, 30.0f }; + static f32 kasa_close_scale_table[8] = { 1.0f, 1.0f, 1.2f, 1.0f, 3.0f, 0.15f, 3.0f, 0.15f }; - static UMBRELLA_DATA_TABLE close_data_table[2] = { - { 6, e_close_sect_table, e_close_scale_table }, - { 4, kasa_close_sect_table, kasa_close_scale_table } - }; + static UMBRELLA_DATA_TABLE close_data_table[2] = { { 6, e_close_sect_table, e_close_scale_table }, + { 4, kasa_close_sect_table, kasa_close_scale_table } }; - static UMBRELLA_DATA_TABLE* data_table[6] = { - open_data_table, open_data_table, close_data_table, close_data_table, open_data_table, NULL - }; + static UMBRELLA_DATA_TABLE* data_table[6] = { open_data_table, open_data_table, close_data_table, + close_data_table, open_data_table, NULL }; - f32 modifier_percentage; - f32 base_scale_x; - f32 base_scale_y; - f32 max_scale_y; - f32 max_scale_x; + f32 modifier_percentage; + f32 base_scale_x; + f32 base_scale_y; + f32 max_scale_y; + f32 max_scale_x; - int scale_idx_offset; - f32* scale_table; - int sector_idx; - int frame; - int corresponding_sector; - UMBRELLA_DATA_TABLE *table; - f32* sect_table; + int scale_idx_offset; + f32* scale_table; + int sector_idx; + int frame; + int corresponding_sector; + UMBRELLA_DATA_TABLE* table; + f32* sect_table; - corresponding_sector = 0; - table = data_table[umbrella->action] + idx; - sector_idx = table->table_length - 1; - frame = (int)umbrella->frame; - sect_table = table->sect_table + 1; + corresponding_sector = 0; + table = data_table[umbrella->action] + idx; + sector_idx = table->table_length - 1; + frame = (int)umbrella->frame; + sect_table = table->sect_table + 1; - for(sector_idx; sector_idx > 0; sector_idx--) { - if (frame <= (int)sect_table[0]) { - frame -= (int)sect_table[-1]; - break; - } + for (sector_idx; sector_idx > 0; sector_idx--) { + if (frame <= (int)sect_table[0]) { + frame -= (int)sect_table[-1]; + break; + } - sect_table++; - corresponding_sector++; - } + sect_table++; + corresponding_sector++; + } - scale_idx_offset = corresponding_sector * 2; - scale_table = table->scale_table; - base_scale_x = scale_table[scale_idx_offset]; - modifier_percentage = (f32) frame / (sect_table[0] - sect_table[-1]); - base_scale_y = scale_table[scale_idx_offset + 1]; - max_scale_y = scale_table[scale_idx_offset + 3]; - max_scale_x = scale_table[scale_idx_offset + 2]; + scale_idx_offset = corresponding_sector * 2; + scale_table = table->scale_table; + base_scale_x = scale_table[scale_idx_offset]; + modifier_percentage = (f32)frame / (sect_table[0] - sect_table[-1]); + base_scale_y = scale_table[scale_idx_offset + 1]; + max_scale_y = scale_table[scale_idx_offset + 3]; + max_scale_x = scale_table[scale_idx_offset + 2]; - scale->x = base_scale_x + modifier_percentage * (max_scale_x - base_scale_x); - scale->y = base_scale_y + modifier_percentage * (max_scale_y - base_scale_y); - scale->z = scale->y; + scale->x = base_scale_x + modifier_percentage * (max_scale_x - base_scale_x); + scale->y = base_scale_y + modifier_percentage * (max_scale_y - base_scale_y); + scale->z = scale->y; } static void aTUMB_calc_model_scale(UMBRELLA_ACTOR* umbrella) { - aTUMB_calc_model_scale_sub(&umbrella->scale_e, umbrella, 0); - aTUMB_calc_model_scale_sub(&umbrella->scale_kasa, umbrella, 1); + aTUMB_calc_model_scale_sub(&umbrella->scale_e, umbrella, 0); + aTUMB_calc_model_scale_sub(&umbrella->scale_kasa, umbrella, 1); } static void aTUMB_anime_proc(UMBRELLA_ACTOR* umbrella) { - static f32 max_anm[6] = { 0.0f, 26.0f, 30.0f, 30.0f, 26.0f, 0.0f }; + static f32 max_anm[6] = { 0.0f, 26.0f, 30.0f, 30.0f, 26.0f, 0.0f }; - f32 max_anm_for_action; - f32 next_frame; - int action; + f32 max_anm_for_action; + f32 next_frame; + int action; - action = umbrella->action; - max_anm_for_action = max_anm[action]; - next_frame = umbrella->frame; - next_frame += 0.5f; + action = umbrella->action; + max_anm_for_action = max_anm[action]; + next_frame = umbrella->frame; + next_frame += 0.5f; - if (next_frame >= max_anm_for_action) { - next_frame = max_anm_for_action; - } + if (next_frame >= max_anm_for_action) { + next_frame = max_anm_for_action; + } - if (action == aTUMB_ACTION_OPENING) { - umbrella->opened_fully = next_frame == max_anm_for_action; - } + if (action == aTUMB_ACTION_OPENING) { + umbrella->opened_fully = next_frame == max_anm_for_action; + } - umbrella->frame = next_frame; - aTUMB_calc_model_scale(umbrella); + umbrella->frame = next_frame; + aTUMB_calc_model_scale(umbrella); } static void aTUMB_takeout_before(ACTOR* actor) { - UMBRELLA_ACTOR* umbrella = (UMBRELLA_ACTOR*)actor; - if (umbrella->tools_class.unk1BC == TRUE) { - aTUMB_setupAction(umbrella, aTUMB_ACTION_OPENING); - } + UMBRELLA_ACTOR* umbrella = (UMBRELLA_ACTOR*)actor; + if (umbrella->tools_class.unk1BC == TRUE) { + aTUMB_setupAction(umbrella, aTUMB_ACTION_OPENING); + } } static void aTUMB_destruct(ACTOR* actor) { - Actor_delete(actor); + Actor_delete(actor); } void aTUMB_setupAction(UMBRELLA_ACTOR* umbrella, int action) { - static UMBRELLA_PROC process[] = { - aTUMB_takeout_before, (UMBRELLA_PROC)none_proc1, (UMBRELLA_PROC)none_proc1, aTUMB_destruct, (UMBRELLA_PROC)none_proc1, NULL - }; + static UMBRELLA_PROC process[] = { aTUMB_takeout_before, (UMBRELLA_PROC)none_proc1, (UMBRELLA_PROC)none_proc1, + aTUMB_destruct, (UMBRELLA_PROC)none_proc1, NULL }; - f32 frame; + f32 frame; - umbrella->action_proc = process[action]; - umbrella->action = action; - umbrella->tools_class.work0 = action; - - aTUMB_OngenTrgStart(&umbrella->tools_class.actor_class, action); + umbrella->action_proc = process[action]; + umbrella->action = action; + umbrella->tools_class.work0 = action; - if (action == aTUMB_ACTION_DELETED3) { - umbrella->opened_fully = TRUE; - frame = 26.0f; - } else { - frame = 0.0f; - } + aTUMB_OngenTrgStart(&umbrella->tools_class.actor_class, action); - umbrella->frame = frame; + if (action == aTUMB_ACTION_DELETED3) { + umbrella->opened_fully = TRUE; + frame = 26.0f; + } else { + frame = 0.0f; + } + + umbrella->frame = frame; } static void aTUMB_actor_move(ACTOR* actor, GAME* game) { - UMBRELLA_ACTOR* umbrella; - int action; + UMBRELLA_ACTOR* umbrella; + int action; - umbrella = (UMBRELLA_ACTOR*)actor; - action = umbrella->tools_class.work0; + umbrella = (UMBRELLA_ACTOR*)actor; + action = umbrella->tools_class.work0; - if (action != umbrella->action) { - aTUMB_setupAction(umbrella, action); - } + if (action != umbrella->action) { + aTUMB_setupAction(umbrella, action); + } - if (umbrella->action != aTUMB_ACTION_DESTRUCT) { - aTUMB_anime_proc(umbrella); - } + if (umbrella->action != aTUMB_ACTION_DESTRUCT) { + aTUMB_anime_proc(umbrella); + } - umbrella->action_proc(actor); + umbrella->action_proc(actor); } static void aTUMB_actor_draw(ACTOR* actor, GAME* game) { - static UMBRELLA_MODEL draw_dt[40] = { - { e_umb01_model, kasa_umb01_model }, - { e_umb02_model, kasa_umb02_model }, - { e_umb03_model, kasa_umb03_model }, - { e_umb04_model, kasa_umb04_model }, - { e_umb05_model, kasa_umb05_model }, - { e_umb06_model, kasa_umb06_model }, - { e_umb07_model, kasa_umb07_model }, - { e_umb08_model, kasa_umb08_model }, - { e_umb09_model, kasa_umb09_model }, - { e_umb10_model, kasa_umb10_model }, - { e_umb11_model, kasa_umb11_model }, - { e_umb12_model, kasa_umb12_model }, - { e_umb13_model, kasa_umb13_model }, - { e_umb14_model, kasa_umb14_model }, - { e_umb15_model, kasa_umb15_model }, - { e_umb16_model, kasa_umb16_model }, - { e_umb17_model, kasa_umb17_model }, - { e_umb18_model, kasa_umb18_model }, - { e_umb19_model, kasa_umb19_model }, - { e_umb20_model, kasa_umb20_model }, - { e_umb21_model, kasa_umb21_model }, - { e_umb22_model, kasa_umb22_model }, - { e_umb23_model, kasa_umb23_model }, - { e_umb24_model, kasa_umb24_model }, - { e_umb25_model, kasa_umb25_model }, - { e_umb26_model, kasa_umb26_model }, - { e_umb27_model, kasa_umb27_model }, - { e_umb28_model, kasa_umb28_model }, - { e_umb29_model, kasa_umb29_model }, - { e_umb30_model, kasa_umb30_model }, - { e_umb31_model, kasa_umb31_model }, - { e_umb32_model, kasa_umb32_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model }, - { e_umb_w_model, kasa_umb_w_model } - }; + static UMBRELLA_MODEL draw_dt[40] = { + { e_umb01_model, kasa_umb01_model }, { e_umb02_model, kasa_umb02_model }, { e_umb03_model, kasa_umb03_model }, + { e_umb04_model, kasa_umb04_model }, { e_umb05_model, kasa_umb05_model }, { e_umb06_model, kasa_umb06_model }, + { e_umb07_model, kasa_umb07_model }, { e_umb08_model, kasa_umb08_model }, { e_umb09_model, kasa_umb09_model }, + { e_umb10_model, kasa_umb10_model }, { e_umb11_model, kasa_umb11_model }, { e_umb12_model, kasa_umb12_model }, + { e_umb13_model, kasa_umb13_model }, { e_umb14_model, kasa_umb14_model }, { e_umb15_model, kasa_umb15_model }, + { e_umb16_model, kasa_umb16_model }, { e_umb17_model, kasa_umb17_model }, { e_umb18_model, kasa_umb18_model }, + { e_umb19_model, kasa_umb19_model }, { e_umb20_model, kasa_umb20_model }, { e_umb21_model, kasa_umb21_model }, + { e_umb22_model, kasa_umb22_model }, { e_umb23_model, kasa_umb23_model }, { e_umb24_model, kasa_umb24_model }, + { e_umb25_model, kasa_umb25_model }, { e_umb26_model, kasa_umb26_model }, { e_umb27_model, kasa_umb27_model }, + { e_umb28_model, kasa_umb28_model }, { e_umb29_model, kasa_umb29_model }, { e_umb30_model, kasa_umb30_model }, + { e_umb31_model, kasa_umb31_model }, { e_umb32_model, kasa_umb32_model }, { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, { e_umb_w_model, kasa_umb_w_model }, { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, { e_umb_w_model, kasa_umb_w_model }, { e_umb_w_model, kasa_umb_w_model }, + { e_umb_w_model, kasa_umb_w_model }, + }; - UMBRELLA_ACTOR* umbrella; - GRAPH* graph; - int umbrella_design_index; - int umbrella_name; - int tool_name; - UMBRELLA_MODEL* umbrella_model; - ACTOR* parent; - Gfx* gfx; + UMBRELLA_ACTOR* umbrella; + GRAPH* graph; + int umbrella_design_index; + int umbrella_name; + int tool_name; + UMBRELLA_MODEL* umbrella_model; + ACTOR* parent; + Gfx* gfx; - umbrella = (UMBRELLA_ACTOR*)actor; - parent = actor->parent_actor; - tool_name = umbrella->tools_class.tool_name; - graph = game->graph; - umbrella_model = &draw_dt[tool_name]; + umbrella = (UMBRELLA_ACTOR*)actor; + parent = actor->parent_actor; + tool_name = umbrella->tools_class.tool_name; + graph = game->graph; + umbrella_model = &draw_dt[tool_name]; - if (parent->drawn == FALSE || umbrella->tools_class.init_matrix == FALSE) { - return; - } - - Matrix_put(&umbrella->tools_class.matrix_work); - Matrix_Position_Zero(&umbrella->tools_class.actor_class.world.position); - - umbrella->tools_class.init_matrix = FALSE; - umbrella->tools_class.unk1BC = TRUE; - - _texture_z_light_fog_prim_npc(graph); - - OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; - - Matrix_rotateXYZ(0, -0x4000, 0, TRUE); - Matrix_scale(umbrella->scale_e.x, umbrella->scale_e.y, umbrella->scale_e.z, TRUE); - - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, umbrella_model->model_e); - - Matrix_translate(4500.0f, 0.0f, 0.0f, TRUE); - Matrix_scale(umbrella->scale_kasa.x, umbrella->scale_kasa.y, umbrella->scale_kasa.z, TRUE); - - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - if (tool_name >= TOOL_UMBRELLA32) { - umbrella_name = tool_name - TOOL_UMBRELLA32; - if (parent->part == ACTOR_PART_PLAYER) { - umbrella_name = (umbrella_name & 7); - gSPSegment(gfx++, G_MWO_SEGMENT_8, mNW_PaletteIdx2Palette(Player_Palette_Get(umbrella_name))); - gSPSegment(gfx++, G_MWO_SEGMENT_9, Player_Design_Get(umbrella_name)); + if (parent->drawn == FALSE || umbrella->tools_class.init_matrix == FALSE) { + return; } - else { - umbrella_name = umbrella_name & 3; - gSPSegment(gfx++, G_MWO_SEGMENT_8, mNW_PaletteIdx2Palette(Able_Sisters_Umbrella_Palette_Get(umbrella_name))); - gSPSegment(gfx++, G_MWO_SEGMENT_9, Able_Sisters_Umbrella_Design_Get(umbrella_name)); - } - } - gSPDisplayList(gfx++, umbrella_model->model_kasa); - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); + Matrix_put(&umbrella->tools_class.matrix_work); + Matrix_Position_Zero(&umbrella->tools_class.actor_class.world.position); + + umbrella->tools_class.init_matrix = FALSE; + umbrella->tools_class.unk1BC = TRUE; + + _texture_z_light_fog_prim_npc(graph); + + OPEN_DISP(graph); + gfx = NOW_POLY_OPA_DISP; + + Matrix_rotateXYZ(0, -0x4000, 0, TRUE); + Matrix_scale(umbrella->scale_e.x, umbrella->scale_e.y, umbrella->scale_e.z, TRUE); + + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, umbrella_model->model_e); + + Matrix_translate(4500.0f, 0.0f, 0.0f, TRUE); + Matrix_scale(umbrella->scale_kasa.x, umbrella->scale_kasa.y, umbrella->scale_kasa.z, TRUE); + + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (tool_name >= TOOL_ORG_UMBRELLA0) { + umbrella_name = tool_name - TOOL_ORG_UMBRELLA0; + if (parent->part == ACTOR_PART_PLAYER) { + umbrella_name = (umbrella_name & 7); + gSPSegment(gfx++, G_MWO_SEGMENT_8, mNW_PaletteIdx2Palette(Player_Palette_Get(umbrella_name))); + gSPSegment(gfx++, G_MWO_SEGMENT_9, Player_Design_Get(umbrella_name)); + } else { + umbrella_name = umbrella_name & 3; + gSPSegment(gfx++, G_MWO_SEGMENT_8, + mNW_PaletteIdx2Palette(Able_Sisters_Umbrella_Palette_Get(umbrella_name))); + gSPSegment(gfx++, G_MWO_SEGMENT_9, Able_Sisters_Umbrella_Design_Get(umbrella_name)); + } + } + + gSPDisplayList(gfx++, umbrella_model->model_kasa); + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(graph); } diff --git a/src/ac_tent.c b/src/ac_tent.c index 545219eb..bce9c0eb 100644 --- a/src/ac_tent.c +++ b/src/ac_tent.c @@ -76,7 +76,8 @@ static void aTnt_ChangeFg(ACTOR* actor, int type) { if (mSN_ClearSnowman(name) == 0) { int dug = FALSE; - if ((((*name >= BURIED_PITFALL_START) && (*name <= BURIED_PITFALL_END)) || (*name == SHINE_SPOT))) { + if ((((*name >= BURIED_PITFALL_HOLE_START) && (*name <= BURIED_PITFALL_HOLE_END)) || + (*name == SHINE_SPOT))) { dug = TRUE; } diff --git a/src/ac_tools.c b/src/ac_tools.c index 5fcfb6d2..19660eb4 100644 --- a/src/ac_tools.c +++ b/src/ac_tools.c @@ -10,7 +10,6 @@ static void aTOL_actor_dt(ACTOR*, GAME*); static void aTOL_init_clip_area(GAME* play); static void aTOL_free_clip_area(); - ACTOR_PROFILE Tools_Profile = { mAc_PROFILE_TOOLS, ACTOR_PART_CONTROL, @@ -25,124 +24,115 @@ ACTOR_PROFILE Tools_Profile = { NULL, }; -aTOL_Clip_c aTOL_clip; - - - -static void aTOL_actor_ct(ACTOR* actor, GAME* game){ +aTOL_Clip_c aTOL_clip; +static void aTOL_actor_ct(ACTOR* actor, GAME* game) { aTOL_init_clip_area(game); } -static void aTOL_actor_dt(ACTOR*, GAME*){ - +static void aTOL_actor_dt(ACTOR*, GAME*) { aTOL_free_clip_area(); } -static void aTOL_check_data_bank(int id, ACTOR* actor){ - +static void aTOL_check_data_bank(int id, ACTOR* actor) { ACTOR* kill; aTOL_Clip_c* clip; - if((actor->part == ACTOR_PART_PLAYER) && (id <= 0x1F)){ + if ((actor->part == ACTOR_PART_PLAYER) && (id <= 0x1F)) { clip = Common_Get(clip.tools_clip); - if(clip->bank_id != -1){ + if (clip->bank_id != -1) { kill = actor->child_actor; - if((kill != NULL) && (kill->data_bank_id == clip->bank_id)){ + if ((kill != NULL) && (kill->data_bank_id == clip->bank_id)) { Actor_delete(kill); } } } } -static TOOLS_ACTOR* aTOL_birth_proc(int name, int id, TOOLS_ACTOR* tool, - GAME_PLAY* play, s16 arg, int* arg5){ +static ACTOR* aTOL_birth_proc(int name, int id, ACTOR* tool, GAME* game, s16 arg, int* arg5) { static s16 profile_table[] = { - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, - mAc_PROFILE_T_KEITAI, mAc_PROFILE_T_UTIWA, mAc_PROFILE_T_HANABI, mAc_PROFILE_T_CRACKER, mAc_PROFILE_T_PISTOL, - mAc_PROFILE_T_FLAG, mAc_PROFILE_T_TUMBLER, mAc_PROFILE_T_NPCSAO, mAc_PROFILE_T_TAMA, mAc_PROFILE_T_TAMA, - mAc_PROFILE_T_TAMA, mAc_PROFILE_T_TAMA, mAc_PROFILE_T_ANRIUM1, mAc_PROFILE_T_BAG1, mAc_PROFILE_T_BAG2, - mAc_PROFILE_T_BISCUS1, mAc_PROFILE_T_BISCUS2, mAc_PROFILE_T_BISCUS3, mAc_PROFILE_T_BISCUS4, mAc_PROFILE_T_HASU1, - mAc_PROFILE_T_HAT1, mAc_PROFILE_T_HAT2, mAc_PROFILE_T_HAT3, mAc_PROFILE_T_REI1, mAc_PROFILE_T_REI2, - mAc_PROFILE_T_ZINNIA1, mAc_PROFILE_T_ZINNIA2, mAc_PROFILE_T_COBRA1, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, mAc_PROFILE_T_UMBRELLA, + mAc_PROFILE_T_KEITAI, mAc_PROFILE_T_UTIWA, mAc_PROFILE_T_HANABI, mAc_PROFILE_T_CRACKER, + mAc_PROFILE_T_PISTOL, mAc_PROFILE_T_FLAG, mAc_PROFILE_T_TUMBLER, mAc_PROFILE_T_NPCSAO, + mAc_PROFILE_T_TAMA, mAc_PROFILE_T_TAMA, mAc_PROFILE_T_TAMA, mAc_PROFILE_T_TAMA, + mAc_PROFILE_T_ANRIUM1, mAc_PROFILE_T_BAG1, mAc_PROFILE_T_BAG2, mAc_PROFILE_T_BISCUS1, + mAc_PROFILE_T_BISCUS2, mAc_PROFILE_T_BISCUS3, mAc_PROFILE_T_BISCUS4, mAc_PROFILE_T_HASU1, + mAc_PROFILE_T_HAT1, mAc_PROFILE_T_HAT2, mAc_PROFILE_T_HAT3, mAc_PROFILE_T_REI1, + mAc_PROFILE_T_REI2, mAc_PROFILE_T_ZINNIA1, mAc_PROFILE_T_ZINNIA2, mAc_PROFILE_T_COBRA1, }; - + TOOLS_ACTOR* child; + GAME_PLAY* play = (GAME_PLAY*)game; - aTOL_check_data_bank(name, &tool->actor_class); + aTOL_check_data_bank(name, tool); - child = (TOOLS_ACTOR*)Actor_info_make_child_actor(&play->actor_info, &tool->actor_class, &play->game, - profile_table[name], 0.0f, 0.0f, 0.0f, 0, 0, 0, -1, 0, arg, -1); + child = (TOOLS_ACTOR*)Actor_info_make_child_actor(&play->actor_info, tool, game, profile_table[name], 0.0f, 0.0f, + 0.0f, 0, 0, 0, -1, 0, arg, -1); - if(child != NULL){ + if (child != NULL) { child->work0 = id; child->tool_name = name; } - - if(arg5 != NULL){ + if (arg5 != NULL) { *arg5 = -1; } - + + return &child->actor_class; } -static int aTOL_chg_request_mode_proc(ACTOR* actor ,TOOLS_ACTOR* tool, int id){ +static int aTOL_chg_request_mode_proc(ACTOR* actor, ACTOR* tool, int id) { + TOOLS_ACTOR* t_actor = (TOOLS_ACTOR*)tool; - if(actor != tool->actor_class.parent_actor){ - return 0; + if (actor != tool->parent_actor) { + return FALSE; } - tool->work0 = id; - return 1; + t_actor->work0 = id; + return TRUE; } -static void aTOL_secure_pl_umbrella_bank_area(GAME* game){ +static void aTOL_secure_pl_umbrella_bank_area(GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; Object_Exchange_c* exchange; int id; - + exchange = &play->object_exchange; id = exchange->bank_idx; - if(mSc_secure_exchange_keep_bank(exchange, 0, 0xC00) != NULL){ + if (mSc_secure_exchange_keep_bank(exchange, 0, 0xC00) != NULL) { Common_Set(clip.tools_clip->bank_id, id); - } - else{ + } else { Common_Set(clip.tools_clip->bank_id, -1); - } - } -static void aTOL_init_clip_area(GAME* game){ - - if(Common_Get(clip.tools_clip) == NULL){ - +static void aTOL_init_clip_area(GAME* game) { + if (Common_Get(clip.tools_clip) == NULL) { Common_Set(clip.tools_clip, &aTOL_clip); bzero(&aTOL_clip, sizeof(aTOL_Clip_c)); - Common_Set(clip.tools_clip->aTOL_birth_proc,aTOL_birth_proc); - Common_Set(clip.tools_clip->aTOL_chg_request_mode_proc,aTOL_chg_request_mode_proc); + Common_Set(clip.tools_clip->aTOL_birth_proc, aTOL_birth_proc); + Common_Set(clip.tools_clip->aTOL_chg_request_mode_proc, aTOL_chg_request_mode_proc); aTOL_secure_pl_umbrella_bank_area(game); } } - -static void aTOL_free_clip_area(){ - - if(Common_Get(clip.tools_clip) != NULL){ - +static void aTOL_free_clip_area() { + if (Common_Get(clip.tools_clip) != NULL) { Common_Set(clip.tools_clip, NULL); } -} \ No newline at end of file +} diff --git a/src/ac_train_door.c b/src/ac_train_door.c index 8fe35bf7..ede88e21 100644 --- a/src/ac_train_door.c +++ b/src/ac_train_door.c @@ -20,72 +20,72 @@ ACTOR_PROFILE TrainDoor_Profile = { &aTRD_actor_dt, &aTRD_actor_move, &aTRD_actor_draw, - NULL + NULL, }; extern cKF_Skeleton_R_c cKF_bs_r_obj_romtrain_door; extern cKF_Animation_R_c cKF_ba_r_obj_romtrain_door; -static void aTRD_actor_ct(ACTOR* actor, GAME* game){ +static void aTRD_actor_ct(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - cKF_SkeletonInfo_R_ct(&traindoor->keyframe, &cKF_bs_r_obj_romtrain_door, NULL, &traindoor->work, &traindoor->target); - cKF_SkeletonInfo_R_init(&traindoor->keyframe,traindoor->keyframe.skeleton, &cKF_ba_r_obj_romtrain_door,1.0f,51.0f,1.0f, - 0.0f,0.0f,0,NULL); - traindoor->keyframe.morph_counter = 0.0f; - cKF_SkeletonInfo_R_play(&traindoor->keyframe); + cKF_SkeletonInfo_R_ct(&traindoor->common_actor_class.anime.keyframe, &cKF_bs_r_obj_romtrain_door, NULL, + traindoor->work, traindoor->target); + cKF_SkeletonInfo_R_init(&traindoor->common_actor_class.anime.keyframe, + traindoor->common_actor_class.anime.keyframe.skeleton, &cKF_ba_r_obj_romtrain_door, 1.0f, + 51.0f, 1.0f, 0.0f, 0.0f, 0, NULL); + traindoor->common_actor_class.anime.keyframe.morph_counter = 0.0f; + cKF_SkeletonInfo_R_play(&traindoor->common_actor_class.anime.keyframe); } -static void aTRD_actor_dt(ACTOR* actor, GAME* game){ +static void aTRD_actor_dt(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - cKF_SkeletonInfo_R_dt(&traindoor->keyframe); + cKF_SkeletonInfo_R_dt(&traindoor->common_actor_class.anime.keyframe); } -static void aTRD_set_door_SE(ACTOR* actor){ +static void aTRD_set_door_SE(ACTOR* actor) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - static f32 chk_pat[] = {2.0f, 27.0f}; - static u16 se_no[] = {1042, 1043,0, 0,0,0, 0,0,0}; + static f32 chk_pat[] = { 2.0f, 27.0f }; + static u16 se_no[] = { NA_SE_TRAINDOOR0, NA_SE_TRAINDOOR1 }; int i; - for(i = 0; i < 2; i++){ - - if(cKF_FrameControl_passCheck_now(&traindoor->keyframe.frame_control,chk_pat[i]) != 0){ - sAdo_OngenTrgStart(se_no[i], &traindoor->actor_class.world.position); - return; + for (i = 0; i < 2; i++) { + if (cKF_FrameControl_passCheck_now(&traindoor->common_actor_class.anime.keyframe.frame_control, chk_pat[i])) { + sAdo_OngenTrgStart(se_no[i], &traindoor->common_actor_class.actor_class.world.position); + break; } } } -static void aTRD_actor_move(ACTOR* actor, GAME* game){ +static void aTRD_actor_move(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - if(traindoor->idle == 1){ - traindoor->idle = 0; - traindoor->keyframe.frame_control.speed = 0.5f; + if (traindoor->open_flag == TRUE) { + traindoor->open_flag = FALSE; + traindoor->common_actor_class.anime.keyframe.frame_control.speed = 0.5f; } - if(cKF_SkeletonInfo_R_play(&traindoor->keyframe) == 1){ - traindoor->keyframe.frame_control.current_frame = traindoor->keyframe.frame_control.start_frame; - traindoor->keyframe.frame_control.speed = 0.0f; + if (cKF_SkeletonInfo_R_play(&traindoor->common_actor_class.anime.keyframe) == cKF_FRAMECONTROL_REPEAT) { + traindoor->common_actor_class.anime.keyframe.frame_control.current_frame = + traindoor->common_actor_class.anime.keyframe.frame_control.start_frame; + traindoor->common_actor_class.anime.keyframe.frame_control.speed = 0.0f; } + aTRD_set_door_SE(actor); } -static void aTRD_actor_draw(ACTOR* actor, GAME* game){ +static void aTRD_actor_draw(ACTOR* actor, GAME* game) { TRAINDOOR_ACTOR* traindoor = (TRAINDOOR_ACTOR*)actor; - cKF_SkeletonInfo_R_c* keyf = &traindoor->keyframe; - Gfx* mtx; + cKF_SkeletonInfo_R_c* keyf = &traindoor->common_actor_class.anime.keyframe; Mtx* mtxp; - - mtx = GRAPH_ALLOC(game->graph, (u32) keyf->skeleton->num_shown_joints * 64); - mtxp = (Mtx*)mtx; - if(mtxp != NULL){ + mtxp = GRAPH_ALLOC_TYPE(game->graph, Mtx, (u32)keyf->skeleton->num_shown_joints); + if (mtxp != NULL) { _texture_z_light_fog_prim(game->graph); texture_z_light_prim_xlu_disp(game->graph); - cKF_Si3_draw_R_SV(game,keyf, mtxp, NULL,NULL,NULL); + cKF_Si3_draw_R_SV(game, keyf, mtxp, NULL, NULL, NULL); } -} \ No newline at end of file +} diff --git a/src/ac_train_window.c b/src/ac_train_window.c index 0a8413eb..0d354e21 100644 --- a/src/ac_train_window.c +++ b/src/ac_train_window.c @@ -7,175 +7,170 @@ #include "m_play.h" #include "sys_matrix.h" - -u16 aTrainWindow_tree_pal_table[15][16]= { -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0545, -0x9885,0xA0C5, -0xAD05,0xBD66, -0xCDE8,0xD2FA, -0xE77C,0xF3BE -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0655, -0x98C5,0xA105, -0xB165,0xC1E6, -0xD268,0xD2FA, -0xE77C,0xF3BE -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0464, -0x90C3,0x9504, -0xA184,0xAA05, -0xB287,0xD2FA, -0xE77C,0xF3BE -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0164, -0x80E5,0x8145, -0x89A4,0x9A60, -0xB300,0xD380, -0xEFE8,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0C37, -0xB086,0xC8A7, -0xE0C7,0xF109, -0xF98C,0xFE10, -0xFF18,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0066, -0x80C9,0x8127, -0x8186,0x8202, -0x82C1,0x9380, -0xCBE8,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0058, -0x80C9,0x80E8, -0x8148,0x81C8, -0x8268,0x9326, -0xC3EB,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0353, -0x8CC2,0x9102, -0x9963,0xA5C4, -0xB242,0xC6E4, -0xDB88,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0564, -0x90C5,0x9924, -0xA984,0xBA03, -0xD2A3,0xE304, -0xEF6A,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0842, -0xA463,0xB4A2, -0xC502,0xD961, -0xE9E1,0xF682, -0xFF26,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0814, -0xB024,0xC044, -0xCC85,0xE0C6, -0xF128,0xFE0B, -0xFEEB,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0734, -0xA484,0xAC83, -0xBCC4,0xD503, -0xE985,0xF629, -0xFF0E,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0635, -0xA085,0xA8C5, -0xB505,0xC566, -0xD5E8,0xEE8A, -0xFF2C,0x8000 -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0545, -0x9885,0xA0C5, -0xAD05,0xBD66, -0xCDE8,0xD2FA, -0xE77C,0xF3BE -}, -{ -0x0724,0xA443, -0xBCA4,0xDD25, -0xF5E7,0xF209, -0xFECD,0x0545, -0x9885,0xA0C5, -0xAD05,0xBD66, -0xCDE8,0xD2FA, -0xE77C,0xF3BE -} +// clang-format off +static u16 aTrainWindow_tree_pal_table[15][16] ATTRIBUTE_ALIGN(32) = { + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0545, + 0x9885,0xA0C5, + 0xAD05,0xBD66, + 0xCDE8,0xD2FA, + 0xE77C,0xF3BE + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0655, + 0x98C5,0xA105, + 0xB165,0xC1E6, + 0xD268,0xD2FA, + 0xE77C,0xF3BE + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0464, + 0x90C3,0x9504, + 0xA184,0xAA05, + 0xB287,0xD2FA, + 0xE77C,0xF3BE + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0164, + 0x80E5,0x8145, + 0x89A4,0x9A60, + 0xB300,0xD380, + 0xEFE8,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0C37, + 0xB086,0xC8A7, + 0xE0C7,0xF109, + 0xF98C,0xFE10, + 0xFF18,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0066, + 0x80C9,0x8127, + 0x8186,0x8202, + 0x82C1,0x9380, + 0xCBE8,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0058, + 0x80C9,0x80E8, + 0x8148,0x81C8, + 0x8268,0x9326, + 0xC3EB,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0353, + 0x8CC2,0x9102, + 0x9963,0xA5C4, + 0xB242,0xC6E4, + 0xDB88,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0564, + 0x90C5,0x9924, + 0xA984,0xBA03, + 0xD2A3,0xE304, + 0xEF6A,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0842, + 0xA463,0xB4A2, + 0xC502,0xD961, + 0xE9E1,0xF682, + 0xFF26,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0814, + 0xB024,0xC044, + 0xCC85,0xE0C6, + 0xF128,0xFE0B, + 0xFEEB,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0734, + 0xA484,0xAC83, + 0xBCC4,0xD503, + 0xE985,0xF629, + 0xFF0E,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0635, + 0xA085,0xA8C5, + 0xB505,0xC566, + 0xD5E8,0xEE8A, + 0xFF2C,0x8000 + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0545, + 0x9885,0xA0C5, + 0xAD05,0xBD66, + 0xCDE8,0xD2FA, + 0xE77C,0xF3BE + }, + { + 0x0724,0xA443, + 0xBCA4,0xDD25, + 0xF5E7,0xF209, + 0xFECD,0x0545, + 0x9885,0xA0C5, + 0xAD05,0xBD66, + 0xCDE8,0xD2FA, + 0xE77C,0xF3BE + }, }; +// clang-format on -EVW_ANIME_SCROLL aTrainWindow_out_cloud = { - 0, -2, - 64, 64 -}; +static EVW_ANIME_SCROLL aTrainWindow_out_cloud = { 0, -2, 64, 64 }; -EVW_ANIME_DATA aTrainWindow_evw_anime_data = { - -2, EVW_ANIME_TYPE_SCROLL1, &aTrainWindow_out_cloud -}; +static EVW_ANIME_DATA aTrainWindow_evw_anime_data = { -2, EVW_ANIME_TYPE_SCROLL1, &aTrainWindow_out_cloud }; static void Train_Window_Actor_ct(ACTOR*, GAME*); static void Train_Window_Actor_dt(ACTOR*, GAME*); static void Train_Window_Actor_move(ACTOR*, GAME*); static void Train_Window_Actor_draw(ACTOR*, GAME*); - ACTOR_PROFILE Train_Window_Profile = { mAc_PROFILE_TRAIN_WINDOW, ACTOR_PART_ITEM, @@ -187,10 +182,9 @@ ACTOR_PROFILE Train_Window_Profile = { &Train_Window_Actor_dt, &Train_Window_Actor_move, &Train_Window_Actor_draw, - NULL + NULL, }; - static int aTrainWindow_NoDraw(ACTOR*, GAME*); static int aTrainWindow_DrawGoneOutTunnel(ACTOR*, GAME*); static int aTrainWindow_DrawInTunnel(ACTOR*, GAME*); @@ -201,83 +195,37 @@ extern Gfx rom_train_out_bgcloud_modelT[]; extern Gfx rom_train_out_bgtree_modelT[]; extern Gfx rom_train_out_shineglass_modelT[]; - -static int aTrainWindow_GetTreePalletIdx(){ +static int aTrainWindow_GetTreePalletIdx() { static u8 till_data[15][2] = { - { - 0x02,0x03 - }, - { - 0x02,0x11 - }, - { - 0x02,0x18 - }, - { - 0x04,0x03 - }, - { - 0x04,0x08 - }, - { - 0x07,0x16 - }, - { - 0x09,0x0F - }, - { - 0x0A,0x05 - }, - { - 0x0A,0x17 - }, - { - 0x0B,0x07 - }, - { - 0x0B,0x0E - }, - { - 0x0B,0x1C - }, - { - 0x0C,0x0A - }, - { - 0x0C,0x11 - }, - { - 0x0C,0x1F - } + { 0x02, 0x03 }, { 0x02, 0x11 }, { 0x02, 0x18 }, { 0x04, 0x03 }, { 0x04, 0x08 }, + { 0x07, 0x16 }, { 0x09, 0x0F }, { 0x0A, 0x05 }, { 0x0A, 0x17 }, { 0x0B, 0x07 }, + { 0x0B, 0x0E }, { 0x0B, 0x1C }, { 0x0C, 0x0A }, { 0x0C, 0x11 }, { 0x0C, 0x1F }, }; - + int i; lbRTC_month_t month = Common_Get(time.rtc_time.month); lbRTC_day_t day = Common_Get(time.rtc_time.day); - - for(i = 0; i < 15; i++){ + + for (i = 0; i < 15; i++) { if (month < till_data[i][0]) { return i; } - + if (month == till_data[i][0] && day <= till_data[i][1]) { return i; } } - + return 0; } +static void Train_Window_Actor_ct(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; - -static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; - - switch(Save_Get(scene_no)){ - case 49: - - case 15: - window->draw_type = aTrainWindow_NoDraw; + switch (Save_Get(scene_no)) { + case SCENE_START_DEMO: + case SCENE_START_DEMO3: + window->draw_type = &aTrainWindow_NoDraw; window->Single_Scrollx = 0; window->Single_Scrolly = 0; window->Two_Scrollx1 = 0; @@ -285,10 +233,10 @@ static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){ window->Two_Scrollx2 = 0; window->Two_Scrolly2 = 0; window->scroll_speed = 0.07f; - break; + break; - case 16: - window->draw_type = aTrainWindow_DrawGoneOutTunnel; + case SCENE_START_DEMO2: + window->draw_type = &aTrainWindow_DrawGoneOutTunnel; window->Single_Scrollx = 1000; window->Single_Scrolly = 0; window->Two_Scrollx1 = 1000; @@ -296,7 +244,7 @@ static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){ window->Two_Scrollx2 = 0; window->Two_Scrolly2 = 0; window->scroll_speed = 1.0f; - break; + break; } window->pallete_id = aTrainWindow_GetTreePalletIdx(); window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id]; @@ -304,72 +252,66 @@ static void Train_Window_Actor_ct(ACTOR* actor, GAME* game){ window->TreeScrolly = 0; window->pos.x = 0; window->pos.y = 0; - window->pos.z = 0; + window->pos.z = 0; window->xlu_alpha = 254.0f; } -static void Train_Window_Actor_dt(ACTOR* actor, GAME* game){ - +static void Train_Window_Actor_dt(ACTOR* actor, GAME* game) { } -static u8 aTW_GetNowAlpha(){ - - if((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)){ - if(Common_Get(time.now_sec) < 43200){ +static u8 aTW_GetNowAlpha() { + + if ((Common_Get(time.now_sec) >= 14400) && (Common_Get(time.now_sec) < 72000)) { + if (Common_Get(time.now_sec) < 43200) { return 255.0f * ((f32)(Common_Get(time.now_sec) - 14400) / 28800.0f); } return 255.0f * (1.0f - ((f32)(Common_Get(time.now_sec) - 43200) / 28800.0f)); - } - else if(Common_Get(time.now_sec) < 14400) { + } else if (Common_Get(time.now_sec) < 14400) { return 200.0f * (1.0f - (0.5f + ((f32)Common_Get(time.now_sec) / 28800.0f))); - } - else{ - return 200.0f * ((f32)Common_Get(time.now_sec - 72000) / 28800.0f); + } else { + return 200.0f * ((f32)Common_Get(time.now_sec - 72000) / 28800.0f); } } -static void Train_Window_Actor_move(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; +static void Train_Window_Actor_move(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; f32 alpha; - + window->TreeScrollx += 5; add_calc(&window->xlu_alpha, aTW_GetNowAlpha(), window->scroll_speed, 50.0f, 1.0f); - if((Common_Get(time.now_sec) < 14400) || (Common_Get(time.now_sec) >= 72000)){ + if ((Common_Get(time.now_sec) < 14400) || (Common_Get(time.now_sec) >= 72000)) { alpha = 0.0f; - } - else if(Common_Get(time.now_sec) >= 43200){ + } else if (Common_Get(time.now_sec) >= 43200) { alpha = 160.0f + (-160.0f * ((f32)(Common_Get(time.now_sec) - 43200) / 28800.0f)); - } - else{ - alpha = 160.0f * ((f32)(Common_Get(time.now_sec) -14400) / 28800.0f); + } else { + alpha = 160.0f * ((f32)(Common_Get(time.now_sec) - 14400) / 28800.0f); } add_calc(&window->lod_factor, alpha, 0.3f, 50.0f, 1.0f); } -static int aTrainWindow_OperateScrollLimit(int a, int b, int c){ - - b >>= 1; - if(b != 0){ - if(b > 0){ - if(a+b > c){ +static int aTrainWindow_OperateScrollLimit(int a, int b, int c) { + b >>= 1; + if (b != 0) { + if (b > 0) { + if (a + b > c) { return c; } - return a+b; + return a + b; } - if(b >= 0){ - return a; + if (b >= 0) { + return a; } - if(a+b < c){ + if (a + b < c) { return c; } - return a+b; + return a + b; } return a; } -static Gfx* aTrainWindow_TileScroll(u32* x, u32* y, int xamt,int yamt, int xend, int yend, -int width, int height, GRAPH** graph){ +static Gfx* aTrainWindow_TileScroll(u32* x, u32* y, int xamt, int yamt, int xend, int yend, int width, int height, + GRAPH** graph) { *x = aTrainWindow_OperateScrollLimit(*x, xamt, xend); *y = aTrainWindow_OperateScrollLimit(*y, yamt, yend); @@ -377,9 +319,9 @@ int width, int height, GRAPH** graph){ return tex_scroll2(*graph, *x, *y, width, height); } -static Gfx* aTrainWindow_TileScroll2(u32* x1, u32* y1, int x1amt, int y1amt, int x1end, int y1end, int width1, int height1, -u32* x2, u32* y2, int x2amt, int y2amt, int x2end, int y2end, int width2, int height2, GRAPH** graph){ - +static Gfx* aTrainWindow_TileScroll2(u32* x1, u32* y1, int x1amt, int y1amt, int x1end, int y1end, int width1, + int height1, u32* x2, u32* y2, int x2amt, int y2amt, int x2end, int y2end, + int width2, int height2, GRAPH** graph) { *x1 = aTrainWindow_OperateScrollLimit(*x1, x1amt, x1end); *y1 = aTrainWindow_OperateScrollLimit(*y1, y1amt, y1end); @@ -389,22 +331,20 @@ u32* x2, u32* y2, int x2amt, int y2amt, int x2end, int y2end, int width2, int he return two_tex_scroll(*graph, 0, *x1, *y1, width1, height1, 1, *x2, *y2, width2, height2); } -static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; - +static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; + GRAPH** graph = &game->graph; Gfx* ssc; Gfx* tsc; - - ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly, - 0,0,1000,0, 64, 32, graph); - tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0,0,1000, 0, 64, 8, - &window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph); - if((ssc == NULL) || (tsc == NULL)){ + ssc = aTrainWindow_TileScroll(&window->Single_Scrollx, &window->Single_Scrolly, 0, 0, 1000, 0, 64, 32, graph); + tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0, 0, 1000, 0, 64, 8, + &window->Two_Scrollx2, &window->Two_Scrolly2, 0, 0, 0, 0, 16, 16, graph); + + if ((ssc == NULL) || (tsc == NULL)) { return 0; - } - else{ + } else { OPEN_DISP(*graph); gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc); @@ -412,7 +352,7 @@ static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game){ gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc); gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc); - + CLOSE_DISP(*graph); return 1; @@ -420,21 +360,19 @@ static int aTrainWindow_DrawGoneOutTunnel(ACTOR* actor, GAME* game){ } static int aTrainWindow_DrawGoingOutTunnel(ACTOR* actor, GAME* game) { - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; - + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; + Gfx* tsc; Gfx* ssc; GRAPH** graph = &game->graph; - - ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly, - 30,0,1000,0, 64, 32, graph); - tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 30,0,1000, 0, 64, 8, - &window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph); - if((ssc == NULL) || (tsc == NULL)){ + ssc = aTrainWindow_TileScroll(&window->Single_Scrollx, &window->Single_Scrolly, 30, 0, 1000, 0, 64, 32, graph); + tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 30, 0, 1000, 0, 64, 8, + &window->Two_Scrollx2, &window->Two_Scrolly2, 0, 0, 0, 0, 16, 16, graph); + + if ((ssc == NULL) || (tsc == NULL)) { return 0; - } - else{ + } else { OPEN_DISP(*graph); gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc); @@ -442,10 +380,10 @@ static int aTrainWindow_DrawGoingOutTunnel(ACTOR* actor, GAME* game) { gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc); gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc); - + CLOSE_DISP(*graph); - if(((int)window->Single_Scrollx == 1000) && ((int)window->Two_Scrollx1 == 1000)){ + if (((int)window->Single_Scrollx == 1000) && ((int)window->Two_Scrollx1 == 1000)) { window->draw_type = aTrainWindow_DrawGoneOutTunnel; window->pallete_id = aTrainWindow_GetTreePalletIdx(); window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id]; @@ -455,28 +393,26 @@ static int aTrainWindow_DrawGoingOutTunnel(ACTOR* actor, GAME* game) { } } -static int aTrainWindow_NoDraw(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; +static int aTrainWindow_NoDraw(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; window->draw_type = aTrainWindow_DrawInTunnel; return 0; } -static int aTrainWindow_DrawInTunnel(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; - +static int aTrainWindow_DrawInTunnel(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; + Gfx* tsc; Gfx* ssc; GRAPH** graph = &game->graph; - - ssc = aTrainWindow_TileScroll(&window->Single_Scrollx,&window->Single_Scrolly, - 0,0,1000,0, 64, 32, graph); - tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0,0,1000, 0, 64, 8, - &window->Two_Scrollx2, &window->Two_Scrolly2, 0,0,0,0,16,16,graph); - if((ssc == NULL) || (tsc == NULL)){ + ssc = aTrainWindow_TileScroll(&window->Single_Scrollx, &window->Single_Scrolly, 0, 0, 1000, 0, 64, 32, graph); + tsc = aTrainWindow_TileScroll2(&window->Two_Scrollx1, &window->Two_Scrolly1, 0, 0, 1000, 0, 64, 8, + &window->Two_Scrollx2, &window->Two_Scrolly2, 0, 0, 0, 0, 16, 16, graph); + + if ((ssc == NULL) || (tsc == NULL)) { return 0; - } - else{ + } else { OPEN_DISP(*graph); gSPSegment(NOW_POLY_OPA_DISP++, 11, ssc); @@ -484,96 +420,94 @@ static int aTrainWindow_DrawInTunnel(ACTOR* actor, GAME* game){ gSPSegment(NOW_POLY_OPA_DISP++, 12, tsc); gSPSegment(NOW_POLY_XLU_DISP++, 12, tsc); - + CLOSE_DISP(*graph); - if(Common_Get(sunlight_flag) != 0){ + if (Common_Get(sunlight_flag) != 0) { window->pallete_id = aTrainWindow_GetTreePalletIdx(); window->current_pallete = aTrainWindow_tree_pal_table[window->pallete_id]; window->draw_type = aTrainWindow_DrawGoingOutTunnel; - } return 1; } } -static void aTrainWindow_SetLightPrimColorDetail(GAME* game, u32 r, u32 g, u32 b, int l, int poly_a, int xlu_a){ +static void aTrainWindow_SetLightPrimColorDetail(GAME* game, u32 r, u32 g, u32 b, int l, int poly_a, int xlu_a) { GAME_PLAY* play = (GAME_PLAY*)game; int i; int current_color; u8 color[3]; GRAPH* graph; - for(i = 0; i < 3; i++){ + for (i = 0; i < 3; i++) { current_color = play->global_light.ambientColor[i] + play->kankyo.base_light.sun_color[i]; - switch(i){ + switch (i) { case 0: current_color += r; - break; + break; case 1: current_color += g; - break; + break; case 2: current_color += b; - break; + break; } - if(current_color < 0){ + if (current_color < 0) { current_color = 0; - }else if(current_color >= 256){ + } else if (current_color >= 256) { current_color = 255; } color[i] = current_color; } - if(l < 0){ + if (l < 0) { l = 0; - }else if(l > 255){ + } else if (l > 255) { l = 255; } - if(poly_a < 0){ + if (poly_a < 0) { poly_a = 0; - }else if(poly_a > 255){ + } else if (poly_a > 255) { poly_a = 255; } - if(xlu_a < 0){ + if (xlu_a < 0) { xlu_a = 0; - }else if(xlu_a > 255){ + } else if (xlu_a > 255) { xlu_a = 255; } - + graph = play->game.graph; - - OPEN_DISP(graph); + + OPEN_DISP(graph); gDPSetPrimColor(NOW_POLY_OPA_DISP++, 0, l, color[0], color[1], color[2], poly_a); - gDPSetPrimColor(NOW_POLY_XLU_DISP++, 0, l, color[0], color[1], color[2], xlu_a); + gDPSetPrimColor(NOW_POLY_XLU_DISP++, 0, l, color[0], color[1], color[2], xlu_a); CLOSE_DISP(graph); - } -static void aTrainWindow_SetTreeTextureScroll(ACTOR* actor, GAME* game){ - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; +static void aTrainWindow_SetTreeTextureScroll(ACTOR* actor, GAME* game) { + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; Gfx* tree; GRAPH** graph = &game->graph; - + tree = tex_scroll2(*graph, window->TreeScrollx, window->TreeScrolly, 128, 32); - OPEN_DISP(*graph); + OPEN_DISP(*graph); + + gSPSegment(NOW_POLY_OPA_DISP++, 8, tree); + gSPSegment(NOW_POLY_XLU_DISP++, 8, tree); - gSPSegment(NOW_POLY_OPA_DISP++,8, tree); - gSPSegment(NOW_POLY_XLU_DISP++,8, tree); - CLOSE_DISP(*graph); } -static void Train_Window_Actor_draw(ACTOR* actor, GAME* game){ +static void Train_Window_Actor_draw(ACTOR* actor, GAME* game) { GAME_PLAY* play = (GAME_PLAY*)game; - TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR* )actor; - + TRAIN_WINDOW_ACTOR* window = (TRAIN_WINDOW_ACTOR*)actor; + GRAPH* graph = game->graph; - Matrix_translate(0.0f,0.0f,0.0f,FALSE); + Matrix_translate(0.0f, 0.0f, 0.0f, FALSE); Matrix_scale(0.05f, 0.05f, 0.05f, TRUE); - + OPEN_DISP(graph); gSPMatrix(NOW_POLY_OPA_DISP++, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); @@ -582,23 +516,23 @@ static void Train_Window_Actor_draw(ACTOR* actor, GAME* game){ _texture_z_light_fog_prim(game->graph); _texture_z_light_fog_prim_xlu(game->graph); - - if(window->draw_type(actor,game) != 0){ - aTrainWindow_SetLightPrimColorDetail(game, 0,0,0,127,255,(u8)window->xlu_alpha); - gSPSegment(NOW_POLY_XLU_DISP++,10, window->current_pallete); - Evw_Anime_Set(play, &aTrainWindow_evw_anime_data); - aTrainWindow_SetLightPrimColorDetail(game,0,0,0,43,255,window->xlu_alpha); - gSPDisplayList(NOW_POLY_OPA_DISP++,rom_train_out_tunnel_model); - aTrainWindow_SetLightPrimColorDetail(game,0,0,0,127,255,window->xlu_alpha); - gSPDisplayList(NOW_POLY_OPA_DISP++,rom_train_out_bgsky_model); - aTrainWindow_SetLightPrimColorDetail(game,0,0,0,127,255,window->xlu_alpha); - gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_bgcloud_modelT); + if (window->draw_type(actor, game) != 0) { + aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 127, 255, (u8)window->xlu_alpha); + gSPSegment(NOW_POLY_XLU_DISP++, 10, window->current_pallete); + Evw_Anime_Set(play, &aTrainWindow_evw_anime_data); + aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 43, 255, window->xlu_alpha); + gSPDisplayList(NOW_POLY_OPA_DISP++, rom_train_out_tunnel_model); + aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 127, 255, window->xlu_alpha); + gSPDisplayList(NOW_POLY_OPA_DISP++, rom_train_out_bgsky_model); + aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, 127, 255, window->xlu_alpha); + gSPDisplayList(NOW_POLY_XLU_DISP++, rom_train_out_bgcloud_modelT); aTrainWindow_SetTreeTextureScroll(actor, game); - aTrainWindow_SetLightPrimColorDetail(game, GETREG(CRV, CRV_DEBUG_RED_VALUE) -80 ,GETREG(CRV, CRV_DEBUG_GREEN_VALUE) -70 ,GETREG(CRV, CRV_DEBUG_BLUE_VALUE) -160, GETREG(CRV,CRV_DEBUG_LOD_VALUE) + 27,255, window->xlu_alpha); - gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_bgtree_modelT); - aTrainWindow_SetLightPrimColorDetail(game,0,0,0,window->lod_factor,255,window->xlu_alpha); - gSPDisplayList(NOW_POLY_XLU_DISP++,rom_train_out_shineglass_modelT); - + aTrainWindow_SetLightPrimColorDetail( + game, GETREG(CRV, CRV_DEBUG_RED_VALUE) - 80, GETREG(CRV, CRV_DEBUG_GREEN_VALUE) - 70, + GETREG(CRV, CRV_DEBUG_BLUE_VALUE) - 160, GETREG(CRV, CRV_DEBUG_LOD_VALUE) + 27, 255, window->xlu_alpha); + gSPDisplayList(NOW_POLY_XLU_DISP++, rom_train_out_bgtree_modelT); + aTrainWindow_SetLightPrimColorDetail(game, 0, 0, 0, window->lod_factor, 255, window->xlu_alpha); + gSPDisplayList(NOW_POLY_XLU_DISP++, rom_train_out_shineglass_modelT); } CLOSE_DISP(graph); -} \ No newline at end of file +} diff --git a/src/ac_uki.c b/src/ac_uki.c new file mode 100644 index 00000000..202421a0 --- /dev/null +++ b/src/ac_uki.c @@ -0,0 +1,117 @@ +#include "ac_uki.h" + +#include "m_play.h" +#include "m_name_table.h" +#include "ac_set_ovl_gyoei.h" +#include "m_vibctl.h" +#include "m_common_data.h" +#include "ef_effect_control.h" +#include "m_player_lib.h" +#include "sys_matrix.h" +#include "m_actor_shadow.h" + +enum { + aUKI_PROC_CARRY, + aUKI_PROC_READY, + aUKI_PROC_AIR, + aUKI_PROC_CAST, + aUKI_PROC_WAIT, + aUKI_PROC_HIT, + aUKI_PROC_TOUCH, + aUKI_PROC_BITE, + aUKI_PROC_CATCH, + aUKI_PROC_GET, + aUKI_PROC_FORCE, + + aUKI_PROC_NUM +}; + +static void aUKI_actor_ct(ACTOR* actorx, GAME* game); +static void aUKI_actor_dt(ACTOR* actorx, GAME* game); +static void aUKI_actor_move(ACTOR* actorx, GAME* game); +static void aUKI_actor_draw(ACTOR* actorx, GAME* game); + +// clang-format off +ACTOR_PROFILE Uki_Profile = { + mAc_PROFILE_UKI, + ACTOR_PART_BG, + ACTOR_STATE_NO_MOVE_WHILE_CULLED, + ETC_UKI, + ACTOR_OBJ_BANK_UKI, + sizeof(UKI_ACTOR), + &aUKI_actor_ct, + &aUKI_actor_dt, + &aUKI_actor_move, + NULL, + NULL, +}; +// clang-format on + +// clang-format off +static ClObjPipeData_c aUKI_CoInfoData = { + 0x3D, 0x20, ClObj_TYPE_PIPE, + 0x01, + 8, 8, 0, 0, 0, 0, +}; +// clang-format on + +static StatusData_c aUKI_StatusData = { 0, 8, 8, 0, 50 }; + +#include "../src/ac_gyoei_type.c_inc" + +typedef struct uki_vib_s { + int n_frames; + int attack_frames; + int sustain_frames; + int release_frames; +} aUKI_vib_c; + +static void aUKI_set_value(ACTOR* actorx, xyz_t pos, xyz_t pos_speed, int angle_speed_y, int command); +static mActor_name_t aUKI_get_fish_type(ACTOR* actorx); +static void aUKI_set_proc(ACTOR* actorx, GAME* game, int proc, int arg); + +static void aUKI_actor_ct(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + Shape_Info_init(actorx, 0.0, &mAc_ActorShadowEllipse, 4.5, 8.5); + actorx->shape_info.draw_shadow = FALSE; + ClObjPipe_ct(game, &uki->col_pipe); + ClObjPipe_set5(game, &uki->col_pipe, actorx, &aUKI_CoInfoData); + CollisionCheck_Status_set3(&actorx->status_data, &aUKI_StatusData); + actorx->max_velocity_y = -20.0; + actorx->gravity = 1.2; + actorx->speed = 0.0; + uki->_194 = 0.0; + Matrix_copy_MtxF(&uki->mtxf, &MtxF_clear); + actorx->scale.x = 0.01; + actorx->scale.y = 0.01; + actorx->scale.z = 0.01; + actorx->world.position = uki->right_hand_pos; + uki->set_value_proc = &aUKI_set_value; + uki->get_fish_type_proc = &aUKI_get_fish_type; + uki->child_actor = NULL; + uki->frame_timer = 2; + uki->cast_timer = 0; + uki->touch_timer = 0; + uki->touched_flag = FALSE; + uki->hit_water_flag = FALSE; + uki->gyo_type = -1; + uki->color[0] = 255; + uki->color[1] = 255; + uki->color[2] = 255; + uki->gyo_command = 0; + uki->gyo_status = 0; + uki->status = aUKI_STATUS_CARRY; + uki->proc = aUKI_PROC_CARRY; + uki->coast_flag = FALSE; + uki->_2B5 = 0; +} + +static void aUKI_actor_dt(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + ClObjPipe_dt(game, &uki->col_pipe); +} + +#include "../src/ac_uki_move.c_inc" +#include "../src/ac_uki_draw.c_inc" diff --git a/src/ac_uki_draw.c_inc b/src/ac_uki_draw.c_inc new file mode 100644 index 00000000..501f8fdc --- /dev/null +++ b/src/ac_uki_draw.c_inc @@ -0,0 +1,90 @@ +static void aUKI_rotate_calc(UKI_ACTOR* uki) { + f32 angle_x = (uki->position_speed.x * 30.0f) / 6.0f; + f32 angle_z = (uki->position_speed.z * 30.0f) / 6.0f; + f32 sin = sin_s(uki->uki_rot_speed); + + uki->uki_angle.x = DEG2SHORT_ANGLE2(180.0f + (angle_x * sin)); + uki->uki_angle.z = DEG2SHORT_ANGLE2(180.0f + (angle_z * sin)); + uki->uki_rot_speed += DEG2SHORT_ANGLE2(5.625f); +} + +extern Gfx tol_uki1_model[]; +extern Gfx tol_uki2_model[]; + +static void aUKI_actor_draw(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + GRAPH* graph = game->graph; + mActor_name_t item; + + OPEN_POLY_OPA_DISP(graph); + + Matrix_mult(&uki->mtxf, 1); + gDPPipeSync(POLY_OPA_DISP++); + + switch (uki->proc) { + case aUKI_PROC_CARRY: + aUKI_rotate_calc(uki); + Matrix_RotateY(player_actor->shape_info.rotation.y, 1); + break; + case aUKI_PROC_READY: + case aUKI_PROC_AIR: + uki->uki_angle.x = search_position_angleX(&actorx->world.position, &uki->rod_top_position); + uki->uki_angle.y = search_position_angleY(&actorx->world.position, &uki->rod_top_position); + uki->uki_angle.x += DEG2SHORT_ANGLE2(180.0f); + Matrix_RotateY(uki->uki_angle.y, 1); + Matrix_RotateX(uki->uki_angle.x, 1); + break; + case aUKI_PROC_CAST: + add_calc_short_angle2(&uki->uki_angle.x, DEG2SHORT_ANGLE2(90.0f), 1.0f - sqrtf(0.95f), 1024, 0); + uki->uki_angle.y = search_position_angleY(&actorx->world.position, &uki->rod_top_position); + Matrix_RotateY(uki->uki_angle.y, 1); + Matrix_RotateX(uki->uki_angle.x, 1); + break; + case aUKI_PROC_HIT: + uki->uki_angle.y = search_position_angleY(&actorx->world.position, &uki->rod_top_position); + if (uki->frame_timer < 10) { + add_calc_short_angle2(&uki->uki_angle.x, DEG2SHORT_ANGLE2(0.0f), 1.0f - sqrtf(0.9f), 2048, 0); + } else { + uki->uki_angle.x = search_position_angleX(&actorx->world.position, &uki->rod_top_position); + uki->uki_angle.x += DEG2SHORT_ANGLE2(-90.0f); + } + Matrix_RotateY(uki->uki_angle.y, 1); + Matrix_RotateX(uki->uki_angle.x, 1); + break; + case aUKI_PROC_WAIT: + if (uki->cast_timer == 0) { + add_calc_short_angle2(&uki->uki_angle.x, DEG2SHORT_ANGLE2(0.0f), 1.0f - sqrtf(0.8f), + DEG2SHORT_ANGLE2(45.0f), 0); + } else { + add_calc_short_angle2(&uki->uki_angle.x, DEG2SHORT_ANGLE2(90.0f), 1.0f - sqrtf(0.95f), 1024, 0); + } + uki->uki_angle.y = search_position_angleY(&actorx->world.position, &uki->rod_top_position); + Matrix_RotateY(uki->uki_angle.y, 1); + Matrix_RotateX(uki->uki_angle.x, 1); + break; + case aUKI_PROC_BITE: + if (uki->gyo_status == 4) { + add_calc_short_angle2(&uki->uki_angle.x, DEG2SHORT_ANGLE2(-90.0f), 1.0f - sqrtf(0.95f), 1024, 0); + Matrix_RotateY(uki->uki_angle.y, 1); + } + break; + } + + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(POLY_OPA_DISP++, 0, 128, uki->color[0], uki->color[1], uki->color[2], 255); + + if (mEv_CheckTitleDemo() > 0) { + item = mPlib_Get_controller_data_for_title_demo_p()->equipped_item; + } else { + item = Now_Private->equipment; + } + + if (item == ITM_ROD) { + gSPDisplayList(POLY_OPA_DISP++, tol_uki1_model); + } else { + gSPDisplayList(POLY_OPA_DISP++, tol_uki2_model); + } + + CLOSE_POLY_OPA_DISP(graph); +} diff --git a/src/ac_uki_move.c_inc b/src/ac_uki_move.c_inc new file mode 100644 index 00000000..899b5ac6 --- /dev/null +++ b/src/ac_uki_move.c_inc @@ -0,0 +1,991 @@ +static void set_collision(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + + CollisionCheck_Uty_ActorWorldPosSetPipeC(actorx, &uki->col_pipe); + CollisionCheck_setOC(game, &play->collision_check, &uki->col_pipe.collision_obj); +} + +static void aUKI_set_value(ACTOR* actorx, xyz_t pos, xyz_t pos_speed, int angle_speed_y, int command) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->right_hand_pos = pos; + uki->position_speed = pos_speed; + uki->angle_speed_y = angle_speed_y; + uki->command = command; +} + +static mActor_name_t aUKI_get_fish_type(ACTOR* actorx) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + // clang-format off + static mActor_name_t fish_data[] = { + ITM_FISH00, + ITM_FISH01, + ITM_FISH02, + ITM_FISH03, + ITM_FISH04, + ITM_FISH05, + ITM_FISH06, + ITM_FISH07, + ITM_FISH08, + ITM_FISH09, + ITM_FISH10, + ITM_FISH11, + ITM_FISH12, + ITM_FISH13, + ITM_FISH14, + ITM_FISH15, + ITM_FISH16, + ITM_FISH17, + ITM_FISH18, + ITM_FISH19, + ITM_FISH20, + ITM_FISH21, + ITM_FISH22, + ITM_FISH23, + ITM_FISH24, + ITM_FISH25, + ITM_FISH26, + ITM_FISH27, + ITM_FISH28, + ITM_FISH29, + ITM_FISH30, + ITM_FISH31, + ITM_FISH32, + ITM_FISH33, + ITM_FISH34, + ITM_FISH35, + ITM_FISH36, + ITM_FISH37, + ITM_FISH38, + ITM_FISH39, + ITM_FISH39, + ITM_DUST0_EMPTY_CAN, + ITM_DUST1_BOOT, + ITM_DUST2_OLD_TIRE, + ITM_FISH22, + }; + // clang-format on + mActor_name_t item = EMPTY_NO; + + if (uki->gyo_type >= 0 && uki->gyo_type < aSOG_FISH_TYPE_EXTENDED_NUM) { + item = fish_data[uki->gyo_type]; + } + + return item; +} + +static void aUKI_chase_color(int* col_p, u32 target, int step) { + u32 now = *col_p; + + if (now != target) { + int n_step = (f32)step * 0.5f; + + if (n_step > 0) { + int d = now - target; + + if (d > n_step) { + *col_p = now + n_step; + } else { + *col_p = target; + } + } else { + int d = now - target; + + if (d < n_step) { + *col_p = now - -n_step; + } else { + *col_p = target; + } + } + } +} + +static void aUKI_BGcheck(ACTOR* actorx) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + f32 ground_y; + f32 water_y; + f32 y; + + switch (mCoBG_Wpos2Attribute(actorx->world.position, NULL)) { + case mCoBG_ATTRIBUTE_SEA: + case mCoBG_ATTRIBUTE_WAVE: + case mCoBG_ATTRIBUTE_SAND: { + ground_y = mCoBG_GetBgY_AngleS_FromWpos(NULL, actorx->world.position, 0.0f); + water_y = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 237); + uki->range = 5.0f; + if ((water_y - ground_y) < 10.0f) { + y = 0.0f; + } else { + y = -12.0f; + } + + if (uki->proc == 6 && (water_y - ground_y) < 20.0f) { + actorx->world.angle.y += DEG2SHORT_ANGLE2(180.0f); + } + break; + } + + case mCoBG_ATTRIBUTE_WATERFALL: { + uki->range = 11.0f; + y = -12.0f; + break; + } + + default: { + if (uki->proc == 4) { + if (uki->cast_timer != 0) { + uki->range = 12.0f; + y = 0.0f; + } else { + chase_f(&uki->range, 40.0f, 0.05f); + y = -12.0f; + } + } else { + uki->range = 12.0f; + y = -12.0f; + } + break; + } + } + + switch (uki->proc) { + case 0: + case 3: + case 5: + mCoBG_BgCheckControll(NULL, actorx, uki->range, y, TRUE, TRUE, 1); + break; + default: + mCoBG_BgCheckControll(NULL, actorx, uki->range, y, TRUE, FALSE, 1); + break; + } +} + +static void aUKI_touch_vib_proc(UKI_ACTOR* uki) { + static aUKI_vib_c vib_data_table[] = { + // clang-format off + { 60, 0, 1, 10 }, + { 70, 0, 1, 10 }, + { 80, 0, 1, 10 }, + { 90, 0, 1, 10 }, + { 100, 0, 1, 10 }, + { 100, 1, 2, 9 }, + { 100, 2, 2, 7 }, + { 100, 2, 2, 7 }, + // clang-format on + }; + + if (uki->gyo_type >= 0) { + s16 idx = gyoei_type[uki->gyo_type].size; + aUKI_vib_c* vib_p = &vib_data_table[idx]; + + mVibctl_simple_entry(vib_p->n_frames, mVibctl_VIB_PROG_FFF, vib_p->attack_frames, vib_p->sustain_frames, + vib_p->release_frames, 0.0f); + } +} + +static void aUKI_bite_vib_proc(ACTOR* actorx) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + static aUKI_vib_c vib_data_table[] = { + // clang-format off + { 40, 5, 60, 3 }, + { 50, 5, 60, 3 }, + { 60, 5, 60, 3 }, + { 70, 5, 60, 3 }, + { 80, 5, 60, 3 }, + { 90, 5, 60, 3 }, + { 100, 5, 60, 3 }, + { 100, 5, 60, 3 }, + // clang-format on + }; + + if (uki->gyo_type >= 0) { + s16 idx = gyoei_type[uki->gyo_type].size; + aUKI_vib_c* vib_p = &vib_data_table[idx]; + + mVibctl_simple_entry(vib_p->n_frames, mVibctl_VIB_PROG_IMPACT, vib_p->attack_frames, vib_p->sustain_frames, + vib_p->release_frames, 0.0f); + } +} + +static void aUKI_clear_spd(ACTOR* actorx) { + actorx->speed = 0.0f; + actorx->position_speed.x = 0.0f; + actorx->position_speed.z = 0.0f; +} + +static void aUKI_parabola_init(UKI_ACTOR* uki, const xyz_t* p0, const xyz_t* p1, s16 timer, u8 type) { + f32 y_param; + f32 f = (f32)(int)timer; + f32 step = f * 0.5f; + f32 dx = p1->x - p0->x; + f32 dy = p1->y - p0->y; + f32 dz = p1->z - p0->z; + + if (dy > 100.0f) { + y_param = 12.0f; + } else { + y_param = 4.5f; + } + + switch (type) { + case 0: { + uki->parabola_vec[0].x = dx / f; + uki->parabola_vec[0].y = dy / f; + uki->parabola_vec[0].z = dz / f; + break; + } + case 1: { + uki->parabola_vec[1].y = (2.0f * (y_param * f - dy)) / SQ(f); + uki->parabola_vec[0].x = dx / step; + uki->parabola_vec[0].y = y_param - uki->parabola_vec[1].y; + uki->parabola_vec[0].z = dz / step; + uki->parabola_vec[1].x = uki->parabola_vec[0].x / f; + uki->parabola_vec[1].z = uki->parabola_vec[0].z / f; + break; + } + case 2: { + uki->parabola_acc[1].y = (2.0f * (y_param * f - dy)) / SQ(f); + uki->parabola_acc[0].x = dx / step; + uki->parabola_acc[0].y = y_param - uki->parabola_acc[1].y; + uki->parabola_acc[0].z = dz / step; + uki->parabola_acc[1].x = uki->parabola_acc[0].x / f; + uki->parabola_acc[1].z = uki->parabola_acc[0].z / f; + break; + } + } +} + +static void aUKI_parabola_move(ACTOR* actorx, u8 type) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + switch (type) { + case 0: + xyz_t_add(&actorx->world.position, &uki->parabola_vec[0], &actorx->world.position); + break; + case 1: + xyz_t_add(&actorx->world.position, &uki->parabola_vec[0], &actorx->world.position); + xyz_t_sub(&uki->parabola_vec[0], &uki->parabola_vec[1], &uki->parabola_vec[0]); + break; + case 2: + xyz_t_add(&uki->uki_pos, &uki->parabola_acc[0], &uki->uki_pos); + xyz_t_sub(&uki->parabola_acc[0], &uki->parabola_acc[1], &uki->parabola_acc[0]); + break; + } +} + +static s16 aUKI_Get_flow_angle(ACTOR* actorx) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + xyz_t flow; + + mCoBG_GetWaterFlow(&flow, actorx->bg_collision_check.result.unit_attribute); + return atans_table(flow.z, flow.x); +} + +static void aUKI_effect_sibuki(ACTOR* actorx, GAME* game, s16 arg) { + xyz_t pos = actorx->world.position; + s16 flow_angle; + + pos.y = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 575); + flow_angle = aUKI_Get_flow_angle(actorx); + + eEC_CLIP->effect_make_proc(eEC_EFFECT_TURI_MIZU, pos, 1, flow_angle, game, EMPTY_NO, arg, 0); +} + +static void aUKI_effect_hamon(ACTOR* actorx, GAME* game, s16 arg) { + xyz_t pos = actorx->world.position; + s16 flow_angle; + + pos.y = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 603); + flow_angle = aUKI_Get_flow_angle(actorx); + + eEC_CLIP->effect_make_proc(eEC_EFFECT_TURI_HAMON, pos, 1, flow_angle, game, EMPTY_NO, arg, 0); +} + +static void aUKI_movement(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + s16 flow_angle; + + flow_angle = aUKI_Get_flow_angle(actorx); + if (actorx->player_distance_xz < 130.0f || + actorx->bg_collision_check.result.unit_attribute == mCoBG_ATTRIBUTE_WATERFALL) { + if (uki->gyo_command != 1) { + if (uki->touch_timer != 5) { + uki->touch_timer = 0; + } + + chase_f(&actorx->speed, 0.45f, 0.1f); + } else { + chase_f(&actorx->speed, 0.225f, 0.1f); + } + + actorx->position_speed.x = actorx->speed * sin_s(flow_angle); + actorx->position_speed.z = actorx->speed * cos_s(flow_angle); + } else { + if (uki->gyo_command != 1) { + if (uki->touch_timer != 5) { + uki->touch_timer = 0; + } + } + + actorx->speed = 0.8f; + actorx->position_speed.x = actorx->speed * sin_s(actorx->player_angle_y); + actorx->position_speed.z = actorx->speed * cos_s(actorx->player_angle_y); + } + + if (actorx->player_distance_xz > 127.0f && (play->game_frame % 10) == 0) { + aUKI_effect_hamon(actorx, game, 4); + } +} + +static void aUKI_coast_wave(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + switch (mCoBG_Wpos2Attribute(actorx->world.position, NULL)) { + case mCoBG_ATTRIBUTE_WAVE: + case mCoBG_ATTRIBUTE_SAND: + aUKI_clear_spd(actorx); + if (uki->coast_flag == FALSE) { + uki->coast_flag = TRUE; + } + break; + default: + aUKI_movement(actorx, game); + Actor_position_move(actorx); + break; + } +} + +static void aUKI_vib_calc(ACTOR* actorx, f32 height, f32 max_speed_y, f32 gravity) { + if (actorx->world.position.y < height) { + actorx->max_velocity_y = max_speed_y; + } else { + actorx->max_velocity_y = -max_speed_y; + } + + actorx->gravity = gravity; +} + +static void aUKI_set_spd_relations_in_water(ACTOR* actorx, GAME* game) { + static s16 angl_add_table[] = { DEG2SHORT_ANGLE2(1.40625f), DEG2SHORT_ANGLE2(5.625f) }; + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + s16 flow_angle; + int idx; + f32 water_height = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 772); + + if (uki->gyo_command == 2) { + if (uki->gyo_status == 4) { + f32 height = water_height + 7.5f; + + if (uki->touch_timer != 6) { + aUKI_vib_calc(actorx, height, 2.0f, 1.0f); + if (actorx->world.position.y >= height) { + uki->touch_timer = 6; + } + } else { + aUKI_vib_calc(actorx, height, 0.3f, 0.1f); + } + } else { + f32 height = water_height - 7.5f; + + if (uki->touch_timer != 5) { + aUKI_vib_calc(actorx, height, 1.5f, 0.5f); + if (actorx->world.position.y < (water_height - 7.5f)) { + uki->touch_timer = 5; + } + } else { + aUKI_vib_calc(actorx, height, 0.3f, 0.1f); + } + } + } else if (uki->gyo_command == 1) { + if (uki->touched_flag) { + uki->touched_flag = FALSE; + uki->touch_timer = 2; + aUKI_effect_hamon(actorx, game, 2); + aUKI_touch_vib_proc(uki); + } + + switch (uki->touch_timer) { + case 4: + aUKI_vib_calc(actorx, water_height, 0.3f, -0.050000005f); + break; + case 0: + case 2: + water_height -= 1.7f; + aUKI_vib_calc(actorx, water_height, 0.9f, 1.0f); + if (actorx->world.position.y < water_height) { + uki->touch_timer = 3; + } + break; + case 3: + aUKI_vib_calc(actorx, water_height, 0.9f, 1.0f); + if (actorx->world.position.y >= water_height) { + uki->touch_timer = 4; + } + break; + default: + break; + } + } else { + if (uki->proc == 4) { + flow_angle = aUKI_Get_flow_angle(actorx); + idx = ABS((s16)(actorx->world.angle.y - flow_angle)) > DEG2SHORT_ANGLE2(90.0f); + + chase_angle(&actorx->world.angle.y, flow_angle, angl_add_table[idx]); + actorx->shape_info.rotation.y = actorx->world.angle.y; + } + + if (actorx->bg_collision_check.result.unit_attribute == mCoBG_ATTRIBUTE_WATERFALL) { + if (actorx->world.position.y < water_height) { + if (uki->touch_timer == 5) { + aUKI_vib_calc(actorx, water_height, 0.9f, 1.0f); + } else { + aUKI_vib_calc(actorx, water_height, 0.3f, -0.050000005f); + } + } else { + actorx->max_velocity_y = -3.0f; + actorx->gravity = 3.0f; + } + + switch (uki->proc) { + case 4: + case 6: + case 7: + uki->gyo_status = 1; + actorx->position_speed.y = 0.0f; + uki->gyo_command = 0; + break; + } + } else { + if (uki->touch_timer == 5) { + aUKI_vib_calc(actorx, water_height, 0.9f, 1.0f); + if (actorx->world.position.y >= water_height) { + aUKI_effect_hamon(actorx, game, 1); + uki->touch_timer = 0; + } + } else { + aUKI_vib_calc(actorx, water_height, 0.3f, -0.050000005f); + } + } + } +} + +static void aUKI_color(ACTOR* actorx) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + f32 water_height = mCoBG_GetWaterHeight_File(actorx->world.position, __FILE__, 911); + + if (actorx->world.position.y < (water_height - 3.0f)) { + aUKI_chase_color(&uki->color[0], 100, -52); + aUKI_chase_color(&uki->color[1], 100, -52); + aUKI_chase_color(&uki->color[2], 128, -43); + } else { + aUKI_chase_color(&uki->color[0], 255, 52); + aUKI_chase_color(&uki->color[1], 255, 52); + aUKI_chase_color(&uki->color[2], 255, 43); + } +} + +static u8 aUKI_force_command(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + u8 res = FALSE; + + switch (uki->command) { + case 8: + res = TRUE; + aUKI_set_proc(actorx, game, aUKI_PROC_FORCE, 0); + break; + case 7: + res = TRUE; + aUKI_clear_spd(actorx); + uki->frame_timer = 52; + aUKI_parabola_init(uki, &actorx->world.position, &uki->right_hand_pos, uki->frame_timer, 1); + uki->status = aUKI_STATUS_COMEBACK; + aUKI_effect_sibuki(actorx, game, 1); + sAdo_OngenTrgStart(NA_SE_10C, &actorx->world.position); + aUKI_set_proc(actorx, game, aUKI_PROC_FORCE, 0); + break; + } + + return res; +} + +static void aUKI_carry(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + actorx->world.position = uki->right_hand_pos; + uki->uki_pos = uki->right_hand_pos; + + if (uki->command == 2) { + int timer; + + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_set_proc(actorx, game, aUKI_PROC_READY, 0); + } + } +} + +static void aUKI_ready(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + int timer; + + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + switch (uki->command) { + case 3: + aUKI_set_proc(actorx, game, aUKI_PROC_CAST, 0); + break; + case 4: + aUKI_set_proc(actorx, game, aUKI_PROC_AIR, 0); + break; + } + } else { + aUKI_parabola_move(actorx, 0); + } +} + +static void aUKI_air(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + int timer; + + aUKI_parabola_move(actorx, 0); + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_clear_spd(actorx); + aUKI_set_proc(actorx, game, aUKI_PROC_CARRY, 0); + } +} + +static void aUKI_cast(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + int timer; + + aUKI_parabola_move(actorx, 1); + if (actorx->bg_collision_check.result.is_in_water) { + uki->hit_water_flag = TRUE; + aUKI_effect_sibuki(actorx, game, 3); + mVibctl_simple_entry(50, mVibctl_VIB_PROG_FFF, 0, 1, 15, 0.0f); + uki->status = aUKI_STATUS_FLOAT; + sAdo_OngenTrgStart(NA_SE_10B, &actorx->world.position); + aUKI_set_proc(actorx, game, aUKI_PROC_WAIT, 0); + } +} + +static void aUKI_wait(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->hit_water_flag = FALSE; + uki->uki_pos = actorx->world.position; + chase_f(&actorx->position_speed.y, actorx->max_velocity_y, actorx->gravity); + + if (aUKI_force_command(actorx, game) == FALSE) { + int timer; + + if (uki->cast_timer == 0) { + timer = 0; + } else { + timer = --uki->cast_timer; + } + + if (timer == 0 && uki->gyo_command == 1) { + aUKI_set_proc(actorx, game, aUKI_PROC_TOUCH, 0); + } else if (uki->command == 6) { + int timer; + + aUKI_clear_spd(actorx); + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_set_proc(actorx, game, aUKI_PROC_HIT, 1); + } + } else { + aUKI_coast_wave(actorx, game); + } + } +} + +static void aUKI_hit(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + int timer; + + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + if (uki->gyo_status == 5) { + aUKI_set_proc(actorx, game, aUKI_PROC_CATCH, 0); + } else { + uki->gyo_command = 0; + uki->gyo_status = 0; + aUKI_set_proc(actorx, game, aUKI_PROC_CARRY, 0); + } + } else { + aUKI_parabola_move(actorx, 1); + aUKI_parabola_move(actorx, 2); + } +} + +static void aUKI_touch(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + chase_f(&actorx->position_speed.y, actorx->max_velocity_y, actorx->gravity); + if (aUKI_force_command(actorx, game) == FALSE) { + if (uki->gyo_command == 2) { + aUKI_touch_vib_proc(uki); + aUKI_set_proc(actorx, game, aUKI_PROC_BITE, 0); + } else if (uki->command == 6) { + int timer; + + aUKI_clear_spd(actorx); + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_set_proc(actorx, game, aUKI_PROC_HIT, 1); + } + } else { + aUKI_movement(actorx, game); + } + + Actor_position_move(actorx); + } +} + +static void aUKI_bite(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + // clang-format off + static s16 angl[] = { + DEG2SHORT_ANGLE2(10.1513671875f), + DEG2SHORT_ANGLE2(9.4647216796875f), + DEG2SHORT_ANGLE2(8.778076171875f), + DEG2SHORT_ANGLE2(8.778076171875f), + DEG2SHORT_ANGLE2(8.0914306640625f), + DEG2SHORT_ANGLE2(7.40478515625f), + DEG2SHORT_ANGLE2(7.03125f), + DEG2SHORT_ANGLE2(7.03125), + }; + // clang-format on + // clang-format off + static f32 spd[] = { + 0.1f, + 0.2f, + 0.3f, + 0.3f, + 0.4f, + 0.6f, + 0.8f, + 0.8f, + }; + // clang-format on + + chase_f(&actorx->position_speed.y, actorx->max_velocity_y, actorx->gravity); + if (aUKI_force_command(actorx, game) == FALSE) { + if (uki->gyo_command == 2) { + if (uki->command == 6) { + int timer; + + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_clear_spd(actorx); + aUKI_set_proc(actorx, game, aUKI_PROC_HIT, 3); + aUKI_parabola_init(uki, &uki->uki_pos, &uki->left_hand_pos, uki->frame_timer, 2); + uki->gyo_status = 5; + } else { + s16 idx = gyoei_type[uki->gyo_type].size; + f32 angle = angl[idx]; + + actorx->world.angle.y += (int)(angle * 0.5f); + actorx->shape_info.rotation.y = actorx->world.angle.y; + actorx->speed = spd[idx]; + actorx->position_speed.x = actorx->speed * sin_s(actorx->world.angle.y); + actorx->position_speed.z = actorx->speed * cos_s(actorx->world.angle.y); + Actor_position_move(actorx); + + uki->uki_pos = uki->gyo_pos; + uki->gyo_status = 4; + + if (uki->status != aUKI_STATUS_VIB) { + aUKI_bite_vib_proc(actorx); + } + + uki->status = aUKI_STATUS_VIB; + } + } else { + if ((game->frame_counter % 10) == 0) { + aUKI_touch_vib_proc(uki); + } + + Actor_position_move(actorx); + } + } else { + aUKI_set_proc(actorx, game, aUKI_PROC_WAIT, 0); + } + } +} + +static void aUKI_catch(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + actorx->world.position = uki->right_hand_pos; + uki->uki_pos = uki->left_hand_pos; + + switch (uki->command) { + case 1: + uki->gyo_command = 0; + uki->gyo_status = 8; + aUKI_set_proc(actorx, game, aUKI_PROC_CARRY, 0); + break; + case 5: + aUKI_set_proc(actorx, game, aUKI_PROC_GET, 0); + break; + } +} + +static void aUKI_get(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + actorx->world.position = uki->right_hand_pos; + uki->uki_pos = uki->left_hand_pos; + + if (uki->command == 1) { + uki->gyo_command = 0; + uki->gyo_status = 0; + aUKI_set_proc(actorx, game, aUKI_PROC_CARRY, 0); + } +} + +static void aUKI_force(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + if (uki->status == aUKI_STATUS_COMEBACK) { + int timer; + + if (uki->frame_timer == 0) { + timer = 0; + } else { + timer = --uki->frame_timer; + } + + if (timer == 0) { + aUKI_set_proc(actorx, game, aUKI_PROC_CARRY, 0); + } else { + aUKI_parabola_move(actorx, 1); + } + } else { + aUKI_force_command(actorx, game); + } +} + +static void aUKI_set_proc_carry(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + actorx->position_speed.y = 0.0f; + uki->frame_timer = 4; + uki->status = aUKI_STATUS_CARRY; +} + +static void aUKI_set_proc_ready(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + xyz_t target_pos; + + uki->frame_timer = 32; + target_pos = actorx->world.position; + target_pos.x -= 30.0f * sin_s(player_actor->shape_info.rotation.y); + target_pos.z -= 30.0f * cos_s(player_actor->shape_info.rotation.y); + aUKI_parabola_init(uki, &actorx->world.position, &target_pos, 20, 0); + uki->status = aUKI_STATUS_READY; +} + +static void aUKI_set_proc_air(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->frame_timer = 14; + aUKI_parabola_init(uki, &actorx->world.position, &uki->uki_pos, uki->frame_timer, 0); + uki->status = aUKI_STATUS_CARRY; +} + +static void aUKI_set_proc_cast(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->frame_timer = 50; + uki->cast_timer = 40; + aUKI_parabola_init(uki, &actorx->world.position, &uki->cast_goal_point, uki->frame_timer, 1); + uki->status = aUKI_STATUS_CAST; +} + +static void aUKI_set_proc_wait(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->frame_timer = 12; + uki->gyo_status = 1; + uki->gyo_type = -1; + uki->child_actor = NULL; +} + +static void aUKI_set_proc_hit(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + Submenu* submenu_p = &play->submenu; + + xyz_t_move(&submenu_p->water_pos, &actorx->world.position); + uki->frame_timer = 52; + aUKI_parabola_init(uki, &actorx->world.position, &uki->right_hand_pos, uki->frame_timer, 1); + uki->status = aUKI_STATUS_COMEBACK; + + if (uki->coast_flag) { + uki->coast_flag = FALSE; + } else { + aUKI_effect_sibuki(actorx, game, arg); + } + + sAdo_OngenTrgStart(NA_SE_10C, &actorx->world.position); +} + +static void aUKI_set_proc_touch(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + aUKI_clear_spd(actorx); + aUKI_movement(actorx, game); + Actor_position_move(actorx); + + uki->frame_timer = 12; + uki->gyo_status = 2; +} + +static void aUKI_set_proc_bite(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + static s16 timer[] = { 26, 39, 39, 39, 52, 65, 78, 78 }; + + aUKI_clear_spd(actorx); + aUKI_effect_sibuki(actorx, game, 0); + + switch (uki->gyo_type) { + case aSOG_FISH_TYPE_EMPTY_CAN: + case aSOG_FISH_TYPE_BOOT: + case aSOG_FISH_TYPE_OLD_TIRE: + uki->frame_timer = 26; + break; + default: + uki->frame_timer = (int)((f32)(int)timer[gyoei_type[uki->gyo_type].size] * 2.0f); + break; + } + + uki->gyo_status = 3; +} + +static void aUKI_set_proc_catch(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->frame_timer = 20; + uki->gyo_status = 6; + uki->status = aUKI_STATUS_CATCH; +} + +static void aUKI_set_proc_get(ACTOR* actorx, GAME* game, int arg) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + uki->gyo_status = 7; +} + +typedef void (*aUKI_INIT_PROC)(ACTOR*, GAME*, int); + +static void aUKI_set_proc(ACTOR* actorx, GAME* game, int proc, int arg) { + // clang-format off + static aUKI_INIT_PROC init_proc[] = { + &aUKI_set_proc_carry, + &aUKI_set_proc_ready, + &aUKI_set_proc_air, + &aUKI_set_proc_cast, + &aUKI_set_proc_wait, + &aUKI_set_proc_hit, + &aUKI_set_proc_touch, + &aUKI_set_proc_bite, + &aUKI_set_proc_catch, + &aUKI_set_proc_get, + (aUKI_INIT_PROC)&none_proc1, + }; + // clang-format on + + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + (*init_proc[proc])(actorx, game, arg); + uki->proc = proc; +} + +typedef void (*aUKI_MOVE_PROC)(ACTOR*, GAME*); + +static void aUKI_actor_move(ACTOR* actorx, GAME* game) { + UKI_ACTOR* uki = (UKI_ACTOR*)actorx; + + if (uki->command != 0) { + // clang-format off + static aUKI_MOVE_PROC Uki_move_proc[] = { + &aUKI_carry, + &aUKI_ready, + &aUKI_air, + &aUKI_cast, + &aUKI_wait, + &aUKI_hit, + &aUKI_touch, + &aUKI_bite, + &aUKI_catch, + &aUKI_get, + &aUKI_force, + }; + // clang-format on + + ACTOR* player_actor; + f32 sin; + f32 cos; + + actorx->dw_proc = &aUKI_actor_draw; + player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + sin = sin_s(player_actor->shape_info.rotation.y); + cos = cos_s(player_actor->shape_info.rotation.y); + + uki->right_hand_pos.x += 3.0f * sin + -7.0f * cos; + uki->right_hand_pos.y += 6.0f; + uki->right_hand_pos.z += 3.0f * cos - -7.0f * sin; + + (*Uki_move_proc[uki->proc])(actorx, game); + aUKI_BGcheck(actorx); + aUKI_set_spd_relations_in_water(actorx, game); + aUKI_color(actorx); + set_collision(actorx, game); + + } else { + actorx->dw_proc = NULL; + } +} diff --git a/src/ac_weather.c b/src/ac_weather.c index dd86a1ec..b5a23149 100644 --- a/src/ac_weather.c +++ b/src/ac_weather.c @@ -19,8 +19,8 @@ static void Weather_Actor_dt(ACTOR* actor, GAME* game); static void Weather_Actor_move(ACTOR* actor, GAME* game); static void Weather_Actor_draw(ACTOR* actor, GAME* game); -static void aWeather_SetNowProfile(WEATHER_ACTOR* weather, s16 id); -static int aWeather_CountWeatherPrivate(WEATHER_ACTOR* weather); +static void aWeather_SetNowProfile(ACTOR* actorx, s16 id); +static int aWeather_CountWeatherPrivate(ACTOR* actorx); static aWeather_Profile_c* profile_tbl[] = { &iam_weather_fine, &iam_weather_rain, &iam_weather_snow, &iam_weather_sakura, &iam_weather_leaf, @@ -58,12 +58,14 @@ static void aWeather_SysLevCall_MoveEnd(WEATHER_ACTOR* weather) { } static void aWeather_SysLevStart(u8 flag) { - Common_Get(clip.weather_clip)->actor->start_sound_effect = flag; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; + + weather->start_sound_effect = flag; } static void aWeather_SysLevStop(u8 flag) { int stopFlag = flag; - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; if (weather->start_sound_effect == stopFlag) { weather->start_sound_effect = 0; @@ -97,13 +99,12 @@ static void aWeather_RequestChangeWeather(ACTOR* actor, s16 status, s16 level) { } extern void aWeather_RequestChangeWeatherToIsland() { - aWeather_RequestChangeWeather(&Common_Get(clip.weather_clip)->actor->actor_class, Common_Get(island_weather), + aWeather_RequestChangeWeather(Common_Get(clip.weather_clip)->actor, Common_Get(island_weather), Common_Get(island_weather_intensity)); } extern void aWeather_RequestChangeWeatherFromIsland() { - aWeather_RequestChangeWeather(&Common_Get(clip.weather_clip)->actor->actor_class, - mEnv_SAVE_GET_WEATHER_TYPE(Save_Get(weather)), + aWeather_RequestChangeWeather(Common_Get(clip.weather_clip)->actor, mEnv_SAVE_GET_WEATHER_TYPE(Save_Get(weather)), mEnv_SAVE_GET_WEATHER_INTENSITY(Save_Get(weather))); } @@ -158,8 +159,7 @@ static aWeather_Priv* aWeather_GetWeatherPrv(u8 status, s16 timer, xyz_t* pos, x } static int aWeather_StopSysLevSE() { - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; - + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; u8 current = weather->current_sound_effect; if (weather->sound_flag == 0) { @@ -174,8 +174,7 @@ static int aWeather_StopSysLevSE() { } static int aWeather_StartSysLevSE() { - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; - + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; u8 current = weather->current_sound_effect; if (weather->sound_flag == 1) { @@ -202,7 +201,8 @@ static int aWeather_StartSysLevSE() { return 0; } -static void aWeather_ChangeWeatherInstance(WEATHER_ACTOR* weather, s16 status, s16 level) { +static void aWeather_ChangeWeatherInstance(ACTOR* actorx, s16 status, s16 level) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; weather->next_status = status; weather->next_level = level; @@ -210,9 +210,9 @@ static void aWeather_ChangeWeatherInstance(WEATHER_ACTOR* weather, s16 status, s weather->current_level = 0; weather->request_change = TRUE; - if (!aWeather_CountWeatherPrivate(weather)) { + if (!aWeather_CountWeatherPrivate(actorx)) { weather->current_status = weather->next_status; - aWeather_SetNowProfile(weather, weather->current_status); + aWeather_SetNowProfile(actorx, weather->current_status); aWeather_weatherinfo_CommonSet(weather->current_status, weather->next_level); weather->current_level = level; weather->current_aim_level = weather->next_level; @@ -229,7 +229,8 @@ static int aWeather_IsLand_Event_Check() { return 0; } -static int aWeather_Basement_Event_Check(WEATHER_ACTOR* weather) { +static int aWeather_Basement_Event_Check(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; if ((weather->basement_event == 1) || (weather->basement_event == 2)) { return 1; @@ -237,7 +238,8 @@ static int aWeather_Basement_Event_Check(WEATHER_ACTOR* weather) { return 0; } -static void aWeather_ChangeEnvSE(WEATHER_ACTOR* weather, GAME_PLAY* play, s16 status, s16 level) { +static void aWeather_ChangeEnvSE(ACTOR* actorx, GAME* game, s16 status, s16 level) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; u8 current = weather->current_sound_effect; if (weather->sound_flag == 1 || weather->sound_flag == 2) @@ -256,7 +258,7 @@ static void aWeather_ChangeEnvSE(WEATHER_ACTOR* weather, GAME_PLAY* play, s16 st if ((status == 1) && (weather->current_sound_effect == -1000)) { switch (level) { case 1: - if (mPlib_check_player_open_umbrella(play) != 0) { + if (mPlib_check_player_open_umbrella(game) != 0) { aWeather_SysLevStart(0x12); weather->current_sound_effect = 0x12; return; @@ -265,7 +267,7 @@ static void aWeather_ChangeEnvSE(WEATHER_ACTOR* weather, GAME_PLAY* play, s16 st weather->current_sound_effect = 7; break; case 2: - if (mPlib_check_player_open_umbrella(play) != 0) { + if (mPlib_check_player_open_umbrella(game) != 0) { aWeather_SysLevStart(0x13); weather->current_sound_effect = 0x13; return; @@ -274,7 +276,7 @@ static void aWeather_ChangeEnvSE(WEATHER_ACTOR* weather, GAME_PLAY* play, s16 st weather->current_sound_effect = 8; break; case 3: - if (mPlib_check_player_open_umbrella(play) != 0) { + if (mPlib_check_player_open_umbrella(game) != 0) { aWeather_SysLevStart(0x14); weather->current_sound_effect = 0x14; return; @@ -293,7 +295,7 @@ static void aWeather_EndEnvSE(ACTOR* actor) { if ((sAdo_GameframeEnd_Check() == 1) || ((sAdo_GameframeEnd_Check() == 2) && - ((aWeather_IsLand_Event_Check() != 0) || (aWeather_Basement_Event_Check(weather) != 0)))) { + ((aWeather_IsLand_Event_Check() != 0) || (aWeather_Basement_Event_Check(actor) != 0)))) { if (((u8)(current - 7) <= 2) || ((u8)(current - 0x12) <= 1) || (u8)(current == 0x14)) { aWeather_SysLevStop(current); weather->current_sound_effect = -1000; @@ -305,7 +307,8 @@ static void aWeather_EndEnvSE(ACTOR* actor) { aWeather_SysLevCall_MoveEnd(weather); } -static void aWeather_SetNowProfile(WEATHER_ACTOR* weather, s16 id) { +static void aWeather_SetNowProfile(ACTOR* actorx, s16 id) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; if (!mFI_GET_TYPE(mFI_GetFieldId())) { weather->current_profile = profile_tbl[id]; @@ -314,11 +317,11 @@ static void aWeather_SetNowProfile(WEATHER_ACTOR* weather, s16 id) { } } -static void aWeather_SecureWeatherPrivateWork(WEATHER_ACTOR* weather) { +static void aWeather_SecureWeatherPrivateWork(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; int i; weather->priv = zelda_malloc(sizeof(aWeather_Priv) * 100); - if (weather->priv != NULL) { for (i = 0; i < 100; i++) { bzero(&weather->priv[i], sizeof(aWeather_Priv)); @@ -326,14 +329,16 @@ static void aWeather_SecureWeatherPrivateWork(WEATHER_ACTOR* weather) { } } -static void aWeather_SetClip(WEATHER_ACTOR* weather, int flag) { +static void aWeather_SetClip(ACTOR* actorx, int flag) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; aWeather_Clip_c* clip; + if (flag != 0) { Common_Set(clip.weather_clip, NULL); } else { clip = &weather->clip; - clip->actor = weather; + clip->actor = actorx; clip->change_weather = aWeather_RequestChangeWeather; clip->get_priv_num = aWeather_GetWeatherPrvNum; clip->remove_priv = aWeather_AbolishPrivate; @@ -346,7 +351,8 @@ static void aWeather_SetClip(WEATHER_ACTOR* weather, int flag) { } } -static void aWeather_RenewWindInfo(WEATHER_ACTOR* weather) { +static void aWeather_RenewWindInfo(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; s_xyz pos = Common_Get(wind); // multiply by 1 means inline ? f32 speed = Common_Get(wind_speed) * 0.01f; f32 factor = 1.0f; @@ -356,12 +362,12 @@ static void aWeather_RenewWindInfo(WEATHER_ACTOR* weather) { weather->wind_info.z = pos.z * speed * factor; } -static void aWeather_SnowInAdvance(WEATHER_ACTOR* weather, GAME_PLAY* play, int moves) { - +static void aWeather_SnowInAdvance(ACTOR* actorx, GAME* game, int moves) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; int i; for (i = 0; i < moves; i++) { - Weather_Actor_move(&weather->actor_class, &play->game); + Weather_Actor_move(actorx, game); } } @@ -375,7 +381,7 @@ static void Weather_Actor_ct(ACTOR* actor, GAME* game) { int cur; xyz_t* pos = Camera2_getCenterPos_p(); - aWeather_SetClip(weather, 0); + aWeather_SetClip(actor, 0); if (mEv_CheckTitleDemo() > 0) { cur = mEv_CheckTitleDemo() - 1; @@ -408,17 +414,17 @@ static void Weather_Actor_ct(ACTOR* actor, GAME* game) { weather->lightning_timer2 = 30; weather->sound_flag = 0; - aWeather_RenewWindInfo(weather); + aWeather_RenewWindInfo(actor); if (!mFI_GET_TYPE(mFI_GetFieldId())) { - aWeather_SecureWeatherPrivateWork(weather); + aWeather_SecureWeatherPrivateWork(actor); } - aWeather_SetNowProfile(weather, weather->current_status); + aWeather_SetNowProfile(actor, weather->current_status); if ((weather->current_status == 2) || (weather->current_status == 3)) { weather->pos.y -= 50.0f; - aWeather_SnowInAdvance(weather, play, 0x28); + aWeather_SnowInAdvance(actor, game, 0x28); weather->pos.y += 50.0f; } @@ -437,11 +443,11 @@ static void Weather_Actor_ct(ACTOR* actor, GAME* game) { weather->basement_event = 0; } if ((play->fb_wipe_type == 6) && (aWeather_IsLand_Event_Check() == 0) && - (aWeather_Basement_Event_Check(weather) == 0)) { + (aWeather_Basement_Event_Check(actor) == 0)) { weather->current_sound_effect = Common_Get(current_sound_effect); } else { weather->current_sound_effect = -1000; - aWeather_ChangeEnvSE(weather, play, weather->current_status, weather->current_level); + aWeather_ChangeEnvSE(actor, game, weather->current_status, weather->current_level); aWeather_SysLevCall_MoveEnd(weather); } } @@ -453,7 +459,7 @@ static void Weather_Actor_dt(ACTOR* actor, GAME* game) { zelda_free(weather->priv); } - aWeather_SetClip(weather, 1); + aWeather_SetClip(actor, 1); } static void aWeather_DrawWeatherPrv(ACTOR* actor, GAME* game) { @@ -495,7 +501,8 @@ static void aWeather_MakeWeatherPrv(ACTOR* actor, GAME* game) { } } -static void aWeather_MoveWeatherPrv(WEATHER_ACTOR* weather, GAME* game) { +static void aWeather_MoveWeatherPrv(ACTOR* actorx, GAME* game) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; aWeather_Priv* priv; int i; @@ -509,7 +516,7 @@ static void aWeather_MoveWeatherPrv(WEATHER_ACTOR* weather, GAME* game) { if (priv->timer != -100) { priv->timer--; if (priv->timer <= 0) { - aWeather_AbolishPrivate(&weather->actor_class, i); + aWeather_AbolishPrivate(actorx, i); } } } @@ -517,7 +524,8 @@ static void aWeather_MoveWeatherPrv(WEATHER_ACTOR* weather, GAME* game) { } } -static int aWeather_CountWeatherPrivate(WEATHER_ACTOR* weather) { +static int aWeather_CountWeatherPrivate(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; int i; int count; aWeather_Priv* priv = weather->priv; @@ -534,7 +542,8 @@ static int aWeather_CountWeatherPrivate(WEATHER_ACTOR* weather) { return count; } -static void aWeather_ChangeWeather(WEATHER_ACTOR* weather, GAME_PLAY* play) { +static void aWeather_ChangeWeather(ACTOR* actorx, GAME* game) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; if ((weather->request_change == TRUE) && (weather->current_level == 0)) { if (mFI_GET_TYPE(mFI_GetFieldId())) { @@ -542,27 +551,28 @@ static void aWeather_ChangeWeather(WEATHER_ACTOR* weather, GAME_PLAY* play) { aWeather_weatherinfo_CommonSet(weather->current_status, weather->next_level); weather->current_level = 1; weather->current_aim_level = weather->next_level; - aWeather_ChangeEnvSE(weather, play, weather->current_status, weather->current_level); + aWeather_ChangeEnvSE(actorx, game, weather->current_status, weather->current_level); weather->request_change = FALSE; - } else if (aWeather_CountWeatherPrivate(weather) == 0) { + } else if (aWeather_CountWeatherPrivate(actorx) == 0) { weather->current_status = weather->next_status; - aWeather_SetNowProfile(weather, weather->current_status); + aWeather_SetNowProfile(actorx, weather->current_status); aWeather_weatherinfo_CommonSet(weather->current_status, weather->next_level); weather->current_level = 1; weather->current_aim_level = weather->next_level; - aWeather_ChangeEnvSE(weather, play, weather->current_status, weather->current_level); + aWeather_ChangeEnvSE(actorx, game, weather->current_status, weather->current_level); weather->request_change = FALSE; } } } -static void aWeather_CheckWeatherTimer() { +static void aWeather_CheckWeatherTimer(ACTOR* actorx) { s_xyz dir; mEnv_DecideWindDirect(&dir, 0x3000, 0x3000); } -static void aWeather_RenewWeatherLevel(WEATHER_ACTOR* weather, GAME_PLAY* play) { +static void aWeather_RenewWeatherLevel(ACTOR* actorx, GAME* game) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; s16 level; if (weather->current_level != weather->current_aim_level) { @@ -574,12 +584,13 @@ static void aWeather_RenewWeatherLevel(WEATHER_ACTOR* weather, GAME_PLAY* play) weather->current_level--; else weather->current_level++; - aWeather_ChangeEnvSE(weather, play, weather->current_status, weather->current_level); + aWeather_ChangeEnvSE(actorx, game, weather->current_status, weather->current_level); } } } -static void aWeather_ChangeWeatherTime0(WEATHER_ACTOR* weather) { +static void aWeather_ChangeWeatherTime0(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; s16 rndWeather, rndIntensity; s16 evWeather, evIntensity; s16 save_weather; @@ -611,14 +622,15 @@ static void aWeather_ChangeWeatherTime0(WEATHER_ACTOR* weather) { Save_Set(weather, rndIntensity | (rndWeather * 16)); if (((mEv_CheckTitleDemo() != -9) || (weather->sound_flag != 1)) && (mFI_CheckInIsland() == 0)) { - aWeather_RequestChangeWeather(&weather->actor_class, rndWeather, rndIntensity); + aWeather_RequestChangeWeather(actorx, rndWeather, rndIntensity); } Common_Set(weather_time, Common_Get(time.rtc_time)); } } } -static void aWeather_MakeKaminari(WEATHER_ACTOR* weather) { +static void aWeather_MakeKaminari(ACTOR* actorx) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actorx; lbRTC_time_c time = Common_Get(time.rtc_time); u8 month = time.month; s16 timer; @@ -660,21 +672,21 @@ static void Weather_Actor_move(ACTOR* actor, GAME* game) { camera = &play->camera; angle = search_position_angleY(&camera->lookat.center, &camera->lookat.eye); - aWeather_MakeKaminari(weather); - aWeather_CheckWeatherTimer(weather); + aWeather_MakeKaminari(actor); + aWeather_CheckWeatherTimer(actor); aWeather_MakeWeatherPrv(actor, game); - aWeather_RenewWeatherLevel(weather, play); - aWeather_MoveWeatherPrv(weather, game); - aWeather_ChangeWeather(weather, play); + aWeather_RenewWeatherLevel(actor, game); + aWeather_MoveWeatherPrv(actor, game); + aWeather_ChangeWeather(actor, game); weather->pos = *pos; - aWeather_ChangeWeatherTime0(weather); + aWeather_ChangeWeatherTime0(actor); if (Common_Get(weather) == 1) { - umbrella = mPlib_check_player_open_umbrella(play); + umbrella = mPlib_check_player_open_umbrella(game); if (umbrella != weather->umbrella_flag) { - aWeather_ChangeEnvSE(weather, play, weather->current_status, weather->current_level); + aWeather_ChangeEnvSE(actor, game, weather->current_status, weather->current_level); } weather->umbrella_flag = umbrella; @@ -689,10 +701,10 @@ static void Weather_Actor_move(ACTOR* actor, GAME* game) { } extern int aWeather_ChangingWeather() { - if (Common_Get(clip.weather_clip) != NULL) { if (Common_Get(clip.weather_clip->actor) != NULL) { - return Common_Get(clip.weather_clip->actor)->request_change == TRUE; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip).weather_clip->actor; + return weather->request_change == TRUE; } } diff --git a/src/ac_weather_leaf.c b/src/ac_weather_leaf.c index 2b43a161..f072f92e 100644 --- a/src/ac_weather_leaf.c +++ b/src/ac_weather_leaf.c @@ -27,50 +27,46 @@ Gfx* ef_otiba_model_tbl[] = { }; aWeather_Profile_c iam_weather_leaf = { - aWeatherLeaf_make, - aWeatherLeaf_ct, - aWeatherLeaf_move, - aWeatherLeaf_set, - aWeatherLeaf_draw, + aWeatherLeaf_make, aWeatherLeaf_ct, aWeatherLeaf_move, aWeatherLeaf_set, aWeatherLeaf_draw, }; -static int aWeatherLeaf_DecideMakeLeafCount(ACTOR* actor, GAME* game){ +static int aWeatherLeaf_DecideMakeLeafCount(ACTOR* actor, GAME* game) { WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; - if(weather->current_level == 1){ + if (weather->current_level == 1) { return (game->frame_counter & 15) == 0; } - return (game->frame_counter & 7) == 0; + return (game->frame_counter & 7) == 0; } - -static void aWeatherLeaf_make(ACTOR* actor, GAME* game){ + +static void aWeatherLeaf_make(ACTOR* actor, GAME* game) { WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; - aWeather_Priv* priv; - f32 x,z; + aWeather_Priv* priv; + f32 x, z; xyz_t pos = weather->pos; f32 y = 230.0f + pos.y; - int count = Common_Get(clip.weather_clip)->get_priv_num(actor); - xyz_t base = {0.0f, 0.0f, 0.0f}; + int count = Common_Get(clip.weather_clip)->get_priv_num(actor); + xyz_t base = { 0.0f, 0.0f, 0.0f }; xyz_t mod_pos; - if(aWeatherLeaf_DecideMakeLeafCount(actor, game) != 0){ + if (aWeatherLeaf_DecideMakeLeafCount(actor, game) != 0) { base.y = -0.8f + (RANDOM_F(-0.0999999642372f)); - if(count != -1){ + if (count != -1) { x = -100.0f + (RANDOM_F(200.0f)); z = -200.0f + (RANDOM_F(380.0f)); - + mod_pos = pos; mod_pos.x += x; mod_pos.z += z; mod_pos.y = y; - + priv = Common_Get(clip.weather_clip)->get_priv(4, 280, &mod_pos, &base, actor, count); - if(priv != NULL){ + if (priv != NULL) { aWeatherLeaf_ct(priv, game); - priv->work[3]= 0; + priv->work[3] = 0; priv->work[4] = 156.5f + (RANDOM_F(260.5)); priv->currentY = y; } @@ -78,36 +74,34 @@ static void aWeatherLeaf_make(ACTOR* actor, GAME* game){ } } - -static void aWeatherLeaf_ct(aWeather_Priv* priv, GAME*){ +static void aWeatherLeaf_ct(aWeather_Priv* priv, GAME*) { priv->work[0] = RANDOM_F(3.0f); priv->work[1] = RANDOM_F(65535.0f); priv->work[2] = RANDOM_F(65535.0f); } - -static int aWeatherLeaf_CheckLeafBorder(aWeather_Priv* priv){ - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; +static int aWeatherLeaf_CheckLeafBorder(aWeather_Priv* priv) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; int ret = 0; f32 leafTemp; xyz_t pos; - - if(weather != NULL){ - pos = weather->pos; - leafTemp =priv->pos.x; - if(leafTemp < (-100.0f + pos.x)){ + if (weather != NULL) { + pos = weather->pos; + leafTemp = priv->pos.x; + + if (leafTemp < (-100.0f + pos.x)) { ret |= 2; } - if(leafTemp > (100.0f + pos.x)){ + if (leafTemp > (100.0f + pos.x)) { ret |= 8; } - leafTemp =priv->pos.z; + leafTemp = priv->pos.z; - if(leafTemp > (180.0f + pos.z)){ + if (leafTemp > (180.0f + pos.z)) { ret |= 4; } - if(leafTemp < (-200.0f + pos.z)){ + if (leafTemp < (-200.0f + pos.z)) { ret |= 1; } } @@ -115,58 +109,58 @@ static int aWeatherLeaf_CheckLeafBorder(aWeather_Priv* priv){ return ret; } -static void aWeatherLeaf_CheckLeafScroll(aWeather_Priv* priv){ +static void aWeatherLeaf_CheckLeafScroll(aWeather_Priv* priv) { int border = aWeatherLeaf_CheckLeafBorder(priv); - if(border != 0){ - if((border >> 1) & 1){ + if (border != 0) { + if ((border >> 1) & 1) { priv->pos.x += 200.0f; } - if((border >> 3) & 1){ + if ((border >> 3) & 1) { priv->pos.x -= 200.0f; } - if((border >> 2) & 1){ + if ((border >> 2) & 1) { priv->pos.z -= 380.0f; } - if(border & 1){ + if (border & 1) { priv->pos.z += 380.0f; } } - if(Common_Get(clip.weather_clip) != NULL){ + if (Common_Get(clip.weather_clip) != NULL) { f32 y; - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; - if(weather != NULL){ + if (weather != NULL) { y = 230.0f + weather->pos.y; - if(priv->pos.y < + weather->pos.y){ + if (priv->pos.y < +weather->pos.y) { priv->pos.y = (y + (priv->pos.y - priv->currentY)); - priv->currentY = y; + priv->currentY = y; } } } } -static void aWeatherLeaf_SetWind2Leaf(aWeather_Priv* priv){ +static void aWeatherLeaf_SetWind2Leaf(aWeather_Priv* priv) { priv->pos.x += 0.45f; } -static void aWeatherLeaf_move(aWeather_Priv* priv, GAME* game){ - GAME_PLAY* play = (GAME_PLAY*) game; +static void aWeatherLeaf_move(aWeather_Priv* priv, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; priv->pos.x += priv->speed.x; priv->pos.y += priv->speed.y; priv->pos.z += priv->speed.z; - + priv->work[3] += priv->work[4]; aWeatherLeaf_SetWind2Leaf(priv); aWeatherLeaf_CheckLeafScroll(priv); priv->work[1] += 0x8DC; - priv->work[2] += 0x474; + priv->work[2] += 0x474; } -static void aWeatherLeaf_set(GAME* game){ +static void aWeatherLeaf_set(GAME* game) { _texture_z_light_fog_prim_xlu(game->graph); @@ -174,39 +168,38 @@ static void aWeatherLeaf_set(GAME* game){ gSPDisplayList(NEXT_POLY_XLU_DISP, ef_otiba01_setmode); - CLOSE_DISP(game->graph); } -void aWeatherLeaf_draw(aWeather_Priv* priv, GAME* game){ - GAME_PLAY* play = (GAME_PLAY*) game; - +void aWeatherLeaf_draw(aWeather_Priv* priv, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Mtx* work; f32 scale; f32 min; xyz_t pos; - xyz_t screen_pos; - + xyz_t screen_pos; pos.x = priv->pos.x + (6.0f * sin_s(priv->work[3])); pos.z = priv->pos.z + (6.0f * cos_s(priv->work[3])); - pos.y = priv->pos.y; + pos.y = priv->pos.y; Game_play_Projection_Trans(play, &pos, &screen_pos); - if(( screen_pos.x >= 0.0f) && (screen_pos.x < SCREEN_WIDTH_F) && ( screen_pos.y >= 0.0f) && (screen_pos.y < SCREEN_HEIGHT_F)){ - + if ((screen_pos.x >= 0.0f) && (screen_pos.x < SCREEN_WIDTH_F) && (screen_pos.y >= 0.0f) && + (screen_pos.y < SCREEN_HEIGHT_F)) { + work = GRAPH_ALLOC_TYPE(game->graph, Mtx, 1); - OPEN_DISP(game->graph); - - suMtxMakeSRT(work, 0.00499999988824f, 0.00499999988824f, 0.00499999988824f, priv->work[2], priv->work[1], priv->work[2], pos.x, pos.y, pos.z); + OPEN_DISP(game->graph); + + suMtxMakeSRT(work, 0.00499999988824f, 0.00499999988824f, 0.00499999988824f, priv->work[2], priv->work[1], + priv->work[2], pos.x, pos.y, pos.z); gSPMatrix(NEXT_POLY_XLU_DISP, work, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - gSPDisplayList(NEXT_POLY_XLU_DISP, ef_otiba_model_tbl[priv->work[0]]); - - CLOSE_DISP( game->graph); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_otiba_model_tbl[priv->work[0]]); + + CLOSE_DISP(game->graph); } } diff --git a/src/ac_weather_rain.c b/src/ac_weather_rain.c index dbd4148c..38c1b2ea 100644 --- a/src/ac_weather_rain.c +++ b/src/ac_weather_rain.c @@ -29,24 +29,20 @@ static void aWeatherRain_set(GAME*); static void aWeatherRain_draw(aWeather_Priv*, GAME*); aWeather_Profile_c iam_weather_rain = { - aWeatherRain_make, - aWeatherRain_ct, - aWeatherRain_move, - aWeatherRain_set, - aWeatherRain_draw, + aWeatherRain_make, aWeatherRain_ct, aWeatherRain_move, aWeatherRain_set, aWeatherRain_draw, }; -static int aWeatherRain_DecideMakeRainCount(ACTOR* actor){ - WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; +static int aWeatherRain_DecideMakeRainCount(ACTOR* actor) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; - if(weather->current_level == 1){ + if (weather->current_level == 1) { return 1; } - return( weather->current_level -2 ? 0 : -1) + 3; + return (weather->current_level - 2 ? 0 : -1) + 3; } -static void aWeatherRain_make(ACTOR* actor, GAME* game){ +static void aWeatherRain_make(ACTOR* actor, GAME* game) { aWeather_Priv* priv; xyz_t pos; xyz_t pos_mod; @@ -57,84 +53,79 @@ static void aWeatherRain_make(ACTOR* actor, GAME* game){ GAME_PLAY* play = (GAME_PLAY*)game; WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; - f32 x,y,z; - + f32 x, y, z; + count = aWeatherRain_DecideMakeRainCount(actor); pos = weather->pos; - for(i = 0; i < count; i++){ + for (i = 0; i < count; i++) { priv_num = Common_Get(clip.weather_clip)->get_priv_num(&weather->actor_class); - if (priv_num != -1){ + if (priv_num != -1) { x = -130.0f + (RANDOM_F(260.0f)); z = -200.0f + (RANDOM_F(360.0f)); - + pos_mod = pos; speed = ZeroVec; - - speed.y = -9.5f + (RANDOM_F(-2.5f)); + + speed.y = -9.5f + (RANDOM_F(-2.5f)); speed.y += -2.0f; - + pos_mod.x += x; pos_mod.z += z; - if(mEv_CheckTitleDemo() == -9){ + if (mEv_CheckTitleDemo() == -9) { PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); pos_mod.y = 70.0f + (120.0f + player->actor_class.world.position.y); - } - else{ + } else { pos_mod.y = 70.0f + (120.0f + mCoBG_GetBgY_OnlyCenter_FromWpos(pos_mod, 0.0f)); } - + priv = Common_Get(clip.weather_clip)->get_priv(1, 1000, &pos_mod, &speed, actor, priv_num); - if(priv != NULL){ - aWeatherRain_ct(priv,game); + if (priv != NULL) { + aWeatherRain_ct(priv, game); priv->work[0] = 0; } } } } -static void aWeatherRain_ct(aWeather_Priv*, GAME*){ - +static void aWeatherRain_ct(aWeather_Priv*, GAME*) { } +static void aWeatherRain_MoveRain(aWeather_Priv* priv) { -static void aWeatherRain_MoveRain(aWeather_Priv* priv){ - - priv->pos.x += priv->speed.x; - priv->pos.y += priv->speed.y; - priv->pos.z += priv->speed.z; + priv->pos.x += priv->speed.x; + priv->pos.y += priv->speed.y; + priv->pos.z += priv->speed.z; } - -static void aWeatherRain_MakePicha(ACTOR* actor, GAME* game, xyz_t pos){ +static void aWeatherRain_MakePicha(ACTOR* actor, GAME* game, xyz_t pos) { int priv_num = Common_Get(clip.weather_clip)->get_priv_num(actor); GAME_PLAY* play = (GAME_PLAY*)game; aWeather_Priv* priv; f32 y; - - if(priv_num != -1){ - if(mEv_CheckTitleDemo() == -9){ + + if (priv_num != -1) { + if (mEv_CheckTitleDemo() == -9) { PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); - + y = player->actor_class.world.position.y; pos.y = y; - } - else{ + } else { y = mCoBG_GetBgY_OnlyCenter_FromWpos(pos, 0.0f); pos.y = y; } priv = Common_Get(clip.weather_clip)->get_priv(1, 8, &pos, NULL, actor, priv_num); - if(priv != NULL){ - aWeatherRain_ct(priv,game); + if (priv != NULL) { + aWeatherRain_ct(priv, game); priv->work[0] = 1; } } } -static void aWeatherRain_set(GAME* game){ +static void aWeatherRain_set(GAME* game) { _texture_z_light_fog_prim_xlu(game->graph); @@ -142,75 +133,78 @@ static void aWeatherRain_set(GAME* game){ gSPDisplayList(NEXT_POLY_XLU_DISP, ef_ame02_setmode); - CLOSE_DISP(game->graph); } - -static void aWeatherRain_move(aWeather_Priv* priv, GAME* game){ +static void aWeatherRain_move(aWeather_Priv* priv, GAME* game) { WEATHER_ACTOR* weather; s16 timer = (1000 - priv->timer); - if(priv->work[0] == 0){ + if (priv->work[0] == 0) { aWeatherRain_MoveRain(priv); - if((timer >= 10) && (Common_Get(clip.weather_clip) != NULL)){ - weather = Common_Get(clip.weather_clip)->actor; - if(weather != NULL){ - (Common_Get(clip.weather_clip)->remove_priv(&weather->actor_class, priv->id)); + if ((timer >= 10) && (Common_Get(clip.weather_clip) != NULL)) { + weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; + if (weather != NULL) { + (Common_Get(clip.weather_clip)->remove_priv(&weather->actor_class, priv->id)); aWeatherRain_MakePicha(&weather->actor_class, game, priv->pos); } } } } -void aWeatherRain_draw(aWeather_Priv* priv, GAME* game){ +void aWeatherRain_draw(aWeather_Priv* priv, GAME* game) { static f32 rain_scale[] = { - 0.000299999985145f, 0.035f, 0.01f, + 0.000299999985145f, + 0.035f, + 0.01f, }; static f32 picha_scale[] = { - 0.0033f,0.0033f,0.0033f, + 0.0033f, + 0.0033f, + 0.0033f, }; GAME_PLAY* play = (GAME_PLAY*)game; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; - s16 disp; + s16 disp; xyz_t pos; s16 angle; GRAPH* graph; Mtx* work; - angle = Common_Get(clip.weather_clip)->actor->current_yAngle; - disp = 8 - priv->timer; + angle = weather->current_yAngle; + disp = 8 - priv->timer; pos = priv->pos; - if(priv->work[0] == 1){ + if (priv->work[0] == 1) { graph = play->game.graph; disp = disp >> 1; - Matrix_translate(pos.x,pos.y,pos.z, FALSE); + Matrix_translate(pos.x, pos.y, pos.z, FALSE); Matrix_mult(&play->billboard_matrix, 1); Matrix_scale(picha_scale[0], picha_scale[1], picha_scale[2], TRUE); - OPEN_DISP(graph); + OPEN_DISP(graph); - gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(play->game.graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(play->game.graph), + G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(NEXT_POLY_XLU_DISP, aWeather_rain_picha_disp[(disp)]); - + CLOSE_DISP(graph); - } - else if(priv->work[0] == 0){ + } else if (priv->work[0] == 0) { work = GRAPH_ALLOC_TYPE(game->graph, Mtx, 1); - - OPEN_DISP( play->game.graph); - - suMtxMakeSRT(work, rain_scale[0], rain_scale[1], rain_scale[2], 0, angle, 0, pos.x, pos.y, pos.z); + + OPEN_DISP(play->game.graph); + + suMtxMakeSRT(work, rain_scale[0], rain_scale[1], rain_scale[2], 0, angle, 0, pos.x, pos.y, pos.z); gSPMatrix(NEXT_POLY_XLU_DISP, work, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); gSPDisplayList(NEXT_POLY_XLU_DISP, ef_ame02_04_modelT); - - CLOSE_DISP( play->game.graph); + + CLOSE_DISP(play->game.graph); } } diff --git a/src/ac_weather_sakura.c b/src/ac_weather_sakura.c index 3e6fa0c6..6b85345d 100644 --- a/src/ac_weather_sakura.c +++ b/src/ac_weather_sakura.c @@ -20,50 +20,46 @@ static void aWeatherSakura_set(GAME*); static void aWeatherSakura_draw(aWeather_Priv*, GAME*); aWeather_Profile_c iam_weather_sakura = { - aWeatherSakura_make, - aWeatherSakura_ct, - aWeatherSakura_move, - aWeatherSakura_set, - aWeatherSakura_draw, + aWeatherSakura_make, aWeatherSakura_ct, aWeatherSakura_move, aWeatherSakura_set, aWeatherSakura_draw, }; -static int aWeatherSakura_DecideMakeSakuraCount(ACTOR* actor, GAME* game){ +static int aWeatherSakura_DecideMakeSakuraCount(ACTOR* actor, GAME* game) { WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; - if(weather->current_level == 1){ + if (weather->current_level == 1) { return (game->frame_counter & 7) == 0; } - return (game->frame_counter & 3) == 0; + return (game->frame_counter & 3) == 0; } - -static void aWeatherSakura_make(ACTOR* actor, GAME* game){ + +static void aWeatherSakura_make(ACTOR* actor, GAME* game) { WEATHER_ACTOR* weather = (WEATHER_ACTOR*)actor; GAME_PLAY* play = (GAME_PLAY*)game; - aWeather_Priv* priv; - f32 x,z; + aWeather_Priv* priv; + f32 x, z; xyz_t pos = weather->pos; f32 y = 230.0f + pos.y; - int count = Common_Get(clip.weather_clip)->get_priv_num(actor); - xyz_t base = {0.0f, 0.0f, 0.0f}; + int count = Common_Get(clip.weather_clip)->get_priv_num(actor); + xyz_t base = { 0.0f, 0.0f, 0.0f }; xyz_t mod_pos; - if(aWeatherSakura_DecideMakeSakuraCount(actor, game) != 0){ + if (aWeatherSakura_DecideMakeSakuraCount(actor, game) != 0) { base.y = -0.8f + (RANDOM_F(-0.0999999642372f)); - if(count != -1){ + if (count != -1) { x = -100.0f + (RANDOM_F(200.0f)); z = -200.0f + (RANDOM_F(380.0f)); - + mod_pos = pos; mod_pos.x += x; mod_pos.z += z; mod_pos.y = y; - + priv = Common_Get(clip.weather_clip)->get_priv(3, 280, &mod_pos, &base, actor, count); - if(priv != NULL){ + if (priv != NULL) { aWeatherSakura_ct(priv, game); - priv->work[3]= 0; + priv->work[3] = 0; priv->work[4] = 156.5f + (RANDOM_F(260.5)); priv->currentY = y; } @@ -71,36 +67,34 @@ static void aWeatherSakura_make(ACTOR* actor, GAME* game){ } } - -static void aWeatherSakura_ct(aWeather_Priv* priv, GAME*){ +static void aWeatherSakura_ct(aWeather_Priv* priv, GAME*) { priv->work[0] = RANDOM_F(65535.0f); priv->work[1] = RANDOM_F(65535.0f); priv->work[2] = RANDOM_F(65535.0f); } - -static int aWeatherSakura_CheckSakuraBorder(aWeather_Priv* priv){ - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; +static int aWeatherSakura_CheckSakuraBorder(aWeather_Priv* priv) { + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; int ret = 0; f32 sakuraTemp; xyz_t pos; - - if(weather != NULL){ - pos = weather->pos; - sakuraTemp =priv->pos.x; - if(sakuraTemp < (-100.0f + pos.x)){ + if (weather != NULL) { + pos = weather->pos; + sakuraTemp = priv->pos.x; + + if (sakuraTemp < (-100.0f + pos.x)) { ret |= 2; } - if(sakuraTemp > (100.0f + pos.x)){ + if (sakuraTemp > (100.0f + pos.x)) { ret |= 8; } - sakuraTemp =priv->pos.z; + sakuraTemp = priv->pos.z; - if(sakuraTemp > (180.0f + pos.z)){ + if (sakuraTemp > (180.0f + pos.z)) { ret |= 4; } - if(sakuraTemp < (-200.0f + pos.z)){ + if (sakuraTemp < (-200.0f + pos.z)) { ret |= 1; } } @@ -108,59 +102,59 @@ static int aWeatherSakura_CheckSakuraBorder(aWeather_Priv* priv){ return ret; } -static void aWeatherSakura_CheckSakuraScroll(aWeather_Priv* priv){ +static void aWeatherSakura_CheckSakuraScroll(aWeather_Priv* priv) { int border = aWeatherSakura_CheckSakuraBorder(priv); - if(border != 0){ - if((border >> 1) & 1){ + if (border != 0) { + if ((border >> 1) & 1) { priv->pos.x += 200.0f; } - if((border >> 3) & 1){ + if ((border >> 3) & 1) { priv->pos.x -= 200.0f; } - if((border >> 2) & 1){ + if ((border >> 2) & 1) { priv->pos.z -= 380.0f; } - if(border & 1){ + if (border & 1) { priv->pos.z += 380.0f; } } - if(Common_Get(clip.weather_clip) != NULL){ + if (Common_Get(clip.weather_clip) != NULL) { f32 y; - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; - if(weather != NULL){ + if (weather != NULL) { y = 230.0f + weather->pos.y; - if(priv->pos.y < + weather->pos.y){ + if (priv->pos.y < +weather->pos.y) { priv->pos.y = (y + (priv->pos.y - priv->currentY)); - priv->currentY = y; + priv->currentY = y; } } } } -static void aWeatherSakura_SetWind2Sakura(aWeather_Priv* priv){ +static void aWeatherSakura_SetWind2Sakura(aWeather_Priv* priv) { priv->pos.x += 0.45f; } -static void aWeatherSakura_move(aWeather_Priv* priv, GAME* game){ - GAME_PLAY* play = (GAME_PLAY*) game; +static void aWeatherSakura_move(aWeather_Priv* priv, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; priv->pos.x += priv->speed.x; priv->pos.y += priv->speed.y; priv->pos.z += priv->speed.z; - + priv->work[3] += priv->work[4]; aWeatherSakura_SetWind2Sakura(priv); aWeatherSakura_CheckSakuraScroll(priv); priv->work[0] += 0x200; priv->work[1] += 0x8DC; - priv->work[2] += 0x474; + priv->work[2] += 0x474; } -static void aWeatherSakura_set(GAME* game){ +static void aWeatherSakura_set(GAME* game) { _texture_z_light_fog_prim_xlu(game->graph); @@ -168,41 +162,39 @@ static void aWeatherSakura_set(GAME* game){ gSPDisplayList(NEXT_POLY_XLU_DISP, ef_hanabira01_00_setmode); - CLOSE_DISP(game->graph); } -void aWeatherSakura_draw(aWeather_Priv* priv, GAME* game){ - GAME_PLAY* play = (GAME_PLAY*) game; +void aWeatherSakura_draw(aWeather_Priv* priv, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + xyz_t base = { 0.05f, 0.05f, 0.05f }; - xyz_t base = {0.05f, 0.05f, 0.05f}; - Mtx* work; f32 scale; f32 min; xyz_t pos; - xyz_t screen_pos; - + xyz_t screen_pos; pos.x = priv->pos.x + (6.0f * sin_s(priv->work[3])); pos.z = priv->pos.z + (6.0f * cos_s(priv->work[3])); - pos.y = priv->pos.y; + pos.y = priv->pos.y; Game_play_Projection_Trans(play, &pos, &screen_pos); - if(( screen_pos.x >= 0.0f) && (screen_pos.x < SCREEN_WIDTH_F) && ( screen_pos.y >= 0.0f) && (screen_pos.y < SCREEN_HEIGHT_F)){ - + if ((screen_pos.x >= 0.0f) && (screen_pos.x < SCREEN_WIDTH_F) && (screen_pos.y >= 0.0f) && + (screen_pos.y < SCREEN_HEIGHT_F)) { + work = GRAPH_ALLOC_TYPE(game->graph, Mtx, 1); - OPEN_DISP(game->graph); - + OPEN_DISP(game->graph); + suMtxMakeSRT(work, base.x, base.y, base.z, priv->work[2], priv->work[1], priv->work[2], pos.x, pos.y, pos.z); gSPMatrix(NEXT_POLY_XLU_DISP, work, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - gSPDisplayList(NEXT_POLY_XLU_DISP, ef_hanabira01_00_modelT); - - CLOSE_DISP( game->graph); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_hanabira01_00_modelT); + + CLOSE_DISP(game->graph); } } diff --git a/src/ac_weather_snow.c b/src/ac_weather_snow.c index f59d0d88..35952c72 100644 --- a/src/ac_weather_snow.c +++ b/src/ac_weather_snow.c @@ -72,7 +72,7 @@ static void aWeatherSnow_ct(aWeather_Priv*, GAME*) { } static int aWeatherSnow_CheckSnowBorder(aWeather_Priv* priv, GAME_PLAY* play) { - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; int ret = 0; f32 wtemp, ptemp; if (weather != NULL) { @@ -120,7 +120,7 @@ static void aWeatherSnow_CheckSnowScroll(aWeather_Priv* priv, GAME_PLAY* play) { if (Common_Get(clip.weather_clip) != NULL) { f32 y; - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; if (weather != NULL) { y = 230.0f + weather->pos.y; @@ -135,7 +135,7 @@ static void aWeatherSnow_CheckSnowScroll(aWeather_Priv* priv, GAME_PLAY* play) { static void aWeatherSnow_SetWind2Snow(aWeather_Priv* priv) { if (Common_Get(clip.weather_clip) != NULL) { - WEATHER_ACTOR* weather = Common_Get(clip.weather_clip)->actor; + WEATHER_ACTOR* weather = (WEATHER_ACTOR*)Common_Get(clip.weather_clip)->actor; if (weather != NULL) { priv->pos.x += weather->wind_info.x; priv->pos.y += weather->wind_info.y; diff --git a/src/audio.c b/src/audio.c index 3540a8ce..615f901c 100644 --- a/src/audio.c +++ b/src/audio.c @@ -60,7 +60,7 @@ extern void sAdo_SysTrgStart(u16 id) { Na_SysTrgStart(id); } -extern void sAdo_PlyWalkSe(int walk, const xyz_t* pos) { +extern void sAdo_PlyWalkSe(u16 walk, const xyz_t* pos) { f32 fcalc; u16 scalc; @@ -69,7 +69,7 @@ extern void sAdo_PlyWalkSe(int walk, const xyz_t* pos) { Na_PlyWalkSe(walk, scalc, fcalc); } -extern void sAdo_PlyWalkSeRoom(int walk, const xyz_t* pos) { +extern void sAdo_PlyWalkSeRoom(u8 walk, const xyz_t* pos) { f32 fcalc; u16 scalc; @@ -228,7 +228,7 @@ extern void sAdo_SetRhythmInfo(TempoBeat_c* rhythm) { Na_SetRhythmInfo(rhythm); } -extern int sAdo_InstCountGet() { +extern s8 sAdo_InstCountGet() { return Na_InstCountGet(); } @@ -297,8 +297,8 @@ extern void sAdos_KishaStatusLevel(f32 speed, u32 ongenNum1, u16 angle1, f32 dis Na_KishaStatusLevel(speed, ongenNum1, angle1, distance1, ongenNum2, angle2, distance2); } -extern void sAdos_GetRadioCounter(void* p) { - Na_GetRadioCounter(p); +extern int sAdos_GetRadioCounter(Radio_c* radio) { + return Na_GetRadioCounter(radio); } extern void sAdos_GetKappaCounter(void* p) { @@ -306,9 +306,8 @@ extern void sAdos_GetKappaCounter(void* p) { Na_GetKappaCounter(p); } -extern void sAdos_GetStaffRollInfo(void* p) { - - Na_GetStaffRollInfo(p); +extern void sAdos_GetStaffRollInfo(StaffRollInfo_c* info) { + Na_GetStaffRollInfo(info); } extern void sAdos_TTKK_ARM(u8 mode) { @@ -401,10 +400,10 @@ u16 sAdo_Get_WalkLabel(int type) { return ret; } -int sAdo_Get_KokeruLabel(int type) { +u16 sAdo_Get_KokeruLabel(int type) { u16 label = sAdo_Get_WalkLabel(type); - int ret; + u16 ret; switch (label) { case 0x4201: @@ -471,7 +470,7 @@ extern int sAdo_GameframeEnd_Check() { return S_ongenpos_refuse_fg; } -extern int sAdo_GetSoundFrameCounter() { +extern u32 sAdo_GetSoundFrameCounter() { return Na_GetSoundFrameCounter(); } diff --git a/src/bg_item_clip.c_inc b/src/bg_item_clip.c_inc index c8c98e7d..0c9525f6 100644 --- a/src/bg_item_clip.c_inc +++ b/src/bg_item_clip.c_inc @@ -62,7 +62,7 @@ static void bit_cmn_single_draw(GAME* game, mActor_name_t fg_no, xyz_t* pos, f32 bIT_DRAW_AF_PROC draw_af, rgba_t* col); static int bIT_actor_player_drop_entry(GAME* game, mActor_name_t fg_item, int ut_x, int ut_z, s16 layer); static int BIT_actor_tree_cutcount_check(GAME* game, int ut_x, int ut_z); -static void bIT_actor_dig_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames); +static int bIT_actor_dig_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames); static void bIT_actor_bury_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames); static void bIT_actor_fly_entry(mActor_name_t fg_item, xyz_t* pos, s16 angle_y); static int bIT_drop_entry_v1(mActor_name_t fg_item, xyz_t* pos, xyz_t* target_pos); diff --git a/src/bg_item_common.c_inc b/src/bg_item_common.c_inc index c44d58c3..5902491d 100644 --- a/src/bg_item_common.c_inc +++ b/src/bg_item_common.c_inc @@ -624,7 +624,7 @@ static int bIT_common_bury_after(mActor_name_t fg_bury_item, mActor_name_t fg_ho int hole_no = mCoBG_GetHoleNumber(*bury_pos); if (hole_no != -1) { - *buried_item_p = BURIED_PITFALL_START + hole_no; + *buried_item_p = BURIED_PITFALL_HOLE_START + hole_no; } else { *buried_item_p = EMPTY_NO; } @@ -1115,7 +1115,7 @@ static void bg_item_tree_fruit_drop(mActor_name_t fg_item, int ut_x, int ut_z, x } } -static void bIT_actor_dig_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames) { +static int bIT_actor_dig_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames, u16 wait_frames) { int ut_x; int ut_z; @@ -1124,7 +1124,7 @@ static void bIT_actor_dig_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u mFI_UtNum2DepositOFF(ut_x, ut_z); } - bIT_actor_hole_effect_entry(bIT_CLIP->bg_item_common_p->hole, fg_item, pos, frames, wait_frames, 1, 0); + return bIT_actor_hole_effect_entry(bIT_CLIP->bg_item_common_p->hole, fg_item, pos, frames, wait_frames, 1, 0); } static void bIT_actor_bury_hole_effect_entry(mActor_name_t fg_item, xyz_t* pos, u16 frames) { @@ -2907,7 +2907,7 @@ static int bIT_actor_pit_fall(mActor_name_t pit_fg_item, int ut_x, int ut_z, mAc mFI_UtNum2CenterWpos(&pos, ut_x, ut_z); pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(pos, -1.0f); - pitfall_fg_no = pit_fg_item - BURIED_PITFALL_START; + pitfall_fg_no = pit_fg_item - BURIED_PITFALL_HOLE_START; mFI_SetFG_common(pitfall_fg_no + 0x43, pos, FALSE); hole_fg_no = pitfall_fg_no + HOLE_START; bIT_actor_pit_entry(common->pit, 1, hole_fg_no, &pos, fg_item_in_pit); diff --git a/src/c_keyframe.c b/src/c_keyframe.c index a65391f5..e9b14c18 100644 --- a/src/c_keyframe.c +++ b/src/c_keyframe.c @@ -74,7 +74,7 @@ static int cKF_FrameControl_passCheck(cKF_FrameControl_c* fc, f32 current, f32* *out = 0.0f; cur = fc->current_frame; if (cur == current) { - return 0; + return FALSE; } speed = (fc->start_frame < fc->end_frame) ? fc->speed : -fc->speed; @@ -83,24 +83,24 @@ static int cKF_FrameControl_passCheck(cKF_FrameControl_c* fc, f32 current, f32* if ((speed >= 0.0f && cur < current && cur + speed >= current) || (speed < 0.0f && cur > current && cur + speed <= current)) { *out = cur + speed - current; // Calculate overshoot - return 1; + return TRUE; } - return 0; + return FALSE; } extern int cKF_FrameControl_passCheck_now(cKF_FrameControl_c* fc, f32 current) { f32 cur = fc->current_frame; f32 speed; - int ret = 0; + int ret = FALSE; if (cur != current) { speed = (fc->start_frame < fc->end_frame) ? fc->speed : -fc->speed; if ((speed >= 0.0f && cur >= current && cur - speed < current) || (speed < 0.0f && cur <= current && cur - speed > current)) { - ret = 1; + ret = TRUE; } } else { - ret = 1; + ret = TRUE; } return ret; } @@ -617,7 +617,7 @@ extern void cKF_Si3_draw_SV_R_child(GAME* game, cKF_SkeletonInfo_R_c* keyframe, joint1 = cur_joint[1]; - if ((joint_num[0] == 0) && (keyframe->animation_enabled & cKF_ANIMATION_ROT_X)) { + if ((joint_num[0] == 0) && (keyframe->animation_enabled & cKF_ANIMATION_ROT_Y)) { joint1.x = keyframe->base_model_rotation.x; joint1.y = keyframe->updated_base_model_rotation.y; joint1.z = keyframe->updated_base_model_rotation.z; @@ -743,13 +743,13 @@ extern void cKF_SkeletonInfo_R_combine_work_set(cKF_SkeletonInfo_R_combine_work_ } extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_SkeletonInfo_R_combine_work_c* combine, - s8* cwork_num) { - int i = 0; + s8* part_table) { + int i; - for (i; i < 3; i++) { - switch (*cwork_num) { + for (i = 0; i < 3; i++) { + /* Determine which animation we should pull from for the joint */ + switch (*part_table) { case 0: - if (*combine[0].anm_check_bit_tbl & *flag) { (**joint) = cKF_KeyCalc(combine[0].anm_data_src_idx, combine[0].anm_key_num[combine[0].anm_key_num_idx], @@ -760,7 +760,6 @@ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_S break; case 1: - if (*combine[1].anm_check_bit_tbl & *flag) { (**joint) = cKF_KeyCalc(combine[1].anm_data_src_idx, combine[1].anm_key_num[combine[1].anm_key_num_idx], @@ -771,7 +770,6 @@ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_S break; case 2: - if (*combine[2].anm_check_bit_tbl & *flag) { (**joint) = cKF_KeyCalc(combine[2].anm_data_src_idx, combine[2].anm_key_num[combine[2].anm_key_num_idx], @@ -789,12 +787,14 @@ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_S } else { combine[0].anm_const_val_tbl_idx++; } + if (*combine[1].anm_check_bit_tbl & *flag) { combine[1].anm_data_src_idx += combine[1].anm_key_num[combine[1].anm_key_num_idx]; combine[1].anm_key_num_idx++; } else { combine[1].anm_const_val_tbl_idx++; } + if (*combine[2].anm_check_bit_tbl & *flag) { combine[2].anm_data_src_idx += combine[2].anm_key_num[combine[2].anm_key_num_idx]; combine[2].anm_key_num_idx++; @@ -808,17 +808,17 @@ extern void cKF_SkeletonInfo_R_combine_translation(s16** joint, int* flag, cKF_S } extern void cKF_SkeletonInfo_R_combine_rotation(s16** joint, int* flag, cKF_SkeletonInfo_R_combine_work_c* combine, - s8* cwork_num) { - int i = 0; + s8* part_table) { + int i; int j; - s16* temp; f32 calc_joint; - for (i; i < combine->keyframe->skeleton->num_joints; i++) { + for (i = 0; i < combine->keyframe->skeleton->num_joints; i++) { *flag = 4; for (j = 0; j < 3; j++) { - switch (cwork_num[i + 1]) { + /* Determine which animation we should pull from for the joint */ + switch (part_table[i + 1]) { case 0: if (*flag & combine[0].anm_check_bit_tbl[i]) { (**joint) = @@ -868,54 +868,54 @@ extern void cKF_SkeletonInfo_R_combine_rotation(s16** joint, int* flag, cKF_Skel combine[2].anm_const_val_tbl_idx++; } - temp = *joint; - calc_joint = 0.1f * (*temp); - **joint = (s16)(int)((calc_joint - ((f32)(int)(calc_joint * 0.0027777778f) * 360.0f)) * 182.04445f); + /* + * At this point, rotation values in joint are encoded in [degree.x] format. + * This gives one decimal of rotational precision. We then convert from degrees to + * s16 binangle. + */ + /* s16 degree -> float degree with 1 decimal place precision */ + calc_joint = 0.1f * (**joint); + /* degree (unbound) -> [0.0f, 360.0f) -> binangle [-32768, 32767] */ + **joint = (s16)DEG2SHORT_ANGLE2(MOD_F(calc_joint, 360.0f)); *flag = (u32)*flag >> 1; *joint += 1; } } } -extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_SkeletonInfo_R_c* info2, s8* flag) { +extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_SkeletonInfo_R_c* info2, s8* part_table) { int combinet; s16* joint; - - cKF_SkeletonInfo_R_combine_work_c combine1; - cKF_SkeletonInfo_R_combine_work_c combine2; - cKF_SkeletonInfo_R_combine_work_c combine3; - + cKF_SkeletonInfo_R_combine_work_c combine[3]; int i; - int j; - s_xyz* joint2; s_xyz* applyjoint; - if ((info1 == NULL) || (info2 == NULL) || (flag == NULL)) { - return 0; + if ((info1 == NULL) || (info2 == NULL) || (part_table == NULL)) { + return cKF_STATE_NONE; } joint = (F32_IS_ZERO(info1->morph_counter)) ? &info1->current_joint->x : &info1->target_joint->x; if (info1 != NULL) { - cKF_SkeletonInfo_R_combine_work_set(&combine3, info1); + cKF_SkeletonInfo_R_combine_work_set(&combine[0], info1); } if (info2 != NULL) { - cKF_SkeletonInfo_R_combine_work_set(&combine2, info2); - cKF_SkeletonInfo_R_combine_work_set(&combine1, info2); + cKF_SkeletonInfo_R_combine_work_set(&combine[1], info2); + cKF_SkeletonInfo_R_combine_work_set(&combine[2], info2); } combinet = 0x20; - cKF_SkeletonInfo_R_combine_translation(&joint, &combinet, &combine3, flag); - cKF_SkeletonInfo_R_combine_rotation(&joint, &combinet, &combine3, flag); + cKF_SkeletonInfo_R_combine_translation(&joint, &combinet, &combine[0], part_table); + cKF_SkeletonInfo_R_combine_rotation(&joint, &combinet, &combine[0], part_table); if (info1->rotation_diff_table != NULL) { applyjoint = (F32_IS_ZERO(info1->morph_counter)) ? info1->current_joint : info1->target_joint; applyjoint += 1; - for (i = 0, j = 0; i < info1->skeleton->num_joints; i++, j++) { - applyjoint->x += info1->rotation_diff_table[j].x; - applyjoint->y += info1->rotation_diff_table[j].y; - applyjoint->z += info1->rotation_diff_table[j].z; + for (i = 0; i < info1->skeleton->num_joints; i++) { + applyjoint->x += info1->rotation_diff_table[i].x; + applyjoint->y += info1->rotation_diff_table[i].y; + applyjoint->z += info1->rotation_diff_table[i].z; applyjoint++; } @@ -923,95 +923,89 @@ extern int cKF_SkeletonInfo_R_combine_play(cKF_SkeletonInfo_R_c* info1, cKF_Skel if (F32_IS_ZERO(info1->morph_counter)) { cKF_FrameControl_play(&info2->frame_control); return cKF_FrameControl_play(&info1->frame_control); - } - if (info1->morph_counter > 0.0f) { + } else if (info1->morph_counter > 0.0f) { cKF_SkeletonInfo_R_morphJoint(info1); info1->morph_counter -= 0.5f; if (info1->morph_counter <= 0.0f) { info1->morph_counter = 0.0f; } - return 0; + return cKF_STATE_NONE; + } else { + cKF_SkeletonInfo_R_morphJoint(info1); + info1->morph_counter += 0.5f; + if (info1->morph_counter >= 0.0f) { + info1->morph_counter = 0.0f; + } + cKF_FrameControl_play(&info2->frame_control); + return cKF_FrameControl_play(&info1->frame_control); } - cKF_SkeletonInfo_R_morphJoint(info1); - info1->morph_counter += 0.5f; - if (info1->morph_counter >= 0.0f) { - info1->morph_counter = 0.0f; - } - cKF_FrameControl_play(&info2->frame_control); - return cKF_FrameControl_play(&info1->frame_control); } -extern void cKF_SkeletonInfo_R_T_combine_play(int* arg1, int* arg2, int* arg3, cKF_SkeletonInfo_R_c* info1, - cKF_SkeletonInfo_R_c* info2, cKF_SkeletonInfo_R_c* info3, s8* flag) { +extern void cKF_SkeletonInfo_R_T_combine_play(int* state1, int* state2, int* state3, cKF_SkeletonInfo_R_c* info1, + cKF_SkeletonInfo_R_c* info2, cKF_SkeletonInfo_R_c* info3, + s8* part_table) { int combinet; s16* joint; - - cKF_SkeletonInfo_R_combine_work_c combine1; - cKF_SkeletonInfo_R_combine_work_c combine2; - cKF_SkeletonInfo_R_combine_work_c combine3; + cKF_SkeletonInfo_R_combine_work_c combine[3]; int i; - int j; - s_xyz* joint2; s_xyz* applyjoint; - if ((info1 == NULL) || (info2 == NULL) || (info3 == NULL) || (flag == NULL)) { + if ((info1 == NULL) || (info2 == NULL) || (info3 == NULL) || (part_table == NULL)) { return; } joint = (F32_IS_ZERO(info1->morph_counter)) ? &info1->current_joint->x : &info1->target_joint->x; if (info1 != NULL) { - cKF_SkeletonInfo_R_combine_work_set(&combine3, info1); + cKF_SkeletonInfo_R_combine_work_set(&combine[0], info1); } if (info2 != NULL) { - cKF_SkeletonInfo_R_combine_work_set(&combine2, info2); + cKF_SkeletonInfo_R_combine_work_set(&combine[1], info2); } if (info3 != NULL) { - cKF_SkeletonInfo_R_combine_work_set(&combine1, info3); + cKF_SkeletonInfo_R_combine_work_set(&combine[2], info3); } combinet = 0x20; - cKF_SkeletonInfo_R_combine_translation(&joint, &combinet, &combine3, flag); - cKF_SkeletonInfo_R_combine_rotation(&joint, &combinet, &combine3, flag); + cKF_SkeletonInfo_R_combine_translation(&joint, &combinet, &combine[0], part_table); + cKF_SkeletonInfo_R_combine_rotation(&joint, &combinet, &combine[0], part_table); if (info1->rotation_diff_table != NULL) { applyjoint = (F32_IS_ZERO(info1->morph_counter)) ? info1->current_joint : info1->target_joint; applyjoint += 1; - for (i = 0, j = 0; i < info1->skeleton->num_joints; i++, j++) { - applyjoint->x += info1->rotation_diff_table[j].x; - applyjoint->y += info1->rotation_diff_table[j].y; - applyjoint->z += info1->rotation_diff_table[j].z; + for (i = 0; i < info1->skeleton->num_joints; i++) { + applyjoint->x += info1->rotation_diff_table[i].x; + applyjoint->y += info1->rotation_diff_table[i].y; + applyjoint->z += info1->rotation_diff_table[i].z; applyjoint++; } } if (F32_IS_ZERO(info1->morph_counter)) { - *arg1 = cKF_FrameControl_play(&info1->frame_control); - *arg2 = cKF_FrameControl_play(&info2->frame_control); - *arg3 = cKF_FrameControl_play(&info3->frame_control); - return; - } - if (info1->morph_counter > 0.0f) { + *state1 = cKF_FrameControl_play(&info1->frame_control); + *state2 = cKF_FrameControl_play(&info2->frame_control); + *state3 = cKF_FrameControl_play(&info3->frame_control); + } else if (info1->morph_counter > 0.0f) { cKF_SkeletonInfo_R_morphJoint(info1); info1->morph_counter -= 0.5f; if (info1->morph_counter <= 0.0f) { info1->morph_counter = 0.0f; } - *arg1 = 0; - *arg2 = 0; - *arg3 = 0; - return; + *state1 = cKF_STATE_NONE; + *state2 = cKF_STATE_NONE; + *state3 = cKF_STATE_NONE; + } else { + cKF_SkeletonInfo_R_morphJoint(info1); + info1->morph_counter += 0.5f; + if (info1->morph_counter >= 0.0f) { + info1->morph_counter = 0.0f; + } + *state1 = cKF_FrameControl_play(&info1->frame_control); + *state2 = cKF_FrameControl_play(&info2->frame_control); + *state3 = cKF_FrameControl_play(&info3->frame_control); } - cKF_SkeletonInfo_R_morphJoint(info1); - info1->morph_counter += 0.5f; - if (info1->morph_counter >= 0.0f) { - info1->morph_counter = 0.0f; - } - *arg1 = cKF_FrameControl_play(&info1->frame_control); - *arg2 = cKF_FrameControl_play(&info2->frame_control); - *arg3 = cKF_FrameControl_play(&info3->frame_control); } extern void cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(cKF_SkeletonInfo_R_c* keyframe, f32 transx, f32 transy, @@ -1030,14 +1024,10 @@ extern void cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(cKF_SkeletonInfo_R_c keyframe->updated_base_model_rotation.z = anglez; } -extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(f32 counter, xyz_t* basepos, xyz_t* correctpos, s16 ybase, - s16 yidle, cKF_SkeletonInfo_R_c* keyframe, int an_flag) { - int sub; - +extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(xyz_t* basepos, xyz_t* correctpos, s16 ybase, s16 yidle, + f32 counter, cKF_SkeletonInfo_R_c* keyframe, int an_flag) { keyframe->animation_enabled = an_flag; - keyframe->fixed_counter = (counter >= 0.0f) ? counter : -counter; - keyframe->base_world_position = ZeroVec; keyframe->model_world_position_correction = ZeroVec; @@ -1059,12 +1049,13 @@ extern void cKF_SkeletonInfo_R_AnimationMove_ct_base(f32 counter, xyz_t* basepos keyframe->base_angle_y = yidle; keyframe->model_angle_correction = 0; - if (an_flag & cKF_ANIMATION_ROT_X) { - sub = ybase - yidle; - if (sub > 0x8000) { - sub = -(0x10000 - sub); - } else if (sub < -0x8000) { - sub += 0x10000; + if (an_flag & cKF_ANIMATION_ROT_Y) { + int sub = ybase - yidle; + + if (sub > DEG2SHORT_ANGLE2(180.0f)) { + sub = -(DEG2SHORT_ANGLE2(360.0f) - sub); + } else if (sub < DEG2SHORT_ANGLE2(-180.0f)) { + sub += DEG2SHORT_ANGLE2(360.0f); } keyframe->base_angle_y = yidle; keyframe->model_angle_correction = sub; @@ -1082,7 +1073,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_dt(cKF_SkeletonInfo_R_c* keyframe) if (an_flag & cKF_ANIMATION_TRANS_Y) { cur_joint->y = keyframe->base_model_translation.y; } - if (an_flag & cKF_ANIMATION_ROT_X) { + if (an_flag & cKF_ANIMATION_ROT_Y) { cur_joint = keyframe->current_joint; cur_joint[1].x = keyframe->base_model_rotation.x; cur_joint[1].y = keyframe->base_model_rotation.y; @@ -1091,7 +1082,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_dt(cKF_SkeletonInfo_R_c* keyframe) keyframe->animation_enabled = 0; } -extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz_t* move, s16 yidle, +extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s16* sbase, xyz_t* scale, s16 yidle, cKF_SkeletonInfo_R_c* keyframe) { f32 fc = keyframe->fixed_counter; f32 count = 1.0f + fc; @@ -1117,7 +1108,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz correct_y = 0.0f; } - if (an_flag & cKF_ANIMATION_ROT_X) { + if (an_flag & cKF_ANIMATION_ROT_Y) { mangle_y = keyframe->model_angle_correction; if (count > 0.5f) { keyframe->model_angle_correction -= (s16)(int)(mangle_y * correct_y); @@ -1153,7 +1144,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz keyframe->model_world_position_correction.z = 0.0f; } - if ((sbase != NULL) && (an_flag & cKF_ANIMATION_ROT_X)) { + if ((sbase != NULL) && (an_flag & cKF_ANIMATION_ROT_Y)) { angley = keyframe->base_angle_y; angle_c = keyframe->model_angle_correction; base_x = keyframe->base_model_rotation.x; @@ -1162,14 +1153,14 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz Matrix_rotateXYZ(keyframe->current_joint[1].x, keyframe->current_joint[1].y, keyframe->current_joint[1].z, 0); Matrix_to_rotate2_new(get_Matrix_now(), update_base, 0); Matrix_pull(); - sbase->x = angley + angle_c + (update_base->x - base_x); + *sbase = angley + angle_c + (update_base->x - base_x); } if (base != NULL) { cur_joint = keyframe->current_joint; sub = 0; if (sbase != NULL) { - sub = sbase->x - yidle; + sub = *sbase - yidle; } if (an_flag & cKF_ANIMATION_TRANS_XZ) { f32 move_x, move_z; @@ -1184,9 +1175,9 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz cos = cos_s(sub); temp1 = (trans_x * cos) + (trans_z * sin); - move_x = move->x * (cur_joint->x - temp1); + move_x = scale->x * (cur_joint->x - temp1); temp1 = (-trans_x * sin) + (trans_z * cos); - move_z = move->z * (cur_joint->z - temp1); + move_z = scale->z * (cur_joint->z - temp1); sin = sin_s(yidle); cos = cos_s(yidle); @@ -1199,7 +1190,7 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz base->z = temp2 + (keyframe->base_world_position.z + base_z); } if (an_flag & cKF_ANIMATION_TRANS_Y) { - base->y = move->y * (cur_joint->y - keyframe->base_model_translation.y) + + base->y = scale->y * (cur_joint->y - keyframe->base_model_translation.y) + (keyframe->base_world_position.y + keyframe->model_world_position_correction.y); } } @@ -1210,25 +1201,25 @@ extern void cKF_SkeletonInfo_R_AnimationMove_base(xyz_t* base, s_xyz* sbase, xyz keyframe->fixed_counter = count; } -extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(f32 calcx, f32 calcy, f32 calcz, xyz_t* base, - xyz_t* calcp, s16 val, xyz_t* trans, - cKF_SkeletonInfo_R_c* keyframe, int animation_flag) { +extern void cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(xyz_t* calc_pos, const xyz_t* base_pos, f32 trans_x, + f32 trans_y, f32 trans_z, s16 angle_y, const xyz_t* scale, + cKF_SkeletonInfo_R_c* keyframe, int trans_flag) { f32 sin, cos; f32 j_x, j_z; s_xyz* cur_joint = keyframe->current_joint; - if (animation_flag & cKF_ANIMATION_TRANS_XZ) { - j_x = cur_joint->x - calcx; - j_z = cur_joint->z - calcz; + if (trans_flag & cKF_ANIMATION_TRANS_XZ) { + j_x = cur_joint->x - trans_x; + j_z = cur_joint->z - trans_z; - sin = sin_s(val); - cos = cos_s(val); + sin = sin_s(angle_y); + cos = cos_s(angle_y); - base->x = calcp->x + trans->x * ((j_x * cos) + (j_z * sin)); - base->z = calcp->z + trans->z * ((-j_x * sin) + (j_z * cos)); + calc_pos->x = base_pos->x + scale->x * ((j_x * cos) + (j_z * sin)); + calc_pos->z = base_pos->z + scale->z * ((-j_x * sin) + (j_z * cos)); } - if (animation_flag & cKF_ANIMATION_TRANS_Y) { - base->y = calcp->y + trans->y * (cur_joint->y - calcy); + if (trans_flag & cKF_ANIMATION_TRANS_Y) { + calc_pos->y = base_pos->y + scale->y * (cur_joint->y - trans_y); } } diff --git a/src/data/field/bg/acre/bg_data.c b/src/data/field/bg/acre/bg_data.c new file mode 100644 index 00000000..a9fb6ecc --- /dev/null +++ b/src/data/field/bg/acre/bg_data.c @@ -0,0 +1,11615 @@ +#include "m_field_info.h" + +// clang-format off + +extern Gfx room01_model[]; +extern Gfx myr_etc_model[]; +extern Gfx tmp_model[]; +extern Gfx tmp_modelT[]; +extern Gfx tmp2_model[]; +extern Gfx tmp2_modelT[]; +extern Gfx tmpr_model[]; +extern Gfx tmpr_modelT[]; +extern EVW_ANIME_DATA tmpr_evw_anime[]; +extern Gfx tmpr2_model[]; +extern Gfx tmpr2_modelT[]; +extern EVW_ANIME_DATA tmpr2_evw_anime[]; +extern Gfx tmp3_model[]; +extern Gfx tmp3_modelT[]; +extern Gfx tmpr3_model[]; +extern Gfx tmpr3_modelT[]; +extern EVW_ANIME_DATA tmpr3_evw_anime[]; +extern Gfx tmp4_model[]; +extern Gfx tmp4_modelT[]; +extern Gfx tmpr4_model[]; +extern Gfx tmpr4_modelT[]; +extern EVW_ANIME_DATA tmpr4_evw_anime[]; +extern Gfx grd_s_c1_r1_1_model[]; +extern Gfx grd_s_c1_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c1_r1_1_evw_anime[]; +extern Gfx grd_s_c1_s_1_model[]; +extern Gfx grd_s_c1_s_1_modelT[]; +extern Gfx grd_s_c2_r1_1_model[]; +extern Gfx grd_s_c2_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c2_r1_1_evw_anime[]; +extern Gfx grd_s_c2_r2_1_model[]; +extern Gfx grd_s_c2_r2_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c2_r2_1_evw_anime[]; +extern Gfx grd_s_c5_r1_1_model[]; +extern Gfx grd_s_c5_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c5_r1_1_evw_anime[]; +extern Gfx grd_s_t_r1_1_model[]; +extern Gfx grd_s_t_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_t_r1_1_evw_anime[]; +extern Gfx grd_s_f_1_model[]; +extern Gfx grd_s_f_1_modelT[]; +extern Gfx grd_s_f_2_model[]; +extern Gfx grd_s_f_2_modelT[]; +extern Gfx grd_s_c1_1_model[]; +extern Gfx grd_s_c1_1_modelT[]; +extern Gfx grd_s_c1_r2_1_model[]; +extern Gfx grd_s_c1_r2_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c1_r2_1_evw_anime[]; +extern Gfx grd_s_c1_r3_1_model[]; +extern Gfx grd_s_c1_r3_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c1_r3_1_evw_anime[]; +extern Gfx grd_s_c2_1_model[]; +extern Gfx grd_s_c2_1_modelT[]; +extern Gfx grd_s_c3_1_model[]; +extern Gfx grd_s_c3_1_modelT[]; +extern Gfx grd_s_c3_r1_1_model[]; +extern Gfx grd_s_c3_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c3_r1_1_evw_anime[]; +extern Gfx grd_s_c4_1_model[]; +extern Gfx grd_s_c4_1_modelT[]; +extern Gfx grd_s_c4_r1_1_model[]; +extern Gfx grd_s_c4_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c4_r1_1_evw_anime[]; +extern Gfx grd_s_c4_r2_1_model[]; +extern Gfx grd_s_c4_r2_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c4_r2_1_evw_anime[]; +extern Gfx grd_s_c5_1_model[]; +extern Gfx grd_s_c5_1_modelT[]; +extern Gfx grd_s_c5_r2_1_model[]; +extern Gfx grd_s_c5_r2_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c5_r2_1_evw_anime[]; +extern Gfx grd_s_c5_r3_1_model[]; +extern Gfx grd_s_c5_r3_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c5_r3_1_evw_anime[]; +extern Gfx grd_s_c6_1_model[]; +extern Gfx grd_s_c6_1_modelT[]; +extern Gfx grd_s_c6_r1_1_model[]; +extern Gfx grd_s_c6_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c6_r1_1_evw_anime[]; +extern Gfx grd_s_c7_1_model[]; +extern Gfx grd_s_c7_1_modelT[]; +extern Gfx grd_s_r1_1_model[]; +extern Gfx grd_s_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r1_1_evw_anime[]; +extern Gfx grd_s_r2_1_model[]; +extern Gfx grd_s_r2_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r2_1_evw_anime[]; +extern Gfx grd_s_r3_1_model[]; +extern Gfx grd_s_r3_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r3_1_evw_anime[]; +extern Gfx grd_s_r4_1_model[]; +extern Gfx grd_s_r4_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r4_1_evw_anime[]; +extern Gfx grd_s_r5_1_model[]; +extern Gfx grd_s_r5_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r5_1_evw_anime[]; +extern Gfx grd_s_r6_1_model[]; +extern Gfx grd_s_r6_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r6_1_evw_anime[]; +extern Gfx grd_s_r7_1_model[]; +extern Gfx grd_s_r7_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r7_1_evw_anime[]; +extern Gfx grd_s_c3_r2_1_model[]; +extern Gfx grd_s_c3_r2_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c3_r2_1_evw_anime[]; +extern Gfx grd_s_c7_r3_1_model[]; +extern Gfx grd_s_c7_r3_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c7_r3_1_evw_anime[]; +extern Gfx grd_s_c6_r3_1_model[]; +extern Gfx grd_s_c6_r3_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c6_r3_1_evw_anime[]; +extern Gfx grd_s_r1_b_1_model[]; +extern Gfx grd_s_r1_b_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r1_b_1_evw_anime[]; +extern Gfx grd_s_r2_b_1_model[]; +extern Gfx grd_s_r2_b_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r2_b_1_evw_anime[]; +extern Gfx grd_s_r3_b_1_model[]; +extern Gfx grd_s_r3_b_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r3_b_1_evw_anime[]; +extern Gfx grd_s_r4_b_1_model[]; +extern Gfx grd_s_r4_b_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r4_b_1_evw_anime[]; +extern Gfx grd_s_r5_b_1_model[]; +extern Gfx grd_s_r5_b_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r5_b_1_evw_anime[]; +extern Gfx grd_s_r6_b_1_model[]; +extern Gfx grd_s_r6_b_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r6_b_1_evw_anime[]; +extern Gfx grd_s_r7_b_1_model[]; +extern Gfx grd_s_r7_b_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r7_b_1_evw_anime[]; +extern Gfx grd_s_t_1_model[]; +extern Gfx grd_s_t_1_modelT[]; +extern EVW_ANIME_DATA grd_s_t_1_evw_anime[]; +extern Gfx grd_s_c1_s_2_model[]; +extern Gfx grd_s_c1_s_2_modelT[]; +extern Gfx grd_s_c2_s_1_model[]; +extern Gfx grd_s_c2_s_1_modelT[]; +extern Gfx grd_s_c3_s_1_model[]; +extern Gfx grd_s_c3_s_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c3_s_1_evw_anime[]; +extern Gfx grd_s_c4_s_1_model[]; +extern Gfx grd_s_c4_s_1_modelT[]; +extern Gfx grd_s_c5_s_1_model[]; +extern Gfx grd_s_c5_s_1_modelT[]; +extern Gfx grd_s_c6_s_1_model[]; +extern Gfx grd_s_c6_s_1_modelT[]; +extern Gfx grd_s_c7_s_1_model[]; +extern Gfx grd_s_c4_r3_1_model[]; +extern Gfx grd_s_c4_r3_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c4_r3_1_evw_anime[]; +extern Gfx grd_s_c7_r1_1_model[]; +extern Gfx grd_s_c7_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_c7_r1_1_evw_anime[]; +extern Gfx grd_s_t_st1_1_model[]; +extern Gfx grd_s_t_st1_1_modelT[]; +extern Gfx grd_s_c1_2_model[]; +extern Gfx grd_s_c1_2_modelT[]; +extern Gfx grd_s_c1_3_model[]; +extern Gfx grd_s_c1_3_modelT[]; +extern Gfx grd_s_c1_4_model[]; +extern Gfx grd_s_c1_4_modelT[]; +extern Gfx grd_s_c1_5_model[]; +extern Gfx grd_s_c1_5_modelT[]; +extern Gfx grd_s_c2_2_model[]; +extern Gfx grd_s_c2_2_modelT[]; +extern Gfx grd_s_r1_2_model[]; +extern Gfx grd_s_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r1_2_evw_anime[]; +extern Gfx grd_s_r1_3_model[]; +extern Gfx grd_s_r1_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r1_3_evw_anime[]; +extern Gfx grd_s_r4_2_model[]; +extern Gfx grd_s_r4_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r4_2_evw_anime[]; +extern Gfx grd_s_r5_2_model[]; +extern Gfx grd_s_r5_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r5_2_evw_anime[]; +extern Gfx grd_s_r7_2_model[]; +extern Gfx grd_s_r7_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r7_2_evw_anime[]; +extern Gfx grd_s_r7_3_model[]; +extern Gfx grd_s_r7_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r7_3_evw_anime[]; +extern Gfx grd_s_c2_s_2_model[]; +extern Gfx grd_s_c2_s_2_modelT[]; +extern Gfx grd_s_c1_s_3_model[]; +extern Gfx grd_s_c4_s_2_model[]; +extern Gfx grd_s_c4_s_2_modelT[]; +extern Gfx grd_s_c5_s_2_model[]; +extern Gfx grd_s_c6_r1_2_model[]; +extern Gfx grd_s_c6_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c6_r1_2_evw_anime[]; +extern Gfx grd_s_c3_r1_2_model[]; +extern Gfx grd_s_c3_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c3_r1_2_evw_anime[]; +extern Gfx grd_s_c3_2_model[]; +extern Gfx grd_s_c3_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c3_2_evw_anime[]; +extern Gfx grd_s_c7_3_model[]; +extern Gfx grd_s_c7_3_modelT[]; +extern EVW_ANIME_DATA grd_s_c7_3_evw_anime[]; +extern Gfx grd_s_c1_r2_2_model[]; +extern Gfx grd_s_c1_r2_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c1_r2_2_evw_anime[]; +extern Gfx grd_s_c1_r3_2_model[]; +extern Gfx grd_s_c1_r3_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c1_r3_2_evw_anime[]; +extern Gfx grd_s_c4_2_model[]; +extern Gfx grd_s_c4_2_modelT[]; +extern Gfx grd_s_c5_2_model[]; +extern Gfx grd_s_c5_2_modelT[]; +extern Gfx grd_s_c6_2_model[]; +extern Gfx grd_s_c6_2_modelT[]; +extern Gfx grd_s_r2_2_model[]; +extern Gfx grd_s_r2_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r2_2_evw_anime[]; +extern Gfx grd_s_r3_2_model[]; +extern Gfx grd_s_r3_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r3_2_evw_anime[]; +extern Gfx grd_s_c4_r1_2_model[]; +extern Gfx grd_s_c4_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c4_r1_2_evw_anime[]; +extern Gfx grd_s_c4_r2_2_model[]; +extern Gfx grd_s_c4_r2_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c4_r2_2_evw_anime[]; +extern Gfx grd_s_c7_r1_2_model[]; +extern Gfx grd_s_c7_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c7_r1_2_evw_anime[]; +extern Gfx grd_s_c6_2_model[]; +extern Gfx grd_s_c6_2_modelT[]; +extern Gfx grd_s_c5_r2_2_model[]; +extern Gfx grd_s_c5_r2_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c5_r2_2_evw_anime[]; +extern Gfx grd_s_c4_r3_2_model[]; +extern Gfx grd_s_c4_r3_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c4_r3_2_evw_anime[]; +extern Gfx grd_s_r2_3_model[]; +extern Gfx grd_s_r2_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r2_3_evw_anime[]; +extern Gfx grd_s_r3_3_model[]; +extern Gfx grd_s_r3_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r3_3_evw_anime[]; +extern Gfx grd_s_c5_r3_2_model[]; +extern Gfx grd_s_c5_r3_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c5_r3_2_evw_anime[]; +extern Gfx grd_s_c5_3_model[]; +extern Gfx grd_s_c5_3_modelT[]; +extern Gfx grd_s_c4_3_model[]; +extern Gfx grd_s_c4_3_modelT[]; +extern Gfx grd_s_c3_3_model[]; +extern Gfx grd_s_c3_3_modelT[]; +extern Gfx grd_s_c2_3_model[]; +extern Gfx grd_s_c2_3_modelT[]; +extern EVW_ANIME_DATA grd_s_c2_3_evw_anime[]; +extern Gfx grd_s_r1_p_1_model[]; +extern Gfx grd_s_r1_p_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r1_p_1_evw_anime[]; +extern Gfx grd_s_r6_2_model[]; +extern Gfx grd_s_r6_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r6_2_evw_anime[]; +extern Gfx police_indoor_model[]; +extern Gfx police_indoor_modelT[]; +extern Gfx grd_s_c1_r1_2_model[]; +extern Gfx grd_s_c1_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c1_r1_2_evw_anime[]; +extern Gfx grd_s_c1_r1_3_model[]; +extern Gfx grd_s_c1_r1_3_modelT[]; +extern EVW_ANIME_DATA grd_s_c1_r1_3_evw_anime[]; +extern Gfx grd_s_c1_r2_3_model[]; +extern Gfx grd_s_c1_r2_3_modelT[]; +extern EVW_ANIME_DATA grd_s_c1_r2_3_evw_anime[]; +extern Gfx grd_s_c1_r3_3_model[]; +extern Gfx grd_s_c1_r3_3_modelT[]; +extern EVW_ANIME_DATA grd_s_c1_r3_3_evw_anime[]; +extern Gfx grd_s_c2_r1_2_model[]; +extern Gfx grd_s_c2_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c2_r1_2_evw_anime[]; +extern Gfx grd_s_c5_r1_2_model[]; +extern Gfx grd_s_c5_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c5_r1_2_evw_anime[]; +extern Gfx grd_s_c6_3_model[]; +extern Gfx grd_s_c6_3_modelT[]; +extern Gfx grd_s_c7_2_model[]; +extern Gfx grd_s_c7_2_modelT[]; +extern Gfx grd_s_r1_4_model[]; +extern Gfx grd_s_r1_4_modelT[]; +extern EVW_ANIME_DATA grd_s_r1_4_evw_anime[]; +extern Gfx grd_s_r2_4_model[]; +extern Gfx grd_s_r2_4_modelT[]; +extern EVW_ANIME_DATA grd_s_r2_4_evw_anime[]; +extern Gfx grd_s_r3_4_model[]; +extern Gfx grd_s_r3_4_modelT[]; +extern EVW_ANIME_DATA grd_s_r3_4_evw_anime[]; +extern Gfx grd_s_r4_3_model[]; +extern Gfx grd_s_r4_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r4_3_evw_anime[]; +extern Gfx grd_s_r5_3_model[]; +extern Gfx grd_s_r5_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r5_3_evw_anime[]; +extern Gfx grd_s_r6_3_model[]; +extern Gfx grd_s_r6_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r6_3_evw_anime[]; +extern Gfx grd_s_c2_r2_2_model[]; +extern Gfx grd_s_c2_r2_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c2_r2_2_evw_anime[]; +extern Gfx grd_s_c3_r2_2_model[]; +extern Gfx grd_s_c3_r2_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c3_r2_2_evw_anime[]; +extern Gfx grd_s_r1_b_2_model[]; +extern Gfx grd_s_r1_b_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r1_b_2_evw_anime[]; +extern Gfx grd_s_r2_b_2_model[]; +extern Gfx grd_s_r2_b_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r2_b_2_evw_anime[]; +extern Gfx grd_s_r4_b_2_model[]; +extern Gfx grd_s_r4_b_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r4_b_2_evw_anime[]; +extern Gfx grd_s_r3_b_2_model[]; +extern Gfx grd_s_r3_b_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r3_b_2_evw_anime[]; +extern Gfx grd_s_r5_b_2_model[]; +extern Gfx grd_s_r5_b_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r5_b_2_evw_anime[]; +extern Gfx grd_s_r6_b_2_model[]; +extern Gfx grd_s_r6_b_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r6_b_2_evw_anime[]; +extern Gfx grd_s_r7_b_2_model[]; +extern Gfx grd_s_r7_b_2_modelT[]; +extern EVW_ANIME_DATA grd_s_r7_b_2_evw_anime[]; +extern Gfx grd_s_r1_b_3_model[]; +extern Gfx grd_s_r1_b_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r1_b_3_evw_anime[]; +extern Gfx grd_s_r2_b_3_model[]; +extern Gfx grd_s_r2_b_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r2_b_3_evw_anime[]; +extern Gfx grd_s_r3_b_3_model[]; +extern Gfx grd_s_r3_b_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r3_b_3_evw_anime[]; +extern Gfx grd_s_f_3_model[]; +extern Gfx grd_s_f_3_modelT[]; +extern Gfx grd_s_f_4_model[]; +extern Gfx grd_s_f_4_modelT[]; +extern EVW_ANIME_DATA grd_s_f_4_evw_anime[]; +extern Gfx grd_s_f_5_model[]; +extern Gfx grd_s_f_5_modelT[]; +extern EVW_ANIME_DATA grd_s_f_5_evw_anime[]; +extern Gfx grd_s_f_6_model[]; +extern Gfx grd_s_f_6_modelT[]; +extern EVW_ANIME_DATA grd_s_f_6_evw_anime[]; +extern Gfx grd_s_f_7_model[]; +extern Gfx grd_s_f_7_modelT[]; +extern Gfx grd_s_f_8_model[]; +extern Gfx grd_s_f_8_modelT[]; +extern Gfx grd_s_f_9_model[]; +extern Gfx grd_s_f_9_modelT[]; +extern Gfx grd_s_f_10_model[]; +extern Gfx grd_s_f_10_modelT[]; +extern Gfx grd_s_t_2_model[]; +extern Gfx grd_s_t_2_modelT[]; +extern Gfx grd_s_t_3_model[]; +extern Gfx grd_s_t_3_modelT[]; +extern Gfx grd_s_t_4_model[]; +extern Gfx grd_s_t_4_modelT[]; +extern EVW_ANIME_DATA grd_s_t_4_evw_anime[]; +extern Gfx grd_s_t_5_model[]; +extern Gfx grd_s_t_5_modelT[]; +extern EVW_ANIME_DATA grd_s_t_5_evw_anime[]; +extern Gfx grd_s_t_6_model[]; +extern Gfx grd_s_t_6_modelT[]; +extern Gfx grd_s_t_7_model[]; +extern Gfx grd_s_t_7_modelT[]; +extern Gfx grd_s_t_8_model[]; +extern Gfx grd_s_t_8_modelT[]; +extern Gfx grd_s_t_9_model[]; +extern Gfx grd_s_t_9_modelT[]; +extern Gfx grd_s_t_10_model[]; +extern Gfx grd_s_t_10_modelT[]; +extern Gfx grd_s_t_r1_2_model[]; +extern Gfx grd_s_t_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_t_r1_2_evw_anime[]; +extern Gfx grd_s_t_r1_3_model[]; +extern Gfx grd_s_t_r1_3_modelT[]; +extern EVW_ANIME_DATA grd_s_t_r1_3_evw_anime[]; +extern Gfx grd_s_t_r1_4_model[]; +extern Gfx grd_s_t_r1_4_modelT[]; +extern EVW_ANIME_DATA grd_s_t_r1_4_evw_anime[]; +extern Gfx grd_s_t_r1_5_model[]; +extern Gfx grd_s_t_r1_5_modelT[]; +extern EVW_ANIME_DATA grd_s_t_r1_5_evw_anime[]; +extern Gfx grd_s_r2_p_1_model[]; +extern Gfx grd_s_r2_p_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r2_p_1_evw_anime[]; +extern Gfx grd_s_r3_p_1_model[]; +extern Gfx grd_s_r3_p_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r3_p_1_evw_anime[]; +extern Gfx grd_s_r6_p_1_model[]; +extern Gfx grd_s_r6_p_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r6_p_1_evw_anime[]; +extern Gfx grd_s_r7_p_1_model[]; +extern Gfx grd_s_r7_p_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r7_p_1_evw_anime[]; +extern Gfx grd_s_t_st1_2_model[]; +extern Gfx grd_s_t_st1_2_modelT[]; +extern Gfx grd_s_t_st1_3_model[]; +extern Gfx grd_s_t_st1_3_modelT[]; +extern Gfx grd_post_office_model[]; +extern Gfx grd_post_office_modelT[]; +extern Gfx grd_s_r4_p_1_model[]; +extern Gfx grd_s_r4_p_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r4_p_1_evw_anime[]; +extern Gfx grd_s_r5_p_1_model[]; +extern Gfx grd_s_r5_p_1_modelT[]; +extern EVW_ANIME_DATA grd_s_r5_p_1_evw_anime[]; +extern Gfx rom_train_in_model[]; +extern Gfx rom_train_in_modelT[]; +extern Gfx grd_s_f_9_model[]; +extern Gfx grd_s_f_9_modelT[]; +extern Gfx grd_s_r1_3_model[]; +extern Gfx grd_s_r1_3_modelT[]; +extern EVW_ANIME_DATA grd_s_r1_3_evw_anime[]; +extern Gfx grd_s_c1_3_model[]; +extern Gfx grd_s_c1_3_modelT[]; +extern Gfx grd_s_f_9_model[]; +extern Gfx grd_s_f_9_modelT[]; +extern Gfx grd_yamishop_model[]; +extern Gfx grd_yamishop_modelT[]; +extern Gfx grd_player_select_model[]; +extern Gfx grd_player_select_modelT[]; +extern EVW_ANIME_DATA grd_player_select_evw_anime[]; +extern Gfx grd_s_c1_s_4_model[]; +extern Gfx grd_s_c1_s_4_modelT[]; +extern Gfx grd_s_e1_1_model[]; +extern Gfx grd_s_e1_1_modelT[]; +extern Gfx grd_s_e1_r1_1_model[]; +extern Gfx grd_s_e1_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_e1_r1_1_evw_anime[]; +extern Gfx grd_s_e2_1_model[]; +extern Gfx grd_s_e2_1_modelT[]; +extern Gfx grd_s_e2_c1_1_model[]; +extern Gfx grd_s_e2_c1_1_modelT[]; +extern Gfx grd_s_e2_t_1_model[]; +extern Gfx grd_s_e2_t_1_modelT[]; +extern Gfx grd_s_e3_1_model[]; +extern Gfx grd_s_e3_1_modelT[]; +extern Gfx grd_s_e3_c1_1_model[]; +extern Gfx grd_s_e3_c1_1_modelT[]; +extern Gfx grd_s_e3_t_1_model[]; +extern Gfx grd_s_e3_t_1_modelT[]; +extern Gfx grd_s_e4_1_model[]; +extern Gfx grd_s_e4_1_modelT[]; +extern Gfx grd_s_e5_1_model[]; +extern Gfx grd_s_e5_1_modelT[]; +extern Gfx grd_s_f_ko_1_model[]; +extern Gfx grd_s_f_ko_1_modelT[]; +extern Gfx grd_s_f_ko_2_model[]; +extern Gfx grd_s_f_ko_2_modelT[]; +extern Gfx grd_s_f_ko_3_model[]; +extern Gfx grd_s_f_ko_3_modelT[]; +extern EVW_ANIME_DATA grd_s_f_ko_3_evw_anime[]; +extern Gfx grd_s_f_mh_1_model[]; +extern Gfx grd_s_f_mh_1_modelT[]; +extern Gfx grd_s_f_mh_2_model[]; +extern Gfx grd_s_f_mh_2_modelT[]; +extern Gfx grd_s_f_mh_3_model[]; +extern Gfx grd_s_f_mh_3_modelT[]; +extern Gfx grd_s_f_pk_1_model[]; +extern Gfx grd_s_f_pk_1_modelT[]; +extern Gfx grd_s_f_pk_2_model[]; +extern Gfx grd_s_f_pk_2_modelT[]; +extern Gfx grd_s_f_pk_3_model[]; +extern Gfx grd_s_f_pk_3_modelT[]; +extern Gfx grd_s_t_po_1_model[]; +extern Gfx grd_s_t_po_1_modelT[]; +extern Gfx grd_s_t_po_2_model[]; +extern Gfx grd_s_t_po_2_modelT[]; +extern Gfx grd_s_t_po_3_model[]; +extern Gfx grd_s_t_po_3_modelT[]; +extern EVW_ANIME_DATA grd_s_t_po_3_evw_anime[]; +extern Gfx grd_s_t_sh_1_model[]; +extern Gfx grd_s_t_sh_1_modelT[]; +extern Gfx grd_s_t_sh_2_model[]; +extern Gfx grd_s_t_sh_2_modelT[]; +extern EVW_ANIME_DATA grd_s_t_sh_2_evw_anime[]; +extern Gfx grd_s_t_sh_3_model[]; +extern Gfx grd_s_t_sh_3_modelT[]; +extern Gfx rom_uranai_model[]; +extern Gfx rom_uranai_modelT[]; +extern EVW_ANIME_DATA rom_uranai_evw_anime[]; +extern Gfx rom_shop4_1_model[]; +extern Gfx rom_shop4_1_modelT[]; +extern Gfx grd_s_hole_test_model[]; +extern Gfx grd_s_hole_test_modelT[]; +extern Gfx grd_s_m_1_model[]; +extern Gfx grd_s_m_1_modelT[]; +extern Gfx grd_s_m_r1_1_model[]; +extern Gfx grd_s_m_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_m_r1_1_evw_anime[]; +extern Gfx grd_s_e2_m_1_model[]; +extern Gfx grd_s_e2_m_1_modelT[]; +extern Gfx grd_s_e3_m_1_model[]; +extern Gfx grd_s_e3_m_1_modelT[]; +extern Gfx rom_shop4_fuku_model[]; +extern Gfx rom_shop4_fuku_modelT[]; +extern Gfx grd_s_m_r1_2_model[]; +extern Gfx grd_s_m_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_m_r1_2_evw_anime[]; +extern Gfx grd_s_m_r1_3_model[]; +extern Gfx grd_s_m_r1_3_modelT[]; +extern EVW_ANIME_DATA grd_s_m_r1_3_evw_anime[]; +extern Gfx grd_s_m_r1_4_model[]; +extern Gfx grd_s_m_r1_4_modelT[]; +extern EVW_ANIME_DATA grd_s_m_r1_4_evw_anime[]; +extern Gfx grd_s_m_r1_5_model[]; +extern Gfx grd_s_m_r1_5_modelT[]; +extern EVW_ANIME_DATA grd_s_m_r1_5_evw_anime[]; +extern Gfx grd_s_m_r1_b_1_model[]; +extern Gfx grd_s_m_r1_b_1_modelT[]; +extern EVW_ANIME_DATA grd_s_m_r1_b_1_evw_anime[]; +extern Gfx grd_s_m_r1_b_2_model[]; +extern Gfx grd_s_m_r1_b_2_modelT[]; +extern EVW_ANIME_DATA grd_s_m_r1_b_2_evw_anime[]; +extern Gfx grd_s_m_r1_b_3_model[]; +extern Gfx grd_s_m_r1_b_3_modelT[]; +extern EVW_ANIME_DATA grd_s_m_r1_b_3_evw_anime[]; +extern Gfx grd_s_m_2_model[]; +extern Gfx grd_s_m_2_modelT[]; +extern Gfx grd_s_m_3_model[]; +extern Gfx grd_s_m_3_modelT[]; +extern Gfx grd_s_m_4_model[]; +extern Gfx grd_s_m_4_modelT[]; +extern Gfx grd_s_m_5_model[]; +extern Gfx grd_s_m_5_modelT[]; +extern Gfx grd_s_m_6_model[]; +extern Gfx grd_s_m_6_modelT[]; +extern Gfx grd_s_m_7_model[]; +extern Gfx grd_s_m_7_modelT[]; +extern Gfx grd_s_m_8_model[]; +extern Gfx grd_s_m_8_modelT[]; +extern Gfx grd_s_m_9_model[]; +extern Gfx grd_s_m_9_modelT[]; +extern Gfx grd_s_m_10_model[]; +extern Gfx grd_s_m_10_modelT[]; +extern Gfx grd_s_c2_s_3_model[]; +extern Gfx grd_s_c2_s_3_modelT[]; +extern Gfx grd_s_c7_s_2_model[]; +extern Gfx grd_s_c7_s_3_model[]; +extern Gfx grd_s_c7_r3_2_model[]; +extern Gfx grd_s_c7_r3_2_modelT[]; +extern EVW_ANIME_DATA grd_s_c7_r3_2_evw_anime[]; +extern Gfx rom_museum1_model[]; +extern Gfx rom_museum1_modelT[]; +extern Gfx rom_museum2_model[]; +extern Gfx rom_museum2_modelT[]; +extern Gfx rom_museum3_model[]; +extern Gfx rom_museum3_modelT[]; +extern Gfx rom_museum5_model[]; +extern Gfx rom_museum5_modelT[]; +extern Gfx rom_tailor_model[]; +extern Gfx rom_tailor_modelT[]; +extern Gfx rom_toudai_model[]; +extern Gfx rom_toudai_modelT[]; +extern Gfx grd_s_f_mu_1_model[]; +extern Gfx grd_s_f_mu_1_modelT[]; +extern Gfx grd_s_f_mu_2_model[]; +extern Gfx grd_s_f_mu_2_modelT[]; +extern Gfx grd_s_f_mu_3_model[]; +extern Gfx grd_s_f_mu_3_modelT[]; +extern EVW_ANIME_DATA grd_s_f_mu_3_evw_anime[]; +extern Gfx grd_s_m_ta_1_model[]; +extern Gfx grd_s_m_ta_1_modelT[]; +extern EVW_ANIME_DATA grd_s_m_ta_1_evw_anime[]; +extern Gfx grd_s_m_ta_2_model[]; +extern Gfx grd_s_m_ta_2_modelT[]; +extern EVW_ANIME_DATA grd_s_m_ta_2_evw_anime[]; +extern Gfx grd_s_m_ta_3_model[]; +extern Gfx grd_s_m_ta_3_modelT[]; +extern EVW_ANIME_DATA grd_s_m_ta_3_evw_anime[]; +extern Gfx grd_s_m_wf_1_model[]; +extern Gfx grd_s_m_wf_1_modelT[]; +extern EVW_ANIME_DATA grd_s_m_wf_1_evw_anime[]; +extern Gfx grd_s_m_wf_2_model[]; +extern Gfx grd_s_m_wf_2_modelT[]; +extern EVW_ANIME_DATA grd_s_m_wf_2_evw_anime[]; +extern Gfx grd_s_m_wf_3_model[]; +extern Gfx grd_s_m_wf_3_modelT[]; +extern EVW_ANIME_DATA grd_s_m_wf_3_evw_anime[]; +extern Gfx grd_s_ir_1_model[]; +extern Gfx grd_s_ir_1_modelT[]; +extern Gfx grd_s_il_1_model[]; +extern Gfx grd_s_il_1_modelT[]; +extern Gfx grd_s_ir_2_model[]; +extern Gfx grd_s_ir_2_modelT[]; +extern Gfx grd_s_il_2_model[]; +extern Gfx grd_s_il_2_modelT[]; +extern Gfx grd_s_o_1_model[]; +extern Gfx grd_s_o_1_modelT[]; +extern EVW_ANIME_DATA grd_s_o_1_evw_anime[]; +extern Gfx grd_s_o_2_model[]; +extern Gfx grd_s_o_2_modelT[]; +extern EVW_ANIME_DATA grd_s_o_2_evw_anime[]; +extern Gfx grd_s_o_3_model[]; +extern Gfx grd_s_o_3_modelT[]; +extern EVW_ANIME_DATA grd_s_o_3_evw_anime[]; +extern Gfx grd_s_o_4_model[]; +extern Gfx grd_s_o_4_modelT[]; +extern EVW_ANIME_DATA grd_s_o_4_evw_anime[]; +extern Gfx grd_s_e2_o_1_model[]; +extern Gfx grd_s_e2_o_1_modelT[]; +extern Gfx grd_s_e3_o_1_model[]; +extern Gfx grd_s_e3_o_1_modelT[]; +extern Gfx grd_s_o_5_model[]; +extern Gfx grd_s_o_5_modelT[]; +extern EVW_ANIME_DATA grd_s_o_5_evw_anime[]; +extern Gfx grd_s_o_6_model[]; +extern Gfx grd_s_o_6_modelT[]; +extern EVW_ANIME_DATA grd_s_o_6_evw_anime[]; +extern Gfx grd_s_o_7_model[]; +extern Gfx grd_s_o_7_modelT[]; +extern EVW_ANIME_DATA grd_s_o_7_evw_anime[]; +extern Gfx grd_s_o_8_model[]; +extern Gfx grd_s_o_8_modelT[]; +extern EVW_ANIME_DATA grd_s_o_8_evw_anime[]; +extern Gfx grd_s_o_9_model[]; +extern Gfx grd_s_o_9_modelT[]; +extern EVW_ANIME_DATA grd_s_o_9_evw_anime[]; +extern Gfx grd_s_o_10_model[]; +extern Gfx grd_s_o_10_modelT[]; +extern EVW_ANIME_DATA grd_s_o_10_evw_anime[]; +extern Gfx grd_s_o_i_1_model[]; +extern Gfx grd_s_o_i_1_modelT[]; +extern Gfx grd_s_o_i_2_model[]; +extern Gfx grd_s_o_i_2_modelT[]; +extern EVW_ANIME_DATA grd_s_o_i_2_evw_anime[]; +extern Gfx grd_s_o_r1_1_model[]; +extern Gfx grd_s_o_r1_1_modelT[]; +extern EVW_ANIME_DATA grd_s_o_r1_1_evw_anime[]; +extern Gfx grd_s_o_r1_2_model[]; +extern Gfx grd_s_o_r1_2_modelT[]; +extern EVW_ANIME_DATA grd_s_o_r1_2_evw_anime[]; +extern Gfx grd_s_o_r1_3_model[]; +extern Gfx grd_s_o_r1_3_modelT[]; +extern EVW_ANIME_DATA grd_s_o_r1_3_evw_anime[]; +extern Gfx grd_s_o_r1_4_model[]; +extern Gfx grd_s_o_r1_4_modelT[]; +extern EVW_ANIME_DATA grd_s_o_r1_4_evw_anime[]; +extern Gfx grd_s_o_r1_5_model[]; +extern Gfx grd_s_o_r1_5_modelT[]; +extern EVW_ANIME_DATA grd_s_o_r1_5_evw_anime[]; +extern Gfx grd_s_o_r1_b_1_model[]; +extern Gfx grd_s_o_r1_b_1_modelT[]; +extern EVW_ANIME_DATA grd_s_o_r1_b_1_evw_anime[]; +extern Gfx grd_s_o_r1_b_2_model[]; +extern Gfx grd_s_o_r1_b_2_modelT[]; +extern EVW_ANIME_DATA grd_s_o_r1_b_2_evw_anime[]; +extern Gfx grd_s_o_r1_b_3_model[]; +extern Gfx grd_s_o_r1_b_3_modelT[]; +extern EVW_ANIME_DATA grd_s_o_r1_b_3_evw_anime[]; +extern Gfx grd_s_o_ta_1_model[]; +extern Gfx grd_s_o_ta_1_modelT[]; +extern EVW_ANIME_DATA grd_s_o_ta_1_evw_anime[]; +extern Gfx grd_s_o_ta_2_model[]; +extern Gfx grd_s_o_ta_2_modelT[]; +extern EVW_ANIME_DATA grd_s_o_ta_2_evw_anime[]; +extern Gfx grd_s_o_ta_3_model[]; +extern Gfx grd_s_o_ta_3_modelT[]; +extern EVW_ANIME_DATA grd_s_o_ta_3_evw_anime[]; +extern Gfx grd_s_o_wf_1_model[]; +extern Gfx grd_s_o_wf_1_modelT[]; +extern EVW_ANIME_DATA grd_s_o_wf_1_evw_anime[]; +extern Gfx grd_s_o_wf_2_model[]; +extern Gfx grd_s_o_wf_2_modelT[]; +extern EVW_ANIME_DATA grd_s_o_wf_2_evw_anime[]; +extern Gfx grd_s_o_wf_3_model[]; +extern Gfx grd_s_o_wf_3_modelT[]; +extern EVW_ANIME_DATA grd_s_o_wf_3_evw_anime[]; +extern Gfx grd_s_ir_2_model[]; +extern Gfx grd_s_ir_2_modelT[]; +extern Gfx grd_s_il_2_model[]; +extern Gfx grd_s_il_2_modelT[]; +extern Gfx grd_s_ir_3_model[]; +extern Gfx grd_s_ir_3_modelT[]; +extern Gfx grd_s_il_3_model[]; +extern Gfx grd_s_il_3_modelT[]; +extern Gfx grd_s_ir_4_model[]; +extern Gfx grd_s_ir_4_modelT[]; +extern Gfx grd_s_il_4_model[]; +extern Gfx grd_s_il_4_modelT[]; +extern Gfx rom_tent_model[]; +extern Gfx rom_tent_modelT[]; + +extern mFM_bg_data_c data_bgd[] = { + { + BG_TYPE_ROOM01, + room01_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_259, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_260, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_242, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_MYR_ETC, + myr_etc_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_60}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_246, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_248, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_WOOD}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_WOOD}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMP, + tmp_model, + tmp_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMP2, + tmp2_model, + tmp2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_60}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_49}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_48}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMPR, + tmpr_model, + tmpr_modelT, + tmpr_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_50}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_50}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_50}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_46}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_45}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_45}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_45}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_26}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_29}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_46}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_47}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_55}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_47}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_62}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_46}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_49}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMPR2, + tmpr2_model, + tmpr2_modelT, + tmpr2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMP3, + tmp3_model, + tmp3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMPR3, + tmpr3_model, + tmpr3_modelT, + tmpr3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_47}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_50}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_50}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 1, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_56}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_S}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 7, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 10 }, + }, + }, + { + BG_TYPE_TMP4, + tmp4_model, + tmp4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_34}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_33}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_TMPR4, + tmpr4_model, + tmpr4_modelT, + tmpr4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_57}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 7, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 15 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R1_1, + grd_s_c1_r1_1_model, + grd_s_c1_r1_1_modelT, + grd_s_c1_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_53}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 0, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_S_1, + grd_s_c1_s_1_model, + grd_s_c1_s_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 14, 16, 14, 12, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 14, 14, 12, 14, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 14, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 14, 16, 14, 12, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 12, 14, 12, 10, 12, mCoBG_ATTRIBUTE_SOIL2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_63}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 12, 10, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 10, 8, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_50}, { 0, 14, 16, 14, 12, 14, mCoBG_ATTRIBUTE_50}, { 0, 12, 14, 12, 10, 12, mCoBG_ATTRIBUTE_50}, { 0, 10, 12, 10, 8, 10, mCoBG_ATTRIBUTE_50}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 10, 8, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_BUSH}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_BUSH}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_R1_1, + grd_s_c2_r1_1_model, + grd_s_c2_r1_1_modelT, + grd_s_c2_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_R2_1, + grd_s_c2_r2_1_model, + grd_s_c2_r2_1_modelT, + grd_s_c2_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R1_1, + grd_s_c5_r1_1_model, + grd_s_c5_r1_1_modelT, + grd_s_c5_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 5, 16, mCoBG_ATTRIBUTE_57}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_R1_1, + grd_s_t_r1_1_model, + grd_s_t_r1_1_modelT, + grd_s_t_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 6, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 4, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 8 }, + { mFI_SOUND_SOURCE_RIVER, 9, 3 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_1, + grd_s_f_1_model, + grd_s_f_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_2, + grd_s_f_2_model, + grd_s_f_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_1, + grd_s_c1_1_model, + grd_s_c1_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R2_1, + grd_s_c1_r2_1_model, + grd_s_c1_r2_1_modelT, + grd_s_c1_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 5, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R3_1, + grd_s_c1_r3_1_model, + grd_s_c1_r3_1_modelT, + grd_s_c1_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_1, + grd_s_c2_1_model, + grd_s_c2_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_1, + grd_s_c3_1_model, + grd_s_c3_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_R1_1, + grd_s_c3_r1_1_model, + grd_s_c3_r1_1_modelT, + grd_s_c3_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 4, 5 }, + { mFI_SOUND_SOURCE_RIVER, 3, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_1, + grd_s_c4_1_model, + grd_s_c4_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R1_1, + grd_s_c4_r1_1_model, + grd_s_c4_r1_1_modelT, + grd_s_c4_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 4, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R2_1, + grd_s_c4_r2_1_model, + grd_s_c4_r2_1_modelT, + grd_s_c4_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_1, + grd_s_c5_1_model, + grd_s_c5_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R2_1, + grd_s_c5_r2_1_model, + grd_s_c5_r2_1_modelT, + grd_s_c5_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R3_1, + grd_s_c5_r3_1_model, + grd_s_c5_r3_1_modelT, + grd_s_c5_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_1, + grd_s_c6_1_model, + grd_s_c6_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_R1_1, + grd_s_c6_r1_1_model, + grd_s_c6_r1_1_modelT, + grd_s_c6_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 4, 5 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_1, + grd_s_c7_1_model, + grd_s_c7_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_1, + grd_s_r1_1_model, + grd_s_r1_1_modelT, + grd_s_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 4, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_1, + grd_s_r2_1_model, + grd_s_r2_1_modelT, + grd_s_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_RIVER, 4, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_1, + grd_s_r3_1_model, + grd_s_r3_1_modelT, + grd_s_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_1, + grd_s_r4_1_model, + grd_s_r4_1_modelT, + grd_s_r4_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 9, 4 }, + { mFI_SOUND_SOURCE_RIVER, 7, 3 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_1, + grd_s_r5_1_model, + grd_s_r5_1_modelT, + grd_s_r5_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_1, + grd_s_r6_1_model, + grd_s_r6_1_modelT, + grd_s_r6_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_1, + grd_s_r7_1_model, + grd_s_r7_1_modelT, + grd_s_r7_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_R2_1, + grd_s_c3_r2_1_model, + grd_s_c3_r2_1_modelT, + grd_s_c3_r2_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 3, 2 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_R3_1, + grd_s_c7_r3_1_model, + grd_s_c7_r3_1_modelT, + grd_s_c7_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 12, 9 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_R3_1, + grd_s_c6_r3_1_model, + grd_s_c6_r3_1_modelT, + grd_s_c6_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_62}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 0, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_B_1, + grd_s_r1_b_1_model, + grd_s_r1_b_1_modelT, + grd_s_r1_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 7, 4 }, + { mFI_SOUND_SOURCE_RIVER, 4, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_B_1, + grd_s_r2_b_1_model, + grd_s_r2_b_1_modelT, + grd_s_r2_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_34}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_34}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_34}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_34}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_34}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_34}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_B_1, + grd_s_r3_b_1_model, + grd_s_r3_b_1_modelT, + grd_s_r3_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_62}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_34}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_34}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_34}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_B_1, + grd_s_r4_b_1_model, + grd_s_r4_b_1_modelT, + grd_s_r4_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_34}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_34}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_34}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_B_1, + grd_s_r5_b_1_model, + grd_s_r5_b_1_modelT, + grd_s_r5_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 6 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_B_1, + grd_s_r6_b_1_model, + grd_s_r6_b_1_modelT, + grd_s_r6_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 6, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_B_1, + grd_s_r7_b_1_model, + grd_s_r7_b_1_modelT, + grd_s_r7_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 10, 10 }, + { mFI_SOUND_SOURCE_RIVER, 7, 12 }, + { mFI_SOUND_SOURCE_RIVER, 10, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_1, + grd_s_t_1_model, + grd_s_t_1_modelT, + grd_s_t_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 11, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_S_2, + grd_s_c1_s_2_model, + grd_s_c1_s_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_S_1, + grd_s_c2_s_1_model, + grd_s_c2_s_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_S_1, + grd_s_c3_s_1_model, + grd_s_c3_s_1_modelT, + grd_s_c3_s_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 15, 16, 16, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 16, 14, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 14, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 16, 14, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 14, 14, 12, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_48}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 16, 16, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 14, 16, 16, 14, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_48}, { 0, 7, 6, 8, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_53}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 6, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_S_1, + grd_s_c4_s_1_model, + grd_s_c4_s_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 14, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 14, 16, 14, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 14, 14, 12, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 14, 16, 14, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 14, 12, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_58}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_S_1, + grd_s_c5_s_1_model, + grd_s_c5_s_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 8, 6, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_S_1, + grd_s_c6_s_1_model, + grd_s_c6_s_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 6, 8, 10, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 6, 8, 10, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 8, 10, 12, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 12, 12, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 12, 12, 14, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 14, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 12, 12, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 12, 12, 14, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 14, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 12, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 12, 12, 14, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 14, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 12, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 12, 12, 14, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 14, 14, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 8, 8, 6, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 10, 12, 14, 12, mCoBG_ATTRIBUTE_49}, { 0, 14, 12, 14, 16, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 14, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 14, 12, 14, 16, 14, mCoBG_ATTRIBUTE_49}, { 0, 16, 14, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 14, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_S_1, + grd_s_c7_s_1_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_53}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_47}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_48}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_53}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_50}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_50}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_50}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_50}, { 1, 10, 10, 10, 4, 10, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R3_1, + grd_s_c4_r3_1_model, + grd_s_c4_r3_1_modelT, + grd_s_c4_r3_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 5, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_R1_1, + grd_s_c7_r1_1_model, + grd_s_c7_r1_1_modelT, + grd_s_c7_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_ST1_1, + grd_s_t_st1_1_model, + grd_s_t_st1_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_34}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_33}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_2, + grd_s_c1_2_model, + grd_s_c1_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_3, + grd_s_c1_3_model, + grd_s_c1_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_4, + grd_s_c1_4_model, + grd_s_c1_4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_5, + grd_s_c1_5_model, + grd_s_c1_5_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_2, + grd_s_c2_2_model, + grd_s_c2_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_2, + grd_s_r1_2_model, + grd_s_r1_2_modelT, + grd_s_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 8 }, + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_3, + grd_s_r1_3_model, + grd_s_r1_3_modelT, + grd_s_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 9, 8 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_2, + grd_s_r4_2_model, + grd_s_r4_2_modelT, + grd_s_r4_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 9 }, + { mFI_SOUND_SOURCE_RIVER, 4, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_2, + grd_s_r5_2_model, + grd_s_r5_2_modelT, + grd_s_r5_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_2, + grd_s_r7_2_model, + grd_s_r7_2_modelT, + grd_s_r7_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_RIVER, 3, 9 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_3, + grd_s_r7_3_model, + grd_s_r7_3_modelT, + grd_s_r7_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 6, 6 }, + { mFI_SOUND_SOURCE_RIVER, 4, 10 }, + { mFI_SOUND_SOURCE_RIVER, 10, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_S_2, + grd_s_c2_s_2_model, + grd_s_c2_s_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_S_3, + grd_s_c1_s_3_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_S_2, + grd_s_c4_s_2_model, + grd_s_c4_s_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 16, 14, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 14, 12, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 12, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 10, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 16, 14, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 14, 12, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 12, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 10, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 16, 14, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 14, 12, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 12, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 10, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_58}, { 0, 8, 10, 8, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_S_2, + grd_s_c5_s_2_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_SOIL2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_SOIL2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_SOIL2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_63}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_R1_2, + grd_s_c6_r1_2_model, + grd_s_c6_r1_2_modelT, + grd_s_c6_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 3, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_R1_2, + grd_s_c3_r1_2_model, + grd_s_c3_r1_2_modelT, + grd_s_c3_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 8 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_2, + grd_s_c3_2_model, + grd_s_c3_2_modelT, + grd_s_c3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 8, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_3, + grd_s_c7_3_model, + grd_s_c7_3_modelT, + grd_s_c7_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 0, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 11, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R2_2, + grd_s_c1_r2_2_model, + grd_s_c1_r2_2_modelT, + grd_s_c1_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R3_2, + grd_s_c1_r3_2_model, + grd_s_c1_r3_2_modelT, + grd_s_c1_r3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_2, + grd_s_c4_2_model, + grd_s_c4_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_2, + grd_s_c5_2_model, + grd_s_c5_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_2, + grd_s_c6_2_model, + grd_s_c6_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_2, + grd_s_r2_2_model, + grd_s_r2_2_modelT, + grd_s_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_2, + grd_s_r3_2_model, + grd_s_r3_2_modelT, + grd_s_r3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R1_2, + grd_s_c4_r1_2_model, + grd_s_c4_r1_2_modelT, + grd_s_c4_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R2_2, + grd_s_c4_r2_2_model, + grd_s_c4_r2_2_modelT, + grd_s_c4_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_R1_2, + grd_s_c7_r1_2_model, + grd_s_c7_r1_2_modelT, + grd_s_c7_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 3, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_2, + grd_s_c6_2_model, + grd_s_c6_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R2_2, + grd_s_c5_r2_2_model, + grd_s_c5_r2_2_modelT, + grd_s_c5_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_R3_2, + grd_s_c4_r3_2_model, + grd_s_c4_r3_2_modelT, + grd_s_c4_r3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_3, + grd_s_r2_3_model, + grd_s_r2_3_modelT, + grd_s_r2_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_3, + grd_s_r3_3_model, + grd_s_r3_3_modelT, + grd_s_r3_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R3_2, + grd_s_c5_r3_2_model, + grd_s_c5_r3_2_modelT, + grd_s_c5_r3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 2 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_3, + grd_s_c5_3_model, + grd_s_c5_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C4_3, + grd_s_c4_3_model, + grd_s_c4_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_3, + grd_s_c3_3_model, + grd_s_c3_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_3, + grd_s_c2_3_model, + grd_s_c2_3_modelT, + grd_s_c2_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_WATER}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_WATER}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_WATER}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_WATER}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 4, 3 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_P_1, + grd_s_r1_p_1_model, + grd_s_r1_p_1_modelT, + grd_s_r1_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_2, + grd_s_r6_2_model, + grd_s_r6_2_modelT, + grd_s_r6_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_POLICE_INDOOR, + police_indoor_model, + police_indoor_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R1_2, + grd_s_c1_r1_2_model, + grd_s_c1_r1_2_modelT, + grd_s_c1_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_52}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R1_3, + grd_s_c1_r1_3_model, + grd_s_c1_r1_3_modelT, + grd_s_c1_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R2_3, + grd_s_c1_r2_3_model, + grd_s_c1_r2_3_modelT, + grd_s_c1_r2_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 8 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_R3_3, + grd_s_c1_r3_3_model, + grd_s_c1_r3_3_modelT, + grd_s_c1_r3_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_R1_2, + grd_s_c2_r1_2_model, + grd_s_c2_r1_2_modelT, + grd_s_c2_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C5_R1_2, + grd_s_c5_r1_2_model, + grd_s_c5_r1_2_modelT, + grd_s_c5_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_63}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C6_3, + grd_s_c6_3_model, + grd_s_c6_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_2, + grd_s_c7_2_model, + grd_s_c7_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_4, + grd_s_r1_4_model, + grd_s_r1_4_modelT, + grd_s_r1_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_4, + grd_s_r2_4_model, + grd_s_r2_4_modelT, + grd_s_r2_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_4, + grd_s_r3_4_model, + grd_s_r3_4_modelT, + grd_s_r3_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_3, + grd_s_r4_3_model, + grd_s_r4_3_modelT, + grd_s_r4_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 5, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_3, + grd_s_r5_3_model, + grd_s_r5_3_modelT, + grd_s_r5_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 6 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_3, + grd_s_r6_3_model, + grd_s_r6_3_modelT, + grd_s_r6_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 3, 3 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_R2_2, + grd_s_c2_r2_2_model, + grd_s_c2_r2_2_modelT, + grd_s_c2_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_44}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_45}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 12 }, + { mFI_SOUND_SOURCE_RIVER, 11, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C3_R2_2, + grd_s_c3_r2_2_model, + grd_s_c3_r2_2_modelT, + grd_s_c3_r2_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 16, 16, 12, 16, 16, mCoBG_ATTRIBUTE_40}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 1, 16, 16, 16, 16, 12, mCoBG_ATTRIBUTE_42}, { 1, 12, 12, 12, 0, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 0, 16, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_47}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_B_2, + grd_s_r1_b_2_model, + grd_s_r1_b_2_modelT, + grd_s_r1_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 9, 8 }, + { mFI_SOUND_SOURCE_RIVER, 7, 4 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_B_2, + grd_s_r2_b_2_model, + grd_s_r2_b_2_modelT, + grd_s_r2_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_B_2, + grd_s_r4_b_2_model, + grd_s_r4_b_2_modelT, + grd_s_r4_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 8, 3 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_B_2, + grd_s_r3_b_2_model, + grd_s_r3_b_2_modelT, + grd_s_r3_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 9 }, + { mFI_SOUND_SOURCE_RIVER, 11, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_B_2, + grd_s_r5_b_2_model, + grd_s_r5_b_2_modelT, + grd_s_r5_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 6, 8 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_B_2, + grd_s_r6_b_2_model, + grd_s_r6_b_2_modelT, + grd_s_r6_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 3, 3 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_B_2, + grd_s_r7_b_2_model, + grd_s_r7_b_2_modelT, + grd_s_r7_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 4, 4 }, + { mFI_SOUND_SOURCE_RIVER, 4, 9 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_B_3, + grd_s_r1_b_3_model, + grd_s_r1_b_3_modelT, + grd_s_r1_b_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 12, 8 }, + { mFI_SOUND_SOURCE_RIVER, 9, 12 }, + { mFI_SOUND_SOURCE_RIVER, 9, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_B_3, + grd_s_r2_b_3_model, + grd_s_r2_b_3_modelT, + grd_s_r2_b_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_62}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 4 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_B_3, + grd_s_r3_b_3_model, + grd_s_r3_b_3_modelT, + grd_s_r3_b_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_34}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_34}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_34}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_33}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 8, 11 }, + { mFI_SOUND_SOURCE_RIVER, 3, 9 }, + { mFI_SOUND_SOURCE_RIVER, 11, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_3, + grd_s_f_3_model, + grd_s_f_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_4, + grd_s_f_4_model, + grd_s_f_4_modelT, + grd_s_f_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 10, 3 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_5, + grd_s_f_5_model, + grd_s_f_5_modelT, + grd_s_f_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 4, 9 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_6, + grd_s_f_6_model, + grd_s_f_6_modelT, + grd_s_f_6_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 11, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_7, + grd_s_f_7_model, + grd_s_f_7_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_8, + grd_s_f_8_model, + grd_s_f_8_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_9, + grd_s_f_9_model, + grd_s_f_9_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_10, + grd_s_f_10_model, + grd_s_f_10_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_2, + grd_s_t_2_model, + grd_s_t_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_3, + grd_s_t_3_model, + grd_s_t_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_4, + grd_s_t_4_model, + grd_s_t_4_modelT, + grd_s_t_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 10, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_5, + grd_s_t_5_model, + grd_s_t_5_modelT, + grd_s_t_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 5, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_6, + grd_s_t_6_model, + grd_s_t_6_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_7, + grd_s_t_7_model, + grd_s_t_7_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_8, + grd_s_t_8_model, + grd_s_t_8_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_9, + grd_s_t_9_model, + grd_s_t_9_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_10, + grd_s_t_10_model, + grd_s_t_10_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_R1_2, + grd_s_t_r1_2_model, + grd_s_t_r1_2_modelT, + grd_s_t_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 4, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 8, 8 }, + { mFI_SOUND_SOURCE_RIVER, 10, 3 }, + { mFI_SOUND_SOURCE_RIVER, 7, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_R1_3, + grd_s_t_r1_3_model, + grd_s_t_r1_3_modelT, + grd_s_t_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 4, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 8 }, + { mFI_SOUND_SOURCE_RIVER, 10, 3 }, + { mFI_SOUND_SOURCE_RIVER, 4, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_R1_4, + grd_s_t_r1_4_model, + grd_s_t_r1_4_modelT, + grd_s_t_r1_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_32}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 4, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 4, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_R1_5, + grd_s_t_r1_5_model, + grd_s_t_r1_5_modelT, + grd_s_t_r1_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_47}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_50}, { 0, 6, 6, 4, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 3, 8 }, + { mFI_SOUND_SOURCE_RIVER, 3, 4 }, + { mFI_SOUND_SOURCE_RIVER, 3, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R2_P_1, + grd_s_r2_p_1_model, + grd_s_r2_p_1_modelT, + grd_s_r2_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R3_P_1, + grd_s_r3_p_1_model, + grd_s_r3_p_1_modelT, + grd_s_r3_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R6_P_1, + grd_s_r6_p_1_model, + grd_s_r6_p_1_modelT, + grd_s_r6_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R7_P_1, + grd_s_r7_p_1_model, + grd_s_r7_p_1_modelT, + grd_s_r7_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_ST1_2, + grd_s_t_st1_2_model, + grd_s_t_st1_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_34}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_33}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_ST1_3, + grd_s_t_st1_3_model, + grd_s_t_st1_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_32}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_STONE}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_34}, { 0, 6, 8, 4, 4, 8, mCoBG_ATTRIBUTE_33}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_POST_OFFICE, + grd_post_office_model, + grd_post_office_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R4_P_1, + grd_s_r4_p_1_model, + grd_s_r4_p_1_modelT, + grd_s_r4_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 1 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 6, 4 }, + { mFI_SOUND_SOURCE_RIVER, 11, 6 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R5_P_1, + grd_s_r5_p_1_model, + grd_s_r5_p_1_modelT, + grd_s_r5_p_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 7, 7 }, + { mFI_SOUND_SOURCE_RIVER, 4, 6 }, + { mFI_SOUND_SOURCE_RIVER, 6, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_TRAIN_IN, + rom_train_in_model, + rom_train_in_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_9_1, + grd_s_f_9_model, + grd_s_f_9_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_R1_3_1, + grd_s_r1_3_model, + grd_s_r1_3_modelT, + grd_s_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_3_1, + grd_s_c1_3_model, + grd_s_c1_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_9_2, + grd_s_f_9_model, + grd_s_f_9_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_YAMISHOP, + grd_yamishop_model, + grd_yamishop_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_PLAYER_SELECT, + grd_player_select_model, + grd_player_select_modelT, + grd_player_select_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C1_S_4, + grd_s_c1_s_4_model, + grd_s_c1_s_4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_BUSH}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_53}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_SOIL2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_52}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E1_1, + grd_s_e1_1_model, + grd_s_e1_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E1_R1_1, + grd_s_e1_r1_1_model, + grd_s_e1_r1_1_modelT, + grd_s_e1_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 31, 31, 0, 31, 31, mCoBG_ATTRIBUTE_40}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 31, 31, 0, 31, 31, mCoBG_ATTRIBUTE_40}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 31, 31, 0, 31, 31, mCoBG_ATTRIBUTE_40}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 1, 31, 31, 31, 31, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 1, 31, 31, 31, 0, 31, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 1, 31, 31, 31, 0, 31, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 31, 0, 31, 31, 31, mCoBG_ATTRIBUTE_39}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 1, 31, 31, 31, 0, 31, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 31, 0, 31, 31, 31, mCoBG_ATTRIBUTE_39}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 31, 0, 31, 31, 31, mCoBG_ATTRIBUTE_39}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 3 }, + { mFI_SOUND_SOURCE_RIVER, 5, 14 }, + { mFI_SOUND_SOURCE_RIVER, 8, 6 }, + { mFI_SOUND_SOURCE_RIVER, 5, 3 }, + { mFI_SOUND_SOURCE_RIVER, 6, 10 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E2_1, + grd_s_e2_1_model, + grd_s_e2_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E2_C1_1, + grd_s_e2_c1_1_model, + grd_s_e2_c1_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E2_T_1, + grd_s_e2_t_1_model, + grd_s_e2_t_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_53}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_54}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_48}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E3_1, + grd_s_e3_1_model, + grd_s_e3_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E3_C1_1, + grd_s_e3_c1_1_model, + grd_s_e3_c1_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E3_T_1, + grd_s_e3_t_1_model, + grd_s_e3_t_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_52}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_50}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_51}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_47}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_49}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E4_1, + grd_s_e4_1_model, + grd_s_e4_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E5_1, + grd_s_e5_1_model, + grd_s_e5_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS2}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_KO_1, + grd_s_f_ko_1_model, + grd_s_f_ko_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_KO_2, + grd_s_f_ko_2_model, + grd_s_f_ko_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_KO_3, + grd_s_f_ko_3_model, + grd_s_f_ko_3_modelT, + grd_s_f_ko_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 12, 5 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MH_1, + grd_s_f_mh_1_model, + grd_s_f_mh_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MH_2, + grd_s_f_mh_2_model, + grd_s_f_mh_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MH_3, + grd_s_f_mh_3_model, + grd_s_f_mh_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_PK_1, + grd_s_f_pk_1_model, + grd_s_f_pk_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_PK_2, + grd_s_f_pk_2_model, + grd_s_f_pk_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_PK_3, + grd_s_f_pk_3_model, + grd_s_f_pk_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_PO_1, + grd_s_t_po_1_model, + grd_s_t_po_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_PO_2, + grd_s_t_po_2_model, + grd_s_t_po_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_PO_3, + grd_s_t_po_3_model, + grd_s_t_po_3_modelT, + grd_s_t_po_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 12, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_SH_1, + grd_s_t_sh_1_model, + grd_s_t_sh_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_SH_2, + grd_s_t_sh_2_model, + grd_s_t_sh_2_modelT, + grd_s_t_sh_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATER}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 5, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_T_SH_3, + grd_s_t_sh_3_model, + grd_s_t_sh_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_STONE}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_URANAI, + rom_uranai_model, + rom_uranai_modelT, + rom_uranai_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 20, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 20, 20, 20, 20, 20, mCoBG_ATTRIBUTE_FLOOR}, { 0, 20, 20, 20, 20, 20, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 20, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 20, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 20, 20, 20, 20, 20, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 20, 20, 20, 20, 20, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 20, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 20, 20, 20, 4, 20, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 20, 20, 4, 20, 20, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 31, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 4, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 31, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 4, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_254, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 9, 9, 9, 9, 9, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_258, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 9, 9, 9, 9, 9, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_SHOP4_1, + rom_shop4_1_model, + rom_shop4_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_257, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 1, 0, 2, 2, 0, mCoBG_ATTRIBUTE_FLOOR}, { 0, 1, 0, 2, 2, 0, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_FLOOR}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_HOLE_TEST, + grd_s_hole_test_model, + grd_s_hole_test_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 2, 0, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 0, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 0, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 0, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 0, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 2, 2, 2, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 2, 2, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 2, 2, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 2, 2, 0, mCoBG_ATTRIBUTE_SOIL0}, { 0, 1, 0, 2, 2, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 3, 4, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 2, mCoBG_ATTRIBUTE_SOIL0}, { 0, 3, 2, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 4, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 6, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 6, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 8, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 8, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 8, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 8, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_63}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 6, 8, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 6, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_63}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 6, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 6, 8, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 6, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_GRASS0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 6, 4, mCoBG_ATTRIBUTE_63}, { 0, 6, 4, 6, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 6, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 6, 8, 6, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 6, 4, 4, mCoBG_ATTRIBUTE_63}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_63}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 6, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_63}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 6, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 7, 8, 6, 6, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_63}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 6, 8, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 8, 8, 8, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 5, 6, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_63}, { 0, 6, 6, 4, 6, 8, mCoBG_ATTRIBUTE_SOIL0}, { 0, 6, 8, 6, 4, 6, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 6, mCoBG_ATTRIBUTE_63}, { 0, 4, 6, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_1, + grd_s_m_1_model, + grd_s_m_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_1, + grd_s_m_r1_1_model, + grd_s_m_r1_1_modelT, + grd_s_m_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 9 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + }, + }, + { + BG_TYPE_GRD_S_E2_M_1, + grd_s_e2_m_1_model, + grd_s_e2_m_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_48}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 1, 28, 28, 28, 0, 28, mCoBG_ATTRIBUTE_41}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 1, 28, 28, 28, 0, 28, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E3_M_1, + grd_s_e3_m_1_model, + grd_s_e3_m_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_49}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 1, 28, 28, 0, 28, 28, mCoBG_ATTRIBUTE_40}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 28, 28, 0, 28, 28, mCoBG_ATTRIBUTE_40}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, { 0, 28, 28, 28, 28, 28, mCoBG_ATTRIBUTE_50}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_249, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 4, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 4, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 4, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 4, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 31, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 4, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 31, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 4, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_292, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_250, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_251, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 9, 9, 9, 9, 9, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_252, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_SHOP4_FUKU, + rom_shop4_fuku_model, + rom_shop4_fuku_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_2, + grd_s_m_r1_2_model, + grd_s_m_r1_2_modelT, + grd_s_m_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 1, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_56}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_3, + grd_s_m_r1_3_model, + grd_s_m_r1_3_modelT, + grd_s_m_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 1, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_56}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 13 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_4, + grd_s_m_r1_4_model, + grd_s_m_r1_4_modelT, + grd_s_m_r1_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_5, + grd_s_m_r1_5_model, + grd_s_m_r1_5_modelT, + grd_s_m_r1_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_57}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 8 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 9 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 13 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_B_1, + grd_s_m_r1_b_1_model, + grd_s_m_r1_b_1_modelT, + grd_s_m_r1_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_57}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_B_2, + grd_s_m_r1_b_2_model, + grd_s_m_r1_b_2_modelT, + grd_s_m_r1_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + }, + }, + { + BG_TYPE_GRD_S_M_R1_B_3, + grd_s_m_r1_b_3_model, + grd_s_m_r1_b_3_modelT, + grd_s_m_r1_b_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_32}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_32}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_35}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_35}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 1, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_56}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 5, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + }, + }, + { + BG_TYPE_GRD_S_M_2, + grd_s_m_2_model, + grd_s_m_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_3, + grd_s_m_3_model, + grd_s_m_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 8 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_4, + grd_s_m_4_model, + grd_s_m_4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 9 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_5, + grd_s_m_5_model, + grd_s_m_5_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 13 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_6, + grd_s_m_6_model, + grd_s_m_6_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 9 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_7, + grd_s_m_7_model, + grd_s_m_7_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_8, + grd_s_m_8_model, + grd_s_m_8_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_9, + grd_s_m_9_model, + grd_s_m_9_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 8 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_10, + grd_s_m_10_model, + grd_s_m_10_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C2_S_3, + grd_s_c2_s_3_model, + grd_s_c2_s_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 16, 4, mCoBG_ATTRIBUTE_58}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS3}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_49}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_49}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_49}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_49}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_49}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_49}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_S_2, + grd_s_c7_s_2_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 6, 6, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 8, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 8, 8, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 10, 10, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_49}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 12, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_49}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 10, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 8, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_SOIL2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 6, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_SOIL2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 5, 4, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_SOIL2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_S_3, + grd_s_c7_s_3_model, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_49}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 15, 16, 14, 14, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_49}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 13, 14, 12, 12, 14, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_49}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 11, 12, 10, 10, 12, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_49}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_49}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 10, 4, 10, 10, 10, mCoBG_ATTRIBUTE_55}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_49}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_49}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_48}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_49}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_GRASS2}, { 0, 9, 10, 8, 8, 10, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_49}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_GRASS2}, { 0, 7, 8, 6, 6, 8, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_49}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_GRASS2}, { 0, 5, 6, 4, 4, 6, mCoBG_ATTRIBUTE_48}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_C7_R3_2, + grd_s_c7_r3_2_model, + grd_s_c7_r3_2_modelT, + grd_s_c7_r3_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 4, 16, 16, 16, mCoBG_ATTRIBUTE_55}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_46}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 16, 16, 0, 16, 16, mCoBG_ATTRIBUTE_40}, { 1, 16, 16, 16, 12, 16, mCoBG_ATTRIBUTE_41}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_61}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_RIVER_NW}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 12, 12, 0, 12, 12, mCoBG_ATTRIBUTE_WATERFALL}, { 1, 16, 12, 16, 16, 16, mCoBG_ATTRIBUTE_39}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_43}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_WATERFALL}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS1}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_49}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS0}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_GRASS2}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 1, 16, 16, 4, 16, 16, mCoBG_ATTRIBUTE_56}, { 0, 16, 16, 16, 16, 16, mCoBG_ATTRIBUTE_50}, { 1, 16, 16, 16, 4, 16, mCoBG_ATTRIBUTE_57}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_RIVER, 1, 5 }, + { mFI_SOUND_SOURCE_RIVER, 14, 5 }, + { mFI_SOUND_SOURCE_RIVER, 5, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_MUSEUM1, + rom_museum1_model, + rom_museum1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_MUSEUM2, + rom_museum2_model, + rom_museum2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_MUSEUM3, + rom_museum3_model, + rom_museum3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_MUSEUM5, + rom_museum5_model, + rom_museum5_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 12, 12, 12, 12, 12, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_282, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_283, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_47}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_284, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 1, 0, 0, 2, 2, mCoBG_ATTRIBUTE_31}, { 0, 3, 2, 2, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_285, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_31}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_286, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_31}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_287, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_31}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_288, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 8, 8, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 5, 6, 6, 4, 4, mCoBG_ATTRIBUTE_47}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 3, 4, 4, 2, 2, mCoBG_ATTRIBUTE_31}, { 0, 1, 2, 2, 0, 0, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_289, + NULL, + NULL, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 0, 5, 4, 4, 6, 6, mCoBG_ATTRIBUTE_47}, { 0, 7, 6, 6, 8, 8, mCoBG_ATTRIBUTE_47}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_TAILOR, + rom_tailor_model, + rom_tailor_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 8, 8, 8, 8, 8, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 10, 10, 10, 10, 10, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_TOUDAI, + rom_toudai_model, + rom_toudai_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 4, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 4, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 6, 4, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 1, 6, 6, 6, 6, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 6, 6, 4, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 1, 6, 6, 6, 4, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 31, 31, 31, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 1, 31, 4, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MU_1, + grd_s_f_mu_1_model, + grd_s_f_mu_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MU_2, + grd_s_f_mu_2_model, + grd_s_f_mu_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_F_MU_3, + grd_s_f_mu_3_model, + grd_s_f_mu_3_modelT, + grd_s_f_mu_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_61}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_48}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_POND, 12, 8 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_TA_1, + grd_s_m_ta_1_model, + grd_s_m_ta_1_modelT, + grd_s_m_ta_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 1, 4, 2, 4, 4, 4, mCoBG_ATTRIBUTE_55}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_TA_2, + grd_s_m_ta_2_model, + grd_s_m_ta_2_modelT, + grd_s_m_ta_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_TA_3, + grd_s_m_ta_3_model, + grd_s_m_ta_3_modelT, + grd_s_m_ta_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_STONE}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS3}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 14 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_WF_1, + grd_s_m_wf_1_model, + grd_s_m_wf_1_modelT, + grd_s_m_wf_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 9 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 13 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_WF_2, + grd_s_m_wf_2_model, + grd_s_m_wf_2_modelT, + grd_s_m_wf_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 12 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 11 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_M_WF_3, + grd_s_m_wf_3_model, + grd_s_m_wf_3_modelT, + grd_s_m_wf_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_BUSH}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 1, 11 }, + { mFI_SOUND_SOURCE_OCEAN, 5, 10 }, + { mFI_SOUND_SOURCE_OCEAN, 10, 15 }, + { mFI_SOUND_SOURCE_OCEAN, 14, 12 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IR_1, + grd_s_ir_1_model, + grd_s_ir_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_60}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IL_1, + grd_s_il_1_model, + grd_s_il_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_61}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 2, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 2, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IR_2, + grd_s_ir_2_model, + grd_s_ir_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IL_2, + grd_s_il_2_model, + grd_s_il_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 2, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 2, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_1, + grd_s_o_1_model, + grd_s_o_1_modelT, + grd_s_o_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_2, + grd_s_o_2_model, + grd_s_o_2_modelT, + grd_s_o_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_3, + grd_s_o_3_model, + grd_s_o_3_modelT, + grd_s_o_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_4, + grd_s_o_4_model, + grd_s_o_4_modelT, + grd_s_o_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E2_O_1, + grd_s_e2_o_1_model, + grd_s_e2_o_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_E3_O_1, + grd_s_e3_o_1_model, + grd_s_e3_o_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_5, + grd_s_o_5_model, + grd_s_o_5_modelT, + grd_s_o_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_6, + grd_s_o_6_model, + grd_s_o_6_modelT, + grd_s_o_6_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_7, + grd_s_o_7_model, + grd_s_o_7_modelT, + grd_s_o_7_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_8, + grd_s_o_8_model, + grd_s_o_8_modelT, + grd_s_o_8_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_9, + grd_s_o_9_model, + grd_s_o_9_modelT, + grd_s_o_9_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_10, + grd_s_o_10_model, + grd_s_o_10_modelT, + grd_s_o_10_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_I_1, + grd_s_o_i_1_model, + grd_s_o_i_1_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_I_2, + grd_s_o_i_2_model, + grd_s_o_i_2_modelT, + grd_s_o_i_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_1, + grd_s_o_r1_1_model, + grd_s_o_r1_1_modelT, + grd_s_o_r1_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_2, + grd_s_o_r1_2_model, + grd_s_o_r1_2_modelT, + grd_s_o_r1_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_3, + grd_s_o_r1_3_model, + grd_s_o_r1_3_modelT, + grd_s_o_r1_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_4, + grd_s_o_r1_4_model, + grd_s_o_r1_4_modelT, + grd_s_o_r1_4_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_5, + grd_s_o_r1_5_model, + grd_s_o_r1_5_modelT, + grd_s_o_r1_5_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_B_1, + grd_s_o_r1_b_1_model, + grd_s_o_r1_b_1_modelT, + grd_s_o_r1_b_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_B_2, + grd_s_o_r1_b_2_model, + grd_s_o_r1_b_2_modelT, + grd_s_o_r1_b_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_R1_B_3, + grd_s_o_r1_b_3_model, + grd_s_o_r1_b_3_modelT, + grd_s_o_r1_b_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_TA_1, + grd_s_o_ta_1_model, + grd_s_o_ta_1_modelT, + grd_s_o_ta_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_TA_2, + grd_s_o_ta_2_model, + grd_s_o_ta_2_modelT, + grd_s_o_ta_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_TA_3, + grd_s_o_ta_3_model, + grd_s_o_ta_3_modelT, + grd_s_o_ta_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_WF_1, + grd_s_o_wf_1_model, + grd_s_o_wf_1_modelT, + grd_s_o_wf_1_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_WF_2, + grd_s_o_wf_2_model, + grd_s_o_wf_2_modelT, + grd_s_o_wf_2_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_O_WF_3, + grd_s_o_wf_3_model, + grd_s_o_wf_3_modelT, + grd_s_o_wf_3_evw_anime, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IR_2, + grd_s_ir_2_model, + grd_s_ir_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 4, 2, 2, 2, mCoBG_ATTRIBUTE_SAND}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_25}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 0, 2, mCoBG_ATTRIBUTE_37}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 2, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IL_2, + grd_s_il_2_model, + grd_s_il_2_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 2, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 2, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IR_3, + grd_s_ir_3_model, + grd_s_ir_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_28}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IL_3, + grd_s_il_3_model, + grd_s_il_3_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 2, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 2, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IR_4, + grd_s_ir_4_model, + grd_s_ir_4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_30}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_27}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_31}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_WOOD}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_29}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_63}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 3, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 3, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 12, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_GRD_S_IL_4, + grd_s_il_4_model, + grd_s_il_4_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_59}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_62}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_E}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 4, 0, mCoBG_ATTRIBUTE_42}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_N}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_NW}, { 1, 4, 0, 4, 4, 4, mCoBG_ATTRIBUTE_39}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_43}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 2, 4, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL1}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_44}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_26}, { 0, 2, 2, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, { 0, 3, 4, 2, 2, 4, mCoBG_ATTRIBUTE_SAND}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_W}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_45}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL2}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_SOIL0}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_GRASS2}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 2, 2, 0, 2, 2, mCoBG_ATTRIBUTE_38}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, { 0, 2, 2, 2, 2, 2, mCoBG_ATTRIBUTE_36}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 1, 4, 4, 0, 4, 4, mCoBG_ATTRIBUTE_40}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_46}, { 1, 4, 4, 4, 0, 4, mCoBG_ATTRIBUTE_41}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, { 0, 1, 2, 0, 0, 2, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SW}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_S}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_RIVER_SE}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + { { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, { 0, 0, 0, 0, 0, 0, mCoBG_ATTRIBUTE_SEA}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_OCEAN, 2, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 0 }, + { mFI_SOUND_SOURCE_OCEAN, 2, 7 }, + { mFI_SOUND_SOURCE_OCEAN, 13, 7 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, + { + BG_TYPE_ROM_TENT, + rom_tent_model, + rom_tent_modelT, + NULL, + 0, + 00000000, + 00000000, + // collision data + { + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 6, 6, 6, 6, 6, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 7, 7, 7, 7, 7, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 4, 4, 4, 4, 4, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_FLOOR}, }, + }, + // sound source data + { + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + { mFI_SOUND_SOURCE_NONE, 0, 0 }, + }, + }, +}; + +extern int data_bgd_number = ARRAY_COUNT(data_bgd); diff --git a/src/data/field/bg/acre/grd_player_select/grd_player_select.c b/src/data/field/bg/acre/grd_player_select/grd_player_select.c new file mode 100644 index 00000000..9d46bce7 --- /dev/null +++ b/src/data/field/bg/acre/grd_player_select/grd_player_select.c @@ -0,0 +1,77 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_open_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_open_pal.inc" +}; + +static u8 rom_open_floor_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_open_floor_tex.inc" +}; + +static u8 rom_open_shade_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_open_shade_tex.inc" +}; + +static u8 rom_open_spot2_tex_rgb_i4[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_open_spot2_tex_rgb_i4.inc" +}; + +static u8 rom_open_spot_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_open_spot_tex.inc" +}; + +static Vtx grd_player_select_v[] = { +#include "assets/field/bg/grd_player_select_v.inc" +}; + +extern Gfx grd_player_select_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, TEXEL1, TEXEL1, 0, 0, 0, COMBINED, + COMBINED, 0, PRIM_LOD_FRAC, 0), + gsDPSetPrimColor(0, 150, 255, 255, 255, 255), + gsDPSetEnvColor(0xFF, 0xFF, 0x82, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_open_spot2_tex_rgb_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 15, 15), + gsDPSetTextureImage_Dolphin(G_IM_FMT_I, G_IM_SIZ_8b, 32, 64, rom_open_spot_tex), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&grd_player_select_v[12], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 0, 0, 0, TEXEL0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 0, 0, 0, 255), + gsDPLoadTextureBlock_4b_Dolphin(rom_open_shade_tex, G_IM_FMT_I, 32, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_player_select_v[16], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_player_select_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, PRIMITIVE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 255, 255, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_open_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_open_floor_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&grd_player_select_v[0], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c b/src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c new file mode 100644 index 00000000..005b7533 --- /dev/null +++ b/src/data/field/bg/acre/grd_player_select/grd_player_select_evw_anime.c @@ -0,0 +1,9 @@ +#include "evw_anime.h" + +/* @HACK - this is probably aligned to 32 bytes because it and the other data were compiled into a single object file + the other TU has things aligned to 32 bytes */ +static EVW_ANIME_SCROLL grd_player_select_evw_anime_1[] ATTRIBUTE_ALIGN(32) = { { 1, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +extern EVW_ANIME_DATA grd_player_select_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_player_select_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_post_office/grd_post_office.c b/src/data/field/bg/acre/grd_post_office/grd_post_office.c new file mode 100644 index 00000000..cffa8145 --- /dev/null +++ b/src/data/field/bg/acre/grd_post_office/grd_post_office.c @@ -0,0 +1,670 @@ +#include "libforest/gbi_extensions.h" + +static u16 yubin_k_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_k_pal.inc" +}; + +static u16 yubin_k2_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_k2_pal.inc" +}; + +static u16 yubin_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_floor_pal.inc" +}; + +static u16 yubin_hakari_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_hakari_pal.inc" +}; + +static u16 yubin_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_wall_pal.inc" +}; + +static u16 yubin_letter_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_letter_pal.inc" +}; + +static u16 yubin_us_bag_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_bag_pal.inc" +}; + +static u16 zzzyubin_tree_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/zzzyubin_tree_pal.inc" +}; + +static u16 yubin_t_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_t_pal.inc" +}; + +static u16 yubin_us_card_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_card_pal.inc" +}; + +static u8 yuibn_kaunta01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yuibn_kaunta01_tex.inc" +}; + +static u8 yuibn_kaunta02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yuibn_kaunta02_tex.inc" +}; + +static u8 yuibn_desk01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yuibn_desk01_tex.inc" +}; + +static u8 yubin_ark01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_ark01_tex.inc" +}; + +static u8 yuibn_kaunta03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yuibn_kaunta03_tex.inc" +}; + +static u8 yuibn_kaunta04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yuibn_kaunta04_tex.inc" +}; + +static u8 yubin_floor01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_floor01_tex.inc" +}; + +static u8 yubin_floor02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_floor02_tex.inc" +}; + +static u8 yubin_floor03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_floor03_tex.inc" +}; + +static u8 yubin_hakari01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_hakari01_tex.inc" +}; + +static u8 yubin_hakari02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_hakari02_tex.inc" +}; + +static u8 yubin_hakari03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_hakari03_tex.inc" +}; + +static u8 yubin_wall04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_wall04_tex.inc" +}; + +static u8 yubin_letter01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_letter01_tex.inc" +}; + +static u8 yubin_window_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_window_tex.inc" +}; + +static u8 yubin_us_bag_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_bag_tex.inc" +}; + +static u8 yubin_tree2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_tree2_tex.inc" +}; + +static u8 yubin_tree_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_tree_tex.inc" +}; + +static u8 yubin_tree3_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_tree3_tex.inc" +}; + +static u8 yubin_tree4_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_tree4_tex.inc" +}; + +static u8 yubin_step_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_step_tex.inc" +}; + +static u8 rom_yubinkyoku_akril_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yubinkyoku_akril_tex.inc" +}; + +static u8 rom_yubinkyoku_shede_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yubinkyoku_shede_tex.inc" +}; + +static u8 yubin_us_card_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_card_tex.inc" +}; + +static u8 yubin_us_mat_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_mat_tex.inc" +}; + +static u8 rom_yubinkyoku_shadow_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yubinkyoku_shadow_tex.inc" +}; + +static u8 yubin_us_card2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/yubin_us_card2_tex.inc" +}; + +static Vtx grd_post_office_v[] = { +#include "assets/field/bg/grd_post_office_v.inc" +}; + +extern Gfx grd_post_office_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 255, 255, 255, 120), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_yubinkyoku_akril_tex, G_IM_FMT_I, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[197], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_post_office_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_window_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&grd_post_office_v[217], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_k_pal), + gsDPLoadTextureBlock_4b_Dolphin(yuibn_kaunta04_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[225], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, zzzyubin_tree_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_tree_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[229], 20, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(yubin_tree2_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_k2_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_ark01_tex, G_IM_FMT_CI, 32, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[249], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 8, 10, 11, // tri1 + 8, 11, 9, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 12, 14, 15, // tri1 + 12, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 0, 3, // tri1 + 20, 3, 21, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(22, 20, 21, // tri0 + 24, 25, 3, // tri1 + 24, 3, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 29, 30, // tri0 + 27, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_post_office_v[281], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 0, 6, 7, // tri2 + 0, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 11, 12, // tri1 + 11, 13, 14, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 17, 20, 1, // tri2 + 17, 1, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 26, 27, 28, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 30, 3, // tri0 + 27, 3, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_post_office_v[313], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_us_bag_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_us_bag_tex, G_IM_FMT_CI, 48, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[317], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 5, 7, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_floor03_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_post_office_v[327], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_hakari_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_hakari03_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[331], 8, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(yubin_hakari02_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_letter_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_letter01_tex, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[339], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 5, 3, // tri0 + 2, 1, 6, // tri1 + 2, 6, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_us_mat_tex, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[346], 22, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_us_card_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_us_card_tex, G_IM_FMT_CI, 32, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10 // tri2 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 13, // tri2 + 17, 15, 13 // tri3 + ), + gsSPNTriangles_5b(12, 17, 13, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_t_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_step_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[0], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_wall04_tex, G_IM_FMT_CI, 32, 48, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[6], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 2, // tri0 + 3, 6, 5, // tri1 + 7, 4, 8, // tri2 + 4, 0, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 11, // tri0 + 9, 11, 17, // tri1 + 15, 16, 17, // tri2 + 18, 4, 7 // tri3 + ), + gsSPNTriangles_5b(19, 18, 7, // tri0 + 14, 13, 6, // tri1 + 3, 14, 6, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 20, 22, 24, // tri1 + 20, 24, 25, // tri2 + 20, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 26, 25, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_post_office_v[38], 32, 0), + gsSPNTrianglesInit_5b(34, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 5, 9, // tri2 + 5, 7, 9 // tri3 + ), + gsSPNTriangles_5b(7, 10, 9, // tri0 + 5, 11, 6, // tri1 + 11, 12, 6, // tri2 + 5, 13, 11 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 16, 15, 18 // tri3 + ), + gsSPNTriangles_5b(17, 16, 18, // tri0 + 19, 12, 20, // tri1 + 17, 19, 20, // tri2 + 13, 17, 20 // tri3 + ), + gsSPNTriangles_5b(13, 20, 12, // tri0 + 17, 21, 19, // tri1 + 17, 22, 21, // tri2 + 17, 18, 22 // tri3 + ), + gsSPNTriangles_5b(23, 3, 2, // tri0 + 23, 2, 24, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 23, 27, // tri0 + 23, 25, 27, // tri1 + 25, 28, 27, // tri2 + 23, 29, 3 // tri3 + ), + gsSPNTriangles_5b(29, 30, 3, // tri0 + 23, 31, 29, // tri1 + 31, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_floor01_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_MIRROR, 0, 0), + gsSPVertex(&grd_post_office_v[70], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 5, 7, 2, // tri1 + 4, 6, 8, // tri2 + 9, 4, 10 // tri3 + ), + gsSPNTriangles_5b(4, 8, 10, // tri0 + 11, 12, 13, // tri1 + 3, 14, 15, // tri2 + 16, 3, 0 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 21, 22, 18 // tri3 + ), + gsSPNTriangles_5b(23, 20, 17, // tri0 + 21, 20, 24, // tri1 + 25, 17, 19, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b(26, 17, 25, // tri0 + 26, 23, 17, // tri1 + 21, 28, 22, // tri2 + 29, 30, 31 // tri3 + ), + gsSPNTriangles_5b(21, 24, 31, // tri0 + 30, 21, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(yubin_floor02_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_MIRROR, 0, 0), + gsSPVertex(&grd_post_office_v[102], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 9, 0, 2, // tri2 + 9, 8, 0 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 9, 11, 10, // tri1 + 12, 8, 10, // tri2 + 13, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 10, 14, // tri0 + 11, 15, 10, // tri1 + 13, 14, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 21, 22, 23, // tri1 + 22, 19, 23, // tri2 + 19, 18, 23 // tri3 + ), + gsSPNTriangles_5b(21, 24, 22, // tri0 + 21, 25, 24, // tri1 + 21, 26, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(29, 30, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_post_office_v[133], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_k_pal), + gsDPLoadTextureBlock_4b_Dolphin(yuibn_kaunta03_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_post_office_v[136], 28, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(yuibn_desk01_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(yuibn_kaunta02_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(yuibn_kaunta01_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, zzzyubin_tree_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_tree4_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_post_office_v[164], 14, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(yubin_tree3_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 7, 10, 11 // tri2 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 12, 13, // tri1 + 10, 13, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_hakari_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_hakari01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[178], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 5, // tri0 + 6, 3, 2, // tri1 + 6, 2, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, yubin_us_card_pal), + gsDPLoadTextureBlock_4b_Dolphin(yubin_us_card2_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[185], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPVertex(&grd_post_office_v[189], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 120, 10, 0, 30, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_yubinkyoku_shadow_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[201], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_yubinkyoku_shede_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_post_office_v[209], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_1/grd_s_c1_1.c b/src/data/field/bg/acre/grd_s_c1_1/grd_s_c1_1.c new file mode 100644 index 00000000..45530f34 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_1/grd_s_c1_1.c @@ -0,0 +1,297 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_1_v[] = { +#include "assets/field/bg/grd_s_c1_1_v.inc" +}; + +extern Gfx grd_s_c1_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_1_v[201], 29, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 0, 15, 16, // tri0 + 17, 18, 19, // tri1 + 18, 3, 20, // tri2 + 3, 1, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 21, 23, // tri1 + 15, 24, 25, // tri2 + 21, 26, 22 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 7, 9, 5, // tri1 + 5, 4, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 7, 15, // tri1 + 7, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 10, 12, // tri0 + 27, 28, 29, // tri1 + 28, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_1_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 2, 3, // tri0 + 8, 9, 10, // tri1 + 9, 1, 10, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 15, 16, 4, // tri2 + 16, 5, 4 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 24, 17, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 27, 29, 28, // tri1 + 30, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_1_v[63], 26, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 4 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 8, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 24, // tri0 + 25, 23, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_1_v[89], 31, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 10, 6, // tri1 + 12, 9, 8, // tri2 + 13, 2, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 16, // tri0 + 17, 16, 18, // tri1 + 3, 1, 0, // tri2 + 19, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 23, 20, 24, // tri1 + 21, 25, 26, // tri2 + 25, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 23, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_1_v[120], 32, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 1, 4, 2, // tri1 + 4, 6, 2, // tri2 + 6, 7, 2 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 9, 12, 10, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 9, 14, // tri0 + 9, 11, 14, // tri1 + 11, 15, 14, // tri2 + 12, 13, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 22, 0, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 1, 0, // tri0 + 24, 12, 25, // tri1 + 24, 10, 12, // tri2 + 8, 26, 11 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 11, // tri0 + 26, 22, 27, // tri1 + 26, 28, 22, // tri2 + 28, 1, 22 // tri3 + ), + gsSPNTriangles_5b( + 28, 3, 1, // tri0 + 5, 29, 6, // tri1 + 5, 30, 29, // tri2 + 30, 17, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 20, 17, // tri0 + 30, 31, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_1_v[152], 20, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 2, 3, 18 // tri3 + ), + gsSPNTriangles_5b( + 3, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_1_v[172], 29, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 5, 12, 13, // tri2 + 12, 7, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 18, 22, // tri2 + 16, 3, 23 // tri3 + ), + gsSPNTriangles_5b( + 3, 1, 23, // tri0 + 21, 22, 24, // tri1 + 25, 21, 24, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 0, 26, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_2/grd_s_c1_2.c b/src/data/field/bg/acre/grd_s_c1_2/grd_s_c1_2.c new file mode 100644 index 00000000..8ba43097 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_2/grd_s_c1_2.c @@ -0,0 +1,330 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_2_v[] = { +#include "assets/field/bg/grd_s_c1_2_v.inc" +}; + +extern Gfx grd_s_c1_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_2_v[222], 15, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 7, 9, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 7, 5, // tri1 + 5, 3, 2, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 10, // tri0 + 10, 12, 13, // tri1 + 12, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 17, 19, 23 // tri3 + ), + gsSPNTriangles_5b( + 19, 24, 23, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 26, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c1_2_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 13, 12, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 9, 19, // tri0 + 20, 21, 9, // tri1 + 21, 22, 9, // tri2 + 22, 13, 9 // tri3 + ), + gsSPNTriangles_5b( + 19, 23, 17, // tri0 + 24, 11, 25, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 30, 29, 8, // tri1 + 31, 30, 8, // tri2 + 5, 31, 8 // tri3 + ), + gsSPVertex(&grd_s_c1_2_v[62], 15, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 11, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 11, 6, 12, // tri0 + 10, 11, 12, // tri1 + 6, 5, 12, // tri2 + 13, 12, 5 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_2_v[77], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 3, 8, 9, // tri1 + 3, 4, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 15, 12, // tri0 + 14, 13, 16, // tri1 + 13, 17, 16, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 18, 21, 20, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 7, 22, // tri0 + 22, 7, 6, // tri1 + 23, 24, 25, // tri2 + 23, 5, 24 // tri3 + ), + gsSPNTriangles_5b( + 6, 5, 23, // tri0 + 25, 24, 26, // tri1 + 24, 27, 26, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 28, // tri0 + 28, 30, 31, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_2_v[109], 28, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 5, 14, 4, // tri1 + 7, 6, 14, // tri2 + 14, 6, 4 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 17, 16, 9, // tri1 + 15, 18, 16, // tri2 + 16, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 20, 21, 22, // tri1 + 22, 21, 19, // tri2 + 19, 18, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 20, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 10, 25, // tri0 + 26, 27, 10, // tri1 + 11, 10, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_2_v[137], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 1, 7, 8, // tri1 + 9, 6, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 15, // tri0 + 16, 14, 15, // tri1 + 15, 9, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 22, 23, 21, // tri1 + 22, 24, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 27, 29, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_2_v[169], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 6, 11, // tri1 + 12, 13, 14, // tri2 + 15, 12, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 17, 18, // tri0 + 17, 8, 19, // tri1 + 20, 21, 22, // tri2 + 21, 15, 23 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 15, 16, 23, // tri1 + 24, 25, 26, // tri2 + 27, 24, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_2_v[201], 6, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_2_v[207], 15, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 4, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 6, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_3/grd_s_c1_3.c b/src/data/field/bg/acre/grd_s_c1_3/grd_s_c1_3.c new file mode 100644 index 00000000..0de7b476 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_3/grd_s_c1_3.c @@ -0,0 +1,312 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_3_v[] = { +#include "assets/field/bg/grd_s_c1_3_v.inc" +}; + +extern Gfx grd_s_c1_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_3_v[203], 23, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 16, // tri0 + 17, 15, 18, // tri1 + 19, 17, 20, // tri2 + 21, 19, 22 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 0, 2, 5, // tri1 + 5, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 8, 13, 9, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 4, 16, // tri0 + 0, 17, 1, // tri1 + 1, 16, 4, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 21, 22, 19, // tri1 + 21, 23, 22, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 19, 14, 20, // tri0 + 16, 20, 14, // tri1 + 21, 18, 17, // tri2 + 10, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 25, // tri0 + 11, 27, 25, // tri1 + 27, 28, 25, // tri2 + 28, 29, 25 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 25, // tri0 + 30, 26, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_3_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 6, // tri0 + 1, 4, 6, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 13, 11, // tri1 + 12, 14, 13, // tri2 + 13, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 15, 18, // tri1 + 19, 20, 21, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b( + 24, 10, 8, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 18, 29, 16 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_3_v[62], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 6, 8, 4, // tri1 + 9, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_3_v[74], 32, 0), + gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 7, 8, 3 // tri3 + ), + gsSPNTriangles_5b( + 8, 4, 3, // tri0 + 6, 9, 7, // tri1 + 6, 10, 9, // tri2 + 9, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 8, // tri0 + 10, 12, 9, // tri1 + 12, 13, 9, // tri2 + 13, 14, 9 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 9, // tri0 + 12, 15, 13, // tri1 + 12, 16, 15, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 14, // tri0 + 16, 18, 15, // tri1 + 18, 19, 15, // tri2 + 19, 20, 15 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 15, // tri0 + 18, 21, 19, // tri1 + 18, 22, 21, // tri2 + 21, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 20, // tri0 + 22, 24, 21, // tri1 + 24, 25, 21, // tri2 + 25, 26, 21 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 21, // tri0 + 24, 27, 25, // tri1 + 24, 28, 27, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 30, 26, 27, // tri1 + 26, 25, 27, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_c1_3_v[106], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_3_v[111], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 28, 29, 23, // tri1 + 30, 31, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_3_v[143], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 8, 10, 11, // tri1 + 8, 11, 9, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 14, 16, 17, // tri1 + 16, 18, 19, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 22, 23, 24, // tri1 + 25, 26, 23, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_3_v[174], 6, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_3_v[180], 23, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 17, 18, 19, // tri1 + 12, 20, 21, // tri2 + 20, 14, 22 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_4/grd_s_c1_4.c b/src/data/field/bg/acre/grd_s_c1_4/grd_s_c1_4.c new file mode 100644 index 00000000..f9c8513e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_4/grd_s_c1_4.c @@ -0,0 +1,342 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_4_v[] = { +#include "assets/field/bg/grd_s_c1_4_v.inc" +}; + +extern Gfx grd_s_c1_4_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_4_v[246], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 5, 9, // tri1 + 10, 8, 11, // tri2 + 12, 10, 13 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_4_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 8, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 13, 17, 14 // tri3 + ), + gsSPNTriangles_5b( + 6, 18, 4, // tri0 + 6, 19, 18, // tri1 + 5, 10, 7, // tri2 + 2, 20, 0 // tri3 + ), + gsSPNTriangles_5b( + 2, 21, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 19, 31, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 10, // tri0 + 11, 13, 12, // tri1 + 12, 14, 10, // tri2 + 0, 15, 1 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 0, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 20, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 30, 27, 28, // tri0 + 30, 31, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 4, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 30, 29, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[96], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_4_v[99], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 8, // tri0 + 7, 16, 14, // tri1 + 3, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 24, 2, 25, // tri1 + 26, 25, 27, // tri2 + 28, 27, 20 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[131], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 8, // tri0 + 1, 8, 2, // tri1 + 9, 0, 10, // tri2 + 6, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 14, // tri1 + 18, 19, 20, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 15, // tri0 + 13, 16, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_4_v[152], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 1, // tri0 + 2, 6, 0, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 12, 9, 13, // tri1 + 9, 14, 13, // tri2 + 9, 10, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 7, 9, // tri0 + 12, 15, 7, // tri1 + 16, 17, 18, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 17, // tri0 + 21, 20, 19, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 18, // tri0 + 24, 26, 25, // tri1 + 16, 18, 25, // tri2 + 26, 24, 12 // tri3 + ), + gsSPNTriangles_5b( + 24, 15, 12, // tri0 + 27, 0, 6, // tri1 + 8, 28, 11, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 30, 11, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[184], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 17, 19, 18, // tri1 + 13, 17, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 23, 24, 21, // tri1 + 24, 25, 21, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 28, 29, 26, // tri2 + 28, 0, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 30, 0, // tri0 + 30, 31, 0, // tri1 + 31, 1, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_4_v[216], 16, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_4_v[232], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 1, 6, 9, // tri1 + 10, 11, 12, // tri2 + 11, 3, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_5/grd_s_c1_5.c b/src/data/field/bg/acre/grd_s_c1_5/grd_s_c1_5.c new file mode 100644 index 00000000..b5c291c7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_5/grd_s_c1_5.c @@ -0,0 +1,283 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_5_v[] = { +#include "assets/field/bg/grd_s_c1_5_v.inc" +}; + +extern Gfx grd_s_c1_5_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_5_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 6, 12, // tri2 + 11, 13, 6 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 6, // tri0 + 14, 5, 6, // tri1 + 5, 15, 3, // tri2 + 16, 17, 9 // tri3 + ), + gsSPNTriangles_5b( + 17, 7, 9, // tri0 + 17, 18, 7, // tri1 + 18, 19, 7, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 20, 24, 23, // tri1 + 25, 22, 26, // tri2 + 24, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 24, 29, 27, // tri0 + 29, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_5_v[31], 27, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 7, 8, 4, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 13, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 16, // tri0 + 18, 19, 20, // tri1 + 20, 21, 18, // tri2 + 20, 2, 21 // tri3 + ), + gsSPNTriangles_5b( + 2, 3, 21, // tri0 + 21, 3, 22, // tri1 + 22, 23, 24, // tri2 + 22, 3, 23 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 24, 25, 26, // tri1 + 25, 16, 26, // tri2 + 16, 14, 26 // tri3 + ), + gsSPNTriangles_5b( + 26, 19, 18, // tri0 + 14, 19, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_5_v[58], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 18, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 22, 23, 24, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 27, // tri0 + 24, 23, 25, // tri1 + 22, 21, 23, // tri2 + 20, 29, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 29, // tri0 + 17, 19, 18, // tri1 + 16, 14, 17, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 8, 7, 9, // tri1 + 6, 5, 7, // tri2 + 4, 3, 5 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 3, // tri0 + 4, 30, 2, // tri1 + 8, 31, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_5_v[90], 27, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 9, 6, // tri1 + 8, 10, 9, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 11, // tri0 + 15, 16, 17, // tri1 + 17, 18, 19, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 18, 14, 19, // tri0 + 14, 13, 19, // tri1 + 11, 14, 12, // tri2 + 10, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 7, // tri0 + 4, 7, 5, // tri1 + 3, 5, 1, // tri2 + 2, 1, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 22, // tri0 + 22, 20, 23, // tri1 + 24, 25, 26, // tri2 + 24, 23, 25 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_5_v[117], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 15, 19, // tri1 + 18, 19, 20, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 22, 23, 24, // tri1 + 24, 25, 26, // tri2 + 26, 27, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_5_v[147], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 10, 11, 9, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 16, 17, 18, // tri1 + 19, 16, 20, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 25, 23, // tri1 + 26, 25, 24, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_5_v[179], 26, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 6, 5, 7, // tri1 + 8, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 16, 22, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c b/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c new file mode 100644 index 00000000..821c22ab --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1.c @@ -0,0 +1,375 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r1_1_v[] = { +#include "assets/field/bg/grd_s_c1_r1_1_v.inc" +}; + +extern Gfx grd_s_c1_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_1_v[256], 24, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 6, 11 // tri3 + ), + gsSPNTriangles_5b(6, 8, 11, // tri0 + 12, 11, 13, // tri1 + 12, 10, 11, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 5, 20, 21, // tri1 + 5, 21, 4, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_1_v[280], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 3, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 7, 9, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 17, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 18, 19, 12, // tri1 + 19, 1, 12, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 13, 20, // tri1 + 18, 22, 21, // tri2 + 23, 24, 11 // tri3 + ), + gsSPNTriangles_5b(24, 25, 11, // tri0 + 25, 10, 11, // tri1 + 26, 27, 28, // tri2 + 26, 29, 27 // tri3 + ), + gsSPNTriangles_5b(26, 30, 29, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 1, 5, // tri0 + 6, 7, 1, // tri1 + 7, 2, 1, // tri2 + 3, 8, 4 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 9, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 18, 15, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(22, 27, 21, // tri0 + 27, 28, 21, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPNTriangles_5b(29, 16, 31, // tri0 + 30, 21, 28, // tri1 + 16, 15, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[64], 9, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 7, 5, // tri1 + 5, 3, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r1_1_v[73], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 2, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 15, 14, 12, // tri1 + 15, 16, 14, // tri2 + 17, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 18, 19, 16, // tri1 + 20, 19, 18, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(22, 21, 20, // tri0 + 22, 23, 21, // tri1 + 22, 24, 23, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(25, 27, 28, // tri0 + 27, 26, 29, // tri1 + 7, 9, 29, // tri2 + 29, 26, 7 // tri3 + ), + gsSPNTriangles_5b(8, 30, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[104], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 6, 5, 7, // tri1 + 6, 7, 8, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 9, 7, 10, // tri1 + 10, 12, 11, // tri2 + 10, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 14, // tri1 + 17, 18, 16, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 23, 24, 22, // tri1 + 25, 26, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 25, 27, // tri0 + 24, 23, 25, // tri1 + 22, 21, 23, // tri2 + 20, 19, 21 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 16, 15, 17, // tri1 + 14, 13, 15, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[136], 21, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(3, 6, 2, // tri0 + 3, 5, 6, // tri1 + 7, 8, 9, // tri2 + 9, 8, 4 // tri3 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 13, 16, 14, // tri1 + 17, 18, 15, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 15, 18, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_1_v[157], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 7, 8, 9, // tri2 + 7, 5, 8 // tri3 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 10, 11, 9, // tri1 + 9, 8, 10, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 15, 14, 16, // tri1 + 14, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 18, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 20, 19, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26, // tri2 + 23, 21, 24 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[188], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 1, 6, 2, // tri1 + 7, 8, 9, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 11, 10, 12, // tri1 + 7, 10, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_1_v[202], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 18, 19, 20, // tri1 + 21, 20, 17, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 23, // tri0 + 27, 24, 28, // tri1 + 29, 28, 19, // tri2 + 17, 16, 21 // tri3 + ), + gsSPNTriangles_5b(24, 27, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_1_v[232], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 6, // tri0 + 9, 7, 10, // tri1 + 11, 10, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_1_v[245], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c new file mode 100644 index 00000000..1b643077 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_1/grd_s_c1_r1_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r1_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c b/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c new file mode 100644 index 00000000..a2a7e8ce --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r1_2_v[] = { +#include "assets/field/bg/grd_s_c1_r1_2_v.inc" +}; + +extern Gfx grd_s_c1_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_2_v[254], 20, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 11, 2, 10, // tri1 + 11, 0, 2, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 13, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(4, 5, 0, // tri0 + 5, 6, 0, // tri1 + 6, 7, 0, // tri2 + 7, 8, 0 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 15, 14, 8 // tri3 + ), + gsSPNTriangles_5b(16, 17, 9, // tri0 + 17, 18, 9, // tri1 + 9, 11, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 19, 23, // tri0 + 19, 21, 23, // tri1 + 21, 24, 23, // tri2 + 21, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 28, 25, // tri1 + 29, 27, 26, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(30, 29, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 4 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 8, 6, 7, // tri1 + 8, 7, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 13, 21, // tri0 + 15, 22, 13, // tri1 + 23, 2, 24, // tri2 + 1, 25, 2 // tri3 + ), + gsSPNTriangles_5b(1, 26, 25, // tri0 + 4, 3, 26, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[62], 17, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 5, 7, 4, // tri1 + 1, 4, 2, // tri2 + 4, 8, 2 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 8, 10, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_2_v[79], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 2, 28, // tri0 + 3, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[110], 12, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_2_v[122], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(21, 24, 23, // tri0 + 25, 26, 24, // tri1 + 27, 28, 26, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 30, 31, 29, // tri1 + 27, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[154], 22, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 10, 11, 12, // tri1 + 12, 13, 10, // tri2 + 13, 14, 10 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 19, 20, 16, // tri2 + 16, 20, 17 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r1_2_v[176], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 6, 8, 9, // tri1 + 6, 9, 7, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 4, 12, 5, // tri1 + 4, 13, 14, // tri2 + 4, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 13, 16, 17, // tri1 + 13, 17, 15, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 20, 22, 18, // tri1 + 22, 23, 18, // tri2 + 0, 24, 1 // tri3 + ), + gsSPNTriangles_5b(0, 25, 24, // tri0 + 25, 26, 24, // tri1 + 27, 28, 29, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(25, 21, 19, // tri0 + 25, 19, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[207], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 5, 3, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(6, 13, 7, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b(16, 15, 18, // tri0 + 19, 18, 20, // tri1 + 18, 21, 20, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 23, 22, 6, // tri1 + 22, 24, 6, // tri2 + 6, 25, 26 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 25, 27, 28, // tri1 + 25, 29, 27, // tri2 + 29, 12, 27 // tri3 + ), + gsSPNTriangles_5b(12, 29, 10, // tri0 + 29, 30, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_2_v[238], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 2, 7, 5, // tri1 + 2, 1, 7, // tri2 + 5, 7, 8 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c new file mode 100644 index 00000000..9af6bdba --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_2/grd_s_c1_r1_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r1_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c b/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c new file mode 100644 index 00000000..3ab34b4c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r1_3_v[] = { +#include "assets/field/bg/grd_s_c1_r1_3_v.inc" +}; + +extern Gfx grd_s_c1_r1_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_3_v[247], 27, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 4, 9, 8 // tri3 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 10, 2, 11, // tri1 + 10, 11, 12, // tri2 + 13, 14, 10 // tri3 + ), + gsSPNTriangles_5b(13, 10, 12, // tri0 + 3, 11, 2, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 16, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 23, 26, 25 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 6, 9, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(15, 19, 16, // tri0 + 15, 20, 19, // tri1 + 18, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(21, 24, 23, // tri0 + 18, 16, 21, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 30, 31, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(17, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(11, 13, 27, // tri0 + 27, 28, 24, // tri1 + 27, 13, 28, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_3_v[64], 19, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 7, 10, 9, // tri2 + 11, 12, 7 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 13, 12, // tri1 + 11, 15, 12, // tri2 + 16, 17, 11 // tri3 + ), + gsSPNTriangles_5b(17, 15, 11, // tri0 + 18, 0, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_3_v[83], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 3, 9, // tri1 + 8, 10, 3, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 9, 14, 17, // tri1 + 18, 4, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 11, 24, // tri0 + 23, 24, 21, // tri1 + 15, 20, 22, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 25, 29, // tri0 + 26, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_3_v[115], 24, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 11, // tri1 + 12, 11, 10, // tri2 + 13, 12, 10 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 16, 17, 14, // tri1 + 18, 19, 16, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r1_3_v[139], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 0, 5, // tri1 + 5, 8, 7, // tri2 + 9, 10, 5 // tri3 + ), + gsSPNTriangles_5b(10, 8, 5, // tri0 + 9, 5, 11, // tri1 + 5, 0, 11, // tri2 + 0, 2, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 15, 16, 13, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 22, 23, // tri1 + 21, 24, 22, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b(24, 17, 25, // tri0 + 17, 19, 25, // tri1 + 26, 15, 27, // tri2 + 18, 28, 20 // tri3 + ), + gsSPNTriangles_5b(18, 29, 28, // tri0 + 15, 8, 16, // tri1 + 8, 10, 16, // tri2 + 1, 30, 3 // tri3 + ), + gsSPNTriangles_5b(30, 31, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_3_v[171], 23, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 9, 11, 10, // tri1 + 6, 9, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 20, 21, 18, // tri1 + 21, 22, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r1_3_v[194], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 5, 2, 3, // tri1 + 4, 6, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(0, 23, 1, // tri0 + 23, 24, 1, // tri1 + 23, 25, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 29, 30, 28, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r1_3_v[226], 21, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 13, 15, 14, // tri1 + 15, 16, 14, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c new file mode 100644 index 00000000..8a61f2c1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r1_3/grd_s_c1_r1_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r1_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r1_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c b/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c new file mode 100644 index 00000000..7f69b817 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r2_1_v[] = { +#include "assets/field/bg/grd_s_c1_r2_1_v.inc" +}; + +extern Gfx grd_s_c1_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_1_v[260], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_1_v[247], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 10, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 7, 12, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 20, 21, 19, // tri1 + 20, 22, 21, // tri2 + 20, 23, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 1, 25, 3, // tri1 + 2, 3, 26, // tri2 + 27, 28, 23 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 30, 24, 28, // tri1 + 24, 23, 28, // tri2 + 17, 31, 18 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 12, 21, 18, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 21, 12, 22, // tri1 + 24, 25, 23, // tri2 + 26, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 24, 27, // tri1 + 29, 30, 31, // tri2 + 30, 8, 31 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_1_v[64], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 3, 7, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 4, // tri0 + 13, 14, 12, // tri1 + 13, 12, 15, // tri2 + 15, 12, 11 // tri3 + ), + gsSPNTriangles_5b(15, 11, 16, // tri0 + 11, 17, 16, // tri1 + 18, 16, 17, // tri2 + 19, 9, 8 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 21, 14, 22, // tri1 + 5, 7, 1, // tri2 + 7, 3, 1 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 26, 27, 19, // tri1 + 28, 29, 30, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_1_v[96], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_1_v[106], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 7, 10, // tri1 + 9, 6, 7, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(2, 13, 12, // tri0 + 14, 15, 0, // tri1 + 16, 17, 18, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 22, 23, 24, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_1_v[138], 20, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 10, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 9, 19, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r2_1_v[158], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 2, // tri0 + 6, 7, 2, // tri1 + 7, 8, 2, // tri2 + 6, 9, 7 // tri3 + ), + gsSPNTriangles_5b(6, 10, 9, // tri0 + 11, 12, 0, // tri1 + 13, 11, 0, // tri2 + 14, 13, 0 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 0, 12, // tri1 + 8, 3, 2, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 17, 16, // tri1 + 19, 11, 20, // tri2 + 11, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 11, 22, // tri0 + 11, 23, 22, // tri1 + 11, 19, 12, // tri2 + 11, 13, 23 // tri3 + ), + gsSPNTriangles_5b(10, 6, 24, // tri0 + 24, 6, 5, // tri1 + 18, 25, 17, // tri2 + 25, 26, 17 // tri3 + ), + gsSPNTriangles_5b(27, 28, 25, // tri0 + 27, 25, 18, // tri1 + 29, 27, 16, // tri2 + 27, 18, 16 // tri3 + ), + gsSPNTriangles_5b(30, 29, 31, // tri0 + 29, 16, 31, // tri1 + 31, 16, 15, // tri2 + 10, 24, 31 // tri3 + ), + gsSPNTriangles_5b(24, 30, 31, // tri0 + 10, 31, 15, // tri1 + 10, 15, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_1_v[190], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 7, 4, 5, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 10, 7, 8, // tri1 + 11, 12, 9, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(13, 15, 12, // tri0 + 18, 19, 20, // tri1 + 21, 22, 18, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 25, 27, 26, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_1_v[221], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 7, 8, 6, // tri1 + 9, 8, 10, // tri2 + 11, 12, 9 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_1_v[234], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c new file mode 100644 index 00000000..273930ab --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_1/grd_s_c1_r2_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r2_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c b/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c new file mode 100644 index 00000000..d53b4e66 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2.c @@ -0,0 +1,310 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r2_2_v[] = { +#include "assets/field/bg/grd_s_c1_r2_2_v.inc" +}; + +extern Gfx grd_s_c1_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_2_v[267], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 1, 3, // tri1 + 7, 0, 10, // tri2 + 5, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 10, 11, // tri0 + 0, 2, 10, // tri1 + 12, 9, 3, // tri2 + 7, 11, 8 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 9, 12, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(6, 16, 7, // tri0 + 12, 17, 18, // tri1 + 12, 9, 17, // tri2 + 1, 7, 19 // tri3 + ), + gsSPNTriangles_5b(14, 8, 11, // tri0 + 20, 13, 15, // tri1 + 21, 22, 23, // tri2 + 1, 19, 2 // tri3 + ), + gsSPNTriangles_5b(4, 24, 5, // tri0 + 6, 25, 26, // tri1 + 16, 6, 26, // tri2 + 26, 3, 5 // tri3 + ), + gsSPNTriangles_5b(26, 25, 3, // tri0 + 27, 28, 3, // tri1 + 3, 28, 29, // tri2 + 24, 4, 30 // tri3 + ), + gsSPNTriangles_5b(24, 30, 31, // tri0 + 3, 29, 4, // tri1 + 25, 27, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[32], 30, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 3, 2, 11, // tri2 + 12, 13, 5 // tri3 + ), + gsSPNTriangles_5b(13, 14, 5, // tri0 + 5, 15, 16, // tri1 + 5, 14, 15, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 17, // tri0 + 17, 19, 3, // tri1 + 17, 18, 19, // tri2 + 3, 19, 0 // tri3 + ), + gsSPNTriangles_5b(19, 20, 0, // tri0 + 20, 21, 0, // tri1 + 21, 20, 22, // tri2 + 20, 23, 22 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 22, 23, 24, // tri1 + 26, 27, 7, // tri2 + 27, 28, 7 // tri3 + ), + gsSPNTriangles_5b(7, 29, 10, // tri0 + 7, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r2_2_v[62], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 14, 0, 15 // tri3 + ), + gsSPNTriangles_5b(16, 5, 17, // tri0 + 17, 5, 4, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 23, 22, // tri0 + 24, 22, 19, // tri1 + 22, 21, 25, // tri2 + 24, 19, 18 // tri3 + ), + gsSPNTriangles_5b(26, 27, 16, // tri0 + 28, 29, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[92], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 21, 22, // tri2 + 20, 13, 16 // tri3 + ), + gsSPNTriangles_5b(20, 16, 21, // tri0 + 23, 24, 25, // tri1 + 26, 11, 10, // tri2 + 26, 10, 27 // tri3 + ), + gsSPNTriangles_5b(23, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[122], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 9, 0, 6, // tri1 + 10, 9, 6, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 12, // tri1 + 19, 20, 21, // tri2 + 11, 22, 12 // tri3 + ), + gsSPNTriangles_5b(22, 17, 12, // tri0 + 18, 23, 12, // tri1 + 24, 14, 16, // tri2 + 25, 11, 13 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 29, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[153], 27, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 17, 21, // tri0 + 18, 22, 19, // tri1 + 11, 20, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_2_v[180], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 7, 8, 9, // tri1 + 0, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(8, 13, 14, // tri0 + 8, 14, 9, // tri1 + 13, 4, 15, // tri2 + 16, 7, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 21, 22, // tri1 + 21, 23, 24, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 28, // tri0 + 27, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[211], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_2_v[224], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 19, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 24, 25, 26, // tri1 + 24, 27, 28, // tri2 + 24, 28, 25 // tri3 + ), + gsSPNTriangles_5b(25, 29, 26, // tri0 + 23, 30, 20, // tri1 + 23, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_2_v[256], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 6, 10, 5 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c new file mode 100644 index 00000000..4640ef64 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_2/grd_s_c1_r2_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r2_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c b/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c new file mode 100644 index 00000000..f37b7c36 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3.c @@ -0,0 +1,365 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r2_3_v[] = { +#include "assets/field/bg/grd_s_c1_r2_3_v.inc" +}; + +extern Gfx grd_s_c1_r2_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_3_v[288], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r2_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r2_3_v[271], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 0, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 4, 13, // tri0 + 10, 8, 14, // tri1 + 9, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r2_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 0, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 20, 21, 19, // tri1 + 22, 23, 24, // tri2 + 23, 17, 24 // tri3 + ), + gsSPNTriangles_5b(11, 4, 1, // tri0 + 11, 10, 4, // tri1 + 11, 25, 12, // tri2 + 25, 26, 12 // tri3 + ), + gsSPNTriangles_5b(26, 27, 12, // tri0 + 28, 5, 7, // tri1 + 28, 29, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 8, 12, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 14, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 17, 19, 18, // tri1 + 19, 20, 18, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 9, 25, 7, // tri1 + 12, 26, 11, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 30, 28, // tri0 + 28, 31, 29, // tri1 + 30, 0, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[62], 30, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 1, 6, 5, // tri1 + 5, 7, 4, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 23, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_3_v[92], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 10, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 12, 13, // tri0 + 9, 14, 15, // tri1 + 12, 8, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_3_v[109], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 9, 14, 13, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 24, 23, 22, // tri2 + 25, 24, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 17, 28, 26, // tri1 + 15, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[140], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 14, 18 // tri3 + ), + gsSPNTriangles_5b(12, 19, 20, // tri0 + 19, 17, 21, // tri1 + 22, 23, 24, // tri2 + 22, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 26, 25, // tri0 + 28, 27, 25, // tri1 + 29, 30, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[171], 6, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r2_3_v[177], 32, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 2, 6, // tri1 + 6, 4, 7, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 2, 10, // tri1 + 2, 5, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 15, 16, 13, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 12, 23, // tri1 + 22, 24, 12, // tri2 + 21, 23, 25 // tri3 + ), + gsSPNTriangles_5b(23, 12, 25, // tri0 + 26, 21, 25, // tri1 + 21, 27, 22, // tri2 + 21, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 26, 29, // tri0 + 28, 21, 26, // tri1 + 18, 9, 11, // tri2 + 18, 20, 9 // tri3 + ), + gsSPNTriangles_5b(30, 19, 31, // tri0 + 30, 17, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[209], 24, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 8, 12, 11 // tri3 + ), + gsSPNTriangles_5b(8, 13, 12, // tri0 + 14, 0, 2, // tri1 + 14, 15, 0, // tri2 + 3, 16, 4 // tri3 + ), + gsSPNTriangles_5b(16, 17, 4, // tri0 + 18, 8, 10, // tri1 + 18, 19, 8, // tri2 + 19, 20, 8 // tri3 + ), + gsSPNTriangles_5b(20, 13, 8, // tri0 + 21, 22, 5, // tri1 + 21, 23, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r2_3_v[233], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 10, 7, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 15, 12, 16, // tri2 + 12, 11, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 13, // tri0 + 14, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26, // tri2 + 28, 29, 3 // tri3 + ), + gsSPNTriangles_5b(29, 4, 3, // tri0 + 0, 30, 1, // tri1 + 30, 5, 1, // tri2 + 30, 9, 5 // tri3 + ), + gsSPNTriangles_5b(10, 31, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r2_3_v[265], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c new file mode 100644 index 00000000..23de9825 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r2_3/grd_s_c1_r2_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r2_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r2_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r2_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c b/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c new file mode 100644 index 00000000..ec01d30b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1.c @@ -0,0 +1,291 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r3_1_v[] = { +#include "assets/field/bg/grd_s_c1_r3_1_v.inc" +}; + +extern Gfx grd_s_c1_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_1_v[208], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_1_v[197], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 4, 9, 5, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 12, // tri2 + 16, 10, 12 // tri3 + ), + gsSPNTriangles_5b(15, 8, 16, // tri0 + 8, 7, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 28, 30, 29, // tri1 + 28, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 2, 3, 7, // tri2 + 3, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 0, 16, // tri0 + 0, 2, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 22, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 30, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_1_v[63], 21, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 9, 10, 8, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 10, // tri0 + 4, 13, 5, // tri1 + 4, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 16, 6, 15, // tri1 + 4, 17, 14, // tri2 + 14, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_1_v[84], 28, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 14, // tri0 + 17, 16, 14, // tri1 + 18, 19, 17, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_1_v[112], 30, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 27, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_1_v[142], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 5, 16, 7, // tri1 + 16, 17, 7, // tri2 + 17, 18, 7 // tri3 + ), + gsSPNTriangles_5b(5, 4, 19, // tri0 + 4, 20, 19, // tri1 + 9, 19, 10, // tri2 + 19, 20, 10 // tri3 + ), + gsSPNTriangles_5b(3, 21, 2, // tri0 + 3, 22, 21, // tri1 + 22, 23, 21, // tri2 + 9, 8, 24 // tri3 + ), + gsSPNTriangles_5b(8, 25, 24, // tri0 + 8, 26, 25, // tri1 + 27, 28, 29, // tri2 + 27, 30, 28 // tri3 + ), + gsSPNTriangles_5b(17, 27, 18, // tri0 + 27, 29, 18, // tri1 + 0, 26, 31, // tri2 + 0, 25, 26 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_1_v[174], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(10, 6, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_1_v[186], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c new file mode 100644 index 00000000..0201f518 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_1/grd_s_c1_r3_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r3_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c b/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c new file mode 100644 index 00000000..23837a92 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2.c @@ -0,0 +1,313 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r3_2_v[] = { +#include "assets/field/bg/grd_s_c1_r3_2_v.inc" +}; + +extern Gfx grd_s_c1_r3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_2_v[240], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_2_v[229], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 3, 6, 1, // tri1 + 7, 4, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 25, 26, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 3 // tri3 + ), + gsSPNTriangles_5b(23, 24, 8, // tri0 + 10, 25, 11, // tri1 + 26, 27, 28, // tri2 + 26, 29, 27 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_2_v[62], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 15, 16, 17, // tri2 + 18, 16, 15 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 29, 30, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_2_v[93], 9, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_2_v[102], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 9, 18, 19, // tri1 + 18, 16, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 21, 25, // tri0 + 22, 26, 27, // tri1 + 26, 28, 29, // tri2 + 5, 24, 30 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_2_v[133], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_2_v[147], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 5, 6, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 11, 12, 10, // tri1 + 12, 13, 10, // tri2 + 12, 6, 13 // tri3 + ), + gsSPNTriangles_5b(6, 5, 13, // tri0 + 3, 14, 4, // tri1 + 3, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 19, 26, 20 // tri3 + ), + gsSPNTriangles_5b(25, 27, 23, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_2_v[179], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_2_v[186], 32, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 4, 2, 3, // tri1 + 13, 5, 3, // tri2 + 11, 7, 14 // tri3 + ), + gsSPNTriangles_5b(7, 5, 14, // tri0 + 5, 13, 14, // tri1 + 10, 12, 15, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 19, 21, // tri1 + 20, 17, 19, // tri2 + 13, 3, 22 // tri3 + ), + gsSPNTriangles_5b(1, 22, 3, // tri0 + 1, 23, 22, // tri1 + 24, 21, 25, // tri2 + 24, 20, 21 // tri3 + ), + gsSPNTriangles_5b(24, 26, 20, // tri0 + 24, 27, 26, // tri1 + 26, 17, 20, // tri2 + 26, 28, 17 // tri3 + ), + gsSPNTriangles_5b(28, 29, 17, // tri0 + 28, 15, 29, // tri1 + 28, 30, 15, // tri2 + 30, 31, 15 // tri3 + ), + gsSPNTriangles_5b(31, 10, 15, // tri0 + 31, 9, 10, // tri1 + 31, 8, 9, // tri2 + 17, 29, 18 // tri3 + ), + gsSPNTriangles_5b(29, 15, 18, // tri0 + 15, 16, 18, // tri1 + 10, 9, 11, // tri2 + 9, 7, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_2_v[218], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c new file mode 100644 index 00000000..ed284713 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_2/grd_s_c1_r3_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r3_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c b/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c new file mode 100644 index 00000000..dc7de58e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3.c @@ -0,0 +1,359 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_r3_3_v[] = { +#include "assets/field/bg/grd_s_c1_r3_3_v.inc" +}; + +extern Gfx grd_s_c1_r3_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_3_v[256], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_r3_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_r3_3_v[243], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 13, 14, // tri0 + 10, 15, 13, // tri1 + 12, 15, 10, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 14, 20, 17, // tri1 + 20, 19, 17, // tri2 + 2, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 7, // tri1 + 10, 11, 12, // tri2 + 13, 14, 10 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 24, 27, 26, // tri1 + 27, 28, 29, // tri2 + 28, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 30, 3, // tri0 + 30, 8, 3, // tri1 + 30, 31, 8, // tri2 + 27, 29, 26 // tri3 + ), + gsSPNTriangles_5b(28, 0, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[64], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 13, 12, // tri0 + 15, 16, 13, // tri1 + 16, 15, 17, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 18, 17, // tri0 + 19, 20, 18, // tri1 + 21, 20, 19, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 24, 25, 26, // tri1 + 26, 25, 27, // tri2 + 28, 24, 29 // tri3 + ), + gsSPNTriangles_5b(24, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[95], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 7, 4, // tri1 + 8, 9, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_3_v[105], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 1, 9, 10, // tri1 + 9, 6, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 17, 18, 19, // tri1 + 18, 20, 21, // tri2 + 20, 15, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 25, 27, 28, // tri2 + 27, 17, 29 // tri3 + ), + gsSPNTriangles_5b(25, 28, 23, // tri0 + 30, 24, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[137], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 6, 8, 7, // tri1 + 1, 11, 5, // tri2 + 11, 3, 5 // tri3 + ), + gsSPNTriangles_5b(3, 6, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_r3_3_v[149], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 0, 6, 5, // tri1 + 4, 3, 7, // tri2 + 3, 8, 7 // tri3 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 5, 9, 8, // tri1 + 7, 10, 11, // tri2 + 7, 8, 10 // tri3 + ), + gsSPNTriangles_5b(8, 12, 10, // tri0 + 8, 9, 12, // tri1 + 11, 13, 14, // tri2 + 11, 10, 13 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 12, 15, 13, // tri1 + 14, 16, 17, // tri2 + 14, 13, 16 // tri3 + ), + gsSPNTriangles_5b(13, 18, 16, // tri0 + 13, 15, 18, // tri1 + 17, 16, 19, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(16, 21, 20, // tri0 + 16, 18, 21, // tri1 + 19, 22, 23, // tri2 + 19, 20, 22 // tri3 + ), + gsSPNTriangles_5b(20, 24, 22, // tri0 + 20, 21, 24, // tri1 + 23, 25, 26, // tri2 + 23, 22, 25 // tri3 + ), + gsSPNTriangles_5b(22, 27, 25, // tri0 + 22, 24, 27, // tri1 + 26, 25, 28, // tri2 + 25, 29, 28 // tri3 + ), + gsSPNTriangles_5b(25, 30, 29, // tri0 + 25, 27, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[180], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_3_v[186], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 20, 22, // tri0 + 20, 24, 21, // tri1 + 24, 25, 21, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_r3_3_v[218], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_r3_3_v[230], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c new file mode 100644 index 00000000..c01a0c71 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_r3_3/grd_s_c1_r3_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c1_r3_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c1_r3_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c1_r3_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c b/src/data/field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c new file mode 100644 index 00000000..c31806b2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_s_1/grd_s_c1_s_1.c @@ -0,0 +1,268 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_s_1_v[] = { +#include "assets/field/bg/grd_s_c1_s_1_v.inc" +}; + +extern Gfx grd_s_c1_s_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_s_1_v[193], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 15, 16, 1, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 19, 14, // tri0 + 19, 20, 14, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 22, // tri0 + 25, 26, 22, // tri1 + 13, 12, 27, // tri2 + 12, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 12, 29, 28, // tri0 + 30, 23, 31, // tri1 + 30, 21, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 10, 13, 11, // tri2 + 14, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 5, 16, // tri0 + 5, 4, 16, // tri1 + 17, 18, 19, // tri2 + 18, 12, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 10, 12, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 0, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 7, 29, // tri0 + 30, 31, 23, // tri1 + 31, 24, 23, // tri2 + 30, 5, 31 // tri3 + ), + gsSPVertex(&grd_s_c1_s_1_v[64], 18, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 1, 8, // tri0 + 1, 3, 8, // tri1 + 9, 8, 3, // tri2 + 10, 9, 3 // tri3 + ), + gsSPNTriangles_5b( + 6, 11, 4, // tri0 + 11, 12, 4, // tri1 + 6, 13, 11, // tri2 + 6, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 7, 13, 14, // tri0 + 15, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_1_v[82], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 17, 7, // tri1 + 17, 18, 7, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 23, // tri0 + 20, 24, 25, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 28, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_1_v[114], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 7, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 15, 30, // tri0 + 29, 30, 27, // tri1 + 19, 26, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_1_v[145], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 3, 0, // tri1 + 12, 11, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_1_v[158], 24, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 4, 9, 8, // tri2 + 8, 10, 5 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 5, // tri0 + 11, 7, 5, // tri1 + 12, 13, 14, // tri2 + 3, 14, 2 // tri3 + ), + gsSPNTriangles_5b( + 3, 12, 14, // tri0 + 15, 16, 12, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 12, 16, 13, // tri0 + 16, 18, 13, // tri1 + 18, 19, 13, // tri2 + 15, 12, 20 // tri3 + ), + gsSPNTriangles_5b( + 12, 3, 20, // tri0 + 1, 20, 3, // tri1 + 17, 21, 18, // tri2 + 21, 22, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 18, // tri0 + 23, 19, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_1_v[182], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_s_2/grd_s_c1_s_2.c b/src/data/field/bg/acre/grd_s_c1_s_2/grd_s_c1_s_2.c new file mode 100644 index 00000000..538d595d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_s_2/grd_s_c1_s_2.c @@ -0,0 +1,322 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_s_2_v[] = { +#include "assets/field/bg/grd_s_c1_s_2_v.inc" +}; + +extern Gfx grd_s_c1_s_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_s_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_s_2_v[223], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 4, 7, // tri2 + 8, 0, 4 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 17, 11, 14, // tri1 + 17, 18, 11, // tri2 + 11, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 9, 11, // tri0 + 12, 15, 11, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 27, 28, 8, // tri2 + 29, 6, 5 // tri3 + ), + gsSPNTriangles_5b( + 22, 30, 21, // tri0 + 21, 31, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 9, 10, 11, // tri1 + 10, 12, 11, // tri2 + 10, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 17, // tri0 + 19, 21, 20, // tri1 + 22, 23, 24, // tri2 + 25, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 26, 25, 27, // tri1 + 26, 28, 23, // tri2 + 29, 30, 26 // tri3 + ), + gsSPNTriangles_5b( + 3, 31, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_2_v[64], 24, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 3, 10, 5, // tri2 + 10, 11, 5 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 10, 13, 12, // tri1 + 10, 14, 13, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 17, 15, // tri0 + 9, 18, 0, // tri1 + 18, 1, 0, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_2_v[88], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 15, 17, 18, // tri2 + 19, 20, 13 // tri3 + ), + gsSPNTriangles_5b( + 8, 21, 19, // tri0 + 4, 22, 23, // tri1 + 11, 24, 25, // tri2 + 10, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 2, // tri0 + 3, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_2_v[119], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 5, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 15, 1, 16, // tri2 + 1, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 21, 19, 22, // tri2 + 19, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 10, 24, 8, // tri0 + 10, 25, 24, // tri1 + 25, 26, 24, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 17, 1, 29, // tri1 + 1, 3, 29, // tri2 + 30, 31, 14 // tri3 + ), + gsSPVertex(&grd_s_c1_s_2_v[151], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 5, 8, 7, // tri2 + 4, 6, 3 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 9, 11, 13, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 16, 17, 18, // tri1 + 16, 0, 17, // tri2 + 18, 17, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 0, 20, // tri0 + 8, 5, 21, // tri1 + 5, 22, 21, // tri2 + 5, 4, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 15, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_2_v[181], 29, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 4, 7, // tri0 + 3, 8, 4, // tri1 + 3, 9, 8, // tri2 + 8, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 7, // tri0 + 11, 12, 13, // tri1 + 11, 14, 12, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 16, // tri0 + 18, 19, 16, // tri1 + 19, 20, 16, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 25, 26, 14, // tri1 + 26, 15, 14, // tri2 + 22, 27, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 24, // tri0 + 25, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_2_v[210], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_s_3/grd_s_c1_s_3.c b/src/data/field/bg/acre/grd_s_c1_s_3/grd_s_c1_s_3.c new file mode 100644 index 00000000..0a329bb3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_s_3/grd_s_c1_s_3.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_s_3_v[] = { +#include "assets/field/bg/grd_s_c1_s_3_v.inc" +}; + +extern Gfx grd_s_c1_s_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_s_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 7, 9, // tri1 + 7, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 8, 13, // tri0 + 14, 15, 16, // tri1 + 0, 17, 1, // tri2 + 18, 19, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 18, 21, 20, // tri1 + 20, 22, 19, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 24, // tri0 + 23, 27, 26, // tri1 + 28, 6, 5, // tri2 + 28, 29, 6 // tri3 + ), + gsSPNTriangles_5b( + 30, 28, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 7, 22, 5, // tri1 + 23, 10, 24, // tri2 + 10, 9, 24 // tri3 + ), + gsSPNTriangles_5b( + 20, 25, 26, // tri0 + 27, 28, 7, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[63], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 4, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 22, 20, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 19, // tri0 + 0, 5, 25, // tri1 + 0, 26, 5, // tri2 + 26, 3, 5 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 0, 2, 26, // tri1 + 30, 31, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[95], 12, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_3_v[107], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 2, 3, 8, // tri1 + 0, 9, 1, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 14, 11, 15, // tri1 + 14, 16, 11, // tri2 + 9, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 8, // tri0 + 6, 21, 19, // tri1 + 4, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 15, 27, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[138], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 4, // tri0 + 9, 3, 5, // tri1 + 10, 11, 12, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b( + 11, 15, 16, // tri0 + 15, 17, 18, // tri1 + 19, 20, 21, // tri2 + 20, 13, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 23, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[169], 9, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 0, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_3_v[178], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 12, // tri0 + 11, 13, 12, // tri1 + 14, 15, 16, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 11, 17, 15, // tri0 + 11, 18, 17, // tri1 + 11, 7, 18, // tri2 + 7, 6, 18 // tri3 + ), + gsSPNTriangles_5b( + 4, 19, 1, // tri0 + 19, 20, 1, // tri1 + 21, 3, 0, // tri2 + 21, 22, 3 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 1, 24, 2, // tri1 + 1, 20, 24, // tri2 + 7, 25, 9 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 9, // tri0 + 7, 12, 25, // tri1 + 27, 28, 29, // tri2 + 28, 10, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 31, 27, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[210], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 12, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 6, // tri0 + 14, 15, 4, // tri1 + 16, 14, 4, // tri2 + 16, 4, 2 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 2, // tri0 + 17, 2, 1, // tri1 + 17, 1, 18, // tri2 + 19, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 23, 20, 22, // tri1 + 11, 10, 24, // tri2 + 25, 18, 1 // tri3 + ), + gsSPNTriangles_5b( + 0, 25, 1, // tri0 + 26, 27, 28, // tri1 + 29, 30, 28, // tri2 + 30, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_3_v[242], 14, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 2, 5, // tri0 + 6, 7, 5, // tri1 + 7, 3, 5, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 8, 5, 2, // tri1 + 10, 8, 2, // tri2 + 10, 2, 1 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 1, 11, 13, // tri1 + 10, 1, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c1_s_4/grd_s_c1_s_4.c b/src/data/field/bg/acre/grd_s_c1_s_4/grd_s_c1_s_4.c new file mode 100644 index 00000000..6b06c011 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c1_s_4/grd_s_c1_s_4.c @@ -0,0 +1,337 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c1_s_4_v[] = { +#include "assets/field/bg/grd_s_c1_s_4_v.inc" +}; + +extern Gfx grd_s_c1_s_4_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c1_s_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c1_s_4_v[248], 16, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 1, 10, 11, // tri1 + 10, 7, 11, // tri2 + 8, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_4_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 14, 5, // tri0 + 14, 15, 5, // tri1 + 15, 16, 5, // tri2 + 16, 6, 5 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 17, // tri0 + 3, 18, 19, // tri1 + 18, 20, 19, // tri2 + 18, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 4, 22, 7, // tri0 + 22, 23, 7, // tri1 + 4, 24, 22, // tri2 + 12, 4, 13 // tri3 + ), + gsSPNTriangles_5b( + 24, 4, 12, // tri0 + 25, 7, 23, // tri1 + 26, 27, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 31, // tri0 + 28, 27, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b( + 2, 4, 5, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 7, 6, 10, // tri1 + 7, 10, 13, // tri2 + 7, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 16, // tri0 + 17, 14, 13, // tri1 + 17, 13, 15, // tri2 + 18, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 9, // tri0 + 20, 18, 21, // tri1 + 20, 19, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[63], 28, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 6, 9, 7, // tri0 + 7, 1, 8, // tri1 + 1, 0, 8, // tri2 + 7, 10, 1 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 10, 12, 1, // tri1 + 13, 14, 15, // tri2 + 16, 14, 9 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 13, // tri0 + 17, 19, 18, // tri1 + 19, 20, 18, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 20, 22, 21, // tri2 + 20, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_4_v[91], 16, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 8, 3, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 5, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c1_s_4_v[107], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 6, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 14, 19, 20, // tri0 + 19, 8, 21, // tri1 + 22, 16, 23, // tri2 + 24, 2, 25 // tri3 + ), + gsSPNTriangles_5b( + 0, 22, 1, // tri0 + 26, 27, 28, // tri1 + 29, 26, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[138], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 4, 8, 9, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 15, 19, // tri0 + 13, 20, 21, // tri1 + 20, 18, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 16, 23, 26, // tri0 + 24, 27, 28, // tri1 + 27, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[169], 32, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 10, 5, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 19, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[201], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c1_s_4_v[204], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 8, // tri0 + 4, 8, 5, // tri1 + 7, 9, 10, // tri2 + 7, 4, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 12, 13, 14, // tri1 + 15, 13, 12, // tri2 + 16, 15, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 12, 18, // tri0 + 17, 18, 19, // tri1 + 18, 12, 14, // tri2 + 18, 14, 20 // tri3 + ), + gsSPNTriangles_5b( + 2, 3, 18, // tri0 + 3, 19, 18, // tri1 + 2, 20, 21, // tri2 + 2, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 0, 22, 1, // tri0 + 21, 23, 2, // tri1 + 23, 0, 2, // tri2 + 23, 24, 0 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 29, 27, // tri1 + 29, 25, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c1_s_4_v[234], 14, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 1, 3, 7, // tri0 + 1, 8, 2, // tri1 + 9, 10, 8, // tri2 + 10, 2, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 8, 12, // tri0 + 11, 9, 8, // tri1 + 12, 8, 13, // tri2 + 8, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_1/grd_s_c2_1.c b/src/data/field/bg/acre/grd_s_c2_1/grd_s_c2_1.c new file mode 100644 index 00000000..1609554b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_1/grd_s_c2_1.c @@ -0,0 +1,288 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_1_v[] = { +#include "assets/field/bg/grd_s_c2_1_v.inc" +}; + +extern Gfx grd_s_c2_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_1_v[198], 23, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 0, 3, 1 // tri3 + ), + gsSPNTriangles_5b( + 9, 13, 10, // tri0 + 11, 14, 12, // tri1 + 15, 0, 2, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 7, 18, 19, // tri0 + 18, 8, 20, // tri1 + 14, 21, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 9, 8, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 15, // tri0 + 2, 20, 0, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 5, 29, // tri1 + 30, 20, 2, // tri2 + 5, 4, 31 // tri3 + ), + gsSPNTriangles_5b( + 15, 19, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 3, 5, 12, // tri1 + 9, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 9, 13, 10, // tri0 + 17, 18, 19, // tri1 + 12, 5, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 12, 20, 13, // tri0 + 22, 24, 23, // tri1 + 25, 17, 19, // tri2 + 26, 27, 0 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 0, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_1_v[64], 24, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 10, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 6, 8, // tri1 + 1, 4, 2, // tri2 + 21, 22, 2 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_1_v[88], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_1_v[101], 27, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 9, // tri0 + 12, 13, 11, // tri1 + 4, 2, 14, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 16, 18, 6, // tri1 + 19, 16, 6, // tri2 + 19, 6, 9 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 20, // tri0 + 2, 20, 14, // tri1 + 1, 21, 22, // tri2 + 1, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 18, 23, 7, // tri1 + 18, 7, 6, // tri2 + 4, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 4, 12, 5, // tri0 + 21, 1, 0, // tri1 + 24, 21, 0, // tri2 + 11, 13, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 19, 9, // tri0 + 11, 26, 9, // tri1 + 4, 15, 25, // tri2 + 13, 4, 25 // tri3 + ), + gsSPNTriangles_5b( + 11, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_1_v[128], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 5, 4, 10, // tri1 + 6, 11, 4, // tri2 + 7, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 8, 7, // tri0 + 14, 15, 11, // tri1 + 16, 10, 17, // tri2 + 12, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 3, 22, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 19, 21, 29, // tri1 + 27, 29, 28, // tri2 + 30, 31, 13 // tri3 + ), + gsSPVertex(&grd_s_c2_1_v[160], 11, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_1_v[171], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 3, 7, 4, // tri1 + 10, 11, 6, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 0, 21, // tri0 + 22, 23, 24, // tri1 + 25, 22, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_2/grd_s_c2_2.c b/src/data/field/bg/acre/grd_s_c2_2/grd_s_c2_2.c new file mode 100644 index 00000000..fc3b7e93 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_2/grd_s_c2_2.c @@ -0,0 +1,285 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_2_v[] = { +#include "assets/field/bg/grd_s_c2_2_v.inc" +}; + +extern Gfx grd_s_c2_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 6, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 16, 18, 17, // tri1 + 9, 19, 10, // tri2 + 8, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 8, 21, 20, // tri0 + 22, 23, 4, // tri1 + 23, 5, 4, // tri2 + 8, 7, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 17, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 28, // tri0 + 30, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 13, 6, 14 // tri3 + ), + gsSPNTriangles_5b( + 0, 6, 13, // tri0 + 13, 15, 16, // tri1 + 11, 17, 18, // tri2 + 11, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 24, 25, 26, // tri2 + 22, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 25, // tri0 + 27, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[94], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_2_v[98], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 13, 9, // tri1 + 13, 7, 9, // tri2 + 4, 14, 1 // tri3 + ), + gsSPNTriangles_5b( + 4, 15, 14, // tri0 + 15, 16, 14, // tri1 + 13, 17, 7, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 11, 5, 12, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 17, 21, 7, // tri0 + 17, 22, 21, // tri1 + 25, 18, 20, // tri2 + 18, 26, 19 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 19, // tri0 + 28, 29, 30, // tri1 + 28, 31, 29, // tri2 + 29, 25, 30 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[130], 31, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 16, 17, 14, // tri2 + 17, 18, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 26, 2, 25, // tri2 + 2, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 5, 28, 29, // tri0 + 5, 8, 28, // tri1 + 15, 14, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_2_v[161], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 9, 10, 11, // tri1 + 7, 9, 8, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 14, 18, 15, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 17, // tri0 + 20, 22, 23, // tri1 + 22, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 30, 27, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[193], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 11, // tri2 + 6, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 15, 16, 13, // tri1 + 17, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 26, // tri2 + 30, 27, 31 // tri3 + ), + gsSPVertex(&grd_s_c2_2_v[225], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3.c b/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3.c new file mode 100644 index 00000000..337d272d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3.c @@ -0,0 +1,307 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_3_v[] = { +#include "assets/field/bg/grd_s_c2_3_v.inc" +}; + +extern Gfx grd_s_c2_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_3_v[255], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_3_v[242], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 4, 6, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 11, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 17, 21, // tri1 + 17, 22, 21, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 26, 24, // tri0 + 23, 20, 26, // tri1 + 24, 27, 25, // tri2 + 25, 27, 28 // tri3 + ), + gsSPNTriangles_5b(20, 21, 26, // tri0 + 25, 28, 9, // tri1 + 28, 4, 9, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c2_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 8, 10, 9, // tri2 + 8, 11, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 10, // tri0 + 11, 13, 12, // tri1 + 11, 14, 13, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 26, 24, // tri0 + 26, 27, 24, // tri1 + 28, 1, 29, // tri2 + 1, 0, 29 // tri3 + ), + gsSPNTriangles_5b(3, 12, 5, // tri0 + 12, 13, 5, // tri1 + 30, 15, 31, // tri2 + 15, 17, 31 // tri3 + ), + gsSPVertex(&grd_s_c2_3_v[64], 30, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 7, 8, 9, // tri1 + 10, 7, 9, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(11, 9, 12, // tri0 + 11, 12, 13, // tri1 + 14, 13, 12, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 29, 28, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_3_v[94], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 8, 7, // tri0 + 9, 7, 6, // tri1 + 3, 5, 8, // tri2 + 0, 2, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 15, 16, 11, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 19, 21, 20, // tri1 + 19, 22, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(13, 25, 26, // tri0 + 27, 28, 29, // tri1 + 30, 27, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_3_v[126], 22, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 10, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 17, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_3_v[148], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 15, // tri1 + 14, 16, 15, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 20, 12, 21 // tri3 + ), + gsSPNTriangles_5b(12, 11, 21, // tri0 + 20, 14, 12, // tri1 + 20, 17, 14, // tri2 + 20, 22, 17 // tri3 + ), + gsSPNTriangles_5b(22, 19, 17, // tri0 + 3, 23, 2, // tri1 + 24, 25, 1, // tri2 + 25, 26, 1 // tri3 + ), + gsSPNTriangles_5b(1, 27, 24, // tri0 + 1, 0, 27, // tri1 + 27, 28, 24, // tri2 + 29, 24, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 31, 24, 29, // tri1 + 31, 25, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_3_v[180], 27, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 4, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b(6, 21, 22, // tri0 + 6, 7, 21, // tri1 + 7, 9, 21, // tri2 + 9, 23, 21 // tri3 + ), + gsSPNTriangles_5b(13, 24, 25, // tri0 + 13, 14, 24, // tri1 + 14, 26, 24, // tri2 + 14, 15, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_3_v[207], 22, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 15, 13, // tri1 + 16, 17, 15, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 2, 21, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_3_v[229], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c new file mode 100644 index 00000000..b8b2124b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_3/grd_s_c2_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c2_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c2_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c2_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c b/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c new file mode 100644 index 00000000..a16ef51b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1.c @@ -0,0 +1,319 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_r1_1_v[] = { +#include "assets/field/bg/grd_s_c2_r1_1_v.inc" +}; + +extern Gfx grd_s_c2_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r1_1_v[243], 26, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 16, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 21, 24, // tri1 + 23, 22, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r1_1_v[228], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 6, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 0, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 18, 16, 15, // tri2 + 14, 18, 15 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 10, 12, 11, // tri1 + 19, 20, 4, // tri2 + 20, 7, 4 // tri3 + ), + gsSPNTriangles_5b(21, 12, 10, // tri0 + 21, 14, 12, // tri1 + 21, 22, 14, // tri2 + 22, 23, 14 // tri3 + ), + gsSPNTriangles_5b(23, 18, 14, // tri0 + 23, 16, 18, // tri1 + 23, 24, 16, // tri2 + 2, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 2, 26, // tri0 + 28, 2, 27, // tri1 + 28, 0, 2, // tri2 + 2, 3, 25 // tri3 + ), + gsSPNTriangles_5b(3, 29, 25, // tri0 + 29, 30, 25, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_1_v[32], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_1_v[38], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b(11, 15, 14, // tri0 + 15, 16, 14, // tri1 + 15, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 21, 21, 19, // tri1 + 21, 22, 19, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 22, // tri0 + 25, 26, 22, // tri1 + 23, 24, 22, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_1_v[69], 28, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 22, 23, // tri1 + 20, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r1_1_v[97], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4, // tri2 + 2, 8, 0 // tri3 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 9, 6, 7, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 0, 17, 1, // tri1 + 0, 18, 17, // tri2 + 17, 19, 1 // tri3 + ), + gsSPNTriangles_5b(20, 15, 16, // tri0 + 14, 21, 16, // tri1 + 14, 22, 21, // tri2 + 14, 23, 22 // tri3 + ), + gsSPNTriangles_5b(15, 24, 13, // tri0 + 15, 25, 24, // tri1 + 25, 26, 24, // tri2 + 27, 19, 28 // tri3 + ), + gsSPNTriangles_5b(29, 6, 30, // tri0 + 6, 9, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_1_v[128], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 18, 1, 19 // tri3 + ), + gsSPNTriangles_5b(20, 0, 13, // tri0 + 19, 0, 20, // tri1 + 1, 0, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 24, 22, // tri0 + 24, 25, 22, // tri1 + 26, 27, 28, // tri2 + 29, 27, 26 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_1_v[158], 8, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 4, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_1_v[166], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 5, 11, // tri1 + 12, 8, 13, // tri2 + 1, 12, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_1_v[181], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 10, 5, 11, // tri1 + 12, 10, 13, // tri2 + 14, 12, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 14, 20, // tri1 + 17, 19, 21, // tri2 + 4, 22, 3 // tri3 + ), + gsSPNTriangles_5b(9, 8, 22, // tri0 + 21, 19, 20, // tri1 + 13, 15, 12, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 28, 23, 29, // tri1 + 26, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_1_v[213], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 6, 9, 10, // tri1 + 11, 12, 13, // tri2 + 2, 14, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c new file mode 100644 index 00000000..67d1be20 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r1_1/grd_s_c2_r1_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c2_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c2_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c2_r1_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c b/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c new file mode 100644 index 00000000..4f9ad821 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2.c @@ -0,0 +1,328 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_r1_2_v[] = { +#include "assets/field/bg/grd_s_c2_r1_2_v.inc" +}; + +extern Gfx grd_s_c2_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r1_2_v[263], 19, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r1_2_v[247], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 9, 10, 11, // tri1 + 10, 7, 12, // tri2 + 7, 8, 12 // tri3 + ), + gsSPNTriangles_5b(5, 3, 13, // tri0 + 1, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 13, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 18, 20, // tri0 + 19, 20, 21, // tri1 + 22, 19, 21, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 0, 26, // tri1 + 25, 1, 0, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 30, 28, // tri0 + 28, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(14, 15, 7, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 14, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 20, // tri2 + 20, 24, 21 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_2_v[64], 17, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(0, 4, 1, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 9, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 11, 14, // tri1 + 14, 15, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_2_v[81], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 10, 13 // tri3 + ), + gsSPNTriangles_5b(10, 14, 13, // tri0 + 15, 16, 17, // tri1 + 16, 5, 17, // tri2 + 13, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 9, 21, // tri0 + 17, 20, 22, // tri1 + 23, 7, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 25, 29, // tri0 + 26, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_2_v[113], 22, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 14, 15, // tri2 + 16, 17, 11 // tri3 + ), + gsSPNTriangles_5b(16, 8, 18, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r1_2_v[135], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 5, 4, 6, // tri1 + 3, 7, 5, // tri2 + 5, 8, 4 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 10, 13, 11, // tri2 + 10, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 18, 8, 16, // tri2 + 18, 4, 8 // tri3 + ), + gsSPNTriangles_5b(3, 19, 7, // tri0 + 3, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(12, 27, 10, // tri0 + 12, 28, 27, // tri1 + 27, 29, 10, // tri2 + 27, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_2_v[167], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_2_v[185], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 6, 5, 7, // tri1 + 8, 7, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 14, 13, 15, // tri1 + 16, 15, 17, // tri2 + 18, 17, 19 // tri3 + ), + gsSPNTriangles_5b(20, 18, 19, // tri0 + 20, 19, 21, // tri1 + 22, 20, 21, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 27, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r1_2_v[217], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r1_2_v[231], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 11, // tri1 + 8, 3, 12, // tri2 + 13, 7, 14 // tri3 + ), + gsSPNTriangles_5b(5, 13, 15, // tri0 + 13, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c new file mode 100644 index 00000000..874d2719 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r1_2/grd_s_c2_r1_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c2_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c2_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c2_r1_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c b/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c new file mode 100644 index 00000000..fbcd26e3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1.c @@ -0,0 +1,313 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_r2_1_v[] = { +#include "assets/field/bg/grd_s_c2_r2_1_v.inc" +}; + +extern Gfx grd_s_c2_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r2_1_v[228], 27, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 5, 9, 8, // tri2 + 5, 10, 9 // tri3 + ), + gsSPNTriangles_5b(6, 11, 12, // tri0 + 6, 7, 11, // tri1 + 12, 13, 14, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 14, 13, 15, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 0, 2, // tri0 + 20, 17, 0, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b(23, 25, 26, // tri0 + 23, 22, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 6, 7, 8, // tri1 + 8, 9, 10, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 9, 12, // tri1 + 8, 7, 9, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 16, 15, // tri0 + 18, 19, 17, // tri1 + 20, 19, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(16, 23, 14, // tri0 + 17, 19, 16, // tri1 + 20, 22, 19, // tri2 + 23, 24, 14 // tri3 + ), + gsSPNTriangles_5b(25, 26, 3, // tri0 + 26, 2, 3, // tri1 + 27, 28, 1, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 5, 6, 4, // tri1 + 7, 6, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 12, 11, 13, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 16, 15, 17, // tri1 + 19, 20, 21, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 25, // tri1 + 29, 30, 28, // tri2 + 31, 7, 30 // tri3 + ), + gsSPNTriangles_5b(25, 24, 27, // tri0 + 28, 27, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r2_1_v[64], 32, 0), + gsSPNTrianglesInit_5b(36, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 1, // tri0 + 6, 7, 8, // tri1 + 9, 10, 8, // tri2 + 10, 6, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 12, 6, 10, // tri1 + 10, 13, 11, // tri2 + 10, 5, 13 // tri3 + ), + gsSPNTriangles_5b(10, 9, 5, // tri0 + 9, 4, 5, // tri1 + 5, 1, 13, // tri2 + 3, 14, 1 // tri3 + ), + gsSPNTriangles_5b(14, 13, 1, // tri0 + 3, 15, 14, // tri1 + 15, 16, 14, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 3, 0, 15, // tri1 + 15, 19, 17, // tri2 + 17, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 15, 0, 19, // tri1 + 20, 22, 21, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(22, 20, 23, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 26, 23, 27, // tri1 + 25, 30, 24, // tri2 + 25, 31, 30 // tri3 + ), + gsSPNTriangles_5b(25, 26, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_1_v[96], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r2_1_v[100], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 2, 14, 0, // tri1 + 2, 9, 14, // tri2 + 9, 11, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 22, 19, 18 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 29, // tri1 + 28, 30, 29, // tri2 + 28, 31, 30 // tri3 + ), + gsSPNTriangles_5b(7, 24, 6, // tri0 + 4, 3, 5, // tri1 + 3, 1, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_1_v[132], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 3, 6, 2, // tri1 + 6, 7, 2, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 9, 13, 10, // tri2 + 10, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 10, // tri0 + 15, 16, 10, // tri1 + 16, 17, 10, // tri2 + 17, 18, 10 // tri3 + ), + gsSPNTriangles_5b(18, 14, 10, // tri0 + 17, 19, 18, // tri1 + 17, 20, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 24, 26, 27, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_1_v[164], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 0, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r2_1_v[170], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 11, 18, // tri1 + 3, 4, 8, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 19, 25, 20, // tri2 + 26, 19, 21 // tri3 + ), + gsSPNTriangles_5b(27, 26, 28, // tri0 + 25, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_1_v[201], 27, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(1, 3, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 17, 18, 19, // tri1 + 18, 15, 20, // tri2 + 21, 17, 22 // tri3 + ), + gsSPNTriangles_5b(23, 21, 24, // tri0 + 25, 23, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c new file mode 100644 index 00000000..e63fe9d7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r2_1/grd_s_c2_r2_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c2_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c2_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c2_r2_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c b/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c new file mode 100644 index 00000000..27086e7d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2.c @@ -0,0 +1,355 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_r2_2_v[] = { +#include "assets/field/bg/grd_s_c2_r2_2_v.inc" +}; + +extern Gfx grd_s_c2_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r2_2_v[257], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 15, 16, 13, // tri1 + 16, 17, 13, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 19, 20, 17, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 7, 20, // tri0 + 22, 6, 7, // tri1 + 4, 23, 5, // tri2 + 4, 10, 23 // tri3 + ), + gsSPNTriangles_5b(10, 11, 23, // tri0 + 3, 1, 24, // tri1 + 25, 26, 27, // tri2 + 3, 24, 26 // tri3 + ), + gsSPNTriangles_5b(25, 3, 26, // tri0 + 28, 29, 30, // tri1 + 31, 28, 30, // tri2 + 25, 27, 29 // tri3 + ), + gsSPNTriangles_5b(28, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 0, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 8, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 10, 16, 11 // tri3 + ), + gsSPNTriangles_5b(16, 17, 11, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(19, 23, 21, // tri0 + 19, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 21, 26, 22 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 30, 31, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[64], 7, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 1, 3, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r2_2_v[71], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 9, 8, 7, // tri1 + 10, 9, 7, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(3, 13, 11, // tri0 + 1, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b(17, 21, 22, // tri0 + 21, 23, 24, // tri1 + 25, 19, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 27, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[103], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_r2_2_v[113], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 11, 12, 10, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 17, 8, 14, // tri1 + 15, 6, 5, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 19, 26, 27 // tri3 + ), + gsSPNTriangles_5b(19, 28, 26, // tri0 + 29, 30, 31, // tri1 + 29, 5, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[145], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 11, 12, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 10, 11, 8, // tri1 + 1, 16, 3, // tri2 + 16, 17, 3 // tri3 + ), + gsSPNTriangles_5b(17, 18, 3, // tri0 + 18, 19, 3, // tri1 + 18, 20, 19, // tri2 + 18, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 21, 4, 22, // tri1 + 21, 23, 4, // tri2 + 23, 24, 4 // tri3 + ), + gsSPNTriangles_5b(24, 5, 4, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 26, 7, 28 // tri3 + ), + gsSPNTriangles_5b(26, 29, 7, // tri0 + 29, 30, 7, // tri1 + 30, 10, 7, // tri2 + 30, 31, 10 // tri3 + ), + gsSPNTriangles_5b(31, 11, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[177], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_r2_2_v[184], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 23, 30, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[215], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 12, // tri1 + 14, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 19, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 26, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_r2_2_v[247], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c new file mode 100644 index 00000000..ed02de0e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_r2_2/grd_s_c2_r2_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c2_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c2_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c2_r2_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c b/src/data/field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c new file mode 100644 index 00000000..5bbe3f47 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_s_1/grd_s_c2_s_1.c @@ -0,0 +1,342 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_s_1_v[] = { +#include "assets/field/bg/grd_s_c2_s_1_v.inc" +}; + +extern Gfx grd_s_c2_s_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_s_1_v[246], 27, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 14, 18, // tri1 + 19, 17, 20, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 24, // tri0 + 25, 23, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 5, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 15, 16, 8, // tri2 + 16, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 18, 21, // tri1 + 18, 22, 21, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 14, // tri0 + 9, 13, 14, // tri1 + 24, 25, 26, // tri2 + 24, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 25, // tri0 + 28, 29, 25, // tri1 + 17, 30, 18, // tri2 + 30, 22, 18 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 2, 3, 25, // tri1 + 26, 27, 28, // tri2 + 0, 29, 1 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 24, // tri0 + 31, 22, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[63], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 6, 13, 7, // tri0 + 1, 14, 5, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 9, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[93], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_1_v[98], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 6, 8, 7, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 13, 17, 14, // tri1 + 18, 19, 20, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 21, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 26, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[129], 17, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 6, 10, // tri1 + 7, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 9, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_1_v[146], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 10, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 8, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 9, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 11, 17, 16, // tri0 + 11, 15, 17, // tri1 + 18, 12, 19, // tri2 + 18, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 7, // tri0 + 20, 22, 21, // tri1 + 21, 5, 7, // tri2 + 23, 2, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 0, 2, // tri0 + 3, 25, 4, // tri1 + 25, 26, 4, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 27, // tri0 + 29, 0, 30, // tri1 + 29, 3, 0, // tri2 + 29, 25, 3 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[178], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 16, 17, 14, // tri2 + 17, 18, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 21, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 15, 14, 29, // tri2 + 14, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 14, 18, 30, // tri0 + 18, 19, 30, // tri1 + 19, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_1_v[210], 9, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_1_v[219], 27, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 10, // tri1 + 1, 11, 12, // tri2 + 11, 6, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 14, 18, // tri1 + 19, 20, 21, // tri2 + 15, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 17, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_s_2/grd_s_c2_s_2.c b/src/data/field/bg/acre/grd_s_c2_s_2/grd_s_c2_s_2.c new file mode 100644 index 00000000..3dee6e3b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_s_2/grd_s_c2_s_2.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_s_2_v[] = { +#include "assets/field/bg/grd_s_c2_s_2_v.inc" +}; + +extern Gfx grd_s_c2_s_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_s_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_s_2_v[217], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 5, // tri0 + 0, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 17, 19, 15, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 16, 15, // tri0 + 21, 22, 16, // tri1 + 15, 19, 21, // tri2 + 0, 2, 23 // tri3 + ), + gsSPNTriangles_5b( + 0, 24, 25, // tri0 + 0, 23, 24, // tri1 + 6, 0, 25, // tri2 + 6, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 8, 6, // tri0 + 27, 6, 26, // tri1 + 28, 13, 11, // tri2 + 29, 28, 11 // tri3 + ), + gsSPNTriangles_5b( + 30, 29, 11, // tri0 + 30, 11, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_2_v[32], 22, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 1, 6, 7, // tri1 + 1, 7, 8, // tri2 + 2, 1, 8 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 9, // tri0 + 2, 9, 10, // tri1 + 5, 2, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 13, 15, 14, // tri1 + 12, 16, 17, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 16, 12, // tri0 + 18, 12, 11, // tri1 + 20, 18, 11, // tri2 + 21, 20, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 13, // tri0 + 14, 21, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_2_v[54], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 3, 6, 9, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 13, 18, 19, // tri1 + 20, 21, 16, // tri2 + 17, 20, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 18, 23, 19, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_2_v[86], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 9, // tri1 + 12, 13, 14, // tri2 + 15, 7, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 16, // tri0 + 8, 10, 9, // tri1 + 17, 18, 4, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 18, 5, 4, // tri1 + 21, 22, 23, // tri2 + 1, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 1, 0, 12, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 24, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 17, 4, // tri0 + 29, 30, 17, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_2_v[118], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 3, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 9, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 9, 18, 14, // tri1 + 12, 11, 10, // tri2 + 10, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 12, 14, // tri0 + 0, 2, 20, // tri1 + 21, 12, 19, // tri2 + 22, 13, 23 // tri3 + ), + gsSPNTriangles_5b( + 23, 4, 22, // tri0 + 24, 25, 26, // tri1 + 27, 24, 1, // tri2 + 24, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_2_v[150], 12, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 2, 1, 8, // tri1 + 8, 9, 2, // tri2 + 4, 7, 10 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_2_v[162], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 6, 8, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 11, // tri0 + 14, 16, 17, // tri1 + 18, 4, 19, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 23, 25, // tri1 + 16, 25, 17, // tri2 + 22, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_2_v[193], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 9, 3, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_2_v[204], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c b/src/data/field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c new file mode 100644 index 00000000..fe67a54e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c2_s_3/grd_s_c2_s_3.c @@ -0,0 +1,328 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c2_s_3_v[] = { +#include "assets/field/bg/grd_s_c2_s_3_v.inc" +}; + +extern Gfx grd_s_c2_s_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c2_s_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c2_s_3_v[204], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 2, 5, // tri0 + 2, 6, 5, // tri1 + 6, 7, 5, // tri2 + 2, 4, 8 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 7, 6, 9, // tri1 + 7, 9, 10, // tri2 + 6, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 6, 11, 9, // tri0 + 10, 9, 12, // tri1 + 10, 12, 13, // tri2 + 9, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 9, 14, 12, // tri0 + 13, 12, 15, // tri1 + 13, 15, 16, // tri2 + 12, 14, 17 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 15, // tri0 + 16, 15, 18, // tri1 + 15, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 21, // tri0 + 15, 21, 19, // tri1 + 22, 23, 24, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 27, // tri0 + 23, 27, 24, // tri1 + 28, 29, 30, // tri2 + 28, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c2_s_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 34, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 6, 4, // tri0 + 6, 7, 4, // tri1 + 7, 8, 4, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 10, 9, // tri0 + 10, 11, 9, // tri1 + 10, 12, 11, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 11, // tri0 + 1, 6, 2, // tri1 + 1, 15, 6, // tri2 + 15, 16, 7 // tri3 + ), + gsSPNTriangles_5b( + 15, 7, 6, // tri0 + 16, 17, 10, // tri1 + 16, 10, 7, // tri2 + 17, 18, 10 // tri3 + ), + gsSPNTriangles_5b( + 18, 12, 10, // tri0 + 18, 13, 12, // tri1 + 18, 19, 13, // tri2 + 19, 20, 13 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 22, 23, 20, // tri2 + 13, 24, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 20, 24, // tri0 + 20, 25, 24, // tri1 + 20, 26, 25, // tri2 + 20, 23, 26 // tri3 + ), + gsSPNTriangles_5b( + 23, 27, 26, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_3_v[64], 13, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 6, 8, 9, // tri1 + 6, 9, 7, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 2, 10, // tri0 + 2, 11, 10, // tri1 + 11, 2, 3, // tri2 + 11, 3, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c2_s_3_v[77], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 10, // tri0 + 12, 9, 10, // tri1 + 13, 14, 15, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 18, 17, 19, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 22, 24, 25, // tri1 + 22, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 20, 2, 3, // tri2 + 20, 3, 21 // tri3 + ), + gsSPNTriangles_5b( + 29, 8, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_3_v[107], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 3, 8, 4, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 3, 13, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 21, 22, 18, // tri1 + 16, 23, 24, // tri2 + 15, 23, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 25, 26, // tri0 + 25, 27, 26, // tri1 + 26, 19, 18, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 31, 2, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c2_s_3_v[139], 23, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 6, 4, 0, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 7, 12, 11, // tri1 + 12, 13, 11, // tri2 + 14, 6, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 17, 16, 18, // tri2 + 6, 0, 15 // tri3 + ), + gsSPNTriangles_5b( + 2, 20, 21, // tri0 + 15, 22, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_3_v[162], 29, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 15, 18, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 3, // tri0 + 3, 22, 23, // tri1 + 23, 24, 25, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c2_s_3_v[191], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_1/grd_s_c3_1.c b/src/data/field/bg/acre/grd_s_c3_1/grd_s_c3_1.c new file mode 100644 index 00000000..d72411d4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_1/grd_s_c3_1.c @@ -0,0 +1,299 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_1_v[] = { +#include "assets/field/bg/grd_s_c3_1_v.inc" +}; + +extern Gfx grd_s_c3_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_1_v[221], 23, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 0, 16, 18, // tri1 + 19, 0, 20, // tri2 + 21, 19, 22 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 4, 6, // tri0 + 13, 14, 4, // tri1 + 13, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 16, 17, // tri0 + 14, 13, 19, // tri1 + 20, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 25, 27, 26, // tri1 + 25, 28, 27, // tri2 + 25, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 28, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 29, // tri1 + 28, 17, 29, // tri2 + 8, 30, 10 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_1_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 11, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 13, // tri0 + 15, 17, 18, // tri1 + 19, 20, 6, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 22, 21, // tri0 + 23, 24, 25, // tri1 + 26, 27, 28, // tri2 + 22, 29, 21 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 22, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_1_v[96], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 6, // tri0 + 5, 0, 2, // tri1 + 0, 7, 1, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 18, 19, 13, // tri1 + 5, 20, 21, // tri2 + 5, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 12, 10, // tri0 + 21, 10, 22, // tri1 + 9, 23, 24, // tri2 + 23, 19, 24 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 18, // tri0 + 23, 9, 11, // tri1 + 17, 25, 16, // tri2 + 17, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 5, 27, 20, // tri0 + 27, 28, 20, // tri1 + 18, 24, 19, // tri2 + 7, 9, 29 // tri3 + ), + gsSPNTriangles_5b( + 7, 29, 8, // tri0 + 9, 24, 30, // tri1 + 9, 30, 29, // tri2 + 24, 18, 31 // tri3 + ), + gsSPNTriangles_5b( + 24, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_1_v[128], 9, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 8, // tri2 + 5, 8, 6 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_1_v[137], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 0, // tri0 + 8, 9, 6, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_1_v[167], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 0, 2, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 6, 8, 14, // tri0 + 13, 6, 14, // tri1 + 15, 10, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 23, 24, 20, // tri1 + 25, 26, 23, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b( + 19, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_1_v[197], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 12, 16, 19, // tri1 + 20, 21, 22, // tri2 + 21, 14, 23 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2.c b/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2.c new file mode 100644 index 00000000..3d337463 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2.c @@ -0,0 +1,302 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_2_v[] = { +#include "assets/field/bg/grd_s_c3_2_v.inc" +}; + +extern Gfx grd_s_c3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_2_v[217], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 5, 6, 1, // tri1 + 6, 2, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_2_v[200], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 4, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 12, 13, 3 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 13, 14, 15, // tri1 + 16, 13, 15, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(19, 17, 20, // tri0 + 21, 19, 22, // tri1 + 21, 22, 23, // tri2 + 24, 21, 23 // tri3 + ), + gsSPNTriangles_5b(24, 23, 9, // tri0 + 25, 26, 27, // tri1 + 26, 28, 29, // tri2 + 28, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c3_2_v[32], 7, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_2_v[39], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 0, 6, 7, // tri1 + 6, 8, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 14, // tri0 + 18, 19, 14, // tri1 + 20, 16, 13, // tri2 + 19, 21, 14 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 21, 24, // tri1 + 23, 14, 21, // tri2 + 22, 25, 26 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 26, 27, 28, // tri1 + 26, 29, 27, // tri2 + 26, 25, 29 // tri3 + ), + gsSPNTriangles_5b(27, 30, 28, // tri0 + 30, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_2_v[71], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 15, 16, 17, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 0, 14, 16, // tri1 + 19, 20, 21, // tri2 + 21, 1, 19 // tri3 + ), + gsSPNTriangles_5b(0, 2, 14, // tri0 + 18, 20, 19, // tri1 + 22, 5, 7, // tri2 + 14, 2, 13 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 26, 25, 24, // tri1 + 27, 25, 26, // tri2 + 8, 28, 9 // tri3 + ), + gsSPNTriangles_5b(28, 29, 9, // tri0 + 28, 30, 29, // tri1 + 23, 25, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_2_v[103], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 3, 8, 4, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_2_v[113], 32, 0), + gsSPNTrianglesInit_5b(33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(14, 19, 16, // tri0 + 19, 17, 16, // tri1 + 14, 20, 19, // tri2 + 19, 21, 17 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 11, 24, // tri1 + 11, 12, 24, // tri2 + 12, 25, 24 // tri3 + ), + gsSPNTriangles_5b(23, 9, 11, // tri0 + 23, 26, 9, // tri1 + 27, 28, 9, // tri2 + 28, 10, 9 // tri3 + ), + gsSPNTriangles_5b(29, 2, 27, // tri0 + 29, 30, 2, // tri1 + 2, 28, 27, // tri2 + 2, 3, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 2, // tri0 + 31, 0, 2, // tri1 + 31, 14, 0, // tri2 + 31, 20, 14 // tri3 + ), + gsSPNTriangles_5b(14, 13, 0, // tri0 + 13, 4, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_2_v[145], 15, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 1, 6, 3, // tri1 + 1, 7, 6, // tri2 + 6, 8, 3 // tri3 + ), + gsSPNTriangles_5b(8, 5, 3, // tri0 + 7, 9, 6, // tri1 + 9, 10, 6, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 10, // tri0 + 9, 13, 11, // tri1 + 11, 14, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_2_v[160], 23, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b(13, 11, 10, // tri0 + 10, 14, 13, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 7, // tri0 + 7, 4, 18, // tri1 + 18, 3, 19, // tri2 + 18, 2, 3 // tri3 + ), + gsSPNTriangles_5b(17, 20, 21, // tri0 + 20, 22, 21, // tri1 + 12, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_2_v[183], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c new file mode 100644 index 00000000..7a94bb19 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_2/grd_s_c3_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c3_3/grd_s_c3_3.c b/src/data/field/bg/acre/grd_s_c3_3/grd_s_c3_3.c new file mode 100644 index 00000000..086979a9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_3/grd_s_c3_3.c @@ -0,0 +1,304 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_3_v[] = { +#include "assets/field/bg/grd_s_c3_3_v.inc" +}; + +extern Gfx grd_s_c3_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_3_v[182], 28, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 13, 14, 15, // tri2 + 16, 6, 17 // tri3 + ), + gsSPNTriangles_5b( + 4, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 24, 21, // tri2 + 18, 15, 19 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 20, 23, 21, // tri1 + 1, 26, 22, // tri2 + 26, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 27, // tri0 + 25, 16, 27, // tri1 + 13, 11, 14, // tri2 + 11, 12, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 15, 14, 13, // tri1 + 16, 17, 15, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 20, 22, 21, // tri1 + 20, 11, 22, // tri2 + 23, 24, 3 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 24, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_3_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 6, // tri0 + 1, 8, 2, // tri1 + 9, 10, 11, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 14, 9, 15, // tri1 + 3, 14, 4, // tri2 + 16, 14, 3 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 12, // tri0 + 8, 17, 2, // tri1 + 19, 0, 2, // tri2 + 0, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 22, 23, 24, // tri1 + 25, 26, 27, // tri2 + 28, 29, 24 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_3_v[61], 20, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 8, 10, // tri0 + 11, 12, 13, // tri1 + 13, 14, 11, // tri2 + 11, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 11, // tri0 + 15, 16, 12, // tri1 + 4, 16, 5, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 19, 15, 17, // tri0 + 19, 5, 15, // tri1 + 5, 16, 15, // tri2 + 6, 1, 7 // tri3 + ), + gsSPNTriangles_5b( + 17, 7, 18, // tri0 + 1, 18, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_3_v[81], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 15, 16, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 27, // tri0 + 26, 28, 29, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_3_v[113], 5, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_3_v[118], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 6, // tri0 + 5, 2, 3, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 12, 15, 13, // tri2 + 16, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 18, 12, // tri1 + 18, 15, 12, // tri2 + 11, 7, 14 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 14, // tri0 + 9, 16, 14, // tri1 + 9, 19, 16, // tri2 + 10, 20, 9 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 9, // tri0 + 8, 21, 10, // tri1 + 21, 22, 10, // tri2 + 22, 20, 10 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 20, // tri0 + 21, 24, 22, // tri1 + 21, 25, 24, // tri2 + 24, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 23, // tri0 + 25, 4, 24, // tri1 + 4, 6, 24, // tri2 + 6, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 6, 27, 26, // tri0 + 3, 28, 6, // tri1 + 28, 27, 6, // tri2 + 1, 28, 3 // tri3 + ), + gsSPNTriangles_5b( + 1, 29, 28, // tri0 + 0, 30, 1, // tri1 + 0, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_3_v[150], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_3_v[154], 28, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 11, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 12, // tri0 + 7, 12, 6, // tri1 + 13, 14, 15, // tri2 + 16, 13, 17 // tri3 + ), + gsSPNTriangles_5b( + 8, 18, 9, // tri0 + 18, 16, 19, // tri1 + 20, 21, 22, // tri2 + 14, 22, 15 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 23, 24, 21, // tri1 + 25, 26, 27, // tri2 + 23, 25, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c b/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c new file mode 100644 index 00000000..6f89250a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1.c @@ -0,0 +1,292 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_r1_1_v[] = { +#include "assets/field/bg/grd_s_c3_r1_1_v.inc" +}; + +extern Gfx grd_s_c3_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r1_1_v[222], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 6, 8, // tri0 + 10, 11, 9, // tri1 + 10, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 5, 4, 6, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 11, 14, 12, // tri1 + 11, 15, 16, // tri2 + 11, 13, 15 // tri3 + ), + gsSPNTriangles_5b(17, 11, 16, // tri0 + 17, 18, 11, // tri1 + 17, 19, 18, // tri2 + 14, 20, 12 // tri3 + ), + gsSPNTriangles_5b(20, 21, 12, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(8, 15, 9, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 24, 27, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(29, 2, 1, // tri0 + 2, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_1_v[64], 29, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 18, 0, 19 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 25, 23, // tri1 + 25, 26, 23, // tri2 + 27, 25, 22 // tri3 + ), + gsSPNTriangles_5b(28, 25, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r1_1_v[93], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 1, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 5, 10, 13 // tri3 + ), + gsSPNTriangles_5b(14, 3, 15, // tri0 + 16, 17, 18, // tri1 + 19, 7, 20, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(11, 16, 18, // tri0 + 21, 22, 23, // tri1 + 24, 21, 25, // tri2 + 22, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_1_v[123], 29, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 6, 10, 11, // tri1 + 10, 12, 13, // tri2 + 14, 8, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 22, 23, // tri2 + 24, 21, 25 // tri3 + ), + gsSPNTriangles_5b(17, 26, 27, // tri0 + 26, 24, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r1_1_v[152], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 3, 6, 4, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 6, 3, 14, // tri1 + 5, 15, 1, // tri2 + 5, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 18, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r1_1_v[184], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 7, 8, 6, // tri1 + 2, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 12, 9, 14, // tri1 + 9, 15, 14, // tri2 + 11, 16, 12 // tri3 + ), + gsSPNTriangles_5b(16, 10, 12, // tri0 + 10, 9, 12, // tri1 + 1, 9, 2, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 1, 19, 18, // tri1 + 1, 0, 19, // tri2 + 21, 4, 3 // tri3 + ), + gsSPNTriangles_5b(11, 3, 16, // tri0 + 11, 21, 3, // tri1 + 22, 20, 23, // tri2 + 20, 17, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 25, 22, 23, // tri1 + 26, 27, 4, // tri2 + 27, 7, 4 // tri3 + ), + gsSPNTriangles_5b(28, 4, 21, // tri0 + 28, 26, 4, // tri1 + 13, 28, 11, // tri2 + 28, 21, 11 // tri3 + ), + gsSPNTriangles_5b(29, 9, 1, // tri0 + 29, 15, 9, // tri1 + 30, 29, 18, // tri2 + 29, 1, 18 // tri3 + ), + gsSPNTriangles_5b(31, 18, 20, // tri0 + 31, 30, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_1_v[216], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c new file mode 100644 index 00000000..f073ae4a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r1_1/grd_s_c3_r1_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_r1_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c b/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c new file mode 100644 index 00000000..cc697f9b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2.c @@ -0,0 +1,312 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_r1_2_v[] = { +#include "assets/field/bg/grd_s_c3_r1_2_v.inc" +}; + +extern Gfx grd_s_c3_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r1_2_v[237], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r1_2_v[223], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 12, 10, 13 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 7, // tri0 + 11, 10, 13, // tri1 + 13, 8, 7, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 14, 18, 17, // tri1 + 14, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 19, 22, // tri1 + 20, 24, 21, // tri2 + 20, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 27, 29, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_2_v[30], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 1, // tri0 + 8, 3, 1, // tri1 + 3, 9, 2, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 15, // tri1 + 13, 10, 14, // tri2 + 16, 0, 17 // tri3 + ), + gsSPNTriangles_5b(16, 1, 0, // tri0 + 18, 6, 19, // tri1 + 6, 20, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 24, 22, // tri0 + 24, 25, 22, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_2_v[60], 28, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 6, 12, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 22, 21, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r1_2_v[88], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 7, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 20, 19, 18, // tri2 + 21, 20, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 2, 24, 22, // tri1 + 0, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 27, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_2_v[120], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r1_2_v[130], 31, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 0, 6, // tri1 + 4, 8, 2, // tri2 + 8, 0, 2 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 3, 20, 4, // tri1 + 3, 21, 20, // tri2 + 18, 16, 22 // tri3 + ), + gsSPNTriangles_5b(16, 23, 22, // tri0 + 16, 24, 23, // tri1 + 16, 14, 24, // tri2 + 14, 12, 24 // tri3 + ), + gsSPNTriangles_5b(12, 25, 24, // tri0 + 12, 10, 25, // tri1 + 10, 26, 25, // tri2 + 10, 27, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 28, 29, 26, // tri1 + 28, 7, 29, // tri2 + 28, 0, 7 // tri3 + ), + gsSPNTriangles_5b(4, 30, 5, // tri0 + 4, 20, 30, // tri1 + 0, 28, 1, // tri2 + 28, 27, 1 // tri3 + ), + gsSPNTriangles_5b(27, 9, 1, // tri0 + 27, 10, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r1_2_v[161], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(3, 7, 4, // tri0 + 7, 8, 4, // tri1 + 9, 10, 11, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 16, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 21, 16, 18, // tri1 + 22, 23, 24, // tri2 + 23, 20, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 26, 22, 24, // tri1 + 27, 28, 19, // tri2 + 17, 27, 19 // tri3 + ), + gsSPNTriangles_5b(23, 21, 20, // tri0 + 29, 26, 25, // tri1 + 30, 29, 25, // tri2 + 30, 25, 0 // tri3 + ), + gsSPNTriangles_5b(2, 30, 0, // tri0 + 31, 1, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r1_2_v[193], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 10, 12, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r1_2_v[209], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 11, 3, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c new file mode 100644 index 00000000..0fe8ac9d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r1_2/grd_s_c3_r1_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_r1_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c b/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c new file mode 100644 index 00000000..4ba6b5d2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1.c @@ -0,0 +1,360 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_r2_1_v[] = { +#include "assets/field/bg/grd_s_c3_r2_1_v.inc" +}; + +extern Gfx grd_s_c3_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r2_1_v[281], 24, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 12, 13, 10, // tri1 + 13, 11, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 14, 16, // tri0 + 18, 17, 16, // tri1 + 19, 15, 20, // tri2 + 21, 19, 20 // tri3 + ), + gsSPNTriangles_5b(16, 15, 19, // tri0 + 16, 19, 22, // tri1 + 16, 22, 23, // tri2 + 18, 16, 23 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r2_1_v[245], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 9, // tri1 + 14, 15, 16, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 13, 12, // tri0 + 2, 19, 20, // tri1 + 7, 1, 8, // tri2 + 10, 21, 11 // tri3 + ), + gsSPNTriangles_5b(22, 15, 14, // tri0 + 23, 22, 24, // tri1 + 21, 25, 26, // tri2 + 25, 23, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 17, 28, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[276], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 8, // tri0 + 11, 12, 8, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 1, 17, 18, // tri2 + 18, 3, 1 // tri3 + ), + gsSPNTriangles_5b(18, 19, 3, // tri0 + 18, 20, 21, // tri1 + 18, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 20, 24, 23, // tri1 + 20, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(15, 27, 16, // tri0 + 9, 8, 28, // tri1 + 8, 29, 28, // tri2 + 29, 8, 12 // tri3 + ), + gsSPNTriangles_5b(14, 30, 12, // tri0 + 12, 30, 29, // tri1 + 30, 14, 16, // tri2 + 27, 31, 16 // tri3 + ), + gsSPNTriangles_5b(16, 31, 30, // tri0 + 27, 5, 31, // tri1 + 5, 6, 31, // tri2 + 19, 4, 3 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[32], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 4, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_1_v[40], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 8, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 17, 14, 13, // tri2 + 7, 18, 15 // tri3 + ), + gsSPNTriangles_5b(19, 17, 13, // tri0 + 16, 15, 18, // tri1 + 18, 7, 20, // tri2 + 20, 7, 4 // tri3 + ), + gsSPNTriangles_5b(11, 21, 22, // tri0 + 11, 12, 21, // tri1 + 22, 23, 0, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b(0, 23, 1, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 27, 24 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 30, 29, 28, // tri1 + 30, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[72], 14, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 6, 7, 8, // tri1 + 9, 8, 10, // tri2 + 9, 11, 8 // tri3 + ), + gsSPNTriangles_5b(2, 3, 4, // tri0 + 12, 13, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r2_1_v[86], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 0, 9, 5, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 0, 22, // tri0 + 0, 2, 22, // tri1 + 21, 9, 0, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 26, 24, // tri0 + 27, 28, 29, // tri1 + 28, 30, 29, // tri2 + 27, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[118], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 7, // tri1 + 8, 9, 10, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 12, 13, 9, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(15, 18, 17, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 22, 25, 23 // tri3 + ), + gsSPNTriangles_5b(22, 26, 25, // tri0 + 25, 27, 23, // tri1 + 27, 28, 23, // tri2 + 27, 21, 28 // tri3 + ), + gsSPNTriangles_5b(22, 29, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[148], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 3, 6, 2, // tri1 + 7, 8, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(9, 8, 11, // tri0 + 8, 12, 11, // tri1 + 13, 14, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_1_v[164], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 17, 14, 19, // tri1 + 20, 21, 22, // tri2 + 23, 20, 24 // tri3 + ), + gsSPNTriangles_5b(21, 16, 25, // tri0 + 0, 26, 27, // tri1 + 28, 0, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[194], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 6, 10, 11, // tri1 + 10, 0, 12, // tri2 + 13, 8, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 4, // tri0 + 5, 7, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_1_v[210], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 6, 11, // tri1 + 12, 13, 14, // tri2 + 15, 12, 16 // tri3 + ), + gsSPNTriangles_5b(13, 17, 18, // tri0 + 17, 19, 20, // tri1 + 21, 15, 22, // tri2 + 23, 2, 24 // tri3 + ), + gsSPNTriangles_5b(0, 25, 26, // tri0 + 25, 27, 28, // tri1 + 29, 8, 10, // tri2 + 20, 19, 29 // tri3 + ), + gsSPNTriangles_5b(28, 27, 30, // tri0 + 30, 21, 22, // tri1 + 31, 23, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_1_v[242], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c new file mode 100644 index 00000000..d21cb565 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r2_1/grd_s_c3_r2_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_r2_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c b/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c new file mode 100644 index 00000000..1e93ffbe --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2.c @@ -0,0 +1,365 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_r2_2_v[] = { +#include "assets/field/bg/grd_s_c3_r2_2_v.inc" +}; + +extern Gfx grd_s_c3_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r2_2_v[280], 25, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 3, 6, 7, // tri1 + 3, 1, 6, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 10, 11, 12, // tri1 + 10, 12, 13, // tri2 + 14, 15, 11 // tri3 + ), + gsSPNTriangles_5b(14, 11, 10, // tri0 + 14, 16, 17, // tri1 + 14, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b(19, 23, 22, // tri0 + 19, 24, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_r2_2_v[269], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 2, 9, 0, // tri2 + 10, 2, 3 // tri3 + ), + gsSPNTriangles_5b(9, 2, 11, // tri0 + 11, 2, 4, // tri1 + 11, 12, 13, // tri2 + 4, 12, 11 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 18, 7, 8, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 27, 28, 29 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[30], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 7, // tri0 + 7, 3, 11, // tri1 + 12, 13, 14, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 25, 24, // tri0 + 28, 29, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[60], 29, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 9, 10, 11, // tri1 + 9, 12, 10, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b(11, 15, 16, // tri0 + 17, 18, 19, // tri1 + 17, 20, 18, // tri2 + 20, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 21, 23, 22, // tri1 + 23, 24, 25, // tri2 + 14, 10, 12 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 27, 20, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_r2_2_v[89], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 1, 7, // tri1 + 1, 0, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 8, 12, 9, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 13, // tri0 + 15, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(21, 13, 17, // tri0 + 21, 22, 13, // tri1 + 11, 23, 24, // tri2 + 11, 25, 23 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 27, 30, 28, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[121], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 1, // tri1 + 7, 4, 1, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 10, 12, 8 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 18, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 19, 23, 21, // tri1 + 23, 24, 21, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 25, 27, 26, // tri1 + 27, 28, 26, // tri2 + 28, 29, 26 // tri3 + ), + gsSPNTriangles_5b(29, 30, 26, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[153], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_2_v[159], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(5, 13, 6, // tri0 + 5, 9, 13, // tri1 + 9, 14, 13, // tri2 + 9, 11, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 18, 3, 16, // tri2 + 18, 4, 3 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 27, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[191], 31, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 11, 12, 10, // tri1 + 13, 14, 12, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 18, // tri0 + 17, 19, 18, // tri1 + 17, 20, 19, // tri2 + 17, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 21, 23, 22, // tri1 + 21, 24, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 24, 27, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_2_v[222], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 2, 10, 15, // tri1 + 16, 6, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 7, 22, // tri0 + 21, 22, 19, // tri1 + 14, 18, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_r2_2_v[253], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_r2_2_v[258], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 0, 8, // tri0 + 9, 5, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c new file mode 100644 index 00000000..44283598 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_r2_2/grd_s_c3_r2_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_r2_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c b/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c new file mode 100644 index 00000000..9ecd0e41 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1.c @@ -0,0 +1,322 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c3_s_1_v[] = { +#include "assets/field/bg/grd_s_c3_s_1_v.inc" +}; + +extern Gfx grd_s_c3_s_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_s_1_v[329], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c3_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c3_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 3 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 11, 8, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(15, 19, 13, // tri0 + 20, 21, 22, // tri1 + 8, 7, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 4, 6, // tri0 + 28, 24, 19, // tri1 + 29, 30, 17, // tri2 + 24, 13, 19 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[62], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 9, 7, 5, // tri1 + 10, 11, 12, // tri2 + 7, 13, 8 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 10, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(13, 17, 8, // tri0 + 18, 22, 24, // tri1 + 13, 25, 17, // tri2 + 13, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 14, 16, // tri0 + 10, 12, 20, // tri1 + 28, 22, 25, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[94], 28, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 1, 14, 6, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 0, // tri0 + 18, 19, 20, // tri1 + 19, 18, 21, // tri2 + 22, 19, 21 // tri3 + ), + gsSPNTriangles_5b(15, 23, 16, // tri0 + 22, 21, 24, // tri1 + 25, 26, 27, // tri2 + 26, 22, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c3_s_1_v[122], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 3, 1, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 21, 27, 22 // tri3 + ), + gsSPNTriangles_5b(27, 29, 22, // tri0 + 25, 14, 1, // tri1 + 30, 12, 23, // tri2 + 25, 1, 26 // tri3 + ), + gsSPNTriangles_5b(30, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[153], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 6, 8, // tri0 + 10, 5, 11, // tri1 + 2, 1, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(6, 16, 7, // tri0 + 13, 10, 14, // tri1 + 2, 12, 7, // tri2 + 7, 12, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 10, 13, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(25, 28, 26, // tri0 + 22, 24, 29, // tri1 + 29, 3, 21, // tri2 + 24, 30, 4 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[184], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 10, 2, 11, // tri1 + 12, 13, 6, // tri2 + 10, 11, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 21, // tri0 + 20, 29, 30, // tri1 + 20, 30, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[215], 29, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(7, 2, 8, // tri0 + 9, 10, 11, // tri1 + 12, 8, 13, // tri2 + 0, 2, 7 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 9, // tri1 + 19, 0, 7, // tri2 + 19, 7, 12 // tri3 + ), + gsSPNTriangles_5b(20, 1, 0, // tri0 + 21, 22, 23, // tri1 + 23, 24, 20, // tri2 + 18, 25, 9 // tri3 + ), + gsSPNTriangles_5b(26, 17, 9, // tri0 + 27, 28, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_s_1_v[244], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(12, 10, 13, // tri0 + 6, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 18, // tri0 + 23, 16, 18, // tri1 + 1, 24, 4, // tri2 + 24, 25, 4 // tri3 + ), + gsSPNTriangles_5b(20, 26, 21, // tri0 + 27, 28, 29, // tri1 + 19, 30, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c3_s_1_v[275], 26, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 11, // tri0 + 20, 2, 19, // tri1 + 21, 22, 23, // tri2 + 24, 25, 22 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c3_s_1_v[301], 28, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(13, 16, 14, // tri0 + 10, 18, 11, // tri1 + 13, 15, 18, // tri2 + 4, 19, 5 // tri3 + ), + gsSPNTriangles_5b(20, 21, 5, // tri0 + 20, 22, 21, // tri1 + 20, 7, 22, // tri2 + 7, 9, 22 // tri3 + ), + gsSPNTriangles_5b(4, 6, 23, // tri0 + 19, 20, 5, // tri1 + 24, 23, 25, // tri2 + 24, 26, 3 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 12, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c new file mode 100644 index 00000000..60c1d89f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c3_s_1/grd_s_c3_s_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c3_s_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c3_s_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c3_s_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c4_1/grd_s_c4_1.c b/src/data/field/bg/acre/grd_s_c4_1/grd_s_c4_1.c new file mode 100644 index 00000000..2cfe372f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_1/grd_s_c4_1.c @@ -0,0 +1,262 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_1_v[] = { +#include "assets/field/bg/grd_s_c4_1_v.inc" +}; + +extern Gfx grd_s_c4_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_1_v[168], 23, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 6, // tri0 + 8, 9, 10, // tri1 + 9, 5, 7, // tri2 + 11, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 14, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 15, // tri0 + 16, 18, 20, // tri1 + 21, 19, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 0, 14, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 17, // tri0 + 18, 20, 16, // tri1 + 12, 21, 22, // tri2 + 12, 14, 21 // tri3 + ), + gsSPNTriangles_5b( + 3, 5, 2, // tri0 + 6, 23, 5, // tri1 + 24, 25, 7, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 26, 28, 27, // tri1 + 26, 17, 28, // tri2 + 17, 19, 28 // tri3 + ), + gsSPNTriangles_5b( + 19, 8, 28, // tri0 + 22, 29, 20, // tri1 + 29, 16, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_1_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 4, 9, 8, // tri1 + 10, 7, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 12, 14, // tri1 + 16, 13, 17, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 1, 0, // tri0 + 2, 21, 0, // tri1 + 18, 16, 17, // tri2 + 20, 0, 22 // tri3 + ), + gsSPNTriangles_5b( + 0, 23, 22, // tri0 + 20, 22, 24, // tri1 + 20, 24, 25, // tri2 + 26, 27, 5 // tri3 + ), + gsSPNTriangles_5b( + 8, 28, 7, // tri0 + 29, 30, 31, // tri1 + 29, 9, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_1_v[62], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_1_v[66], 23, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 6, // tri0 + 5, 7, 2, // tri1 + 7, 0, 2, // tri2 + 7, 8, 0 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 0, // tri0 + 9, 10, 0, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 13, // tri0 + 9, 11, 13, // tri1 + 13, 14, 15, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 10, 18, // tri0 + 10, 13, 18, // tri1 + 13, 16, 18, // tri2 + 10, 17, 3 // tri3 + ), + gsSPNTriangles_5b( + 10, 3, 0, // tri0 + 6, 2, 4, // tri1 + 19, 6, 4, // tri2 + 20, 21, 6 // tri3 + ), + gsSPNTriangles_5b( + 20, 6, 19, // tri0 + 21, 5, 6, // tri1 + 21, 22, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_1_v[89], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 19, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 26, // tri0 + 27, 25, 26, // tri1 + 28, 29, 30, // tri2 + 31, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c4_1_v[121], 20, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 6, 5, 8, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 14, // tri0 + 13, 15, 16, // tri1 + 17, 7, 18, // tri2 + 19, 18, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_1_v[141], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 10, 8, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 12, 19, // tri0 + 6, 20, 21, // tri1 + 20, 22, 21, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 22, // tri0 + 16, 26, 17, // tri1 + 23, 15, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_2/grd_s_c4_2.c b/src/data/field/bg/acre/grd_s_c4_2/grd_s_c4_2.c new file mode 100644 index 00000000..dc08baf1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_2/grd_s_c4_2.c @@ -0,0 +1,287 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_2_v[] = { +#include "assets/field/bg/grd_s_c4_2_v.inc" +}; + +extern Gfx grd_s_c4_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_2_v[229], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 11, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 5, 9, 3, // tri0 + 10, 11, 3, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 18, 21, 22, // tri2 + 22, 21, 15 // tri3 + ), + gsSPNTriangles_5b( + 1, 0, 23, // tri0 + 24, 25, 26, // tri1 + 8, 27, 6, // tri2 + 28, 29, 9 // tri3 + ), + gsSPVertex(&grd_s_c4_2_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 8, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 10, 19, // tri0 + 18, 20, 10, // tri1 + 19, 10, 21, // tri2 + 20, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 6, 22, 23, // tri0 + 6, 7, 22, // tri1 + 4, 24, 25, // tri2 + 6, 23, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 5, 4, // tri0 + 27, 28, 29, // tri1 + 26, 30, 6, // tri2 + 17, 31, 15 // tri3 + ), + gsSPVertex(&grd_s_c4_2_v[62], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 14, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 19, 21, 22, // tri1 + 20, 15, 21, // tri2 + 14, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 5, 4, 7, // tri0 + 23, 24, 25, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 2, 25, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_2_v[93], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 15, 17, 18, // tri1 + 19, 20, 21, // tri2 + 5, 22, 6 // tri3 + ), + gsSPNTriangles_5b( + 22, 0, 6, // tri0 + 23, 24, 25, // tri1 + 26, 23, 27, // tri2 + 23, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 24, 28, 25, // tri0 + 19, 21, 29, // tri1 + 17, 30, 31, // tri2 + 19, 26, 20 // tri3 + ), + gsSPVertex(&grd_s_c4_2_v[125], 10, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_2_v[135], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 17, 18, 19, // tri1 + 20, 5, 4, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 19, 20, 4, // tri1 + 17, 19, 4, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 11, 26, 23, // tri0 + 11, 27, 26, // tri1 + 28, 9, 11, // tri2 + 29, 28, 11 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_2_v[167], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 1, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 7, 8, // tri2 + 1, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 3, // tri0 + 11, 13, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 16, // tri0 + 10, 15, 20, // tri1 + 15, 17, 20, // tri2 + 21, 22, 7 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 2, // tri0 + 24, 23, 21, // tri1 + 25, 26, 27, // tri2 + 25, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 26, // tri0 + 29, 30, 26, // tri1 + 31, 20, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_2_v[199], 15, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 13, 14, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_2_v[214], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_3/grd_s_c4_3.c b/src/data/field/bg/acre/grd_s_c4_3/grd_s_c4_3.c new file mode 100644 index 00000000..3c283407 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_3/grd_s_c4_3.c @@ -0,0 +1,310 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_3_v[] = { +#include "assets/field/bg/grd_s_c4_3_v.inc" +}; + +extern Gfx grd_s_c4_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_3_v[191], 26, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 0, 16, 17, // tri2 + 16, 12, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 8, 20, // tri1 + 21, 9, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 24, // tri0 + 15, 23, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 14, 15, 11, // tri1 + 15, 9, 11, // tri2 + 14, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 11, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 18, 17, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 20, 22, 18, // tri1 + 19, 23, 21, // tri2 + 4, 5, 0 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 3, 27, 28, // tri1 + 3, 1, 27, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 30, // tri0 + 31, 14, 16, // tri1 + 6, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 5, 9, 6, // tri1 + 1, 10, 11, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 10, 13, 12, // tri1 + 13, 14, 12, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 15, 17, // tri0 + 19, 20, 21, // tri1 + 22, 17, 23, // tri2 + 17, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 15, 25, 16, // tri0 + 17, 16, 24, // tri1 + 15, 26, 25, // tri2 + 15, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 15, 28, 27, // tri0 + 5, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_3_v[63], 13, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_3_v[76], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 7, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 23, 25, 26, // tri1 + 25, 27, 28, // tri2 + 13, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 27, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_3_v[107], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 15, 17, 9, // tri1 + 16, 13, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 26, 22, // tri1 + 27, 28, 25, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_3_v[138], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_3_v[141], 24, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 4, 8, // tri0 + 5, 11, 3, // tri1 + 11, 12, 3, // tri2 + 10, 2, 4 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 9, 14, // tri1 + 9, 6, 14, // tri2 + 13, 16, 9 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 9, // tri0 + 17, 18, 9, // tri1 + 18, 7, 9, // tri2 + 18, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 10, // tri0 + 20, 2, 10, // tri1 + 20, 0, 2, // tri2 + 19, 20, 10 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 0, // tri0 + 21, 22, 0, // tri1 + 22, 5, 0, // tri2 + 22, 11, 5 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_3_v[165], 26, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 0, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 8, 20, // tri1 + 21, 9, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 17, 23, 25, // tri0 + 21, 22, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c b/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c new file mode 100644 index 00000000..3e20925c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1.c @@ -0,0 +1,309 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r1_1_v[] = { +#include "assets/field/bg/grd_s_c4_r1_1_v.inc" +}; + +extern Gfx grd_s_c4_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r1_1_v[244], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(5, 2, 1, // tri0 + 0, 6, 3, // tri1 + 6, 7, 3, // tri2 + 5, 4, 8 // tri3 + ), + gsSPNTriangles_5b(9, 5, 8, // tri0 + 10, 11, 9, // tri1 + 10, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r1_1_v[227], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 2, 4, 10 // tri3 + ), + gsSPNTriangles_5b(4, 11, 10, // tri0 + 12, 13, 14, // tri1 + 14, 15, 12, // tri2 + 16, 12, 17 // tri3 + ), + gsSPNTriangles_5b(17, 12, 15, // tri0 + 18, 17, 19, // tri1 + 17, 15, 19, // tri2 + 13, 20, 21 // tri3 + ), + gsSPNTriangles_5b(21, 20, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_1_v[30], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 2, 7, 0, // tri2 + 2, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 22, 23, 2 // tri3 + ), + gsSPNTriangles_5b(23, 8, 2, // tri0 + 22, 24, 23, // tri1 + 25, 12, 26, // tri2 + 25, 27, 12 // tri3 + ), + gsSPNTriangles_5b(22, 28, 24, // tri0 + 22, 29, 28, // tri1 + 29, 30, 28, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_1_v[62], 21, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 8, 3, 9, // tri1 + 8, 4, 3, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 10, 14, 11, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_1_v[83], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(8, 19, 20, // tri0 + 19, 21, 20, // tri1 + 8, 6, 19, // tri2 + 1, 0, 22 // tri3 + ), + gsSPNTriangles_5b(0, 23, 22, // tri0 + 23, 24, 22, // tri1 + 25, 24, 23, // tri2 + 15, 14, 26 // tri3 + ), + gsSPNTriangles_5b(14, 27, 26, // tri0 + 14, 28, 27, // tri1 + 29, 30, 31, // tri2 + 30, 13, 31 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_1_v[115], 23, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 3, 4, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 8, 4, 18, // tri1 + 14, 13, 19, // tri2 + 4, 20, 21 // tri3 + ), + gsSPNTriangles_5b(4, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_1_v[138], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 14, 16, // tri1 + 18, 15, 17, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 20, 19, // tri0 + 23, 22, 24, // tri1 + 25, 26, 24, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 29, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_1_v[170], 17, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b(10, 16, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r1_1_v[187], 23, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 0, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 2, 8 // tri3 + ), + gsSPNTriangles_5b(8, 10, 9, // tri0 + 10, 11, 9, // tri1 + 12, 11, 13, // tri2 + 11, 10, 13 // tri3 + ), + gsSPNTriangles_5b(14, 10, 15, // tri0 + 10, 8, 15, // tri1 + 8, 3, 15, // tri2 + 8, 2, 3 // tri3 + ), + gsSPNTriangles_5b(16, 13, 14, // tri0 + 13, 10, 14, // tri1 + 17, 0, 2, // tri2 + 0, 17, 6 // tri3 + ), + gsSPNTriangles_5b(7, 17, 2, // tri0 + 17, 18, 6, // tri1 + 19, 6, 18, // tri2 + 6, 20, 21 // tri3 + ), + gsSPNTriangles_5b(6, 19, 20, // tri0 + 22, 19, 18, // tri1 + 6, 21, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_1_v[210], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c new file mode 100644 index 00000000..c54ac8c3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r1_1/grd_s_c4_r1_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r1_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c b/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c new file mode 100644 index 00000000..96e970bc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2.c @@ -0,0 +1,324 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r1_2_v[] = { +#include "assets/field/bg/grd_s_c4_r1_2_v.inc" +}; + +extern Gfx grd_s_c4_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r1_2_v[235], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 7, 2, // tri0 + 4, 8, 5, // tri1 + 9, 10, 1, // tri2 + 10, 7, 1 // tri3 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 5, 8, 0, // tri1 + 3, 11, 6, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(11, 14, 12, // tri0 + 3, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r1_2_v[222], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 2, 12, // tri0 + 11, 0, 2, // tri1 + 0, 13, 3, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 18, 15, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 20, 8, 23, // tri1 + 24, 25, 26, // tri2 + 25, 10, 26 // tri3 + ), + gsSPNTriangles_5b(7, 27, 28, // tri0 + 27, 29, 16, // tri1 + 29, 30, 16, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 11, 8, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(9, 19, 17, // tri0 + 20, 21, 22, // tri1 + 21, 7, 23, // tri2 + 23, 7, 9 // tri3 + ), + gsSPNTriangles_5b(21, 8, 7, // tri0 + 8, 21, 12, // tri1 + 20, 12, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 28, 29, 30, // tri1 + 31, 0, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_2_v[64], 23, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 4, 7, 5, // tri1 + 9, 7, 6, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 1, 12, // tri0 + 12, 13, 14, // tri1 + 14, 13, 15, // tri2 + 12, 1, 13 // tri3 + ), + gsSPNTriangles_5b(1, 0, 13, // tri0 + 11, 12, 10, // tri1 + 12, 9, 10, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 20, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_2_v[87], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(6, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 15, 2, 16, // tri2 + 2, 3, 16 // tri3 + ), + gsSPNTriangles_5b(0, 17, 4, // tri0 + 0, 18, 17, // tri1 + 0, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 23, 24, 25, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b(26, 27, 23, // tri0 + 27, 28, 23, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(31, 28, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_2_v[119], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_2_v[136], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 18, 17, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 28, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r1_2_v[168], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r1_2_v[179], 30, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 2, 3, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 12, 9, 10, // tri1 + 12, 13, 9, // tri2 + 7, 14, 15 // tri3 + ), + gsSPNTriangles_5b(7, 9, 14, // tri0 + 15, 14, 16, // tri1 + 14, 17, 16, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 17, 21, 20, // tri2 + 9, 22, 14 // tri3 + ), + gsSPNTriangles_5b(9, 13, 22, // tri0 + 14, 22, 17, // tri1 + 22, 21, 17, // tri2 + 18, 4, 6 // tri3 + ), + gsSPNTriangles_5b(18, 19, 4, // tri0 + 19, 20, 4, // tri1 + 20, 23, 4, // tri2 + 4, 24, 2 // tri3 + ), + gsSPNTriangles_5b(4, 23, 24, // tri0 + 24, 25, 2, // tri1 + 2, 25, 0, // tri2 + 25, 26, 0 // tri3 + ), + gsSPNTriangles_5b(1, 0, 27, // tri0 + 0, 28, 27, // tri1 + 0, 29, 28, // tri2 + 0, 26, 29 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r1_2_v[209], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c new file mode 100644 index 00000000..2e302cda --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r1_2/grd_s_c4_r1_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r1_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c b/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c new file mode 100644 index 00000000..8c291747 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1.c @@ -0,0 +1,307 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r2_1_v[] = { +#include "assets/field/bg/grd_s_c4_r2_1_v.inc" +}; + +extern Gfx grd_s_c4_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r2_1_v[251], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r2_1_v[235], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 2, 9, 10, // tri2 + 11, 3, 12 // tri3 + ), + gsSPNTriangles_5b(9, 8, 13, // tri0 + 7, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 20, 21, 14 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(14, 21, 15, // tri0 + 11, 28, 13, // tri1 + 28, 19, 13, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 15, 13, 12, // tri1 + 16, 17, 18, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 19, 21, 20, // tri1 + 10, 22, 9, // tri2 + 6, 7, 9 // tri3 + ), + gsSPNTriangles_5b(23, 3, 5, // tri0 + 3, 24, 4, // tri1 + 2, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(25, 28, 27, // tri0 + 1, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_1_v[64], 31, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 17, 19, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 21, 26, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r2_1_v[95], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 10, 17, 18, // tri1 + 17, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 2, 23, 26, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_1_v[125], 29, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 8, 4, // tri0 + 9, 10, 11, // tri1 + 12, 3, 5, // tri2 + 1, 9, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 14, 17, 18, // tri1 + 19, 18, 17, // tri2 + 20, 19, 17 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 23, 24, 25, // tri1 + 24, 21, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r2_1_v[154], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 6, 4, // tri0 + 6, 7, 4, // tri1 + 6, 8, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 12, 13, 10, // tri1 + 13, 14, 10, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 16, 17, 14, // tri1 + 16, 18, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 19, 21, 20, // tri1 + 21, 22, 20, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 20, // tri0 + 23, 25, 24, // tri1 + 26, 27, 28, // tri2 + 26, 29, 27 // tri3 + ), + gsSPNTriangles_5b(27, 30, 28, // tri0 + 30, 31, 28, // tri1 + 31, 6, 28, // tri2 + 31, 8, 6 // tri3 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_1_v[186], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r2_1_v[190], 29, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 4, 7, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 11, 13, 12, // tri1 + 14, 12, 13, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(8, 9, 16, // tri0 + 9, 17, 16, // tri1 + 17, 18, 16, // tri2 + 18, 14, 16 // tri3 + ), + gsSPNTriangles_5b(18, 15, 14, // tri0 + 0, 2, 19, // tri1 + 2, 20, 19, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 23, 24, 21, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(23, 26, 25, // tri0 + 26, 27, 25, // tri1 + 26, 28, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r2_1_v[219], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 9, 3, 10, // tri2 + 2, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 13, 14, // tri0 + 11, 7, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c new file mode 100644 index 00000000..234ff4d0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r2_1/grd_s_c4_r2_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r2_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c b/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c new file mode 100644 index 00000000..c5c55001 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2.c @@ -0,0 +1,288 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r2_2_v[] = { +#include "assets/field/bg/grd_s_c4_r2_2_v.inc" +}; + +extern Gfx grd_s_c4_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r2_2_v[212], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 9, 10, 11, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 15, 16, 14, // tri1 + 17, 18, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 22, 6, 8, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 27, 23, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_2_v[32], 26, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 6, 8, // tri0 + 10, 9, 11, // tri1 + 12, 10, 13, // tri2 + 3, 14, 4 // tri3 + ), + gsSPNTriangles_5b(14, 12, 4, // tri0 + 15, 16, 17, // tri1 + 16, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 22, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r2_2_v[58], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(2, 5, 4, // tri0 + 2, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 28, 29, 26, // tri2 + 29, 30, 26 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_2_v[90], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r2_2_v[97], 28, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 17, // tri2 + 15, 10, 16 // tri3 + ), + gsSPNTriangles_5b(10, 12, 16, // tri0 + 5, 18, 8, // tri1 + 5, 19, 18, // tri2 + 9, 8, 0 // tri3 + ), + gsSPNTriangles_5b(8, 1, 0, // tri0 + 8, 18, 1, // tri1 + 18, 20, 1, // tri2 + 1, 21, 3 // tri3 + ), + gsSPNTriangles_5b(1, 20, 21, // tri0 + 4, 3, 17, // tri1 + 3, 15, 17, // tri2 + 3, 21, 15 // tri3 + ), + gsSPNTriangles_5b(21, 22, 15, // tri0 + 15, 22, 10, // tri1 + 22, 23, 10, // tri2 + 10, 24, 13 // tri3 + ), + gsSPNTriangles_5b(10, 23, 24, // tri0 + 14, 25, 26, // tri1 + 14, 13, 25, // tri2 + 13, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r2_2_v[125], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 10, 11, 8, // tri2 + 12, 13, 9 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 16, 17, 15, // tri1 + 17, 16, 18, // tri2 + 2, 19, 0 // tri3 + ), + gsSPNTriangles_5b(19, 20, 0, // tri0 + 19, 21, 20, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 27, 29, 30, // tri2 + 29, 7, 30 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_2_v[156], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 3, 8, 7, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 12, // tri0 + 15, 12, 14, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 17, // tri0 + 22, 23, 24, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 26, 28, 29, // tri1 + 26, 29, 20, // tri2 + 2, 1, 30 // tri3 + ), + gsSPNTriangles_5b(1, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r2_2_v[188], 24, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 1, 5, // tri0 + 5, 6, 3, // tri1 + 6, 5, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 12, // tri0 + 13, 12, 11, // tri1 + 14, 13, 15, // tri2 + 16, 14, 15 // tri3 + ), + gsSPNTriangles_5b(9, 6, 10, // tri0 + 6, 7, 10, // tri1 + 6, 9, 17, // tri2 + 9, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 18, 9, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c new file mode 100644 index 00000000..c5817ce9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r2_2/grd_s_c4_r2_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r2_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c b/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c new file mode 100644 index 00000000..1ee0271f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1.c @@ -0,0 +1,289 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r3_1_v[] = { +#include "assets/field/bg/grd_s_c4_r3_1_v.inc" +}; + +extern Gfx grd_s_c4_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r3_1_v[213], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 12, 9, // tri2 + 11, 9, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r3_1_v[202], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 2, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 17, 18, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 22, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 4, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 9, 12, // tri0 + 11, 13, 14, // tri1 + 13, 6, 14, // tri2 + 8, 13, 11 // tri3 + ), + gsSPNTriangles_5b(7, 14, 6, // tri0 + 15, 16, 9, // tri1 + 16, 12, 9, // tri2 + 17, 14, 7 // tri3 + ), + gsSPNTriangles_5b(5, 18, 7, // tri0 + 18, 5, 19, // tri1 + 19, 5, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 3, 27, 2, // tri1 + 3, 28, 27, // tri2 + 27, 29, 2 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_1_v[62], 19, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 7, 8, 6, // tri1 + 1, 9, 2, // tri2 + 10, 11, 0 // tri3 + ), + gsSPNTriangles_5b(11, 12, 0, // tri0 + 0, 2, 10, // tri1 + 13, 10, 2, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 11, // tri0 + 17, 12, 11, // tri1 + 15, 16, 14, // tri2 + 15, 18, 16 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r3_1_v[81], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 0, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 10, 12, // tri1 + 18, 19, 10, // tri2 + 20, 17, 14 // tri3 + ), + gsSPNTriangles_5b(20, 21, 17, // tri0 + 22, 3, 2, // tri1 + 22, 23, 3, // tri2 + 11, 23, 13 // tri3 + ), + gsSPNTriangles_5b(23, 22, 13, // tri0 + 15, 24, 16, // tri1 + 24, 25, 16, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b(25, 24, 27, // tri0 + 28, 26, 27, // tri1 + 28, 29, 26, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_1_v[113], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r3_1_v[117], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 8, 9, 6, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 14, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 9, 8, // tri0 + 9, 7, 6, // tri1 + 7, 4, 5, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 16, 20, 19, // tri1 + 16, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 22, 21, 23, // tri1 + 23, 25, 24, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(26, 25, 23, // tri0 + 26, 28, 27, // tri1 + 26, 29, 28, // tri2 + 30, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_1_v[149], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r3_1_v[154], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 0, 19, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 21, 6, 22 // tri3 + ), + gsSPNTriangles_5b(4, 15, 17, // tri0 + 12, 23, 13, // tri1 + 20, 22, 24, // tri2 + 23, 20, 24 // tri3 + ), + gsSPNTriangles_5b(10, 12, 14, // tri0 + 25, 26, 27, // tri1 + 27, 28, 29, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_1_v[186], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r3_1_v[191], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c new file mode 100644 index 00000000..bfd8799a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r3_1/grd_s_c4_r3_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r3_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c b/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c new file mode 100644 index 00000000..aed26c83 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2.c @@ -0,0 +1,271 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_r3_2_v[] = { +#include "assets/field/bg/grd_s_c4_r3_2_v.inc" +}; + +extern Gfx grd_s_c4_r3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r3_2_v[199], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 10, 11, 8, // tri1 + 10, 8, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_r3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_r3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 0, 2, 6, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 7, 12, // tri0 + 7, 13, 12, // tri1 + 3, 14, 4, // tri2 + 15, 1, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 1, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 8, 22, 23, // tri1 + 22, 24, 23, // tri2 + 22, 25, 24 // tri3 + ), + gsSPNTriangles_5b(22, 26, 25, // tri0 + 1, 17, 3, // tri1 + 21, 27, 19, // tri2 + 14, 28, 4 // tri3 + ), + gsSPNTriangles_5b(14, 29, 28, // tri0 + 29, 30, 28, // tri1 + 30, 31, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 12, 15, // tri1 + 14, 10, 12, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 21, 22, 23, // tri1 + 21, 24, 22, // tri2 + 21, 25, 24 // tri3 + ), + gsSPNTriangles_5b(22, 26, 23, // tri0 + 26, 27, 23, // tri1 + 26, 28, 27, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_2_v[63], 19, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(3, 17, 18, // tri0 + 2, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r3_2_v[82], 32, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 1, 10, 11, // tri1 + 10, 8, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 14, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 15, 20, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_r3_2_v[112], 23, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 0, 2, // tri0 + 7, 8, 9, // tri1 + 10, 7, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 15, 19, // tri1 + 13, 20, 21, // tri2 + 20, 18, 22 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_r3_2_v[135], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 4, 8 // tri3 + ), + gsSPNTriangles_5b(4, 10, 8, // tri0 + 4, 2, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(6, 12, 7, // tri0 + 6, 15, 12, // tri1 + 15, 16, 12, // tri2 + 16, 14, 12 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 17, 18, 14, // tri1 + 17, 19, 18, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(11, 20, 7, // tri0 + 21, 19, 22, // tri1 + 21, 18, 19, // tri2 + 5, 23, 3 // tri3 + ), + gsSPNTriangles_5b(5, 24, 23, // tri0 + 21, 25, 18, // tri1 + 25, 26, 18, // tri2 + 26, 13, 18 // tri3 + ), + gsSPNTriangles_5b(13, 14, 18, // tri0 + 20, 27, 7, // tri1 + 27, 9, 7, // tri2 + 27, 4, 9 // tri3 + ), + gsSPNTriangles_5b(27, 28, 4, // tri0 + 28, 29, 4, // tri1 + 29, 0, 4, // tri2 + 29, 5, 0 // tri3 + ), + gsSPNTriangles_5b(29, 30, 5, // tri0 + 30, 31, 5, // tri1 + 31, 24, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_r3_2_v[167], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 6, 4, 3, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 5, 0, // tri1 + 25, 0, 24, // tri2 + 6, 26, 4 // tri3 + ), + gsSPNTriangles_5b(26, 27, 4, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(22, 31, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c new file mode 100644 index 00000000..933a661a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_r3_2/grd_s_c4_r3_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c4_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c4_r3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c4_r3_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c b/src/data/field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c new file mode 100644 index 00000000..04be8fe4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_s_1/grd_s_c4_s_1.c @@ -0,0 +1,310 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_s_1_v[] = { +#include "assets/field/bg/grd_s_c4_s_1_v.inc" +}; + +extern Gfx grd_s_c4_s_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_s_1_v[196], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 7, // tri2 + 2, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 3, 14, // tri0 + 11, 15, 16, // tri1 + 15, 8, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 6, 7, 0, // tri1 + 7, 1, 0, // tri2 + 8, 5, 9 // tri3 + ), + gsSPNTriangles_5b( + 5, 0, 9, // tri0 + 1, 7, 10, // tri1 + 7, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 3, 15, 4, // tri2 + 3, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 4, // tri0 + 2, 9, 0, // tri1 + 3, 18, 16, // tri2 + 3, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 21, 23, 22, // tri1 + 23, 24, 22, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 29, 30, 2, // tri1 + 28, 31, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_s_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 7, 8, 6, // tri2 + 8, 5, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 0, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 24, 9, 23, // tri1 + 9, 25, 23, // tri2 + 9, 7, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 9, // tri0 + 24, 27, 26, // tri1 + 22, 28, 24, // tri2 + 29, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 0, 30, 3, // tri0 + 0, 14, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_s_1_v[64], 10, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 4, 6, // tri0 + 7, 8, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_s_1_v[74], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 2, 10, 11, // tri2 + 8, 12, 5 // tri3 + ), + gsSPNTriangles_5b( + 6, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 16, 22, 25, // tri1 + 23, 26, 27, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_s_1_v[105], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_s_1_v[116], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 2, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 16, // tri0 + 12, 16, 13, // tri1 + 12, 14, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 22, 23, 18, // tri1 + 22, 24, 23, // tri2 + 17, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 17, 14, 25, // tri0 + 27, 28, 29, // tri1 + 28, 30, 29, // tri2 + 11, 31, 27 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 31, // tri0 + 26, 20, 19, // tri1 + 26, 25, 20, // tri2 + 21, 18, 23 // tri3 + ), + gsSPVertex(&grd_s_c4_s_1_v[148], 31, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 5, // tri0 + 6, 5, 7, // tri1 + 6, 4, 5, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 10, 8, 9, // tri1 + 10, 9, 11, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 17, 19, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 21, 23, // tri1 + 24, 23, 25, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 24, 26, // tri0 + 27, 26, 16, // tri1 + 28, 27, 18, // tri2 + 27, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 28, 18, // tri0 + 19, 29, 28, // tri1 + 30, 13, 15, // tri2 + 22, 21, 30 // tri3 + ), + gsSPNTriangles_5b( + 15, 22, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_s_1_v[179], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 7, // tri2 + 11, 3, 12 // tri3 + ), + gsSPNTriangles_5b( + 2, 13, 14, // tri0 + 13, 15, 16, // tri1 + 15, 8, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c4_s_2/grd_s_c4_s_2.c b/src/data/field/bg/acre/grd_s_c4_s_2/grd_s_c4_s_2.c new file mode 100644 index 00000000..54c0c422 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c4_s_2/grd_s_c4_s_2.c @@ -0,0 +1,341 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c4_s_2_v[] = { +#include "assets/field/bg/grd_s_c4_s_2_v.inc" +}; + +extern Gfx grd_s_c4_s_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c4_s_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c4_s_2_v[234], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 7, // tri0 + 1, 3, 2, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 0, 7, 1, // tri0 + 15, 12, 14, // tri1 + 16, 17, 13, // tri2 + 16, 9, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 15, 19, // tri0 + 8, 18, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_s_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 5, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 18, 17, // tri0 + 18, 19, 17, // tri1 + 20, 19, 21, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 22, // tri0 + 19, 23, 22, // tri1 + 17, 19, 20, // tri2 + 25, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 11, // tri0 + 21, 27, 20, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c4_s_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 3, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 1, 14, // tri0 + 1, 15, 14, // tri1 + 1, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 18, 17, // tri0 + 19, 20, 21, // tri1 + 19, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 27, // tri0 + 26, 27, 19, // tri1 + 28, 26, 19, // tri2 + 28, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_s_2_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 6, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 13, // tri0 + 15, 16, 17, // tri1 + 15, 17, 18, // tri2 + 16, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 20, // tri0 + 21, 20, 22, // tri1 + 21, 17, 20, // tri2 + 23, 18, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 29, // tri1 + 29, 27, 26, // tri2 + 3, 30, 2 // tri3 + ), + gsSPNTriangles_5b( + 3, 5, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c4_s_2_v[95], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_s_2_v[98], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 7, 16, // tri0 + 17, 18, 19, // tri1 + 17, 20, 18, // tri2 + 18, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 2, // tri0 + 20, 24, 22, // tri1 + 21, 25, 26, // tri2 + 3, 27, 28 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c4_s_2_v[127], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 12, // tri0 + 17, 15, 18, // tri1 + 19, 20, 18, // tri2 + 20, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 11, 21, 22, // tri0 + 21, 23, 22, // tri1 + 24, 23, 21, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 10, // tri0 + 24, 21, 10, // tri1 + 27, 10, 28, // tri2 + 27, 26, 10 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 13, // tri0 + 27, 28, 13, // tri1 + 30, 13, 31, // tri2 + 30, 29, 13 // tri3 + ), + gsSPVertex(&grd_s_c4_s_2_v[159], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 10, 11, 12, // tri1 + 13, 10, 14, // tri2 + 15, 13, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 16, // tri0 + 3, 15, 17, // tri1 + 2, 3, 17, // tri2 + 5, 2, 18 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 19, // tri0 + 20, 9, 19, // tri1 + 9, 8, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 24, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 28, 29, 26, // tri1 + 28, 30, 29, // tri2 + 28, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c4_s_2_v[191], 22, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 15, 16, 13, // tri2 + 16, 17, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 0, 17, // tri0 + 16, 18, 0, // tri1 + 18, 19, 0, // tri2 + 19, 20, 3 // tri3 + ), + gsSPNTriangles_5b( + 20, 6, 3, // tri0 + 20, 21, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c4_s_2_v[213], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 7, // tri0 + 1, 3, 2, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 14, // tri0 + 0, 7, 1, // tri1 + 16, 17, 13, // tri2 + 16, 9, 17 // tri3 + ), + gsSPNTriangles_5b( + 8, 18, 19, // tri0 + 18, 15, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_1/grd_s_c5_1.c b/src/data/field/bg/acre/grd_s_c5_1/grd_s_c5_1.c new file mode 100644 index 00000000..4f883fb6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_1/grd_s_c5_1.c @@ -0,0 +1,256 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_1_v[] = { +#include "assets/field/bg/grd_s_c5_1_v.inc" +}; + +extern Gfx grd_s_c5_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_1_v[163], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 0, 8, 1, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 9, 14, 12, // tri1 + 15, 14, 9, // tri2 + 10, 16, 11 // tri3 + ), + gsSPNTriangles_5b( + 17, 2, 18, // tri0 + 19, 4, 20, // tri1 + 4, 6, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 24, // tri0 + 14, 25, 12, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 4, 30, 5, // tri0 + 5, 31, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 8, 11, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 3, // tri0 + 12, 13, 3, // tri1 + 3, 14, 1, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 1, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 6, // tri0 + 7, 6, 20, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 29, 27, // tri0 + 30, 31, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_1_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 17, 18, 1, // tri2 + 17, 1, 0 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 1, // tri0 + 18, 20, 19, // tri1 + 21, 1, 19, // tri2 + 21, 2, 1 // tri3 + ), + gsSPNTriangles_5b( + 2, 22, 23, // tri0 + 2, 23, 3, // tri1 + 21, 22, 2, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 25, 23, 22, // tri1 + 24, 25, 22, // tri2 + 24, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 4, // tri0 + 26, 25, 28, // tri1 + 25, 4, 28, // tri2 + 4, 6, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 4, // tri0 + 29, 30, 7, // tri1 + 29, 7, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_1_v[95], 9, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 1, 6, 7, // tri1 + 1, 7, 2, // tri2 + 5, 8, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_1_v[104], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 10, 13, 11, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 10, 12, // tri0 + 17, 18, 19, // tri1 + 20, 3, 21, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 17, 19, 22, // tri1 + 7, 16, 8, // tri2 + 10, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 15, // tri0 + 25, 22, 24, // tri1 + 26, 27, 5, // tri2 + 28, 29, 27 // tri3 + ), + gsSPVertex(&grd_s_c5_1_v[134], 17, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 7, 6, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 14, 15, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_1_v[151], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 1, 9, 10, // tri1 + 9, 3, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_2/grd_s_c5_2.c b/src/data/field/bg/acre/grd_s_c5_2/grd_s_c5_2.c new file mode 100644 index 00000000..598db4df --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_2/grd_s_c5_2.c @@ -0,0 +1,347 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_2_v[] = { +#include "assets/field/bg/grd_s_c5_2_v.inc" +}; + +extern Gfx grd_s_c5_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_2_v[225], 23, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 6, // tri0 + 8, 9, 10, // tri1 + 9, 5, 7, // tri2 + 11, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 14, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 17, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 16, 20, // tri0 + 21, 19, 22, // tri1 + 16, 18, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 7, 9, 5, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 6, 12, // tri0 + 6, 5, 12, // tri1 + 11, 13, 14, // tri2 + 11, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 16, 15, // tri0 + 11, 10, 16, // tri1 + 1, 17, 16, // tri2 + 1, 0, 17 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 16, // tri0 + 3, 18, 4, // tri1 + 18, 19, 4, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 27, 22 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 22, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 15, 7, 14, // tri2 + 11, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 18, 17, // tri0 + 11, 10, 16, // tri1 + 19, 1, 20, // tri2 + 21, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 7, 15, 8, // tri0 + 12, 22, 13, // tri1 + 12, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 26, 27, 24, // tri2 + 27, 28, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 29, 27, // tri0 + 30, 31, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_2_v[64], 16, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_2_v[80], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 8, 9, // tri1 + 8, 6, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 7, 14, 15, // tri1 + 14, 12, 16, // tri2 + 10, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 20, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 19, // tri0 + 26, 23, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_2_v[112], 12, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 0, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_2_v[124], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 4, 9, 5, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 14, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 0, 19, 1, // tri0 + 20, 16, 21, // tri1 + 16, 15, 21, // tri2 + 0, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 0, 23, 22, // tri0 + 24, 25, 8, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 17, 25, // tri0 + 17, 28, 25, // tri1 + 28, 8, 25, // tri2 + 17, 18, 28 // tri3 + ), + gsSPNTriangles_5b( + 28, 7, 8, // tri0 + 29, 12, 30, // tri1 + 12, 31, 30, // tri2 + 12, 13, 31 // tri3 + ), + gsSPNTriangles_5b( + 29, 9, 12, // tri0 + 12, 9, 10, // tri1 + 9, 4, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_2_v[156], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 4, 6, 1, // tri1 + 6, 7, 1, // tri2 + 7, 2, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 12, 8, 13, // tri2 + 8, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 14, 12, 13, // tri1 + 16, 14, 17, // tri2 + 14, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 18, 16, 17, // tri1 + 20, 18, 21, // tri2 + 18, 19, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 22, 20, 21, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 26, 29, // tri0 + 28, 24, 26, // tri1 + 5, 30, 4, // tri2 + 30, 6, 4 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_2_v[188], 10, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_2_v[198], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 10, 8, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 12, 19, // tri0 + 6, 20, 21, // tri1 + 20, 22, 21, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 22, // tri0 + 16, 26, 17, // tri1 + 23, 15, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_3/grd_s_c5_3.c b/src/data/field/bg/acre/grd_s_c5_3/grd_s_c5_3.c new file mode 100644 index 00000000..6b4d56c2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_3/grd_s_c5_3.c @@ -0,0 +1,267 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_3_v[] = { +#include "assets/field/bg/grd_s_c5_3_v.inc" +}; + +extern Gfx grd_s_c5_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_3_v[169], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 5, 9, // tri1 + 10, 8, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 1, 6, // tri1 + 6, 1, 0, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 1, 20, // tri2 + 1, 5, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 21, 20, 22, // tri1 + 20, 24, 22, // tri2 + 20, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 20, 5, 25, // tri0 + 20, 21, 19, // tri1 + 26, 27, 28, // tri2 + 15, 14, 27 // tri3 + ), + gsSPNTriangles_5b( + 14, 28, 27, // tri0 + 26, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_3_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 8, 9, 7, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 15, 16, 17, // tri1 + 2, 18, 0, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 22, // tri0 + 23, 24, 25, // tri1 + 25, 26, 23, // tri2 + 15, 23, 26 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 14, 13, 28, // tri1 + 12, 10, 13, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 29, // tri0 + 3, 6, 5, // tri1 + 2, 20, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_3_v[61], 10, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 5, // tri0 + 6, 1, 0, // tri1 + 7, 6, 8, // tri2 + 9, 1, 6 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_3_v[71], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 17, 13, 16, // tri1 + 17, 16, 18, // tri2 + 19, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 22, // tri0 + 23, 22, 24, // tri1 + 25, 23, 24, // tri2 + 25, 24, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 26, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_3_v[102], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 7, 6, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 21, 23, 24, // tri1 + 23, 25, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_3_v[129], 28, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 18, 19, // tri0 + 14, 15, 18, // tri1 + 15, 20, 18, // tri2 + 15, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 2, // tri0 + 18, 0, 2, // tri1 + 18, 20, 0, // tri2 + 20, 21, 0 // tri3 + ), + gsSPNTriangles_5b( + 0, 22, 1, // tri0 + 0, 21, 22, // tri1 + 3, 23, 24, // tri2 + 3, 1, 23 // tri3 + ), + gsSPNTriangles_5b( + 1, 22, 23, // tri0 + 22, 25, 23, // tri1 + 24, 23, 4, // tri2 + 23, 5, 4 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 5, // tri0 + 25, 26, 5, // tri1 + 5, 26, 7, // tri2 + 26, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 27, // tri0 + 7, 10, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_3_v[157], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 3, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c b/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c new file mode 100644 index 00000000..927ff89f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r1_1_v[] = { +#include "assets/field/bg/grd_s_c5_r1_1_v.inc" +}; + +extern Gfx grd_s_c5_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r1_1_v[274], 24, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 4, 8, 5, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 11, // tri2 + 13, 19, 14 // tri3 + ), + gsSPNTriangles_5b(0, 15, 20, // tri0 + 0, 13, 15, // tri1 + 0, 20, 1, // tri2 + 21, 2, 22 // tri3 + ), + gsSPNTriangles_5b(2, 23, 22, // tri0 + 2, 1, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r1_1_v[259], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 1, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(3, 7, 4, // tri0 + 3, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 6, // tri1 + 15, 5, 6, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 16, 22, 17 // tri3 + ), + gsSPNTriangles_5b(22, 23, 17, // tri0 + 22, 24, 23, // tri1 + 25, 26, 27, // tri2 + 25, 28, 26 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 30, 25, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 7, // tri1 + 6, 8, 7, // tri2 + 5, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 14, 10, 12, // tri2 + 13, 0, 15 // tri3 + ), + gsSPNTriangles_5b(15, 14, 13, // tri0 + 15, 0, 16, // tri1 + 17, 11, 10, // tri2 + 17, 18, 11 // tri3 + ), + gsSPNTriangles_5b(19, 18, 17, // tri0 + 20, 21, 22, // tri1 + 21, 20, 23, // tri2 + 24, 23, 20 // tri3 + ), + gsSPNTriangles_5b(25, 22, 21, // tri0 + 24, 26, 27, // tri1 + 26, 28, 27, // tri2 + 27, 28, 29 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_1_v[62], 15, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b(5, 2, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 9, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 10, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r1_1_v[77], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 7, 10, // tri2 + 7, 5, 10 // tri3 + ), + gsSPNTriangles_5b(5, 11, 10, // tri0 + 3, 2, 12, // tri1 + 12, 13, 3, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 7, 15, // tri1 + 17, 8, 7, // tri2 + 5, 18, 19 // tri3 + ), + gsSPNTriangles_5b(5, 4, 18, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 25, 1, 26, // tri2 + 25, 27, 1 // tri3 + ), + gsSPNTriangles_5b(27, 2, 1, // tri0 + 27, 28, 2, // tri1 + 28, 29, 2, // tri2 + 29, 12, 2 // tri3 + ), + gsSPNTriangles_5b(30, 16, 15, // tri0 + 7, 9, 15, // tri1 + 15, 9, 30, // tri2 + 19, 31, 5 // tri3 + ), + gsSPNTriangles_5b(5, 31, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_1_v[109], 14, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(1, 5, 3, // tri0 + 5, 6, 7, // tri1 + 7, 6, 8, // tri2 + 5, 7, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 13, 10, 12, // tri2 + 4, 12, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_1_v[123], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(15, 19, 20, // tri0 + 21, 22, 23, // tri1 + 21, 24, 22, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b(25, 18, 22, // tri0 + 25, 16, 18, // tri1 + 16, 26, 17, // tri2 + 27, 20, 28 // tri3 + ), + gsSPNTriangles_5b(20, 29, 28, // tri0 + 20, 19, 29, // tri1 + 15, 30, 19, // tri2 + 15, 14, 30 // tri3 + ), + gsSPNTriangles_5b(13, 31, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_1_v[155], 31, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 6, 7, 5, // tri1 + 6, 8, 7, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b(7, 8, 10, // tri0 + 11, 9, 10, // tri1 + 12, 11, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 21, 23, 25, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_1_v[186], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 10, 12, // tri2 + 13, 14, 9 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 16, // tri1 + 20, 12, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 21, 25, // tri0 + 26, 27, 28, // tri1 + 27, 24, 29, // tri2 + 2, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_1_v[218], 26, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 13, 15, 16, // tri2 + 15, 9, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 17, 21, // tri1 + 18, 22, 23, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b(18, 23, 19, // tri0 + 9, 11, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_1_v[244], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 8, 12, 13, // tri2 + 12, 5, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c new file mode 100644 index 00000000..5e038d61 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r1_1/grd_s_c5_r1_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r1_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c b/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c new file mode 100644 index 00000000..a18defb9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2.c @@ -0,0 +1,354 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r1_2_v[] = { +#include "assets/field/bg/grd_s_c5_r1_2_v.inc" +}; + +extern Gfx grd_s_c5_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r1_2_v[269], 23, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 5, 4, 0, // tri1 + 5, 6, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 9, 20, // tri0 + 9, 11, 20, // tri1 + 10, 21, 12, // tri2 + 21, 22, 12 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r1_2_v[258], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 0 // tri3 + ), + gsSPNTriangles_5b(11, 1, 0, // tri0 + 11, 12, 1, // tri1 + 12, 13, 1, // tri2 + 1, 14, 3 // tri3 + ), + gsSPNTriangles_5b(1, 13, 14, // tri0 + 4, 3, 15, // tri1 + 3, 16, 15, // tri2 + 3, 17, 16 // tri3 + ), + gsSPNTriangles_5b(3, 14, 17, // tri0 + 15, 18, 19, // tri1 + 15, 16, 18, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 19, 21, 22, // tri1 + 19, 18, 21, // tri2 + 18, 23, 21 // tri3 + ), + gsSPNTriangles_5b(18, 20, 23, // tri0 + 21, 23, 24, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 26, 28, // tri1 + 26, 30, 28, // tri2 + 26, 25, 30 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_2_v[31], 15, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 2, 1, 6, // tri1 + 1, 7, 6, // tri2 + 1, 4, 7 // tri3 + ), + gsSPNTriangles_5b(4, 8, 7, // tri0 + 7, 9, 10, // tri1 + 7, 8, 9, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 10, 14, 13, // tri1 + 10, 9, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r1_2_v[46], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 0, 4, 9, // tri2 + 4, 6, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 14, 15, 16, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 23, 21, 24 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 26, 27, 25, // tri1 + 28, 29, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_2_v[76], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(13, 17, 14, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 2, 25 // tri3 + ), + gsSPNTriangles_5b(26, 2, 27, // tri0 + 24, 27, 2, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_2_v[107], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 9, 8, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 16, 15, // tri0 + 19, 20, 21, // tri1 + 20, 22, 21, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 22, 25, 24, // tri1 + 26, 27, 28, // tri2 + 16, 18, 29 // tri3 + ), + gsSPNTriangles_5b(30, 28, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_2_v[139], 16, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(5, 4, 0, // tri0 + 6, 7, 8, // tri1 + 7, 6, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 7, 13, // tri0 + 10, 13, 11, // tri1 + 13, 14, 11, // tri2 + 13, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_2_v[155], 30, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b(24, 22, 25, // tri0 + 14, 26, 27, // tri1 + 26, 28, 29, // tri2 + 20, 21, 23 // tri3 + ), + gsSPNTriangles_5b(14, 27, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_2_v[185], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 0, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 15, 17, 16, // tri1 + 17, 18, 19, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 25, 26, 23, // tri1 + 8, 27, 9, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r1_2_v[217], 30, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 4, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b(20, 21, 17, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 26, 27, 24, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r1_2_v[247], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c new file mode 100644 index 00000000..62dcb35c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r1_2/grd_s_c5_r1_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r1_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c b/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c new file mode 100644 index 00000000..ce46ca23 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1.c @@ -0,0 +1,376 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r2_1_v[] = { +#include "assets/field/bg/grd_s_c5_r2_1_v.inc" +}; + +extern Gfx grd_s_c5_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r2_1_v[293], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 2, 3, 11, // tri2 + 3, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 4, 6, // tri2 + 4, 16, 5 // tri3 + ), + gsSPNTriangles_5b(4, 14, 16, // tri0 + 8, 15, 10, // tri1 + 15, 6, 10, // tri2 + 17, 7, 18 // tri3 + ), + gsSPNTriangles_5b(7, 9, 18, // tri0 + 14, 13, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r2_1_v[279], 14, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 7, 8, 9, // tri1 + 8, 4, 9, // tri2 + 10, 7, 11 // tri3 + ), + gsSPNTriangles_5b(12, 10, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 4, 6, 8, // tri2 + 6, 9, 8 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 20, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 17, 28, 18, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 1, 5, 4 // tri2 + ), + gsSPNTriangles_5b(1, 0, 5, // tri0 + 6, 7, 0, // tri1 + 8, 9, 10, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 13, 14, 15, // tri1 + 16, 14, 13, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 20, 21, 18, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 25, 27, 26, // tri1 + 16, 13, 4, // tri2 + 13, 3, 4 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[64], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 10, 8, 11, // tri1 + 2, 1, 12, // tri2 + 1, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 14, // tri1 + 14, 13, 17, // tri2 + 13, 18, 17 // tri3 + ), + gsSPNTriangles_5b(13, 19, 18, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 20, 24, 21 // tri3 + ), + gsSPNTriangles_5b(25, 10, 26, // tri0 + 10, 11, 26, // tri1 + 7, 11, 8, // tri2 + 27, 28, 29 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[94], 22, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 2, 1, 15, // tri2 + 1, 16, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 18, // tri0 + 15, 16, 17, // tri1 + 19, 20, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_1_v[116], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 3, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(3, 10, 2, // tri0 + 9, 12, 11, // tri1 + 12, 13, 11, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 14, 16, 21, // tri2 + 16, 22, 21 // tri3 + ), + gsSPNTriangles_5b(16, 23, 22, // tri0 + 24, 17, 25, // tri1 + 17, 19, 25, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 28, 22, 23, // tri1 + 28, 29, 22, // tri2 + 24, 27, 30 // tri3 + ), + gsSPNTriangles_5b(31, 30, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[148], 20, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 0, 8, 1, // tri1 + 9, 10, 11, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_1_v[168], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 14, 15, 13, // tri1 + 16, 2, 17, // tri2 + 18, 17, 19 // tri3 + ), + gsSPNTriangles_5b(20, 19, 6, // tri0 + 3, 21, 1, // tri1 + 3, 22, 21, // tri2 + 23, 10, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 27, 28, 29, // tri1 + 22, 29, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[198], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_1_v[212], 14, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 3, 9, // tri1 + 5, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 7, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r2_1_v[226], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 0, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 0, 13, 10, // tri1 + 11, 12, 14, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(2, 15, 13, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(8, 21, 9, // tri0 + 21, 22, 9, // tri1 + 21, 18, 22, // tri2 + 18, 23, 16 // tri3 + ), + gsSPNTriangles_5b(14, 20, 24, // tri0 + 20, 19, 24, // tri1 + 2, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(15, 2, 26, // tri0 + 21, 23, 18, // tri1 + 28, 25, 29, // tri2 + 28, 30, 25 // tri3 + ), + gsSPNTriangles_5b(25, 2, 29, // tri0 + 2, 4, 29, // tri1 + 0, 31, 3, // tri2 + 0, 11, 31 // tri3 + ), + gsSPNTriangles_5b(11, 24, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_1_v[258], 21, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 0, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c new file mode 100644 index 00000000..3e6f8690 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r2_1/grd_s_c5_r2_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r2_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c b/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c new file mode 100644 index 00000000..dddf34bb --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2.c @@ -0,0 +1,343 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r2_2_v[] = { +#include "assets/field/bg/grd_s_c5_r2_2_v.inc" +}; + +extern Gfx grd_s_c5_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r2_2_v[259], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r2_2_v[240], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 7, 8, 9, // tri1 + 10, 5, 11, // tri2 + 12, 10, 13 // tri3 + ), + gsSPNTriangles_5b(14, 12, 15, // tri0 + 14, 15, 16, // tri1 + 17, 18, 7, // tri2 + 14, 16, 17 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b(9, 18, 19, // tri0 + 18, 20, 19, // tri1 + 19, 21, 22, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 26, 27, 24, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 7, // tri1 + 9, 8, 10, // tri2 + 2, 11, 0 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 22, 25, 24, // tri1 + 22, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 25, // tri0 + 29, 4, 30, // tri1 + 4, 29, 31, // tri2 + 3, 30, 4 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_2_v[64], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 14, 17, // tri1 + 14, 15, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 9, 25, // tri1 + 9, 24, 11, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 30, 28, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_2_v[96], 9, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 3, // tri0 + 7, 6, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_2_v[105], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 14, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b(12, 24, 25, // tri0 + 24, 26, 27, // tri1 + 18, 19, 21, // tri2 + 12, 25, 13 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_2_v[136], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_2_v[147], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(2, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 20, 21, // tri2 + 19, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 23, 24, 20, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r2_2_v[179], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r2_2_v[189], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 11, 15, 14, // tri2 + 12, 6, 5 // tri3 + ), + gsSPNTriangles_5b(12, 13, 6, // tri0 + 13, 16, 6, // tri1 + 13, 14, 16, // tri2 + 6, 17, 8 // tri3 + ), + gsSPNTriangles_5b(6, 16, 17, // tri0 + 9, 8, 18, // tri1 + 8, 19, 18, // tri2 + 8, 17, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 19, // tri0 + 18, 19, 21, // tri1 + 19, 22, 21, // tri2 + 19, 23, 22 // tri3 + ), + gsSPNTriangles_5b(19, 20, 23, // tri0 + 21, 24, 25, // tri1 + 21, 22, 24, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 26, 24, // tri0 + 25, 0, 2, // tri1 + 25, 24, 0, // tri2 + 24, 27, 0 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 0, 27, 3, // tri1 + 27, 28, 3, // tri2 + 4, 29, 30 // tri3 + ), + gsSPNTriangles_5b(4, 3, 29, // tri0 + 3, 28, 29, // tri1 + 28, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r2_2_v[221], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(0, 6, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 4, 11, 12 // tri3 + ), + gsSPNTriangles_5b(9, 13, 14, // tri0 + 13, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 18, 17 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c new file mode 100644 index 00000000..d462b945 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r2_2/grd_s_c5_r2_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r2_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c b/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c new file mode 100644 index 00000000..7ca8027b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1.c @@ -0,0 +1,328 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r3_1_v[] = { +#include "assets/field/bg/grd_s_c5_r3_1_v.inc" +}; + +extern Gfx grd_s_c5_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r3_1_v[244], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 12, // tri2 + 9, 12, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r3_1_v[231], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 4, 9, // tri1 + 10, 8, 7, // tri2 + 4, 11, 9 // tri3 + ), + gsSPNTriangles_5b(4, 6, 11, // tri0 + 12, 13, 14, // tri1 + 12, 10, 13, // tri2 + 12, 15, 10 // tri3 + ), + gsSPNTriangles_5b(15, 8, 10, // tri0 + 16, 17, 18, // tri1 + 19, 16, 20, // tri2 + 21, 18, 17 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 21, 17, 26, // tri2 + 17, 23, 26 // tri3 + ), + gsSPNTriangles_5b(23, 22, 26, // tri0 + 27, 28, 29, // tri1 + 30, 21, 28, // tri2 + 21, 29, 28 // tri3 + ), + gsSPNTriangles_5b(30, 18, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 3, 9, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 10, 9, 13, // tri2 + 8, 14, 6 // tri3 + ), + gsSPNTriangles_5b(8, 15, 14, // tri0 + 15, 16, 14, // tri1 + 17, 14, 18, // tri2 + 14, 19, 18 // tri3 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(25, 20, 22, // tri0 + 26, 27, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_1_v[63], 23, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 0, 8, 1, // tri1 + 4, 9, 2, // tri2 + 4, 10, 9 // tri3 + ), + gsSPNTriangles_5b(4, 11, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 17, 20, 21, // tri1 + 10, 11, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r3_1_v[86], 31, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 6, 0, 2, // tri2 + 7, 0, 6 // tri3 + ), + gsSPNTriangles_5b(5, 8, 6, // tri0 + 9, 10, 11, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(11, 14, 12, // tri0 + 10, 15, 16, // tri1 + 10, 16, 11, // tri2 + 16, 17, 13 // tri3 + ), + gsSPNTriangles_5b(16, 13, 11, // tri0 + 8, 5, 13, // tri1 + 8, 13, 17, // tri2 + 13, 5, 4 // tri3 + ), + gsSPNTriangles_5b(13, 4, 14, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b(19, 23, 21, // tri0 + 19, 18, 15, // tri1 + 19, 15, 10, // tri2 + 9, 19, 10 // tri3 + ), + gsSPNTriangles_5b(9, 22, 19, // tri0 + 24, 21, 23, // tri1 + 24, 23, 25, // tri2 + 21, 26, 20 // tri3 + ), + gsSPNTriangles_5b(21, 24, 27, // tri0 + 21, 27, 26, // tri1 + 28, 29, 24, // tri2 + 28, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 29, 30, // tri0 + 24, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r3_1_v[117], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 10, 14, 13, // tri1 + 14, 5, 13, // tri2 + 14, 9, 5 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 15, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 22, 17, 23, // tri1 + 22, 15, 17, // tri2 + 22, 23, 11 // tri3 + ), + gsSPNTriangles_5b(23, 12, 11, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(24, 28, 27, // tri0 + 30, 24, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_1_v[148], 13, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 0, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 6, 8, // tri0 + 11, 12, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r3_1_v[161], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 9, 7, 8, // tri1 + 10, 11, 12, // tri2 + 13, 11, 10 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 16, 17, 15, // tri1 + 18, 19, 20, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 25, 24, 26, // tri1 + 27, 26, 28, // tri2 + 27, 28, 12 // tri3 + ), + gsSPNTriangles_5b(19, 18, 9, // tri0 + 9, 29, 19, // tri1 + 9, 8, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_1_v[191], 27, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 7, 6, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 12, // tri0 + 14, 10, 9, // tri1 + 15, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r3_1_v[218], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c new file mode 100644 index 00000000..8ff18605 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r3_1/grd_s_c5_r3_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r3_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c b/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c new file mode 100644 index 00000000..5131ff5e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_r3_2_v[] = { +#include "assets/field/bg/grd_s_c5_r3_2_v.inc" +}; + +extern Gfx grd_s_c5_r3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r3_2_v[226], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_r3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_r3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 7, 8, 10, // tri1 + 1, 14, 2, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 22, 23, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_2_v[31], 15, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 11, 13, // tri2 + 0, 14, 1 // tri3 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r3_2_v[46], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 4, 9, // tri1 + 4, 6, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(15, 19, 13, // tri0 + 20, 0, 18, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(22, 2, 24, // tri0 + 21, 25, 22, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_2_v[76], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 20, 17, // tri0 + 9, 10, 22, // tri1 + 9, 22, 23, // tri2 + 6, 8, 5 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 24, 2, 25, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(28, 26, 27, // tri0 + 29, 27, 30, // tri1 + 29, 30, 31, // tri2 + 27, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_2_v[108], 29, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b(2, 4, 5, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 11, 12, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 9, 10, 20, // tri2 + 21, 20, 10 // tri3 + ), + gsSPNTriangles_5b(10, 22, 21, // tri0 + 22, 23, 21, // tri1 + 24, 21, 23, // tri2 + 24, 25, 21 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 27, 26, 24, // tri1 + 28, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_r3_2_v[137], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 5, 0, 2, // tri1 + 3, 7, 4, // tri2 + 3, 8, 7 // tri3 + ), + gsSPNTriangles_5b(3, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(13, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 23, 24, 21, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_2_v[169], 11, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_r3_2_v[180], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 6, 9, 10, // tri2 + 6, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(13, 14, 17, // tri0 + 14, 18, 17, // tri1 + 14, 15, 18, // tri2 + 15, 19, 18 // tri3 + ), + gsSPNTriangles_5b(17, 0, 2, // tri0 + 17, 18, 0, // tri1 + 18, 20, 0, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(0, 20, 3, // tri0 + 20, 21, 3, // tri1 + 4, 5, 8, // tri2 + 4, 3, 5 // tri3 + ), + gsSPNTriangles_5b(3, 22, 5, // tri0 + 3, 21, 22, // tri1 + 5, 22, 9, // tri2 + 5, 9, 6 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 24, 9, // tri1 + 10, 25, 26, // tri2 + 10, 9, 25 // tri3 + ), + gsSPNTriangles_5b(9, 24, 25, // tri0 + 24, 27, 25, // tri1 + 26, 25, 28, // tri2 + 25, 29, 28 // tri3 + ), + gsSPNTriangles_5b(25, 30, 29, // tri0 + 25, 27, 30, // tri1 + 28, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_r3_2_v[212], 14, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 1, 5, // tri1 + 1, 7, 5, // tri2 + 1, 4, 7 // tri3 + ), + gsSPNTriangles_5b(6, 5, 8, // tri0 + 5, 9, 8, // tri1 + 5, 7, 9, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 12, // tri0 + 8, 9, 11, // tri1 + 9, 13, 11, // tri2 + 9, 10, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c new file mode 100644 index 00000000..766e4b00 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_r3_2/grd_s_c5_r3_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c5_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c5_r3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c5_r3_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c b/src/data/field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c new file mode 100644 index 00000000..54b5fb89 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_s_1/grd_s_c5_s_1.c @@ -0,0 +1,313 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_s_1_v[] = { +#include "assets/field/bg/grd_s_c5_s_1_v.inc" +}; + +extern Gfx grd_s_c5_s_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c5_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 2, 6, 0, // tri1 + 6, 7, 0, // tri2 + 1, 8, 2 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 2, // tri0 + 9, 10, 2, // tri1 + 10, 6, 2, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 12, 13, 9, // tri1 + 13, 10, 9, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 15, 16, 12, // tri1 + 16, 13, 12, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 18, 15, // tri0 + 18, 19, 15, // tri1 + 19, 17, 15, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 18, // tri0 + 21, 22, 19, // tri1 + 22, 20, 19, // tri2 + 4, 5, 23 // tri3 + ), + gsSPNTriangles_5b( + 4, 23, 24, // tri0 + 0, 7, 5, // tri1 + 7, 25, 5, // tri2 + 5, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 27, 28, 29, // tri1 + 27, 30, 28, // tri2 + 27, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c5_s_1_v[32], 23, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 3, 6, 1, // tri1 + 3, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 8, // tri0 + 11, 14, 13, // tri1 + 12, 15, 11, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 11, // tri0 + 15, 17, 14, // tri1 + 15, 18, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 18, // tri0 + 20, 0, 21, // tri1 + 0, 2, 21, // tri2 + 2, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 2, 5, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_s_1_v[55], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 7, 18, 8 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 8, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_1_v[87], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 6, 5, // tri0 + 2, 1, 6, // tri1 + 4, 7, 2, // tri2 + 7, 8, 2 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 13, 6, 1, // tri2 + 13, 14, 6 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 6, // tri0 + 15, 5, 6, // tri1 + 15, 16, 5, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 18, 17, 19, // tri1 + 18, 19, 20, // tri2 + 21, 22, 13 // tri3 + ), + gsSPNTriangles_5b( + 22, 14, 13, // tri0 + 21, 23, 22, // tri1 + 23, 24, 22, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 14, 22, // tri0 + 8, 26, 27, // tri1 + 28, 27, 26, // tri2 + 1, 3, 13 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_1_v[119], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 + ), + gsSPNTriangles_5b( + 0, 8, 1, // tri0 + 8, 0, 9, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 4, 3, // tri0 + 16, 17, 18, // tri1 + 10, 9, 0, // tri2 + 11, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 11, 21, 19, // tri0 + 22, 23, 24, // tri1 + 23, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 25, 24, // tri0 + 25, 26, 24, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 3, 16, 30, // tri0 + 29, 6, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_1_v[150], 16, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 3, 2, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 3, 8, 9, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 13, // tri0 + 11, 15, 12, // tri1 + 15, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_s_1_v[166], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 7, 8, 5, // tri1 + 9, 10, 7, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 11, // tri0 + 12, 13, 14, // tri1 + 0, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 22, 28, 30, // tri1 + 31, 27, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_1_v[198], 18, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 9, 10, // tri1 + 6, 8, 9, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 12, 14, // tri1 + 17, 13, 15, // tri2 + 0, 17, 1 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c5_s_2/grd_s_c5_s_2.c b/src/data/field/bg/acre/grd_s_c5_s_2/grd_s_c5_s_2.c new file mode 100644 index 00000000..51af5543 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c5_s_2/grd_s_c5_s_2.c @@ -0,0 +1,291 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c5_s_2_v[] = { +#include "assets/field/bg/grd_s_c5_s_2_v.inc" +}; + +extern Gfx grd_s_c5_s_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c5_s_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 10, 14, 13, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 18, // tri0 + 16, 20, 19, // tri1 + 17, 12, 11, // tri2 + 17, 18, 12 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 12, // tri0 + 18, 19, 21, // tri1 + 12, 22, 10, // tri2 + 12, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 10, 23, 14, // tri0 + 10, 22, 23, // tri1 + 13, 24, 25, // tri2 + 13, 14, 24 // tri3 + ), + gsSPNTriangles_5b( + 14, 26, 24, // tri0 + 14, 23, 26, // tri1 + 26, 27, 24, // tri2 + 27, 28, 24 // tri3 + ), + gsSPNTriangles_5b( + 28, 25, 24, // tri0 + 28, 29, 25, // tri1 + 27, 30, 28, // tri2 + 27, 31, 30 // tri3 + ), + gsSPNTriangles_5b( + 30, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_2_v[32], 29, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 6, // tri0 + 1, 0, 5, // tri1 + 5, 4, 7, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 9, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 10, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 10, 19, // tri0 + 18, 12, 10, // tri1 + 16, 20, 18, // tri2 + 17, 21, 16 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 16, // tri0 + 21, 23, 22, // tri1 + 21, 24, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 26, 27, 23, // tri1 + 27, 28, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c5_s_2_v[61], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 9, 10, 8, // tri2 + 7, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 15, 10, 14, // tri1 + 0, 16, 1, // tri2 + 0, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 19, 20, 21, // tri1 + 19, 9, 20, // tri2 + 19, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 22, 9, // tri0 + 23, 5, 24, // tri1 + 5, 25, 24, // tri2 + 23, 26, 5 // tri3 + ), + gsSPNTriangles_5b( + 23, 27, 26, // tri0 + 27, 28, 26, // tri1 + 5, 4, 25, // tri2 + 23, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_2_v[92], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 2, // tri0 + 9, 11, 10, // tri1 + 10, 12, 2, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 1, 9, 2, // tri0 + 8, 16, 6, // tri1 + 11, 9, 17, // tri2 + 1, 18, 9 // tri3 + ), + gsSPNTriangles_5b( + 18, 1, 19, // tri0 + 19, 20, 21, // tri1 + 21, 22, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 3, 27, // tri0 + 26, 4, 3, // tri1 + 28, 27, 29, // tri2 + 24, 30, 25 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_2_v[124], 21, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 10, 15, 16, // tri2 + 15, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 17, 8, // tri0 + 18, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c5_s_2_v[145], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 8, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 20, 18, // tri0 + 21, 19, 22, // tri1 + 10, 21, 23, // tri2 + 24, 12, 25 // tri3 + ), + gsSPNTriangles_5b( + 17, 26, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_2_v[176], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 19, 20, // tri2 + 19, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 25, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c5_s_2_v[207], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_1/grd_s_c6_1.c b/src/data/field/bg/acre/grd_s_c6_1/grd_s_c6_1.c new file mode 100644 index 00000000..213e7f4d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_1/grd_s_c6_1.c @@ -0,0 +1,322 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_1_v[] = { +#include "assets/field/bg/grd_s_c6_1_v.inc" +}; + +extern Gfx grd_s_c6_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_1_v[209], 28, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 7, 3, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 5, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 20, 23, // tri1 + 24, 22, 25, // tri2 + 26, 24, 27 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 5, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 8, 12, 10, // tri1 + 12, 13, 10, // tri2 + 13, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 7, 15, 8, // tri0 + 15, 16, 8, // tri1 + 17, 18, 19, // tri2 + 18, 13, 19 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 19, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 23, 17, 21 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 24, 27, 25, // tri1 + 27, 28, 25, // tri2 + 25, 29, 26 // tri3 + ), + gsSPVertex(&grd_s_c6_1_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 7, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 4, 13, // tri0 + 12, 8, 4, // tri1 + 14, 15, 16, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 20, 2, // tri1 + 20, 0, 2, // tri2 + 19, 2, 21 // tri3 + ), + gsSPNTriangles_5b( + 2, 14, 21, // tri0 + 14, 16, 21, // tri1 + 22, 23, 24, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 9, 7, 5, // tri1 + 26, 27, 28, // tri2 + 26, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 30, 29, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_1_v[62], 19, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 6, // tri0 + 1, 0, 5, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 7, 8, 12, // tri1 + 8, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 17, // tri0 + 14, 18, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_1_v[81], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 0, 2, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 13, 12, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 21, 22, 23, // tri1 + 24, 11, 23, // tri2 + 11, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 11, // tri0 + 29, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_1_v[112], 30, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 9, 10, 11, // tri1 + 9, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 17, 18, 16, // tri1 + 8, 7, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_1_v[142], 28, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 12, // tri2 + 6, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 8, 15, // tri0 + 16, 3, 17, // tri1 + 4, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 18, 23, 24, // tri0 + 25, 26, 27, // tri1 + 25, 20, 26, // tri2 + 23, 25, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_1_v[170], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 9, // tri1 + 8, 10, 9, // tri2 + 8, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 10, // tri0 + 5, 13, 14, // tri1 + 5, 15, 13, // tri2 + 14, 16, 5 // tri3 + ), + gsSPNTriangles_5b( + 5, 4, 15, // tri0 + 4, 9, 15, // tri1 + 17, 1, 18, // tri2 + 1, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 21, 22, 19, // tri1 + 22, 20, 19, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 4, 6, // tri0 + 21, 25, 23, // tri1 + 24, 11, 8, // tri2 + 24, 26, 11 // tri3 + ), + gsSPNTriangles_5b( + 26, 2, 11, // tri0 + 2, 3, 11, // tri1 + 3, 27, 11, // tri2 + 27, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 7, 5, 16, // tri0 + 24, 8, 4, // tri1 + 28, 7, 16, // tri2 + 3, 17, 27 // tri3 + ), + gsSPNTriangles_5b( + 3, 1, 17, // tri0 + 0, 29, 1, // tri1 + 29, 19, 1, // tri2 + 19, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 21, 31, 25, // tri0 + 19, 30, 21, // tri1 + 30, 31, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_1_v[202], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 3, 2, // tri0 + 1, 6, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_2/grd_s_c6_2.c b/src/data/field/bg/acre/grd_s_c6_2/grd_s_c6_2.c new file mode 100644 index 00000000..ca339408 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_2/grd_s_c6_2.c @@ -0,0 +1,335 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_2_v[] = { +#include "assets/field/bg/grd_s_c6_2_v.inc" +}; + +extern Gfx grd_s_c6_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_2_v[220], 28, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 8, 9, 5, // tri1 + 10, 7, 11, // tri2 + 12, 0, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 2, // tri0 + 14, 15, 16, // tri1 + 17, 13, 18, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 20, // tri0 + 14, 16, 21, // tri1 + 22, 23, 24, // tri2 + 25, 21, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 25, 23, // tri0 + 26, 24, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 3, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 20, 22, // tri2 + 23, 24, 20 // tri3 + ), + gsSPNTriangles_5b( + 24, 23, 25, // tri0 + 23, 26, 25, // tri1 + 23, 27, 28, // tri2 + 29, 30, 14 // tri3 + ), + gsSPNTriangles_5b( + 31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 7, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 17, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 18, 17, // tri0 + 23, 24, 25, // tri1 + 24, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 29, 28, // tri0 + 8, 3, 6, // tri1 + 30, 5, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_2_v[64], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 18, 16, 17, // tri1 + 20, 18, 19, // tri2 + 8, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 18, // tri0 + 15, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_2_v[85], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 2, 3, 15, // tri0 + 11, 5, 16, // tri1 + 11, 16, 10, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 0, 17, 18, // tri0 + 17, 9, 19, // tri1 + 6, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 25, 27, 28, // tri1 + 27, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_2_v[116], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 11, 12, 8, // tri2 + 12, 13, 8 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 23, 24, 22, // tri1 + 25, 9, 24, // tri2 + 13, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_2_v[147], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_2_v[156], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 0, 2, 6, // tri1 + 3, 7, 8, // tri2 + 3, 0, 7 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 13, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 15, 18, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 13, // tri0 + 19, 17, 13, // tri1 + 19, 20, 17, // tri2 + 18, 2, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 6, 2, // tri0 + 2, 20, 19, // tri1 + 2, 4, 20, // tri2 + 5, 7, 0 // tri3 + ), + gsSPNTriangles_5b( + 5, 21, 7, // tri0 + 21, 22, 7, // tri1 + 22, 9, 7, // tri2 + 22, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 11, // tri0 + 23, 24, 11, // tri1 + 24, 25, 11, // tri2 + 25, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 10, // tri0 + 24, 27, 25, // tri1 + 24, 28, 27, // tri2 + 27, 29, 25 // tri3 + ), + gsSPNTriangles_5b( + 29, 26, 25, // tri0 + 28, 30, 27, // tri1 + 30, 31, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_2_v[188], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_2_v[192], 28, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 7, 9, 5, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 13, 15, // tri1 + 17, 18, 14, // tri2 + 11, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 3, // tri0 + 21, 2, 18, // tri1 + 19, 22, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 22, 26, 27, // tri0 + 26, 25, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_3/grd_s_c6_3.c b/src/data/field/bg/acre/grd_s_c6_3/grd_s_c6_3.c new file mode 100644 index 00000000..e1fe0b9c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_3/grd_s_c6_3.c @@ -0,0 +1,292 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_3_v[] = { +#include "assets/field/bg/grd_s_c6_3_v.inc" +}; + +extern Gfx grd_s_c6_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_3_v[197], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 11, // tri0 + 9, 13, 12, // tri1 + 9, 7, 13, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 19, 20, 15, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 26, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 29, // tri0 + 29, 30, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_3_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 11, // tri1 + 18, 19, 20, // tri2 + 21, 22, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 18, // tri0 + 22, 24, 23, // tri1 + 21, 25, 22, // tri2 + 26, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 13, // tri0 + 28, 13, 27, // tri1 + 28, 29, 13, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_c6_3_v[63], 23, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 6, // tri0 + 9, 12, 10, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 20, 21, // tri2 + 22, 14, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_3_v[86], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 15, 12, 16, // tri1 + 13, 17, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 22, 15, 24, // tri1 + 25, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 28, 31, 29, // tri0 + 26, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_3_v[118], 26, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 15, // tri0 + 17, 18, 19, // tri1 + 19, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_3_v[144], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 6, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 12, // tri0 + 10, 6, 12, // tri1 + 11, 13, 10, // tri2 + 14, 15, 4 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 3, 14, 4, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 15, // tri0 + 16, 17, 19, // tri1 + 6, 9, 12, // tri2 + 9, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 9, // tri0 + 22, 23, 21, // tri1 + 13, 18, 24, // tri2 + 13, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 13, 24, 10, // tri0 + 3, 25, 26, // tri1 + 3, 1, 25, // tri2 + 14, 3, 27 // tri3 + ), + gsSPNTriangles_5b( + 3, 26, 27, // tri0 + 16, 27, 28, // tri1 + 16, 14, 27, // tri2 + 17, 16, 29 // tri3 + ), + gsSPNTriangles_5b( + 16, 28, 29, // tri0 + 18, 29, 30, // tri1 + 18, 17, 29, // tri2 + 24, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 24, 18, 30, // tri0 + 10, 24, 8, // tri1 + 24, 31, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_3_v[176], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_3_v[180], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c b/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c new file mode 100644 index 00000000..ddaf0e47 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1.c @@ -0,0 +1,339 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_r1_1_v[] = { +#include "assets/field/bg/grd_s_c6_r1_1_v.inc" +}; + +extern Gfx grd_s_c6_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r1_1_v[235], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 1, 4, // tri0 + 4, 6, 5, // tri1 + 6, 7, 8, // tri2 + 6, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 10, // tri0 + 7, 10, 8, // tri1 + 11, 12, 10, // tri2 + 11, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 11, 14, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r1_1_v[224], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 2, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 12, 14, 11, // tri1 + 8, 15, 7, // tri2 + 8, 16, 15 // tri3 + ), + gsSPNTriangles_5b(8, 14, 16, // tri0 + 8, 11, 14, // tri1 + 17, 18, 19, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 19, 22, 20, // tri1 + 21, 23, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 25, 22, // tri0 + 24, 26, 27, // tri1 + 24, 27, 25, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 28, 30, 31, // tri1 + 28, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(9, 15, 16, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 21, 13, 22 // tri3 + ), + gsSPNTriangles_5b(22, 13, 12, // tri0 + 23, 4, 3, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 25, 28, // tri0 + 27, 26, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_1_v[62], 27, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 0, // tri1 + 10, 12, 11, // tri2 + 10, 13, 12 // tri3 + ), + gsSPNTriangles_5b(7, 14, 8, // tri0 + 4, 15, 16, // tri1 + 17, 18, 19, // tri2 + 5, 4, 16 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 22, 23, 20, // tri1 + 19, 24, 17, // tri2 + 19, 25, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r1_1_v[89], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 3, 2, 6, // tri1 + 3, 6, 7, // tri2 + 2, 8, 6 // tri3 + ), + gsSPNTriangles_5b(2, 4, 8, // tri0 + 7, 6, 9, // tri1 + 7, 9, 10, // tri2 + 6, 11, 9 // tri3 + ), + gsSPNTriangles_5b(6, 8, 11, // tri0 + 10, 9, 12, // tri1 + 10, 12, 13, // tri2 + 9, 14, 12 // tri3 + ), + gsSPNTriangles_5b(9, 11, 14, // tri0 + 13, 12, 15, // tri1 + 13, 15, 16, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 16, 15, 18, // tri1 + 15, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(15, 17, 19, // tri0 + 17, 21, 19, // tri1 + 20, 19, 22, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 21, 24, 22, // tri1 + 23, 22, 25, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 24, 27, 25, // tri1 + 26, 25, 28, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(25, 27, 28, // tri0 + 27, 30, 28, // tri1 + 29, 28, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_1_v[121], 8, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(2, 1, 5, // tri0 + 2, 5, 6, // tri1 + 1, 7, 5, // tri2 + 1, 3, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_1_v[129], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_1_v[161], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_1_v[173], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 22, 18, 23 // tri3 + ), + gsSPNTriangles_5b(3, 12, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPNTriangles_5b(31, 15, 30, // tri0 + 28, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_1_v[205], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 0, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_1_v[213], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 4, 2, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c new file mode 100644 index 00000000..12986437 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r1_1/grd_s_c6_r1_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c6_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c6_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c6_r1_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c b/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c new file mode 100644 index 00000000..2cce354f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2.c @@ -0,0 +1,334 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_r1_2_v[] = { +#include "assets/field/bg/grd_s_c6_r1_2_v.inc" +}; + +extern Gfx grd_s_c6_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r1_2_v[245], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 9, 8, 7, // tri1 + 4, 3, 5, // tri2 + 4, 2, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r1_2_v[232], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 4, 9, 10, // tri2 + 4, 6, 9 // tri3 + ), + gsSPNTriangles_5b(6, 11, 9, // tri0 + 6, 8, 11, // tri1 + 8, 12, 11, // tri2 + 0, 2, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 15, 18, 17, // tri2 + 15, 19, 18 // tri3 + ), + gsSPNTriangles_5b(16, 20, 21, // tri0 + 16, 17, 20, // tri1 + 17, 18, 20, // tri2 + 18, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 20, 13, // tri0 + 20, 23, 13, // tri1 + 20, 24, 23, // tri2 + 20, 22, 24 // tri3 + ), + gsSPNTriangles_5b(13, 23, 0, // tri0 + 23, 24, 0, // tri1 + 24, 25, 0, // tri2 + 0, 26, 1 // tri3 + ), + gsSPNTriangles_5b(0, 25, 26, // tri0 + 3, 4, 10, // tri1 + 3, 1, 4, // tri2 + 1, 26, 4 // tri3 + ), + gsSPNTriangles_5b(26, 5, 4, // tri0 + 12, 27, 28, // tri1 + 12, 8, 27, // tri2 + 8, 7, 27 // tri3 + ), + gsSPNTriangles_5b(7, 29, 27, // tri0 + 28, 27, 30, // tri1 + 27, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_2_v[32], 11, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 2, 1, 5, // tri1 + 1, 7, 5, // tri2 + 6, 5, 8 // tri3 + ), + gsSPNTriangles_5b(5, 9, 8, // tri0 + 5, 10, 9, // tri1 + 5, 7, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_2_v[43], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 3, 9, 10, // tri1 + 9, 11, 10, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 17, // tri1 + 18, 17, 16, // tri2 + 19, 18, 16 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 20, // tri1 + 24, 25, 22, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 26, // tri0 + 27, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_2_v[73], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 1, 7, 9, // tri1 + 10, 3, 11, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 5, 13, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r1_2_v[89], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 6 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 3, 5, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 13, 16, // tri1 + 15, 14, 13, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 20, 24, 23 // tri3 + ), + gsSPNTriangles_5b(20, 25, 24, // tri0 + 20, 26, 25, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_2_v[121], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 4, 9, 8, // tri2 + 4, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 10, 13, // tri1 + 12, 14, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 19, 20, 0, // tri1 + 20, 1, 0, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(19, 22, 21, // tri0 + 15, 23, 18, // tri1 + 11, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(12, 11, 29, // tri0 + 11, 25, 29, // tri1 + 26, 28, 30, // tri2 + 31, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_2_v[153], 31, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 0, 8, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b(15, 16, 11, // tri0 + 12, 16, 17, // tri1 + 12, 11, 16, // tri2 + 18, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_2_v[184], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 7, 4, 6, // tri1 + 2, 4, 0, // tri2 + 2, 5, 4 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 10, 7, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 18, 19, 16, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 24, 11, 25, // tri1 + 11, 13, 25, // tri2 + 12, 26, 14 // tri3 + ), + gsSPNTriangles_5b(26, 27, 14, // tri0 + 9, 28, 10, // tri1 + 28, 29, 10, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r1_2_v[216], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r1_2_v[219], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c new file mode 100644 index 00000000..a5fd9b19 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r1_2/grd_s_c6_r1_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c6_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c6_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c6_r1_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c b/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c new file mode 100644 index 00000000..d0439793 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1.c @@ -0,0 +1,347 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_r3_1_v[] = { +#include "assets/field/bg/grd_s_c6_r3_1_v.inc" +}; + +extern Gfx grd_s_c6_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r3_1_v[301], 28, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 1, 6, // tri0 + 5, 4, 1, // tri1 + 7, 5, 8, // tri2 + 5, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 12, 11, 13, // tri2 + 14, 12, 13 // tri3 + ), + gsSPNTriangles_5b(15, 14, 13, // tri0 + 15, 13, 16, // tri1 + 17, 15, 16, // tri2 + 8, 17, 16 // tri3 + ), + gsSPNTriangles_5b(8, 16, 18, // tri0 + 8, 18, 7, // tri1 + 19, 20, 21, // tri2 + 19, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 20, // tri0 + 23, 25, 24, // tri1 + 25, 26, 24, // tri2 + 25, 27, 26 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(1, 6, 5, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 14, 12, // tri0 + 12, 15, 13, // tri1 + 16, 17, 18, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b(16, 20, 19, // tri0 + 17, 21, 18, // tri1 + 19, 22, 17, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 26, 27, 25, // tri1 + 28, 16, 29, // tri2 + 16, 18, 29 // tri3 + ), + gsSPNTriangles_5b(4, 30, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 21, // tri1 + 17, 19, 20, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(4, 6, 22, // tri0 + 6, 7, 22, // tri1 + 7, 23, 22, // tri2 + 1, 24, 25 // tri3 + ), + gsSPNTriangles_5b(1, 26, 2, // tri0 + 26, 1, 27, // tri1 + 20, 19, 28, // tri2 + 19, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[61], 15, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 0, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 12, 10, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r3_1_v[76], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 13, 15, // tri0 + 18, 16, 19, // tri1 + 20, 19, 21, // tri2 + 22, 23, 12 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 29, 28, 25, // tri2 + 30, 31, 27 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[108], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 1, 0, 12, // tri1 + 13, 14, 15, // tri2 + 16, 13, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 16, 21, // tri1 + 16, 17, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 22, 24, // tri0 + 26, 25, 27, // tri1 + 22, 28, 23, // tri2 + 28, 18, 29 // tri3 + ), + gsSPNTriangles_5b(30, 26, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r3_1_v[140], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_r3_1_v[143], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 0 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 13, // tri1 + 16, 6, 15, // tri2 + 17, 18, 6 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 20, 21, 19, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[175], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 9, 8, 10, // tri1 + 11, 10, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22, // tri2 + 20, 18, 21 // tri3 + ), + gsSPNTriangles_5b(2, 22, 0, // tri0 + 23, 24, 25, // tri1 + 23, 26, 24, // tri2 + 23, 5, 26 // tri3 + ), + gsSPNTriangles_5b(5, 7, 26, // tri0 + 7, 27, 26, // tri1 + 28, 27, 9, // tri2 + 28, 9, 11 // tri3 + ), + gsSPNTriangles_5b(7, 9, 27, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[207], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 15, 16, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_r3_1_v[225], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 8, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 17, 18, 15, // tri1 + 19, 20, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 25, 26, 24, // tri1 + 26, 27, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[256], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 10, 8, 11, // tri1 + 12, 13, 14, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 0, 21, 1, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(21, 0, 22, // tri0 + 23, 24, 25, // tri1 + 26, 27, 25, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 25, 24, 26, // tri1 + 27, 26, 28, // tri2 + 11, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c6_r3_1_v[288], 13, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 1, 4, 3 // tri3 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 9, 11, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c new file mode 100644 index 00000000..820cc56c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_r3_1/grd_s_c6_r3_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c6_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c6_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c6_r3_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c b/src/data/field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c new file mode 100644 index 00000000..63715674 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c6_s_1/grd_s_c6_s_1.c @@ -0,0 +1,297 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c6_s_1_v[] = { +#include "assets/field/bg/grd_s_c6_s_1_v.inc" +}; + +extern Gfx grd_s_c6_s_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c6_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c6_s_1_v[205], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 17, 13, 19, // tri1 + 13, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 22, // tri0 + 24, 23, 25, // tri1 + 20, 26, 21, // tri2 + 26, 27, 28 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 4, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 14, // tri0 + 19, 20, 14, // tri1 + 21, 22, 23, // tri2 + 22, 19, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 19, // tri0 + 21, 24, 22, // tri1 + 18, 25, 26, // tri2 + 25, 13, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 13, // tri0 + 25, 28, 27, // tri1 + 29, 2, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_s_1_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 8 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 8, // tri0 + 4, 16, 17, // tri1 + 16, 15, 17, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 18, 21, 19, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 25, // tri0 + 25, 26, 27, // tri1 + 28, 22, 24, // tri2 + 29, 30, 3 // tri3 + ), + gsSPNTriangles_5b( + 29, 11, 30, // tri0 + 11, 13, 30, // tri1 + 2, 3, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_s_1_v[62], 29, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 3, 6, // tri1 + 8, 9, 3, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 10, // tri0 + 14, 11, 10, // tri1 + 14, 15, 11, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 11, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 21, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 4, 28, // tri1 + 27, 1, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_s_1_v[91], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 4, 17 // tri3 + ), + gsSPNTriangles_5b( + 14, 18, 19, // tri0 + 20, 21, 22, // tri1 + 21, 10, 22, // tri2 + 8, 23, 20 // tri3 + ), + gsSPNTriangles_5b( + 9, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 26, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c6_s_1_v[122], 25, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 12, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 9, 24, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 13, 20, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c6_s_1_v[147], 29, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 3, 6, 2, // tri1 + 6, 7, 2, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 5, 15, 16, // tri0 + 15, 17, 16, // tri1 + 17, 15, 18, // tri2 + 15, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 15, 4, 19, // tri0 + 4, 20, 19, // tri1 + 4, 0, 20, // tri2 + 0, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 21, // tri0 + 2, 22, 21, // tri1 + 2, 7, 22, // tri2 + 7, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 7, 24, 23, // tri0 + 7, 25, 24, // tri1 + 5, 4, 15, // tri2 + 8, 26, 7 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 7, // tri0 + 10, 27, 12, // tri1 + 27, 14, 12, // tri2 + 27, 28, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c6_s_1_v[176], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 14, 22, 28, // tri0 + 25, 16, 26, // tri1 + 20, 25, 27, // tri2 + 22, 24, 28 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_1/grd_s_c7_1.c b/src/data/field/bg/acre/grd_s_c7_1/grd_s_c7_1.c new file mode 100644 index 00000000..2ae58b83 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_1/grd_s_c7_1.c @@ -0,0 +1,286 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_1_v[] = { +#include "assets/field/bg/grd_s_c7_1_v.inc" +}; + +extern Gfx grd_s_c7_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_1_v[195], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 1, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 4, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 8, 13, 9, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 22, // tri0 + 23, 21, 24, // tri1 + 25, 23, 26, // tri2 + 27, 25, 28 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 0, 4, 6, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 11, 10, // tri1 + 12, 13, 11, // tri2 + 12, 6, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 5, 6, // tri0 + 14, 5, 15, // tri1 + 5, 12, 15, // tri2 + 14, 0, 5 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 7, // tri0 + 17, 8, 7, // tri1 + 17, 18, 8, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 8, 20, 10, // tri0 + 8, 18, 20, // tri1 + 10, 15, 12, // tri2 + 10, 20, 15 // tri3 + ), + gsSPNTriangles_5b( + 0, 14, 3, // tri0 + 14, 21, 3, // tri1 + 1, 22, 23, // tri2 + 1, 3, 22 // tri3 + ), + gsSPNTriangles_5b( + 3, 24, 22, // tri0 + 3, 21, 24, // tri1 + 23, 25, 26, // tri2 + 23, 22, 25 // tri3 + ), + gsSPNTriangles_5b( + 22, 27, 25, // tri0 + 22, 24, 27, // tri1 + 26, 28, 29, // tri2 + 26, 25, 28 // tri3 + ), + gsSPNTriangles_5b( + 25, 30, 28, // tri0 + 25, 27, 30, // tri1 + 29, 28, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_1_v[32], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_1_v[37], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 5, 6, 0, // tri1 + 6, 7, 0, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 9, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 18, 22 // tri3 + ), + gsSPNTriangles_5b( + 18, 23, 22, // tri0 + 16, 24, 14, // tri1 + 24, 25, 14, // tri2 + 24, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 26, 28, // tri1 + 28, 30, 29, // tri2 + 31, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_c7_1_v[69], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 11, 10, // tri1 + 12, 13, 8, // tri2 + 12, 6, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 7, 6, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 0, 2, 18 // tri3 + ), + gsSPNTriangles_5b( + 2, 19, 18, // tri0 + 18, 20, 21, // tri1 + 18, 19, 20, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 14, 16, // tri1 + 29, 30, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_1_v[100], 16, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 3, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7, // tri2 + 6, 8, 3 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 6, // tri0 + 10, 8, 9, // tri1 + 11, 12, 13, // tri2 + 14, 15, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_1_v[116], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 21, // tri0 + 24, 25, 26, // tri1 + 27, 15, 17, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_1_v[147], 19, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 13, 6, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_1_v[166], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 6, 7, // tri0 + 8, 9, 10, // tri1 + 6, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 8, 14, // tri0 + 11, 13, 15, // tri1 + 16, 17, 18, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 17, 21, 24, // tri1 + 25, 26, 27, // tri2 + 26, 19, 28 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_2/grd_s_c7_2.c b/src/data/field/bg/acre/grd_s_c7_2/grd_s_c7_2.c new file mode 100644 index 00000000..a3062a6f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_2/grd_s_c7_2.c @@ -0,0 +1,360 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_2_v[] = { +#include "assets/field/bg/grd_s_c7_2_v.inc" +}; + +extern Gfx grd_s_c7_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_2_v[235], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 14, 15, 17, // tri1 + 19, 20, 21, // tri2 + 20, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 23, // tri0 + 24, 22, 25, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 24, 26, // tri0 + 30, 27, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[267], 6, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 12, 11, 15, // tri2 + 12, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 14, 17, 15, // tri1 + 16, 15, 18, // tri2 + 15, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 15, 21, 19, // tri1 + 15, 17, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 22, // tri0 + 19, 21, 22, // tri1 + 21, 24, 22, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 25, // tri0 + 22, 24, 25, // tri1 + 24, 27, 25, // tri2 + 26, 25, 28 // tri3 + ), + gsSPNTriangles_5b( + 25, 29, 28, // tri0 + 25, 27, 29, // tri1 + 27, 30, 29, // tri2 + 28, 29, 31 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[32], 28, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 2, 1, 6, // tri0 + 1, 7, 6, // tri1 + 1, 5, 7, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 7, 8, 9, // tri1 + 11, 10, 12, // tri2 + 10, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 13, // tri0 + 10, 9, 14, // tri1 + 12, 13, 15, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 13, 18, 16, // tri1 + 13, 14, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 19, // tri0 + 16, 21, 19, // tri1 + 16, 18, 21, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 24, 23, 25, // tri1 + 24, 25, 26, // tri2 + 23, 22, 25 // tri3 + ), + gsSPNTriangles_5b( + 22, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_2_v[60], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 11, 10, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 15, 16, // tri1 + 15, 13, 10, // tri2 + 17, 18, 14 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 20, 22, 21, // tri1 + 19, 23, 20, // tri2 + 19, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 25, 21, // tri0 + 22, 26, 25, // tri1 + 26, 27, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 25, // tri0 + 28, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[91], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 5, 7, 8, // tri1 + 7, 9, 8, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b( + 10, 0, 11, // tri0 + 11, 0, 12, // tri1 + 0, 6, 12, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 3, // tri0 + 4, 14, 3, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 15, // tri0 + 20, 9, 19, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 29, 30, // tri1 + 28, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[123], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 2, 1, 13, // tri2 + 14, 4, 15 // tri3 + ), + gsSPNTriangles_5b( + 5, 4, 14, // tri0 + 16, 11, 10, // tri1 + 17, 11, 16, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 0, 19, 18, // tri1 + 1, 3, 20, // tri2 + 3, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 21, // tri0 + 13, 1, 23, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[154], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_2_v[161], 28, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 6, 8, 9, // tri1 + 10, 11, 4, // tri2 + 2, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 0, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 22, 24, 25, // tri1 + 24, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_2_v[189], 32, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 25, 19, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_2_v[220], 15, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 0, 9, 1, // tri0 + 10, 11, 12, // tri1 + 11, 13, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3.c b/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3.c new file mode 100644 index 00000000..f8aed482 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3.c @@ -0,0 +1,308 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_3_v[] = { +#include "assets/field/bg/grd_s_c7_3_v.inc" +}; + +extern Gfx grd_s_c7_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_3_v[259], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(4, 2, 3, // tri0 + 4, 6, 2, // tri1 + 1, 7, 3, // tri2 + 2, 8, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_3_v[241], 18, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 13, 6, 14, // tri1 + 11, 10, 15, // tri2 + 8, 16, 17 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 6, 9, // tri1 + 8, 7, 6, // tri2 + 8, 10, 7 // tri3 + ), + gsSPNTriangles_5b(10, 11, 7, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 8, 20, 10, // tri1 + 21, 16, 22, // tri2 + 21, 19, 16 // tri3 + ), + gsSPNTriangles_5b(16, 23, 22, // tri0 + 24, 25, 22, // tri1 + 25, 26, 22, // tri2 + 22, 26, 21 // tri3 + ), + gsSPNTriangles_5b(26, 27, 21, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 1, 17, 2, // tri1 + 18, 5, 19, // tri2 + 5, 6, 20 // tri3 + ), + gsSPNTriangles_5b(4, 21, 22, // tri0 + 18, 23, 7, // tri1 + 0, 11, 10, // tri2 + 0, 15, 11 // tri3 + ), + gsSPNTriangles_5b(7, 23, 8, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_3_v[64], 21, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 14, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_3_v[85], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 6, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 13, 17, 18, // tri1 + 17, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 15, 24, // tri0 + 25, 26, 27, // tri1 + 28, 25, 29, // tri2 + 26, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_c7_3_v[117], 21, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 1, 11, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 16, 18, 17, // tri1 + 11, 13, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_3_v[138], 32, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 8, 5, // tri1 + 8, 9, 5, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 11, 5, 9, // tri1 + 13, 14, 12, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(15, 11, 12, // tri0 + 16, 13, 10, // tri1 + 13, 12, 10, // tri2 + 17, 7, 18 // tri3 + ), + gsSPNTriangles_5b(7, 6, 18, // tri0 + 19, 0, 20, // tri1 + 0, 2, 20, // tri2 + 7, 17, 8 // tri3 + ), + gsSPNTriangles_5b(17, 21, 8, // tri0 + 17, 22, 21, // tri1 + 22, 23, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 4, 27, // tri1 + 25, 2, 4, // tri2 + 0, 28, 3 // tri3 + ), + gsSPNTriangles_5b(0, 22, 28, // tri0 + 22, 17, 28, // tri1 + 17, 18, 28, // tri2 + 5, 29, 6 // tri3 + ), + gsSPNTriangles_5b(5, 15, 29, // tri0 + 5, 11, 15, // tri1 + 13, 30, 14, // tri2 + 13, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_3_v[170], 14, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_3_v[184], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 12, 11, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 13, 12, // tri1 + 15, 16, 14, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 21, 22, 19, // tri1 + 23, 24, 21, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 27, 25, // tri1 + 29, 27, 28, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_3_v[216], 7, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_3_v[223], 18, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 6, 12, // tri0 + 0, 13, 14, // tri1 + 8, 15, 16, // tri2 + 13, 10, 17 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c new file mode 100644 index 00000000..9fe4bf22 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_3/grd_s_c7_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c7_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c7_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c7_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c b/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c new file mode 100644 index 00000000..126aaf4e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1.c @@ -0,0 +1,308 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_r1_1_v[] = { +#include "assets/field/bg/grd_s_c7_r1_1_v.inc" +}; + +extern Gfx grd_s_c7_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r1_1_v[212], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 4, 8 // tri3 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 10, 11, 12, // tri1 + 10, 13, 11, // tri2 + 11, 1, 12 // tri3 + ), + gsSPNTriangles_5b(1, 0, 12, // tri0 + 10, 14, 13, // tri1 + 14, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r1_1_v[198], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 12, 10, 13 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 8, 13 // tri3 + ), + gsSPNTriangles_5b(9, 8, 12, // tri0 + 14, 12, 13, // tri1 + 0, 2, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 3, 21, // tri1 + 16, 6, 7, // tri2 + 7, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 22, 23, // tri0 + 24, 3, 20, // tri1 + 23, 19, 17, // tri2 + 5, 25, 3 // tri3 + ), + gsSPNTriangles_5b(25, 26, 3, // tri0 + 26, 27, 21, // tri1 + 26, 21, 3, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 6, 9, 10, // tri1 + 6, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 12, 14, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 22, 15, 23, // tri2 + 15, 14, 23 // tri3 + ), + gsSPNTriangles_5b(12, 25, 13, // tri0 + 12, 18, 25, // tri1 + 16, 26, 20, // tri2 + 19, 20, 27 // tri3 + ), + gsSPNTriangles_5b(25, 18, 17, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_1_v[64], 16, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 7, 8, 9, // tri1 + 10, 9, 8, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 11, 15, 12, // tri1 + 14, 12, 9, // tri2 + 9, 10, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r1_1_v[80], 30, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 4, 2, 7, // tri1 + 7, 9, 8, // tri2 + 4, 0, 2 // tri3 + ), + gsSPNTriangles_5b(0, 10, 1, // tri0 + 11, 6, 12, // tri1 + 10, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 17, 19, 18, // tri1 + 8, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 19, 24, 25, // tri1 + 24, 4, 25, // tri2 + 4, 3, 25 // tri3 + ), + gsSPNTriangles_5b(26, 12, 27, // tri0 + 12, 6, 27, // tri1 + 26, 28, 12, // tri2 + 8, 29, 20 // tri3 + ), + gsSPNTriangles_5b(8, 9, 29, // tri0 + 10, 14, 1, // tri1 + 11, 5, 6, // tri2 + 19, 25, 18 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r1_1_v[110], 28, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 22, 23, // tri1 + 23, 24, 25, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r1_1_v[138], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 9, 8, 12, // tri1 + 8, 13, 12, // tri2 + 8, 11, 14 // tri3 + ), + gsSPNTriangles_5b(8, 14, 13, // tri0 + 12, 13, 15, // tri1 + 13, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(13, 18, 16, // tri0 + 13, 14, 18, // tri1 + 17, 19, 20, // tri2 + 17, 16, 19 // tri3 + ), + gsSPNTriangles_5b(16, 18, 21, // tri0 + 16, 21, 19, // tri1 + 20, 19, 22, // tri2 + 19, 23, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 23, 25, 24, // tri1 + 19, 21, 26, // tri2 + 19, 26, 23 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 26, 25, 23, // tri1 + 24, 25, 28, // tri2 + 25, 29, 28 // tri3 + ), + gsSPNTriangles_5b(25, 27, 30, // tri0 + 25, 30, 29, // tri1 + 28, 29, 1, // tri2 + 29, 2, 1 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 29, 31, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_1_v[170], 14, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 6, 7, 8, // tri1 + 6, 5, 7, // tri2 + 5, 4, 9 // tri3 + ), + gsSPNTriangles_5b(5, 9, 7, // tri0 + 8, 10, 11, // tri1 + 8, 7, 10, // tri2 + 7, 12, 10 // tri3 + ), + gsSPNTriangles_5b(7, 9, 12, // tri0 + 12, 13, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r1_1_v[184], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 11, 3, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c new file mode 100644 index 00000000..db9d2eaf --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r1_1/grd_s_c7_r1_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c7_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c7_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c7_r1_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c b/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c new file mode 100644 index 00000000..afa4f4b6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2.c @@ -0,0 +1,298 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_r1_2_v[] = { +#include "assets/field/bg/grd_s_c7_r1_2_v.inc" +}; + +extern Gfx grd_s_c7_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r1_2_v[220], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 16, // tri1 + 15, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 19, 17, // tri0 + 21, 22, 23, // tri1 + 22, 24, 25, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(2, 28, 0, // tri0 + 28, 29, 30, // tri1 + 29, 8, 30, // tri2 + 29, 7, 8 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_2_v[31], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 8, 6, 5, // tri1 + 9, 10, 11, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 18, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 24, 26, 27, // tri1 + 27, 26, 3, // tri2 + 3, 26, 2 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_2_v[62], 20, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 8, 7, 6, // tri1 + 4, 9, 5, // tri2 + 5, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 12, 10, 11, // tri1 + 13, 14, 15, // tri2 + 12, 16, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r1_2_v[82], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 15, 17, 16, // tri1 + 18, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 17, 24, 25, // tri1 + 24, 26, 25, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_2_v[113], 31, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 13, 15, 14, // tri1 + 16, 17, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 20, 21, 19, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(7, 9, 25, // tri0 + 26, 25, 27, // tri1 + 28, 29, 30, // tri2 + 24, 28, 23 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r1_2_v[144], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 19, 20, 21, // tri2 + 22, 19, 21 // tri3 + ), + gsSPNTriangles_5b(19, 23, 20, // tri0 + 23, 24, 20, // tri1 + 24, 25, 20, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_2_v[176], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r1_2_v[184], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(5, 11, 2, // tri0 + 11, 0, 2, // tri1 + 5, 4, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 15, 18, 13 // tri3 + ), + gsSPNTriangles_5b(18, 19, 13, // tri0 + 19, 20, 13, // tri1 + 20, 17, 13, // tri2 + 18, 21, 19 // tri3 + ), + gsSPNTriangles_5b(18, 22, 21, // tri0 + 21, 20, 19, // tri1 + 21, 23, 20, // tri2 + 22, 24, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 21, // tri0 + 25, 26, 21, // tri1 + 26, 23, 21, // tri2 + 24, 3, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 3, // tri0 + 3, 26, 25, // tri1 + 3, 1, 26, // tri2 + 27, 28, 3 // tri3 + ), + gsSPNTriangles_5b(28, 2, 3, // tri0 + 28, 29, 2, // tri1 + 29, 30, 2, // tri2 + 30, 5, 2 // tri3 + ), + gsSPNTriangles_5b(30, 7, 5, // tri0 + 30, 31, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r1_2_v[216], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c new file mode 100644 index 00000000..3f3dbd25 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r1_2/grd_s_c7_r1_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c7_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c7_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c7_r1_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c b/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c new file mode 100644 index 00000000..64e382dc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_r3_1_v[] = { +#include "assets/field/bg/grd_s_c7_r3_1_v.inc" +}; + +extern Gfx grd_s_c7_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r3_1_v[257], 31, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 7, 6, 5, // tri2 + 7, 5, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 29, 30, 28, // tri2 + 28, 27, 29 // tri3 + ), + gsSPNTriangles_5b(29, 10, 30, // tri0 + 29, 9, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r3_1_v[242], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 7, 10, // tri1 + 8, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 9, 10, 11, // tri1 + 10, 7, 12, // tri2 + 0, 9, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 19, 20, 21, // tri2 + 17, 19, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 24, // tri0 + 23, 25, 26, // tri1 + 27, 14, 28, // tri2 + 29, 27, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_1_v[31], 23, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 0, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b(7, 8, 17, // tri0 + 5, 6, 8, // tri1 + 18, 17, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 18, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r3_1_v[54], 29, 0), + gsSPNTrianglesInit_5b(33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 4, 5, 6, // tri1 + 5, 7, 6, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 8, 10, 11, // tri1 + 8, 9, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(12, 10, 13, // tri0 + 13, 14, 12, // tri1 + 14, 15, 16, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 17, // tri0 + 15, 18, 17, // tri1 + 17, 19, 20, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(16, 21, 14, // tri0 + 16, 22, 21, // tri1 + 16, 17, 22, // tri2 + 20, 23, 17 // tri3 + ), + gsSPNTriangles_5b(17, 23, 22, // tri0 + 11, 24, 8, // tri1 + 24, 25, 8, // tri2 + 25, 6, 8 // tri3 + ), + gsSPNTriangles_5b(6, 26, 4, // tri0 + 6, 25, 26, // tri1 + 26, 2, 4, // tri2 + 26, 27, 2 // tri3 + ), + gsSPNTriangles_5b(27, 28, 2, // tri0 + 28, 0, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_1_v[83], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 3, 7, 2, // tri1 + 5, 8, 6, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 13, // tri0 + 13, 14, 15, // tri1 + 13, 12, 14, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 17, // tri1 + 19, 21, 20, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 25, 26, 24, // tri1 + 25, 27, 26, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_1_v[115], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 10, 9, 11, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 2, 1, 3, // tri1 + 3, 16, 4, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 18, // tri0 + 19, 21, 20, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 27, 28, 26, // tri1 + 28, 27, 29, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_1_v[147], 12, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 10, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r3_1_v[159], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 12, 7, // tri0 + 7, 13, 8, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(21, 24, 23, // tri0 + 24, 25, 23, // tri1 + 25, 26, 13, // tri2 + 26, 8, 13 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 30, 28, // tri1 + 27, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_1_v[191], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 2, 3, // tri1 + 9, 0, 2, // tri2 + 9, 10, 0 // tri3 + ), + gsSPNTriangles_5b(11, 5, 12, // tri0 + 13, 14, 11, // tri1 + 15, 16, 13, // tri2 + 16, 14, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 17, 18, 14, // tri1 + 19, 12, 20, // tri2 + 12, 5, 20 // tri3 + ), + gsSPNTriangles_5b(21, 7, 22, // tri0 + 22, 7, 23, // tri1 + 21, 5, 7, // tri2 + 5, 21, 20 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 26, 25, // tri1 + 28, 26, 27, // tri2 + 28, 29, 26 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_1_v[223], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_1_v[227], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c new file mode 100644 index 00000000..3d390a55 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r3_1/grd_s_c7_r3_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c7_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c7_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c7_r3_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c b/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c new file mode 100644 index 00000000..efdcb231 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2.c @@ -0,0 +1,374 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_r3_2_v[] = { +#include "assets/field/bg/grd_s_c7_r3_2_v.inc" +}; + +extern Gfx grd_s_c7_r3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r3_2_v[285], 24, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 11, 12, 13, // tri2 + 14, 15, 11 // tri3 + ), + gsSPNTriangles_5b(16, 14, 11, // tri0 + 17, 13, 18, // tri1 + 19, 17, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 18, 21, // tri0 + 22, 23, 20, // tri1 + 22, 20, 21, // tri2 + 16, 11, 13 // tri3 + ), + gsSPNTriangles_5b(17, 16, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_c7_r3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_r3_2_v[272], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 1, // tri0 + 6, 4, 1, // tri1 + 5, 1, 7, // tri2 + 8, 9, 0 // tri3 + ), + gsSPNTriangles_5b(9, 10, 0, // tri0 + 10, 11, 0, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(13, 11, 15, // tri0 + 12, 16, 13, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 22, 25, 23, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 4, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 12, 15, 14, // tri1 + 8, 16, 9, // tri2 + 13, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 13, 18, 20, // tri1 + 19, 7, 18, // tri2 + 7, 5, 18 // tri3 + ), + gsSPNTriangles_5b(21, 16, 22, // tri0 + 6, 10, 4, // tri1 + 16, 21, 9, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 27, 29, 28, // tri1 + 30, 31, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[62], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 10, 14, 13 // tri3 + ), + gsSPNTriangles_5b(10, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 18, 20, 19, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 25, 29, 28, // tri2 + 25, 30, 29 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[93], 21, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 0, // tri0 + 7, 9, 8, // tri1 + 9, 10, 8, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(7, 12, 9, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_2_v[114], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 0, // tri0 + 8, 9, 6, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_2_v[130], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 6, // tri0 + 7, 6, 8, // tri1 + 9, 7, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 12, 11, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 19, 21, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 23, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(28, 0, 30, // tri0 + 0, 2, 30, // tri1 + 1, 31, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[162], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 8, // tri1 + 10, 11, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 17, 18, 16, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 23, 25, 24, // tri1 + 25, 26, 24, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 26, 29, 28, // tri1 + 29, 30, 28, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[194], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_r3_2_v[200], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 10, 13, 12, // tri1 + 13, 14, 12, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 16, 17, 14, // tri1 + 16, 18, 17, // tri2 + 16, 19, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 18, // tri0 + 19, 21, 20, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(21, 24, 23, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(27, 5, 25, // tri0 + 27, 1, 5, // tri1 + 27, 28, 1, // tri2 + 28, 29, 1 // tri3 + ), + gsSPNTriangles_5b(29, 3, 1, // tri0 + 29, 30, 3, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_r3_2_v[232], 27, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 14, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(14, 18, 16, // tri0 + 17, 20, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_r3_2_v[259], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c new file mode 100644 index 00000000..c27509a0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_r3_2/grd_s_c7_r3_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_c7_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_c7_r3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_c7_r3_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c b/src/data/field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c new file mode 100644 index 00000000..2dadb276 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_s_1/grd_s_c7_s_1.c @@ -0,0 +1,409 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_s_1_v[] = { +#include "assets/field/bg/grd_s_c7_s_1_v.inc" +}; + +extern Gfx grd_s_c7_s_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_s_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 5, // tri0 + 5, 0, 6, // tri1 + 7, 6, 0, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 10, 11, 12, // tri1 + 9, 11, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 14, 17, 16, // tri1 + 18, 19, 4, // tri2 + 19, 3, 4 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 18, 21, 20, // tri1 + 21, 22, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 25, // tri0 + 27, 25, 26, // tri1 + 27, 28, 25, // tri2 + 25, 29, 23 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 23, // tri0 + 31, 24, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 6, 10, 7, // tri1 + 11, 12, 13, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b( + 7, 10, 12, // tri0 + 14, 15, 3, // tri1 + 15, 16, 3, // tri2 + 16, 17, 3 // tri3 + ), + gsSPNTriangles_5b( + 3, 18, 4, // tri0 + 3, 17, 18, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 25, 27, 19, // tri2 + 25, 24, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 23, // tri0 + 29, 23, 28, // tri1 + 11, 13, 30, // tri2 + 13, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 1, // tri2 + 12, 13, 1 // tri3 + ), + gsSPNTriangles_5b( + 0, 14, 15, // tri0 + 0, 16, 14, // tri1 + 17, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[95], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 5, 9, 7, // tri2 + 5, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 7, // tri0 + 11, 12, 7, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 26, 27, 24, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 29, 10, 30, // tri1 + 10, 31, 30, // tri2 + 10, 5, 31 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[127], 16, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 14, 15, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_s_1_v[143], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 10, // tri0 + 12, 13, 10, // tri1 + 14, 15, 16, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 18, 17, // tri0 + 14, 19, 18, // tri1 + 19, 20, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 21, // tri0 + 21, 23, 22, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 27, 29, 28, // tri1 + 25, 30, 27, // tri2 + 30, 31, 27 // tri3 + ), + gsSPNTriangles_5b( + 31, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[175], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 5, 6, 1, // tri1 + 4, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 26, 27, 24, // tri2 + 27, 28, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 20, 17, // tri0 + 25, 24, 20, // tri1 + 24, 22, 20, // tri2 + 24, 28, 22 // tri3 + ), + gsSPNTriangles_5b( + 29, 13, 15, // tri0 + 29, 15, 30, // tri1 + 30, 15, 31, // tri2 + 15, 16, 31 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[207], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 3, 6, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17, // tri2 + 13, 12, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 17, 16, 18, // tri1 + 17, 18, 19, // tri2 + 18, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 18, 20, // tri0 + 16, 15, 20, // tri1 + 15, 22, 20, // tri2 + 15, 12, 22 // tri3 + ), + gsSPNTriangles_5b( + 12, 23, 22, // tri0 + 12, 24, 23, // tri1 + 12, 10, 24, // tri2 + 10, 9, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 29, 27, 30, // tri2 + 29, 25, 27 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[238], 23, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 2, 6, 7, // tri0 + 4, 0, 2, // tri1 + 7, 4, 2, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 12, 8, 13, // tri1 + 8, 10, 13, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 13, // tri0 + 16, 14, 17, // tri1 + 14, 15, 17, // tri2 + 18, 16, 19 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 19, // tri0 + 19, 20, 21, // tri1 + 18, 19, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_s_1_v[261], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 17, // tri0 + 22, 23, 20, // tri1 + 24, 25, 22, // tri2 + 23, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 27, // tri0 + 26, 28, 29, // tri1 + 30, 29, 28, // tri2 + 28, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_c7_s_1_v[293], 17, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_s_2/grd_s_c7_s_2.c b/src/data/field/bg/acre/grd_s_c7_s_2/grd_s_c7_s_2.c new file mode 100644 index 00000000..37a9475e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_s_2/grd_s_c7_s_2.c @@ -0,0 +1,295 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_s_2_v[] = { +#include "assets/field/bg/grd_s_c7_s_2_v.inc" +}; + +extern Gfx grd_s_c7_s_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_s_2_v[183], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_s_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 7, 9, 8, // tri1 + 5, 7, 6, // tri2 + 4, 10, 5 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 4, // tri0 + 12, 11, 13, // tri1 + 12, 10, 11, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 16, 12, // tri0 + 13, 14, 16, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 21, 22, 18, // tri1 + 22, 23, 18, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 25, 27, 28, // tri1 + 14, 15, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_2_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 5, 16, // tri0 + 4, 17, 16, // tri1 + 16, 5, 4, // tri2 + 18, 10, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 11, 10, // tri0 + 19, 1, 18, // tri1 + 1, 20, 2, // tri2 + 1, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 6, 5, 8, // tri0 + 21, 22, 23, // tri1 + 23, 24, 21, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 23, // tri0 + 27, 25, 28, // tri1 + 27, 26, 25, // tri2 + 29, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 30, 7, 31, // tri0 + 30, 8, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_2_v[62], 22, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 4, 7, // tri1 + 4, 8, 7, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 7, 14, 10, // tri0 + 14, 15, 10, // tri1 + 15, 16, 10, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 20, 21, 19, // tri1 + 21, 18, 19, // tri2 + 9, 21, 20 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_s_2_v[84], 32, 0), + gsSPNTrianglesInit_5b( + 34, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 1, 0, // tri1 + 6, 7, 1, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 7, 4, 1, // tri0 + 9, 10, 7, // tri1 + 9, 7, 6, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 8, 7, // tri0 + 12, 13, 9, // tri1 + 13, 10, 9, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 10, // tri0 + 15, 16, 12, // tri1 + 16, 13, 12, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 13, // tri0 + 18, 19, 16, // tri1 + 18, 16, 15, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 16, // tri0 + 21, 22, 19, // tri1 + 21, 19, 18, // tri2 + 22, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 29, 24 // tri3 + ), + gsSPNTriangles_5b( + 28, 24, 23, // tri0 + 29, 30, 27, // tri1 + 29, 27, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_2_v[115], 9, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 3, // tri0 + 6, 7, 1, // tri1 + 6, 1, 0, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 7, 4, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_s_2_v[124], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 13, 27, // tri0 + 26, 27, 24, // tri1 + 20, 28, 21, // tri2 + 29, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 31, // tri0 + 18, 20, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_2_v[156], 10, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 7, // tri0 + 8, 4, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_s_2_v[166], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c b/src/data/field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c new file mode 100644 index 00000000..76cb66e0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_c7_s_3/grd_s_c7_s_3.c @@ -0,0 +1,325 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 cliff_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_c7_s_3_v[] = { +#include "assets/field/bg/grd_s_c7_s_3_v.inc" +}; + +extern Gfx grd_s_c7_s_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_c7_s_3_v[225], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_s_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 20, 13, 18, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 10, 14, 15, // tri1 + 14, 16, 15, // tri2 + 14, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 3, 19, // tri0 + 3, 0, 19, // tri1 + 20, 16, 17, // tri2 + 20, 21, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 23, 24, 21, // tri2 + 24, 25, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 24, // tri0 + 27, 11, 28, // tri1 + 27, 29, 18, // tri2 + 27, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 5, 31, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_3_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 5 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 11, // tri0 + 10, 12, 7, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 19, 23, 20, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 29, 28, // tri0 + 28, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_3_v[95], 11, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_s_3_v[106], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 19, 20, // tri1 + 21, 18, 22, // tri2 + 14, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 25, // tri0 + 26, 27, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_3_v[138], 17, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 8, 10, // tri1 + 12, 11, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 16, 15, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_c7_s_3_v[155], 32, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 11, 12, 10, // tri1 + 12, 13, 10, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 15, 16, 13, // tri1 + 3, 17, 4, // tri2 + 17, 18, 4 // tri3 + ), + gsSPNTriangles_5b( + 18, 6, 4, // tri0 + 18, 19, 6, // tri1 + 19, 8, 6, // tri2 + 19, 20, 8 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 8, // tri0 + 21, 11, 8, // tri1 + 21, 22, 11, // tri2 + 22, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 12, // tri0 + 23, 14, 12, // tri1 + 23, 15, 14, // tri2 + 23, 24, 15 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 1, 27, // tri1 + 26, 28, 1, // tri2 + 26, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 28, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_c7_s_3_v[187], 27, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 8, 3, 4, // tri0 + 8, 9, 3, // tri1 + 9, 2, 3, // tri2 + 9, 10, 2 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 2, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 17, 14, // tri1 + 10, 18, 13, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 19, // tri0 + 22, 19, 21, // tri1 + 23, 24, 19, // tri2 + 24, 25, 19 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 19, // tri0 + 26, 20, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_c7_s_3_v[214], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e1_1/grd_s_e1_1.c b/src/data/field/bg/acre/grd_s_e1_1/grd_s_e1_1.c new file mode 100644 index 00000000..5c3b80a1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e1_1/grd_s_e1_1.c @@ -0,0 +1,186 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e1_1_v[] = { +#include "assets/field/bg/grd_s_e1_1_v.inc" +}; + +extern Gfx grd_s_e1_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 41, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 2, 15, // tri2 + 16, 0, 2 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 0, // tri0 + 17, 18, 0, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 5, 24, 6 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 6, // tri0 + 5, 26, 24, // tri1 + 5, 8, 26, // tri2 + 8, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 27, // tri0 + 10, 12, 27, // tri1 + 12, 28, 27, // tri2 + 12, 13, 28 // tri3 + ), + gsSPNTriangles_5b( + 13, 29, 28, // tri0 + 13, 15, 29, // tri1 + 15, 3, 29, // tri2 + 15, 2, 3 // tri3 + ), + gsSPNTriangles_5b( + 0, 18, 1, // tri0 + 18, 30, 1, // tri1 + 18, 20, 30, // tri2 + 20, 21, 30 // tri3 + ), + gsSPNTriangles_5b( + 21, 31, 30, // tri0 + 21, 23, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_1_v[32], 31, 0), + gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 20, // tri0 + 18, 22, 21, // tri1 + 18, 23, 22, // tri2 + 18, 17, 23 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 23, // tri0 + 15, 24, 23, // tri1 + 15, 13, 24, // tri2 + 13, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 25, // tri0 + 12, 9, 25, // tri1 + 9, 26, 25, // tri2 + 9, 8, 26 // tri3 + ), + gsSPNTriangles_5b( + 8, 27, 26, // tri0 + 8, 6, 27, // tri1 + 6, 28, 27, // tri2 + 6, 4, 28 // tri3 + ), + gsSPNTriangles_5b( + 4, 29, 28, // tri0 + 4, 1, 29, // tri1 + 1, 30, 29, // tri2 + 1, 0, 30 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e1_1_v[63], 23, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 9, 10, 11, // tri1 + 9, 12, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 16, 17, 18, // tri1 + 18, 17, 19, // tri2 + 16, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 20, // tri0 + 14, 21, 15, // tri1 + 13, 21, 14, // tri2 + 9, 22, 12 // tri3 + ), + gsSPNTriangles_5b( + 12, 22, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c b/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c new file mode 100644 index 00000000..bfa1bee6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1.c @@ -0,0 +1,433 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e1_r1_1_v[] = { +#include "assets/field/bg/grd_s_e1_r1_1_v.inc" +}; + +extern Gfx grd_s_e1_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e1_r1_1_v[302], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 5, 0, 2, // tri1 + 7, 6, 8, // tri2 + 7, 5, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 7, 10, // tri1 + 7, 8, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 9, 13, // tri0 + 9, 11, 13, // tri1 + 15, 14, 16, // tri2 + 15, 12, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e1_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e1_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 9, 10, 8, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 12, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 19, // tri1 + 22, 23, 21, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b(19, 18, 20, // tri0 + 17, 16, 18, // tri1 + 15, 12, 16, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b(8, 24, 9, // tri0 + 8, 6, 24, // tri1 + 5, 4, 6, // tri2 + 3, 0, 4 // tri3 + ), + gsSPNTriangles_5b(2, 25, 0, // tri0 + 26, 27, 28, // tri1 + 28, 29, 30, // tri2 + 28, 30, 26 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(33, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 5, 6, 0, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 11, // tri1 + 12, 13, 10, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(11, 9, 8, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 19, 20, 21, // tri1 + 22, 23, 21, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b(19, 18, 20, // tri0 + 17, 16, 18, // tri1 + 15, 12, 16, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 26, 4, // tri0 + 26, 27, 4, // tri1 + 27, 2, 4, // tri2 + 27, 28, 2 // tri3 + ), + gsSPNTriangles_5b(28, 5, 2, // tri0 + 28, 29, 5, // tri1 + 29, 7, 5, // tri2 + 29, 30, 7 // tri3 + ), + gsSPNTriangles_5b(30, 31, 7, // tri0 + 7, 31, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[63], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 5, 6, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 12, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 21, 22, 23, // tri2 + 17, 16, 23 // tri3 + ), + gsSPNTriangles_5b(16, 24, 23, // tri0 + 24, 25, 23, // tri1 + 23, 25, 21, // tri2 + 26, 27, 22 // tri3 + ), + gsSPNTriangles_5b(22, 21, 26, // tri0 + 28, 29, 30, // tri1 + 27, 30, 29, // tri2 + 27, 26, 30 // tri3 + ), + gsSPNTriangles_5b(29, 28, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[95], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 9, 10, 6, // tri1 + 11, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 24, 25, 23, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(26, 29, 28, // tri0 + 26, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[126], 32, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(3, 0, 4, // tri0 + 2, 6, 0, // tri1 + 7, 8, 6, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 10, 13, // tri1 + 14, 15, 11, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 16, 19, // tri1 + 20, 17, 21, // tri2 + 3, 22, 1 // tri3 + ), + gsSPNTriangles_5b(5, 23, 3, // tri0 + 3, 23, 22, // tri1 + 2, 24, 25, // tri2 + 2, 1, 24 // tri3 + ), + gsSPNTriangles_5b(1, 22, 24, // tri0 + 25, 24, 26, // tri1 + 24, 27, 26, // tri2 + 28, 29, 7 // tri3 + ), + gsSPNTriangles_5b(29, 26, 27, // tri0 + 29, 28, 26, // tri1 + 7, 30, 9, // tri2 + 9, 31, 13 // tri3 + ), + gsSPNTriangles_5b(9, 30, 31, // tri0 + 7, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[158], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(5, 2, 1, // tri0 + 4, 6, 7, // tri1 + 7, 5, 4, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 8, 10, 11, // tri1 + 11, 9, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 15, 16, // tri1 + 16, 17, 18, // tri2 + 18, 14, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 17, 19, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 22, 24, 25, // tri1 + 25, 26, 27, // tri2 + 27, 28, 3 // tri3 + ), + gsSPNTriangles_5b(3, 29, 1, // tri0 + 22, 23, 24, // tri1 + 25, 24, 26, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(3, 28, 29, // tri0 + 29, 30, 4, // tri1 + 4, 1, 29, // tri2 + 30, 31, 4 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[190], 32, 0), + gsSPNTrianglesInit_5b(34, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 4, 10, 8 // tri3 + ), + gsSPNTriangles_5b(4, 3, 10, // tri0 + 8, 10, 9, // tri1 + 11, 6, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 10, 12, // tri0 + 3, 13, 10, // tri1 + 10, 13, 12, // tri2 + 0, 14, 1 // tri3 + ), + gsSPNTriangles_5b(1, 13, 3, // tri0 + 1, 14, 13, // tri1 + 0, 15, 14, // tri2 + 0, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 17, 21 // tri3 + ), + gsSPNTriangles_5b(21, 17, 18, // tri0 + 22, 23, 19, // tri1 + 23, 20, 19, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 25, 28, 27, // tri2 + 25, 24, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 27, // tri0 + 27, 26, 29, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[222], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e1_r1_1_v[226], 30, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 6, 9, 7, // tri2 + 10, 1, 0 // tri3 + ), + gsSPNTriangles_5b(3, 11, 4, // tri0 + 12, 13, 11, // tri1 + 12, 14, 13, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 14, 15, 16, // tri1 + 18, 19, 17, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(11, 3, 12, // tri0 + 8, 20, 9, // tri1 + 5, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 24, 26, 25, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(28, 25, 26, // tri0 + 25, 22, 23, // tri1 + 22, 6, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e1_r1_1_v[256], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 5, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 15, 11, // tri1 + 12, 16, 13, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 12, 18, // tri0 + 12, 20, 18, // tri1 + 12, 11, 20, // tri2 + 19, 18, 21 // tri3 + ), + gsSPNTriangles_5b(21, 18, 22, // tri0 + 23, 24, 25, // tri1 + 26, 27, 24, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 29, 25, // tri0 + 24, 27, 25, // tri1 + 30, 28, 27, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_e1_r1_1_v[288], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 5, 8, 9, // tri1 + 9, 3, 5, // tri2 + 3, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 10, 12, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c new file mode 100644 index 00000000..4642cd6a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e1_r1_1/grd_s_e1_r1_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_e1_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_e1_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_e1_r1_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_e2_1/grd_s_e2_1.c b/src/data/field/bg/acre/grd_s_e2_1/grd_s_e2_1.c new file mode 100644 index 00000000..b571c0e0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e2_1/grd_s_e2_1.c @@ -0,0 +1,199 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e2_1_v[] = { +#include "assets/field/bg/grd_s_e2_1_v.inc" +}; + +extern Gfx grd_s_e2_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_1_v[0], 24, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 0, 14, 1, // tri1 + 15, 16, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 22, 23, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e2_1_v[24], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 4, 6, 7, // tri2 + 8, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 7, 10, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 12, 13, 14, // tri1 + 15, 12, 14, // tri2 + 16, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 17, // tri0 + 16, 17, 18, // tri1 + 19, 16, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 18, 21, // tri0 + 1, 22, 23, // tri1 + 2, 1, 23, // tri2 + 5, 2, 23 // tri3 + ), + gsSPNTriangles_5b( + 5, 23, 24, // tri0 + 6, 5, 24, // tri1 + 6, 24, 25, // tri2 + 7, 6, 25 // tri3 + ), + gsSPNTriangles_5b( + 7, 25, 26, // tri0 + 10, 7, 26, // tri1 + 10, 26, 27, // tri2 + 11, 10, 27 // tri3 + ), + gsSPNTriangles_5b( + 11, 27, 28, // tri0 + 13, 11, 28, // tri1 + 13, 28, 29, // tri2 + 14, 13, 29 // tri3 + ), + gsSPNTriangles_5b( + 14, 29, 30, // tri0 + 17, 14, 30, // tri1 + 17, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_1_v[56], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 10, // tri0 + 11, 10, 12, // tri1 + 13, 11, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 14, // tri0 + 15, 14, 16, // tri1 + 17, 15, 16, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 19, 20, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 22, // tri0 + 1, 23, 22, // tri1 + 1, 22, 24, // tri2 + 2, 1, 24 // tri3 + ), + gsSPNTriangles_5b( + 2, 24, 25, // tri0 + 4, 2, 25, // tri1 + 4, 25, 26, // tri2 + 8, 7, 27 // tri3 + ), + gsSPNTriangles_5b( + 8, 27, 28, // tri0 + 10, 8, 28, // tri1 + 12, 10, 28, // tri2 + 12, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 29, // tri0 + 14, 29, 30, // tri1 + 16, 14, 30, // tri2 + 18, 16, 30 // tri3 + ), + gsSPNTriangles_5b( + 18, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_1_v[88], 11, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e2_c1_1/grd_s_e2_c1_1.c b/src/data/field/bg/acre/grd_s_e2_c1_1/grd_s_e2_c1_1.c new file mode 100644 index 00000000..e9ecedb7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e2_c1_1/grd_s_e2_c1_1.c @@ -0,0 +1,193 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e2_c1_1_v[] = { +#include "assets/field/bg/grd_s_e2_c1_1_v.inc" +}; + +extern Gfx grd_s_e2_c1_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e2_c1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_c1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 0, // tri0 + 3, 2, 6, // tri1 + 2, 7, 6, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 9, 11, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 16, 17, // tri0 + 13, 17, 11, // tri1 + 11, 17, 18, // tri2 + 11, 18, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 18, // tri0 + 8, 18, 19, // tri1 + 8, 19, 6, // tri2 + 20, 0, 3 // tri3 + ), + gsSPNTriangles_5b( + 21, 5, 0, // tri0 + 21, 0, 20, // tri1 + 6, 19, 20, // tri2 + 6, 20, 3 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 22, 25, 26, // tri2 + 24, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 25, // tri0 + 28, 29, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_c1_1_v[30], 32, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 2, // tri0 + 2, 6, 5, // tri1 + 6, 2, 4, // tri2 + 7, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 3, // tri0 + 7, 9, 6, // tri1 + 7, 6, 4, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 11, // tri0 + 12, 11, 10, // tri1 + 13, 11, 12, // tri2 + 11, 13, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 11, // tri0 + 12, 10, 14, // tri1 + 14, 13, 12, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 16, // tri0 + 16, 17, 15, // tri1 + 17, 16, 18, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 18, // tri0 + 21, 22, 23, // tri1 + 24, 21, 23, // tri2 + 21, 24, 20 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 21, // tri0 + 25, 23, 22, // tri1 + 25, 22, 26, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 28, 25, 27, // tri0 + 25, 24, 23, // tri1 + 25, 28, 24, // tri2 + 29, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 30, 17, 20, // tri0 + 17, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_c1_1_v[62], 15, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 1, 4, 5, // tri0 + 6, 7, 2, // tri1 + 7, 0, 2, // tri2 + 7, 8, 0 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 9, // tri0 + 10, 9, 11, // tri1 + 11, 12, 10, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 10, // tri0 + 10, 13, 14, // tri1 + 10, 14, 8, // tri2 + 13, 10, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e2_c1_1_v[77], 25, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 8, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 13, // tri0 + 0, 18, 1, // tri1 + 3, 19, 2, // tri2 + 19, 20, 2 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 4, 22, 5, // tri1 + 23, 7, 5, // tri2 + 7, 24, 6 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e2_m_1/grd_s_e2_m_1.c b/src/data/field/bg/acre/grd_s_e2_m_1/grd_s_e2_m_1.c new file mode 100644 index 00000000..5393858e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e2_m_1/grd_s_e2_m_1.c @@ -0,0 +1,230 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e2_m_1_v[] = { +#include "assets/field/bg/grd_s_e2_m_1_v.inc" +}; + +extern Gfx grd_s_e2_m_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_m_1_v[90], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 6, // tri0 + 3, 1, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_m_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 12, // tri0 + 13, 12, 14, // tri1 + 15, 13, 14, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 14, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 24, 22, 23, // tri1 + 24, 23, 25, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 24, 26, // tri0 + 28, 27, 26, // tri1 + 28, 26, 29, // tri2 + 30, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_m_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 2, 5, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 12, 11, 13, // tri2 + 14, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 14, 15, 16, // tri1 + 14, 16, 0, // tri2 + 17, 14, 0 // tri3 + ), + gsSPNTriangles_5b( + 17, 0, 3, // tri0 + 18, 17, 3, // tri1 + 18, 3, 5, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 23, 19, 22, // tri1 + 23, 22, 24, // tri2 + 25, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 26, // tri0 + 25, 26, 27, // tri1 + 28, 25, 27, // tri2 + 28, 27, 29 // tri3 + ), + gsSPNTriangles_5b( + 1, 28, 29, // tri0 + 1, 29, 30, // tri1 + 2, 1, 30, // tri2 + 2, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 4, 2, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_m_1_v[64], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e2_m_1_v[67], 10, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 7, 5, // tri1 + 8, 9, 7, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e2_m_1_v[77], 13, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 8, 9, // tri1 + 5, 9, 10, // tri2 + 11, 5, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e2_m_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_m_1_v[97], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_e2_m_1_v[100], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 2, 3 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e2_o_1/grd_s_e2_o_1.c b/src/data/field/bg/acre/grd_s_e2_o_1/grd_s_e2_o_1.c new file mode 100644 index 00000000..e7664e13 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e2_o_1/grd_s_e2_o_1.c @@ -0,0 +1,96 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_e2_o_1_v[] = { +#include "assets/field/bg/grd_s_e2_o_1_v.inc" +}; + +extern Gfx grd_s_e2_o_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_o_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 9, 10, 11, // tri1 + 11, 8, 2, // tri2 + 11, 2, 12 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 2, 1, 13, // tri1 + 12, 2, 13, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e2_o_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_o_1_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 4, 7, 9, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 12, // tri0 + 11, 13, 14, // tri1 + 12, 11, 14, // tri2 + 4, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e2_t_1/grd_s_e2_t_1.c b/src/data/field/bg/acre/grd_s_e2_t_1/grd_s_e2_t_1.c new file mode 100644 index 00000000..85fe2f12 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e2_t_1/grd_s_e2_t_1.c @@ -0,0 +1,258 @@ +#include "libforest/gbi_extensions.h" + +extern u8 tunnel_tex_dummy[]; +extern u8 rail_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e2_t_1_v[] = { +#include "assets/field/bg/grd_s_e2_t_1_v.inc" +}; + +extern Gfx grd_s_e2_t_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e2_t_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e2_t_1_v[0], 21, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 5, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 8, // tri0 + 12, 8, 10, // tri1 + 13, 10, 7, // tri2 + 12, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 14, // tri2 + 19, 20, 17 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e2_t_1_v[21], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 3, // tri0 + 2, 4, 6, // tri1 + 4, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 12, 13, 14, // tri1 + 15, 16, 12, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 17, 14, // tri0 + 18, 17, 13, // tri1 + 16, 15, 19, // tri2 + 19, 15, 20 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 11, // tri0 + 21, 10, 11, // tri1 + 11, 19, 20, // tri2 + 17, 18, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 17, 22, // tri0 + 24, 21, 25, // tri1 + 10, 21, 24, // tri2 + 23, 22, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 24, // tri0 + 28, 29, 30, // tri1 + 30, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_t_1_v[53], 32, 0), + gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 6, // tri0 + 7, 1, 5, // tri1 + 5, 1, 0, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 11, 8, // tri1 + 12, 11, 10, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 0, 14, // tri0 + 13, 6, 0, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 19, 18, // tri0 + 13, 14, 20, // tri1 + 21, 22, 8, // tri2 + 11, 23, 21 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 21, // tri0 + 22, 1, 8, // tri1 + 3, 1, 22, // tri2 + 23, 11, 24 // tri3 + ), + gsSPNTriangles_5b( + 24, 11, 16, // tri0 + 16, 18, 25, // tri1 + 18, 26, 25, // tri2 + 25, 24, 16 // tri3 + ), + gsSPNTriangles_5b( + 2, 3, 27, // tri0 + 2, 27, 28, // tri1 + 4, 28, 29, // tri2 + 2, 28, 4 // tri3 + ), + gsSPNTriangles_5b( + 4, 29, 30, // tri0 + 22, 27, 3, // tri1 + 21, 31, 22, // tri2 + 22, 31, 27 // tri3 + ), + gsSPVertex(&grd_s_e2_t_1_v[85], 21, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 7, 1, // tri1 + 4, 7, 8, // tri2 + 8, 1, 3 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 11, 12, 13, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 6, 5, // tri0 + 15, 16, 6, // tri1 + 17, 18, 16, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 5, 20, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, station_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tunnel_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e2_t_1_v[106], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 2, 9, // tri1 + 2, 3, 9, // tri2 + 10, 11, 5 // tri3 + ), + gsSPNTriangles_5b( + 11, 7, 5, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 17, // tri0 + 16, 18, 15, // tri1 + 19, 16, 20, // tri2 + 16, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 22, // tri0 + 21, 19, 20, // tri1 + 23, 21, 24, // tri2 + 21, 22, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 26, // tri0 + 25, 23, 24, // tri1 + 27, 28, 29, // tri2 + 28, 1, 0 // tri3 + ), + gsSPNTriangles_5b( + 4, 6, 29, // tri0 + 29, 6, 27, // tri1 + 28, 27, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e2_t_1_v[136], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e2_t_1_v[144], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e3_1/grd_s_e3_1.c b/src/data/field/bg/acre/grd_s_e3_1/grd_s_e3_1.c new file mode 100644 index 00000000..62145869 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e3_1/grd_s_e3_1.c @@ -0,0 +1,187 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e3_1_v[] = { +#include "assets/field/bg/grd_s_e3_1_v.inc" +}; + +extern Gfx grd_s_e3_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 0, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 34, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 19, 20, 17, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 2, 22, // tri0 + 2, 23, 22, // tri1 + 2, 3, 23, // tri2 + 3, 5, 23 // tri3 + ), + gsSPNTriangles_5b( + 5, 24, 23, // tri0 + 5, 6, 24, // tri1 + 6, 8, 24, // tri2 + 8, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 25, // tri0 + 10, 26, 25, // tri1 + 10, 11, 26, // tri2 + 11, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 27, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_1_v[64], 19, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e3_1_v[83], 22, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 4, 6, 5 // tri3 + ), + gsSPNTriangles_5b( + 11, 3, 0, // tri0 + 11, 4, 3, // tri1 + 6, 12, 7, // tri2 + 12, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 15, // tri1 + 18, 19, 16, // tri2 + 20, 21, 18 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e3_c1_1/grd_s_e3_c1_1.c b/src/data/field/bg/acre/grd_s_e3_c1_1/grd_s_e3_c1_1.c new file mode 100644 index 00000000..d53c75f1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e3_c1_1/grd_s_e3_c1_1.c @@ -0,0 +1,199 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e3_c1_1_v[] = { +#include "assets/field/bg/grd_s_e3_c1_1_v.inc" +}; + +extern Gfx grd_s_e3_c1_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e3_c1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_c1_1_v[0], 27, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 9, // tri2 + 14, 15, 9 // tri3 + ), + gsSPNTriangles_5b( + 15, 10, 9, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 26, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e3_c1_1_v[27], 32, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 8, 6, 7, // tri1 + 9, 8, 7, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 10, // tri0 + 11, 10, 12, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 16, 14, 15, // tri1 + 16, 15, 17, // tri2 + 16, 17, 0 // tri3 + ), + gsSPNTriangles_5b( + 16, 0, 2, // tri0 + 10, 18, 19, // tri1 + 12, 10, 19, // tri2 + 13, 12, 19 // tri3 + ), + gsSPNTriangles_5b( + 13, 19, 20, // tri0 + 15, 13, 20, // tri1 + 17, 15, 20, // tri2 + 17, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 0, 17, 21, // tri0 + 0, 21, 22, // tri1 + 1, 0, 22, // tri2 + 18, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 23, 18, 7, // tri0 + 23, 7, 5, // tri1 + 23, 5, 4, // tri2 + 24, 23, 4 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 25, 27, 28, // tri1 + 29, 25, 28, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b( + 31, 29, 30, // tri0 + 31, 30, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_c1_1_v[59], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 3, // tri0 + 5, 3, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 14, 12, 13, // tri1 + 15, 16, 17, // tri2 + 15, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 19, // tri0 + 20, 15, 19, // tri1 + 20, 19, 1, // tri2 + 21, 20, 1 // tri3 + ), + gsSPNTriangles_5b( + 21, 1, 0, // tri0 + 22, 21, 0, // tri1 + 22, 0, 4, // tri2 + 23, 22, 4 // tri3 + ), + gsSPNTriangles_5b( + 23, 4, 5, // tri0 + 23, 5, 7, // tri1 + 24, 23, 7, // tri2 + 24, 7, 9 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 9, // tri0 + 25, 9, 10, // tri1 + 25, 10, 12, // tri2 + 26, 25, 12 // tri3 + ), + gsSPNTriangles_5b( + 26, 12, 14, // tri0 + 27, 28, 16, // tri1 + 27, 16, 15, // tri2 + 29, 30, 20 // tri3 + ), + gsSPNTriangles_5b( + 29, 20, 21, // tri0 + 31, 29, 21, // tri1 + 22, 31, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_c1_1_v[91], 12, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 5, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 4, 5, 8, // tri0 + 2, 10, 11, // tri1 + 5, 2, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e3_m_1/grd_s_e3_m_1.c b/src/data/field/bg/acre/grd_s_e3_m_1/grd_s_e3_m_1.c new file mode 100644 index 00000000..47cf7301 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e3_m_1/grd_s_e3_m_1.c @@ -0,0 +1,223 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e3_m_1_v[] = { +#include "assets/field/bg/grd_s_e3_m_1_v.inc" +}; + +extern Gfx grd_s_e3_m_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e3_m_1_v[106], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 6, // tri0 + 3, 1, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_m_1_v[0], 14, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 5, 8, // tri1 + 10, 9, 8, // tri2 + 11, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 8, 12, // tri0 + 11, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e3_m_1_v[14], 9, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 1, // tri0 + 6, 7, 5, // tri1 + 5, 4, 6, // tri2 + 6, 8, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e3_m_1_v[23], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 18, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 19, 21, 22, // tri1 + 23, 19, 22, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 24, // tri0 + 25, 24, 26, // tri1 + 27, 25, 26, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 30, // tri0 + 29, 27, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_m_1_v[55], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 3, 5, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 12, 10, 11, // tri1 + 12, 11, 13, // tri2 + 14, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 13, // tri0 + 15, 13, 16, // tri1 + 2, 15, 16, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 3, 2, 17, // tri0 + 3, 17, 18, // tri1 + 4, 3, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 21, // tri0 + 22, 21, 23, // tri1 + 24, 22, 23, // tri2 + 25, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 26, // tri0 + 27, 25, 26, // tri1 + 28, 27, 26, // tri2 + 28, 26, 1 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 1, // tri0 + 29, 1, 0, // tri1 + 30, 31, 29, // tri2 + 30, 29, 0 // tri3 + ), + gsSPNTriangles_5b( + 30, 0, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_m_1_v[87], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e3_m_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_m_1_v[98], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_e3_m_1_v[101], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 3, 4, 2 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e3_o_1/grd_s_e3_o_1.c b/src/data/field/bg/acre/grd_s_e3_o_1/grd_s_e3_o_1.c new file mode 100644 index 00000000..d409eb4c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e3_o_1/grd_s_e3_o_1.c @@ -0,0 +1,96 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_e3_o_1_v[] = { +#include "assets/field/bg/grd_s_e3_o_1_v.inc" +}; + +extern Gfx grd_s_e3_o_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_o_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 9, 10, 11, // tri1 + 11, 8, 2, // tri2 + 11, 2, 12 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 2, 1, 13, // tri1 + 12, 2, 13, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e3_o_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_o_1_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 4, 7, 9, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 12, // tri0 + 11, 13, 14, // tri1 + 12, 11, 14, // tri2 + 4, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e3_t_1/grd_s_e3_t_1.c b/src/data/field/bg/acre/grd_s_e3_t_1/grd_s_e3_t_1.c new file mode 100644 index 00000000..09d8a323 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e3_t_1/grd_s_e3_t_1.c @@ -0,0 +1,258 @@ +#include "libforest/gbi_extensions.h" + +extern u8 tunnel_tex_dummy[]; +extern u8 rail_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e3_t_1_v[] = { +#include "assets/field/bg/grd_s_e3_t_1_v.inc" +}; + +extern Gfx grd_s_e3_t_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e3_t_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e3_t_1_v[0], 21, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 4, 5, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 8, // tri0 + 7, 8, 10, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 17, 18, 14, // tri2 + 19, 20, 17 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e3_t_1_v[21], 32, 0), + gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 18, // tri0 + 6, 5, 20, // tri1 + 5, 21, 20, // tri2 + 5, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 5, 8, 22, // tri0 + 8, 23, 22, // tri1 + 8, 10, 23, // tri2 + 10, 12, 23 // tri3 + ), + gsSPNTriangles_5b( + 12, 24, 23, // tri0 + 12, 25, 24, // tri1 + 12, 13, 25, // tri2 + 13, 15, 25 // tri3 + ), + gsSPNTriangles_5b( + 15, 26, 25, // tri0 + 15, 27, 26, // tri1 + 15, 17, 27, // tri2 + 17, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 28, // tri0 + 18, 29, 28, // tri1 + 2, 30, 31, // tri2 + 2, 3, 30 // tri3 + ), + gsSPVertex(&grd_s_e3_t_1_v[53], 32, 0), + gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 22, 21, 23, // tri1 + 21, 19, 23, // tri2 + 19, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 24, // tri0 + 17, 25, 24, // tri1 + 17, 16, 25, // tri2 + 16, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 26, // tri0 + 14, 13, 26, // tri1 + 13, 27, 26, // tri2 + 13, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 28, // tri0 + 11, 29, 28, // tri1 + 11, 10, 29, // tri2 + 10, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 10, 8, 30, // tri0 + 8, 31, 30, // tri1 + 8, 6, 31, // tri2 + 6, 4, 31 // tri3 + ), + gsSPVertex(&grd_s_e3_t_1_v[85], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, station_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tunnel_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e3_t_1_v[92], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 0, 9, // tri1 + 8, 3, 0, // tri2 + 5, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 5, 7, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 15, 18, 17, // tri1 + 19, 17, 20, // tri2 + 19, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 22, // tri0 + 19, 20, 22, // tri1 + 23, 22, 24, // tri2 + 23, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 26, // tri0 + 23, 24, 26, // tri1 + 27, 28, 29, // tri2 + 2, 1, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 4, 6, // tri0 + 29, 4, 27, // tri1 + 1, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_e3_t_1_v[122], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_e3_t_1_v[130], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e4_1/grd_s_e4_1.c b/src/data/field/bg/acre/grd_s_e4_1/grd_s_e4_1.c new file mode 100644 index 00000000..158edd7f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e4_1/grd_s_e4_1.c @@ -0,0 +1,65 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e4_1_v[] = { +#include "assets/field/bg/grd_s_e4_1_v.inc" +}; + +extern Gfx grd_s_e4_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e4_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e4_1_v[0], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e4_1_v[7], 15, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 1, 7, 8, // tri2 + 1, 8, 2 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 10, // tri0 + 6, 10, 4, // tri1 + 1, 4, 10, // tri2 + 1, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 0, 11, 3, // tri0 + 3, 12, 5, // tri1 + 3, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_e5_1/grd_s_e5_1.c b/src/data/field/bg/acre/grd_s_e5_1/grd_s_e5_1.c new file mode 100644 index 00000000..20feeed1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_e5_1/grd_s_e5_1.c @@ -0,0 +1,71 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 cliff_tex_dummy[]; + +static Vtx grd_s_e5_1_v[] = { +#include "assets/field/bg/grd_s_e5_1_v.inc" +}; + +extern Gfx grd_s_e5_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_e5_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_e5_1_v[0], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 3, // tri0 + 5, 3, 6, // tri1 + 5, 6, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(cliff_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_e5_1_v[8], 16, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 4, 1, // tri0 + 3, 6, 4, // tri1 + 2, 7, 0, // tri2 + 0, 8, 3 // tri3 + ), + gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 7, 9, 10, // tri1 + 1, 11, 12, // tri2 + 1, 12, 5 // tri3 + ), + gsSPNTriangles_5b( + 1, 13, 11, // tri0 + 13, 4, 14, // tri1 + 14, 4, 6, // tri2 + 14, 6, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 1, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_1/grd_s_f_1.c b/src/data/field/bg/acre/grd_s_f_1/grd_s_f_1.c new file mode 100644 index 00000000..cbc59bac --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_1/grd_s_f_1.c @@ -0,0 +1,239 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_1_v[] = { +#include "assets/field/bg/grd_s_f_1_v.inc" +}; + +extern Gfx grd_s_f_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_1_v[146], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 6, // tri0 + 8, 9, 10, // tri1 + 9, 5, 7, // tri2 + 11, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 14, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 17, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 16, 20, // tri0 + 21, 19, 22, // tri1 + 16, 18, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 28, 26, 29, // tri1 + 30, 28, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_1_v[178], 5, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 8, 7, 11, // tri2 + 7, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 17, 10, 18, // tri2 + 10, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 1, 20, 2, // tri0 + 21, 22, 0, // tri1 + 16, 13, 22, // tri2 + 14, 19, 15 // tri3 + ), + gsSPNTriangles_5b( + 12, 23, 11, // tri0 + 24, 25, 23, // tri1 + 26, 27, 28, // tri2 + 20, 3, 29 // tri3 + ), + gsSPNTriangles_5b( + 26, 6, 27, // tri0 + 6, 4, 27, // tri1 + 24, 23, 12, // tri2 + 30, 28, 25 // tri3 + ), + gsSPNTriangles_5b( + 2, 20, 31, // tri0 + 20, 29, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_1_v[32], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 6, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 12, // tri1 + 20, 21, 15, // tri2 + 22, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 22, // tri0 + 24, 19, 22, // tri1 + 25, 26, 27, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 28, // tri0 + 29, 25, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_1_v[63], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b( + 8, 3, 5, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 13, // tri0 + 18, 15, 17, // tri1 + 10, 12, 14, // tri2 + 10, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 19, // tri0 + 0, 8, 1, // tri1 + 3, 6, 4, // tri2 + 20, 21, 7 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 21, // tri0 + 23, 24, 16, // tri1 + 25, 26, 24, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 27, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_1_v[95], 10, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_1_v[105], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 10, 8, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 12, 19, // tri0 + 6, 20, 21, // tri1 + 20, 22, 21, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 22, // tri0 + 16, 26, 17, // tri1 + 23, 15, 24, // tri2 + 27, 10, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_1_v[136], 10, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_10/grd_s_f_10.c b/src/data/field/bg/acre/grd_s_f_10/grd_s_f_10.c new file mode 100644 index 00000000..6d596c9d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_10/grd_s_f_10.c @@ -0,0 +1,221 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_10_v[] = { +#include "assets/field/bg/grd_s_f_10_v.inc" +}; + +extern Gfx grd_s_f_10_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_10_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_10_v[172], 22, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_10_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 15, 16, 14, // tri1 + 17, 18, 16, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 22, 21, 23, // tri1 + 24, 25, 26, // tri2 + 25, 22, 26 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 28, 29, 27, // tri1 + 30, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_10_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 13, // tri1 + 13, 12, 14, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 2, 1, // tri0 + 0, 2, 16, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 14, 15, 3, // tri1 + 15, 4, 3, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 4, 15, // tri0 + 26, 28, 4, // tri1 + 25, 29, 30, // tri2 + 30, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 28, 26, 30, // tri0 + 25, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_10_v[64], 16, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_10_v[80], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 12, 16, 17, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22, // tri2 + 21, 14, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 24, 28, // tri1 + 25, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_10_v[111], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 1, 11, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 16, 18, 17, // tri1 + 11, 13, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 21, 24, 25, // tri1 + 26, 25, 24, // tri2 + 27, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 27, // tri0 + 30, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_10_v[143], 7, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_10_v[150], 22, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 18, // tri0 + 12, 19, 20, // tri1 + 19, 14, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_2/grd_s_f_2.c b/src/data/field/bg/acre/grd_s_f_2/grd_s_f_2.c new file mode 100644 index 00000000..6a01e974 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_2/grd_s_f_2.c @@ -0,0 +1,269 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_2_v[] = { +#include "assets/field/bg/grd_s_f_2_v.inc" +}; + +extern Gfx grd_s_f_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_2_v[157], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 0, 12, // tri1 + 9, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 6, 18, // tri0 + 13, 15, 19, // tri1 + 16, 18, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 21, // tri0 + 13, 19, 14, // tri1 + 4, 20, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 26, 27, 28, // tri1 + 29, 28, 30, // tri2 + 31, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_f_2_v[189], 23, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 8, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 3, 5, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 10, 11, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 14, 19, 15, // tri0 + 16, 20, 14, // tri1 + 20, 21, 14, // tri2 + 22, 4, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 2, 4, // tri0 + 22, 23, 2, // tri1 + 0, 24, 3, // tri2 + 24, 25, 3 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 3, // tri0 + 18, 27, 17, // tri1 + 18, 28, 27, // tri2 + 27, 29, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 30, 28, // tri0 + 18, 9, 30, // tri1 + 8, 30, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_2_v[31], 16, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 0, 2, 6, // tri1 + 2, 7, 6, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 10, 11, 12, // tri1 + 10, 13, 11, // tri2 + 13, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 9, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_2_v[47], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_2_v[78], 22, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 10, 9, 8, // tri1 + 11, 10, 8, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 16, 18, 14 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_2_v[100], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 11, 12, 13, // tri1 + 12, 14, 15, // tri2 + 16, 0, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 4, 6, 21, // tri1 + 14, 3, 22, // tri2 + 14, 22, 15 // tri3 + ), + gsSPNTriangles_5b( + 9, 18, 20, // tri0 + 4, 21, 5, // tri1 + 16, 17, 19, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_2_v[131], 26, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 0, 9, // tri0 + 3, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 8, 9, 21, // tri1 + 22, 20, 23, // tri2 + 12, 5, 13 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 23, // tri0 + 16, 21, 17, // tri1 + 18, 25, 19, // tri2 + 10, 14, 11 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_3/grd_s_f_3.c b/src/data/field/bg/acre/grd_s_f_3/grd_s_f_3.c new file mode 100644 index 00000000..74b1fbe2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_3/grd_s_f_3.c @@ -0,0 +1,171 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_3_v[] = { +#include "assets/field/bg/grd_s_f_3_v.inc" +}; + +extern Gfx grd_s_f_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_3_v[113], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 12, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 17, 15, 18, // tri1 + 17, 19, 15, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 18, // tri0 + 1, 0, 22, // tri1 + 23, 20, 22, // tri2 + 24, 0, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 0, // tri0 + 26, 27, 25, // tri1 + 26, 28, 6, // tri2 + 26, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 30, // tri0 + 9, 11, 7, // tri1 + 12, 14, 11, // tri2 + 13, 31, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 16, 31, // tri0 + 15, 19, 16, // tri1 + 17, 21, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_3_v[32], 18, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 8, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 16, 11, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_3_v[50], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 8, 26, 27, // tri0 + 28, 8, 29, // tri1 + 24, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_3_v[82], 18, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_3_v[100], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4.c b/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4.c new file mode 100644 index 00000000..506f6d2e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4.c @@ -0,0 +1,233 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_4_v[] = { +#include "assets/field/bg/grd_s_f_4_v.inc" +}; + +extern Gfx grd_s_f_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_4_v[177], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_4_v[164], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 6, 9, // tri0 + 10, 8, 11, // tri1 + 1, 10, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 9, 11, 13, // tri1 + 14, 13, 11, // tri2 + 15, 13, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 13, // tri0 + 16, 13, 17, // tri1 + 0, 18, 19, // tri2 + 20, 18, 0 // tri3 + ), + gsSPNTriangles_5b(21, 14, 18, // tri0 + 18, 20, 21, // tri1 + 17, 14, 21, // tri2 + 4, 5, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 5, // tri0 + 23, 24, 25, // tri1 + 24, 26, 25, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 25, 26, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_4_v[31], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 10, 14, // tri0 + 10, 9, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b(20, 14, 21, // tri0 + 12, 22, 11, // tri1 + 23, 24, 22, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b(8, 7, 26, // tri0 + 7, 25, 26, // tri1 + 6, 27, 7, // tri2 + 6, 5, 27 // tri3 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 2, 28, 0, // tri1 + 28, 29, 0, // tri2 + 30, 17, 31 // tri3 + ), + gsSPVertex(&grd_s_f_4_v[63], 7, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_4_v[70], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(12, 16, 17, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22, // tri2 + 21, 14, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 27, 28, // tri1 + 24, 26, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_4_v[100], 27, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 9, 6, 10, // tri1 + 6, 8, 10, // tri2 + 3, 5, 1 // tri3 + ), + gsSPNTriangles_5b(0, 3, 1, // tri0 + 11, 0, 2, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 11, 21, // tri1 + 22, 12, 14, // tri2 + 7, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_4_v[127], 24, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 9, 8, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 14, 13, 15, // tri1 + 15, 16, 14, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(0, 2, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_4_v[151], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c b/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c new file mode 100644 index 00000000..091d279a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_4/grd_s_f_4_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_f_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_f_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_f_4_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5.c b/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5.c new file mode 100644 index 00000000..5ef9e63e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5.c @@ -0,0 +1,274 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_5_v[] = { +#include "assets/field/bg/grd_s_f_5_v.inc" +}; + +extern Gfx grd_s_f_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_5_v[239], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_5_v[218], 21, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 4, // tri1 + 9, 10, 4, // tri2 + 11, 12, 3 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 2, 14, 15, // tri1 + 16, 13, 17, // tri2 + 8, 16, 18 // tri3 + ), + gsSPNTriangles_5b(19, 6, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_5_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 4, 9, // tri1 + 4, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 5, 4, 8, // tri2 + 20, 21, 1 // tri3 + ), + gsSPNTriangles_5b(21, 3, 1, // tri0 + 22, 23, 14, // tri1 + 22, 24, 23, // tri2 + 23, 25, 14 // tri3 + ), + gsSPNTriangles_5b(26, 27, 17, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_5_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 0, 12, 5, // tri1 + 0, 13, 12, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(4, 16, 3, // tri0 + 4, 17, 16, // tri1 + 18, 19, 20, // tri2 + 10, 11, 21 // tri3 + ), + gsSPNTriangles_5b(11, 22, 21, // tri0 + 22, 23, 21, // tri1 + 23, 24, 25, // tri2 + 6, 26, 7 // tri3 + ), + gsSPNTriangles_5b(6, 27, 26, // tri0 + 28, 29, 30, // tri1 + 31, 28, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_5_v[62], 28, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 11, 12, 9, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 19, 18, 15, // tri2 + 15, 17, 13 // tri3 + ), + gsSPNTriangles_5b(17, 20, 21, // tri0 + 17, 22, 20, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_5_v[90], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 9, 6, 10, // tri2 + 6, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 13, 14, 15, // tri2 + 16, 13, 15 // tri3 + ), + gsSPNTriangles_5b(13, 12, 14, // tri0 + 7, 17, 18, // tri1 + 19, 20, 21, // tri2 + 20, 16, 22 // tri3 + ), + gsSPNTriangles_5b(0, 23, 1, // tri0 + 19, 21, 23, // tri1 + 24, 5, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_5_v[121], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 11, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 18, 19, // tri1 + 18, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(20, 24, 21, // tri0 + 25, 26, 27, // tri1 + 22, 25, 23, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_5_v[153], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 10, 1, // tri1 + 9, 6, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_5_v[165], 21, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 6, 4, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 9, 14, 15, // tri1 + 0, 16, 17, // tri2 + 16, 13, 18 // tri3 + ), + gsSPNTriangles_5b(19, 5, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_5_v[186], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(19, 23, 20, // tri0 + 23, 24, 25, // tri1 + 24, 17, 26, // tri2 + 22, 27, 19 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c b/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c new file mode 100644 index 00000000..50810092 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_5/grd_s_f_5_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_f_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_f_5_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_f_5_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6.c b/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6.c new file mode 100644 index 00000000..ae842d0f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6.c @@ -0,0 +1,275 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_6_v[] = { +#include "assets/field/bg/grd_s_f_6_v.inc" +}; + +extern Gfx grd_s_f_6_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_6_v[243], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_6_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_6_v[207], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 19, 22, // tri2 + 23, 21, 24 // tri3 + ), + gsSPNTriangles_5b(25, 23, 26, // tri0 + 15, 27, 28, // tri1 + 27, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_6_v[238], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_6_v[0], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 2, 6 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 3, 7, 4, // tri1 + 6, 8, 9, // tri2 + 8, 4, 7 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 11, 9, 10, // tri2 + 7, 3, 12 // tri3 + ), + gsSPNTriangles_5b(10, 7, 12, // tri0 + 13, 14, 15, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 19, 20, 16, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b(21, 13, 17, // tri0 + 13, 21, 23, // tri1 + 25, 22, 26, // tri2 + 25, 23, 22 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 29, 22, 30, // tri1 + 22, 24, 30, // tri2 + 31, 12, 3 // tri3 + ), + gsSPVertex(&grd_s_f_6_v[32], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 4, 8, 7, // tri1 + 9, 6, 5, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 14, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20, // tri2 + 24, 23, 25 // tri3 + ), + gsSPNTriangles_5b(18, 17, 26, // tri0 + 15, 14, 13, // tri1 + 13, 12, 27, // tri2 + 28, 27, 12 // tri3 + ), + gsSPNTriangles_5b(12, 11, 10, // tri0 + 3, 8, 4, // tri1 + 3, 29, 8, // tri2 + 1, 0, 3 // tri3 + ), + gsSPNTriangles_5b(30, 0, 2, // tri0 + 20, 19, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_6_v[63], 18, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 6, 5, 7, // tri1 + 4, 6, 3, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 14, 10, 12, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 15, 17, // tri0 + 13, 17, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_6_v[81], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b(19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 26, 27, // tri0 + 28, 27, 26, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_6_v[113], 30, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 0, 9, 10, // tri1 + 9, 6, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(8, 14, 11, // tri0 + 15, 16, 17, // tri1 + 17, 18, 19, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 25, 26, 27, // tri2 + 27, 28, 29 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_6_v[143], 27, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 5, 8, 7, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 13, 14, 12, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_6_v[170], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 20, 22, 23, // tri2 + 17, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 19, 26, // tri0 + 27, 28, 29, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_6_v[202], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c b/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c new file mode 100644 index 00000000..c447f626 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_6/grd_s_f_6_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_f_6_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_f_6_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_f_6_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_f_7/grd_s_f_7.c b/src/data/field/bg/acre/grd_s_f_7/grd_s_f_7.c new file mode 100644 index 00000000..7b84c8d9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_7/grd_s_f_7.c @@ -0,0 +1,345 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_7_v[] = { +#include "assets/field/bg/grd_s_f_7_v.inc" +}; + +extern Gfx grd_s_f_7_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_7_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_7_v[249], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 24, 22, 25, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[281], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 3, // tri1 + 8, 12, 9, // tri2 + 13, 4, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 12, // tri0 + 17, 18, 19, // tri1 + 18, 0, 20, // tri2 + 21, 7, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 26, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[312], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 9, // tri0 + 10, 11, 12, // tri1 + 3, 5, 11, // tri2 + 6, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 12, // tri0 + 14, 15, 16, // tri1 + 17, 14, 18, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 22, // tri0 + 23, 21, 24, // tri1 + 25, 23, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_7_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 1, // tri0 + 6, 3, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 15, 4, // tri1 + 14, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 12, 20, 21, // tri2 + 20, 22, 18 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 27, 28, 29, // tri2 + 30, 4, 3 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 4, 7, // tri1 + 9, 8, 10, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 13, 6, 5, // tri1 + 14, 13, 5, // tri2 + 14, 5, 15 // tri3 + ), + gsSPNTriangles_5b( + 12, 16, 9, // tri0 + 17, 12, 18, // tri1 + 19, 20, 21, // tri2 + 15, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 15, 23, // tri0 + 25, 26, 27, // tri1 + 27, 22, 25, // tri2 + 25, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[63], 22, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 8, 6, 5, // tri1 + 9, 10, 11, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 3, 19, 20, // tri2 + 10, 21, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_7_v[85], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 7, 10, // tri2 + 9, 11, 7 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 16, 13, 17, // tri2 + 16, 18, 13 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 14, 22, 25, // tri2 + 26, 18, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[116], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 11, // tri1 + 12, 11, 10, // tri2 + 13, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 16, 17, 14, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 24, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[148], 7, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 6, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_7_v[155], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 7, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 4, 17, // tri0 + 18, 19, 20, // tri1 + 14, 2, 21, // tri2 + 14, 21, 15 // tri3 + ), + gsSPNTriangles_5b( + 9, 18, 20, // tri0 + 16, 17, 19, // tri1 + 22, 23, 24, // tri2 + 25, 22, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 23, 27, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[186], 32, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 13, 14, 15, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 13, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 16, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_7_v[217], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 0, 12, 1, // tri1 + 13, 5, 14, // tri2 + 15, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 19, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 28, // tri0 + 20, 29, 30, // tri1 + 29, 24, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_8/grd_s_f_8.c b/src/data/field/bg/acre/grd_s_f_8/grd_s_f_8.c new file mode 100644 index 00000000..b3fddcbb --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_8/grd_s_f_8.c @@ -0,0 +1,264 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_8_v[] = { +#include "assets/field/bg/grd_s_f_8_v.inc" +}; + +extern Gfx grd_s_f_8_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_8_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_8_v[168], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 20, 23, // tri1 + 24, 22, 25, // tri2 + 26, 24, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_8_v[199], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_8_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 2, 3, // tri0 + 6, 5, 2, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 8, 11, // tri0 + 8, 12, 11, // tri1 + 13, 7, 14, // tri2 + 7, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 15, // tri0 + 16, 17, 14, // tri1 + 17, 13, 14, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 22, 21, 18, // tri1 + 23, 21, 22, // tri2 + 17, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 17, 16, // tri0 + 15, 9, 24, // tri1 + 25, 26, 27, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 25, // tri0 + 30, 31, 29, // tri1 + 22, 18, 31, // tri2 + 19, 24, 20 // tri3 + ), + gsSPVertex(&grd_s_f_8_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 5, 11, 6, // tri1 + 11, 12, 6, // tri2 + 3, 1, 0 // tri3 + ), + gsSPNTriangles_5b( + 13, 4, 3, // tri0 + 13, 14, 4, // tri1 + 14, 7, 4, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 26, 27, 25, // tri2 + 28, 8, 29 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 29, // tri0 + 30, 12, 11, // tri1 + 31, 14, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_8_v[64], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_8_v[68], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 4, 6, 9, // tri1 + 1, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 15, // tri0 + 12, 14, 15, // tri1 + 1, 11, 2, // tri2 + 16, 9, 17 // tri3 + ), + gsSPNTriangles_5b( + 5, 8, 6, // tri0 + 7, 18, 19, // tri1 + 18, 3, 20, // tri2 + 21, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 13, 22, 23, // tri0 + 22, 24, 25, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_f_8_v[98], 27, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 14, 18, // tri1 + 15, 19, 20, // tri2 + 19, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 17, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_8_v[125], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 21, 23, 24, // tri1 + 18, 25, 26, // tri2 + 25, 20, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_8_v[156], 12, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 0, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_9/grd_s_f_9.c b/src/data/field/bg/acre/grd_s_f_9/grd_s_f_9.c new file mode 100644 index 00000000..36085fae --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_9/grd_s_f_9.c @@ -0,0 +1,299 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_9_v[] = { +#include "assets/field/bg/grd_s_f_9_v.inc" +}; + +extern Gfx grd_s_f_9_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_9_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_9_v[186], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 10, 3, 11, // tri1 + 12, 5, 13, // tri2 + 14, 12, 15 // tri3 + ), + gsSPNTriangles_5b( + 8, 16, 9, // tri0 + 8, 14, 16, // tri1 + 10, 11, 17, // tri2 + 18, 10, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 19, 26, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_9_v[216], 31, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 9, // tri0 + 10, 11, 12, // tri1 + 3, 5, 11, // tri2 + 6, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 12, // tri0 + 14, 15, 16, // tri1 + 17, 14, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 22, // tri0 + 17, 18, 22, // tri1 + 23, 24, 25, // tri2 + 26, 23, 25 // tri3 + ), + gsSPNTriangles_5b( + 15, 26, 27, // tri0 + 23, 28, 24, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_9_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 2, 3, 12 // tri3 + ), + gsSPNTriangles_5b( + 3, 13, 12, // tri0 + 13, 14, 12, // tri1 + 12, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 18, 19, 20, // tri1 + 19, 21, 22, // tri2 + 22, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 21, 24, // tri1 + 24, 5, 23, // tri2 + 25, 23, 5 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 26, 27, 23, // tri1 + 26, 28, 27, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 29, 28, // tri0 + 31, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_9_v[32], 31, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 2, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 16, // tri0 + 20, 21, 16, // tri1 + 21, 22, 16, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 22, // tri0 + 24, 25, 22, // tri1 + 24, 7, 25, // tri2 + 24, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 26, 18, 17, // tri0 + 2, 1, 27, // tri1 + 28, 29, 15, // tri2 + 15, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 30, 26, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_9_v[63], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 16, 19, // tri1 + 20, 21, 22, // tri2 + 14, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 24, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_9_v[94], 30, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 3, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 6, 8, 9, // tri1 + 10, 11, 12, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 10, 13, 11, // tri1 + 14, 16, 17, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 21, 22, 23, // tri1 + 24, 21, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 20, // tri0 + 27, 24, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_9_v[124], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 7, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 4, 17, // tri0 + 18, 19, 20, // tri1 + 14, 2, 21, // tri2 + 14, 21, 15 // tri3 + ), + gsSPNTriangles_5b( + 9, 18, 20, // tri0 + 16, 17, 19, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_9_v[155], 31, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 3, 10, // tri0 + 6, 11, 7, // tri1 + 1, 6, 8, // tri2 + 3, 5, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 16, // tri1 + 17, 12, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 15, 23, 24, // tri1 + 25, 26, 27, // tri2 + 17, 18, 28 // tri3 + ), + gsSPNTriangles_5b( + 20, 25, 22, // tri0 + 29, 17, 28, // tri1 + 26, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c b/src/data/field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c new file mode 100644 index 00000000..aa1bce4a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_ko_1/grd_s_f_ko_1.c @@ -0,0 +1,284 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_ko_1_v[] = { +#include "assets/field/bg/grd_s_f_ko_1_v.inc" +}; + +extern Gfx grd_s_f_ko_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_ko_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_ko_1_v[197], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 13, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 19, 20, // tri1 + 21, 17, 19, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 23, 25, // tri0 + 26, 27, 28, // tri1 + 29, 30, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_1_v[228], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 1 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 17, 19, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 23, 25, // tri0 + 26, 27, 28, // tri1 + 29, 28, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_1_v[31], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_ko_1_v[40], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 4, // tri1 + 9, 8, 10, // tri2 + 11, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 19, 17, 20, // tri1 + 17, 21, 20, // tri2 + 17, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 17, 23, 22, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 25, 22, 23, // tri0 + 11, 28, 29, // tri1 + 28, 27, 29, // tri2 + 29, 27, 30 // tri3 + ), + gsSPNTriangles_5b( + 27, 26, 30, // tri0 + 7, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_1_v[71], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 3, 5, 6, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 7, 9, // tri0 + 7, 10, 9, // tri1 + 11, 12, 13, // tri2 + 9, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 14, 1, 0, // tri1 + 14, 15, 1, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 17, 15, 18, // tri2 + 15, 22, 18 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 22, // tri0 + 22, 16, 13, // tri1 + 13, 23, 22, // tri2 + 13, 12, 23 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 27, // tri0 + 29, 30, 28, // tri1 + 31, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_1_v[103], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 15, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 16, 22, 25, // tri0 + 23, 26, 27, // tri1 + 26, 28, 29, // tri2 + 30, 18, 31 // tri3 + ), + gsSPVertex(&grd_s_f_ko_1_v[135], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 5, 13, 6, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 16, // tri0 + 17, 16, 18, // tri1 + 19, 20, 21, // tri2 + 22, 19, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 25, 22, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_1_v[166], 14, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 0, 9, // tri0 + 10, 11, 12, // tri1 + 1, 13, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_1_v[180], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 5, 16, // tri0 + 4, 8, 3, // tri1 + 15, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c b/src/data/field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c new file mode 100644 index 00000000..386a1959 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_ko_2/grd_s_f_ko_2.c @@ -0,0 +1,233 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_ko_2_v[] = { +#include "assets/field/bg/grd_s_f_ko_2_v.inc" +}; + +extern Gfx grd_s_f_ko_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_ko_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_ko_2_v[140], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 4, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 16, // tri0 + 17, 18, 19, // tri1 + 13, 20, 21, // tri2 + 22, 15, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 17, 25, // tri0 + 26, 24, 27, // tri1 + 20, 28, 21, // tri2 + 20, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 29, // tri0 + 30, 22, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_ko_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 6, 1, 0, // tri1 + 7, 8, 6, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 5, 11, 7, // tri1 + 6, 5, 7, // tri2 + 12, 13, 4 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 4, // tri0 + 14, 15, 4, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 11, 20, 7, // tri0 + 18, 21, 19, // tri1 + 20, 21, 7, // tri2 + 1, 22, 3 // tri3 + ), + gsSPNTriangles_5b( + 3, 12, 4, // tri0 + 23, 24, 25, // tri1 + 24, 26, 25, // tri2 + 27, 18, 28 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 28, // tri0 + 12, 29, 13, // tri1 + 29, 25, 26, // tri2 + 23, 30, 24 // tri3 + ), + gsSPVertex(&grd_s_f_ko_2_v[31], 29, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 6, 7, 1, // tri1 + 6, 8, 7, // tri2 + 7, 3, 1 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 8, 11, // tri1 + 8, 6, 11, // tri2 + 12, 13, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 9, // tri0 + 14, 13, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 2, 4, // tri1 + 15, 17, 23, // tri2 + 17, 18, 24 // tri3 + ), + gsSPNTriangles_5b( + 22, 19, 21, // tri0 + 22, 25, 19, // tri1 + 22, 4, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_2_v[60], 23, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 3, 8, // tri0 + 1, 9, 2, // tri1 + 0, 2, 6, // tri2 + 1, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 10, 11, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_2_v[83], 26, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 12, 13, 14, // tri2 + 8, 15, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 15, // tri0 + 16, 14, 1, // tri1 + 17, 18, 19, // tri2 + 20, 0, 2 // tri3 + ), + gsSPNTriangles_5b( + 16, 12, 14, // tri0 + 7, 9, 11, // tri1 + 21, 17, 22, // tri2 + 12, 23, 13 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 3, 21, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_2_v[109], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 3, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 5, 6, 16, // tri0 + 8, 13, 10, // tri1 + 17, 5, 16, // tri2 + 14, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 23, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 20, 28, 29, // tri0 + 28, 22, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c b/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c new file mode 100644 index 00000000..a6e4635c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3.c @@ -0,0 +1,287 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_ko_3_v[] = { +#include "assets/field/bg/grd_s_f_ko_3_v.inc" +}; + +extern Gfx grd_s_f_ko_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_ko_3_v[242], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 5, 6, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_ko_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_ko_3_v[203], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 13, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 6, // tri0 + 17, 18, 19, // tri1 + 20, 6, 18, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_3_v[233], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 6, // tri0 + 17, 18, 19, // tri1 + 20, 6, 18, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 25, 26, 27, // tri1 + 28, 27, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_3_v[30], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_ko_3_v[39], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 1, 6, 2, // tri1 + 7, 8, 9, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 12, 13, 11, // tri1 + 14, 15, 16, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b(17, 13, 15, // tri0 + 15, 6, 16, // tri1 + 14, 18, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 20, 18, // tri1 + 22, 19, 20, // tri2 + 22, 23, 19 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 24, 25, 23, // tri1 + 26, 25, 24, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(28, 25, 27, // tri0 + 29, 30, 28, // tri1 + 30, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_3_v[71], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 4, 7, 3, // tri2 + 8, 9, 2 // tri3 + ), + gsSPNTriangles_5b(8, 10, 9, // tri0 + 11, 10, 8, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(7, 15, 3, // tri0 + 15, 7, 16, // tri1 + 17, 18, 19, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 16, 7, // tri1 + 23, 24, 25, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b(28, 27, 14, // tri0 + 28, 29, 27, // tri1 + 29, 24, 27, // tri2 + 29, 30, 24 // tri3 + ), + gsSPNTriangles_5b(30, 25, 24, // tri0 + 28, 16, 29, // tri1 + 16, 22, 29, // tri2 + 31, 29, 22 // tri3 + ), + gsSPVertex(&grd_s_f_ko_3_v[103], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_3_v[108], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 9, 6, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 9, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 16, 11, 20 // tri3 + ), + gsSPNTriangles_5b(2, 21, 22, // tri0 + 23, 5, 24, // tri1 + 25, 26, 27, // tri2 + 28, 25, 29 // tri3 + ), + gsSPNTriangles_5b(26, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_ko_3_v[140], 22, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 13, // tri1 + 14, 15, 16, // tri2 + 15, 12, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 10, 18, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_3_v[162], 21, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 11, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 18, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_ko_3_v[183], 20, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 13, // tri1 + 14, 16, 15, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 1, 0, 3, // tri1 + 10, 8, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c b/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c new file mode 100644 index 00000000..72c15fe4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_ko_3/grd_s_f_ko_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_f_ko_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_f_ko_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_f_ko_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c b/src/data/field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c new file mode 100644 index 00000000..497dcfd6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mh_1/grd_s_f_mh_1.c @@ -0,0 +1,239 @@ +#include "libforest/gbi_extensions.h" + +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mh_1_v[] = { +#include "assets/field/bg/grd_s_f_mh_1_v.inc" +}; + +extern Gfx grd_s_f_mh_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mh_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mh_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 10, 17, // tri1 + 17, 10, 9, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 18, // tri0 + 20, 23, 24, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 7, 10, 11, // tri1 + 11, 12, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 16, // tri1 + 18, 21, 22, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_1_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 10, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 23, 24, 25, // tri1 + 26, 27, 28, // tri2 + 29, 30, 26 // tri3 + ), + gsSPVertex(&grd_s_f_mh_1_v[95], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 0 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mh_1_v[104], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 5, // tri1 + 8, 5, 4, // tri2 + 10, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 11, 4, 12, // tri0 + 4, 6, 12, // tri1 + 6, 13, 12, // tri2 + 6, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 18, 17, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 18, 21, 20, // tri1 + 22, 23, 15, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 15, 23, 18, // tri0 + 23, 24, 25, // tri1 + 24, 0, 25, // tri2 + 25, 0, 26 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 26, // tri0 + 1, 27, 3, // tri1 + 1, 28, 27, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 30, 27, 31, // tri0 + 27, 29, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_1_v[136], 16, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 1, 4, // tri0 + 6, 3, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 10, 12, 11, // tri1 + 8, 12, 10, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 1, 14, // tri0 + 15, 4, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mh_1_v[152], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22, // tri2 + 18, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 24, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_1_v[183], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 11, 3, 13, // tri2 + 0, 2, 6 // tri3 + ), + gsSPNTriangles_5b( + 3, 5, 13, // tri0 + 7, 9, 14, // tri1 + 15, 14, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 15, 16, // tri0 + 8, 10, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mh_2/grd_s_f_mh_2.c b/src/data/field/bg/acre/grd_s_f_mh_2/grd_s_f_mh_2.c new file mode 100644 index 00000000..12f4f6de --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mh_2/grd_s_f_mh_2.c @@ -0,0 +1,228 @@ +#include "libforest/gbi_extensions.h" + +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mh_2_v[] = { +#include "assets/field/bg/grd_s_f_mh_2_v.inc" +}; + +extern Gfx grd_s_f_mh_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mh_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mh_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 16, 15, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 26, 18, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 9, 10, // tri1 + 11, 9, 12, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 21, 28, // tri1 + 29, 30, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[62], 32, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 11, 12, // tri1 + 13, 14, 15, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[92], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 7 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mh_2_v[101], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 9, 2, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 15, 18, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 21, 23, 22, // tri1 + 21, 20, 24, // tri2 + 20, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 7, 4, 26, // tri0 + 4, 27, 26, // tri1 + 28, 29, 30, // tri2 + 28, 31, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 7, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[133], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 12, 11, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 13, // tri0 + 12, 15, 14, // tri1 + 15, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 19, 21, 16, // tri1 + 22, 23, 24, // tri2 + 22, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 26, 25, // tri0 + 27, 28, 29, // tri1 + 30, 28, 27, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[165], 8, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mh_2_v[173], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 9, 10, 11, // tri1 + 10, 7, 12, // tri2 + 13, 9, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 16, // tri0 + 17, 15, 18, // tri1 + 19, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 22, 24, 27, // tri1 + 25, 28, 29, // tri2 + 28, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_f_mh_2_v[205], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mh_3/grd_s_f_mh_3.c b/src/data/field/bg/acre/grd_s_f_mh_3/grd_s_f_mh_3.c new file mode 100644 index 00000000..8456e9e0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mh_3/grd_s_f_mh_3.c @@ -0,0 +1,220 @@ +#include "libforest/gbi_extensions.h" + +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mh_3_v[] = { +#include "assets/field/bg/grd_s_f_mh_3_v.inc" +}; + +extern Gfx grd_s_f_mh_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mh_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mh_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 21, 22, 19, // tri1 + 23, 13, 15, // tri2 + 23, 24, 13 // tri3 + ), + gsSPNTriangles_5b( + 3, 25, 4, // tri0 + 25, 26, 4, // tri1 + 9, 27, 28, // tri2 + 9, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 22, // tri0 + 21, 23, 22, // tri1 + 24, 25, 26, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 1, 28, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_3_v[64], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 9, 5, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mh_3_v[77], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 9, 0, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 1, 0, // tri0 + 12, 13, 14, // tri1 + 8, 15, 7, // tri2 + 16, 9, 17 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 17, // tri0 + 6, 18, 8, // tri1 + 18, 19, 8, // tri2 + 20, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 17, 21, 14, // tri1 + 22, 3, 23, // tri2 + 6, 24, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 25, // tri0 + 18, 12, 25, // tri1 + 20, 14, 13, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 28, // tri0 + 4, 3, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_3_v[107], 13, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 2, 4, 6, // tri1 + 6, 7, 8, // tri2 + 6, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 10, 8, 12, // tri2 + 8, 7, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mh_3_v[120], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 9, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 12, // tri0 + 17, 18, 19, // tri1 + 20, 21, 18, // tri2 + 22, 19, 14 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 6, 27, // tri1 + 28, 29, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mh_3_v[150], 26, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 2, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 1, 0, 3, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 12, 19, 10, // tri1 + 20, 18, 19, // tri2 + 11, 10, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 24, 15, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c b/src/data/field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c new file mode 100644 index 00000000..cd92d17f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mu_1/grd_s_f_mu_1.c @@ -0,0 +1,217 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mu_1_v[] = { +#include "assets/field/bg/grd_s_f_mu_1_v.inc" +}; + +extern Gfx grd_s_f_mu_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mu_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mu_1_v[145], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_1_v[0], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 3, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 11, 14, 12, // tri1 + 13, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_1_v[17], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 23, // tri0 + 21, 24, 25, // tri1 + 24, 26, 27, // tri2 + 26, 1, 28 // tri3 + ), + gsSPNTriangles_5b( + 2, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_1_v[48], 30, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 15, 19, // tri1 + 20, 18, 21, // tri2 + 22, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 25, // tri0 + 26, 24, 27, // tri1 + 28, 26, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_1_v[78], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mu_1_v[93], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 6, // tri0 + 6, 8, 7, // tri1 + 7, 8, 9, // tri2 + 3, 10, 4 // tri3 + ), + gsSPNTriangles_5b( + 3, 11, 10, // tri0 + 11, 12, 10, // tri1 + 13, 14, 12, // tri2 + 13, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 8, 16, 9, // tri1 + 16, 17, 9, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 13, // tri0 + 19, 14, 13, // tri1 + 19, 20, 14, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 18, 16, // tri0 + 18, 17, 16, // tri1 + 15, 23, 12, // tri2 + 15, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 23, // tri0 + 25, 24, 26, // tri1 + 26, 27, 25, // tri2 + 28, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 28, // tri0 + 29, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_1_v[124], 21, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 6, 5, 0, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 7, 12, 11, // tri1 + 13, 9, 8, // tri2 + 13, 14, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 16, 18, // tri0 + 19, 4, 20, // tri1 + 19, 1, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c b/src/data/field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c new file mode 100644 index 00000000..1558d49e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mu_2/grd_s_f_mu_2.c @@ -0,0 +1,217 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mu_2_v[] = { +#include "assets/field/bg/grd_s_f_mu_2_v.inc" +}; + +extern Gfx grd_s_f_mu_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mu_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mu_2_v[146], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_2_v[0], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 4, // tri0 + 5, 7, 8, // tri1 + 7, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 11, 13, 16, // tri2 + 14, 17, 18 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_2_v[19], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 1, 3, 6, // tri0 + 4, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 10, 12, 9, // tri1 + 11, 13, 14, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 18, // tri0 + 17, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_2_v[63], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 16, 18, 19, // tri1 + 18, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mu_2_v[87], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 7, 8, 5, // tri1 + 0, 9, 7, // tri2 + 4, 10, 3 // tri3 + ), + gsSPNTriangles_5b( + 6, 10, 4, // tri0 + 11, 12, 6, // tri1 + 12, 10, 6, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 13, // tri0 + 14, 15, 13, // tri1 + 15, 16, 13, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 16, // tri0 + 7, 9, 8, // tri1 + 8, 19, 20, // tri2 + 8, 9, 19 // tri3 + ), + gsSPNTriangles_5b( + 9, 21, 19, // tri0 + 9, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 23, 25, // tri0 + 28, 27, 29, // tri1 + 30, 31, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_2_v[119], 27, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 1, 4, 5, // tri0 + 6, 7, 8, // tri1 + 7, 6, 9, // tri2 + 6, 5, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 5, 4, // tri1 + 9, 5, 10, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 12, 14, 15, // tri1 + 15, 11, 12, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 18, 19, 8, // tri1 + 19, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 22, // tri0 + 26, 23, 22, // tri1 + 18, 20, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c b/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c new file mode 100644 index 00000000..93aa7813 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3.c @@ -0,0 +1,200 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_mu_3_v[] = { +#include "assets/field/bg/grd_s_f_mu_3_v.inc" +}; + +extern Gfx grd_s_f_mu_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mu_3_v[145], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 1, 6, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_mu_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_mu_3_v[0], 22, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 3, // tri0 + 6, 7, 5, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 10, // tri0 + 10, 8, 11, // tri1 + 13, 14, 12, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 16, 21, 17 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_3_v[22], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_mu_3_v[36], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 8, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 11, 13, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 14, 17, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 26, 28, 29, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_3_v[68], 20, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 18, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_mu_3_v[88], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 4, 1, 5, // tri1 + 1, 6, 5, // tri2 + 8, 2, 3 // tri3 + ), + gsSPNTriangles_5b(9, 2, 8, // tri0 + 10, 9, 11, // tri1 + 10, 12, 9, // tri2 + 9, 12, 2 // tri3 + ), + gsSPNTriangles_5b(13, 12, 10, // tri0 + 14, 15, 13, // tri1 + 15, 12, 13, // tri2 + 16, 6, 17 // tri3 + ), + gsSPNTriangles_5b(18, 7, 19, // tri0 + 19, 7, 6, // tri1 + 16, 19, 6, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 17, 22, 23, // tri1 + 23, 22, 24, // tri2 + 22, 25, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 29, // tri1 + 28, 26, 29, // tri2 + 26, 25, 29 // tri3 + ), + gsSPNTriangles_5b(26, 28, 20, // tri0 + 20, 28, 21, // tri1 + 28, 30, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_mu_3_v[119], 26, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 4, 5, // tri1 + 6, 7, 4, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 10, 13, 14, // tri2 + 11, 10, 14 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 15, 16, 14, // tri1 + 15, 17, 16, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 8, 18, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(20, 25, 21, // tri0 + 20, 23, 25, // tri1 + 19, 24, 23, // tri2 + 19, 17, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c b/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c new file mode 100644 index 00000000..4f461e72 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_mu_3/grd_s_f_mu_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_f_mu_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_f_mu_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_f_mu_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c b/src/data/field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c new file mode 100644 index 00000000..fb7d22ba --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_pk_1/grd_s_f_pk_1.c @@ -0,0 +1,296 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_pk_1_v[] = { +#include "assets/field/bg/grd_s_f_pk_1_v.inc" +}; + +extern Gfx grd_s_f_pk_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_pk_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_pk_1_v[225], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 5, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 18, 14, // tri1 + 20, 21, 22, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 25, 27, // tri1 + 17, 28, 27, // tri2 + 29, 15, 30 // tri3 + ), + gsSPNTriangles_5b( + 31, 29, 30, // tri0 + 31, 30, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_pk_1_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 11, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 17, 16, // tri0 + 17, 18, 16, // tri1 + 3, 19, 4, // tri2 + 19, 20, 4 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 24, 25, 15 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 15, // tri0 + 25, 27, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 5, // tri0 + 31, 6, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_1_v[64], 29, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 7, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 10, // tri0 + 12, 13, 14, // tri1 + 15, 12, 14, // tri2 + 14, 13, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 14, 16, // tri0 + 16, 13, 18, // tri1 + 18, 13, 19, // tri2 + 11, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 22, // tri0 + 22, 20, 23, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 6, 28, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_1_v[93], 32, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 26, 23, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_1_v[125], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 3, 4, 7, // tri1 + 8, 9, 10, // tri2 + 11, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 5, 8, 11, // tri0 + 9, 12, 13, // tri1 + 13, 12, 14, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 18, 20, // tri2 + 16, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 19, 22, 23, // tri0 + 23, 22, 24, // tri1 + 22, 25, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 26, 28, // tri0 + 25, 26, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_1_v[155], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 4, 5, 8, // tri2 + 6, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 9, 12, 11, // tri1 + 13, 14, 15, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 17, // tri0 + 14, 18, 16, // tri1 + 16, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 21, 23, 24, // tri1 + 23, 25, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 27, 29, // tri0 + 25, 27, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_1_v[186], 28, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 2, 4, 5, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 17, 15, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 18, 24, // tri1 + 26, 27, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_1_v[214], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_pk_2/grd_s_f_pk_2.c b/src/data/field/bg/acre/grd_s_f_pk_2/grd_s_f_pk_2.c new file mode 100644 index 00000000..119d01ce --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_pk_2/grd_s_f_pk_2.c @@ -0,0 +1,278 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_pk_2_v[] = { +#include "assets/field/bg/grd_s_f_pk_2_v.inc" +}; + +extern Gfx grd_s_f_pk_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_pk_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_pk_2_v[204], 14, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 18, 17, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 11, // tri0 + 19, 25, 26, // tri1 + 18, 25, 19, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 31, // tri1 + 30, 24, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_pk_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 7, 8, // tri0 + 13, 0, 14, // tri1 + 0, 2, 14, // tri2 + 3, 15, 2 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 13, // tri0 + 17, 18, 13, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 22, // tri0 + 9, 18, 24, // tri1 + 18, 25, 24, // tri2 + 18, 17, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_2_v[63], 27, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 9, 10, 11, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 12, 10, 1, // tri0 + 13, 14, 15, // tri1 + 14, 16, 17, // tri2 + 18, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 6, 17, // tri0 + 7, 19, 8, // tri1 + 7, 6, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 22, 9, 11, // tri0 + 21, 9, 22, // tri1 + 21, 23, 24, // tri2 + 25, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 24, // tri0 + 12, 1, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_2_v[90], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 7, // tri0 + 8, 6, 7, // tri1 + 9, 6, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 11, 9, 13, // tri1 + 14, 10, 15, // tri2 + 16, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 14, 16, // tri0 + 18, 17, 19, // tri1 + 19, 17, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 21, 18, 23, // tri1 + 24, 20, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_2_v[121], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 7, 8, 3, // tri1 + 9, 10, 11, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 11, 13, 7, // tri1 + 14, 12, 9, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 15, // tri0 + 18, 17, 15, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 18, // tri0 + 23, 24, 25, // tri1 + 26, 27, 19, // tri2 + 28, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 24, 28, 25, // tri0 + 25, 28, 26, // tri1 + 29, 30, 23, // tri2 + 30, 24, 23 // tri3 + ), + gsSPVertex(&grd_s_f_pk_2_v[152], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 11, 4, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 12, 9, // tri0 + 9, 12, 10, // tri1 + 13, 14, 7, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_2_v[183], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_2_v[190], 14, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 10, 7, 11, // tri1 + 12, 11, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_f_pk_3/grd_s_f_pk_3.c b/src/data/field/bg/acre/grd_s_f_pk_3/grd_s_f_pk_3.c new file mode 100644 index 00000000..95266626 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_f_pk_3/grd_s_f_pk_3.c @@ -0,0 +1,322 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_f_pk_3_v[] = { +#include "assets/field/bg/grd_s_f_pk_3_v.inc" +}; + +extern Gfx grd_s_f_pk_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_f_pk_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_f_pk_3_v[245], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 11, 13, 16, // tri1 + 14, 17, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 4, 21, 22, // tri0 + 23, 3, 24, // tri1 + 25, 23, 26, // tri2 + 5, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 8, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[30], 27, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 19, 20, // tri1 + 19, 16, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 22, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_f_pk_3_v[57], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 4, // tri0 + 4, 6, 5, // tri1 + 7, 5, 8, // tri2 + 5, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 3, 15 // tri3 + ), + gsSPNTriangles_5b( + 3, 1, 15, // tri0 + 13, 16, 12, // tri1 + 13, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 21, 25, 22, // tri0 + 21, 26, 25, // tri1 + 26, 27, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 29, 13, 31, // tri1 + 13, 11, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[89], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 3, // tri0 + 7, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 15, // tri0 + 12, 16, 15, // tri1 + 12, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 18, // tri0 + 22, 20, 19, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 26, 28, 23, // tri1 + 28, 24, 23, // tri2 + 28, 29, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 30, // tri0 + 25, 2, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[120], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_3_v[132], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 10, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 11, 18, // tri0 + 15, 17, 19, // tri1 + 20, 15, 19, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 21, 25, // tri1 + 21, 22, 25, // tri2 + 26, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 28, 26, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[163], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 6, // tri0 + 7, 8, 9, // tri1 + 10, 8, 7, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 13, // tri0 + 8, 11, 9, // tri1 + 13, 12, 14, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 23, 24, 25, // tri2 + 26, 23, 25 // tri3 + ), + gsSPNTriangles_5b( + 22, 26, 25, // tri0 + 24, 27, 28, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[194], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 8, 9, 10, // tri1 + 5, 8, 10, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 11, // tri0 + 12, 13, 11, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 16, 17, 19, // tri1 + 15, 16, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 27, 25, // tri1 + 28, 29, 30, // tri2 + 29, 26, 30 // tri3 + ), + gsSPVertex(&grd_s_f_pk_3_v[225], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_f_pk_3_v[232], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_hole_test/grd_s_hole_test.c b/src/data/field/bg/acre/grd_s_hole_test/grd_s_hole_test.c new file mode 100644 index 00000000..8caf3399 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_hole_test/grd_s_hole_test.c @@ -0,0 +1,316 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_hole_test_v[] = { +#include "assets/field/bg/grd_s_hole_test_v.inc" +}; + +extern Gfx grd_s_hole_test_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_hole_test_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_hole_test_v[230], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_hole_test_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 4 // tri3 + ), + gsSPNTriangles_5b( + 3, 10, 4, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 14, 17, // tri1 + 16, 18, 14, // tri2 + 18, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 13, // tri0 + 20, 21, 15, // tri1 + 22, 23, 24, // tri2 + 25, 24, 20 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 20, // tri0 + 24, 23, 20, // tri1 + 26, 27, 19, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 28, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 3, // tri0 + 6, 0, 2, // tri1 + 6, 7, 0, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 10, 9, 8, // tri1 + 11, 12, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 14, // tri0 + 12, 16, 14, // tri1 + 14, 17, 18, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 20, 21, 19, // tri1 + 22, 23, 20, // tri2 + 24, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 26, 29, 25, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 27, // tri0 + 29, 30, 25, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[64], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_hole_test_v[69], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 6, // tri0 + 9, 11, 10, // tri1 + 6, 10, 7, // tri2 + 8, 7, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 11, // tri0 + 15, 5, 14, // tri1 + 3, 5, 15, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 16, // tri1 + 19, 21, 20, // tri2 + 16, 22, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 20, 22, // tri0 + 18, 17, 4, // tri1 + 23, 24, 21, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 27, 26, 25, // tri1 + 25, 24, 23, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[101], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 8, // tri1 + 12, 9, 13, // tri2 + 14, 13, 4 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 23, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 17, 25, // tri1 + 28, 26, 29, // tri2 + 30, 29, 31 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[133], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 0, 6, 1, // tri0 + 0, 4, 6, // tri1 + 2, 1, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 13, 7, 12, // tri1 + 13, 12, 11, // tri2 + 11, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 18, 14, // tri1 + 17, 10, 18, // tri2 + 14, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 19, // tri0 + 20, 21, 22, // tri1 + 23, 19, 21, // tri2 + 23, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[163], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 10, 7, 11, // tri1 + 12, 11, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 14, // tri0 + 17, 19, 18, // tri1 + 14, 18, 15, // tri2 + 16, 15, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 26, 20, 25, // tri2 + 26, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 27, 28, 29, // tri1 + 30, 31, 27, // tri2 + 30, 23, 31 // tri3 + ), + gsSPNTriangles_5b( + 27, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_hole_test_v[195], 9, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b( + 8, 2, 7, // tri0 + 8, 7, 6, // tri1 + 6, 4, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_hole_test_v[204], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 2, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_hole_test_v[217], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 4, 6, // tri0 + 9, 7, 10, // tri1 + 11, 10, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_il_1/grd_s_il_1.c b/src/data/field/bg/acre/grd_s_il_1/grd_s_il_1.c new file mode 100644 index 00000000..c5a52a58 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_il_1/grd_s_il_1.c @@ -0,0 +1,369 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_il_1_v[] = { +#include "assets/field/bg/grd_s_il_1_v.inc" +}; + +extern Gfx grd_s_il_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_1_v[145], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 2, // tri0 + 6, 5, 2, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 8, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 19, 20, 17, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 24, 25, 22, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_1_v[32], 10, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_1_v[42], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_1_v[48], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 11, // tri0 + 15, 16, 17, // tri1 + 12, 15, 13, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 23, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 28, 30, 22, // tri1 + 29, 26, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_1_v[80], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_il_1_v[97], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 2, 6, 7, // tri1 + 2, 3, 6, // tri2 + 3, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 10, 14, 13, // tri1 + 10, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 17, 18, 14, // tri1 + 18, 19, 14, // tri2 + 19, 20, 14 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 14, // tri0 + 21, 13, 14, // tri1 + 18, 22, 19, // tri2 + 18, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 18, 24, 23, // tri0 + 16, 25, 17, // tri1 + 16, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 26, 29, 28, // tri1 + 29, 30, 28, // tri2 + 28, 31, 27 // tri3 + ), + gsSPVertex(&grd_s_il_1_v[129], 10, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_1_v[139], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_il_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_1_v[177], 9, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 2, // tri0 + 6, 7, 4, // tri1 + 7, 3, 4, // tri2 + 7, 0, 3 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_il_1_v[186], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 3, 6, // tri0 + 7, 6, 8, // tri1 + 9, 7, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 9, 10, 12, // tri1 + 13, 9, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 14, // tri0 + 15, 14, 0, // tri1 + 16, 15, 0, // tri2 + 16, 0, 2 // tri3 + ), + gsSPNTriangles_5b( + 16, 2, 17, // tri0 + 18, 16, 17, // tri1 + 18, 17, 19, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 22, 23, 21, // tri1 + 22, 21, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_il_2/grd_s_il_2.c b/src/data/field/bg/acre/grd_s_il_2/grd_s_il_2.c new file mode 100644 index 00000000..e364a540 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_il_2/grd_s_il_2.c @@ -0,0 +1,522 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_il_2_v[] = { +#include "assets/field/bg/grd_s_il_2_v.inc" +}; + +extern Gfx grd_s_il_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_2_v[235], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 7, 9, 10, // tri2 + 7, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 10, // tri0 + 10, 12, 13, // tri1 + 12, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 16, 17, 15, // tri1 + 16, 18, 17, // tri2 + 17, 19, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 20, 19, // tri0 + 20, 21, 19, // tri1 + 20, 22, 21, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 11, // tri0 + 5, 24, 6, // tri1 + 5, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[267], 9, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 2, 7, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_2_v[313], 22, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 20, 21, 14 // tri3 + ), + gsSPNTriangles_5b( + 20, 14, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 8, 13, // tri1 + 14, 11, 15, // tri2 + 11, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 12, 6, 8, // tri0 + 9, 16, 10, // tri1 + 16, 17, 10, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[64], 18, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_2_v[82], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_2_v[86], 32, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 3, 10, // tri1 + 11, 12, 9, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[116], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 5, 7, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 5, 14, // tri0 + 15, 11, 16, // tri1 + 17, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 24, // tri0 + 18, 25, 26, // tri1 + 25, 23, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[147], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_il_2_v[160], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 10, 13, // tri1 + 10, 7, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 15, 14, // tri0 + 11, 16, 15, // tri1 + 11, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 24, 27, 25, // tri2 + 24, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 27, // tri0 + 28, 30, 29, // tri1 + 28, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[192], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 4, 6, 1, // tri1 + 4, 7, 6, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 8, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 9, 4, 11, // tri1 + 5, 15, 3, // tri2 + 5, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 5, 17, 16, // tri0 + 16, 18, 15, // tri1 + 18, 19, 15, // tri2 + 19, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 14, 13, // tri0 + 5, 20, 17, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 29, 25, // tri1 + 28, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_2_v[223], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 0, 6, // tri1 + 5, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_2_v[231], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_il_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_il_2_v[276], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 0, 3, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_il_2_v[282], 31, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 2, // tri0 + 5, 2, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 18, // tri0 + 13, 12, 20, // tri1 + 18, 13, 20, // tri2 + 19, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 19, 21, // tri1 + 23, 22, 21, // tri2 + 1, 0, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 1, 24, // tri0 + 26, 25, 24, // tri1 + 26, 24, 27, // tri2 + 28, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 29, // tri0 + 28, 29, 30, // tri1 + 23, 21, 1, // tri2 + 25, 23, 1 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_il_3/grd_s_il_3.c b/src/data/field/bg/acre/grd_s_il_3/grd_s_il_3.c new file mode 100644 index 00000000..d06a5751 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_il_3/grd_s_il_3.c @@ -0,0 +1,398 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_il_3_v[] = { +#include "assets/field/bg/grd_s_il_3_v.inc" +}; + +extern Gfx grd_s_il_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_3_v[142], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 5, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 2, // tri0 + 6, 4, 7, // tri1 + 6, 3, 4, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 1, 9, 2, // tri0 + 0, 10, 1, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 20, // tri0 + 21, 11, 20, // tri1 + 21, 12, 11, // tri2 + 12, 22, 13 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 13, // tri0 + 23, 24, 13, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_3_v[174], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 10, // tri0 + 11, 10, 12, // tri1 + 13, 11, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 14, // tri0 + 15, 14, 16, // tri1 + 15, 16, 17, // tri2 + 18, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 18, 19, 20, // tri1 + 21, 18, 20, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 27, // tri0 + 28, 26, 27, // tri1 + 28, 27, 29, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 31, 28, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_3_v[32], 13, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 5, // tri0 + 6, 3, 5, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 12, // tri0 + 8, 12, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_3_v[45], 13, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_3_v[58], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 0, // tri0 + 15, 16, 13, // tri1 + 7, 9, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 23, 24, // tri1 + 25, 22, 26, // tri2 + 18, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_il_3_v[88], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 9, // tri0 + 8, 12, 11, // tri1 + 8, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 15, 16, 14, // tri1 + 15, 2, 16, // tri2 + 15, 0, 2 // tri3 + ), + gsSPNTriangles_5b( + 0, 17, 1, // tri0 + 15, 18, 0, // tri1 + 18, 19, 0, // tri2 + 19, 20, 0 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 0, // tri0 + 21, 22, 0, // tri1 + 22, 17, 0, // tri2 + 18, 23, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 24, 23, // tri0 + 3, 25, 2, // tri1 + 3, 26, 25, // tri2 + 25, 27, 2 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 2, // tri0 + 27, 29, 28, // tri1 + 26, 30, 25, // tri2 + 30, 31, 25 // tri3 + ), + gsSPVertex(&grd_s_il_3_v[120], 10, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_3_v[130], 12, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 2, 7, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 0, 7, // tri0 + 5, 11, 6, // tri1 + 9, 10, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_il_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_il_3_v[182], 17, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 4, // tri0 + 5, 6, 1, // tri1 + 6, 2, 1, // tri2 + 6, 7, 2 // tri3 + ), + gsSPNTriangles_5b( + 8, 0, 9, // tri0 + 0, 2, 9, // tri1 + 7, 9, 2, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 4, 12, // tri0 + 4, 3, 12, // tri1 + 5, 4, 11, // tri2 + 13, 5, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 12, // tri0 + 14, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 13, 11 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_il_3_v[199], 28, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 0, 4, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 9, 11, 12, // tri1 + 13, 9, 12, // tri2 + 14, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 15, // tri0 + 16, 14, 15, // tri1 + 16, 15, 17, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 16, 17, // tri0 + 20, 17, 19, // tri1 + 20, 19, 21, // tri2 + 22, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 21, // tri0 + 23, 21, 24, // tri1 + 25, 23, 24, // tri2 + 25, 24, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 8, 25, 27, // tri1 + 8, 27, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_il_4/grd_s_il_4.c b/src/data/field/bg/acre/grd_s_il_4/grd_s_il_4.c new file mode 100644 index 00000000..59fa9eff --- /dev/null +++ b/src/data/field/bg/acre/grd_s_il_4/grd_s_il_4.c @@ -0,0 +1,393 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_il_4_v[] = { +#include "assets/field/bg/grd_s_il_4_v.inc" +}; + +extern Gfx grd_s_il_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_4_v[141], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 7, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 13, 10, // tri0 + 9, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 28, 29, 26, // tri1 + 26, 25, 28, // tri2 + 30, 25, 31 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_4_v[173], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_il_4_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 3, // tri0 + 5, 3, 6, // tri1 + 7, 5, 6, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 9, // tri0 + 10, 8, 9, // tri1 + 10, 9, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 14, 12, 13, // tri1 + 15, 14, 13, // tri2 + 16, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 13, // tri0 + 17, 13, 18, // tri1 + 19, 17, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 18, 21, // tri0 + 22, 20, 21, // tri1 + 22, 21, 23, // tri2 + 24, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 23, 25, // tri0 + 26, 24, 25, // tri1 + 27, 26, 25, // tri2 + 27, 25, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 28, // tri0 + 29, 28, 30, // tri1 + 31, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_4_v[32], 9, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 8, // tri2 + 4, 6, 8 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_4_v[41], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 7, 6, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_4_v[49], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 6, 7, 8, // tri1 + 8, 9, 10, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 12, 13, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 19, 23, 24, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 21, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_4_v[80], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_il_4_v[91], 32, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 7, // tri1 + 10, 11, 0, // tri2 + 11, 12, 0 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 0, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 20, 21, 19, // tri1 + 21, 22, 19, // tri2 + 22, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 14, 23, 15, // tri0 + 23, 24, 15, // tri1 + 23, 3, 24, // tri2 + 23, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 4, 6, 3, // tri0 + 9, 0, 2, // tri1 + 1, 25, 3, // tri2 + 25, 24, 3 // tri3 + ), + gsSPNTriangles_5b( + 1, 26, 25, // tri0 + 0, 13, 1, // tri1 + 9, 10, 0, // tri2 + 5, 27, 7 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 7, // tri0 + 28, 8, 7, // tri1 + 26, 20, 25, // tri2 + 1, 29, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 26, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_il_4_v[123], 10, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 6, 7, 0, // tri1 + 7, 8, 0, // tri2 + 8, 1, 0 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_il_4_v[133], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_il_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_il_4_v[176], 12, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 0, 6, 5, // tri1 + 0, 3, 6, // tri2 + 7, 3, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 3, // tri0 + 3, 9, 6, // tri1 + 9, 10, 6, // tri2 + 3, 2, 8 // tri3 + ), + gsSPNTriangles_5b( + 1, 11, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_il_4_v[188], 28, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 12, 7, 9, // tri1 + 13, 9, 10, // tri2 + 13, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 12, // tri0 + 14, 15, 12, // tri1 + 14, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 18, 17, // tri0 + 18, 19, 17, // tri1 + 18, 20, 19, // tri2 + 20, 2, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 0, 2, // tri0 + 16, 21, 18, // tri1 + 8, 22, 10, // tri2 + 8, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 22, // tri0 + 23, 25, 24, // tri1 + 25, 26, 24, // tri2 + 26, 27, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_ir_1/grd_s_ir_1.c b/src/data/field/bg/acre/grd_s_ir_1/grd_s_ir_1.c new file mode 100644 index 00000000..98d983be --- /dev/null +++ b/src/data/field/bg/acre/grd_s_ir_1/grd_s_ir_1.c @@ -0,0 +1,461 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_ir_1_v[] = { +#include "assets/field/bg/grd_s_ir_1_v.inc" +}; + +extern Gfx grd_s_ir_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_1_v[138], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 0, 11, 12, // tri0 + 0, 13, 11, // tri1 + 13, 14, 11, // tri2 + 0, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 19, 20, 17, // tri2 + 19, 4, 20 // tri3 + ), + gsSPNTriangles_5b( + 4, 3, 20, // tri0 + 17, 21, 18, // tri1 + 21, 22, 18, // tri2 + 22, 23, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 9, // tri0 + 14, 13, 9, // tri1 + 0, 2, 15, // tri2 + 12, 5, 0 // tri3 + ), + gsSPNTriangles_5b( + 2, 28, 15, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_1_v[170], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_1_v[210], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 6, // tri0 + 11, 12, 13, // tri1 + 11, 13, 7, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 22, // tri0 + 27, 28, 29, // tri1 + 27, 29, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_1_v[240], 24, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 5, 3, 6, // tri1 + 5, 6, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 11, 13, // tri1 + 12, 13, 14, // tri2 + 15, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 11, 12, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 17, // tri0 + 23, 20, 17, // tri1 + 23, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 2, 7, // tri1 + 6, 0, 2, // tri2 + 4, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 25, 24, // tri0 + 25, 26, 24, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 29, 28, // tri0 + 29, 30, 28, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_1_v[32], 11, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_1_v[43], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 4, // tri0 + 6, 5, 4, // tri1 + 7, 6, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_1_v[51], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_1_v[82], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_ir_1_v[89], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 3, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 2, 3, // tri0 + 0, 12, 1, // tri1 + 0, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 15, 16, 12, // tri1 + 16, 7, 12, // tri2 + 16, 17, 7 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 7, // tri0 + 17, 19, 18, // tri1 + 17, 20, 19, // tri2 + 18, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 21, 4, // tri0 + 20, 22, 19, // tri1 + 22, 23, 19, // tri2 + 5, 24, 7 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 25, 29, 26, // tri2 + 29, 30, 26 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_1_v[121], 10, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_1_v[131], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_ir_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_1_v[176], 10, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 0, 3, // tri0 + 6, 7, 4, // tri1 + 6, 4, 3, // tri2 + 2, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 3, 2, 9, // tri0 + 6, 3, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_ir_1_v[186], 24, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 11, 15, // tri1 + 17, 10, 11, // tri2 + 14, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 2, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_ir_2/grd_s_ir_2.c b/src/data/field/bg/acre/grd_s_ir_2/grd_s_ir_2.c new file mode 100644 index 00000000..f8c0956f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_ir_2/grd_s_ir_2.c @@ -0,0 +1,502 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_ir_2_v[] = { +#include "assets/field/bg/grd_s_ir_2_v.inc" +}; + +extern Gfx grd_s_ir_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_2_v[169], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 3, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 18, 10, 19, // tri1 + 10, 12, 19, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 21, 14, 18, // tri1 + 14, 16, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 22, 25, 23, // tri0 + 25, 26, 27, // tri1 + 27, 23, 25, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 26, // tri0 + 28, 17, 30, // tri1 + 28, 30, 29, // tri2 + 17, 15, 30 // tri3 + ), + gsSPNTriangles_5b( + 16, 31, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_2_v[201], 8, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_2_v[257], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 6, // tri0 + 11, 12, 13, // tri1 + 11, 13, 7, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 22, // tri0 + 27, 28, 29, // tri1 + 27, 29, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_2_v[287], 24, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 5, 3, 6, // tri1 + 5, 6, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 11, 13, // tri1 + 12, 13, 14, // tri2 + 15, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 11, 12, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 17, // tri0 + 23, 20, 17, // tri1 + 23, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 0, 1, 2, // tri1 + 3, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 2, 4, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6, // tri2 + 7, 3, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 7, 8, 9, // tri1 + 10, 7, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 13, 10, 12, // tri1 + 14, 13, 12, // tri2 + 14, 12, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 17, 16, 18, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 19, // tri0 + 20, 19, 21, // tri1 + 20, 21, 22, // tri2 + 23, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 24, // tri0 + 25, 23, 24, // tri1 + 25, 24, 26, // tri2 + 27, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 26, 28, // tri0 + 29, 27, 28, // tri1 + 29, 28, 30, // tri2 + 31, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_ir_2_v[32], 11, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 4, 7, // tri1 + 6, 3, 4, // tri2 + 5, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 5, 8, // tri0 + 9, 8, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_2_v[43], 14, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_2_v[57], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 16, 7, 17, // tri1 + 18, 19, 20, // tri2 + 21, 18, 22 // tri3 + ), + gsSPNTriangles_5b( + 19, 23, 24, // tri0 + 23, 25, 26, // tri1 + 27, 21, 28, // tri2 + 29, 30, 27 // tri3 + ), + gsSPVertex(&grd_s_ir_2_v[88], 20, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 8, 19, 9, // tri1 + 4, 14, 16, // tri2 + 12, 8, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_ir_2_v[108], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 10, 8, // tri2 + 10, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 15, 12, // tri1 + 14, 16, 15, // tri2 + 15, 17, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 12, // tri0 + 17, 18, 13, // tri1 + 16, 19, 15, // tri2 + 20, 21, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 21, 19, 16, // tri1 + 20, 23, 22, // tri2 + 20, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 20, 25, 24, // tri0 + 25, 26, 24, // tri1 + 25, 27, 26, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 31, 25, 30, // tri1 + 31, 27, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_2_v[140], 16, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 10, // tri0 + 12, 13, 10, // tri1 + 13, 14, 10, // tri2 + 14, 15, 10 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_2_v[156], 13, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 1, // tri0 + 6, 7, 1, // tri1 + 6, 5, 7, // tri2 + 4, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 8, // tri0 + 4, 10, 9, // tri1 + 11, 12, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_ir_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_ir_2_v[209], 19, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 1, 6, 7, // tri1 + 1, 0, 6, // tri2 + 0, 5, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 5, 10, 6, // tri1 + 5, 9, 10, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 12, 11, // tri0 + 8, 4, 13, // tri1 + 14, 8, 13, // tri2 + 8, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 15, 16, 12, // tri1 + 14, 13, 17, // tri2 + 15, 14, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 15, 17, // tri0 + 8, 5, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_ir_2_v[228], 29, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 3, // tri0 + 6, 5, 3, // tri1 + 6, 3, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 7, 10, // tri1 + 11, 9, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 11, 13, // tri1 + 14, 13, 15, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 17, // tri0 + 18, 14, 17, // tri1 + 19, 18, 17, // tri2 + 20, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 21, 22, // tri0 + 17, 16, 22, // tri1 + 17, 22, 23, // tri2 + 20, 17, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 20, 23, // tri0 + 24, 23, 25, // tri1 + 26, 27, 28, // tri2 + 28, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_ir_3/grd_s_ir_3.c b/src/data/field/bg/acre/grd_s_ir_3/grd_s_ir_3.c new file mode 100644 index 00000000..0ca6c737 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_ir_3/grd_s_ir_3.c @@ -0,0 +1,540 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_ir_3_v[] = { +#include "assets/field/bg/grd_s_ir_3_v.inc" +}; + +extern Gfx grd_s_ir_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_3_v[179], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 15, 2, 14, // tri1 + 15, 0, 2, // tri2 + 1, 16, 3 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 3, // tri0 + 16, 10, 17, // tri1 + 10, 18, 17, // tri2 + 16, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 19, 10, // tri0 + 19, 18, 10, // tri1 + 19, 20, 18, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 22, 24, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 25, // tri0 + 26, 27, 25, // tri1 + 26, 28, 27, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[211], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 5, 7, 6, // tri1 + 5, 8, 7, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_3_v[263], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 8, 11, // tri1 + 12, 11, 13, // tri2 + 14, 15, 8 // tri3 + ), + gsSPNTriangles_5b( + 14, 8, 12, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 17, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 17, 21, 18, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 23, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 23, 27, 24, // tri0 + 28, 29, 30, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[295], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 11, 9, 12, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 19, 15, // tri1 + 18, 15, 14, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 15, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 26, 22, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 27, // tri0 + 27, 25, 28, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[325], 16, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 7, 0, 3, // tri1 + 7, 3, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 9, // tri2 + 15, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 15, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 12, 10, 11, // tri1 + 13, 12, 11, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 14, // tri0 + 16, 15, 14, // tri1 + 16, 14, 17, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 16, 18, // tri0 + 20, 19, 18, // tri1 + 20, 18, 21, // tri2 + 22, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 21, // tri0 + 23, 21, 24, // tri1 + 25, 23, 24, // tri2 + 26, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 26, 24, // tri0 + 27, 24, 28, // tri1 + 29, 27, 28, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b( + 31, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 10, 11, 12, // tri1 + 13, 10, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 19, 17, 18, // tri2 + 19, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 19, 20, // tri0 + 21, 20, 22, // tri1 + 23, 21, 22, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 24, // tri0 + 25, 24, 26, // tri1 + 27, 25, 26, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 28, // tri0 + 29, 28, 30, // tri1 + 31, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[64], 8, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_3_v[72], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_3_v[76], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 0, 9, 12, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b( + 7, 13, 8, // tri0 + 14, 8, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 23, 24, // tri1 + 25, 22, 26, // tri2 + 18, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[106], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 13, // tri2 + 12, 5, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_ir_3_v[121], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 8, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 9, // tri0 + 12, 14, 13, // tri1 + 11, 15, 12, // tri2 + 15, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 16, 18, 17, // tri1 + 17, 19, 12, // tri2 + 19, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 20, 15, // tri0 + 16, 21, 18, // tri1 + 16, 22, 21, // tri2 + 16, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 10, 24, 25, // tri0 + 24, 6, 25, // tri1 + 24, 26, 6, // tri2 + 26, 27, 6 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 6, // tri0 + 28, 29, 6, // tri1 + 29, 30, 6, // tri2 + 30, 5, 6 // tri3 + ), + gsSPNTriangles_5b( + 5, 31, 3, // tri0 + 4, 25, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_3_v[153], 22, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 6, 7, 3, // tri2 + 2, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 8, 11, 10, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 16, 17, 14, // tri1 + 17, 18, 14, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_3_v[175], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_ir_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_ir_3_v[228], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_ir_3_v[234], 29, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 8, 11, 12, // tri1 + 7, 8, 12, // tri2 + 9, 7, 12 // tri3 + ), + gsSPNTriangles_5b( + 9, 12, 11, // tri0 + 13, 9, 14, // tri1 + 9, 11, 14, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 11, 17, 18, // tri1 + 14, 11, 18, // tri2 + 19, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 15, 20, // tri0 + 21, 19, 20, // tri1 + 22, 21, 20, // tri2 + 22, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 18, 23, // tri0 + 18, 17, 23, // tri1 + 24, 22, 23, // tri2 + 24, 23, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 24, 25, 26, // tri1 + 24, 26, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_ir_4/grd_s_ir_4.c b/src/data/field/bg/acre/grd_s_ir_4/grd_s_ir_4.c new file mode 100644 index 00000000..e7cfa32d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_ir_4/grd_s_ir_4.c @@ -0,0 +1,466 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_ir_4_v[] = { +#include "assets/field/bg/grd_s_ir_4_v.inc" +}; + +extern Gfx grd_s_ir_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_4_v[160], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 1, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 9, 11, 7, // tri2 + 10, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 17, 19, 16, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 21, 20, // tri0 + 15, 22, 18, // tri1 + 18, 23, 17, // tri2 + 23, 24, 17 // tri3 + ), + gsSPNTriangles_5b( + 24, 21, 17, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 28, 29, 27, // tri1 + 28, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_4_v[191], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_ir_4_v[229], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 6, // tri0 + 11, 12, 13, // tri1 + 11, 13, 7, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 22, // tri0 + 27, 28, 29, // tri1 + 27, 29, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_4_v[259], 24, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 5, 3, 6, // tri1 + 5, 6, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 11, // tri0 + 12, 11, 13, // tri1 + 12, 13, 14, // tri2 + 15, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 11, 12, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 17, // tri0 + 23, 20, 17, // tri1 + 23, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_4_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 10, 8, 9, // tri1 + 10, 9, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 14, 12, 13, // tri1 + 15, 14, 13, // tri2 + 16, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 16, 17, // tri1 + 18, 17, 19, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 21, // tri0 + 22, 20, 21, // tri1 + 23, 22, 21, // tri2 + 23, 21, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 24, // tri0 + 26, 25, 24, // tri1 + 26, 24, 27, // tri2 + 28, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 28, 27, // tri0 + 30, 29, 27, // tri1 + 30, 27, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_4_v[32], 22, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 7, 6, 4, // tri2 + 7, 4, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 11, // tri0 + 13, 11, 14, // tri1 + 15, 13, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 16, // tri0 + 17, 16, 18, // tri1 + 19, 17, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_4_v[54], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_4_v[59], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 1, 10, 11, // tri1 + 10, 8, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 16, 14, // tri0 + 16, 17, 14, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 15, 21, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_4_v[90], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 6, 0, 2, // tri0 + 7, 8, 9, // tri1 + 10, 7, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_ir_4_v[102], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 7, 9, 6, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 7, 12, 11, // tri1 + 7, 2, 12, // tri2 + 2, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 2, 14, 13, // tri0 + 2, 15, 14, // tri1 + 2, 3, 15, // tri2 + 8, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 8, 18, 16, // tri0 + 8, 17, 5, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 24, 25, 22, // tri2 + 25, 26, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 24, 28, 27, // tri1 + 24, 29, 28, // tri2 + 27, 30, 25 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_ir_4_v[134], 22, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 8, // tri0 + 11, 12, 8, // tri1 + 12, 13, 8, // tri2 + 13, 14, 8 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 8, // tri0 + 15, 16, 8, // tri1 + 16, 9, 8, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_ir_4_v[156], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_ir_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_ir_4_v[195], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_ir_4_v[201], 28, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 3, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 3, 9, 4, // tri2 + 3, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 10, 7, 11, // tri1 + 7, 8, 11, // tri2 + 6, 12, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 15, 20, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 16, // tri0 + 21, 19, 16, // tri1 + 15, 22, 20, // tri2 + 21, 23, 19 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 19, // tri0 + 23, 25, 24, // tri1 + 25, 26, 24, // tri2 + 26, 27, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_1/grd_s_m_1.c b/src/data/field/bg/acre/grd_s_m_1/grd_s_m_1.c new file mode 100644 index 00000000..6bb49a8c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_1/grd_s_m_1.c @@ -0,0 +1,399 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_1_v[] = { +#include "assets/field/bg/grd_s_m_1_v.inc" +}; + +extern Gfx grd_s_m_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_1_v[134], 27, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 6, 7, 2, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 15, 16, 14, // tri2 + 15, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 12, // tri0 + 18, 17, 12, // tri1 + 18, 12, 11, // tri2 + 18, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 9, // tri0 + 19, 9, 8, // tri1 + 20, 19, 8, // tri2 + 21, 20, 8 // tri3 + ), + gsSPNTriangles_5b( + 21, 8, 6, // tri0 + 22, 21, 6, // tri1 + 22, 6, 5, // tri2 + 23, 4, 1 // tri3 + ), + gsSPNTriangles_5b( + 23, 1, 3, // tri0 + 24, 22, 5, // tri1 + 24, 5, 4, // tri2 + 25, 24, 4 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 4, // tri0 + 26, 23, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_1_v[0], 25, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 5, 6, 4, // tri1 + 0, 7, 1, // tri2 + 8, 9, 1 // tri3 + ), + gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 10, 11, 9, // tri1 + 9, 8, 10, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 12, // tri0 + 12, 14, 13, // tri1 + 15, 16, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 16, 15, 17, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_1_v[25], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 5, 7, 6, // tri2 + 3, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 11, 12, 13, // tri1 + 11, 14, 12, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 16, 14, // tri0 + 11, 17, 16, // tri1 + 17, 18, 16, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 20, 21, 18, // tri1 + 19, 22, 20, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 6, 28, 29, // tri0 + 6, 21, 28, // tri1 + 6, 7, 21, // tri2 + 7, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 25, 30, 23, // tri0 + 25, 31, 30, // tri1 + 31, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_1_v[57], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 6, // tri0 + 4, 3, 8, // tri1 + 6, 5, 16, // tri2 + 13, 12, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 17, 19, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 24, // tri0 + 28, 29, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_1_v[87], 22, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 2, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 11, 15, // tri0 + 18, 16, 19, // tri1 + 20, 19, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_1_v[109], 25, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 23, 24, 21 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_1_v[161], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 9, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 11, 13, // tri1 + 14, 13, 15, // tri2 + 16, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 15, // tri0 + 17, 15, 18, // tri1 + 17, 18, 19, // tri2 + 20, 17, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 1, 22, 23, // tri1 + 2, 1, 23, // tri2 + 5, 2, 23 // tri3 + ), + gsSPNTriangles_5b( + 5, 23, 24, // tri0 + 5, 24, 25, // tri1 + 6, 5, 25, // tri2 + 6, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 6, 26, 27, // tri0 + 8, 6, 27, // tri1 + 10, 8, 27, // tri2 + 10, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 12, 10, 28, // tri0 + 12, 28, 29, // tri1 + 12, 29, 30, // tri2 + 13, 12, 30 // tri3 + ), + gsSPNTriangles_5b( + 13, 30, 31, // tri0 + 15, 13, 31, // tri1 + 18, 15, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_1_v[193], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 5, 4, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_1_v[200], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 6, 3, 4, // tri1 + 7, 6, 5, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 10, 11, 9, // tri1 + 11, 8, 9, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 14, 13, 12, // tri1 + 15, 16, 14, // tri2 + 16, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 15, // tri0 + 17, 18, 16, // tri1 + 19, 18, 17, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 22, 23, 21, // tri1 + 23, 20, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_10/grd_s_m_10.c b/src/data/field/bg/acre/grd_s_m_10/grd_s_m_10.c new file mode 100644 index 00000000..d9a635ae --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_10/grd_s_m_10.c @@ -0,0 +1,403 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_10_v[] = { +#include "assets/field/bg/grd_s_m_10_v.inc" +}; + +extern Gfx grd_s_m_10_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_10_v[147], 25, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 1, 20, 3 // tri3 + ), + gsSPNTriangles_5b( + 20, 5, 3, // tri0 + 20, 21, 5, // tri1 + 21, 7, 5, // tri2 + 21, 22, 7 // tri3 + ), + gsSPNTriangles_5b( + 22, 9, 7, // tri0 + 22, 12, 9, // tri1 + 22, 23, 12, // tri2 + 23, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 14, // tri0 + 24, 16, 14, // tri1 + 24, 18, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_10_v[134], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_10_v[0], 21, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 4, 6, 7, // tri1 + 4, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 13, 15, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 18, 19, 20, // tri1 + 19, 1, 20, // tri2 + 1, 0, 20 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_10_v[21], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 14, 18, 15, // tri1 + 19, 20, 17, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 25, 26, 24, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_10_v[52], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 7, 2, 4, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 10, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_10_v[66], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 6, 9, 8, // tri1 + 6, 10, 9, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 9, // tri0 + 12, 13, 9, // tri1 + 11, 14, 12, // tri2 + 11, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 15, 17, 16, // tri1 + 15, 18, 17, // tri2 + 8, 19, 7 // tri3 + ), + gsSPNTriangles_5b( + 19, 2, 7, // tri0 + 1, 0, 20, // tri1 + 5, 21, 3, // tri2 + 21, 22, 3 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 24, 25, 22, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 20, 27, // tri0 + 26, 29, 20, // tri1 + 20, 13, 27, // tri2 + 13, 12, 27 // tri3 + ), + gsSPNTriangles_5b( + 20, 0, 13, // tri0 + 6, 4, 30, // tri1 + 4, 3, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_10_v[97], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_10_v[101], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_10_v[114], 20, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_10_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_10_v[172], 29, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 9, 8, 10, // tri1 + 11, 9, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 12, // tri0 + 13, 12, 14, // tri1 + 13, 14, 15, // tri2 + 16, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 19, 17, // tri1 + 19, 16, 17, // tri2 + 2, 1, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 2, 20, // tri0 + 4, 2, 21, // tri1 + 7, 4, 21, // tri2 + 7, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 7, 22, // tri0 + 23, 8, 7, // tri1 + 24, 8, 23, // tri2 + 24, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 25, 12, 24, // tri0 + 12, 10, 24, // tri1 + 18, 17, 26, // tri2 + 26, 17, 27 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 27, // tri0 + 27, 15, 28, // tri1 + 15, 14, 28, // tri2 + 14, 25, 28 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_10_v[201], 22, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 3, // tri0 + 6, 4, 3, // tri1 + 1, 7, 2, // tri2 + 1, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 15, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_2/grd_s_m_2.c b/src/data/field/bg/acre/grd_s_m_2/grd_s_m_2.c new file mode 100644 index 00000000..f8f41a52 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_2/grd_s_m_2.c @@ -0,0 +1,412 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_2_v[] = { +#include "assets/field/bg/grd_s_m_2_v.inc" +}; + +extern Gfx grd_s_m_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_2_v[163], 27, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 0, 4, 5, // tri0 + 6, 0, 5, // tri1 + 6, 5, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 9, 10, 11, // tri1 + 9, 8, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 9, 12, // tri0 + 14, 13, 12, // tri1 + 2, 15, 16, // tri2 + 3, 2, 16 // tri3 + ), + gsSPNTriangles_5b( + 3, 16, 17, // tri0 + 4, 3, 17, // tri1 + 4, 17, 18, // tri2 + 11, 10, 19 // tri3 + ), + gsSPNTriangles_5b( + 11, 19, 20, // tri0 + 11, 20, 21, // tri1 + 12, 11, 21, // tri2 + 12, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 14, 12, 22, // tri0 + 23, 14, 22, // tri1 + 4, 24, 25, // tri2 + 4, 18, 24 // tri3 + ), + gsSPNTriangles_5b( + 18, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_2_v[148], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 13, // tri2 + 12, 7, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_2_v[0], 19, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 3, 5, 4, // tri1 + 7, 8, 6, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 8, 7, 9, // tri1 + 11, 12, 10, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 15, 16, 14, // tri1 + 14, 13, 15, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_2_v[19], 19, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 7, // tri1 + 7, 5, 8, // tri2 + 4, 3, 5 // tri3 + ), + gsSPNTriangles_5b( + 2, 3, 0, // tri0 + 10, 11, 12, // tri1 + 12, 13, 14, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 13, // tri0 + 15, 17, 16, // tri1 + 12, 18, 10, // tri2 + 14, 18, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_2_v[38], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 0, 6, 1, // tri0 + 9, 10, 11, // tri1 + 10, 0, 2, // tri2 + 12, 3, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 3, 14, 4, // tri1 + 14, 15, 16, // tri2 + 17, 9, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 19, 23, // tri1 + 24, 25, 26, // tri2 + 20, 24, 27 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_2_v[70], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 9, 10, 8, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 10, 12, 2, // tri1 + 10, 11, 12, // tri2 + 10, 1, 4 // tri3 + ), + gsSPNTriangles_5b( + 4, 8, 10, // tri0 + 9, 13, 11, // tri1 + 14, 15, 0, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 17, // tri0 + 15, 16, 18, // tri1 + 18, 19, 15, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 22, // tri0 + 26, 24, 22, // tri1 + 25, 27, 26, // tri2 + 28, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 17, 29, 28, // tri0 + 29, 30, 28, // tri1 + 30, 31, 28, // tri2 + 31, 27, 28 // tri3 + ), + gsSPVertex(&grd_s_m_2_v[102], 12, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 3, 7, 6, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 7, 10, // tri1 + 10, 7, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_2_v[114], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 1, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_2_v[129], 19, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 10, 11, 12, // tri1 + 10, 12, 13, // tri2 + 14, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 16, 14, 15, // tri1 + 17, 16, 15, // tri2 + 18, 17, 15 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_2_v[190], 27, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 2, // tri0 + 5, 6, 2, // tri1 + 3, 4, 7, // tri2 + 5, 3, 7 // tri3 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 5, 8, // tri1 + 5, 9, 6, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 11, 9, 8, // tri1 + 12, 11, 8, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 13, 16, 17, // tri1 + 13, 17, 18, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 20, 19, // tri0 + 20, 16, 15, // tri1 + 20, 15, 21, // tri2 + 22, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 20, 23, 19, // tri1 + 22, 24, 23, // tri2 + 22, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 25, 22, // tri0 + 26, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_2_v[217], 26, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 5, 9, 7, // tri0 + 7, 10, 8, // tri1 + 7, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 19, // tri1 + 16, 20, 18, // tri2 + 16, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 16, 22, 21, // tri0 + 20, 23, 18, // tri1 + 20, 24, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_3/grd_s_m_3.c b/src/data/field/bg/acre/grd_s_m_3/grd_s_m_3.c new file mode 100644 index 00000000..59dc848c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_3/grd_s_m_3.c @@ -0,0 +1,374 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_3_v[] = { +#include "assets/field/bg/grd_s_m_3_v.inc" +}; + +extern Gfx grd_s_m_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_3_v[153], 27, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 5, 6, 2, // tri1 + 7, 8, 9, // tri2 + 7, 4, 8 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 10, 11, 9, // tri1 + 11, 12, 9, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 14, 13, 15, // tri1 + 13, 11, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 20, 18, // tri0 + 18, 21, 19, // tri1 + 20, 22, 18, // tri2 + 20, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 0, 23, // tri0 + 0, 24, 23, // tri1 + 0, 2, 24, // tri2 + 2, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 2, 6, 25, // tri0 + 6, 26, 25, // tri1 + 0, 20, 4, // tri2 + 20, 17, 4 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_3_v[0], 25, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 8, 7, 9, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 8, 10, // tri0 + 11, 10, 12, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 16, 14, 15, // tri1 + 16, 15, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 18, 20, // tri0 + 22, 21, 20, // tri1 + 19, 18, 23, // tri2 + 17, 19, 23 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 23, // tri0 + 3, 4, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_3_v[25], 17, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 0, // tri0 + 12, 1, 0, // tri1 + 13, 12, 14, // tri2 + 12, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 5, 15, 6, // tri0 + 15, 16, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_3_v[42], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 6, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 14, 16, 17, // tri1 + 18, 19, 20, // tri2 + 21, 18, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 21, 26, // tri1 + 27, 28, 29, // tri2 + 28, 23, 30 // tri3 + ), + gsSPVertex(&grd_s_m_3_v[73], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_3_v[87], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 5, 11, 2, // tri0 + 2, 12, 13, // tri1 + 2, 14, 12, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 1, 0, 16, // tri0 + 0, 10, 16, // tri1 + 6, 17, 7, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 20, 23, 18, // tri2 + 24, 6, 25 // tri3 + ), + gsSPNTriangles_5b( + 6, 8, 25, // tri0 + 26, 27, 17, // tri1 + 27, 7, 17, // tri2 + 9, 7, 28 // tri3 + ), + gsSPNTriangles_5b( + 15, 29, 13, // tri0 + 29, 25, 13, // tri1 + 29, 24, 25, // tri2 + 11, 14, 2 // tri3 + ), + gsSPVertex(&grd_s_m_3_v[117], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 3, 4, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17, // tri2 + 18, 0, 17 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_3_v[136], 17, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 4, 16, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_3_v[180], 24, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 1, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 11, 12, // tri0 + 13, 1, 12, // tri1 + 13, 12, 14, // tri2 + 5, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 3, 5, 14, // tri0 + 15, 16, 17, // tri1 + 15, 17, 18, // tri2 + 19, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 17, // tri0 + 4, 21, 5, // tri1 + 21, 2, 5, // tri2 + 2, 13, 5 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 13, // tri0 + 0, 10, 1, // tri1 + 0, 22, 10, // tri2 + 22, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 9, // tri0 + 23, 6, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_3_v[204], 26, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 3, 6, 4, // tri1 + 3, 7, 6, // tri2 + 3, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 5, // tri0 + 10, 2, 5, // tri1 + 11, 12, 9, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 11, // tri0 + 14, 12, 13, // tri1 + 14, 15, 12, // tri2 + 8, 16, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 20, 23, 21, // tri1 + 20, 24, 23, // tri2 + 20, 25, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_4/grd_s_m_4.c b/src/data/field/bg/acre/grd_s_m_4/grd_s_m_4.c new file mode 100644 index 00000000..f6b47569 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_4/grd_s_m_4.c @@ -0,0 +1,389 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_4_v[] = { +#include "assets/field/bg/grd_s_m_4_v.inc" +}; + +extern Gfx grd_s_m_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_4_v[116], 26, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 5, // tri0 + 6, 3, 5, // tri1 + 6, 5, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 10, 9, 8, // tri1 + 5, 4, 11, // tri2 + 5, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 7, 5, 12, // tri0 + 7, 12, 13, // tri1 + 8, 7, 13, // tri2 + 8, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 8, 14, 15, // tri0 + 10, 8, 15, // tri1 + 16, 10, 15, // tri2 + 2, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 2, 18, 19, // tri0 + 4, 2, 19, // tri1 + 4, 19, 20, // tri2 + 4, 20, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 21, 22, // tri0 + 1, 22, 23, // tri1 + 2, 1, 23, // tri2 + 2, 23, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 22, // tri0 + 25, 21, 1, // tri1 + 0, 25, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_4_v[103], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_4_v[0], 20, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 3, 4, // tri0 + 5, 6, 7, // tri1 + 5, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 9, 11, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 13, 15, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 16, 18, // tri1 + 16, 19, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_4_v[20], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_4_v[37], 31, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 5, 9, 8, // tri2 + 10, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 5, 11, 9, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 5, 17, 11, // tri2 + 5, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 22, // tri0 + 16, 25, 24, // tri1 + 25, 22, 24, // tri2 + 16, 14, 25 // tri3 + ), + gsSPNTriangles_5b( + 6, 26, 4, // tri0 + 26, 27, 4, // tri1 + 26, 28, 27, // tri2 + 28, 3, 27 // tri3 + ), + gsSPNTriangles_5b( + 10, 29, 7, // tri0 + 10, 0, 29, // tri1 + 0, 2, 29, // tri2 + 3, 28, 2 // tri3 + ), + gsSPNTriangles_5b( + 1, 30, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_4_v[68], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_4_v[81], 22, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 11, // tri0 + 13, 11, 14, // tri1 + 15, 13, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 16, // tri0 + 18, 19, 17, // tri1 + 18, 17, 16, // tri2 + 20, 21, 2 // tri3 + ), + gsSPNTriangles_5b( + 1, 20, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_4_v[142], 32, 0), + gsSPNTrianglesInit_5b( + 41, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 8, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 13, // tri0 + 14, 12, 13, // tri1 + 15, 14, 13, // tri2 + 15, 13, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 16, // tri0 + 17, 16, 18, // tri1 + 19, 17, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 20, // tri0 + 21, 20, 18, // tri1 + 20, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 0, 26, // tri0 + 25, 1, 0, // tri1 + 0, 5, 26, // tri2 + 5, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 5, 6, 27, // tri0 + 6, 28, 27, // tri1 + 6, 9, 28, // tri2 + 9, 10, 28 // tri3 + ), + gsSPNTriangles_5b( + 10, 29, 28, // tri0 + 10, 12, 29, // tri1 + 12, 14, 29, // tri2 + 14, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 14, 31, 30, // tri0 + 14, 15, 31, // tri1 + 15, 17, 31, // tri2 + 17, 23, 31 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 23, // tri0 + 19, 20, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_4_v[174], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_5/grd_s_m_5.c b/src/data/field/bg/acre/grd_s_m_5/grd_s_m_5.c new file mode 100644 index 00000000..eebba30a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_5/grd_s_m_5.c @@ -0,0 +1,426 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_5_v[] = { +#include "assets/field/bg/grd_s_m_5_v.inc" +}; + +extern Gfx grd_s_m_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_5_v[178], 26, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 9, // tri0 + 14, 10, 8, // tri1 + 15, 16, 14, // tri2 + 15, 14, 8 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 8, // tri0 + 17, 8, 7, // tri1 + 18, 17, 7, // tri2 + 19, 18, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 19, 7, // tri0 + 3, 20, 21, // tri1 + 3, 21, 22, // tri2 + 3, 22, 1 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 23, // tri0 + 12, 23, 24, // tri1 + 25, 12, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_5_v[165], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_5_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 14, 15, 12, // tri2 + 15, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 22, 23, 0 // tri3 + ), + gsSPNTriangles_5b( + 23, 1, 0, // tri0 + 13, 24, 11, // tri1 + 24, 25, 11, // tri2 + 26, 27, 9 // tri3 + ), + gsSPNTriangles_5b( + 27, 10, 9, // tri0 + 6, 15, 7, // tri1 + 6, 16, 15, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 28, 5, 29, // tri0 + 5, 4, 29, // tri1 + 22, 31, 23, // tri2 + 22, 21, 31 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_5_v[32], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_5_v[36], 16, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 13, // tri0 + 13, 0, 14, // tri1 + 13, 1, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_5_v[52], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 0, 6, 1, // tri0 + 9, 10, 11, // tri1 + 10, 0, 2, // tri2 + 12, 3, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 12, 13, // tri0 + 3, 14, 4, // tri1 + 14, 15, 16, // tri2 + 17, 9, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 19, 23, // tri1 + 20, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 29, 22, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_5_v[84], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 0, 7, 1, // tri1 + 7, 5, 1, // tri2 + 4, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 8, 10, 9, // tri1 + 11, 9, 10, // tri2 + 1, 12, 3 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 18, 12, 17 // tri3 + ), + gsSPNTriangles_5b( + 12, 16, 17, // tri0 + 18, 3, 12, // tri1 + 13, 15, 19, // tri2 + 15, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 20, // tri0 + 21, 23, 22, // tri1 + 21, 24, 23, // tri2 + 22, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 16, 25, 15, // tri0 + 25, 26, 15, // tri1 + 25, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 28, // tri0 + 29, 30, 28, // tri1 + 24, 31, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_5_v[116], 20, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 1, 7, 4, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 4, // tri0 + 9, 10, 4, // tri1 + 10, 11, 4, // tri2 + 11, 5, 4 // tri3 + ), + gsSPNTriangles_5b( + 5, 12, 6, // tri0 + 13, 14, 15, // tri1 + 16, 17, 14, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 14, // tri0 + 18, 19, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_5_v[136], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_5_v[149], 16, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 7, 6, 8, // tri1 + 9, 7, 8, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_5_v[204], 24, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 4, 7, 8, // tri1 + 9, 4, 8, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 8, // tri0 + 12, 13, 14, // tri1 + 15, 12, 14, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 14, // tri0 + 18, 8, 19, // tri1 + 8, 7, 19, // tri2 + 7, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 20, // tri0 + 6, 21, 20, // tri1 + 18, 11, 8, // tri2 + 22, 3, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 0, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_5_v[228], 28, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 8, 13, // tri1 + 6, 14, 7, // tri2 + 14, 15, 7 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 11, // tri0 + 17, 12, 11, // tri1 + 18, 17, 16, // tri2 + 19, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 17, // tri0 + 20, 21, 17, // tri1 + 14, 5, 15, // tri2 + 14, 2, 5 // tri3 + ), + gsSPNTriangles_5b( + 1, 22, 4, // tri0 + 1, 23, 22, // tri1 + 23, 24, 22, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 24, // tri0 + 23, 27, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_6/grd_s_m_6.c b/src/data/field/bg/acre/grd_s_m_6/grd_s_m_6.c new file mode 100644 index 00000000..9bbd9b32 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_6/grd_s_m_6.c @@ -0,0 +1,410 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_6_v[] = { +#include "assets/field/bg/grd_s_m_6_v.inc" +}; + +extern Gfx grd_s_m_6_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_6_v[164], 30, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 1, // tri0 + 6, 5, 4, // tri1 + 6, 7, 5, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 9, 7, 6, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 14, // tri0 + 16, 17, 8, // tri1 + 17, 18, 8, // tri2 + 18, 19, 8 // tri3 + ), + gsSPNTriangles_5b( + 19, 10, 8, // tri0 + 3, 20, 1, // tri1 + 20, 21, 1, // tri2 + 21, 4, 1 // tri3 + ), + gsSPNTriangles_5b( + 21, 6, 4, // tri0 + 21, 22, 6, // tri1 + 22, 8, 6, // tri2 + 22, 16, 8 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 16, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 15, 25 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 15, // tri0 + 26, 14, 15, // tri1 + 18, 27, 19, // tri2 + 27, 28, 19 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_6_v[0], 25, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 11, 12, 9, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 2, 23, // tri2 + 24, 0, 2 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_6_v[25], 17, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 11, 0, 2, // tri2 + 11, 12, 0 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_6_v[42], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 20, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 14, 26, // tri0 + 27, 28, 29, // tri1 + 30, 17, 31, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_m_6_v[74], 19, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 0, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 9, 16, 17, // tri0 + 16, 14, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_6_v[93], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 13, // tri0 + 14, 13, 15, // tri1 + 16, 17, 1, // tri2 + 1, 17, 3 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 20, 21, 19, // tri1 + 21, 20, 22, // tri2 + 21, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 21, // tri0 + 23, 21, 26, // tri1 + 22, 26, 21, // tri2 + 3, 17, 27 // tri3 + ), + gsSPNTriangles_5b( + 17, 25, 28, // tri0 + 28, 27, 17, // tri1 + 29, 7, 9, // tri2 + 12, 30, 6 // tri3 + ), + gsSPNTriangles_5b( + 30, 4, 6, // tri0 + 13, 31, 11, // tri1 + 13, 14, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_6_v[125], 21, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 6, // tri0 + 8, 9, 10, // tri1 + 10, 9, 11, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 14, // tri0 + 15, 16, 17, // tri1 + 17, 18, 19, // tri2 + 19, 18, 0 // tri3 + ), + gsSPNTriangles_5b( + 18, 1, 0, // tri0 + 15, 17, 19, // tri1 + 20, 5, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_6_v[146], 18, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_6_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_6_v[194], 27, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 9, // tri0 + 10, 8, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 11, 13, // tri1 + 15, 16, 17, // tri2 + 18, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 19, // tri0 + 15, 19, 20, // tri1 + 11, 14, 21, // tri2 + 11, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 22, // tri0 + 10, 22, 23, // tri1 + 8, 10, 23, // tri2 + 8, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 24, // tri0 + 7, 24, 25, // tri1 + 4, 7, 25, // tri2 + 3, 4, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 0, 3, // tri0 + 26, 3, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_6_v[221], 26, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 3, // tri0 + 3, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 12, 16, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_7/grd_s_m_7.c b/src/data/field/bg/acre/grd_s_m_7/grd_s_m_7.c new file mode 100644 index 00000000..b4e114a8 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_7/grd_s_m_7.c @@ -0,0 +1,383 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_7_v[] = { +#include "assets/field/bg/grd_s_m_7_v.inc" +}; + +extern Gfx grd_s_m_7_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_7_v[123], 23, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 1, 4, 7, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 8, // tri0 + 4, 6, 9, // tri1 + 3, 10, 11, // tri2 + 3, 1, 10 // tri3 + ), + gsSPNTriangles_5b( + 1, 7, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 11, 17, // tri1 + 16, 3, 11, // tri2 + 6, 18, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 19, 18, // tri0 + 6, 20, 19, // tri1 + 13, 21, 15, // tri2 + 21, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 16, // tri0 + 22, 3, 16, // tri1 + 22, 2, 3, // tri2 + 5, 20, 6 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_7_v[110], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_7_v[0], 23, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 8, // tri0 + 12, 2, 13, // tri1 + 12, 14, 2, // tri2 + 14, 0, 2 // tri3 + ), + gsSPNTriangles_5b( + 0, 15, 3, // tri0 + 15, 16, 3, // tri1 + 16, 17, 3, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 7, 18, // tri0 + 7, 4, 18, // tri1 + 10, 19, 11, // tri2 + 19, 20, 11 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_7_v[23], 21, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 7, 6, // tri1 + 10, 9, 11, // tri2 + 12, 13, 0 // tri3 + ), + gsSPNTriangles_5b( + 8, 14, 15, // tri0 + 7, 14, 8, // tri1 + 14, 16, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 20, // tri0 + 19, 13, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_7_v[44], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 9, 11, // tri0 + 14, 10, 15, // tri1 + 10, 16, 15, // tri2 + 12, 10, 17 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 17, // tri0 + 18, 19, 1, // tri1 + 19, 2, 1, // tri2 + 19, 20, 2 // tri3 + ), + gsSPNTriangles_5b( + 4, 21, 3, // tri0 + 4, 22, 21, // tri1 + 18, 23, 19, // tri2 + 18, 24, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 23, // tri0 + 24, 26, 25, // tri1 + 26, 11, 25, // tri2 + 26, 27, 11 // tri3 + ), + gsSPNTriangles_5b( + 27, 13, 11, // tri0 + 27, 28, 13, // tri1 + 3, 28, 1, // tri2 + 29, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 5, // tri0 + 30, 16, 5, // tri1 + 30, 15, 16, // tri2 + 10, 9, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 31, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_7_v[76], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_7_v[89], 21, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_7_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_7_v[146], 31, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 12, // tri0 + 13, 12, 14, // tri1 + 15, 13, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 15, 16, // tri0 + 17, 16, 18, // tri1 + 19, 17, 18, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 17, // tri0 + 21, 22, 17, // tri1 + 23, 17, 22, // tri2 + 23, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 24, 13, 23, // tri0 + 13, 15, 23, // tri1 + 13, 25, 11, // tri2 + 13, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 11, 25, // tri0 + 26, 8, 11, // tri1 + 27, 6, 26, // tri2 + 6, 8, 26 // tri3 + ), + gsSPNTriangles_5b( + 0, 28, 1, // tri0 + 0, 29, 28, // tri1 + 0, 4, 29, // tri2 + 4, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 4, 6, 30, // tri0 + 30, 6, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_7_v[177], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 5, 4, // tri1 + 7, 8, 6, // tri2 + 8, 5, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 11, 10, 9, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 11, // tri0 + 14, 13, 12, // tri1 + 15, 13, 14, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 18, 16, 15, // tri1 + 19, 18, 17, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 18, // tri0 + 22, 23, 20, // tri1 + 23, 21, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_8/grd_s_m_8.c b/src/data/field/bg/acre/grd_s_m_8/grd_s_m_8.c new file mode 100644 index 00000000..465218ed --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_8/grd_s_m_8.c @@ -0,0 +1,365 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_8_v[] = { +#include "assets/field/bg/grd_s_m_8_v.inc" +}; + +extern Gfx grd_s_m_8_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_8_v[140], 25, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 11, 15, 14, // tri2 + 15, 9, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 10, 9, // tri0 + 15, 16, 10, // tri1 + 16, 17, 10, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 18, 0, 20, // tri2 + 18, 21, 0 // tri3 + ), + gsSPNTriangles_5b( + 21, 1, 0, // tri0 + 7, 14, 9, // tri1 + 7, 22, 14, // tri2 + 22, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 12, // tri0 + 23, 13, 12, // tri1 + 23, 24, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_8_v[127], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_8_v[0], 23, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 0, // tri0 + 6, 5, 2, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_8_v[23], 13, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 1, 4, // tri0 + 4, 6, 5, // tri1 + 5, 7, 8, // tri2 + 5, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_8_v[36], 28, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 8, 15, 16, // tri0 + 17, 8, 18, // tri1 + 19, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 25, // tri0 + 24, 26, 25, // tri1 + 26, 17, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_8_v[64], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 4, 1, // tri0 + 1, 6, 5, // tri1 + 7, 8, 9, // tri2 + 10, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 10, // tri0 + 11, 7, 12, // tri1 + 13, 12, 7, // tri2 + 14, 13, 7 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 16, 13, 17, // tri1 + 18, 19, 20, // tri2 + 18, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 14, 0, // tri0 + 22, 21, 18, // tri1 + 22, 14, 21, // tri2 + 22, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 22, 17, // tri0 + 23, 2, 24, // tri1 + 2, 3, 24, // tri2 + 15, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 25, // tri0 + 27, 18, 20, // tri1 + 19, 28, 20, // tri2 + 27, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 30, 29, 25, // tri0 + 25, 29, 26, // tri1 + 15, 26, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_8_v[96], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_8_v[100], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 0, 11, // tri1 + 1, 6, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_8_v[113], 14, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 4, 7, 8, // tri1 + 9, 4, 8, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 8, 11, // tri0 + 12, 13, 10, // tri1 + 12, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_8_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_8_v[165], 20, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 1, 14, // tri0 + 5, 1, 15, // tri1 + 16, 5, 15, // tri2 + 16, 6, 5 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 16, // tri0 + 17, 9, 16, // tri1 + 11, 10, 18, // tri2 + 19, 11, 18 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_8_v[185], 24, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 6, 2, 4, // tri1 + 7, 6, 5, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 7, // tri0 + 10, 8, 7, // tri1 + 11, 10, 9, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 14, 13, 12, // tri1 + 15, 16, 14, // tri2 + 16, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 18, 16, 19, // tri1 + 20, 18, 17, // tri2 + 21, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 18, // tri0 + 22, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_9/grd_s_m_9.c b/src/data/field/bg/acre/grd_s_m_9/grd_s_m_9.c new file mode 100644 index 00000000..36e68d73 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_9/grd_s_m_9.c @@ -0,0 +1,374 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 earth_pal_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_9_v[] = { +#include "assets/field/bg/grd_s_m_9_v.inc" +}; + +extern Gfx grd_s_m_9_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_9_v[108], 23, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 0, 18, 3, // tri1 + 18, 19, 3, // tri2 + 19, 9, 3 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 3, // tri0 + 19, 20, 9, // tri1 + 20, 12, 9, // tri2 + 20, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 12, // tri0 + 22, 16, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_9_v[0], 25, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 11, 5, 10, // tri1 + 11, 4, 5, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 17, 12, // tri1 + 14, 16, 12, // tri2 + 15, 13, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 15, 18, // tri0 + 19, 18, 20, // tri1 + 21, 19, 20, // tri2 + 22, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 23, // tri0 + 24, 22, 23, // tri1 + 24, 23, 0, // tri2 + 2, 24, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_9_v[25], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 6, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 14, 16, 17, // tri1 + 4, 18, 19, // tri2 + 20, 21, 0 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 20, // tri0 + 24, 25, 22, // tri1 + 24, 26, 25, // tri2 + 24, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_9_v[55], 29, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 6, 8, // tri0 + 15, 16, 6, // tri1 + 10, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 8, 20, 21, // tri0 + 20, 22, 21, // tri1 + 3, 23, 24, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b( + 8, 21, 14, // tri0 + 20, 25, 22, // tri1 + 25, 24, 22, // tri2 + 10, 18, 11 // tri3 + ), + gsSPNTriangles_5b( + 19, 26, 18, // tri0 + 7, 27, 9, // tri1 + 27, 28, 9, // tri2 + 20, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 1, 3, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_9_v[84], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 2, 19, // tri1 + 2, 3, 19, // tri2 + 0, 20, 1 // tri3 + ), + gsSPNTriangles_5b( + 0, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_9_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_9_v[131], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 18, 1, 19, // tri1 + 1, 0, 19, // tri2 + 3, 20, 2 // tri3 + ), + gsSPNTriangles_5b( + 3, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 7, 24, 5 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 5, // tri0 + 25, 8, 5, // tri1 + 25, 26, 8, // tri2 + 26, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 10, // tri0 + 27, 12, 10, // tri1 + 27, 14, 12, // tri2 + 27, 28, 14 // tri3 + ), + gsSPNTriangles_5b( + 28, 16, 14, // tri0 + 28, 29, 16, // tri1 + 29, 30, 16, // tri2 + 30, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 18, // tri0 + 31, 1, 18, // tri1 + 31, 3, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_9_v[163], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_9_v[170], 26, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 6, 3, 4, // tri1 + 7, 6, 5, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 11, 10, 9, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 11, // tri0 + 14, 13, 12, // tri1 + 14, 15, 13, // tri2 + 16, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 18, 15, 16, // tri1 + 19, 20, 17, // tri2 + 20, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 21, 22, 20, // tri1 + 23, 22, 21, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c b/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c new file mode 100644 index 00000000..f31002bc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1.c @@ -0,0 +1,398 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_1_v[] = { +#include "assets/field/bg/grd_s_m_r1_1_v.inc" +}; + +extern Gfx grd_s_m_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_1_v[164], 27, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 12, 11, 13, // tri1 + 11, 9, 13, // tri2 + 9, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 8, 14, // tri0 + 14, 15, 13, // tri1 + 14, 16, 15, // tri2 + 16, 0, 15 // tri3 + ), + gsSPNTriangles_5b(0, 17, 15, // tri0 + 16, 18, 0, // tri1 + 18, 19, 0, // tri2 + 0, 2, 17 // tri3 + ), + gsSPNTriangles_5b(2, 20, 17, // tri0 + 2, 21, 20, // tri1 + 18, 22, 19, // tri2 + 4, 23, 21 // tri3 + ), + gsSPNTriangles_5b(4, 21, 2, // tri0 + 24, 25, 26, // tri1 + 26, 10, 11, // tri2 + 24, 26, 11 // tri3 + ), + gsSPNTriangles_5b(12, 24, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 2, 9, // tri2 + 2, 4, 9 // tri3 + ), + gsSPNTriangles_5b(8, 6, 2, // tri0 + 3, 10, 4, // tri1 + 3, 11, 10, // tri2 + 3, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 15, 14, 16, // tri2 + 12, 16, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 21, 20, 19, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 24, 25, 22, // tri2 + 25, 26, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 22, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_1_v[32], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 12, 10, 9, // tri1 + 13, 10, 12, // tri2 + 13, 14, 10 // tri3 + ), + gsSPNTriangles_5b(14, 15, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_1_v[48], 28, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 3, // tri0 + 1, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 20, 21, 18, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(24, 25, 22, // tri0 + 26, 27, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_1_v[76], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 2, 9, 0, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 12, 14, 15, // tri1 + 15, 13, 12, // tri2 + 14, 16, 8 // tri3 + ), + gsSPNTriangles_5b(8, 15, 14, // tri0 + 16, 7, 8, // tri1 + 5, 17, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_1_v[94], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 10, 11, // tri0 + 12, 14, 13, // tri1 + 15, 16, 17, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 18, 20, 19, // tri1 + 20, 21, 22, // tri2 + 18, 21, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 21, 23, 22, // tri1 + 23, 25, 24, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(25, 23, 26, // tri0 + 28, 29, 27, // tri1 + 26, 28, 27, // tri2 + 30, 31, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_1_v[126], 21, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 3, 5, 4, // tri2 + 1, 0, 3 // tri3 + ), + gsSPNTriangles_5b(9, 0, 2, // tri0 + 10, 11, 12, // tri1 + 12, 13, 14, // tri2 + 12, 15, 10 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 13, 16, 17, // tri1 + 16, 18, 17, // tri2 + 19, 20, 18 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_1_v[147], 17, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 11, 9, 12, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 15, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_1_v[191], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 10, 8, 9, // tri1 + 10, 9, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_1_v[203], 24, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 11, 9, 12, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 15, 14, 13, // tri1 + 1, 17, 2, // tri2 + 2, 17, 18 // tri3 + ), + gsSPNTriangles_5b(4, 2, 18, // tri0 + 18, 19, 4, // tri1 + 13, 20, 15, // tri2 + 13, 21, 20 // tri3 + ), + gsSPNTriangles_5b(13, 12, 21, // tri0 + 12, 22, 21, // tri1 + 12, 9, 22, // tri2 + 22, 8, 23 // tri3 + ), + gsSPNTriangles_5b(22, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_1_v[227], 26, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 6, 3, 4, // tri1 + 7, 6, 5, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 10, 8, 7, // tri1 + 11, 10, 9, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 14, 13, 12, // tri1 + 15, 16, 17, // tri2 + 16, 13, 17 // tri3 + ), + gsSPNTriangles_5b(18, 16, 15, // tri0 + 18, 19, 16, // tri1 + 19, 20, 16, // tri2 + 21, 22, 18 // tri3 + ), + gsSPNTriangles_5b(22, 19, 18, // tri0 + 23, 22, 21, // tri1 + 24, 25, 23, // tri2 + 25, 22, 23 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_1_v[253], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c new file mode 100644 index 00000000..4cf25c1d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_1/grd_s_m_r1_1_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_r1_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_1_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_1_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c b/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c new file mode 100644 index 00000000..e3c19347 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2.c @@ -0,0 +1,364 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_2_v[] = { +#include "assets/field/bg/grd_s_m_r1_2_v.inc" +}; + +extern Gfx grd_s_m_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_2_v[166], 24, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 9, 10, 6, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 7, 14, 8, // tri1 + 3, 15, 1, // tri2 + 15, 16, 1 // tri3 + ), + gsSPNTriangles_5b(16, 17, 1, // tri0 + 17, 4, 1, // tri1 + 17, 5, 4, // tri2 + 17, 18, 5 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 21, 11, 22, // tri2 + 11, 9, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 11, // tri0 + 23, 13, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 6, 10, 7, // tri1 + 11, 12, 13, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(16, 17, 13, // tri0 + 17, 11, 13, // tri1 + 8, 18, 6, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 18, // tri0 + 23, 24, 25, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(14, 12, 11, // tri0 + 4, 1, 5, // tri1 + 20, 19, 30, // tri2 + 26, 28, 31 // tri3 + ), + gsSPVertex(&grd_s_m_r1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 4, 6, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 6, 5, 20, // tri1 + 21, 22, 23, // tri2 + 14, 24, 17 // tri3 + ), + gsSPNTriangles_5b(14, 17, 19, // tri0 + 7, 9, 25, // tri1 + 26, 25, 27, // tri2 + 24, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 15, 28, // tri0 + 29, 30, 31, // tri1 + 28, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_2_v[64], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 10, 9, 8, // tri2 + 11, 5, 7 // tri3 + ), + gsSPNTriangles_5b(10, 8, 12, // tri0 + 5, 13, 6, // tri1 + 9, 11, 7, // tri2 + 14, 2, 15 // tri3 + ), + gsSPNTriangles_5b(14, 4, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_2_v[80], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 5, 9, 8, // tri2 + 10, 5, 11 // tri3 + ), + gsSPNTriangles_5b(10, 9, 5, // tri0 + 5, 4, 11, // tri1 + 12, 13, 7, // tri2 + 13, 6, 7 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 13, 12, // tri1 + 18, 19, 20, // tri2 + 11, 18, 10 // tri3 + ), + gsSPNTriangles_5b(21, 22, 18, // tri0 + 21, 23, 22, // tri1 + 11, 21, 18, // tri2 + 18, 20, 10 // tri3 + ), + gsSPNTriangles_5b(17, 24, 13, // tri0 + 25, 26, 27, // tri1 + 28, 14, 29, // tri2 + 14, 16, 29 // tri3 + ), + gsSPNTriangles_5b(16, 30, 29, // tri0 + 30, 31, 29, // tri1 + 25, 27, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_2_v[112], 20, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(4, 9, 5, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 15, 18, 19, // tri1 + 18, 8, 19, // tri2 + 8, 7, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_2_v[132], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 7, 8, 9, // tri1 + 9, 10, 3, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 13, 15, 14, // tri1 + 14, 16, 7, // tri2 + 17, 18, 11 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_2_v[151], 15, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_2_v[190], 22, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 15, 11, // tri0 + 15, 16, 11, // tri1 + 16, 17, 11, // tri2 + 17, 10, 11 // tri3 + ), + gsSPNTriangles_5b(18, 19, 7, // tri0 + 19, 4, 7, // tri1 + 19, 2, 4, // tri2 + 19, 20, 2 // tri3 + ), + gsSPNTriangles_5b(20, 21, 2, // tri0 + 21, 0, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_2_v[212], 25, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 6, 2, 4, // tri1 + 6, 7, 2, // tri2 + 8, 6, 5 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 10, 6, 8, // tri1 + 11, 12, 9, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 13, 14, 12, // tri1 + 15, 14, 13, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(17, 14, 15, // tri0 + 18, 19, 16, // tri1 + 19, 17, 16, // tri2 + 20, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 21, 20, // tri1 + 23, 21, 22, // tri2 + 23, 24, 21 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_2_v[237], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 0, 6 // tri2 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 7, 6, 8, // tri1 + 7, 5, 6, // tri2 + 0, 3, 1 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_2_v[246], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c new file mode 100644 index 00000000..a9c3f198 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_2/grd_s_m_r1_2_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_r1_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_2_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_2_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c b/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c new file mode 100644 index 00000000..4c74ffbc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3.c @@ -0,0 +1,365 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_3_v[] = { +#include "assets/field/bg/grd_s_m_r1_3_v.inc" +}; + +extern Gfx grd_s_m_r1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_3_v[146], 24, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 3, 13, 1, // tri2 + 13, 14, 1 // tri3 + ), + gsSPNTriangles_5b(14, 4, 1, // tri0 + 14, 7, 4, // tri1 + 14, 15, 7, // tri2 + 15, 16, 7 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 15, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 19, 8, 21, // tri1 + 19, 22, 8, // tri2 + 22, 9, 8 // tri3 + ), + gsSPNTriangles_5b(22, 12, 9, // tri0 + 18, 23, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 7, 6, // tri1 + 6, 2, 1, // tri2 + 5, 10, 3 // tri3 + ), + gsSPNTriangles_5b(5, 11, 10, // tri0 + 11, 12, 13, // tri1 + 14, 13, 12, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b(9, 8, 16, // tri0 + 17, 18, 16, // tri1 + 8, 17, 16, // tri2 + 15, 19, 14 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 21, 14, 19, // tri1 + 22, 23, 20, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 28, 29, 26, // tri1 + 28, 30, 29, // tri2 + 28, 31, 30 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 22, 25, 23, // tri1 + 24, 27, 25, // tri2 + 26, 29, 27 // tri3 + ), + gsSPVertex(&grd_s_m_r1_3_v[32], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 5, 4, 3, // tri1 + 2, 1, 3, // tri2 + 0, 12, 1 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_3_v[45], 13, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 6, 8, 9, // tri1 + 6, 7, 8, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 11, 12, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_3_v[58], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(5, 9, 3, // tri0 + 10, 2, 9, // tri1 + 4, 3, 11, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(8, 14, 6, // tri0 + 15, 13, 14, // tri1 + 7, 6, 16, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 25, 27, // tri0 + 30, 28, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_3_v[90], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_3_v[93], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 0, 6, // tri1 + 0, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(0, 3, 10, // tri0 + 10, 9, 0, // tri1 + 10, 3, 11, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 14, 15, 13, // tri1 + 14, 16, 15, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 15, 18, 19, // tri1 + 20, 21, 22, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 21, 23, // tri0 + 25, 26, 20, // tri1 + 27, 26, 25, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 29, 30, 28, // tri1 + 31, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_3_v[125], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(2, 4, 5, // tri0 + 4, 6, 5, // tri1 + 7, 5, 6, // tri2 + 5, 7, 8 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_3_v[134], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_3_v[170], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 10, 12, 8, // tri1 + 12, 13, 8, // tri2 + 13, 4, 8 // tri3 + ), + gsSPNTriangles_5b(13, 14, 4, // tri0 + 14, 5, 4, // tri1 + 14, 15, 5, // tri2 + 1, 16, 17 // tri3 + ), + gsSPNTriangles_5b(1, 0, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_3_v[188], 27, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 6, 3, 4, // tri1 + 7, 6, 5, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 11, 10, 9, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(13, 10, 11, // tri0 + 14, 13, 12, // tri1 + 14, 15, 13, // tri2 + 16, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 17, 16, // tri1 + 19, 20, 21, // tri2 + 20, 17, 21 // tri3 + ), + gsSPNTriangles_5b(22, 20, 19, // tri0 + 22, 23, 20, // tri1 + 24, 23, 22, // tri2 + 25, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_3_v[215], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 4, 7, // tri1 + 4, 5, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_3_v[223], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c new file mode 100644 index 00000000..33231d65 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_3/grd_s_m_r1_3_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_r1_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_3_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_3_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c b/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c new file mode 100644 index 00000000..a374bcf3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4.c @@ -0,0 +1,415 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_4_v[] = { +#include "assets/field/bg/grd_s_m_r1_4_v.inc" +}; + +extern Gfx grd_s_m_r1_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_4_v[187], 24, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 3, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 11, 14, 9, // tri1 + 5, 15, 4, // tri2 + 11, 13, 16 // tri3 + ), + gsSPNTriangles_5b(11, 16, 17, // tri0 + 11, 17, 18, // tri1 + 14, 11, 18, // tri2 + 14, 18, 19 // tri3 + ), + gsSPNTriangles_5b(14, 19, 20, // tri0 + 9, 14, 20, // tri1 + 21, 22, 23, // tri2 + 21, 0, 22 // tri3 + ), + gsSPNTriangles_5b(0, 2, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 3, 6, 2, // tri1 + 5, 7, 6, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 13, 8, // tri0 + 12, 14, 13, // tri1 + 15, 14, 12, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 18, 14, 15, // tri1 + 16, 19, 20, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b(21, 22, 19, // tri0 + 22, 20, 19, // tri1 + 23, 24, 25, // tri2 + 4, 26, 0 // tri3 + ), + gsSPNTriangles_5b(27, 28, 25, // tri0 + 25, 24, 27, // tri1 + 27, 29, 28, // tri2 + 30, 31, 29 // tri3 + ), + gsSPNTriangles_5b(29, 27, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_4_v[32], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 3, 1, // tri0 + 4, 3, 5, // tri1 + 6, 7, 8, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 14, 15, 16, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 16, 15, // tri0 + 15, 14, 13, // tri1 + 12, 11, 13, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 6, 5, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_4_v[51], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 5, 4, // tri1 + 8, 9, 5, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 10, 13, 9, // tri1 + 10, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_4_v[67], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 22, // tri2 + 19, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 26, // tri0 + 19, 24, 20, // tri1 + 16, 22, 17, // tri2 + 27, 13, 28 // tri3 + ), + gsSPNTriangles_5b(29, 27, 30, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_4_v[99], 23, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 7, 9, 12, // tri2 + 10, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 15, 17, 16, // tri1 + 18, 19, 20, // tri2 + 19, 4, 20 // tri3 + ), + gsSPNTriangles_5b(21, 3, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_4_v[122], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 4, 5, 6, // tri1 + 6, 5, 7, // tri2 + 8, 7, 5 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 12, 3, 0 // tri3 + ), + gsSPNTriangles_5b(13, 3, 12, // tri0 + 10, 14, 11, // tri1 + 15, 14, 10, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 14, // tri0 + 18, 19, 20, // tri1 + 21, 22, 19, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 26, 27, 25, // tri1 + 27, 28, 25, // tri2 + 29, 25, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 25, // tri0 + 31, 20, 22, // tri1 + 20, 19, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_4_v[154], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 6, 7, 8, // tri1 + 8, 7, 9, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 10, 13, 12, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 16, 17, 14, // tri1 + 5, 6, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_4_v[172], 15, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_4_v[211], 21, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 2, // tri0 + 5, 2, 6, // tri1 + 5, 6, 7, // tri2 + 5, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 13, 12, 14, // tri2 + 12, 11, 14 // tri3 + ), + gsSPNTriangles_5b(0, 3, 15, // tri0 + 3, 16, 15, // tri1 + 3, 17, 16, // tri2 + 3, 4, 17 // tri3 + ), + gsSPNTriangles_5b(4, 18, 17, // tri0 + 4, 19, 18, // tri1 + 4, 5, 19, // tri2 + 5, 8, 19 // tri3 + ), + gsSPNTriangles_5b(8, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_4_v[232], 24, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b(5, 2, 4, // tri0 + 5, 6, 2, // tri1 + 7, 8, 5, // tri2 + 8, 6, 5 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 9, 10, 8, // tri1 + 11, 10, 9, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(13, 10, 11, // tri0 + 14, 13, 12, // tri1 + 15, 13, 14, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 16, 15, // tri0 + 17, 18, 16, // tri1 + 19, 20, 17, // tri2 + 20, 18, 17 // tri3 + ), + gsSPNTriangles_5b(21, 20, 19, // tri0 + 22, 20, 21, // tri1 + 22, 23, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_4_v[256], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_4_v[269], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c new file mode 100644 index 00000000..4e639d94 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_4/grd_s_m_r1_4_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_r1_4_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_4_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_4_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_4_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c b/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c new file mode 100644 index 00000000..d7eb659b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5.c @@ -0,0 +1,391 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_5_v[] = { +#include "assets/field/bg/grd_s_m_r1_5_v.inc" +}; + +extern Gfx grd_s_m_r1_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_5_v[200], 26, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 13, 16, // tri2 + 13, 12, 16 // tri3 + ), + gsSPNTriangles_5b(3, 17, 1, // tri0 + 3, 18, 17, // tri1 + 18, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 23, 24, 21, // tri1 + 23, 25, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_5_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 9, 2, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 9, 10, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 13, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 3, 16, // tri0 + 11, 18, 12, // tri1 + 18, 19, 12, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 24, 22, 25, // tri1 + 24, 20, 22, // tri2 + 8, 26, 6 // tri3 + ), + gsSPNTriangles_5b(25, 27, 24, // tri0 + 9, 0, 2, // tri1 + 8, 28, 26, // tri2 + 28, 27, 29 // tri3 + ), + gsSPNTriangles_5b(27, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_5_v[30], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 9, 10, 7, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 0, 2, // tri0 + 18, 17, 19, // tri1 + 18, 20, 17, // tri2 + 17, 20, 0 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 25, 26, 24, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_5_v[61], 26, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 3, 7, 6, // tri1 + 8, 9, 7, // tri2 + 7, 3, 8 // tri3 + ), + gsSPNTriangles_5b(0, 3, 1, // tri0 + 10, 11, 12, // tri1 + 11, 13, 14, // tri2 + 13, 0, 2 // tri3 + ), + gsSPNTriangles_5b(8, 15, 9, // tri0 + 16, 17, 15, // tri1 + 16, 18, 17, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 20, 19, 21, // tri1 + 18, 16, 19, // tri2 + 15, 8, 16 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 24, 10, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_5_v[87], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 2, 3, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_5_v[100], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 15, 18, // tri0 + 15, 19, 18, // tri1 + 20, 18, 21, // tri2 + 20, 16, 18 // tri3 + ), + gsSPNTriangles_5b(18, 22, 21, // tri0 + 18, 19, 22, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 28, 24, 23, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_5_v[132], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 21, 16, 19 // tri3 + ), + gsSPNTriangles_5b(0, 22, 3, // tri0 + 7, 23, 8, // tri1 + 24, 12, 11, // tri2 + 6, 13, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 29, 12, 24, // tri1 + 4, 1, 5, // tri2 + 6, 5, 30 // tri3 + ), + gsSPVertex(&grd_s_m_r1_5_v[163], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 10, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_5_v[174], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_5_v[187], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_5_v[226], 19, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(3, 13, 1, // tri0 + 13, 14, 1, // tri1 + 15, 16, 4, // tri2 + 16, 7, 4 // tri3 + ), + gsSPNTriangles_5b(17, 18, 9, // tri0 + 18, 12, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_5_v[245], 29, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 1, 4, // tri0 + 6, 1, 7, // tri1 + 6, 8, 1, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 12, 8, 9, // tri1 + 12, 13, 8, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 18, 21, 20, // tri2 + 22, 12, 11 // tri3 + ), + gsSPNTriangles_5b(23, 12, 22, // tri0 + 23, 24, 12, // tri1 + 25, 24, 23, // tri2 + 26, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 27, 28, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_5_v[274], 11, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 6, 4, 5, // tri1 + 7, 6, 5, // tri2 + 7, 5, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_5_v[285], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c new file mode 100644 index 00000000..13a5b227 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_5/grd_s_m_r1_5_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_r1_5_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_5_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_5_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_5_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c b/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c new file mode 100644 index 00000000..ce2450c7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1.c @@ -0,0 +1,372 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_b_1_v[] = { +#include "assets/field/bg/grd_s_m_r1_b_1_v.inc" +}; + +extern Gfx grd_s_m_r1_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_1_v[163], 22, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 3, // tri0 + 7, 3, 6, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 9, // tri0 + 14, 10, 9, // tri1 + 9, 13, 15, // tri2 + 14, 9, 15 // tri3 + ), + gsSPNTriangles_5b(16, 2, 17, // tri0 + 18, 10, 14, // tri1 + 17, 18, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(19, 5, 20, // tri0 + 0, 2, 16, // tri1 + 20, 0, 16, // tri2 + 19, 20, 16 // tri3 + ), + gsSPNTriangles_5b(6, 5, 19, // tri0 + 21, 7, 6, // tri1 + 21, 6, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_1_v[151], 12, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 2, // tri1 + 6, 11, 8, // tri2 + 4, 10, 11 // tri3 + ), + gsSPNTriangles_5b(4, 11, 6, // tri0 + 2, 10, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 6, // tri1 + 11, 4, 6, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 12, // tri1 + 12, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 16, 18, 15, // tri1 + 19, 20, 17, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(23, 24, 21, // tri0 + 3, 25, 23, // tri1 + 2, 26, 0, // tri2 + 1, 25, 3 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 21, 24, 22, // tri1 + 19, 22, 20, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(7, 27, 28, // tri0 + 28, 29, 30, // tri1 + 30, 29, 31, // tri2 + 9, 27, 7 // tri3 + ), + gsSPNTriangles_5b(28, 27, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_1_v[32], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 4, 6, 7, // tri1 + 7, 8, 9, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 10, 12, // tri1 + 9, 8, 10, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_1_v[49], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 18, 21, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 19, 23, 20, // tri1 + 13, 15, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 13, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_1_v[79], 15, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 4, 6, 9, // tri1 + 7, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_b_1_v[94], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 7, 8, 6, // tri1 + 6, 5, 7, // tri2 + 9, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 10, 9, 11, // tri1 + 9, 12, 11, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 14, // tri0 + 16, 17, 14, // tri1 + 18, 19, 17, // tri2 + 17, 19, 14 // tri3 + ), + gsSPNTriangles_5b(14, 19, 20, // tri0 + 19, 21, 20, // tri1 + 21, 22, 20, // tri2 + 23, 22, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 22, 24, 25, // tri1 + 23, 26, 27, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 26, // tri0 + 26, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_1_v[126], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 1 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_1_v[131], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 3, 8, 9, // tri1 + 3, 1, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_1_v[141], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 8, 9, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_1_v[185], 15, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b(11, 10, 8, // tri0 + 12, 13, 9, // tri1 + 13, 6, 9, // tri2 + 10, 14, 9 // tri3 + ), + gsSPNTriangles_5b(14, 12, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_b_1_v[200], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 5, 3, 6, // tri1 + 7, 5, 6, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(9, 8, 6, // tri0 + 9, 6, 10, // tri1 + 11, 12, 13, // tri2 + 14, 9, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 10, // tri0 + 11, 13, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_b_1_v[215], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_b_1_v[223], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c new file mode 100644 index 00000000..1e3d9170 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_1/grd_s_m_r1_b_1_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_r1_b_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_b_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_1_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_1_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c b/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c new file mode 100644 index 00000000..6d3d3509 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2.c @@ -0,0 +1,402 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_r1_b_2_v[] = { +#include "assets/field/bg/grd_s_m_r1_b_2_v.inc" +}; + +extern Gfx grd_s_m_r1_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_2_v[210], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 6, 5, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b(9, 5, 11, // tri0 + 12, 7, 13, // tri1 + 12, 5, 7, // tri2 + 2, 14, 0 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 14, 13, 15, // tri1 + 7, 15, 13, // tri2 + 3, 16, 4 // tri3 + ), + gsSPNTriangles_5b(16, 17, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_2_v[168], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 5, 6, 7, // tri1 + 5, 7, 1, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 8, 11, // tri1 + 12, 11, 13, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(20, 17, 16, // tri0 + 21, 22, 23, // tri1 + 21, 23, 17, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 28, 24, 27, // tri1 + 28, 27, 29, // tri2 + 29, 27, 30 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_2_v[200], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(1, 3, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 1, 8, // tri1 + 1, 0, 8, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 10, 16, // tri0 + 18, 17, 19, // tri1 + 17, 16, 19, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(14, 8, 7, // tri0 + 10, 15, 11, // tri1 + 20, 21, 18, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 20, 22, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_2_v[31], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 5, 4, // tri0 + 7, 8, 9, // tri1 + 6, 10, 5, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 12, 13, 14, // tri1 + 15, 16, 14, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 15, 18, // tri1 + 19, 20, 21, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(20, 19, 22, // tri0 + 22, 24, 23, // tri1 + 25, 26, 24, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_2_v[63], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_2_v[66], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 7, 10, 5 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_2_v[77], 18, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 0, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 4, 9, 10, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 1, 13, // tri0 + 14, 6, 15, // tri1 + 16, 14, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_b_2_v[95], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 2, 6, // tri1 + 2, 4, 8, // tri2 + 4, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 21, 19, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(22, 24, 26, // tri0 + 24, 27, 26, // tri1 + 26, 27, 28, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b(29, 26, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_2_v[126], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 12, 11, 13, // tri2 + 8, 5, 14 // tri3 + ), + gsSPNTriangles_5b(5, 15, 14, // tri0 + 1, 0, 16, // tri1 + 16, 0, 17, // tri2 + 0, 18, 17 // tri3 + ), + gsSPNTriangles_5b(0, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 24, 20, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(23, 26, 25, // tri0 + 23, 27, 26, // tri1 + 28, 29, 27, // tri2 + 29, 26, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 26, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_2_v[158], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 7, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_b_2_v[228], 16, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 5, 6, 4, // tri1 + 5, 3, 7, // tri2 + 8, 7, 3 // tri3 + ), + gsSPNTriangles_5b(0, 8, 3, // tri0 + 0, 9, 8, // tri1 + 10, 11, 12, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 14, 10, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_b_2_v[244], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 5, 6, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 11, 7, 10, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 12, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_b_2_v[259], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_b_2_v[266], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 3, // tri0 + 7, 1, 3, // tri1 + 8, 9, 10, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b(11, 0, 9, // tri0 + 0, 4, 9, // tri1 + 12, 13, 14, // tri2 + 3, 12, 14 // tri3 + ), + gsSPNTriangles_5b(3, 14, 6, // tri0 + 0, 2, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c new file mode 100644 index 00000000..41db610d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_2/grd_s_m_r1_b_2_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_r1_b_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_b_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_2_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_2_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c b/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c new file mode 100644 index 00000000..299521d0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3.c @@ -0,0 +1,383 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; + +static Vtx grd_s_m_r1_b_3_v[] = { +#include "assets/field/bg/grd_s_m_r1_b_3_v.inc" +}; + +extern Gfx grd_s_m_r1_b_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_3_v[178], 26, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b(5, 4, 1, // tri0 + 0, 2, 6, // tri1 + 7, 8, 9, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 7, 10, // tri0 + 12, 11, 10, // tri1 + 0, 12, 10, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b(13, 5, 1, // tri0 + 13, 1, 10, // tri1 + 14, 15, 16, // tri2 + 14, 16, 9 // tri3 + ), + gsSPNTriangles_5b(8, 14, 9, // tri0 + 17, 18, 19, // tri1 + 17, 19, 20, // tri2 + 21, 17, 20 // tri3 + ), + gsSPNTriangles_5b(20, 19, 22, // tri0 + 20, 22, 23, // tri1 + 20, 24, 21, // tri2 + 20, 23, 25 // tri3 + ), + gsSPNTriangles_5b(24, 20, 25, // tri0 + 15, 24, 25, // tri1 + 15, 25, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_r1_b_3_v[165], 13, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(2, 5, 4, // tri0 + 6, 4, 7, // tri1 + 6, 7, 8, // tri2 + 9, 0, 4 // tri3 + ), + gsSPNTriangles_5b(9, 4, 6, // tri0 + 10, 11, 1, // tri1 + 10, 1, 12, // tri2 + 12, 1, 0 // tri3 + ), + gsSPNTriangles_5b(12, 0, 9, // tri0 + 5, 7, 4, // tri1 + 11, 3, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 8, 12, 6, // tri1 + 13, 14, 11, // tri2 + 14, 15, 11 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 25, 27, 26, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_3_v[31], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 8, 1, 0, // tri1 + 9, 10, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(17, 21, 15, // tri0 + 18, 20, 17, // tri1 + 19, 22, 20, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(22, 24, 20, // tri0 + 25, 26, 23, // tri1 + 25, 27, 26, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(29, 26, 27, // tri0 + 30, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_3_v[63], 19, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(5, 15, 6, // tri0 + 3, 6, 4, // tri1 + 4, 1, 0, // tri2 + 2, 1, 16 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_3_v[82], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 7, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 9, 11, 10, // tri1 + 6, 9, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_r1_b_3_v[96], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 13, 7, 9, // tri1 + 13, 6, 7, // tri2 + 14, 5, 4 // tri3 + ), + gsSPNTriangles_5b(4, 15, 14, // tri0 + 1, 16, 2, // tri1 + 17, 11, 12, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 16, // tri0 + 16, 21, 2, // tri1 + 16, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 23, 26, 24, // tri1 + 22, 27, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 30, 7, 5, // tri1 + 12, 31, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_r1_b_3_v[128], 23, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 0, 2, // tri1 + 8, 9, 0, // tri2 + 10, 0, 9 // tri3 + ), + gsSPNTriangles_5b(11, 0, 10, // tri0 + 12, 0, 11, // tri1 + 13, 14, 15, // tri2 + 16, 0, 12 // tri3 + ), + gsSPNTriangles_5b(0, 17, 4, // tri0 + 13, 18, 14, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_r1_b_3_v[151], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 5, 6, 7, // tri1 + 7, 4, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 8, 11, // tri1 + 12, 11, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_r1_b_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_r1_b_3_v[204], 20, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 8, 9, 6, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 3, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 15, 5, // tri0 + 0, 16, 14, // tri1 + 0, 14, 3, // tri2 + 12, 17, 10 // tri3 + ), + gsSPNTriangles_5b(8, 18, 9, // tri0 + 8, 19, 18, // tri1 + 10, 19, 8, // tri2 + 17, 19, 10 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_r1_b_3_v[224], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 7, 1, // tri2 + 9, 1, 10 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 0, 10, 1, // tri1 + 11, 3, 12, // tri2 + 3, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 2, 3, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPVertex(&grd_s_m_r1_b_3_v[239], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 2, 7, // tri1 + 2, 3, 7, // tri2 + 0, 8, 1 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b_Dolphin(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(sprashA_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_REPEAT, 0, 1), + gsSPDisplayList(0x09000000), + gsSPVertex(&grd_s_m_r1_b_3_v[249], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c new file mode 100644 index 00000000..49a3acb0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_r1_b_3/grd_s_m_r1_b_3_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_r1_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_r1_b_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_r1_b_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_3_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_r1_b_3_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c b/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c new file mode 100644 index 00000000..6eb58e4a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1.c @@ -0,0 +1,425 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_ta_1_v[] = { +#include "assets/field/bg/grd_s_m_ta_1_v.inc" +}; + +extern Gfx grd_s_m_ta_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_1_v[173], 25, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 1, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 9, 10, // tri1 + 15, 16, 10, // tri2 + 13, 15, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 13, // tri0 + 12, 13, 10, // tri1 + 5, 18, 2, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 2, 18, 20, // tri0 + 2, 20, 21, // tri1 + 2, 21, 22, // tri2 + 0, 2, 22 // tri3 + ), + gsSPNTriangles_5b( + 0, 22, 23, // tri0 + 4, 0, 23, // tri1 + 24, 4, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_1_v[0], 20, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 9, 5, // tri1 + 5, 4, 8, // tri2 + 0, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 0, // tri0 + 3, 10, 1, // tri1 + 3, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 15, 13, // tri0 + 12, 16, 17, // tri1 + 17, 15, 12, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 19, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_1_v[20], 22, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 5, 4, 8, // tri1 + 9, 10, 5, // tri2 + 5, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 12, 10, 11, // tri1 + 12, 11, 13, // tri2 + 14, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 0, 3, // tri0 + 19, 3, 20, // tri1 + 21, 19, 20, // tri2 + 0, 7, 1 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_1_v[42], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_1_v[55], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 19, 20, 21, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 21, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 26, // tri2 + 25, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 30, // tri0 + 30, 28, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_ta_1_v[86], 20, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 4, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 14, 16, 17, // tri1 + 17, 15, 14, // tri2 + 16, 18, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_ta_1_v[106], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 7, 4, 5, // tri2 + 3, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 3, 9, 5, // tri0 + 6, 10, 7, // tri1 + 10, 11, 7, // tri2 + 12, 13, 0 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 14, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 17, 16, 19, // tri0 + 14, 20, 13, // tri1 + 14, 17, 20, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 19, 23, 20, // tri0 + 24, 25, 23, // tri1 + 23, 25, 20, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 28, 26, 29, // tri1 + 29, 26, 30, // tri2 + 22, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_m_ta_1_v[138], 16, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 7, 9, 5 // tri3 + ), + gsSPNTriangles_5b( + 9, 6, 5, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 7, 15, 8, // tri1 + 15, 7, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_1_v[154], 19, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 8, // tri0 + 11, 12, 8, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 16, 18, 17 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_ta_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_1_v[198], 27, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 2, 5, // tri0 + 0, 6, 1, // tri1 + 0, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 4, 19, 3, // tri0 + 19, 20, 3, // tri1 + 0, 3, 21, // tri2 + 3, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 0, 21, 7, // tri0 + 22, 7, 21, // tri1 + 22, 9, 7, // tri2 + 9, 22, 11 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 11, // tri0 + 13, 12, 24, // tri1 + 13, 24, 25, // tri2 + 13, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_ta_1_v[225], 26, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 5, // tri1 + 9, 6, 5, // tri2 + 2, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 2, 1, 10, // tri0 + 12, 4, 3, // tri1 + 12, 13, 4, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 13, 12, // tri0 + 16, 15, 14, // tri1 + 16, 17, 15, // tri2 + 18, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 18, // tri0 + 20, 17, 18, // tri1 + 21, 20, 19, // tri2 + 7, 6, 21 // tri3 + ), + gsSPNTriangles_5b( + 6, 20, 21, // tri0 + 22, 23, 8, // tri1 + 23, 9, 8, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c new file mode 100644 index 00000000..5bc34166 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_1/grd_s_m_ta_1_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_ta_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_ta_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_ta_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_1_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_1_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c b/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c new file mode 100644 index 00000000..05458134 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2.c @@ -0,0 +1,408 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_ta_2_v[] = { +#include "assets/field/bg/grd_s_m_ta_2_v.inc" +}; + +extern Gfx grd_s_m_ta_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_2_v[166], 23, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 3, 9, 1, // tri0 + 9, 5, 1, // tri1 + 9, 10, 5, // tri2 + 10, 7, 5 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 7, // tri0 + 11, 12, 7, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 19, 20, 16, // tri1 + 20, 21, 16, // tri2 + 21, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 8, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 13, 12, 11, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 11, 15, 14, // tri0 + 6, 16, 17, // tri1 + 16, 18, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 19, 21, 20, // tri1 + 22, 21, 5, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 15, // tri0 + 14, 23, 24, // tri1 + 15, 23, 14, // tri2 + 25, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 12, // tri0 + 27, 26, 25, // tri1 + 25, 28, 27, // tri2 + 27, 29, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 26, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_ta_2_v[32], 19, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 5, 6, 7, // tri1 + 2, 5, 7, // tri2 + 8, 9, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 10, 11, 9, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 16, 17, 14, // tri1 + 17, 18, 14, // tri2 + 10, 18, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_2_v[51], 18, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 6, 5, 7, // tri1 + 4, 3, 5, // tri2 + 0, 2, 3 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 12, 13, 14, // tri2 + 14, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 13, 16, 15, // tri1 + 16, 17, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_2_v[69], 20, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 8, // tri0 + 11, 12, 10, // tri1 + 11, 13, 12, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 16, 17, 15, // tri1 + 16, 18, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 10, 9, 11, // tri1 + 13, 11, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_2_v[89], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 14, 12, 11, // tri1 + 13, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_2_v[106], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 14, 12, 11, // tri1 + 13, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 20, 22, 23, // tri1 + 22, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_ta_2_v[138], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_2_v[149], 17, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 11, // tri0 + 12, 2, 13, // tri1 + 2, 1, 13, // tri2 + 0, 14, 1 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 0, // tri0 + 15, 16, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_ta_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_2_v[189], 23, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 13, 16, 11, // tri1 + 11, 16, 17, // tri2 + 9, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 18, // tri0 + 19, 7, 3, // tri1 + 20, 19, 3, // tri2 + 5, 20, 3 // tri3 + ), + gsSPNTriangles_5b( + 7, 19, 21, // tri0 + 0, 7, 21, // tri1 + 22, 1, 0, // tri2 + 22, 0, 21 // tri3 + ), + gsSPNTriangles_5b( + 11, 17, 9, // tri0 + 0, 2, 6, // tri1 + 7, 0, 6, // tri2 + 9, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_ta_2_v[212], 20, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 4, 3, 5, // tri1 + 6, 5, 7, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 9, 8, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 12, 10, 13, // tri1 + 14, 13, 15, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 17, 16, // tri1 + 18, 19, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c new file mode 100644 index 00000000..2387e246 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_2/grd_s_m_ta_2_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_ta_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_ta_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_ta_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_2_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_2_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c b/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c new file mode 100644 index 00000000..e4dae3cf --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3.c @@ -0,0 +1,432 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_ta_3_v[] = { +#include "assets/field/bg/grd_s_m_ta_3_v.inc" +}; + +extern Gfx grd_s_m_ta_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_3_v[174], 23, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 2, 8 // tri3 + ), + gsSPNTriangles_5b( + 2, 10, 8, // tri0 + 2, 1, 10, // tri1 + 3, 11, 4, // tri2 + 12, 13, 0 // tri3 + ), + gsSPNTriangles_5b( + 13, 1, 0, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 18, // tri0 + 13, 12, 18, // tri1 + 15, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 20, 13, 17, // tri0 + 20, 1, 13, // tri1 + 20, 10, 1, // tri2 + 21, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 21, 5, 8, // tri0 + 21, 22, 5, // tri1 + 22, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_3_v[161], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 2, 1, 7, // tri2 + 1, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 7, 11, // tri1 + 7, 8, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 21, 22, 19, // tri1 + 21, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 25, 29, 28, // tri2 + 29, 24, 28 // tri3 + ), + gsSPVertex(&grd_s_m_ta_3_v[30], 14, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 4, 8, // tri2 + 4, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 4, 3, 9, // tri0 + 3, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[44], 24, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 0, 2, 3, // tri1 + 7, 8, 5, // tri2 + 5, 6, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 8, // tri0 + 8, 7, 9, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 12, 11, 13, // tri1 + 15, 16, 14, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 16, // tri0 + 16, 15, 17, // tri1 + 19, 20, 18, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 21, 19, 22, // tri1 + 18, 17, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[68], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[81], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[94], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 4, 3, // tri0 + 5, 7, 8, // tri1 + 7, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 11, // tri0 + 9, 13, 12, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 20, 22, 23, // tri1 + 22, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_ta_3_v[126], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_ta_3_v[139], 22, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 4, 5, // tri1 + 6, 7, 4, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 6, // tri0 + 8, 10, 11, // tri1 + 11, 9, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 10, // tri0 + 13, 14, 12, // tri1 + 15, 14, 13, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 16, 17, // tri1 + 19, 18, 17, // tri2 + 20, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_ta_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_ta_3_v[197], 30, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b( + 2, 1, 5, // tri0 + 6, 2, 5, // tri1 + 7, 4, 2, // tri2 + 7, 2, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 11, 10, // tri2 + 10, 1, 0 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 10, // tri0 + 10, 13, 5, // tri1 + 10, 5, 1, // tri2 + 10, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 16, 15, 9, // tri1 + 8, 16, 9, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 18, // tri0 + 18, 12, 9, // tri1 + 9, 15, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 19, // tri0 + 19, 14, 20, // tri1 + 23, 19, 22, // tri2 + 19, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 19, 24, 14, // tri0 + 14, 24, 17, // tri1 + 25, 26, 27, // tri2 + 21, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 27, 22, 21, // tri0 + 28, 29, 27, // tri1 + 26, 28, 27, // tri2 + 29, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 22, // tri0 + 14, 16, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_ta_3_v[227], 20, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 5, 6, 2, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c new file mode 100644 index 00000000..cf006e75 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_ta_3/grd_s_m_ta_3_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_ta_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_ta_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_ta_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_3_evw_anime_1 }, + { -2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_ta_3_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c b/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c new file mode 100644 index 00000000..08a3760e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1.c @@ -0,0 +1,479 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_wf_1_v[] = { +#include "assets/field/bg/grd_s_m_wf_1_v.inc" +}; + +extern Gfx grd_s_m_wf_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_1_v[161], 21, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 8, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 7, 6, 13, // tri1 + 7, 13, 15, // tri2 + 9, 7, 15 // tri3 + ), + gsSPNTriangles_5b( + 9, 15, 16, // tri0 + 9, 16, 17, // tri1 + 10, 9, 17, // tri2 + 12, 10, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 12, 17, // tri0 + 19, 3, 2, // tri1 + 20, 19, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_1_v[144], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[231], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 13, // tri0 + 14, 15, 11, // tri1 + 14, 11, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 11, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 23, 21, 24, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 29, // tri0 + 30, 31, 27, // tri1 + 30, 27, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_1_v[263], 28, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 12, 15, // tri1 + 19, 15, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 21, // tri2 + 27, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 27, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[0], 18, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 14, // tri0 + 15, 14, 16, // tri1 + 13, 12, 17, // tri2 + 11, 13, 17 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[18], 21, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 5, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 1, 11, 4, // tri0 + 6, 12, 7, // tri1 + 9, 10, 13, // tri2 + 14, 9, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 13, // tri0 + 15, 13, 16, // tri1 + 15, 16, 17, // tri2 + 18, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 18, 17, // tri0 + 20, 19, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[39], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 14, 21, 22, // tri2 + 21, 19, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[63], 32, 0), + gsSPNTrianglesInit_5b( + 29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 2, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 6, 8, 16 // tri3 + ), + gsSPNTriangles_5b( + 3, 17, 5, // tri0 + 17, 18, 5, // tri1 + 5, 16, 2, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 19, 18, 21, // tri1 + 11, 22, 9, // tri2 + 7, 23, 10 // tri3 + ), + gsSPNTriangles_5b( + 7, 24, 23, // tri0 + 22, 4, 9, // tri1 + 22, 25, 4, // tri2 + 25, 0, 4 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 27, 1, 28, // tri1 + 27, 29, 1, // tri2 + 29, 3, 1 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 3, // tri0 + 26, 31, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_1_v[95], 15, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 2, // tri0 + 6, 7, 2, // tri1 + 7, 8, 2, // tri2 + 8, 9, 2 // tri3 + ), + gsSPNTriangles_5b( + 9, 0, 2, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b( + 4, 14, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[110], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_1_v[127], 17, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 8, 7, 9, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 11, // tri0 + 10, 11, 12, // tri1 + 13, 10, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 15, 13, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_wf_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_1_v[182], 24, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 7, // tri1 + 7, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 5, 4, 7, // tri1 + 16, 18, 13, // tri2 + 3, 17, 4 // tri3 + ), + gsSPNTriangles_5b( + 3, 16, 17, // tri0 + 17, 13, 15, // tri1 + 4, 19, 20, // tri2 + 9, 7, 12 // tri3 + ), + gsSPNTriangles_5b( + 4, 20, 11, // tri0 + 4, 17, 19, // tri1 + 17, 15, 19, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 0, // tri0 + 7, 4, 11, // tri1 + 22, 1, 0, // tri2 + 22, 23, 1 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_wf_1_v[206], 25, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 1, 0, 9, // tri2 + 0, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 9, 17, 16, // tri1 + 9, 10, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 22, 21, 23, // tri1 + 12, 23, 21, // tri2 + 12, 11, 23 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 24, // tri0 + 19, 24, 8, // tri1 + 19, 18, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c b/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c new file mode 100644 index 00000000..f2eb095d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_1/grd_s_m_wf_1_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_wf_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_wf_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_1_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c b/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c new file mode 100644 index 00000000..3b912ae9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2.c @@ -0,0 +1,564 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_wf_2_v[] = { +#include "assets/field/bg/grd_s_m_wf_2_v.inc" +}; + +extern Gfx grd_s_m_wf_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_2_v[225], 31, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 13, 16, 15, // tri1 + 13, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 17, 20, 19, // tri1 + 17, 21, 20, // tri2 + 20, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 28, // tri0 + 28, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_2_v[197], 28, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 17, 14, 19, // tri1 + 14, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 22, // tri0 + 12, 23, 24, // tri1 + 20, 25, 21, // tri2 + 25, 26, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[325], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 13, // tri0 + 14, 15, 11, // tri1 + 14, 11, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 11, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 23, 21, 24, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 29, // tri0 + 30, 31, 27, // tri1 + 30, 27, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_2_v[357], 28, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 12, 15, // tri1 + 19, 15, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 21, // tri2 + 27, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 27, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[0], 17, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 0, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 14, 11, 13, // tri1 + 15, 14, 13, // tri2 + 16, 15, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[17], 24, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 18, // tri0 + 16, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[41], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 7, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 24, // tri0 + 23, 25, 26, // tri1 + 27, 28, 29, // tri2 + 25, 29, 26 // tri3 + ), + gsSPVertex(&grd_s_m_wf_2_v[71], 17, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 9, // tri0 + 14, 10, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[88], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 18, 19, 15, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 18, 21, 19, // tri0 + 21, 7, 19, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 27, 29, 28, // tri1 + 29, 30, 28, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_m_wf_2_v[120], 29, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 7, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 5, // tri0 + 1, 12, 2, // tri1 + 1, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 19, 17, 16, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b( + 10, 27, 15, // tri0 + 10, 9, 27, // tri1 + 9, 26, 27, // tri2 + 9, 23, 26 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[149], 28, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 15, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 12, 19, 20, // tri0 + 19, 14, 21, // tri1 + 22, 3, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 1, 22, 27, // tri0 + 24, 6, 25, // tri1 + 9, 24, 26, // tri2 + 22, 23, 27 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_2_v[177], 20, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 13, 16, 15, // tri1 + 13, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_wf_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_wf_2_v[256], 30, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 10, 6, 1, // tri1 + 10, 9, 6, // tri2 + 5, 10, 1 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 9, 13, 8 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 8, // tri0 + 13, 15, 14, // tri1 + 15, 16, 14, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 15, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 23, // tri0 + 21, 24, 23, // tri1 + 25, 18, 26, // tri2 + 18, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 27, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 27, 23, 29 // tri3 + ), + gsSPNTriangles_5b( + 27, 20, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_wf_2_v[286], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 2, 7, // tri1 + 8, 6, 9, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 12, // tri0 + 13, 14, 15, // tri1 + 14, 10, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 14, 18, // tri0 + 19, 20, 21, // tri1 + 20, 17, 21, // tri2 + 22, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 20, // tri0 + 24, 23, 25, // tri1 + 26, 27, 24, // tri2 + 27, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 29, // tri0 + 28, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_2_v[317], 8, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 1, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c b/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c new file mode 100644 index 00000000..dbf7b3a3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_2/grd_s_m_wf_2_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_wf_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_wf_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_2_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c b/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c new file mode 100644 index 00000000..46665145 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3.c @@ -0,0 +1,485 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_m_wf_3_v[] = { +#include "assets/field/bg/grd_s_m_wf_3_v.inc" +}; + +extern Gfx grd_s_m_wf_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_3_v[166], 28, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 6, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 16, // tri0 + 19, 20, 16, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 23, 27, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_m_wf_3_v[155], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[244], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 13, // tri0 + 14, 15, 11, // tri1 + 14, 11, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 11, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 23, // tri0 + 23, 21, 24, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 29, // tri0 + 30, 31, 27, // tri1 + 30, 27, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_3_v[276], 28, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 12, 15, // tri1 + 19, 15, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 21, // tri2 + 27, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 27, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[0], 23, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 21, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, beach_pal_dummy2), + gsDPLoadTextureBlock_4b_Dolphin(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[23], 15, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 7, 9, 8, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 5, 4, 7, // tri1 + 10, 9, 7, // tri2 + 13, 12, 10 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[38], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 6, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 11, 15, // tri0 + 7, 16, 17, // tri1 + 16, 14, 18, // tri2 + 5, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 0, // tri0 + 23, 24, 21, // tri1 + 25, 26, 23, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_3_v[69], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 6, 7, 8, // tri1 + 8, 9, 10, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 14, 12, 13, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[86], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 9, // tri0 + 13, 12, 14, // tri1 + 12, 15, 14, // tri2 + 16, 17, 3 // tri3 + ), + gsSPNTriangles_5b( + 17, 2, 3, // tri0 + 16, 5, 17, // tri1 + 16, 7, 5, // tri2 + 7, 18, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 0, 22, 1 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 1, // tri0 + 23, 24, 1, // tri1 + 22, 11, 23, // tri2 + 22, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 25, 8, // tri0 + 25, 26, 8, // tri1 + 22, 27, 10, // tri2 + 24, 28, 1 // tri3 + ), + gsSPNTriangles_5b( + 24, 29, 28, // tri0 + 29, 30, 28, // tri1 + 29, 14, 30, // tri2 + 14, 15, 30 // tri3 + ), + gsSPNTriangles_5b( + 12, 31, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_m_wf_3_v[118], 14, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 4, 8, 5, // tri1 + 7, 9, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 4, // tri0 + 11, 8, 4, // tri1 + 10, 12, 11, // tri2 + 12, 0, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 13, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[132], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 206, 189, 148, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_m_wf_3_v[143], 12, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_m_wf_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, wave2_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPDisplayList(0x0B000000), + gsSPVertex(&grd_s_m_wf_3_v[194], 19, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 8, 9, 6, // tri1 + 5, 8, 6, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 9, 8, 11, // tri0 + 7, 12, 13, // tri1 + 7, 6, 12, // tri2 + 6, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 12, // tri0 + 14, 16, 15, // tri1 + 14, 11, 16, // tri2 + 3, 17, 0 // tri3 + ), + gsSPNTriangles_5b( + 3, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_m_wf_3_v[213], 31, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 5, 7, // tri1 + 7, 8, 9, // tri2 + 7, 5, 8 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 12, 11, 14, // tri2 + 11, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 19, 20, // tri1 + 18, 15, 19, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 19, // tri0 + 23, 24, 22, // tri1 + 25, 8, 26, // tri2 + 8, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 29, // tri0 + 29, 27, 30, // tri1 + 27, 13, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c b/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c new file mode 100644 index 00000000..d8303976 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_m_wf_3/grd_s_m_wf_3_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_m_wf_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_m_wf_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_m_wf_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_m_wf_3_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1.c b/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1.c new file mode 100644 index 00000000..958f5947 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_1_v[] = { +#include "assets/field/bg/grd_s_o_1_v.inc" +}; + +extern Gfx grd_s_o_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_1_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 3, 6, // tri2 + 7, 8, 3 // tri3 + ), + gsSPNTriangles_5b( + 5, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 5, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 9, // tri0 + 12, 13, 11, // tri1 + 5, 14, 15, // tri2 + 5, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 14, 17, 13, // tri1 + 16, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 19, // tri0 + 16, 21, 18, // tri1 + 21, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 16, 23, 21, // tri0 + 23, 24, 21, // tri1 + 24, 25, 21, // tri2 + 25, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 24, // tri0 + 26, 27, 24, // tri1 + 27, 25, 24, // tri2 + 23, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 29, // tri0 + 28, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_1_v[46], 12, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 0, 7, 5, // tri1 + 5, 4, 6, // tri2 + 5, 8, 4 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c new file mode 100644 index 00000000..6e963c2f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_1/grd_s_o_1_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_1_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10.c b/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10.c new file mode 100644 index 00000000..f515e356 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10.c @@ -0,0 +1,133 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_10_v[] = { +#include "assets/field/bg/grd_s_o_10_v.inc" +}; + +extern Gfx grd_s_o_10_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_10_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_10_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_10_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 0, 6, 7, // tri1 + 6, 8, 7, // tri2 + 8, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 0, 9, 6, // tri0 + 9, 10, 6, // tri1 + 10, 8, 6, // tri2 + 11, 12, 4 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 4, // tri0 + 12, 2, 13, // tri1 + 14, 12, 11, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 2, 12, // tri0 + 15, 16, 2, // tri1 + 17, 15, 14, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 18, 16, 15, // tri0 + 19, 20, 17, // tri1 + 20, 18, 17, // tri2 + 20, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 19, // tri0 + 22, 20, 19, // tri1 + 22, 23, 20, // tri2 + 23, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 21, // tri0 + 25, 22, 21, // tri1 + 25, 23, 22, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 28, 23, 27, // tri1 + 28, 29, 23, // tri2 + 30, 31, 26 // tri3 + ), + gsSPVertex(&grd_s_o_10_v[47], 7, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 6, 3, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c b/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c new file mode 100644 index 00000000..7dd36f46 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_10/grd_s_o_10_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_10_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_10_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_10_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_10_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_10_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_10_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_10_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_10_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_10_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2.c b/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2.c new file mode 100644 index 00000000..f761ed93 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_2_v[] = { +#include "assets/field/bg/grd_s_o_2_v.inc" +}; + +extern Gfx grd_s_o_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 9, // tri1 + 8, 10, 9, // tri2 + 0, 8, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 12, 11, // tri0 + 5, 9, 13, // tri1 + 5, 4, 9, // tri2 + 8, 6, 12 // tri3 + ), + gsSPNTriangles_5b( + 8, 4, 6, // tri0 + 8, 2, 10, // tri1 + 8, 0, 2, // tri2 + 1, 11, 14 // tri3 + ), + gsSPNTriangles_5b( + 1, 0, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_2_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 6, 7, 4, // tri1 + 6, 8, 7, // tri2 + 8, 2, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 6, // tri0 + 9, 11, 10, // tri1 + 11, 2, 10, // tri2 + 12, 13, 9 // tri3 + ), + gsSPNTriangles_5b( + 13, 11, 9, // tri0 + 13, 2, 11, // tri1 + 14, 15, 12, // tri2 + 15, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 2, 13, // tri0 + 16, 17, 14, // tri1 + 17, 15, 14, // tri2 + 17, 2, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 2, // tri0 + 19, 20, 16, // tri1 + 20, 17, 16, // tri2 + 20, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 20, 19, // tri0 + 21, 22, 20, // tri1 + 22, 23, 20, // tri2 + 23, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 24, 25, 22, // tri1 + 25, 23, 22, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 28, // tri0 + 27, 23, 25, // tri1 + 29, 30, 26, // tri2 + 30, 31, 26 // tri3 + ), + gsSPNTriangles_5b( + 30, 23, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_2_v[47], 7, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 1, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c new file mode 100644 index 00000000..234d1db5 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_2/grd_s_o_2_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_2_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3.c b/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3.c new file mode 100644 index 00000000..a7210a12 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3.c @@ -0,0 +1,133 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_3_v[] = { +#include "assets/field/bg/grd_s_o_3_v.inc" +}; + +extern Gfx grd_s_o_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_3_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_3_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 5, 6, 1, // tri1 + 7, 5, 3, // tri2 + 5, 0, 3 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 9, 8, 7, // tri1 + 8, 5, 7, // tri2 + 1, 10, 2 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 2, // tri0 + 11, 4, 2, // tri1 + 1, 12, 10, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 11, // tri0 + 1, 14, 12, // tri1 + 1, 15, 14, // tri2 + 14, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 12, // tri0 + 15, 17, 14, // tri1 + 17, 18, 14, // tri2 + 18, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 8, // tri0 + 20, 6, 8, // tri1 + 21, 8, 9, // tri2 + 21, 19, 8 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 19, // tri0 + 23, 22, 21, // tri1 + 22, 19, 21, // tri2 + 24, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 23, // tri0 + 24, 22, 23, // tri1 + 26, 20, 27, // tri2 + 26, 28, 20 // tri3 + ), + gsSPNTriangles_5b( + 29, 27, 30, // tri0 + 29, 26, 27, // tri1 + 31, 28, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_3_v[47], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c new file mode 100644 index 00000000..07d6967f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_3/grd_s_o_3_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_3_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4.c b/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4.c new file mode 100644 index 00000000..67fe2247 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_4_v[] = { +#include "assets/field/bg/grd_s_o_4_v.inc" +}; + +extern Gfx grd_s_o_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_4_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_4_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 39, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 3, 0, // tri1 + 6, 7, 3, // tri2 + 7, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 9, 7, 6, // tri1 + 9, 4, 7, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 8, // tri0 + 11, 4, 12, // tri1 + 11, 13, 4, // tri2 + 14, 15, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 16, 13, 15, // tri1 + 17, 18, 14, // tri2 + 18, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 13, 16, // tri0 + 19, 20, 17, // tri1 + 20, 18, 17, // tri2 + 20, 13, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 19, // tri0 + 22, 20, 19, // tri1 + 22, 23, 20, // tri2 + 23, 13, 20 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 21, // tri0 + 24, 25, 22, // tri1 + 25, 23, 22, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 24, // tri0 + 27, 23, 25, // tri1 + 28, 29, 26, // tri2 + 29, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 29, 23, 27, // tri0 + 30, 31, 28, // tri1 + 31, 29, 28, // tri2 + 31, 23, 29 // tri3 + ), + gsSPVertex(&grd_s_o_4_v[47], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c b/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c new file mode 100644 index 00000000..f6833c6c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_4/grd_s_o_4_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_4_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_4_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_4_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_4_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_4_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_4_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_4_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_4_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5.c b/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5.c new file mode 100644 index 00000000..88031986 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_5_v[] = { +#include "assets/field/bg/grd_s_o_5_v.inc" +}; + +extern Gfx grd_s_o_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_5_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_5_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 40, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 5, 2, 3, // tri2 + 5, 7, 2 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 11, 6, 9, // tri2 + 6, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 9, // tri0 + 13, 10, 9, // tri1 + 13, 14, 10, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 16, 17, 13, // tri1 + 18, 11, 8, // tri2 + 18, 19, 11 // tri3 + ), + gsSPNTriangles_5b( + 19, 6, 11, // tri0 + 12, 20, 15, // tri1 + 20, 16, 15, // tri2 + 20, 21, 16 // tri3 + ), + gsSPNTriangles_5b( + 12, 22, 20, // tri0 + 12, 23, 22, // tri1 + 22, 21, 20, // tri2 + 22, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 22, // tri0 + 25, 26, 22, // tri1 + 26, 24, 22, // tri2 + 7, 5, 18 // tri3 + ), + gsSPNTriangles_5b( + 5, 19, 18, // tri0 + 5, 6, 19, // tri1 + 27, 1, 0, // tri2 + 27, 28, 1 // tri3 + ), + gsSPNTriangles_5b( + 28, 4, 1, // tri0 + 29, 30, 27, // tri1 + 30, 28, 27, // tri2 + 30, 4, 28 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_5_v[47], 5, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c b/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c new file mode 100644 index 00000000..7ccc2669 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_5/grd_s_o_5_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_5_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_5_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_5_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_5_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_5_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_5_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_5_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_5_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6.c b/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6.c new file mode 100644 index 00000000..6bb2b0d7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6.c @@ -0,0 +1,133 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_6_v[] = { +#include "assets/field/bg/grd_s_o_6_v.inc" +}; + +extern Gfx grd_s_o_6_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_6_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_6_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_6_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 0, // tri0 + 6, 1, 0, // tri1 + 6, 7, 1, // tri2 + 7, 4, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 8, 9, 6, // tri1 + 9, 7, 6, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 8, // tri0 + 11, 7, 9, // tri1 + 12, 11, 10, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 7, 11, // tri0 + 13, 14, 7, // tri1 + 15, 16, 12, // tri2 + 16, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 13, // tri0 + 17, 16, 15, // tri1 + 17, 18, 16, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b( + 19, 14, 16, // tri0 + 20, 21, 17, // tri1 + 21, 18, 17, // tri2 + 21, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 22, 21, 20, // tri0 + 22, 23, 21, // tri1 + 23, 19, 21, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 25, 23, 22, // tri0 + 25, 19, 23, // tri1 + 26, 27, 24, // tri2 + 27, 28, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 19, 28, // tri0 + 27, 29, 19, // tri1 + 30, 31, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_6_v[47], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c b/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c new file mode 100644 index 00000000..f85f7f5f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_6/grd_s_o_6_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_6_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_6_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_6_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_6_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_6_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_6_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_6_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_6_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_6_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7.c b/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7.c new file mode 100644 index 00000000..9f77755e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_7_v[] = { +#include "assets/field/bg/grd_s_o_7_v.inc" +}; + +extern Gfx grd_s_o_7_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_7_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_7_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_7_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 5, 2, 1, // tri1 + 5, 6, 2, // tri2 + 4, 7, 5 // tri3 + ), + gsSPNTriangles_5b( + 4, 8, 7, // tri0 + 7, 6, 5, // tri1 + 7, 9, 6, // tri2 + 8, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 7, // tri0 + 11, 9, 7, // tri1 + 8, 12, 13, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 14, 11, // tri0 + 8, 15, 12, // tri1 + 15, 16, 12, // tri2 + 16, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 15, 18, 16, // tri1 + 18, 19, 16, // tri2 + 19, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 20, 18, // tri0 + 15, 21, 20, // tri1 + 20, 22, 18, // tri2 + 22, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 20, // tri0 + 23, 24, 20, // tri1 + 24, 22, 20, // tri2 + 21, 25, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 23, // tri0 + 25, 26, 24, // tri1 + 21, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 28, // tri0 + 30, 26, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_7_v[46], 7, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 5, 3, 1, // tri1 + 5, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c b/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c new file mode 100644 index 00000000..912934a4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_7/grd_s_o_7_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_7_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_7_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_7_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_7_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_7_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_7_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_7_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_7_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_7_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8.c b/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8.c new file mode 100644 index 00000000..f162ad60 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8.c @@ -0,0 +1,151 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_8_v[] = { +#include "assets/field/bg/grd_s_o_8_v.inc" +}; + +extern Gfx grd_s_o_8_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_8_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_8_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_8_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 2, 6, // tri1 + 5, 7, 2, // tri2 + 4, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 10, 7, 9, // tri1 + 8, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 7, 12, // tri0 + 8, 14, 15, // tri1 + 14, 13, 15, // tri2 + 14, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 8, 17, 18, // tri0 + 17, 16, 18, // tri1 + 17, 19, 16, // tri2 + 8, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 8, 21, 20, // tri0 + 20, 19, 17, // tri1 + 21, 22, 20, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b( + 23, 19, 20, // tri0 + 21, 24, 22, // tri1 + 24, 25, 22, // tri2 + 25, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 26, 24, // tri0 + 26, 25, 24, // tri1 + 26, 27, 25, // tri2 + 21, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 26, // tri0 + 29, 27, 26, // tri1 + 28, 30, 29, // tri2 + 30, 31, 29 // tri3 + ), + gsSPNTriangles_5b( + 31, 27, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_8_v[47], 11, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 5, 4, 1, // tri1 + 5, 6, 4, // tri2 + 0, 7, 5 // tri3 + ), + gsSPNTriangles_5b( + 0, 8, 7, // tri0 + 7, 6, 5, // tri1 + 8, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c b/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c new file mode 100644 index 00000000..28dc5167 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_8/grd_s_o_8_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_8_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_8_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_8_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_8_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_8_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_8_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_8_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_8_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_8_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9.c b/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9.c new file mode 100644 index 00000000..f3cfb457 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9.c @@ -0,0 +1,145 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_9_v[] = { +#include "assets/field/bg/grd_s_o_9_v.inc" +}; + +extern Gfx grd_s_o_9_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_9_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_9_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_9_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 5, 6, 1, // tri1 + 6, 7, 1, // tri2 + 7, 4, 1 // tri3 + ), + gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 7, 9, // tri2 + 5, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 8, // tri0 + 12, 10, 8, // tri1 + 5, 13, 11, // tri2 + 13, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 12, // tri0 + 5, 15, 13, // tri1 + 5, 16, 15, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 14, // tri0 + 16, 18, 15, // tri1 + 18, 19, 15, // tri2 + 19, 17, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 20, 18, // tri0 + 20, 19, 18, // tri1 + 20, 21, 19, // tri2 + 16, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 23, // tri0 + 24, 25, 23, // tri1 + 25, 21, 23, // tri2 + 22, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 26, 28, 27, // tri0 + 28, 25, 27, // tri1 + 22, 29, 30, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_9_v[47], 10, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 0, 6, 5, // tri1 + 5, 4, 1, // tri2 + 5, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 6, 8, 5, // tri0 + 8, 9, 5, // tri1 + 9, 7, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c b/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c new file mode 100644 index 00000000..6d886536 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_9/grd_s_o_9_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_9_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_9_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_9_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_9_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_9_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_9_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_9_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_9_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_9_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c b/src/data/field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c new file mode 100644 index 00000000..b400af18 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_i_1/grd_s_o_i_1.c @@ -0,0 +1,144 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_i_1_v[] = { +#include "assets/field/bg/grd_s_o_i_1_v.inc" +}; + +extern Gfx grd_s_o_i_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_i_1_v[0], 25, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 1, 10, 3, // tri1 + 1, 11, 10, // tri2 + 10, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 4, // tri0 + 12, 13, 4, // tri1 + 13, 7, 4, // tri2 + 13, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 8, // tri0 + 11, 15, 10, // tri1 + 15, 16, 10, // tri2 + 16, 17, 10 // tri3 + ), + gsSPNTriangles_5b( + 17, 12, 10, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 19, 13 // tri3 + ), + gsSPNTriangles_5b( + 19, 14, 13, // tri0 + 15, 20, 16, // tri1 + 15, 21, 20, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 17, // tri0 + 22, 23, 17, // tri1 + 23, 18, 17, // tri2 + 23, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_i_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_i_1_v[25], 25, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 8, 10, 7, // tri1 + 8, 11, 10, // tri2 + 10, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 4, // tri0 + 12, 13, 4, // tri1 + 13, 3, 4, // tri2 + 13, 2, 3 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 2, // tri0 + 11, 15, 10, // tri1 + 15, 16, 10, // tri2 + 16, 17, 10 // tri3 + ), + gsSPNTriangles_5b( + 17, 12, 10, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 19, 13 // tri3 + ), + gsSPNTriangles_5b( + 19, 14, 13, // tri0 + 15, 20, 16, // tri1 + 15, 21, 20, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 17, // tri0 + 22, 23, 17, // tri1 + 23, 18, 17, // tri2 + 23, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c b/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c new file mode 100644 index 00000000..33380eea --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2.c @@ -0,0 +1,96 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_i_2_v[] = { +#include "assets/field/bg/grd_s_o_i_2_v.inc" +}; + +extern Gfx grd_s_o_i_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_i_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 1, 10, 3, // tri1 + 1, 11, 10, // tri2 + 10, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 4, // tri0 + 12, 13, 4, // tri1 + 13, 7, 4, // tri2 + 13, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_i_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_i_2_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 8, 10, 7, // tri1 + 8, 11, 10, // tri2 + 10, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 4, // tri0 + 12, 13, 4, // tri1 + 13, 3, 4, // tri2 + 13, 2, 3 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c new file mode 100644 index 00000000..760e8d30 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_i_2/grd_s_o_i_2_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_i_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_i_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_i_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_i_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_i_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_i_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_i_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_i_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_i_2_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c b/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c new file mode 100644 index 00000000..5ae01f57 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_1_v[] = { +#include "assets/field/bg/grd_s_o_r1_1_v.inc" +}; + +extern Gfx grd_s_o_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_1_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 0, 7, 5, // tri1 + 5, 8, 6, // tri2 + 8, 4, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 7, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 9, // tri0 + 12, 13, 11, // tri1 + 7, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 15, // tri0 + 7, 17, 18, // tri1 + 17, 19, 18, // tri2 + 19, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 16, // tri0 + 17, 21, 22, // tri1 + 21, 23, 22, // tri2 + 23, 20, 22 // tri3 + ), + gsSPNTriangles_5b( + 17, 24, 21, // tri0 + 17, 25, 24, // tri1 + 24, 23, 21, // tri2 + 24, 26, 23 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 28, // tri0 + 27, 29, 28, // tri1 + 29, 30, 28, // tri2 + 25, 31, 27 // tri3 + ), + gsSPVertex(&grd_s_o_r1_1_v[47], 14, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 5, 6, 1, // tri1 + 4, 7, 8, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 8, // tri0 + 10, 6, 8, // tri1 + 7, 11, 12, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c new file mode 100644 index 00000000..4c76352b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_1/grd_s_o_r1_1_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_1_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c b/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c new file mode 100644 index 00000000..187d781d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_2_v[] = { +#include "assets/field/bg/grd_s_o_r1_2_v.inc" +}; + +extern Gfx grd_s_o_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_2_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 35, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 2, 6, // tri2 + 7, 8, 2 // tri3 + ), + gsSPNTriangles_5b( + 5, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 5, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 5, 13, 12, // tri0 + 12, 14, 9, // tri1 + 14, 11, 9, // tri2 + 13, 15, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 12, // tri0 + 16, 14, 12, // tri1 + 13, 17, 18, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 16, // tri0 + 13, 20, 21, // tri1 + 20, 19, 21, // tri2 + 20, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 13, 23, 20, // tri0 + 23, 24, 20, // tri1 + 24, 22, 20, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 24, // tri0 + 26, 27, 24, // tri1 + 27, 25, 24, // tri2 + 23, 28, 29 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 29, // tri0 + 28, 30, 27, // tri1 + 23, 31, 28, // tri2 + 31, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_o_r1_2_v[47], 11, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 4, 1, 5, // tri0 + 4, 7, 1, // tri1 + 6, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c new file mode 100644 index 00000000..a4ae01a1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_2/grd_s_o_r1_2_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_2_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c b/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c new file mode 100644 index 00000000..6a839edc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3.c @@ -0,0 +1,145 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_3_v[] = { +#include "assets/field/bg/grd_s_o_r1_3_v.inc" +}; + +extern Gfx grd_s_o_r1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_3_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_3_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 8, 4, 6 // tri3 + ), + gsSPNTriangles_5b( + 5, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 5, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 9, // tri0 + 12, 13, 11, // tri1 + 5, 14, 15, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 13, // tri0 + 5, 17, 14, // tri1 + 5, 18, 17, // tri2 + 17, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 16, // tri0 + 18, 20, 17, // tri1 + 20, 21, 17, // tri2 + 21, 19, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 22, 20, // tri0 + 22, 21, 20, // tri1 + 22, 23, 21, // tri2 + 18, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 23, 22, // tri0 + 24, 25, 23, // tri1 + 18, 26, 24, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 25, 24, // tri0 + 27, 28, 25, // tri1 + 26, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_r1_3_v[47], 12, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 6, // tri0 + 0, 7, 5, // tri1 + 5, 8, 6, // tri2 + 8, 4, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c new file mode 100644 index 00000000..178c5c2a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_3/grd_s_o_r1_3_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_3_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c b/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c new file mode 100644 index 00000000..704c4d04 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_4_v[] = { +#include "assets/field/bg/grd_s_o_r1_4_v.inc" +}; + +extern Gfx grd_s_o_r1_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_4_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_4_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 2, 6, // tri2 + 7, 8, 2 // tri3 + ), + gsSPNTriangles_5b( + 5, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 8, 10, // tri2 + 5, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 12, 11, 9, // tri0 + 12, 13, 11, // tri1 + 5, 14, 12, // tri2 + 14, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 13, // tri0 + 5, 16, 17, // tri1 + 5, 18, 16, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 15, // tri0 + 18, 20, 16, // tri1 + 20, 19, 16, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 22, 20, // tri0 + 22, 23, 20, // tri1 + 23, 21, 20, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 25, 23, // tri0 + 25, 26, 23, // tri1 + 26, 24, 23, // tri2 + 22, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 26, 25, // tri0 + 27, 28, 26, // tri1 + 22, 29, 30, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_r1_4_v[47], 9, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 3, 6, 7, // tri1 + 6, 8, 7, // tri2 + 8, 4, 7 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c new file mode 100644 index 00000000..145aec19 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_4/grd_s_o_r1_4_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_4_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_4_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_4_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_4_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_4_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_4_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_4_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_4_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c b/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c new file mode 100644 index 00000000..d40b2124 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5.c @@ -0,0 +1,114 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_5_v[] = { +#include "assets/field/bg/grd_s_o_r1_5_v.inc" +}; + +extern Gfx grd_s_o_r1_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_5_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_5_v[15], 29, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 5, 6, 1, // tri1 + 6, 2, 1, // tri2 + 6, 7, 2 // tri3 + ), + gsSPNTriangles_5b( + 5, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 5, 14, 12, // tri0 + 12, 15, 13, // tri1 + 15, 16, 13, // tri2 + 14, 17, 12 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 12, // tri0 + 18, 15, 12, // tri1 + 14, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b( + 20, 18, 17, // tri0 + 20, 21, 18, // tri1 + 19, 22, 20, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 20, // tri0 + 19, 24, 22, // tri1 + 19, 25, 24, // tri2 + 24, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 26, 23, // tri0 + 25, 27, 24, // tri1 + 27, 28, 24, // tri2 + 28, 26, 24 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c new file mode 100644 index 00000000..c0445881 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_5/grd_s_o_r1_5_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_5_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_5_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_5_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_5_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_5_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_5_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_5_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_5_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c b/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c new file mode 100644 index 00000000..ad80c99e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1.c @@ -0,0 +1,96 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_b_1_v[] = { +#include "assets/field/bg/grd_s_o_r1_b_1_v.inc" +}; + +extern Gfx grd_s_o_r1_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_b_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 9, 10, 11, // tri1 + 11, 8, 2, // tri2 + 11, 2, 12 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 2, 1, 13, // tri1 + 12, 2, 13, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_b_1_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 0, // tri0 + 2, 6, 3, // tri1 + 6, 4, 3, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 2, 8, 6, // tri0 + 4, 7, 9, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 12, // tri0 + 11, 13, 14, // tri1 + 12, 11, 14, // tri2 + 4, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c new file mode 100644 index 00000000..ece7a146 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_1/grd_s_o_r1_b_1_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_b_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_1_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c b/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c new file mode 100644 index 00000000..04366bb5 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2.c @@ -0,0 +1,95 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_b_2_v[] = { +#include "assets/field/bg/grd_s_o_r1_b_2_v.inc" +}; + +extern Gfx grd_s_o_r1_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_b_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 1, // tri1 + 7, 3, 1, // tri2 + 7, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 7, 8, 4, // tri0 + 9, 10, 11, // tri1 + 9, 11, 12, // tri2 + 9, 12, 4 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 4, // tri0 + 11, 13, 14, // tri1 + 12, 11, 14, // tri2 + 4, 12, 14 // tri3 + ), + gsSPNTriangles_5b( + 5, 4, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_o_r1_b_2_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 4, 6, // tri0 + 6, 5, 8, // tri1 + 6, 8, 9, // tri2 + 10, 3, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 10, 11, // tri0 + 11, 3, 2, // tri1 + 11, 2, 13, // tri2 + 0, 3, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 0, 10, // tri0 + 4, 14, 10, // tri1 + 4, 10, 5, // tri2 + 8, 5, 10 // tri3 + ), + gsSPNTriangles_5b( + 12, 8, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c new file mode 100644 index 00000000..3ca151eb --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_2/grd_s_o_r1_b_2_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_b_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_2_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c b/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c new file mode 100644 index 00000000..c2553ca6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3.c @@ -0,0 +1,95 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_r1_b_3_v[] = { +#include "assets/field/bg/grd_s_o_r1_b_3_v.inc" +}; + +extern Gfx grd_s_o_r1_b_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_r1_b_3_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 0, 10, 3, // tri1 + 0, 11, 10, // tri2 + 10, 4, 3 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 4, // tri0 + 12, 13, 4, // tri1 + 13, 7, 4, // tri2 + 13, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_r1_b_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_o_r1_b_3_v[15], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 4, // tri0 + 4, 6, 7, // tri1 + 4, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 8, // tri0 + 10, 8, 11, // tri1 + 10, 7, 8, // tri2 + 12, 4, 10 // tri3 + ), + gsSPNTriangles_5b( + 4, 7, 10, // tri0 + 13, 4, 12, // tri1 + 13, 2, 4, // tri2 + 14, 0, 13 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c new file mode 100644 index 00000000..23132a06 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_r1_b_3/grd_s_o_r1_b_3_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_r1_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_r1_b_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_r1_b_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_r1_b_3_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c b/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c new file mode 100644 index 00000000..7e6a755b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1.c @@ -0,0 +1,145 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_ta_1_v[] = { +#include "assets/field/bg/grd_s_o_ta_1_v.inc" +}; + +extern Gfx grd_s_o_ta_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_ta_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_1_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 36, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 7, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 9, 12, 10, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 13, 15, // tri2 + 0, 2, 17 // tri3 + ), + gsSPNTriangles_5b( + 2, 4, 17, // tri0 + 4, 18, 17, // tri1 + 1, 19, 20, // tri2 + 19, 7, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 7, // tri0 + 1, 22, 19, // tri1 + 22, 23, 19, // tri2 + 23, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 1, 24, 22, // tri0 + 24, 23, 22, // tri1 + 24, 25, 23, // tri2 + 1, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 24, // tri0 + 27, 25, 24, // tri1 + 27, 28, 25, // tri2 + 26, 29, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 30, 28, 27, // tri1 + 26, 8, 29, // tri2 + 8, 31, 29 // tri3 + ), + gsSPNTriangles_5b( + 31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_ta_1_v[47], 13, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 11, 7, // tri0 + 11, 12, 7, // tri1 + 12, 10, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c new file mode 100644 index 00000000..652c9771 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_1/grd_s_o_ta_1_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_ta_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_ta_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_1_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c b/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c new file mode 100644 index 00000000..107617a7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2.c @@ -0,0 +1,126 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_ta_2_v[] = { +#include "assets/field/bg/grd_s_o_ta_2_v.inc" +}; + +extern Gfx grd_s_o_ta_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_ta_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_2_v[15], 31, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 6, // tri0 + 5, 0, 2, // tri1 + 2, 7, 6, // tri2 + 2, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 5, 6, 8, // tri0 + 6, 9, 8, // tri1 + 6, 7, 9, // tri2 + 5, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 11, 10, // tri1 + 12, 5, 13, // tri2 + 5, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 13, // tri0 + 10, 11, 14, // tri1 + 12, 13, 15, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 17, 12, 18, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 16, 20, // tri0 + 17, 21, 22, // tri1 + 21, 23, 22, // tri2 + 21, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 17, 22, 24, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 17, 27 // tri3 + ), + gsSPNTriangles_5b( + 17, 24, 27, // tri0 + 24, 28, 27, // tri1 + 24, 25, 28, // tri2 + 29, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 27, // tri0 + 30, 26, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c new file mode 100644 index 00000000..350aa3ac --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_2/grd_s_o_ta_2_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_ta_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_ta_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_2_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c b/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c new file mode 100644 index 00000000..527cfcfc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3.c @@ -0,0 +1,126 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_ta_3_v[] = { +#include "assets/field/bg/grd_s_o_ta_3_v.inc" +}; + +extern Gfx grd_s_o_ta_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_3_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 9, // tri0 + 1, 6, 2, // tri1 + 3, 10, 11, // tri2 + 1, 0, 7 // tri3 + ), + gsSPNTriangles_5b( + 0, 12, 7, // tri0 + 6, 13, 2, // tri1 + 6, 5, 13, // tri2 + 3, 14, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 6, 10, // tri0 + 6, 14, 5, // tri1 + 6, 1, 7, // tri2 + 6, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 3, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_ta_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_ta_3_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 37, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 0, 6, 1, // tri1 + 6, 4, 1, // tri2 + 6, 7, 4 // tri3 + ), + gsSPNTriangles_5b( + 8, 3, 5, // tri0 + 8, 9, 3, // tri1 + 9, 2, 3, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 8, // tri0 + 11, 2, 12, // tri1 + 11, 13, 2, // tri2 + 14, 15, 10 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 15, // tri0 + 16, 13, 15, // tri1 + 17, 18, 14, // tri2 + 18, 19, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 13, 19, // tri0 + 20, 21, 17, // tri1 + 21, 18, 17, // tri2 + 21, 13, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 13, // tri0 + 23, 21, 20, // tri1 + 24, 22, 21, // tri2 + 23, 24, 21 // tri3 + ), + gsSPNTriangles_5b( + 25, 26, 23, // tri0 + 26, 22, 24, // tri1 + 26, 24, 23, // tri2 + 27, 26, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 28, 29, 26, // tri1 + 29, 22, 26, // tri2 + 30, 31, 27 // tri3 + ), + gsSPNTriangles_5b( + 31, 28, 27, // tri0 + 31, 29, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c new file mode 100644 index 00000000..359efe4c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_ta_3/grd_s_o_ta_3_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_ta_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_ta_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_ta_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_ta_3_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c b/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c new file mode 100644 index 00000000..c8b99341 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_wf_1_v[] = { +#include "assets/field/bg/grd_s_o_wf_1_v.inc" +}; + +extern Gfx grd_s_o_wf_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_wf_1_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_wf_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_wf_1_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 32, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 1, 5, // tri1 + 6, 7, 1, // tri2 + 7, 2, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 9, 11, 10, // tri1 + 11, 12, 10, // tri2 + 4, 3, 13 // tri3 + ), + gsSPNTriangles_5b( + 3, 14, 13, // tri0 + 3, 0, 14, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 17, // tri0 + 15, 17, 20, // tri1 + 17, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 0, 20, 22, // tri0 + 0, 15, 20, // tri1 + 20, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 13, 22, 23, // tri0 + 13, 14, 22, // tri1 + 14, 0, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 15, 24, 29, // tri2 + 24, 30, 29 // tri3 + ), + gsSPNTriangles_5b( + 30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_wf_1_v[47], 16, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 4, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 12, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 7, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c b/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c new file mode 100644 index 00000000..10b70687 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_1/grd_s_o_wf_1_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_wf_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_1_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_1_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_1_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_wf_1_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_1_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_1_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_1_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_1_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c b/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c new file mode 100644 index 00000000..1d705004 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2.c @@ -0,0 +1,144 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_wf_2_v[] = { +#include "assets/field/bg/grd_s_o_wf_2_v.inc" +}; + +extern Gfx grd_s_o_wf_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_wf_2_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 7, 4, 8, // tri1 + 4, 9, 8, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 1, 5, 13, // tri1 + 1, 0, 5, // tri2 + 4, 2, 9 // tri3 + ), + gsSPNTriangles_5b( + 4, 0, 2, // tri0 + 4, 11, 6, // tri1 + 4, 7, 11, // tri2 + 10, 8, 14 // tri3 + ), + gsSPNTriangles_5b( + 10, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_wf_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_o_wf_2_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 31, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 2, 1, // tri0 + 5, 6, 2, // tri1 + 4, 7, 1, // tri2 + 7, 5, 1 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 9, 10, 5, // tri1 + 7, 8, 5, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 7, 11, 8, // tri1 + 14, 15, 11, // tri2 + 15, 16, 11 // tri3 + ), + gsSPNTriangles_5b( + 7, 14, 11, // tri0 + 7, 17, 14, // tri1 + 18, 19, 14, // tri2 + 19, 20, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 14, // tri0 + 21, 22, 18, // tri1 + 22, 23, 18, // tri2 + 17, 21, 18 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 21, // tri0 + 24, 26, 25, // tri1 + 17, 24, 21, // tri2 + 27, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 26, // tri0 + 17, 27, 24, // tri1 + 29, 30, 27, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_o_wf_2_v[47], 19, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 3, // tri0 + 1, 4, 3, // tri1 + 7, 8, 4, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 1, 7, 4, // tri0 + 10, 11, 7, // tri1 + 10, 12, 11, // tri2 + 1, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 10, // tri0 + 13, 14, 12, // tri1 + 1, 13, 10, // tri2 + 1, 15, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 13, // tri0 + 17, 18, 13, // tri1 + 15, 16, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c b/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c new file mode 100644 index 00000000..7e2f585b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_2/grd_s_o_wf_2_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_wf_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_2_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_2_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_2_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_wf_2_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_2_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_2_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_2_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_2_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c b/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c new file mode 100644 index 00000000..0c96a9fe --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3.c @@ -0,0 +1,138 @@ +#include "libforest/gbi_extensions.h" + +extern u8 wave3_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 beach2_tex_dummy2[]; + +static Vtx grd_s_o_wf_3_v[] = { +#include "assets/field/bg/grd_s_o_wf_3_v.inc" +}; + +extern Gfx grd_s_o_wf_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsSPDisplayList(0x0C000000), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_o_wf_3_v[0], 15, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 8, 9, // tri2 + 10, 7, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 12, // tri0 + 0, 13, 5, // tri1 + 1, 0, 5, // tri2 + 4, 9, 2 // tri3 + ), + gsSPNTriangles_5b( + 1, 4, 2, // tri0 + 4, 6, 11, // tri1 + 7, 4, 11, // tri2 + 10, 14, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 10, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_o_wf_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave1_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 0, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTextureImage_Dolphin(G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, wave3_tex_dummy), + gsDPSetTile_Dolphin(G_DOLPHIN_TLUT_DEFAULT_MODE, 1, 0, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x0D000000), + gsSPVertex(&grd_s_o_wf_3_v[15], 32, 0), + gsSPNTrianglesInit_5b( + 30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b( + 2, 3, 5, // tri0 + 3, 6, 5, // tri1 + 4, 2, 5, // tri2 + 5, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 5, 8, // tri1 + 10, 4, 5, // tri2 + 8, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 11, // tri0 + 10, 8, 12, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 13, 15, // tri0 + 15, 14, 18, // tri1 + 14, 19, 18, // tri2 + 17, 15, 18 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 21, // tri0 + 18, 22, 20, // tri1 + 23, 18, 21, // tri2 + 23, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 21, 24, 25, // tri0 + 21, 26, 24, // tri1 + 23, 21, 25, // tri2 + 25, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 25, 29, 27, // tri0 + 30, 23, 28, // tri1 + 23, 25, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_o_wf_3_v[46], 16, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 5, 7, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 7, 12, 10, // tri0 + 13, 9, 11, // tri1 + 9, 7, 11, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 14, // tri0 + 13, 11, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c b/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c new file mode 100644 index 00000000..507125e2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_o_wf_3/grd_s_o_wf_3_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_o_wf_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL grd_s_o_wf_3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_o_wf_3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, grd_s_o_wf_3_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1.c b/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1.c new file mode 100644 index 00000000..b9a6613f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1.c @@ -0,0 +1,224 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_1_v[] = { +#include "assets/field/bg/grd_s_r1_1_v.inc" +}; + +extern Gfx grd_s_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_1_v[175], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 8, 9, 6, // tri2 + 9, 4, 6 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 11, 13, 12, // tri1 + 1, 14, 15, // tri2 + 1, 15, 2 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 12, 21, 10 // tri3 + ), + gsSPNTriangles_5b(21, 22, 10, // tri0 + 21, 23, 22, // tri1 + 5, 24, 7, // tri2 + 24, 25, 7 // tri3 + ), + gsSPNTriangles_5b(18, 17, 26, // tri0 + 18, 3, 20, // tri1 + 3, 0, 20, // tri2 + 14, 27, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 27, 30, 29, // tri1 + 30, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 8, 19, 20, // tri1 + 19, 13, 21, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 8, 20, 23, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(24, 23, 25, // tri0 + 25, 28, 27, // tri1 + 15, 16, 28, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r1_1_v[64], 9, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_1_v[73], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 5, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 10, 14, 17, // tri1 + 18, 7, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 11, 24, // tri0 + 23, 24, 21, // tri1 + 15, 20, 22, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(0, 28, 29, // tri0 + 26, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_1_v[105], 22, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 8, 9, 6, // tri1 + 9, 10, 11, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 14, 18, // tri1 + 19, 17, 18, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 13, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_1_v[127], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 0, 9, // tri1 + 0, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 1, 13, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 18, 11, 19 // tri3 + ), + gsSPNTriangles_5b(11, 13, 19, // tri0 + 20, 18, 21, // tri1 + 18, 19, 21, // tri2 + 22, 14, 16 // tri3 + ), + gsSPNTriangles_5b(22, 23, 14, // tri0 + 22, 24, 23, // tri1 + 9, 25, 8, // tri2 + 25, 26, 8 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 7, 29, // tri1 + 7, 30, 29, // tri2 + 30, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_r1_1_v[159], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 11, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c new file mode 100644 index 00000000..29f5df31 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_1/grd_s_r1_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2.c b/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2.c new file mode 100644 index 00000000..4bf17add --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2.c @@ -0,0 +1,253 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_2_v[] = { +#include "assets/field/bg/grd_s_r1_2_v.inc" +}; + +extern Gfx grd_s_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_2_v[187], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 10, 8, 9, // tri1 + 10, 9, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 14, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_2_v[174], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 3, 6, 1, // tri1 + 6, 7, 1, // tri2 + 1, 8, 2 // tri3 + ), + gsSPNTriangles_5b(8, 9, 2, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 8, 11, 9, // tri1 + 17, 18, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 22, 20, // tri0 + 22, 23, 20, // tri1 + 23, 24, 20, // tri2 + 21, 18, 19 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 13, 26, 14, // tri1 + 26, 27, 14, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_2_v[32], 28, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(1, 4, 3, // tri0 + 2, 6, 7, // tri1 + 6, 8, 7, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(2, 10, 6, // tri0 + 8, 11, 9, // tri1 + 12, 13, 14, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b(10, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 26, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_2_v[60], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 7, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 17, 16, 6, // tri1 + 18, 19, 20, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 21, // tri0 + 24, 23, 21, // tri1 + 25, 26, 24, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(29, 30, 27, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_2_v[92], 25, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 5, 23, // tri1 + 22, 23, 20, // tri2 + 9, 19, 21 // tri3 + ), + gsSPNTriangles_5b(16, 24, 17, // tri0 + 14, 16, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_2_v[117], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 2, 6, // tri2 + 7, 9, 5 // tri3 + ), + gsSPNTriangles_5b(2, 8, 0, // tri0 + 10, 4, 3, // tri1 + 10, 3, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 13, 11, 14, // tri1 + 15, 13, 14, // tri2 + 16, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 14, 17, // tri0 + 18, 16, 17, // tri1 + 19, 18, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 26, 25, 27, // tri2 + 28, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 27, 29, // tri0 + 30, 28, 29, // tri1 + 30, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_2_v[149], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 7, 5, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 9, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_2_v[161], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c new file mode 100644 index 00000000..ae24da36 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_2/grd_s_r1_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3.c b/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3.c new file mode 100644 index 00000000..5b2a2050 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3.c @@ -0,0 +1,270 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_3_v[] = { +#include "assets/field/bg/grd_s_r1_3_v.inc" +}; + +extern Gfx grd_s_r1_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_3_v[195], 20, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 5, 13 // tri3 + ), + gsSPNTriangles_5b(5, 4, 13, // tri0 + 0, 14, 1, // tri1 + 0, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_3_v[184], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b(10, 7, 6, // tri0 + 11, 12, 13, // tri1 + 12, 14, 13, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 23, 26, // tri0 + 11, 27, 28, // tri1 + 27, 17, 29, // tri2 + 21, 30, 19 // tri3 + ), + gsSPNTriangles_5b(7, 10, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 9, 8, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b(9, 11, 14, // tri0 + 9, 14, 15, // tri1 + 15, 12, 9, // tri2 + 12, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 21, 17, // tri1 + 18, 17, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 18, // tri0 + 24, 25, 23, // tri1 + 19, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 28, 26, // tri0 + 24, 30, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_3_v[63], 20, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 3, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 8, 11, // tri2 + 8, 12, 11 // tri3 + ), + gsSPNTriangles_5b(8, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 16, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(17, 8, 18, // tri0 + 16, 15, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_3_v[83], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 7, 10, // tri1 + 9, 5, 7, // tri2 + 5, 11, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 6, // tri0 + 12, 13, 6, // tri1 + 12, 14, 13, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 15, 17, 16, // tri1 + 17, 18, 16, // tri2 + 18, 2, 16 // tri3 + ), + gsSPNTriangles_5b(18, 0, 2, // tri0 + 0, 19, 1, // tri1 + 19, 3, 1, // tri2 + 3, 20, 4 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 25, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_3_v[115], 18, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 7, // tri1 + 6, 8, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 9, 13, 12, // tri1 + 13, 14, 12, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 16, 17, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_3_v[133], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 18, 19, // tri1 + 18, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 26, 27, 28, // tri1 + 27, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_3_v[164], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_3_v[173], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c new file mode 100644 index 00000000..a6a4e0d8 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_3/grd_s_r1_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4.c b/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4.c new file mode 100644 index 00000000..284d4e94 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4.c @@ -0,0 +1,224 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_4_v[] = { +#include "assets/field/bg/grd_s_r1_4_v.inc" +}; + +extern Gfx grd_s_r1_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_4_v[158], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 4, 14, 2 // tri3 + ), + gsSPNTriangles_5b(14, 20, 2, // tri0 + 17, 21, 19, // tri1 + 22, 18, 23, // tri2 + 18, 19, 23 // tri3 + ), + gsSPNTriangles_5b(24, 0, 2, // tri0 + 24, 25, 0, // tri1 + 25, 26, 0, // tri2 + 25, 23, 26 // tri3 + ), + gsSPNTriangles_5b(23, 19, 26, // tri0 + 23, 27, 22, // tri1 + 14, 15, 20, // tri2 + 15, 28, 20 // tri3 + ), + gsSPNTriangles_5b(15, 29, 28, // tri0 + 29, 30, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_4_v[31], 28, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 3, 5, 2, // tri1 + 0, 7, 1, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 23, 24, 21, // tri1 + 21, 25, 22, // tri2 + 24, 26, 21 // tri3 + ), + gsSPNTriangles_5b(25, 27, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_4_v[59], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(4, 2, 3, // tri0 + 0, 6, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 7, 13, 8, // tri2 + 5, 14, 4 // tri3 + ), + gsSPNTriangles_5b(12, 15, 11, // tri0 + 13, 16, 8, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 22, 23, 24, // tri1 + 22, 6, 23, // tri2 + 6, 25, 23 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 24, 21, // tri1 + 6, 0, 25, // tri2 + 5, 26, 14 // tri3 + ), + gsSPNTriangles_5b(5, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r1_4_v[90], 15, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 12, 13, 10, // tri2 + 12, 14, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_4_v[105], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 4, // tri1 + 8, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 12, 16, 13, // tri2 + 18, 6, 19 // tri3 + ), + gsSPNTriangles_5b(8, 20, 21, // tri0 + 20, 11, 22, // tri1 + 17, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 25, 29, // tri0 + 28, 29, 30, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_4_v[137], 21, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 11, 12, // tri1 + 13, 14, 15, // tri2 + 11, 13, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 18, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c new file mode 100644 index 00000000..b7720262 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_4/grd_s_r1_4_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_4_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c b/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c new file mode 100644 index 00000000..bbb406fc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1.c @@ -0,0 +1,278 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_b_1_v[] = { +#include "assets/field/bg/grd_s_r1_b_1_v.inc" +}; + +extern Gfx grd_s_r1_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_1_v[199], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 6, 0, 7, // tri1 + 0, 2, 7, // tri2 + 1, 8, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 3, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_1_v[172], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 7, 10, // tri1 + 8, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r1_b_1_v[187], 12, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 2, // tri1 + 6, 11, 8, // tri2 + 4, 10, 11 // tri3 + ), + gsSPNTriangles_5b(4, 11, 6, // tri0 + 2, 10, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_1_v[0], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_b_1_v[15], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 3, 8, 4, // tri1 + 3, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 10, 14, 13, // tri1 + 11, 15, 12, // tri2 + 15, 16, 12 // tri3 + ), + gsSPNTriangles_5b(16, 17, 12, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 17, 22, // tri0 + 17, 18, 22, // tri1 + 23, 24, 20, // tri2 + 24, 25, 20 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 25, 21, 20, // tri1 + 27, 28, 29, // tri2 + 27, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r1_b_1_v[46], 27, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 2, 12, // tri0 + 10, 13, 2, // tri1 + 10, 14, 13, // tri2 + 10, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 17, 19, 15, // tri1 + 16, 19, 17, // tri2 + 19, 14, 15 // tri3 + ), + gsSPNTriangles_5b(20, 2, 13, // tri0 + 20, 0, 2, // tri1 + 21, 0, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 22, // tri0 + 26, 25, 24, // tri1 + 25, 23, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_1_v[73], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 7, 9, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 15, 16, 0, // tri1 + 0, 16, 1, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 22, 23, 21, // tri1 + 24, 25, 23, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_1_v[105], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 12, 18, // tri1 + 3, 4, 8, // tri2 + 9, 11, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_1_v[124], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 0, 9, 8, // tri1 + 0, 2, 9, // tri2 + 1, 10, 3 // tri3 + ), + gsSPNTriangles_5b(1, 11, 10, // tri0 + 12, 13, 11, // tri1 + 14, 15, 13, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 19, 20, 18, // tri1 + 5, 7, 6, // tri2 + 7, 0, 8 // tri3 + ), + gsSPNTriangles_5b(1, 12, 11, // tri0 + 12, 14, 13, // tri1 + 14, 16, 15, // tri2 + 16, 19, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_1_v[155], 17, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 9, 7, // tri1 + 10, 11, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 2, 16, 0, // tri1 + 0, 4, 3, // tri2 + 5, 4, 6 // tri3 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c new file mode 100644 index 00000000..957c7b73 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_1/grd_s_r1_b_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_b_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c b/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c new file mode 100644 index 00000000..f6ad2164 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2.c @@ -0,0 +1,321 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_b_2_v[] = { +#include "assets/field/bg/grd_s_r1_b_2_v.inc" +}; + +extern Gfx grd_s_r1_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_2_v[260], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_2_v[209], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_b_2_v[222], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(8, 7, 10, // tri0 + 7, 12, 10, // tri1 + 7, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 16, 19, // tri1 + 18, 14, 16, // tri2 + 20, 14, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 14, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(24, 23, 26, // tri0 + 23, 28, 26, // tri1 + 23, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[252], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 6, 0, 4, // tri1 + 6, 7, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 13, 17, 14, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 12, 19, // tri0 + 12, 21, 19, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 25, 7, 26, // tri1 + 7, 8, 26, // tri2 + 5, 27, 6 // tri3 + ), + gsSPNTriangles_5b(16, 28, 29, // tri0 + 28, 30, 29, // tri1 + 16, 29, 15, // tri2 + 30, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 6, 8, 7, // tri1 + 5, 9, 10, // tri2 + 5, 11, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 15, 16, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 14, // tri0 + 19, 20, 21, // tri1 + 20, 22, 21, // tri2 + 20, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 15, 27, // tri1 + 26, 16, 15, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[63], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 3, // tri0 + 8, 9, 6, // tri1 + 9, 8, 10, // tri2 + 8, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_2_v[79], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 5, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 22, // tri0 + 16, 23, 24, // tri1 + 23, 21, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[110], 32, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26, // tri2 + 27, 24, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[142], 12, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 6, 9, // tri2 + 11, 0, 2 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_2_v[154], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_2_v[167], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 5, 7, 0, // tri1 + 4, 3, 17, // tri2 + 3, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 22, // tri1 + 21, 16, 22, // tri2 + 18, 23, 19 // tri3 + ), + gsSPNTriangles_5b(18, 24, 23, // tri0 + 24, 25, 23, // tri1 + 24, 26, 25, // tri2 + 24, 27, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 27, 29, 28, // tri1 + 29, 30, 28, // tri2 + 15, 22, 16 // tri3 + ), + gsSPNTriangles_5b(20, 31, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_2_v[199], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(8, 9, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c new file mode 100644 index 00000000..8bbd8aac --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_2/grd_s_r1_b_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_b_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c b/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c new file mode 100644 index 00000000..632ae5a3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3.c @@ -0,0 +1,325 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_b_3_v[] = { +#include "assets/field/bg/grd_s_r1_b_3_v.inc" +}; + +extern Gfx grd_s_r1_b_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_3_v[233], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(11, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 2, 18, // tri0 + 2, 1, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_b_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_b_3_v[184], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_b_3_v[195], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 6 // tri3 + ), + gsSPNTriangles_5b(11, 9, 6, // tri0 + 11, 12, 9, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 14, 19, // tri1 + 14, 16, 19, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 16, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 26, 27, 22 // tri3 + ), + gsSPNTriangles_5b(27, 25, 22, // tri0 + 27, 28, 25, // tri1 + 27, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_3_v[225], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 5, 6, 7, // tri1 + 5, 2, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_b_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 8, 7, 6, // tri1 + 8, 9, 7, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b(11, 7, 12, // tri0 + 13, 14, 15, // tri1 + 14, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b(11, 23, 15, // tri0 + 24, 25, 26, // tri1 + 27, 25, 24, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(30, 2, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_3_v[31], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 1, 0, 6, // tri1 + 6, 7, 1, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 21, 22, // tri1 + 21, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(23, 26, 25, // tri0 + 27, 1, 7, // tri1 + 1, 28, 2, // tri2 + 1, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_3_v[63], 15, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 7, // tri1 + 6, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 11, 12, 13, // tri1 + 5, 14, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_3_v[78], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 4, 7, // tri0 + 8, 9, 10, // tri1 + 5, 8, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 18, 19, 20, // tri2 + 21, 11, 22 // tri3 + ), + gsSPNTriangles_5b(21, 22, 9, // tri0 + 18, 1, 19, // tri1 + 17, 23, 20, // tri2 + 23, 18, 20 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 27, 26, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_3_v[109], 7, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_3_v[116], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 0, // tri0 + 5, 4, 6, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 13, 12, 14, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 25, 26, 23, // tri1 + 27, 28, 29, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(28, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_b_3_v[148], 25, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 5, 6, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 16, 14, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_b_3_v[173], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c new file mode 100644 index 00000000..70de86af --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_b_3/grd_s_r1_b_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_b_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_b_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c b/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c new file mode 100644 index 00000000..2536cd97 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1.c @@ -0,0 +1,312 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r1_p_1_v[] = { +#include "assets/field/bg/grd_s_r1_p_1_v.inc" +}; + +extern Gfx grd_s_r1_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_p_1_v[229], 22, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 4, 7, // tri1 + 4, 5, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 8, 10, // tri0 + 12, 11, 10, // tri1 + 10, 9, 13, // tri2 + 14, 12, 10 // tri3 + ), + gsSPNTriangles_5b(14, 10, 15, // tri0 + 7, 14, 15, // tri1 + 6, 7, 15, // tri2 + 16, 6, 15 // tri3 + ), + gsSPNTriangles_5b(17, 16, 15, // tri0 + 18, 17, 15, // tri1 + 18, 15, 10, // tri2 + 18, 10, 13 // tri3 + ), + gsSPNTriangles_5b(19, 18, 13, // tri0 + 19, 13, 20, // tri1 + 21, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r1_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r1_p_1_v[191], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 18, 14, 17, // tri1 + 18, 17, 19, // tri2 + 20, 21, 14 // tri3 + ), + gsSPNTriangles_5b(20, 14, 18, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 25, 24, 26 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 24, 28, 29, // tri1 + 24, 29, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_p_1_v[221], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 7, 0, // tri1 + 6, 0, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 4, 5, 8, // tri1 + 9, 10, 1, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(9, 12, 11, // tri0 + 12, 13, 11, // tri1 + 14, 13, 15, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b(18, 16, 19, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 25, 22, 24, // tri1 + 25, 26, 22, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_p_1_v[32], 12, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 0, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r1_p_1_v[44], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 2, 6, // tri0 + 2, 3, 6, // tri1 + 7, 8, 9, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 5, 16, 2 // tri3 + ), + gsSPNTriangles_5b(16, 17, 2, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b(21, 23, 20, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_p_1_v[76], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 0, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 9, 10, 8, // tri2 + 7, 11, 9 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 15, 1, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 21, 18, 23 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 6, 8, 25, // tri1 + 26, 27, 28, // tri2 + 27, 29, 30 // tri3 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_p_1_v[108], 28, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 5, 4, 7, // tri1 + 9, 10, 11, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(10, 9, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 13, 16 // tri3 + ), + gsSPNTriangles_5b(12, 14, 16, // tri0 + 12, 16, 13, // tri1 + 18, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 26, 23, // tri1 + 23, 22, 25, // tri2 + 27, 14, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r1_p_1_v[136], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 8, // tri2 + 10, 7, 8 // tri3 + ), + gsSPNTriangles_5b(5, 11, 6, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 0, 17, // tri1 + 4, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(1, 19, 3, // tri0 + 1, 20, 19, // tri1 + 1, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 21, 24, 23, // tri1 + 21, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r1_p_1_v[168], 23, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 5, 7, 6, // tri1 + 5, 8, 7, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 8, 11, 9, // tri1 + 12, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 15, 19, 18, // tri2 + 17, 20, 16 // tri3 + ), + gsSPNTriangles_5b(20, 21, 16, // tri0 + 20, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c new file mode 100644 index 00000000..b30d1a0d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r1_p_1/grd_s_r1_p_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r1_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r1_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r1_p_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1.c b/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1.c new file mode 100644 index 00000000..fcd0567a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1.c @@ -0,0 +1,259 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_1_v[] = { +#include "assets/field/bg/grd_s_r2_1_v.inc" +}; + +extern Gfx grd_s_r2_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_1_v[168], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 5, 4, // tri1 + 6, 7, 5, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 9, 8, // tri1 + 10, 11, 9, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 13, 12, // tri1 + 14, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_1_v[155], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 2, 6, // tri1 + 2, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 10, 9, // tri1 + 10, 12, 13, // tri2 + 14, 10, 13 // tri3 + ), + gsSPNTriangles_5b(4, 15, 5, // tri0 + 16, 5, 15, // tri1 + 5, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 22, 23, 24, // tri1 + 23, 22, 25, // tri2 + 20, 26, 18 // tri3 + ), + gsSPNTriangles_5b(26, 27, 18, // tri0 + 7, 28, 8, // tri1 + 29, 27, 3, // tri2 + 20, 30, 26 // tri3 + ), + gsSPVertex(&grd_s_r2_1_v[31], 27, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 4, 8, 9, // tri1 + 8, 10, 11, // tri2 + 10, 11, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 12, 13, 14, // tri1 + 14, 11, 12, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b(4, 9, 7, // tri0 + 15, 16, 17, // tri1 + 16, 18, 19, // tri2 + 20, 5, 21 // tri3 + ), + gsSPNTriangles_5b(20, 3, 5, // tri0 + 22, 6, 7, // tri1 + 23, 24, 25, // tri2 + 25, 24, 22 // tri3 + ), + gsSPNTriangles_5b(26, 20, 21, // tri0 + 1, 26, 24, // tri1 + 24, 2, 1, // tri2 + 24, 23, 2 // tri3 + ), + gsSPNTriangles_5b(1, 20, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_1_v[58], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(2, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 19, 22, 21, // tri1 + 22, 23, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_1_v[90], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_1_v[107], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 12, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(14, 19, 15, // tri0 + 19, 16, 15, // tri1 + 9, 11, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(20, 8, 21, // tri0 + 0, 20, 1, // tri1 + 6, 3, 4, // tri2 + 3, 0, 2 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 22, 26, // tri1 + 27, 25, 26, // tri2 + 23, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_1_v[139], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_1_v[142], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c new file mode 100644 index 00000000..c8e5792d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_1/grd_s_r2_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2.c b/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2.c new file mode 100644 index 00000000..8cbd5683 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2.c @@ -0,0 +1,219 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_2_v[] = { +#include "assets/field/bg/grd_s_r2_2_v.inc" +}; + +extern Gfx grd_s_r2_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_2_v[182], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 14, 5 // tri3 + ), + gsSPNTriangles_5b(16, 12, 14, // tri0 + 17, 18, 19, // tri1 + 17, 20, 18, // tri2 + 18, 21, 19 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 25, 23, // tri1 + 23, 10, 24, // tri2 + 10, 26, 11 // tri3 + ), + gsSPNTriangles_5b(6, 24, 10, // tri0 + 27, 28, 29, // tri1 + 27, 30, 28, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_r2_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 15, 16, 17, // tri1 + 16, 15, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 23, 24, 25, // tri1 + 25, 24, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(14, 30, 13, // tri0 + 14, 31, 30, // tri1 + 14, 25, 31, // tri2 + 25, 26, 31 // tri3 + ), + gsSPVertex(&grd_s_r2_2_v[64], 7, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_2_v[71], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 6, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(6, 11, 7, // tri0 + 5, 7, 9, // tri1 + 14, 8, 15, // tri2 + 12, 3, 16 // tri3 + ), + gsSPNTriangles_5b(1, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 22, 23, // tri2 + 24, 23, 22 // tri3 + ), + gsSPNTriangles_5b(25, 24, 22, // tri0 + 26, 27, 25, // tri1 + 28, 29, 26, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_r2_2_v[103], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 6, 10, // tri1 + 7, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 9, 18, // tri1 + 19, 20, 21, // tri2 + 22, 19, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 24, 28, // tri1 + 20, 29, 30, // tri2 + 29, 27, 31 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_2_v[135], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 23, 24, 22, // tri1 + 19, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 23, 26, 25, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_2_v[165], 17, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 0, 16, 1 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c new file mode 100644 index 00000000..6e2c75aa --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_2/grd_s_r2_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3.c b/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3.c new file mode 100644 index 00000000..04a2f4be --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3.c @@ -0,0 +1,280 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_3_v[] = { +#include "assets/field/bg/grd_s_r2_3_v.inc" +}; + +extern Gfx grd_s_r2_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_3_v[203], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_3_v[189], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 8, 13 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(7, 4, 3, // tri0 + 8, 9, 6, // tri1 + 6, 9, 7, // tri2 + 1, 10, 8 // tri3 + ), + gsSPNTriangles_5b(8, 10, 9, // tri0 + 0, 10, 1, // tri1 + 11, 5, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 17, 2, 11, // tri1 + 17, 18, 2, // tri2 + 19, 14, 12 // tri3 + ), + gsSPNTriangles_5b(20, 13, 15, // tri0 + 20, 21, 13, // tri1 + 22, 23, 24, // tri2 + 22, 25, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_3_v[31], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 14, 16, 13 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 21, 20, // tri1 + 22, 23, 21, // tri2 + 22, 9, 23 // tri3 + ), + gsSPNTriangles_5b(9, 10, 23, // tri0 + 8, 5, 6, // tri1 + 24, 1, 4, // tri2 + 1, 24, 2 // tri3 + ), + gsSPNTriangles_5b(0, 2, 25, // tri0 + 15, 26, 27, // tri1 + 26, 28, 25, // tri2 + 28, 26, 12 // tri3 + ), + gsSPNTriangles_5b(26, 15, 12, // tri0 + 28, 29, 25, // tri1 + 30, 29, 28, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r2_3_v[63], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_3_v[78], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 8, 1, // tri1 + 0, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 11, 4, 12, // tri2 + 4, 13, 12 // tri3 + ), + gsSPNTriangles_5b(4, 6, 13, // tri0 + 5, 14, 7, // tri1 + 5, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 24, 25, 22, // tri2 + 25, 26, 22 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_3_v[110], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_3_v[123], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 7, 8, 10, // tri1 + 1, 14, 2, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 20, 22, 23, // tri1 + 22, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_3_v[153], 23, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 14, 15, 13, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 0, 2, // tri0 + 14, 20, 16, // tri1 + 21, 22, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_3_v[176], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 11, 12, // tri2 + 11, 3, 12 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c new file mode 100644 index 00000000..e363a69a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_3/grd_s_r2_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4.c b/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4.c new file mode 100644 index 00000000..b55045a0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4.c @@ -0,0 +1,279 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_4_v[] = { +#include "assets/field/bg/grd_s_r2_4_v.inc" +}; + +extern Gfx grd_s_r2_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_4_v[196], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(10, 3, 1, // tri0 + 10, 11, 3, // tri1 + 8, 13, 12, // tri2 + 8, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 15, 16, 13, // tri1 + 15, 4, 16, // tri2 + 4, 6, 16 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_4_v[185], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 6, 7, 8, // tri1 + 7, 0, 8, // tri2 + 7, 1, 0 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 10, 7, 9, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 13, 17, // tri1 + 17, 18, 15, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 14, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 23, 26, 25 // tri3 + ), + gsSPNTriangles_5b(23, 21, 26, // tri0 + 27, 28, 29, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_4_v[32], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 7, 10, 9, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 19, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(5, 8, 6, // tri0 + 9, 10, 12, // tri1 + 9, 22, 23, // tri2 + 9, 12, 22 // tri3 + ), + gsSPNTriangles_5b(24, 23, 22, // tri0 + 25, 23, 24, // tri1 + 25, 26, 23, // tri2 + 27, 26, 25 // tri3 + ), + gsSPNTriangles_5b(28, 3, 6, // tri0 + 4, 28, 29, // tri1 + 28, 30, 29, // tri2 + 3, 28, 4 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 30, 26, 31, // tri1 + 27, 31, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_4_v[64], 21, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 5 // tri3 + ), + gsSPNTriangles_5b(5, 4, 10, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 18, 8, 19 // tri3 + ), + gsSPNTriangles_5b(8, 7, 19, // tri0 + 20, 10, 9, // tri1 + 20, 12, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_4_v[85], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 0, // tri0 + 8, 9, 6, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 19, 23, // tri0 + 17, 24, 25, // tri1 + 24, 26, 25, // tri2 + 26, 22, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_4_v[116], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_4_v[125], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 10, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 18, 22, 21, // tri1 + 23, 24, 25, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 28, 29, 26, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_4_v[157], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 9, 10, 6, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_4_v[174], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c new file mode 100644 index 00000000..6dcb55b2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_4/grd_s_r2_4_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_4_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c b/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c new file mode 100644 index 00000000..c9abacdd --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1.c @@ -0,0 +1,367 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_b_1_v[] = { +#include "assets/field/bg/grd_s_r2_b_1_v.inc" +}; + +extern Gfx grd_s_r2_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_1_v[270], 30, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 1, 10, 11, // tri1 + 12, 3, 11, // tri2 + 11, 2, 1 // tri3 + ), + gsSPNTriangles_5b(11, 3, 2, // tri0 + 13, 0, 2, // tri1 + 13, 14, 0, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(13, 16, 15, // tri0 + 16, 17, 15, // tri1 + 16, 5, 17, // tri2 + 16, 6, 5 // tri3 + ), + gsSPNTriangles_5b(4, 18, 2, // tri0 + 4, 19, 18, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 18, 20, // tri0 + 21, 8, 22, // tri1 + 8, 6, 22, // tri2 + 6, 23, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 23, // tri0 + 23, 24, 7, // tri1 + 9, 25, 23, // tri2 + 23, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 23, // tri0 + 23, 27, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_1_v[229], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 6, // tri0 + 9, 7, 10, // tri1 + 11, 10, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r2_b_1_v[242], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 5, 6, 2, // tri1 + 7, 8, 9, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 11, 12, 13, // tri1 + 7, 10, 11, // tri2 + 2, 6, 8 // tri3 + ), + gsSPNTriangles_5b(2, 8, 7, // tri0 + 0, 2, 7, // tri1 + 0, 7, 11, // tri2 + 3, 0, 11 // tri3 + ), + gsSPNTriangles_5b(3, 11, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[256], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 5, 8, 2 // tri3 + ), + gsSPNTriangles_5b(2, 9, 3, // tri0 + 2, 8, 9, // tri1 + 5, 10, 8, // tri2 + 5, 7, 10 // tri3 + ), + gsSPNTriangles_5b(11, 6, 4, // tri0 + 12, 11, 4, // tri1 + 13, 12, 1, // tri2 + 0, 13, 1 // tri3 + ), + gsSPNTriangles_5b(1, 12, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_1_v[0], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 11, 12, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_1_v[13], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 9, // tri2 + 0, 2, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 3, // tri0 + 15, 16, 14, // tri1 + 4, 6, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 17, 21, // tri0 + 22, 23, 24, // tri1 + 23, 20, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 30, // tri0 + 27, 22, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[45], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 0, 7, // tri0 + 8, 9, 10, // tri1 + 1, 8, 11, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_1_v[61], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 7, // tri1 + 11, 12, 9, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 17, 18, 15, // tri1 + 17, 19, 20, // tri2 + 18, 17, 20 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 16, 15, 18, // tri1 + 14, 13, 16, // tri2 + 12, 11, 14 // tri3 + ), + gsSPNTriangles_5b(10, 9, 22, // tri0 + 9, 12, 22, // tri1 + 8, 7, 10, // tri2 + 4, 6, 8 // tri3 + ), + gsSPNTriangles_5b(23, 5, 4, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 30, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[93], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 11, 12, 9, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(11, 14, 13, // tri0 + 15, 16, 14, // tri1 + 14, 16, 13, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 17, 19, 18, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 24, 21, // tri1 + 21, 18, 19, // tri2 + 25, 26, 1 // tri3 + ), + gsSPNTriangles_5b(1, 0, 25, // tri0 + 25, 27, 26, // tri1 + 28, 29, 27, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 29, 28, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[125], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 4, 3, 5, // tri1 + 7, 8, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_b_1_v[135], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 15, 17, 13, // tri2 + 17, 18, 13 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 19, 22, 20, // tri1 + 23, 21, 24, // tri2 + 21, 20, 24 // tri3 + ), + gsSPNTriangles_5b(25, 12, 26, // tri0 + 12, 27, 26, // tri1 + 28, 2, 4, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[167], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 21, 24, 22, // tri1 + 20, 25, 23, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 26, 29, 28, // tri1 + 26, 30, 29, // tri2 + 26, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_r2_b_1_v[199], 30, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 4, 8, 7, // tri1 + 8, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 25, 26, 27, // tri2 + 28, 29, 26 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c new file mode 100644 index 00000000..cf175bd1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_1/grd_s_r2_b_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_b_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c b/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c new file mode 100644 index 00000000..0d02ac21 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2.c @@ -0,0 +1,316 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_b_2_v[] = { +#include "assets/field/bg/grd_s_r2_b_2_v.inc" +}; + +extern Gfx grd_s_r2_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_2_v[247], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_2_v[198], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_b_2_v[209], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 9, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 14, 19, // tri1 + 14, 16, 19, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(21, 14, 18, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 25, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_2_v[239], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 7, 4, // tri1 + 7, 0, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 3, 9, 10, // tri2 + 3, 8, 9 // tri3 + ), + gsSPNTriangles_5b(11, 9, 8, // tri0 + 11, 8, 12, // tri1 + 8, 5, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 4, 6, // tri0 + 16, 17, 13, // tri1 + 12, 5, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 20, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(24, 21, 22, // tri0 + 27, 28, 29, // tri1 + 30, 29, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 10, 11, 8, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 16, 15, 17, // tri1 + 18, 19, 20, // tri2 + 18, 21, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 6, 28, // tri0 + 5, 29, 3, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_2_v[64], 14, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 8, 7, // tri1 + 11, 12, 8, // tri2 + 13, 8, 10 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_2_v[78], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(27, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_2_v[110], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_2_v[124], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 18, 19, // tri1 + 15, 17, 20, // tri2 + 12, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 21, 23, 26, // tri1 + 23, 25, 26, // tri2 + 12, 22, 13 // tri3 + ), + gsSPNTriangles_5b(27, 20, 28, // tri0 + 16, 19, 17, // tri1 + 18, 29, 30, // tri2 + 29, 14, 31 // tri3 + ), + gsSPVertex(&grd_s_r2_b_2_v[156], 31, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 8, 18 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 12, 14, 16, // tri1 + 20, 19, 21, // tri2 + 22, 20, 21 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 25, 23, 26, // tri1 + 27, 25, 28, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 27, 29, // tri0 + 14, 30, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_2_v[187], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c new file mode 100644 index 00000000..c32c176f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_2/grd_s_r2_b_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_b_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c b/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c new file mode 100644 index 00000000..5d4a3f6b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3.c @@ -0,0 +1,340 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_b_3_v[] = { +#include "assets/field/bg/grd_s_r2_b_3_v.inc" +}; + +extern Gfx grd_s_r2_b_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_3_v[263], 20, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 4, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 14, 11, 13, // tri1 + 14, 13, 15, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 14, 16, // tri0 + 18, 17, 16, // tri1 + 19, 18, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_b_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_b_3_v[212], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_b_3_v[225], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 6 // tri3 + ), + gsSPNTriangles_5b(11, 7, 6, // tri0 + 11, 12, 7, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 14, 19, // tri1 + 14, 16, 19, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b(16, 21, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 27, 22 // tri3 + ), + gsSPNTriangles_5b(27, 23, 22, // tri0 + 27, 28, 23, // tri1 + 27, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_3_v[255], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 5, 2, 6, // tri1 + 2, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_b_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 8, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 4, 16, 5 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 18, 21, 20, // tri2 + 18, 22, 21 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 25, 26, 24, // tri2 + 26, 23, 24 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 24, 30, 25, // tri1 + 31, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 12, 16, 15, // tri1 + 12, 17, 16, // tri2 + 13, 18, 14 // tri3 + ), + gsSPNTriangles_5b(18, 19, 14, // tri0 + 18, 20, 19, // tri1 + 21, 22, 0, // tri2 + 22, 1, 0 // tri3 + ), + gsSPNTriangles_5b(3, 23, 2, // tri0 + 23, 24, 2, // tri1 + 25, 26, 27, // tri2 + 28, 29, 4 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 28, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_3_v[64], 25, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 9, 6, 5, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(11, 14, 15, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 0, 18, 19 // tri3 + ), + gsSPNTriangles_5b(0, 20, 18, // tri0 + 20, 21, 18, // tri1 + 21, 22, 18, // tri2 + 14, 23, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_3_v[89], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 2, // tri2 + 10, 11, 2 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 7, 16, 17, // tri2 + 18, 19, 5 // tri3 + ), + gsSPNTriangles_5b(14, 20, 18, // tri0 + 12, 21, 22, // tri1 + 23, 24, 25, // tri2 + 26, 23, 27 // tri3 + ), + gsSPNTriangles_5b(24, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_3_v[121], 21, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 5, 20, // tri0 + 19, 20, 17, // tri1 + 9, 16, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_3_v[142], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_b_3_v[155], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 0, 2 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 11, 3, 12 // tri3 + ), + gsSPNTriangles_5b(8, 16, 9, // tri0 + 16, 17, 9, // tri1 + 11, 1, 3, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 20, 21, 22, // tri1 + 21, 10, 22, // tri2 + 10, 23, 22 // tri3 + ), + gsSPNTriangles_5b(20, 24, 21, // tri0 + 20, 25, 24, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(27, 30, 29, // tri0 + 30, 4, 29, // tri1 + 4, 6, 29, // tri2 + 10, 2, 23 // tri3 + ), + gsSPNTriangles_5b(15, 31, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_b_3_v[187], 25, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 15, 16, 13, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c new file mode 100644 index 00000000..e13cbbdb --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_b_3/grd_s_r2_b_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_b_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_b_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c b/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c new file mode 100644 index 00000000..16d2539e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r2_p_1_v[] = { +#include "assets/field/bg/grd_s_r2_p_1_v.inc" +}; + +extern Gfx grd_s_r2_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_p_1_v[321], 19, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 3, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(8, 11, 12, // tri0 + 8, 12, 9, // tri1 + 13, 0, 6, // tri2 + 11, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 3, 5, 12, // tri1 + 13, 6, 14, // tri2 + 16, 12, 17 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r2_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r2_p_1_v[277], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 13, 12, 14, // tri1 + 13, 14, 15, // tri2 + 12, 16, 17 // tri3 + ), + gsSPNTriangles_5b(12, 17, 14, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 23, // tri0 + 24, 25, 18, // tri1 + 24, 18, 22, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 29, 28, 30, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[309], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 10, 11, 4 // tri3 + ), + gsSPNTriangles_5b(10, 4, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r2_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 4, // tri0 + 9, 0, 3, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 12, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 15, 14, // tri0 + 26, 25, 28, // tri1 + 26, 29, 24, // tri2 + 30, 21, 26 // tri3 + ), + gsSPNTriangles_5b(11, 19, 12, // tri0 + 16, 31, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 9, 10, // tri0 + 11, 12, 13, // tri1 + 7, 6, 14, // tri2 + 15, 11, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 19, // tri2 + 24, 25, 15 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[64], 31, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 9, // tri2 + 1, 5, 2 // tri3 + ), + gsSPNTriangles_5b(17, 12, 18, // tri0 + 9, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 12, 14 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 29, 16, // tri1 + 23, 30, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_p_1_v[95], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 11, 12, 13, // tri1 + 12, 14, 13, // tri2 + 1, 0, 9 // tri3 + ), + gsSPNTriangles_5b(15, 11, 16, // tri0 + 17, 15, 16, // tri1 + 7, 18, 8, // tri2 + 3, 8, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 6, // tri0 + 10, 21, 19, // tri1 + 2, 22, 23, // tri2 + 24, 17, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 14, 26, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[125], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r2_p_1_v[136], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 7, // tri0 + 24, 28, 29, // tri1 + 24, 29, 30, // tri2 + 24, 30, 25 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[167], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 1, 11, // tri1 + 10, 2, 1, // tri2 + 12, 7, 9 // tri3 + ), + gsSPNTriangles_5b(13, 11, 14, // tri0 + 11, 1, 14, // tri1 + 15, 16, 17, // tri2 + 15, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 0, 14, 1, // tri1 + 0, 22, 14, // tri2 + 5, 6, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 24, 26, 27, // tri1 + 28, 29, 30, // tri2 + 28, 30, 23 // tri3 + ), + gsSPNTriangles_5b(31, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[199], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 11, 12, 2, // tri2 + 11, 2, 1 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 16, // tri0 + 21, 16, 23, // tri1 + 24, 25, 0, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 4, 3, // tri0 + 30, 8, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[230], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 4, 3, // tri0 + 4, 6, 3, // tri1 + 7, 8, 9, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 12, 15, 16, // tri2 + 12, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 19, // tri0 + 15, 19, 20, // tri1 + 21, 22, 23, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 26, 27, 28, // tri1 + 27, 26, 29, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r2_p_1_v[262], 15, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 6, 9, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(10, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c new file mode 100644 index 00000000..a9d13104 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r2_p_1/grd_s_r2_p_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r2_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r2_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r2_p_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1.c b/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1.c new file mode 100644 index 00000000..71cb139d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1.c @@ -0,0 +1,283 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_1_v[] = { +#include "assets/field/bg/grd_s_r3_1_v.inc" +}; + +extern Gfx grd_s_r3_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_1_v[206], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 0, 6, // tri1 + 0, 2, 6, // tri2 + 1, 8, 3 // tri3 + ), + gsSPNTriangles_5b(1, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_1_v[176], 30, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 17, 21, // tri0 + 22, 20, 23, // tri1 + 24, 22, 25, // tri2 + 26, 24, 27 // tri3 + ), + gsSPNTriangles_5b(28, 26, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 4, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(5, 11, 6, // tri0 + 11, 12, 6, // tri1 + 11, 13, 12, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 14, // tri0 + 16, 17, 18, // tri1 + 19, 20, 16, // tri2 + 18, 0, 14 // tri3 + ), + gsSPNTriangles_5b(3, 21, 2, // tri0 + 3, 22, 21, // tri1 + 22, 23, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 24, 30, 25 // tri3 + ), + gsSPNTriangles_5b(24, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 3, 1, 6, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(19, 23, 20, // tri0 + 23, 24, 20, // tri1 + 22, 25, 21, // tri2 + 25, 26, 21 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 26, 29, // tri1 + 28, 4, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_1_v[62], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_1_v[72], 31, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 2 // tri2 + ), + gsSPNTriangles_5b(6, 8, 7, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 5, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 14, 13, 11, // tri1 + 15, 16, 14, // tri2 + 10, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 19, 23, 24, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 21, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_1_v[103], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 21, 24, 22, // tri1 + 21, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_1_v[135], 11, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_1_v[146], 30, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 11, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(12, 16, 19, // tri0 + 20, 21, 22, // tri1 + 21, 14, 23, // tri2 + 24, 3, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 1, 24, 29, // tri1 + 26, 6, 27, // tri2 + 9, 26, 28 // tri3 + ), + gsSPNTriangles_5b(24, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c new file mode 100644 index 00000000..3bceaa59 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_1/grd_s_r3_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2.c b/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2.c new file mode 100644 index 00000000..ee38348b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2.c @@ -0,0 +1,248 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_2_v[] = { +#include "assets/field/bg/grd_s_r3_2_v.inc" +}; + +extern Gfx grd_s_r3_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_2_v[186], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 4, 8, // tri2 + 4, 5, 8 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_2_v[170], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 4, 10, // tri1 + 4, 6, 10, // tri2 + 11, 3, 12 // tri3 + ), + gsSPNTriangles_5b(1, 13, 14, // tri0 + 5, 11, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 17, 21, 18, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 24, 25, 22, // tri2 + 25, 26, 22 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 29, 30, 27, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_2_v[32], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_2_v[38], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 16, 19 // tri3 + ), + gsSPNTriangles_5b(2, 20, 21, // tri0 + 2, 21, 0, // tri1 + 22, 1, 23, // tri2 + 24, 22, 25 // tri3 + ), + gsSPNTriangles_5b(26, 24, 27, // tri0 + 26, 27, 28, // tri1 + 29, 26, 28, // tri2 + 29, 28, 30 // tri3 + ), + gsSPVertex(&grd_s_r3_2_v[69], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 19, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_2_v[93], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 6, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 3, // tri1 + 17, 18, 3, // tri2 + 5, 7, 19 // tri3 + ), + gsSPNTriangles_5b(7, 20, 19, // tri0 + 12, 20, 13, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 27, 26, // tri1 + 25, 28, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_r3_2_v[124], 30, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 2, 12, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 27, 29, 28, // tri2 + 26, 25, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_2_v[154], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 11, // tri1 + 8, 3, 12, // tri2 + 13, 7, 14 // tri3 + ), + gsSPNTriangles_5b(5, 13, 15, // tri0 + 13, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c new file mode 100644 index 00000000..be8513a3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_2/grd_s_r3_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3.c b/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3.c new file mode 100644 index 00000000..b22ea0ac --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3.c @@ -0,0 +1,269 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_3_v[] = { +#include "assets/field/bg/grd_s_r3_3_v.inc" +}; + +extern Gfx grd_s_r3_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_3_v[188], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 3, 8, // tri2 + 3, 4, 8 // tri3 + ), + gsSPNTriangles_5b(2, 9, 0, // tri0 + 2, 10, 9, // tri1 + 10, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_3_v[177], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 0, 2, // tri1 + 6, 7, 0, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 6, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 5, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 12, 16, 13, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 22, 23, // tri1 + 22, 24, 23, // tri2 + 25, 23, 24 // tri3 + ), + gsSPNTriangles_5b(15, 26, 27, // tri0 + 26, 28, 27, // tri1 + 15, 27, 14, // tri2 + 1, 29, 4 // tri3 + ), + gsSPNTriangles_5b(1, 30, 29, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b(9, 12, 7, // tri0 + 11, 12, 9, // tri1 + 10, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 15, 19, 18, // tri2 + 7, 12, 20 // tri3 + ), + gsSPNTriangles_5b(12, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 28, 23, 21, // tri1 + 28, 29, 23, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(29, 31, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_3_v[64], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_3_v[70], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 5, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 7, 16, // tri0 + 17, 18, 19, // tri1 + 17, 20, 21, // tri2 + 22, 21, 20 // tri3 + ), + gsSPNTriangles_5b(23, 22, 20, // tri0 + 24, 25, 23, // tri1 + 26, 27, 24, // tri2 + 28, 29, 26 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 28, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_3_v[102], 23, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(3, 7, 4, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 12 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 15, 16, 17, // tri1 + 7, 18, 19, // tri2 + 18, 8, 20 // tri3 + ), + gsSPNTriangles_5b(14, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_3_v[125], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 4, 13, 7, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 16, 17, 15, // tri1 + 16, 18, 17, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(19, 7, 13, // tri0 + 19, 13, 20, // tri1 + 21, 19, 20, // tri2 + 22, 21, 20 // tri3 + ), + gsSPNTriangles_5b(22, 20, 23, // tri0 + 24, 22, 23, // tri1 + 24, 23, 25, // tri2 + 26, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 25, 27, // tri0 + 28, 26, 27, // tri1 + 1, 0, 29, // tri2 + 30, 1, 29 // tri3 + ), + gsSPNTriangles_5b(30, 29, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_3_v[157], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 8, 5, 7 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_3_v[166], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c new file mode 100644 index 00000000..11829e2c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_3/grd_s_r3_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4.c b/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4.c new file mode 100644 index 00000000..ecbf9e61 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4.c @@ -0,0 +1,248 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_4_v[] = { +#include "assets/field/bg/grd_s_r3_4_v.inc" +}; + +extern Gfx grd_s_r3_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_4_v[173], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 14, 15, 10, // tri1 + 14, 10, 13, // tri2 + 5, 7, 6 // tri3 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 11, 9, 8, // tri1 + 11, 8, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_4_v[160], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 4, 3, 6, // tri1 + 1, 7, 3, // tri2 + 1, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 7, 13, 3, // tri2 + 13, 14, 3 // tri3 + ), + gsSPNTriangles_5b(15, 16, 12, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 18, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 21, 23, 22, // tri1 + 21, 24, 23, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_4_v[32], 26, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(11, 14, 10, // tri0 + 8, 12, 11, // tri1 + 7, 15, 16, // tri2 + 9, 15, 7 // tri3 + ), + gsSPNTriangles_5b(17, 18, 13, // tri0 + 19, 20, 21, // tri1 + 20, 22, 21, // tri2 + 20, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_4_v[58], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 14, // tri0 + 17, 16, 14, // tri1 + 18, 19, 17, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 22, 24, 23, // tri1 + 22, 25, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_4_v[89], 17, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 12, 11, // tri2 + 5, 7, 14 // tri3 + ), + gsSPNTriangles_5b(5, 14, 6, // tri0 + 13, 15, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_4_v[106], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_4_v[119], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 6, // tri0 + 8, 7, 6, // tri1 + 8, 6, 9, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 8, 10, // tri0 + 11, 10, 12, // tri1 + 11, 12, 13, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(19, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 22, 19, // tri2 + 21, 19, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 0, // tri0 + 25, 23, 0, // tri1 + 2, 25, 0, // tri2 + 26, 1, 3 // tri3 + ), + gsSPNTriangles_5b(26, 3, 27, // tri0 + 28, 26, 27, // tri1 + 29, 28, 27, // tri2 + 29, 27, 30 // tri3 + ), + gsSPNTriangles_5b(31, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_4_v[151], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 7, 6, 5, // tri2 + 8, 7, 5 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c new file mode 100644 index 00000000..2eb77eb5 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_4/grd_s_r3_4_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_4_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c b/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c new file mode 100644 index 00000000..17bdfe93 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1.c @@ -0,0 +1,304 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_b_1_v[] = { +#include "assets/field/bg/grd_s_r3_b_1_v.inc" +}; + +extern Gfx grd_s_r3_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_1_v[219], 20, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 15, 0, 13, // tri1 + 15, 16, 0, // tri2 + 0, 16, 1 // tri3 + ), + gsSPNTriangles_5b(3, 17, 2, // tri0 + 18, 19, 17, // tri1 + 17, 3, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_1_v[192], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 8, // tri1 + 11, 9, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r3_b_1_v[207], 12, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 5, 2, 8 // tri3 + ), + gsSPNTriangles_5b(2, 3, 8, // tri0 + 3, 9, 8, // tri1 + 3, 7, 9, // tri2 + 10, 0, 4 // tri3 + ), + gsSPNTriangles_5b(10, 1, 0, // tri0 + 10, 11, 1, // tri1 + 11, 6, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_1_v[0], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 14, 11, 6 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_b_1_v[15], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 7, 6, 8, // tri1 + 6, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 7, 4, 6, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 17, 19, 18, // tri1 + 19, 15, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 25, 16, 18, // tri2 + 15, 13, 18 // tri3 + ), + gsSPNTriangles_5b(26, 12, 27, // tri0 + 12, 14, 27, // tri1 + 28, 29, 30, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_r3_b_1_v[47], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 9, 10, 11, // tri1 + 9, 12, 10, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 14, 15, 13, // tri1 + 15, 16, 13, // tri2 + 17, 18, 0 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 24, 22, // tri2 + 25, 26, 20 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_1_v[79], 11, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 6, 7, 4, // tri1 + 6, 8, 7, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_1_v[90], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 8, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 14, 17, // tri0 + 18, 16, 17, // tri1 + 18, 17, 19, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 23, 24, 22, // tri1 + 25, 26, 24, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(28, 29, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_1_v[120], 15, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 8, 9, 10, // tri1 + 10, 9, 11, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_1_v[135], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 4, 6, 8, // tri1 + 10, 11, 5, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 16, 17, 15, // tri1 + 18, 9, 19, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 18, 19, 22, // tri1 + 23, 9, 18, // tri2 + 9, 23, 24 // tri3 + ), + gsSPNTriangles_5b(7, 9, 24, // tri0 + 4, 8, 7, // tri1 + 10, 5, 4, // tri2 + 25, 11, 10 // tri3 + ), + gsSPNTriangles_5b(13, 11, 25, // tri0 + 12, 13, 26, // tri1 + 14, 12, 26, // tri2 + 15, 14, 27 // tri3 + ), + gsSPNTriangles_5b(15, 27, 16, // tri0 + 17, 16, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_1_v[167], 25, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 8, 6, 9, // tri1 + 4, 6, 8, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 12, 10, 11, // tri1 + 12, 11, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 14, 16, // tri0 + 17, 16, 18, // tri1 + 17, 18, 19, // tri2 + 20, 1, 0 // tri3 + ), + gsSPNTriangles_5b(21, 0, 3, // tri0 + 21, 3, 22, // tri1 + 22, 23, 24, // tri2 + 19, 18, 1 // tri3 + ), + gsSPNTriangles_5b(20, 19, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c new file mode 100644 index 00000000..1cbaeb68 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_1/grd_s_r3_b_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_b_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c b/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c new file mode 100644 index 00000000..cee0fdb0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2.c @@ -0,0 +1,346 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_b_2_v[] = { +#include "assets/field/bg/grd_s_r3_b_2_v.inc" +}; + +extern Gfx grd_s_r3_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_2_v[266], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_2_v[211], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_b_2_v[228], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 1, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 10, 13, // tri1 + 12, 8, 10, // tri2 + 14, 8, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 8, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(18, 17, 20, // tri0 + 17, 22, 20, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 26, 29, // tri1 + 28, 24, 26, // tri2 + 30, 24, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[260], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 19, 16, // tri1 + 19, 20, 16, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 24, 11, 22, // tri2 + 24, 12, 11 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 25, 29, 28, // tri2 + 26, 30, 27 // tri3 + ), + gsSPNTriangles_5b(26, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 10, 15, 12, // tri2 + 15, 16, 12 // tri3 + ), + gsSPNTriangles_5b(17, 18, 14, // tri0 + 17, 19, 18, // tri1 + 19, 20, 18, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 9, 24, 10, // tri2 + 25, 0, 2 // tri3 + ), + gsSPNTriangles_5b(3, 26, 27, // tri0 + 26, 4, 27, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[64], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_2_v[72], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 9, 14, // tri0 + 7, 15, 16, // tri1 + 15, 12, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 25, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(30, 4, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[104], 21, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 9, 13, 14, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 11, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_2_v[125], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(1, 13, 3, // tri0 + 14, 3, 15, // tri1 + 3, 13, 15, // tri2 + 2, 16, 0 // tri3 + ), + gsSPNTriangles_5b(16, 17, 0, // tri0 + 16, 18, 17, // tri1 + 19, 10, 20, // tri2 + 19, 8, 10 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 24, 25, 22, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 15, 29, // tri1 + 30, 21, 31, // tri2 + 21, 23, 31 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[157], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 10, 11, 12, // tri1 + 10, 13, 14, // tri2 + 15, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 26, // tri0 + 28, 29, 30, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_2_v[189], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_2_v[194], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c new file mode 100644 index 00000000..6169d16a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_2/grd_s_r3_b_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_b_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c b/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c new file mode 100644 index 00000000..2c2d80a6 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3.c @@ -0,0 +1,325 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_b_3_v[] = { +#include "assets/field/bg/grd_s_r3_b_3_v.inc" +}; + +extern Gfx grd_s_r3_b_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_3_v[251], 21, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_b_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_b_3_v[224], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 11, 7, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r3_b_3_v[237], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 5, 6, 2, // tri1 + 7, 8, 9, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 11, 12, 13, // tri1 + 7, 10, 11, // tri2 + 2, 6, 7 // tri3 + ), + gsSPNTriangles_5b(6, 8, 7, // tri0 + 0, 2, 11, // tri1 + 2, 7, 11, // tri2 + 3, 0, 13 // tri3 + ), + gsSPNTriangles_5b(0, 11, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_b_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 0, 2, 5, // tri1 + 7, 8, 0, // tri2 + 8, 9, 0 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 11, 13, 12, // tri1 + 11, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 16, 20, 19, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 19, // tri0 + 21, 23, 22, // tri1 + 24, 25, 26, // tri2 + 24, 27, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 25, // tri0 + 23, 29, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_3_v[30], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 9, // tri0 + 7, 12, 11, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 19, 20, 16, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 27, // tri2 + 30, 29, 28 // tri3 + ), + gsSPNTriangles_5b(31, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_3_v[62], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 10, 11, 7 // tri3 + ), + gsSPNTriangles_5b(6, 10, 7, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_3_v[78], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 6, // tri0 + 5, 14, 12, // tri1 + 0, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 18, 23, 19, // tri1 + 24, 25, 26, // tri2 + 18, 27, 23 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 20, 22, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_3_v[110], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 12, 10, // tri1 + 12, 13, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 13, // tri0 + 19, 5, 18, // tri1 + 20, 21, 1, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 24, 28, // tri1 + 25, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_3_v[141], 8, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_3_v[149], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 3, 9, 10, // tri1 + 9, 11, 10, // tri2 + 11, 4, 12 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_b_3_v[162], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 12, 19, 13, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 18, 22, // tri0 + 18, 17, 22, // tri1 + 12, 23, 19, // tri2 + 23, 24, 19 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 28, 30, 29, // tri1 + 30, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_b_3_v[194], 30, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 23, 24, 21, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c new file mode 100644 index 00000000..36352363 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_b_3/grd_s_r3_b_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_b_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_b_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_b_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c b/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c new file mode 100644 index 00000000..ed1648ed --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1.c @@ -0,0 +1,358 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r3_p_1_v[] = { +#include "assets/field/bg/grd_s_r3_p_1_v.inc" +}; + +extern Gfx grd_s_r3_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_p_1_v[292], 19, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 4, 7, // tri1 + 8, 5, 7, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 9, // tri1 + 12, 9, 11, // tri2 + 14, 6, 5 // tri3 + ), + gsSPNTriangles_5b(15, 14, 5, // tri0 + 8, 7, 10, // tri1 + 7, 16, 10, // tri2 + 8, 17, 15 // tri3 + ), + gsSPNTriangles_5b(5, 8, 15, // tri0 + 18, 16, 7, // tri1 + 18, 7, 4, // tri2 + 3, 18, 4 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r3_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r3_p_1_v[254], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 3, 4, // tri0 + 3, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 10, 13, // tri1 + 12, 8, 10, // tri2 + 14, 15, 12 // tri3 + ), + gsSPNTriangles_5b(15, 8, 12, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 22, 20, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 26, 29, // tri1 + 28, 24, 26, // tri2 + 30, 31, 28 // tri3 + ), + gsSPNTriangles_5b(31, 24, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[286], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r3_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 7, 5, // tri1 + 6, 9, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(10, 11, 4, // tri0 + 12, 13, 6, // tri1 + 9, 6, 13, // tri2 + 3, 14, 2 // tri3 + ), + gsSPNTriangles_5b(14, 15, 2, // tri0 + 2, 16, 0, // tri1 + 15, 17, 2, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 22, 23, 24, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(1, 29, 3, // tri0 + 1, 30, 29, // tri1 + 31, 23, 8, // tri2 + 23, 7, 8 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 2, 8, 0 // tri3 + ), + gsSPNTriangles_5b(2, 9, 8, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 26, 0, 27 // tri3 + ), + gsSPNTriangles_5b(0, 28, 27, // tri0 + 0, 8, 28, // tri1 + 29, 26, 24, // tri2 + 26, 27, 24 // tri3 + ), + gsSPNTriangles_5b(19, 30, 18, // tri0 + 19, 14, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[63], 14, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_p_1_v[77], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 19, 23, // tri1 + 24, 22, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(20, 26, 29, // tri0 + 27, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[109], 25, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r3_p_1_v[134], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 3, 8, 4, // tri1 + 1, 9, 10, // tri2 + 10, 2, 1 // tri3 + ), + gsSPNTriangles_5b(10, 11, 2, // tri0 + 12, 9, 13, // tri1 + 9, 1, 13, // tri2 + 1, 0, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 17, 18, 16, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 19, 20, 18, // tri1 + 22, 21, 20, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 27, 30, 28, // tri2 + 31, 23, 25 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[166], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(7, 3, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(9, 12, 14, // tri0 + 9, 15, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 11, 20, 10, // tri1 + 1, 6, 21, // tri2 + 6, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 24, 0, 25, // tri1 + 0, 26, 25, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 28, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[198], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 6, 7, 3, // tri1 + 7, 5, 3, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 11, 8, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(11, 15, 12, // tri0 + 15, 16, 12, // tri1 + 15, 17, 16, // tri2 + 16, 14, 12 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 17, 19, 18, // tri1 + 19, 20, 18, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 25, 28, 26, // tri2 + 28, 29, 26 // tri3 + ), + gsSPVertex(&grd_s_r3_p_1_v[228], 26, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 7, 0, 9 // tri3 + ), + gsSPNTriangles_5b(0, 3, 9, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 12, // tri0 + 17, 14, 15, // tri1 + 14, 18, 13, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 18, 21, // tri1 + 19, 23, 20, // tri2 + 23, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 23, 25, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c new file mode 100644 index 00000000..9953d2ed --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r3_p_1/grd_s_r3_p_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r3_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r3_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r3_p_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1.c b/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1.c new file mode 100644 index 00000000..2b16912e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1.c @@ -0,0 +1,249 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_1_v[] = { +#include "assets/field/bg/grd_s_r4_1_v.inc" +}; + +extern Gfx grd_s_r4_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_1_v[189], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 0, // tri0 + 6, 7, 1, // tri1 + 7, 8, 1, // tri2 + 8, 9, 1 // tri3 + ), + gsSPNTriangles_5b(9, 3, 1, // tri0 + 4, 10, 5, // tri1 + 10, 11, 5, // tri2 + 10, 12, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_1_v[172], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 4, 7, // tri0 + 7, 0, 2, // tri1 + 8, 1, 9, // tri2 + 0, 9, 1 // tri3 + ), + gsSPNTriangles_5b(10, 11, 3, // tri0 + 3, 11, 12, // tri1 + 13, 12, 11, // tri2 + 14, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 15, 14, // tri1 + 17, 15, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 22, 8, 21, // tri1 + 8, 23, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 25, 28, 27, // tri1 + 25, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_1_v[30], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 9, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 12, 19, 20, // tri2 + 20, 13, 12 // tri3 + ), + gsSPNTriangles_5b(20, 21, 13, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 23, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 28, 29, 6, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_1_v[62], 13, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 9, 4, // tri0 + 10, 11, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_1_v[75], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 14, 26, // tri0 + 12, 19, 21, // tri1 + 16, 27, 17, // tri2 + 24, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 29, 24, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_1_v[105], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_1_v[115], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 16, // tri2 + 13, 18, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 21, 24, 23, // tri1 + 21, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_1_v[147], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_1_v[155], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c new file mode 100644 index 00000000..3a226df4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_1/grd_s_r4_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2.c b/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2.c new file mode 100644 index 00000000..a475836d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2.c @@ -0,0 +1,250 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_2_v[] = { +#include "assets/field/bg/grd_s_r4_2_v.inc" +}; + +extern Gfx grd_s_r4_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_2_v[194], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 6, 1, // tri1 + 4, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 2, // tri0 + 3, 6, 5, // tri1 + 0, 7, 1, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 8, 7, 10, // tri1 + 7, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 15, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 22, 23, // tri1 + 22, 24, 23, // tri2 + 22, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_2_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 12, 5, 0 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 4, 3, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 2, 20, // tri0 + 1, 0, 5, // tri1 + 6, 1, 5, // tri2 + 6, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 6, 4, // tri0 + 21, 4, 23, // tri1 + 11, 17, 3, // tri2 + 7, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 29, // tri1 + 28, 23, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_2_v[60], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_2_v[64], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 0, // tri0 + 8, 9, 6, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 8, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 19, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_2_v[94], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 0, 2, // tri1 + 10, 11, 12, // tri2 + 6, 8, 13 // tri3 + ), + gsSPNTriangles_5b(11, 6, 13, // tri0 + 14, 10, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 19, 21, 20, // tri1 + 22, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 26, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_2_v[125], 19, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 17, 9, // tri1 + 16, 13, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_2_v[144], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 4, 22, // tri2 + 4, 23, 22 // tri3 + ), + gsSPNTriangles_5b(4, 6, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 29, 30, 28, // tri1 + 30, 31, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_2_v[176], 18, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 10, // tri1 + 12, 13, 10, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c new file mode 100644 index 00000000..413289bd --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_2/grd_s_r4_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3.c b/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3.c new file mode 100644 index 00000000..b70bb79e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3.c @@ -0,0 +1,253 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_3_v[] = { +#include "assets/field/bg/grd_s_r4_3_v.inc" +}; + +extern Gfx grd_s_r4_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_3_v[169], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 0, // tri1 + 9, 1, 0, // tri2 + 5, 2, 7 // tri3 + ), + gsSPNTriangles_5b(2, 3, 7, // tri0 + 6, 10, 4, // tri1 + 11, 12, 8, // tri2 + 12, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 13, 4, // tri0 + 10, 14, 13, // tri1 + 10, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_3_v[158], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 3, 1, // tri0 + 7, 6, 1, // tri1 + 8, 7, 1, // tri2 + 8, 1, 9 // tri3 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 11, 12, // tri1 + 12, 13, 10, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 25, // tri1 + 24, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 29, 30, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_3_v[31], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 4, 8, 7, // tri1 + 3, 1, 4, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(9, 10, 0, // tri0 + 11, 12, 13, // tri1 + 14, 11, 15, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 27, 28, // tri1 + 26, 29, 27, // tri2 + 30, 29, 31 // tri3 + ), + gsSPNTriangles_5b(30, 27, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_3_v[63], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 5, 8, 11, // tri2 + 12, 2, 13 // tri3 + ), + gsSPNTriangles_5b(14, 12, 15, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 0, 22, 3 // tri3 + ), + gsSPNTriangles_5b(0, 7, 22, // tri0 + 23, 18, 20, // tri1 + 16, 24, 17, // tri2 + 24, 14, 17 // tri3 + ), + gsSPNTriangles_5b(23, 25, 18, // tri0 + 25, 16, 18, // tri1 + 26, 27, 21, // tri2 + 27, 19, 21 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_3_v[94], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_3_v[103], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 13, 15, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_3_v[135], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_3_v[147], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c new file mode 100644 index 00000000..151b4d64 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_3/grd_s_r4_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c b/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c new file mode 100644 index 00000000..c7f538b8 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1.c @@ -0,0 +1,237 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_b_1_v[] = { +#include "assets/field/bg/grd_s_r4_b_1_v.inc" +}; + +extern Gfx grd_s_r4_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_b_1_v[152], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 2, 8, // tri0 + 10, 0, 2, // tri1 + 1, 11, 3, // tri2 + 11, 12, 3 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_b_1_v[125], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 8, // tri1 + 11, 9, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r4_b_1_v[140], 12, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 1, 6, 3, // tri1 + 6, 7, 3, // tri2 + 5, 2, 8 // tri3 + ), + gsSPNTriangles_5b(2, 3, 8, // tri0 + 3, 9, 8, // tri1 + 3, 7, 9, // tri2 + 10, 0, 4 // tri3 + ), + gsSPNTriangles_5b(10, 1, 0, // tri0 + 10, 11, 1, // tri1 + 11, 6, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_1_v[0], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 14, 11, 6 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_1_v[15], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 8, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 15, 19, // tri1 + 20, 18, 21, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 24, 25, 23, // tri1 + 26, 27, 25, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_b_1_v[46], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_b_1_v[49], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 0, 2, 9, // tri2 + 2, 8, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 10, 14, 13, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 15, 14, 18, // tri1 + 0, 19, 1, // tri2 + 19, 20, 1 // tri3 + ), + gsSPNTriangles_5b(20, 21, 1, // tri0 + 21, 22, 1, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(23, 27, 24, // tri0 + 27, 28, 24, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r4_b_1_v[80], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTriangles_5b(0, 2, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_1_v[94], 31, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 6, 10, 7, // tri2 + 11, 5, 4 // tri3 + ), + gsSPNTriangles_5b(0, 12, 13, // tri0 + 1, 0, 13, // tri1 + 12, 14, 15, // tri2 + 11, 16, 5 // tri3 + ), + gsSPNTriangles_5b(4, 3, 2, // tri0 + 14, 12, 0, // tri1 + 14, 17, 15, // tri2 + 18, 19, 8 // tri3 + ), + gsSPNTriangles_5b(20, 6, 21, // tri0 + 22, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 19, 18 // tri3 + ), + gsSPNTriangles_5b(27, 18, 8, // tri0 + 27, 8, 9, // tri1 + 10, 6, 20, // tri2 + 28, 20, 21 // tri3 + ), + gsSPNTriangles_5b(28, 21, 22, // tri0 + 29, 22, 23, // tri1 + 29, 23, 24, // tri2 + 30, 24, 25 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c new file mode 100644 index 00000000..50e4bb5d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_b_1/grd_s_r4_b_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_b_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c b/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c new file mode 100644 index 00000000..3b45b7d9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2.c @@ -0,0 +1,299 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_b_2_v[] = { +#include "assets/field/bg/grd_s_r4_b_2_v.inc" +}; + +extern Gfx grd_s_r4_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_b_2_v[227], 11, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_b_2_v[176], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_b_2_v[189], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 6 // tri3 + ), + gsSPNTriangles_5b(11, 9, 6, // tri0 + 11, 12, 9, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 16, 19, // tri1 + 18, 14, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 16, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 26, 25, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 28, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_b_2_v[219], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 6, 7, // tri1 + 5, 2, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 6, 5, // tri1 + 9, 8, 5, // tri2 + 9, 3, 1 // tri3 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 12, 10, 4, // tri1 + 13, 14, 15, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 18, 15, // tri1 + 18, 19, 15, // tri2 + 9, 1, 8 // tri3 + ), + gsSPNTriangles_5b(4, 11, 0, // tri0 + 20, 21, 22, // tri1 + 23, 24, 21, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 28, 29, 27, // tri1 + 30, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_b_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 7, // tri1 + 11, 8, 7, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b(13, 14, 0, // tri0 + 1, 0, 3, // tri1 + 15, 10, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 17, 14, // tri0 + 19, 14, 17, // tri1 + 20, 21, 22, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 21, 23, // tri0 + 19, 25, 26, // tri1 + 3, 27, 4, // tri2 + 3, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 31, 30, 23, // tri1 + 23, 30, 29, // tri2 + 25, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 26, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_2_v[64], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 0, 10, // tri0 + 9, 10, 11, // tri1 + 4, 6, 8, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 14, 16, 19, // tri2 + 20, 11, 21 // tri3 + ), + gsSPNTriangles_5b(17, 20, 21, // tri0 + 6, 13, 7, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_b_2_v[95], 31, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 12, // tri2 + 13, 4, 14 // tri3 + ), + gsSPNTriangles_5b(15, 11, 16, // tri0 + 9, 13, 14, // tri1 + 15, 16, 17, // tri2 + 6, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 15, 17, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 26, 23, 27 // tri3 + ), + gsSPNTriangles_5b(21, 28, 29, // tri0 + 28, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_2_v[126], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 20, 22, 21, // tri1 + 20, 23, 22, // tri2 + 1, 24, 3 // tri3 + ), + gsSPNTriangles_5b(24, 25, 3, // tri0 + 24, 26, 25, // tri1 + 26, 6, 25, // tri2 + 26, 4, 6 // tri3 + ), + gsSPNTriangles_5b(5, 27, 7, // tri0 + 27, 28, 7, // tri1 + 28, 29, 7, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_b_2_v[158], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_b_2_v[163], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c new file mode 100644 index 00000000..c2010441 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_b_2/grd_s_r4_b_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_b_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c b/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c new file mode 100644 index 00000000..7f2de782 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1.c @@ -0,0 +1,404 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r4_p_1_v[] = { +#include "assets/field/bg/grd_s_r4_p_1_v.inc" +}; + +extern Gfx grd_s_r4_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_p_1_v[265], 19, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 4, 9, 5, // tri2 + 9, 10, 5 // tri3 + ), + gsSPNTriangles_5b(10, 8, 5, // tri0 + 4, 2, 3, // tri1 + 0, 11, 1, // tri2 + 12, 1, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 1, // tri0 + 1, 11, 13, // tri1 + 12, 4, 14, // tri2 + 12, 9, 4 // tri3 + ), + gsSPNTriangles_5b(2, 4, 6, // tri0 + 15, 16, 0, // tri1 + 16, 11, 0, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(7, 8, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r4_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r4_p_1_v[223], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 5, 6, 7, // tri1 + 5, 7, 1, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 8, 11, // tri1 + 12, 11, 13, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(20, 17, 16, // tri0 + 21, 22, 23, // tri1 + 21, 23, 17, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 28, 24, 27, // tri1 + 28, 27, 29, // tri2 + 29, 27, 30 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[255], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r4_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(2, 1, 6, // tri0 + 5, 6, 1, // tri1 + 7, 8, 9, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 7, 9, // tri0 + 11, 12, 7, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 20, 19, 17, // tri1 + 17, 21, 20, // tri2 + 17, 22, 21 // tri3 + ), + gsSPNTriangles_5b(0, 23, 24, // tri0 + 23, 25, 24, // tri1 + 23, 26, 25, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(29, 30, 27, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 6, 10, 7, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 24, // tri2 + 14, 15, 25 // tri3 + ), + gsSPNTriangles_5b(15, 17, 25, // tri0 + 25, 26, 27, // tri1 + 26, 17, 28, // tri2 + 26, 25, 17 // tri3 + ), + gsSPNTriangles_5b(29, 2, 1, // tri0 + 1, 9, 29, // tri1 + 8, 30, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[63], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_p_1_v[66], 32, 0), + gsSPNTrianglesInit_5b(33, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 5, 8, 9 // tri3 + ), + gsSPNTriangles_5b(5, 9, 6, // tri0 + 9, 7, 6, // tri1 + 8, 10, 11, // tri2 + 8, 11, 9 // tri3 + ), + gsSPNTriangles_5b(11, 7, 9, // tri0 + 10, 12, 13, // tri1 + 10, 13, 11, // tri2 + 13, 7, 11 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 12, 15, 16, // tri1 + 15, 17, 16, // tri2 + 14, 18, 19 // tri3 + ), + gsSPNTriangles_5b(14, 19, 15, // tri0 + 19, 17, 15, // tri1 + 18, 20, 21, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 20, 24, 21, // tri1 + 24, 25, 23, // tri2 + 24, 23, 21 // tri3 + ), + gsSPNTriangles_5b(20, 26, 27, // tri0 + 20, 27, 24, // tri1 + 27, 25, 24, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(26, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[98], 32, 0), + gsSPNTrianglesInit_5b(40, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 1, 6, 2, // tri1 + 6, 4, 2, // tri2 + 5, 7, 6 // tri3 + ), + gsSPNTriangles_5b(7, 8, 4, // tri0 + 7, 4, 6, // tri1 + 5, 9, 10, // tri2 + 5, 10, 7 // tri3 + ), + gsSPNTriangles_5b(10, 8, 7, // tri0 + 9, 11, 12, // tri1 + 9, 12, 10, // tri2 + 12, 8, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 11, 14, 12, // tri1 + 14, 8, 12, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 8, // tri0 + 15, 8, 14, // tri1 + 13, 17, 18, // tri2 + 13, 18, 15 // tri3 + ), + gsSPNTriangles_5b(18, 16, 15, // tri0 + 17, 19, 20, // tri1 + 17, 20, 18, // tri2 + 20, 16, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 21, 22, 16, // tri1 + 21, 16, 20, // tri2 + 19, 23, 24 // tri3 + ), + gsSPNTriangles_5b(19, 24, 21, // tri0 + 24, 22, 21, // tri1 + 23, 25, 24, // tri2 + 25, 22, 24 // tri3 + ), + gsSPNTriangles_5b(23, 26, 25, // tri0 + 26, 27, 25, // tri1 + 27, 28, 25, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[129], 32, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 7, 9, // tri1 + 8, 6, 7, // tri2 + 4, 10, 5 // tri3 + ), + gsSPNTriangles_5b(4, 11, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 5, // tri2 + 13, 5, 14 // tri3 + ), + gsSPNTriangles_5b(11, 12, 14, // tri0 + 11, 14, 10, // tri1 + 14, 5, 10, // tri2 + 12, 16, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 15, 13, // tri1 + 12, 18, 19, // tri2 + 12, 19, 16 // tri3 + ), + gsSPNTriangles_5b(19, 17, 16, // tri0 + 18, 20, 19, // tri1 + 20, 21, 17, // tri2 + 20, 17, 19 // tri3 + ), + gsSPNTriangles_5b(18, 22, 20, // tri0 + 22, 23, 21, // tri1 + 22, 21, 20, // tri2 + 18, 24, 25 // tri3 + ), + gsSPNTriangles_5b(18, 25, 22, // tri0 + 25, 23, 22, // tri1 + 24, 26, 25, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b(26, 23, 25, // tri0 + 24, 28, 29, // tri1 + 24, 29, 26, // tri2 + 29, 27, 26 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 30, 27, 29, // tri1 + 30, 31, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[161], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r4_p_1_v[166], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 19, 20, 21, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 25, 23, 24, // tri1 + 26, 25, 27, // tri2 + 25, 24, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 29, 26, 30, // tri1 + 17, 31, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r4_p_1_v[198], 25, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 9, 15, 10 // tri3 + ), + gsSPNTriangles_5b(15, 12, 10, // tri0 + 16, 17, 11, // tri1 + 17, 18, 11, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b(18, 9, 11, // tri0 + 20, 21, 22, // tri1 + 21, 19, 23, // tri2 + 5, 20, 24 // tri3 + ), + gsSPNTriangles_5b(5, 24, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c new file mode 100644 index 00000000..eb208d8b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r4_p_1/grd_s_r4_p_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r4_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r4_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r4_p_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1.c b/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1.c new file mode 100644 index 00000000..ee65bff3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1.c @@ -0,0 +1,269 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_1_v[] = { +#include "assets/field/bg/grd_s_r5_1_v.inc" +}; + +extern Gfx grd_s_r5_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_1_v[190], 22, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 7, 3, 8, // tri2 + 7, 2, 3 // tri3 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 1, 9, 10, // tri1 + 9, 11, 10, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 10, 15, 12, // tri1 + 13, 14, 16, // tri2 + 10, 11, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 18, 21, 19, // tri2 + 21, 16, 19 // tri3 + ), + gsSPNTriangles_5b(21, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_1_v[177], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 5, // tri1 + 9, 6, 5, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(11, 9, 8, // tri0 + 11, 12, 13, // tri1 + 12, 11, 10, // tri2 + 6, 14, 7 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 26, 5, 7, // tri1 + 27, 24, 28, // tri2 + 27, 25, 24 // tri3 + ), + gsSPNTriangles_5b(22, 29, 23, // tri0 + 15, 15, 27, // tri1 + 27, 28, 15, // tri2 + 30, 18, 31 // tri3 + ), + gsSPNTriangles_5b(21, 31, 18, // tri0 + 19, 29, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_1_v[32], 27, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 10, 14, 11, // tri1 + 14, 15, 11, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(16, 7, 17, // tri0 + 18, 13, 19, // tri1 + 12, 13, 20, // tri2 + 13, 18, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 18, 22, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_1_v[59], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 12, 0, 13, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 18, 10, 16, // tri1 + 18, 9, 10, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 19, 23, 20, // tri1 + 24, 25, 26, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 5, 27, 8, // tri1 + 5, 29, 27, // tri2 + 29, 28, 27 // tri3 + ), + gsSPNTriangles_5b(17, 30, 15, // tri0 + 17, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_1_v[91], 27, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 12, 8, 13, // tri1 + 8, 10, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 13, 16, // tri0 + 15, 12, 13, // tri1 + 17, 18, 16, // tri2 + 18, 14, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 21, 22, // tri1 + 23, 24, 25, // tri2 + 26, 23, 25 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_1_v[118], 28, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(6, 3, 5, // tri0 + 7, 8, 9, // tri1 + 10, 8, 7, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 17, 20, // tri0 + 22, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 25, 27 // tri3 + ), + gsSPNTriangles_5b(26, 27, 9, // tri0 + 18, 15, 6, // tri1 + 6, 5, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_1_v[146], 18, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b(13, 12, 14, // tri0 + 12, 10, 14, // tri1 + 15, 16, 13, // tri2 + 2, 17, 15 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_1_v[164], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 9, 0, 11, // tri1 + 1, 6, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c new file mode 100644 index 00000000..eb2a7052 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_1/grd_s_r5_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2.c b/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2.c new file mode 100644 index 00000000..0f74a89c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2.c @@ -0,0 +1,291 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_2_v[] = { +#include "assets/field/bg/grd_s_r5_2_v.inc" +}; + +extern Gfx grd_s_r5_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_2_v[209], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 7, 3, 8, // tri1 + 9, 6, 10, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b(13, 11, 14, // tri0 + 1, 15, 16, // tri1 + 15, 17, 18, // tri2 + 9, 10, 12 // tri3 + ), + gsSPNTriangles_5b(1, 16, 2, // tri0 + 19, 20, 21, // tri1 + 20, 22, 23, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 26, 28, 29, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 11, 12, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 17, 18, 19, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 16, 25, 26, // tri1 + 23, 27, 24, // tri2 + 28, 29, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 11, 13, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_2_v[64], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 2, 5, // tri0 + 2, 7, 5, // tri1 + 2, 1, 7, // tri2 + 0, 8, 1 // tri3 + ), + gsSPNTriangles_5b(0, 9, 8, // tri0 + 0, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(13, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 28, 29, 26, // tri2 + 29, 30, 26 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_2_v[96], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 19, 20, 17, // tri1 + 20, 21, 17, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_2_v[128], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_2_v[135], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 9, // tri1 + 11, 12, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 15, 16, 17, // tri1 + 16, 18, 2, // tri2 + 18, 0, 2 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 22, 23, // tri1 + 22, 24, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 6, 27, // tri0 + 28, 29, 1, // tri1 + 29, 2, 1, // tri2 + 2, 29, 16 // tri3 + ), + gsSPNTriangles_5b(16, 29, 17, // tri0 + 15, 17, 30, // tri1 + 19, 21, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_2_v[167], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 3, 6, 5, // tri1 + 5, 6, 7, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 11, 12, 13, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 17, 15, 18, // tri1 + 15, 17, 16, // tri2 + 16, 17, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 22, // tri1 + 23, 22, 20, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 27, 28, 25, // tri1 + 29, 30, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_2_v[198], 11, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 3, 5, 2, // tri1 + 2, 7, 0, // tri2 + 7, 2, 8 // tri3 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 5, 6, 9, // tri1 + 9, 8, 5, // tri2 + 8, 2, 5 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c new file mode 100644 index 00000000..f6b492b9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_2/grd_s_r5_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3.c b/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3.c new file mode 100644 index 00000000..07922d94 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3.c @@ -0,0 +1,269 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_3_v[] = { +#include "assets/field/bg/grd_s_r5_3_v.inc" +}; + +extern Gfx grd_s_r5_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_3_v[207], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 8, 10, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 13, 11, 14, // tri1 + 15, 16, 13, // tri2 + 15, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_3_v[194], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 3, 8, 10, // tri1 + 11, 2, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 1, // tri0 + 1, 0, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 11, 12, 8, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(11, 17, 12, // tri0 + 17, 18, 12, // tri1 + 19, 9, 20, // tri2 + 9, 10, 20 // tri3 + ), + gsSPNTriangles_5b(19, 20, 16, // tri0 + 20, 15, 16, // tri1 + 15, 21, 13, // tri2 + 21, 18, 13 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 24, // tri1 + 22, 26, 23, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b(6, 28, 1, // tri0 + 28, 29, 1, // tri1 + 29, 25, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_3_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 1, 6, 5, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 10, 12, 9, // tri1 + 10, 13, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 13, 16, 15, // tri1 + 13, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 19, 22, 20, // tri1 + 19, 23, 22, // tri2 + 19, 24, 23 // tri3 + ), + gsSPNTriangles_5b(22, 25, 20, // tri0 + 25, 26, 20, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_3_v[60], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 7, // tri0 + 9, 10, 2, // tri1 + 11, 10, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_3_v[72], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 15, 16, 17, // tri1 + 12, 15, 13, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 23, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 30, 22, // tri1 + 29, 26, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_3_v[104], 26, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 18, 19, 20, // tri1 + 21, 18, 22, // tri2 + 14, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 21, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_3_v[130], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 9, 10, 11, // tri1 + 6, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_3_v[143], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 6, 11 // tri3 + ), + gsSPNTriangles_5b(6, 5, 11, // tri0 + 12, 1, 13, // tri1 + 1, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 11, // tri0 + 17, 10, 11, // tri1 + 16, 18, 17, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 16, 21, // tri0 + 20, 18, 16, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(21, 26, 19, // tri0 + 26, 27, 19, // tri1 + 28, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPNTriangles_5b(31, 3, 30, // tri0 + 12, 2, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_3_v[175], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 7, // tri1 + 18, 16, 7, // tri2 + 5, 18, 7 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c new file mode 100644 index 00000000..e5823f7a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_3/grd_s_r5_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c b/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c new file mode 100644 index 00000000..a011944b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1.c @@ -0,0 +1,316 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_b_1_v[] = { +#include "assets/field/bg/grd_s_r5_b_1_v.inc" +}; + +extern Gfx grd_s_r5_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_b_1_v[226], 28, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(10, 9, 12, // tri0 + 7, 14, 12, // tri1 + 9, 4, 7, // tri2 + 7, 12, 9 // tri3 + ), + gsSPNTriangles_5b(7, 15, 14, // tri0 + 15, 16, 14, // tri1 + 17, 16, 15, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(15, 18, 17, // tri0 + 18, 20, 21, // tri1 + 20, 22, 21, // tri2 + 21, 19, 18 // tri3 + ), + gsSPNTriangles_5b(3, 22, 20, // tri0 + 1, 23, 2, // tri1 + 20, 0, 3, // tri2 + 1, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 24, 26, 23, // tri1 + 1, 27, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_b_1_v[199], 27, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 7 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 0, 2, // tri1 + 9, 2, 6, // tri2 + 8, 7, 5 // tri3 + ), + gsSPNTriangles_5b(8, 5, 10, // tri0 + 10, 5, 4, // tri1 + 10, 4, 11, // tri2 + 12, 3, 5 // tri3 + ), + gsSPNTriangles_5b(7, 12, 5, // tri0 + 2, 1, 12, // tri1 + 7, 2, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 13, 15, 17, // tri1 + 15, 18, 17, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 13, 17, // tri1 + 22, 17, 19, // tri2 + 23, 24, 14 // tri3 + ), + gsSPNTriangles_5b(23, 14, 25, // tri0 + 25, 14, 13, // tri1 + 25, 13, 22, // tri2 + 18, 26, 20 // tri3 + ), + gsSPNTriangles_5b(18, 20, 17, // tri0 + 24, 16, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_b_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 5, 8, // tri1 + 5, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 5, 14, // tri0 + 5, 15, 14, // tri1 + 15, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 20, 21, 19, // tri1 + 20, 22, 21, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(3, 24, 18, // tri0 + 17, 3, 18, // tri1 + 0, 2, 25, // tri2 + 3, 17, 26 // tri3 + ), + gsSPNTriangles_5b(16, 15, 27, // tri0 + 13, 28, 5, // tri1 + 28, 9, 5, // tri2 + 4, 15, 5 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_1_v[32], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 6, 9, 5 // tri3 + ), + gsSPNTriangles_5b(6, 5, 2, // tri0 + 10, 11, 12, // tri1 + 13, 10, 12, // tri2 + 14, 12, 15 // tri3 + ), + gsSPNTriangles_5b(12, 16, 15, // tri0 + 12, 17, 16, // tri1 + 17, 18, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 22, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 23, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 30, 26, 29, // tri2 + 31, 27, 29 // tri3 + ), + gsSPVertex(&grd_s_r5_b_1_v[64], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 2, // tri0 + 6, 7, 8, // tri1 + 9, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_b_1_v[74], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 11, 3, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 26, 25, 27, // tri1 + 28, 27, 29, // tri2 + 30, 29, 22 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 27, 28, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_1_v[105], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_b_1_v[108], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 9, 4, 10 // tri3 + ), + gsSPNTriangles_5b(4, 6, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 2, 20, 3, // tri1 + 2, 21, 20, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_1_v[139], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 8, 6, // tri0 + 5, 9, 8, // tri1 + 10, 0, 2, // tri2 + 1, 0, 3 // tri3 + ), + gsSPNTriangles_5b(7, 11, 5, // tri0 + 12, 13, 9, // tri1 + 12, 14, 13, // tri2 + 9, 5, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 16, // tri1 + 16, 15, 18, // tri2 + 20, 15, 17 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 26, 27, 28, // tri2 + 28, 29, 26 // tri3 + ), + gsSPNTriangles_5b(30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_1_v[171], 28, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 0, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 14, // tri0 + 17, 19, 20, // tri1 + 20, 18, 17, // tri2 + 18, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 21, 16, // tri0 + 19, 22, 20, // tri1 + 23, 20, 22, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b(23, 25, 20, // tri0 + 26, 27, 24, // tri1 + 24, 27, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c new file mode 100644 index 00000000..86d98333 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_b_1/grd_s_r5_b_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_b_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c b/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c new file mode 100644 index 00000000..3a4b09e9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2.c @@ -0,0 +1,310 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_b_2_v[] = { +#include "assets/field/bg/grd_s_r5_b_2_v.inc" +}; + +extern Gfx grd_s_r5_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_b_2_v[242], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 1, 7, // tri2 + 1, 0, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 10, 8, 12, // tri2 + 10, 6, 8 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_b_2_v[187], 17, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 7, 9, // tri1 + 10, 11, 12, // tri2 + 13, 8, 14 // tri3 + ), + gsSPNTriangles_5b(2, 13, 15, // tri0 + 1, 16, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_b_2_v[204], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 16, 19, // tri1 + 18, 14, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 16, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 26, 25, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 28, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_2_v[234], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 6, 7, // tri1 + 5, 2, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 4, 9, 5, // tri2 + 7, 10, 6 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 12, 1, 13, // tri1 + 12, 10, 1, // tri2 + 11, 14, 10 // tri3 + ), + gsSPNTriangles_5b(14, 6, 10, // tri0 + 8, 5, 15, // tri1 + 2, 3, 16, // tri2 + 9, 17, 5 // tri3 + ), + gsSPNTriangles_5b(18, 17, 9, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 30, // tri2 + 30, 31, 28 // tri3 + ), + gsSPVertex(&grd_s_r5_b_2_v[32], 27, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(3, 6, 7, // tri0 + 3, 7, 1, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 12, 11, // tri0 + 14, 15, 12, // tri1 + 16, 14, 11, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(13, 20, 21, // tri0 + 21, 20, 22, // tri1 + 22, 23, 24, // tri2 + 25, 24, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_b_2_v[59], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 3, 9, 10, // tri1 + 9, 7, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 17, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(19, 23, 20, // tri0 + 24, 14, 22, // tri1 + 25, 26, 15, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_2_v[90], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 11, // tri2 + 13, 2, 10 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 16, 18, 19, // tri2 + 20, 21, 14 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 20, 24, // tri1 + 25, 26, 27, // tri2 + 26, 22, 27 // tri3 + ), + gsSPNTriangles_5b(25, 28, 26, // tri0 + 25, 29, 28, // tri1 + 29, 30, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_2_v[121], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_b_2_v[125], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 22, 23, 24, // tri1 + 24, 25, 22, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_b_2_v[157], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 5, 6, 3, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 11, 12, 8 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_b_2_v[170], 17, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(9, 14, 15, // tri0 + 12, 6, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c new file mode 100644 index 00000000..37cfcd49 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_b_2/grd_s_r5_b_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_b_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c b/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c new file mode 100644 index 00000000..0b857a44 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1.c @@ -0,0 +1,348 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r5_p_1_v[] = { +#include "assets/field/bg/grd_s_r5_p_1_v.inc" +}; + +extern Gfx grd_s_r5_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_p_1_v[255], 23, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 1, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 10, 11, 4 // tri3 + ), + gsSPNTriangles_5b(12, 10, 4, // tri0 + 8, 12, 4, // tri1 + 9, 8, 4, // tri2 + 13, 9, 4 // tri3 + ), + gsSPNTriangles_5b(4, 11, 14, // tri0 + 4, 14, 3, // tri1 + 0, 2, 15, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 0, 17, 18, // tri1 + 0, 18, 19, // tri2 + 20, 0, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 21, 20, 19, // tri1 + 13, 4, 5, // tri2 + 0, 20, 1 // tri3 + ), + gsSPNTriangles_5b(5, 1, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r5_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r5_p_1_v[211], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 10, // tri1 + 15, 13, 10, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 22, 18, 23 // tri3 + ), + gsSPNTriangles_5b(18, 20, 23, // tri0 + 23, 24, 25, // tri1 + 23, 20, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 30, 31, 26, // tri1 + 31, 29, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[243], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 4, 9, // tri1 + 4, 6, 9, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 6, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r5_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 0, 2, 9, // tri2 + 2, 10, 9 // tri3 + ), + gsSPNTriangles_5b(0, 11, 1, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 15, 18, 16, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 26, 28, 24 // tri3 + ), + gsSPNTriangles_5b(24, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[30], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 11, 5, 9, // tri2 + 5, 11, 4 // tri3 + ), + gsSPNTriangles_5b(13, 14, 2, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 13, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 17, 19, 18, // tri1 + 19, 20, 18, // tri2 + 19, 12, 20 // tri3 + ), + gsSPNTriangles_5b(14, 21, 2, // tri0 + 21, 0, 2, // tri1 + 14, 22, 21, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 21, // tri0 + 23, 25, 24, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[60], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_p_1_v[65], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r5_p_1_v[82], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 20, 21, 19, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 24, 26, 22, // tri1 + 26, 27, 22, // tri2 + 24, 28, 29 // tri3 + ), + gsSPNTriangles_5b(24, 25, 28, // tri0 + 30, 26, 29, // tri1 + 26, 24, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[113], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 6, 7, 1, // tri1 + 7, 5, 1, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(3, 6, 1, // tri0 + 9, 10, 11, // tri1 + 12, 11, 13, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 18, 19, 16, // tri2 + 19, 14, 16 // tri3 + ), + gsSPNTriangles_5b(20, 21, 9, // tri0 + 21, 22, 9, // tri1 + 21, 23, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 27, 28, 25, // tri1 + 24, 26, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[143], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(9, 12, 11, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 16, 12, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 16, 19, // tri1 + 18, 20, 16, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 20, 23, // tri0 + 22, 24, 20, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[173], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 4, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 8, 11, // tri0 + 10, 12, 8, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 12, 15, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 20, 16, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 25, 26, 23 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 30, 27, 29, // tri1 + 30, 31, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r5_p_1_v[205], 6, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c new file mode 100644 index 00000000..3054472b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r5_p_1/grd_s_r5_p_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r5_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r5_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r5_p_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1.c b/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1.c new file mode 100644 index 00000000..ce32487c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1.c @@ -0,0 +1,213 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_1_v[] = { +#include "assets/field/bg/grd_s_r6_1_v.inc" +}; + +extern Gfx grd_s_r6_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_1_v[160], 13, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_1_v[147], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r6_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 13, 14, 10, // tri1 + 15, 13, 12, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(8, 17, 6, // tri0 + 5, 4, 18, // tri1 + 4, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 20, 24, 21, // tri1 + 24, 25, 21, // tri2 + 25, 26, 21 // tri3 + ), + gsSPNTriangles_5b(8, 27, 28, // tri0 + 8, 7, 27, // tri1 + 28, 29, 30, // tri2 + 2, 30, 29 // tri3 + ), + gsSPNTriangles_5b(2, 1, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_1_v[31], 30, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 5, 3, 6, // tri1 + 6, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 9, 12, // tri0 + 11, 13, 9, // tri1 + 14, 15, 16, // tri2 + 14, 17, 15 // tri3 + ), + gsSPNTriangles_5b(18, 17, 14, // tri0 + 18, 19, 17, // tri1 + 0, 2, 20, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 26, 27, 24, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_1_v[61], 22, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 5, 4, 8, // tri1 + 9, 10, 8, // tri2 + 0, 2, 10 // tri3 + ), + gsSPNTriangles_5b(9, 0, 10, // tri0 + 4, 9, 8, // tri1 + 11, 12, 13, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 15, 16, 13, // tri1 + 15, 17, 18, // tri2 + 18, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 21, // tri1 + 19, 21, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_1_v[83], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 11, 12, 9, // tri1 + 13, 14, 11, // tri2 + 5, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 2, // tri0 + 18, 19, 20, // tri1 + 21, 22, 18, // tri2 + 1, 23, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 1, 25, 24, // tri1 + 27, 1, 28, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r6_1_v[115], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 2 // tri2 + ), + gsSPNTriangles_5b(6, 2, 7, // tri0 + 7, 8, 6, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 14, // tri1 + 17, 18, 16, // tri2 + 8, 7, 18 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_1_v[134], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c new file mode 100644 index 00000000..9a4a88cc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_1/grd_s_r6_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2.c b/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2.c new file mode 100644 index 00000000..45d92207 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2.c @@ -0,0 +1,229 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_2_v[] = { +#include "assets/field/bg/grd_s_r6_2_v.inc" +}; + +extern Gfx grd_s_r6_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_2_v[169], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 6, 7, // tri0 + 3, 7, 4, // tri1 + 1, 4, 8, // tri2 + 2, 1, 8 // tri3 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 0, 9, 10, // tri1 + 10, 11, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(9, 13, 12, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 18, 17 // tri3 + ), + gsSPNTriangles_5b(15, 19, 18, // tri0 + 15, 20, 19, // tri1 + 14, 21, 15, // tri2 + 21, 22, 15 // tri3 + ), + gsSPNTriangles_5b(22, 23, 15, // tri0 + 23, 20, 15, // tri1 + 24, 7, 25, // tri2 + 7, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 24, 6, 7, // tri1 + 5, 28, 3, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r6_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 7, 8, 5, // tri1 + 8, 9, 5, // tri2 + 1, 10, 2 // tri3 + ), + gsSPNTriangles_5b(1, 11, 10, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(19, 15, 17, // tri0 + 18, 20, 19, // tri1 + 21, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 21, 24, // tri0 + 23, 25, 21, // tri1 + 25, 22, 21, // tri2 + 1, 26, 11 // tri3 + ), + gsSPNTriangles_5b(26, 27, 11, // tri0 + 13, 12, 28, // tri1 + 12, 29, 28, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(31, 28, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_2_v[64], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 1, 6, 4, // tri1 + 1, 7, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_2_v[72], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 15, 16, 17, // tri1 + 12, 15, 13, // tri2 + 16, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 20, 22, 21, // tri1 + 23, 24, 25, // tri2 + 26, 23, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 30, 22, // tri1 + 29, 26, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_2_v[104], 30, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 1, 10, 11, // tri1 + 10, 8, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 24, 26, 25, // tri2 + 27, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_2_v[134], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 0, 3, 1, // tri1 + 5, 7, 6, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(5, 8, 7, // tri0 + 8, 10, 9, // tri1 + 11, 12, 10, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 13, // tri1 + 13, 11, 14, // tri2 + 16, 17, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 18, 19, 20, // tri1 + 20, 21, 22, // tri2 + 21, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 18, 20, // tri0 + 21, 24, 22, // tri1 + 23, 25, 26, // tri2 + 23, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 28, // tri0 + 25, 28, 26, // tri1 + 27, 29, 30, // tri2 + 27, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r6_2_v[165], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c new file mode 100644 index 00000000..76c7b804 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_2/grd_s_r6_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3.c b/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3.c new file mode 100644 index 00000000..bafb84ea --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3.c @@ -0,0 +1,223 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_3_v[] = { +#include "assets/field/bg/grd_s_r6_3_v.inc" +}; + +extern Gfx grd_s_r6_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_3_v[167], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 1, 9, // tri1 + 1, 0, 9, // tri2 + 4, 8, 9 // tri3 + ), + gsSPNTriangles_5b(4, 6, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_3_v[154], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r6_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 2, 3, 8, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 18, 16, 17 // tri3 + ), + gsSPNTriangles_5b(0, 19, 1, // tri0 + 1, 13, 3, // tri1 + 20, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 7, // tri0 + 25, 26, 7, // tri1 + 27, 28, 29, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(30, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 9, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 15, 18, 16, // tri2 + 19, 9, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 18, // tri1 + 17, 24, 18, // tri2 + 26, 19, 20 // tri3 + ), + gsSPNTriangles_5b(27, 26, 28, // tri0 + 27, 29, 26, // tri1 + 29, 19, 26, // tri2 + 13, 28, 12 // tri3 + ), + gsSPNTriangles_5b(30, 10, 12, // tri0 + 30, 31, 10, // tri1 + 20, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_3_v[64], 10, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 4, 7, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_3_v[74], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 18, 22, // tri2 + 16, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 21, 25, // tri0 + 26, 27, 28, // tri1 + 29, 26, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_3_v[105], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_3_v[115], 26, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 7, 8, 9, // tri1 + 9, 10, 7, // tri2 + 10, 11, 7 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 11, 12, 13, // tri1 + 12, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 16, 17, 15, // tri1 + 18, 19, 20, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 23, 24, 21, // tri2 + 24, 6, 21 // tri3 + ), + gsSPNTriangles_5b(24, 4, 6, // tri0 + 5, 25, 3, // tri1 + 25, 0, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_3_v[141], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c new file mode 100644 index 00000000..f9582e9b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_3/grd_s_r6_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c b/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c new file mode 100644 index 00000000..fbb34ed5 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1.c @@ -0,0 +1,262 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_b_1_v[] = { +#include "assets/field/bg/grd_s_r6_b_1_v.inc" +}; + +extern Gfx grd_s_r6_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_b_1_v[172], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(3, 0, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 9, 7, 10, // tri1 + 11, 9, 10, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(13, 11, 10, // tri0 + 14, 12, 15, // tri1 + 14, 13, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_b_1_v[143], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 5, 16, // tri0 + 3, 4, 8, // tri1 + 10, 15, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r6_b_1_v[160], 12, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 1, 0, // tri1 + 7, 4, 5, // tri2 + 7, 5, 8 // tri3 + ), + gsSPNTriangles_5b(9, 2, 4, // tri0 + 9, 4, 7, // tri1 + 10, 0, 2, // tri2 + 10, 2, 9 // tri3 + ), + gsSPNTriangles_5b(11, 6, 0, // tri0 + 11, 0, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_b_1_v[0], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 5, 16, // tri0 + 3, 4, 8, // tri1 + 10, 15, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_b_1_v[17], 31, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 18, 20, 19, // tri1 + 20, 21, 22, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(24, 23, 25, // tri0 + 26, 27, 25, // tri1 + 26, 28, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r6_b_1_v[48], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 3, 8, 6, // tri1 + 3, 9, 8, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 11, 15, 14, // tri2 + 14, 16, 12 // tri3 + ), + gsSPNTriangles_5b(16, 17, 12, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 23, 26, 25 // tri3 + ), + gsSPNTriangles_5b(23, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 7, 28, // tri2 + 27, 4, 7 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_1_v[80], 25, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 9, 11, 10, // tri1 + 11, 12, 10, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(5, 14, 7, // tri0 + 5, 15, 14, // tri1 + 16, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b(17, 20, 19, // tri0 + 20, 21, 19, // tri1 + 22, 23, 24, // tri2 + 23, 13, 24 // tri3 + ), + gsSPNTriangles_5b(23, 12, 13, // tri0 + 22, 4, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_b_1_v[105], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(7, 1, 0, // tri0 + 8, 0, 2, // tri1 + 8, 2, 3, // tri2 + 9, 10, 3 // tri3 + ), + gsSPNTriangles_5b(9, 3, 4, // tri0 + 5, 9, 4, // tri1 + 11, 5, 6, // tri2 + 12, 11, 6 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 15, 14, 16, // tri1 + 12, 6, 13, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 22, 23, 21 // tri3 + ), + gsSPNTriangles_5b(21, 18, 22, // tri0 + 22, 24, 23, // tri1 + 25, 26, 24, // tri2 + 24, 22, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 26, 25, 27, // tri1 + 28, 29, 30, // tri2 + 30, 29, 31 // tri3 + ), + gsSPVertex(&grd_s_r6_b_1_v[137], 6, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 5 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c new file mode 100644 index 00000000..463913cb --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_b_1/grd_s_r6_b_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_b_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c b/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c new file mode 100644 index 00000000..6a0a5984 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2.c @@ -0,0 +1,342 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_b_2_v[] = { +#include "assets/field/bg/grd_s_r6_b_2_v.inc" +}; + +extern Gfx grd_s_r6_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_b_2_v[264], 27, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 5, 7, // tri2 + 5, 4, 7 // tri3 + ), + gsSPNTriangles_5b(3, 9, 10, // tri0 + 3, 10, 2, // tri1 + 11, 12, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 20, 21, 22, // tri1 + 20, 22, 8, // tri2 + 22, 6, 8 // tri3 + ), + gsSPNTriangles_5b(8, 23, 20, // tri0 + 8, 24, 23, // tri1 + 14, 16, 18, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(18, 25, 14, // tri0 + 18, 26, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_b_2_v[186], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 1, 6, 4, // tri1 + 6, 7, 4, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 10, 13, // tri1 + 12, 8, 10, // tri2 + 14, 8, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 8, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(18, 17, 20, // tri0 + 17, 22, 20, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 28, 26, 29, // tri1 + 28, 24, 26, // tri2 + 30, 24, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[218], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b(14, 13, 16, // tri0 + 13, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 24, 22, 25, // tri1 + 24, 20, 22, // tri2 + 26, 20, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 20, // tri0 + 28, 29, 30, // tri1 + 28, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[250], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(10, 6, 8, // tri0 + 12, 6, 10, // tri1 + 12, 13, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r6_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 8, // tri0 + 12, 13, 8, // tri1 + 13, 14, 8, // tri2 + 14, 15, 8 // tri3 + ), + gsSPNTriangles_5b(15, 6, 8, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b(11, 8, 10, // tri0 + 21, 13, 22, // tri1 + 13, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(21, 25, 26, // tri0 + 21, 22, 25, // tri1 + 25, 27, 26, // tri2 + 27, 16, 26 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 9, 16, // tri0 + 15, 10, 9, // tri1 + 3, 17, 2, // tri2 + 17, 18, 2 // tri3 + ), + gsSPNTriangles_5b(18, 19, 2, // tri0 + 20, 21, 19, // tri1 + 22, 23, 24, // tri2 + 22, 25, 23 // tri3 + ), + gsSPNTriangles_5b(22, 26, 25, // tri0 + 22, 27, 26, // tri1 + 22, 28, 27, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[64], 11, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_b_2_v[75], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 10, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 11, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 18, 22, // tri0 + 23, 24, 9, // tri1 + 25, 26, 27, // tri2 + 28, 5, 26 // tri3 + ), + gsSPNTriangles_5b(29, 4, 30, // tri0 + 31, 30, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_b_2_v[107], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 7, 9, // tri1 + 7, 10, 9, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 14, 13, 15, // tri1 + 13, 16, 15, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 1, 20, 3, // tri1 + 1, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 30, 28, // tri1 + 27, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[139], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_b_2_v[171], 15, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 12, 13, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c new file mode 100644 index 00000000..60376a99 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_b_2/grd_s_r6_b_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_b_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c b/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c new file mode 100644 index 00000000..157505a8 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1.c @@ -0,0 +1,408 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r6_p_1_v[] = { +#include "assets/field/bg/grd_s_r6_p_1_v.inc" +}; + +extern Gfx grd_s_r6_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_p_1_v[272], 31, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 5, 6, 1, // tri1 + 7, 8, 2, // tri2 + 8, 9, 2 // tri3 + ), + gsSPNTriangles_5b(8, 10, 9, // tri0 + 8, 11, 10, // tri1 + 2, 12, 13, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(2, 14, 12, // tri0 + 2, 15, 16, // tri1 + 17, 2, 18, // tri2 + 9, 18, 2 // tri3 + ), + gsSPNTriangles_5b(19, 2, 17, // tri0 + 20, 21, 22, // tri1 + 20, 6, 21, // tri2 + 1, 6, 20 // tri3 + ), + gsSPNTriangles_5b(2, 23, 24, // tri0 + 2, 25, 26, // tri1 + 2, 19, 27, // tri2 + 28, 11, 8 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 30, 11, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r6_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r6_p_1_v[228], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 13, 12, 14, // tri1 + 13, 14, 15, // tri2 + 12, 16, 17 // tri3 + ), + gsSPNTriangles_5b(12, 17, 14, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 22, 18, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 23, // tri0 + 24, 25, 18, // tri1 + 24, 18, 22, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 29, 28, 30, // tri1 + 29, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[260], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 4, 7, // tri1 + 8, 7, 9, // tri2 + 10, 11, 4 // tri3 + ), + gsSPNTriangles_5b(10, 4, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r6_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 6 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 0, 7, 8, // tri1 + 9, 8, 7, // tri2 + 10, 8, 9 // tri3 + ), + gsSPNTriangles_5b(4, 11, 5, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 14, 16, 12 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b(19, 23, 22, // tri0 + 19, 24, 25, // tri1 + 24, 26, 25, // tri2 + 24, 27, 26 // tri3 + ), + gsSPNTriangles_5b(24, 28, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 11, // tri2 + 12, 11, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 14, 15, 12, // tri1 + 15, 16, 12, // tri2 + 7, 4, 5 // tri3 + ), + gsSPNTriangles_5b(17, 7, 18, // tri0 + 18, 7, 19, // tri1 + 7, 6, 19, // tri2 + 20, 19, 6 // tri3 + ), + gsSPNTriangles_5b(9, 20, 6, // tri0 + 0, 2, 21, // tri1 + 22, 0, 21, // tri2 + 23, 0, 22 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 26, 25, 24, // tri1 + 27, 28, 29, // tri2 + 16, 30, 12 // tri3 + ), + gsSPNTriangles_5b(12, 30, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[62], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_p_1_v[67], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 4, 9, // tri1 + 3, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 7, 14, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 21, 22, 15, // tri1 + 23, 24, 21, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 23, 27, // tri0 + 25, 28, 26, // tri1 + 25, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[98], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r6_p_1_v[101], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(8, 10, 5, // tri0 + 8, 5, 9, // tri1 + 7, 11, 12, // tri2 + 7, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 10, 13, // tri0 + 11, 14, 12, // tri1 + 14, 15, 10, // tri2 + 14, 10, 12 // tri3 + ), + gsSPNTriangles_5b(11, 16, 14, // tri0 + 16, 17, 15, // tri1 + 16, 15, 14, // tri2 + 11, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 18, 17, 16, // tri1 + 20, 21, 22, // tri2 + 21, 23, 19 // tri3 + ), + gsSPNTriangles_5b(21, 19, 22, // tri0 + 24, 25, 26, // tri1 + 25, 27, 23, // tri2 + 25, 23, 26 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 29, 31, 27, // tri1 + 29, 27, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[133], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 3, // tri1 + 6, 3, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 8, // tri0 + 10, 8, 11, // tri1 + 9, 13, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 12, 10, // tri0 + 9, 15, 16, // tri1 + 9, 16, 13, // tri2 + 16, 14, 13 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 14, // tri1 + 17, 14, 16, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b(15, 20, 17, // tri0 + 20, 18, 17, // tri1 + 19, 21, 20, // tri2 + 21, 22, 18 // tri3 + ), + gsSPNTriangles_5b(21, 18, 20, // tri0 + 19, 23, 21, // tri1 + 23, 24, 22, // tri2 + 23, 22, 21 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 26, 28, 24, // tri1 + 26, 24, 27, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[165], 32, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 1, // tri0 + 5, 1, 6, // tri1 + 8, 9, 10, // tri2 + 9, 11, 7 // tri3 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 11, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 17, 19, 15, // tri1 + 17, 15, 18, // tri2 + 16, 20, 17 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 20, 19, 17, // tri1 + 16, 22, 23, // tri2 + 16, 23, 20 // tri3 + ), + gsSPNTriangles_5b(23, 21, 20, // tri0 + 22, 24, 23, // tri1 + 24, 25, 21, // tri2 + 24, 21, 23 // tri3 + ), + gsSPNTriangles_5b(22, 26, 24, // tri0 + 26, 25, 24, // tri1 + 26, 27, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(27, 29, 28, // tri0 + 27, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r6_p_1_v[196], 32, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 2, 1, // tri1 + 6, 7, 8, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b(7, 10, 9, // tri0 + 7, 2, 10, // tri1 + 7, 0, 2, // tri2 + 3, 11, 4 // tri3 + ), + gsSPNTriangles_5b(11, 12, 5, // tri0 + 11, 5, 4, // tri1 + 3, 13, 14, // tri2 + 3, 14, 11 // tri3 + ), + gsSPNTriangles_5b(14, 12, 11, // tri0 + 13, 15, 16, // tri1 + 13, 16, 14, // tri2 + 16, 12, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 12, // tri1 + 17, 12, 16, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b(15, 20, 17, // tri0 + 20, 18, 17, // tri1 + 19, 21, 22, // tri2 + 19, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 18, 20, // tri0 + 21, 23, 22, // tri1 + 23, 24, 18, // tri2 + 23, 18, 22 // tri3 + ), + gsSPNTriangles_5b(21, 25, 23, // tri0 + 25, 24, 23, // tri1 + 25, 26, 24, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b(25, 28, 27, // tri0 + 28, 29, 27, // tri1 + 28, 30, 29, // tri2 + 28, 31, 30 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c new file mode 100644 index 00000000..89403c8c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r6_p_1/grd_s_r6_p_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r6_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r6_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r6_p_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1.c b/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1.c new file mode 100644 index 00000000..158101a2 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1.c @@ -0,0 +1,259 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_1_v[] = { +#include "assets/field/bg/grd_s_r7_1_v.inc" +}; + +extern Gfx grd_s_r7_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_1_v[182], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 10, // tri0 + 7, 10, 8, // tri1 + 9, 11, 12, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 11, 14, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_1_v[171], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 12, 11, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 19, 17, 16, // tri2 + 19, 8, 17 // tri3 + ), + gsSPNTriangles_5b(9, 8, 19, // tri0 + 20, 0, 2, // tri1 + 21, 2, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(25, 24, 22, // tri0 + 22, 26, 25, // tri1 + 26, 27, 27, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(28, 4, 6, // tri0 + 29, 9, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_1_v[30], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(3, 6, 5, // tri0 + 3, 2, 6, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 11, // tri0 + 15, 14, 16, // tri1 + 7, 4, 8, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 18, 21, 20, // tri1 + 21, 22, 23, // tri2 + 21, 23, 24 // tri3 + ), + gsSPNTriangles_5b(24, 20, 21, // tri0 + 6, 25, 5, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 28, 30, // tri0 + 30, 31, 29, // tri1 + 28, 29, 27, // tri2 + 27, 29, 8 // tri3 + ), + gsSPVertex(&grd_s_r7_1_v[62], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_1_v[71], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(12, 16, 17, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22, // tri2 + 21, 14, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 24, 27, 28, // tri1 + 29, 28, 27, // tri2 + 30, 29, 27 // tri3 + ), + gsSPVertex(&grd_s_r7_1_v[102], 13, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_1_v[115], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 22, 23, 24, // tri1 + 25, 22, 24, // tri2 + 22, 26, 23 // tri3 + ), + gsSPNTriangles_5b(26, 27, 23, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_1_v[147], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_1_v[160], 11, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c new file mode 100644 index 00000000..25f97361 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_1/grd_s_r7_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2.c b/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2.c new file mode 100644 index 00000000..04e165f7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2.c @@ -0,0 +1,253 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_2_v[] = { +#include "assets/field/bg/grd_s_r7_2_v.inc" +}; + +extern Gfx grd_s_r7_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_2_v[167], 20, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 10, 8, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPNTriangles_5b(13, 11, 12, // tri0 + 13, 12, 14, // tri1 + 15, 13, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b(17, 15, 16, // tri0 + 17, 16, 18, // tri1 + 19, 17, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 1, 6, 3, // tri1 + 6, 5, 3, // tri2 + 5, 7, 4 // tri3 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 11, 12, 9, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 8, 17, 16, // tri1 + 17, 15, 16, // tri2 + 8, 10, 17 // tri3 + ), + gsSPNTriangles_5b(13, 18, 14, // tri0 + 14, 18, 19, // tri1 + 18, 20, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 24, 22, // tri0 + 21, 25, 24, // tri1 + 21, 26, 25, // tri2 + 22, 27, 23 // tri3 + ), + gsSPNTriangles_5b(27, 28, 23, // tri0 + 27, 7, 28, // tri1 + 7, 5, 28, // tri2 + 0, 29, 1 // tri3 + ), + gsSPNTriangles_5b(0, 30, 29, // tri0 + 30, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_2_v[32], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 11, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 15, 17, 14 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 8, 21, 22, // tri1 + 22, 21, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_2_v[56], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 8, 13, 9, // tri2 + 10, 12, 3 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 14, 15, 16, // tri1 + 0, 17, 18, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 17, 20, // tri0 + 1, 0, 18, // tri1 + 21, 22, 23, // tri2 + 21, 9, 13 // tri3 + ), + gsSPNTriangles_5b(19, 24, 25, // tri0 + 24, 26, 27, // tri1 + 28, 2, 29, // tri2 + 30, 28, 29 // tri3 + ), + gsSPNTriangles_5b(31, 28, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_2_v[88], 25, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 0, 8, // tri1 + 8, 0, 2, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 10, 13, 12, // tri1 + 13, 5, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 19, 20, 21, // tri2 + 21, 9, 11 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 16, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_2_v[113], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 2, 7, // tri2 + 8, 0, 2 // tri3 + ), + gsSPNTriangles_5b(5, 9, 6, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 22, 23, 24, // tri1 + 25, 26, 24, // tri2 + 26, 22, 24 // tri3 + ), + gsSPNTriangles_5b(20, 27, 21, // tri0 + 20, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 15, 29 // tri3 + ), + gsSPNTriangles_5b(15, 17, 29, // tri0 + 18, 14, 19, // tri1 + 14, 13, 19, // tri2 + 10, 30, 11 // tri3 + ), + gsSPNTriangles_5b(30, 31, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_2_v[145], 22, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 4, 9, 5, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 8, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c new file mode 100644 index 00000000..5a5dd532 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_2/grd_s_r7_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3.c b/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3.c new file mode 100644 index 00000000..1c0a0259 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3.c @@ -0,0 +1,234 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_3_v[] = { +#include "assets/field/bg/grd_s_r7_3_v.inc" +}; + +extern Gfx grd_s_r7_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_3_v[167], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 2, 9 // tri3 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 0, 6, 3, // tri1 + 4, 11, 5, // tri2 + 4, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 18, 19, // tri1 + 18, 20, 21, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 25, // tri1 + 29, 30, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_3_v[31], 24, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 5, // tri0 + 6, 7, 8, // tri1 + 8, 9, 10, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 20, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_3_v[55], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 4, // tri0 + 7, 4, 6, // tri1 + 7, 6, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 8, 12, // tri0 + 10, 13, 11, // tri1 + 10, 14, 13, // tri2 + 8, 7, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 16, 15, 24, // tri1 + 25, 17, 18, // tri2 + 25, 26, 17 // tri3 + ), + gsSPNTriangles_5b(26, 15, 17, // tri0 + 19, 11, 13, // tri1 + 3, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(27, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_3_v[86], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 0, // tri0 + 8, 9, 10, // tri1 + 10, 9, 11, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(13, 11, 12, // tri0 + 13, 12, 14, // tri1 + 12, 15, 14, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 2, 1, // tri1 + 19, 20, 5, // tri2 + 5, 4, 19 // tri3 + ), + gsSPNTriangles_5b(21, 19, 4, // tri0 + 22, 23, 24, // tri1 + 22, 25, 26, // tri2 + 26, 23, 22 // tri3 + ), + gsSPNTriangles_5b(23, 27, 20, // tri0 + 28, 27, 23, // tri1 + 28, 23, 26, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r7_3_v[118], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_3_v[123], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 5, 4, 6, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 13, 12, 14, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 22, 24, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(24, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_3_v[155], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c new file mode 100644 index 00000000..83943362 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_3/grd_s_r7_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c b/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c new file mode 100644 index 00000000..df95e7dd --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1.c @@ -0,0 +1,273 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_b_1_v[] = { +#include "assets/field/bg/grd_s_r7_b_1_v.inc" +}; + +extern Gfx grd_s_r7_b_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_b_1_v[189], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 2, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 3, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 9, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_b_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_b_1_v[162], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 7, 10, // tri1 + 8, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_s_r7_b_1_v[177], 12, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 4, // tri0 + 6, 1, 0, // tri1 + 5, 4, 7, // tri2 + 5, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 9, 6, 11, // tri1 + 10, 1, 6, // tri2 + 11, 6, 0 // tri3 + ), + gsSPNTriangles_5b(11, 0, 3, // tri0 + 4, 2, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_b_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 7, 2, 3, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 8, 12, 9, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 7, 15, // tri0 + 17, 13, 18, // tri1 + 13, 19, 18, // tri2 + 17, 14, 13 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 21, 17, 18, // tri1 + 22, 21, 20, // tri2 + 17, 23, 14 // tri3 + ), + gsSPNTriangles_5b(24, 25, 12, // tri0 + 24, 22, 25, // tri1 + 24, 26, 22, // tri2 + 22, 20, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 22, // tri0 + 26, 28, 27, // tri1 + 0, 2, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_1_v[30], 18, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 2, 5, // tri0 + 2, 3, 5, // tri1 + 2, 1, 3, // tri2 + 8, 9, 2 // tri3 + ), + gsSPNTriangles_5b(9, 10, 2, // tri0 + 10, 11, 2, // tri1 + 6, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 15, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_1_v[48], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 12, 9, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 20, 21, 19, // tri1 + 21, 22, 7, // tri2 + 8, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 26, 27, 25, // tri1 + 26, 28, 27, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_r7_b_1_v[80], 18, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 8, 6, 9, // tri1 + 10, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_1_v[98], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 12, 11, 1 // tri3 + ), + gsSPNTriangles_5b(13, 2, 14, // tri0 + 15, 14, 16, // tri1 + 17, 16, 18, // tri2 + 19, 18, 20 // tri3 + ), + gsSPNTriangles_5b(21, 10, 9, // tri0 + 9, 11, 12, // tri1 + 12, 1, 0, // tri2 + 2, 13, 3 // tri3 + ), + gsSPNTriangles_5b(22, 13, 14, // tri0 + 22, 14, 15, // tri1 + 15, 16, 17, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(23, 19, 20, // tri0 + 24, 25, 26, // tri1 + 27, 26, 28, // tri2 + 29, 28, 5 // tri3 + ), + gsSPNTriangles_5b(8, 6, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_1_v[129], 18, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(2, 3, 6, // tri0 + 2, 6, 0, // tri1 + 1, 0, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 13, 11, 12, // tri1 + 14, 15, 13, // tri2 + 16, 14, 17 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_1_v[147], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c new file mode 100644 index 00000000..c9711bb8 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_b_1/grd_s_r7_b_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_b_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_b_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_b_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c b/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c new file mode 100644 index 00000000..2ef88282 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2.c @@ -0,0 +1,346 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_b_2_v[] = { +#include "assets/field/bg/grd_s_r7_b_2_v.inc" +}; + +extern Gfx grd_s_r7_b_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_b_2_v[273], 20, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 5, 9, 6, // tri2 + 5, 10, 9 // tri3 + ), + gsSPNTriangles_5b(10, 2, 9, // tri0 + 2, 1, 9, // tri1 + 0, 11, 4, // tri2 + 0, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 19, 16, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_b_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_b_2_v[222], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_b_2_v[235], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 10, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 11, 9, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 16, 19, // tri1 + 18, 14, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 16, 20, // tri0 + 22, 23, 24, // tri1 + 22, 25, 23, // tri2 + 26, 25, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 28, 25, // tri1 + 28, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[265], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 6, 7, // tri1 + 5, 2, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_b_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 10, 15, // tri1 + 16, 17, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 19, 21, // tri0 + 23, 24, 25, // tri1 + 26, 27, 24, // tri2 + 28, 29, 27 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[30], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 9, // tri1 + 7, 10, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 10, 14, 11, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(0, 18, 1, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 23, 20, 24 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 26, 27, 25, // tri1 + 28, 29, 6, // tri2 + 30, 29, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[62], 20, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 6, 12, 7, // tri2 + 11, 12, 6 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 10, 13, 12, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_2_v[82], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 6, 10, // tri0 + 4, 11, 12, // tri1 + 11, 9, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 17, 18, 15, // tri1 + 18, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b(18, 22, 19, // tri0 + 2, 23, 24, // tri1 + 25, 26, 27, // tri2 + 25, 28, 26 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[114], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 0, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 6, 13 // tri3 + ), + gsSPNTriangles_5b(0, 3, 1, // tri0 + 14, 15, 5, // tri1 + 14, 16, 15, // tri2 + 17, 11, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 22, 19, // tri1 + 23, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[145], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_2_v[148], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 9, 8, 7, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b(11, 9, 10, // tri0 + 12, 11, 10, // tri1 + 12, 10, 2, // tri2 + 1, 12, 2 // tri3 + ), + gsSPNTriangles_5b(4, 3, 13, // tri0 + 14, 4, 13, // tri1 + 14, 13, 15, // tri2 + 16, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 17, // tri0 + 18, 16, 17, // tri1 + 19, 18, 17, // tri2 + 19, 17, 20 // tri3 + ), + gsSPNTriangles_5b(21, 19, 20, // tri0 + 22, 21, 20, // tri1 + 22, 20, 23, // tri2 + 24, 22, 23 // tri3 + ), + gsSPNTriangles_5b(25, 24, 23, // tri0 + 25, 23, 26, // tri1 + 25, 26, 27, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_b_2_v[180], 29, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 13, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 17, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 20, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 23, 26, 25, // tri1 + 26, 27, 25, // tri2 + 26, 28, 27 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_b_2_v[209], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c new file mode 100644 index 00000000..a265fcc7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_b_2/grd_s_r7_b_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_b_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_b_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_b_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c b/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c new file mode 100644 index 00000000..6b870f60 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1.c @@ -0,0 +1,337 @@ +#include "libforest/gbi_extensions.h" + +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_r7_p_1_v[] = { +#include "assets/field/bg/grd_s_r7_p_1_v.inc" +}; + +extern Gfx grd_s_r7_p_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_p_1_v[256], 17, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 6, // tri0 + 8, 7, 6, // tri1 + 2, 8, 6, // tri2 + 3, 2, 6 // tri3 + ), + gsSPNTriangles_5b(9, 3, 6, // tri0 + 10, 9, 6, // tri1 + 11, 10, 6, // tri2 + 12, 11, 6 // tri3 + ), + gsSPNTriangles_5b(13, 12, 6, // tri0 + 14, 13, 6, // tri1 + 14, 6, 5, // tri2 + 15, 14, 5 // tri3 + ), + gsSPNTriangles_5b(15, 5, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_r7_p_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_r7_p_1_v[218], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(10, 6, 8, // tri0 + 12, 13, 10, // tri1 + 13, 6, 10, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 16, 18, 19, // tri1 + 16, 17, 18, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 24, 27 // tri3 + ), + gsSPNTriangles_5b(26, 22, 24, // tri0 + 28, 29, 26, // tri1 + 29, 22, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[248], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 3, 4, // tri0 + 3, 6, 4, // tri1 + 6, 7, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_r7_p_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 11, 12, 7 // tri3 + ), + gsSPNTriangles_5b(12, 13, 7, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(7, 13, 8, // tri0 + 9, 11, 7, // tri1 + 19, 20, 21, // tri2 + 1, 6, 3 // tri3 + ), + gsSPNTriangles_5b(0, 22, 1, // tri0 + 0, 23, 22, // tri1 + 4, 6, 24, // tri2 + 5, 17, 3 // tri3 + ), + gsSPNTriangles_5b(5, 18, 17, // tri0 + 25, 26, 27, // tri1 + 25, 28, 26, // tri2 + 25, 29, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 25, // tri0 + 31, 29, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[32], 28, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 8, // tri0 + 7, 12, 10, // tri1 + 13, 14, 15, // tri2 + 16, 17, 13 // tri3 + ), + gsSPNTriangles_5b(17, 14, 13, // tri0 + 18, 17, 16, // tri1 + 17, 19, 14, // tri2 + 20, 10, 12 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 24, 25, 22, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_p_1_v[60], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 6, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 3, 15, 4, // tri2 + 15, 16, 4 // tri3 + ), + gsSPNTriangles_5b(14, 11, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 22, 14, 17 // tri3 + ), + gsSPNTriangles_5b(19, 24, 20, // tri0 + 22, 17, 23, // tri1 + 20, 25, 26, // tri2 + 27, 28, 18 // tri3 + ), + gsSPNTriangles_5b(10, 29, 27, // tri0 + 5, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[92], 14, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 6, 13, // tri1 + 10, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_r7_p_1_v[106], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 7, // tri1 + 9, 5, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 15, 16, 17, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(19, 7, 6, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b(23, 25, 22, // tri0 + 6, 5, 26, // tri1 + 27, 5, 9, // tri2 + 18, 28, 16 // tri3 + ), + gsSPNTriangles_5b(18, 29, 28, // tri0 + 18, 30, 29, // tri1 + 15, 14, 18, // tri2 + 14, 30, 18 // tri3 + ), + gsSPNTriangles_5b(4, 31, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[138], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(1, 3, 7, // tri0 + 3, 5, 7, // tri1 + 8, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 11, 9, 13, // tri1 + 14, 15, 16, // tri2 + 9, 17, 13 // tri3 + ), + gsSPNTriangles_5b(18, 14, 16, // tri0 + 19, 18, 16, // tri1 + 20, 15, 14, // tri2 + 18, 20, 14 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 31, 27, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[170], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 13, 8, 12, // tri1 + 14, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 17, 20, 16, // tri1 + 21, 18, 19, // tri2 + 18, 22, 17 // tri3 + ), + gsSPNTriangles_5b(21, 23, 18, // tri0 + 23, 22, 18, // tri1 + 23, 24, 22, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 27, 29, 28, // tri1 + 30, 31, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_r7_p_1_v[202], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 4, 8, 5, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 13, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c b/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c new file mode 100644 index 00000000..a77ea7dc --- /dev/null +++ b/src/data/field/bg/acre/grd_s_r7_p_1/grd_s_r7_p_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_r7_p_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_r7_p_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_r7_p_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1.c b/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1.c new file mode 100644 index 00000000..d235e3b0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1.c @@ -0,0 +1,224 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_1_v[] = { +#include "assets/field/bg/grd_s_t_1_v.inc" +}; + +extern Gfx grd_s_t_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_1_v[158], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 13, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 14, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 18, // tri0 + 20, 22, 21, // tri1 + 21, 23, 18, // tri2 + 21, 24, 23 // tri3 + ), + gsSPNTriangles_5b(23, 25, 18, // tri0 + 25, 26, 18, // tri1 + 25, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b(20, 29, 30, // tri0 + 20, 30, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_1_v[31], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 17, 18, 0, // tri1 + 17, 19, 18, // tri2 + 0, 2, 17 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 20, 23, 21, // tri1 + 24, 25, 17, // tri2 + 25, 26, 19 // tri3 + ), + gsSPNTriangles_5b(25, 19, 17, // tri0 + 25, 27, 26, // tri1 + 25, 28, 27, // tri2 + 24, 29, 25 // tri3 + ), + gsSPNTriangles_5b(30, 29, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_1_v[62], 16, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 9, 7, // tri1 + 9, 10, 7, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(10, 12, 7, // tri0 + 13, 14, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_1_v[78], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 11, 2, // tri2 + 2, 11, 12 // tri3 + ), + gsSPNTriangles_5b(2, 12, 4, // tri0 + 4, 12, 13, // tri1 + 4, 13, 6, // tri2 + 6, 13, 14 // tri3 + ), + gsSPNTriangles_5b(6, 14, 8, // tri0 + 10, 15, 16, // tri1 + 10, 16, 11, // tri2 + 11, 16, 17 // tri3 + ), + gsSPNTriangles_5b(11, 17, 12, // tri0 + 12, 17, 18, // tri1 + 12, 18, 13, // tri2 + 13, 18, 19 // tri3 + ), + gsSPNTriangles_5b(13, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_1_v[98], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 3, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17, // tri2 + 16, 19, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 20, 22, 25, // tri2 + 23, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 23, 27, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_1_v[128], 5, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_1_v[133], 25, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 6, 8, 7, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 11, // tri1 + 12, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 21, 24, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c b/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c new file mode 100644 index 00000000..a2acc253 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_1/grd_s_t_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_10/grd_s_t_10.c b/src/data/field/bg/acre/grd_s_t_10/grd_s_t_10.c new file mode 100644 index 00000000..00bbb18e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_10/grd_s_t_10.c @@ -0,0 +1,323 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_10_v[] = { +#include "assets/field/bg/grd_s_t_10_v.inc" +}; + +extern Gfx grd_s_t_10_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_10_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_10_v[173], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 6, // tri0 + 5, 6, 7, // tri1 + 8, 5, 7, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 10, // tri0 + 11, 9, 12, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 18, // tri0 + 16, 19, 17, // tri1 + 19, 20, 17, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 23, 11, 24, // tri1 + 21, 23, 22, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 25, 29, // tri0 + 30, 28, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_10_v[205], 22, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 5, 9, // tri0 + 10, 11, 12, // tri1 + 11, 8, 13, // tri2 + 8, 9, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 6, 17, 18, // tri2 + 14, 19, 15 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_10_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 11, 10, 13, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 15, 14, 13, // tri0 + 16, 14, 15, // tri1 + 15, 13, 17, // tri2 + 17, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 19, // tri0 + 23, 24, 20, // tri1 + 25, 24, 23, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 25, // tri0 + 27, 29, 28, // tri1 + 30, 31, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_10_v[32], 24, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 4, 8, 7, // tri1 + 5, 9, 10, // tri2 + 5, 7, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 12, // tri0 + 10, 9, 12, // tri1 + 1, 13, 14, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 17, 11, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 19, // tri0 + 19, 21, 17, // tri1 + 22, 20, 23, // tri2 + 22, 21, 20 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_10_v[56], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_10_v[76], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 0, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 15, // tri0 + 19, 6, 20, // tri1 + 4, 14, 16, // tri2 + 11, 21, 12 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 22, // tri0 + 21, 19, 22, // tri1 + 9, 11, 13, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 23, 26, 27, // tri0 + 28, 27, 26, // tri1 + 29, 28, 26, // tri2 + 30, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_t_10_v[108], 9, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 6, 7, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_10_v[117], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 6, // tri0 + 5, 6, 7, // tri1 + 8, 5, 7, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 7, 10, // tri0 + 11, 9, 12, // tri1 + 3, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 17, // tri0 + 15, 18, 16, // tri1 + 18, 19, 16, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 18, 20, 19, // tri0 + 22, 23, 24, // tri1 + 20, 22, 21, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_10_v[148], 25, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 10, 12, 13, // tri1 + 7, 14, 15, // tri2 + 14, 9, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 17, 24, // tri2 + 20, 0, 21 // tri3 + ), + gsSPNTriangles_5b( + 4, 20, 22, // tri0 + 17, 19, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_2/grd_s_t_2.c b/src/data/field/bg/acre/grd_s_t_2/grd_s_t_2.c new file mode 100644 index 00000000..888b76c3 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_2/grd_s_t_2.c @@ -0,0 +1,273 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_2_v[] = { +#include "assets/field/bg/grd_s_t_2_v.inc" +}; + +extern Gfx grd_s_t_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_2_v[175], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 6, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 9, 15, // tri1 + 9, 11, 15, // tri2 + 7, 3, 16 // tri3 + ), + gsSPNTriangles_5b( + 5, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 19, 23, // tri2 + 24, 22, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 27, // tri0 + 28, 26, 29, // tri1 + 30, 28, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 1, 13, // tri1 + 14, 15, 2, // tri2 + 15, 16, 2 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 15, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 21, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 11, // tri2 + 7, 6, 0 // tri3 + ), + gsSPNTriangles_5b( + 1, 13, 14, // tri0 + 13, 15, 16, // tri1 + 17, 11, 12, // tri2 + 5, 18, 3 // tri3 + ), + gsSPNTriangles_5b( + 19, 3, 18, // tri0 + 19, 20, 3, // tri1 + 21, 22, 18, // tri2 + 8, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 5, 21, 18, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_t_2_v[64], 28, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 13, 15, 16, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 20, 23, 22, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_2_v[92], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_2_v[112], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 6, 12, 15, // tri0 + 13, 16, 17, // tri1 + 16, 18, 19, // tri2 + 4, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 0, // tri0 + 8, 24, 22, // tri1 + 25, 26, 8, // tri2 + 25, 27, 26 // tri3 + ), + gsSPNTriangles_5b( + 25, 28, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_2_v[143], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 3, 14, // tri0 + 15, 16, 17, // tri1 + 16, 9, 17, // tri2 + 7, 15, 18 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 19, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 20, 24, 27, // tri0 + 28, 29, 30, // tri1 + 29, 22, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_3/grd_s_t_3.c b/src/data/field/bg/acre/grd_s_t_3/grd_s_t_3.c new file mode 100644 index 00000000..4619a889 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_3/grd_s_t_3.c @@ -0,0 +1,225 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_3_v[] = { +#include "assets/field/bg/grd_s_t_3_v.inc" +}; + +extern Gfx grd_s_t_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_3_v[135], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 2, 6, // tri0 + 7, 8, 9, // tri1 + 10, 7, 9, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b( + 7, 13, 8, // tri0 + 13, 14, 15, // tri1 + 1, 11, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 3, 7, 6, // tri1 + 8, 4, 9, // tri2 + 4, 5, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 10, 5, // tri0 + 6, 11, 10, // tri1 + 12, 13, 14, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 18, // tri1 + 21, 22, 20, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 19, 21, 20, // tri1 + 21, 23, 22, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 26, 30, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_3_v[31], 29, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 5, // tri0 + 6, 7, 8, // tri1 + 7, 9, 10, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 14, 18, // tri2 + 17, 16, 14 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 16, // tri0 + 20, 21, 22, // tri1 + 1, 4, 2, // tri2 + 4, 23, 2 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 2, // tri0 + 7, 10, 8, // tri1 + 25, 13, 15, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 21, 28, // tri0 + 22, 21, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_3_v[60], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 9, 10, 11, // tri1 + 12, 9, 7, // tri2 + 12, 5, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 3, 14, // tri0 + 1, 14, 3, // tri1 + 3, 13, 5, // tri2 + 5, 12, 7 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 11, // tri0 + 14, 15, 13, // tri1 + 13, 16, 12, // tri2 + 12, 17, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 18, 10, // tri0 + 18, 19, 10, // tri1 + 17, 18, 9, // tri2 + 16, 17, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 13, // tri0 + 1, 3, 2, // tri1 + 3, 5, 4, // tri2 + 5, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_3_v[80], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 14, 18, 19, // tri1 + 18, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 16, 25, // tri0 + 23, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_3_v[111], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_3_v[118], 17, 0), + gsSPNTrianglesInit_5b( + 10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 13, 7, 14, // tri0 + 11, 13, 15, // tri1 + 4, 10, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4.c b/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4.c new file mode 100644 index 00000000..bb5d6ef9 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4.c @@ -0,0 +1,284 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_4_v[] = { +#include "assets/field/bg/grd_s_t_4_v.inc" +}; + +extern Gfx grd_s_t_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_4_v[230], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_4_v[208], 22, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 14, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 16, 18, 19, // tri1 + 16, 20, 18, // tri2 + 2, 21, 0 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 23, 22, 28 // tri3 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 9, 8, // tri1 + 9, 11, 10, // tri2 + 11, 29, 12 // tri3 + ), + gsSPNTriangles_5b(30, 31, 24, // tri0 + 24, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_4_v[32], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 15, 20, 16, // tri1 + 22, 21, 20, // tri2 + 22, 20, 15 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 28, 27, 26, // tri2 + 21, 22, 29 // tri3 + ), + gsSPNTriangles_5b(30, 29, 22, // tri0 + 30, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_4_v[63], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(5, 4, 0, // tri0 + 6, 7, 8, // tri1 + 9, 6, 10, // tri2 + 7, 6, 11 // tri3 + ), + gsSPNTriangles_5b(6, 9, 11, // tri0 + 12, 13, 14, // tri1 + 15, 11, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_4_v[79], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 11, 2, // tri2 + 2, 11, 12 // tri3 + ), + gsSPNTriangles_5b(2, 12, 4, // tri0 + 4, 12, 13, // tri1 + 4, 13, 6, // tri2 + 6, 13, 14 // tri3 + ), + gsSPNTriangles_5b(6, 14, 8, // tri0 + 10, 15, 16, // tri1 + 10, 16, 11, // tri2 + 11, 16, 17 // tri3 + ), + gsSPNTriangles_5b(11, 17, 12, // tri0 + 12, 17, 18, // tri1 + 12, 18, 13, // tri2 + 13, 18, 19 // tri3 + ), + gsSPNTriangles_5b(13, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_4_v[99], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14, // tri2 + 12, 15, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 12, 14, 22 // tri3 + ), + gsSPNTriangles_5b(14, 23, 22, // tri0 + 14, 19, 23, // tri1 + 21, 24, 6, // tri2 + 25, 2, 26 // tri3 + ), + gsSPNTriangles_5b(3, 27, 28, // tri0 + 0, 5, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_4_v[129], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 6, 3, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 8, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 28, // tri2 + 27, 18, 20 // tri3 + ), + gsSPNTriangles_5b(16, 29, 17, // tri0 + 29, 24, 17, // tri1 + 30, 31, 15, // tri2 + 10, 30, 11 // tri3 + ), + gsSPNTriangles_5b(31, 13, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_4_v[161], 25, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 5, // tri1 + 6, 8, 7, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 12, 13, 11, // tri1 + 12, 14, 13, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 21, 24, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_4_v[186], 22, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 12, 16, 19, // tri1 + 20, 14, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c b/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c new file mode 100644 index 00000000..e2fd2e4b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_4/grd_s_t_4_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_4_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5.c b/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5.c new file mode 100644 index 00000000..9c760b0e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5.c @@ -0,0 +1,340 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_5_v[] = { +#include "assets/field/bg/grd_s_t_5_v.inc" +}; + +extern Gfx grd_s_t_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_5_v[244], 4, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_5_v[228], 16, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 2, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 8, 14, // tri0 + 11, 3, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_5_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 5, // tri0 + 6, 7, 5, // tri1 + 2, 8, 0, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 12, 11, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 17, 20, 18, // tri0 + 6, 21, 7, // tri1 + 6, 22, 21, // tri2 + 13, 15, 9 // tri3 + ), + gsSPNTriangles_5b( + 15, 23, 9, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 25, 28, 27 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_5_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 6, 9, 7, // tri1 + 9, 10, 7, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 11, 14, 12, // tri0 + 15, 16, 12, // tri1 + 15, 17, 16, // tri2 + 2, 18, 4 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 4, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 25, 27, 26, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 28, // tri0 + 30, 2, 3, // tri1 + 9, 31, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_5_v[64], 27, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 4, // tri0 + 8, 7, 9, // tri1 + 8, 10, 7, // tri2 + 10, 4, 7 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 17, 18, 10, // tri0 + 17, 19, 18, // tri1 + 20, 21, 19, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_5_v[91], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_5_v[111], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 1, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 17, 18, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 5, 22, 25, // tri1 + 26, 3, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_t_5_v[142], 32, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 10, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 19, 23, 24, // tri2 + 23, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 21, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_5_v[173], 10, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_5_v[183], 16, 0), + gsSPNTrianglesInit_5b( + 9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 4, 8, 5, // tri1 + 9, 10, 2, // tri2 + 11, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 7, 13, 14, // tri0 + 13, 3, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_5_v[199], 29, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 9, 10, 8, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 14, // tri0 + 17, 18, 16, // tri1 + 19, 20, 18, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 20, // tri0 + 23, 24, 22, // tri1 + 25, 26, 24, // tri2 + 27, 28, 26 // tri3 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c b/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c new file mode 100644 index 00000000..4d833d54 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_5/grd_s_t_5_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_5_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_5_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_6/grd_s_t_6.c b/src/data/field/bg/acre/grd_s_t_6/grd_s_t_6.c new file mode 100644 index 00000000..71b2b7cd --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_6/grd_s_t_6.c @@ -0,0 +1,355 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_6_v[] = { +#include "assets/field/bg/grd_s_t_6_v.inc" +}; + +extern Gfx grd_s_t_6_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_6_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_6_v[204], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 4, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 9, 16, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 22, 24, // tri0 + 25, 23, 24, // tri1 + 26, 25, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b( + 29, 26, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[236], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 15, 17, 16, // tri1 + 3, 4, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b( + 21, 22, 23, // tri0 + 24, 21, 25, // tri1 + 26, 27, 28, // tri2 + 29, 18, 30 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[267], 11, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 9, 6, // tri1 + 10, 5, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_6_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 1, 0, 5, // tri0 + 3, 6, 2, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 12, 6, 3, // tri1 + 12, 13, 6, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 25, // tri0 + 27, 28, 25, // tri1 + 28, 27, 8, // tri2 + 7, 28, 8 // tri3 + ), + gsSPNTriangles_5b( + 29, 30, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[31], 27, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 3, 4, // tri0 + 4, 6, 7, // tri1 + 7, 5, 4, // tri2 + 8, 5, 7 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 7, // tri0 + 6, 10, 9, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 17, 19, 18, // tri1 + 17, 20, 19, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 17, // tri0 + 21, 22, 23, // tri1 + 21, 18, 22, // tri2 + 18, 19, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 8, // tri0 + 26, 25, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_6_v[58], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_6_v[78], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 6, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 8, 17, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 2, 21, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[109], 25, 0), + gsSPNTrianglesInit_5b( + 12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 6, 0, 2, // tri0 + 7, 8, 9, // tri1 + 10, 7, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 12, 16, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21, // tri2 + 13, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 20, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_6_v[134], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 0, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 12, 13, // tri2 + 14, 2, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 4, 17, // tri0 + 18, 19, 20, // tri1 + 7, 9, 21, // tri2 + 12, 18, 20 // tri3 + ), + gsSPNTriangles_5b( + 7, 21, 8, // tri0 + 16, 17, 19, // tri1 + 22, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 25, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[164], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 0, 9, // tri0 + 3, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 8, 9, 21, // tri1 + 22, 20, 23, // tri2 + 12, 5, 13 // tri3 + ), + gsSPNTriangles_5b( + 24, 22, 23, // tri0 + 16, 21, 17, // tri1 + 18, 25, 19, // tri2 + 10, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 28, // tri0 + 29, 26, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_6_v[195], 9, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 0, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_7/grd_s_t_7.c b/src/data/field/bg/acre/grd_s_t_7/grd_s_t_7.c new file mode 100644 index 00000000..1952bbee --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_7/grd_s_t_7.c @@ -0,0 +1,325 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_7_v[] = { +#include "assets/field/bg/grd_s_t_7_v.inc" +}; + +extern Gfx grd_s_t_7_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_7_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_7_v[196], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 3, 17, // tri1 + 18, 19, 20, // tri2 + 21, 20, 8 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 25, 24, 26, // tri1 + 27, 28, 29, // tri2 + 30, 31, 19 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[228], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 11, 12, 13, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 17, // tri0 + 18, 17, 19, // tri1 + 20, 19, 21, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 27, 24, 26, // tri1 + 28, 29, 25, // tri2 + 30, 27, 31 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[260], 17, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 2, 10, // tri0 + 7, 11, 12, // tri1 + 11, 10, 12, // tri2 + 6, 8, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_7_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 11, 12, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 17, 16, // tri1 + 13, 15, 14, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 9, // tri0 + 18, 19, 20, // tri1 + 21, 22, 19, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 25, 26, 24, // tri1 + 27, 28, 26, // tri2 + 29, 30, 28 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 7, // tri0 + 4, 8, 9, // tri1 + 4, 3, 8, // tri2 + 3, 0, 8 // tri3 + ), + gsSPNTriangles_5b( + 0, 2, 10, // tri0 + 10, 2, 11, // tri1 + 12, 6, 7, // tri2 + 6, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 15, 16, // tri0 + 15, 14, 17, // tri1 + 18, 19, 20, // tri2 + 13, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 21, 17, // tri0 + 21, 23, 22, // tri1 + 24, 25, 26, // tri2 + 25, 24, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 29, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_7_v[63], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 5, 7, 6, // tri2 + 3, 5, 4 // tri3 + ), + gsSPNTriangles_5b( + 1, 3, 2, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 3, 11, 5 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 5, 12, 7, // tri1 + 12, 13, 7, // tri2 + 13, 14, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 13, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 11, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 12, 17, 13, // tri1 + 17, 18, 13, // tri2 + 13, 18, 14 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_7_v[83], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 1 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 6, // tri0 + 9, 10, 11, // tri1 + 12, 4, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 15, 23, // tri2 + 24, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 17, // tri0 + 20, 25, 21, // tri1 + 26, 27, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[114], 10, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 7 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 8, // tri0 + 9, 6, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_7_v[124], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 0, 17, // tri1 + 18, 11, 2, // tri2 + 3, 18, 2 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 21, // tri0 + 22, 21, 23, // tri1 + 24, 23, 9, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b( + 19, 25, 20, // tri0 + 26, 28, 27, // tri1 + 26, 29, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[154], 32, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 9, // tri0 + 10, 11, 12, // tri1 + 13, 12, 6, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 17, 9, 15, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 24, 26, // tri0 + 28, 29, 25, // tri1 + 21, 27, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_7_v[184], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 6, 10, 11, // tri1 + 10, 9, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_8/grd_s_t_8.c b/src/data/field/bg/acre/grd_s_t_8/grd_s_t_8.c new file mode 100644 index 00000000..c9f26bb1 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_8/grd_s_t_8.c @@ -0,0 +1,268 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_8_v[] = { +#include "assets/field/bg/grd_s_t_8_v.inc" +}; + +extern Gfx grd_s_t_8_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_8_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_8_v[166], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 3, 4, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 1, 12, 13, // tri0 + 9, 14, 10, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 20, 23, // tri1 + 24, 22, 25, // tri2 + 26, 24, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 26, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_8_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 9, 12, 7, // tri1 + 12, 13, 7, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 18, 3, 19, // tri1 + 3, 0, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 23, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 27, 26, // tri0 + 27, 28, 26, // tri1 + 27, 29, 28, // tri2 + 17, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_t_8_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 6, // tri0 + 4, 6, 3, // tri1 + 5, 7, 6, // tri2 + 0, 8, 9 // tri3 + ), + gsSPNTriangles_5b( + 8, 10, 9, // tri0 + 10, 11, 9, // tri1 + 12, 11, 13, // tri2 + 11, 10, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 13, // tri0 + 13, 14, 15, // tri1 + 15, 14, 16, // tri2 + 16, 7, 17 // tri3 + ), + gsSPNTriangles_5b( + 5, 17, 7, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 19, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 12, 29, 30, // tri2 + 29, 31, 30 // tri3 + ), + gsSPVertex(&grd_s_t_8_v[64], 7, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_8_v[71], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_8_v[91], 32, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 8, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 6, 12, 15, // tri0 + 13, 16, 17, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 26, 23, 27, // tri1 + 21, 28, 29, // tri2 + 28, 26, 30 // tri3 + ), + gsSPVertex(&grd_s_t_8_v[122], 14, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 6, // tri0 + 8, 10, 9, // tri1 + 8, 11, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_8_v[136], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b( + 13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 17, 21, // tri0 + 22, 23, 24, // tri1 + 18, 22, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 20, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_9/grd_s_t_9.c b/src/data/field/bg/acre/grd_s_t_9/grd_s_t_9.c new file mode 100644 index 00000000..50a37080 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_9/grd_s_t_9.c @@ -0,0 +1,268 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_9_v[] = { +#include "assets/field/bg/grd_s_t_9_v.inc" +}; + +extern Gfx grd_s_t_9_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_9_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_9_v[180], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 22, 20, 23 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_9_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 10, 12, 11, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 4, 6, 5, // tri1 + 13, 14, 15, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 18, 19, // tri0 + 18, 20, 21, // tri1 + 20, 22, 23, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_9_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 10, // tri1 + 11, 12, 8, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 16, 14, 13, // tri1 + 17, 18, 16, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 10, // tri0 + 10, 21, 19, // tri1 + 21, 22, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 19, // tri0 + 25, 23, 26, // tri1 + 18, 19, 25, // tri2 + 25, 19, 23 // tri3 + ), + gsSPNTriangles_5b( + 24, 27, 28, // tri0 + 27, 29, 28, // tri1 + 0, 5, 1, // tri2 + 2, 30, 0 // tri3 + ), + gsSPVertex(&grd_s_t_9_v[62], 17, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b( + 7, 6, 8, // tri0 + 6, 5, 8, // tri1 + 5, 9, 8, // tri2 + 10, 9, 2 // tri3 + ), + gsSPNTriangles_5b( + 10, 2, 1, // tri0 + 11, 9, 10, // tri1 + 11, 8, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 15, // tri0 + 11, 16, 15, // tri1 + 16, 12, 15, // tri2 + 13, 12, 16 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_9_v[79], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 5, 7, 6, // tri2 + 10, 11, 9 // tri3 + ), + gsSPNTriangles_5b( + 7, 10, 9, // tri0 + 5, 12, 7, // tri1 + 12, 10, 7, // tri2 + 3, 13, 5 // tri3 + ), + gsSPNTriangles_5b( + 13, 12, 5, // tri0 + 3, 5, 4, // tri1 + 1, 3, 2, // tri2 + 1, 14, 3 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 3, // tri0 + 14, 15, 13, // tri1 + 15, 16, 13, // tri2 + 13, 16, 12 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 12, 17, 10, // tri1 + 17, 18, 10, // tri2 + 10, 18, 11 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_9_v[99], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 19, 21, // tri0 + 22, 23, 24, // tri1 + 25, 22, 26, // tri2 + 17, 25, 27 // tri3 + ), + gsSPNTriangles_5b( + 28, 29, 30, // tri0 + 28, 31, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_9_v[131], 25, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 2, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 7, 9, 10, // tri1 + 9, 11, 10, // tri2 + 6, 8, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 5, 14, // tri0 + 1, 4, 2, // tri1 + 3, 15, 16, // tri2 + 15, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 13, 14, // tri0 + 20, 21, 22, // tri1 + 21, 23, 24, // tri2 + 9, 20, 11 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_9_v[156], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 17, 19, 20, // tri1 + 14, 21, 22, // tri2 + 21, 16, 23 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c b/src/data/field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c new file mode 100644 index 00000000..7dd2c2e4 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_po_1/grd_s_t_po_1.c @@ -0,0 +1,256 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_po_1_v[] = { +#include "assets/field/bg/grd_s_t_po_1_v.inc" +}; + +extern Gfx grd_s_t_po_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_po_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_po_1_v[157], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_1_v[0], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 8, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_1_v[11], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 5, 4, // tri1 + 8, 9, 5, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 8, // tri0 + 12, 11, 10, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 3, 11, // tri0 + 11, 1, 9, // tri1 + 11, 3, 1, // tri2 + 9, 1, 5 // tri3 + ), + gsSPNTriangles_5b( + 1, 15, 5, // tri0 + 5, 16, 7, // tri1 + 5, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 17, // tri0 + 1, 18, 15, // tri1 + 1, 0, 18, // tri2 + 14, 19, 3 // tri3 + ), + gsSPNTriangles_5b( + 19, 2, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_po_1_v[31], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 6, 7, // tri1 + 8, 7, 9, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 9, 11, 12, // tri0 + 9, 10, 11, // tri1 + 13, 14, 15, // tri2 + 16, 17, 2 // tri3 + ), + gsSPNTriangles_5b( + 0, 18, 19, // tri0 + 1, 0, 19, // tri1 + 20, 19, 21, // tri2 + 19, 18, 21 // tri3 + ), + gsSPNTriangles_5b( + 18, 22, 21, // tri0 + 21, 22, 23, // tri1 + 22, 24, 23, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 24, // tri0 + 24, 27, 25, // tri1 + 28, 29, 30, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&grd_s_t_po_1_v[63], 28, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 2, 4, 6, // tri0 + 2, 3, 4, // tri1 + 7, 8, 6, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b( + 10, 8, 7, // tri0 + 11, 12, 13, // tri1 + 12, 11, 14, // tri2 + 10, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 10, 9, 15, // tri0 + 9, 17, 15, // tri1 + 17, 14, 15, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 11, 18, 15, // tri0 + 16, 15, 18, // tri1 + 5, 19, 20, // tri2 + 19, 21, 20 // tri3 + ), + gsSPNTriangles_5b( + 19, 22, 21, // tri0 + 23, 22, 19, // tri1 + 23, 24, 22, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b( + 26, 24, 23, // tri0 + 26, 27, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_1_v[91], 32, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 5, 14 // tri3 + ), + gsSPNTriangles_5b( + 15, 16, 17, // tri0 + 18, 15, 19, // tri1 + 20, 21, 22, // tri2 + 21, 18, 23 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 24, // tri0 + 25, 24, 26, // tri1 + 27, 28, 29, // tri2 + 28, 30, 31 // tri3 + ), + gsSPNTriangles_5b( + 30, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_1_v[123], 6, 0), + gsSPNTrianglesInit_5b( + 4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_1_v[129], 28, 0), + gsSPNTrianglesInit_5b( + 13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 13, 17, // tri0 + 18, 19, 20, // tri1 + 19, 16, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 22, 26, // tri0 + 23, 18, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c b/src/data/field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c new file mode 100644 index 00000000..d081519e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_po_2/grd_s_t_po_2.c @@ -0,0 +1,253 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_po_2_v[] = { +#include "assets/field/bg/grd_s_t_po_2_v.inc" +}; + +extern Gfx grd_s_t_po_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_po_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_po_2_v[144], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 8, 9, 6, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b( + 3, 10, 12, // tri0 + 7, 13, 14, // tri1 + 13, 15, 16, // tri2 + 15, 17, 18 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_po_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 0, 2, // tri1 + 3, 9, 2, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 6, 9, 4, // tri0 + 6, 2, 9, // tri1 + 19, 20, 21, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 23, // tri0 + 15, 24, 23, // tri1 + 25, 14, 13, // tri2 + 26, 19, 27 // tri3 + ), + gsSPNTriangles_5b( + 19, 28, 27, // tri0 + 10, 29, 13, // tri1 + 29, 5, 13, // tri2 + 29, 7, 5 // tri3 + ), + gsSPNTriangles_5b( + 3, 1, 30, // tri0 + 1, 31, 30, // tri1 + 31, 28, 30, // tri2 + 18, 25, 17 // tri3 + ), + gsSPNTriangles_5b( + 21, 28, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_2_v[32], 24, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 0, 19, 20, // tri0 + 19, 21, 20, // tri1 + 0, 2, 19, // tri2 + 2, 22, 19 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_2_v[56], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_2_v[76], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_2_v[87], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 10, 14, // tri0 + 9, 13, 15, // tri1 + 4, 16, 17, // tri2 + 16, 7, 18 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_2_v[106], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 9, 10, // tri0 + 1, 11, 2, // tri1 + 8, 5, 9, // tri2 + 1, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 16, 10, 17, // tri2 + 13, 18, 15 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 21, 22, // tri1 + 21, 16, 17, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 23, 27, // tri0 + 28, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_2_v[137], 7, 0), + gsSPNTrianglesInit_5b( + 3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 0, 6 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c b/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c new file mode 100644 index 00000000..2932e62e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3.c @@ -0,0 +1,292 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_po_3_v[] = { +#include "assets/field/bg/grd_s_t_po_3_v.inc" +}; + +extern Gfx grd_s_t_po_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_po_3_v[223], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_po_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_po_3_v[210], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 7, 9, 6, // tri2 + 7, 10, 9 // tri3 + ), + gsSPNTriangles_5b(9, 11, 6, // tri0 + 12, 13, 14, // tri1 + 12, 15, 13, // tri2 + 12, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 18, 8, 19, // tri1 + 8, 5, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 24, 25, 20, // tri1 + 25, 26, 20, // tri2 + 22, 24, 20 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 28, 30, 29, // tri1 + 30, 28, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(7, 4, 3, // tri0 + 8, 9, 10, // tri1 + 11, 12, 9, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 15, 16, 17, // tri1 + 15, 1, 16, // tri2 + 1, 18, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 15, 17, 20, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(1, 25, 18, // tri0 + 26, 27, 28, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_3_v[64], 30, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 14, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 19, 22, 20, // tri1 + 23, 24, 25, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(27, 28, 13, // tri0 + 28, 12, 13, // tri1 + 28, 29, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[94], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 7, // tri2 + 2, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 0, // tri0 + 9, 14, 12, // tri1 + 4, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[111], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[124], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 11, 12, 9, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 18, 6, // tri0 + 19, 16, 18, // tri1 + 13, 12, 14, // tri2 + 20, 21, 10 // tri3 + ), + gsSPNTriangles_5b(22, 2, 21, // tri0 + 23, 24, 17, // tri1 + 25, 26, 24, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 27, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_po_3_v[156], 9, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[165], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 5, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 1, 10, 3, // tri1 + 10, 11, 3, // tri2 + 11, 5, 3 // tri3 + ), + gsSPNTriangles_5b(11, 12, 5, // tri0 + 12, 7, 5, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b(13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b(16, 17, 12, // tri0 + 17, 13, 12, // tri1 + 17, 18, 13, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(18, 19, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_po_3_v[185], 25, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 8, // tri1 + 11, 12, 10, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 17, 18, 16, // tri1 + 19, 20, 18, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 6, 5, 7, // tri1 + 17, 16, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c b/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c new file mode 100644 index 00000000..1b0444a0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_po_3/grd_s_t_po_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_po_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_po_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_po_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c b/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c new file mode 100644 index 00000000..0368ce7f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1.c @@ -0,0 +1,294 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 tekkyo_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_r1_1_v[] = { +#include "assets/field/bg/grd_s_t_r1_1_v.inc" +}; + +extern Gfx grd_s_t_r1_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_1_v[226], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 4, 5, 6, // tri1 + 7, 4, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 10, // tri0 + 7, 8, 10, // tri1 + 11, 10, 12, // tri2 + 11, 9, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_r1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_1_v[189], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tekkyo_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[202], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 9, 7, 10, // tri1 + 5, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 22, 23, // tri2 + 22, 19, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 0, 28, 29, // tri1 + 28, 21, 30, // tri2 + 19, 20, 24 // tri3 + ), + gsSPNTriangles_5b(26, 3, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_1_v[32], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[45], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[58], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 19, 20, 18, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(22, 25, 24, // tri0 + 17, 16, 26, // tri1 + 16, 0, 26, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 28, 31, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_1_v[90], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(2, 3, 5, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 9, // tri0 + 12, 14, 13, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 19, 22, 20, // tri1 + 19, 23, 22, // tri2 + 22, 24, 20 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 26, 28, 27, // tri1 + 26, 29, 28, // tri2 + 26, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_1_v[122], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[126], 28, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 8, // tri0 + 7, 12, 9, // tri1 + 7, 13, 12, // tri2 + 12, 10, 9 // tri3 + ), + gsSPNTriangles_5b(12, 14, 10, // tri0 + 13, 15, 12, // tri1 + 15, 16, 12, // tri2 + 16, 17, 12 // tri3 + ), + gsSPNTriangles_5b(17, 14, 12, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 26, 0, 27, // tri1 + 0, 2, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_1_v[154], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 6, 8, 7, // tri1 + 9, 10, 8, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 14, 15, 13, // tri1 + 12, 14, 13, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 3, 6, 5, // tri1 + 1, 3, 2, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 18, // tri0 + 18, 20, 16, // tri1 + 19, 21, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 20, 21, // tri0 + 22, 24, 23, // tri1 + 24, 25, 26, // tri2 + 24, 26, 23 // tri3 + ), + gsSPNTriangles_5b(25, 27, 26, // tri0 + 27, 28, 29, // tri1 + 27, 29, 26, // tri2 + 28, 30, 29 // tri3 + ), + gsSPVertex(&grd_s_t_r1_1_v[185], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c new file mode 100644 index 00000000..33c86cd0 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_1/grd_s_t_r1_1_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_r1_1_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_r1_1_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_r1_1_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c b/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c new file mode 100644 index 00000000..e9f0f91b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2.c @@ -0,0 +1,339 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 tekkyo_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_r1_2_v[] = { +#include "assets/field/bg/grd_s_t_r1_2_v.inc" +}; + +extern Gfx grd_s_t_r1_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_2_v[262], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 4, // tri0 + 3, 5, 6, // tri1 + 7, 3, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 9, // tri1 + 11, 10, 9, // tri2 + 11, 9, 12 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_r1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_2_v[216], 22, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(5, 11, 14, // tri0 + 15, 4, 16, // tri1 + 17, 8, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(17, 18, 20, // tri0 + 12, 19, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tekkyo_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[238], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(0, 6, 5, // tri0 + 4, 1, 0, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 12, 13, 6, // tri1 + 13, 5, 6, // tri2 + 14, 13, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 13, 16, 5, // tri1 + 16, 17, 5, // tri2 + 1, 4, 18 // tri3 + ), + gsSPNTriangles_5b(4, 19, 18, // tri0 + 20, 9, 21, // tri1 + 9, 10, 21, // tri2 + 22, 17, 16 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 24, 27, 25, // tri2 + 27, 28, 25 // tri3 + ), + gsSPNTriangles_5b(27, 18, 28, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 6, 8, 7, // tri1 + 9, 10, 11, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 9, 15, 10, // tri2 + 9, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 17, 18, 15, // tri1 + 17, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 21, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_2_v[64], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 5, 7, 4, // tri1 + 4, 3, 6, // tri2 + 8, 9, 10 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[75], 27, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 1, 10, 3 // tri3 + ), + gsSPNTriangles_5b(10, 11, 3, // tri0 + 12, 7, 4, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b(13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 17, 13, 12 // tri3 + ), + gsSPNTriangles_5b(17, 18, 13, // tri0 + 18, 14, 13, // tri1 + 18, 19, 14, // tri2 + 20, 17, 21 // tri3 + ), + gsSPNTriangles_5b(17, 22, 21, // tri0 + 23, 24, 25, // tri1 + 23, 25, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[102], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 5, 10, // tri2 + 6, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 8, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 22, 26, // tri1 + 20, 27, 28, // tri2 + 27, 25, 29 // tri3 + ), + gsSPNTriangles_5b(4, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_2_v[134], 11, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 8, 9, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[145], 22, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 0, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 5, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 15, 4, 16, // tri1 + 17, 8, 18, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(13, 19, 21, // tri0 + 17, 18, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_2_v[167], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 0, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 9, 11, 13, // tri1 + 11, 14, 13, // tri2 + 0, 8, 1 // tri3 + ), + gsSPNTriangles_5b(12, 15, 10, // tri0 + 12, 16, 15, // tri1 + 17, 18, 19, // tri2 + 17, 20, 18 // tri3 + ), + gsSPNTriangles_5b(20, 3, 18, // tri0 + 20, 4, 3, // tri1 + 21, 22, 23, // tri2 + 22, 19, 23 // tri3 + ), + gsSPNTriangles_5b(22, 17, 19, // tri0 + 5, 24, 6, // tri1 + 5, 25, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 26, 28, 27, // tri1 + 28, 29, 27, // tri2 + 28, 30, 29 // tri3 + ), + gsSPVertex(&grd_s_t_r1_2_v[198], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 9, 12, 11, // tri1 + 12, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 13, // tri0 + 14, 16, 15, // tri1 + 16, 17, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c new file mode 100644 index 00000000..f10e007f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_2/grd_s_t_r1_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_r1_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_r1_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_r1_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c b/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c new file mode 100644 index 00000000..921e3a65 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 tekkyo_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_r1_3_v[] = { +#include "assets/field/bg/grd_s_t_r1_3_v.inc" +}; + +extern Gfx grd_s_t_r1_3_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_3_v[258], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(0, 11, 1, // tri0 + 0, 12, 11, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 2, 7, 4, // tri1 + 2, 16, 7, // tri2 + 2, 3, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 14, // tri0 + 17, 18, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_r1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tekkyo_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_3_v[217], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[241], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 3, 4, 8, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 1, 12, 14, // tri1 + 13, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 5, 8, 0, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 22, 23, // tri1 + 22, 24, 23, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 27, 28, 29, // tri1 + 28, 30, 29, // tri2 + 15, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 31, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_3_v[32], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 3, 5, // tri0 + 9, 8, 5, // tri1 + 5, 10, 9, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(10, 14, 15, // tri0 + 16, 17, 15, // tri1 + 18, 15, 14, // tri2 + 19, 15, 18 // tri3 + ), + gsSPNTriangles_5b(20, 16, 19, // tri0 + 16, 15, 19, // tri1 + 21, 22, 23, // tri2 + 21, 24, 22 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 25, 29, 28, // tri2 + 30, 28, 29 // tri3 + ), + gsSPNTriangles_5b(31, 20, 19, // tri0 + 19, 24, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_3_v[64], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 3, 4 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 7, 8, // tri1 + 8, 7, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[74], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(6, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 12, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 15, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(22, 25, 24, // tri0 + 25, 26, 24, // tri1 + 27, 28, 29, // tri2 + 27, 30, 28 // tri3 + ), + gsSPNTriangles_5b(27, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_3_v[106], 24, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 16, 18, 17, // tri1 + 19, 17, 18, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(20, 21, 17, // tri0 + 20, 22, 21, // tri1 + 20, 23, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[130], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 12, // tri2 + 11, 3, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21, // tri2 + 15, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 20, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_3_v[161], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 9, // tri1 + 8, 10, 9, // tri2 + 10, 0, 9 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[172], 28, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 19, 21, 22, // tri1 + 17, 20, 18, // tri2 + 20, 23, 24 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 19, 22, 20, // tri1 + 20, 22, 23, // tri2 + 18, 20, 24 // tri3 + ), + gsSPNTriangles_5b(22, 26, 25, // tri0 + 21, 26, 22, // tri1 + 26, 27, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_3_v[200], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 3, 12, // tri1 + 13, 14, 15, // tri2 + 1, 11, 16 // tri3 + ), + gsSPNTriangles_5b(13, 6, 14, // tri0 + 9, 13, 15, // tri1 + 11, 12, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c new file mode 100644 index 00000000..341ca26b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_3/grd_s_t_r1_3_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_r1_3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_r1_3_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_r1_3_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c b/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c new file mode 100644 index 00000000..671682b7 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4.c @@ -0,0 +1,328 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 tekkyo_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_r1_4_v[] = { +#include "assets/field/bg/grd_s_t_r1_4_v.inc" +}; + +extern Gfx grd_s_t_r1_4_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_4_v[242], 15, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 5, 6, 7, // tri1 + 7, 4, 5, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 8, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_r1_4_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tekkyo_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_4_v[205], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[229], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[0], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 10, 12, 11, // tri1 + 7, 15, 8, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 19, 21, 20, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(21, 24, 23, // tri0 + 25, 26, 27, // tri1 + 26, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_4_v[30], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 8, 9, 10, // tri1 + 0, 2, 11, // tri2 + 12, 3, 5 // tri3 + ), + gsSPNTriangles_5b(3, 6, 4, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(12, 18, 19, // tri0 + 10, 11, 2, // tri1 + 18, 10, 19, // tri2 + 18, 11, 10 // tri3 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 9, 20, 19, // tri1 + 9, 19, 10, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 22, // tri0 + 24, 26, 25, // tri1 + 27, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_4_v[60], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 4, 3, 6, // tri1 + 4, 2, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[68], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 1, 9, 10, // tri1 + 9, 11, 12, // tri2 + 11, 6, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 23, 24, 22, // tri1 + 18, 15, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_4_v[98], 15, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 7, 8, 9, // tri1 + 3, 5, 2, // tri2 + 4, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 7, 14, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[113], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 4, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 10, 11, 9, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 13, 15, 14, // tri2 + 13, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 21, 20, // tri0 + 21, 22, 20, // tri1 + 21, 23, 22, // tri2 + 23, 24, 22 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 28, 29, 25, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_4_v[145], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 5, 6, 4, // tri1 + 6, 7, 4, // tri2 + 7, 8, 4 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 9, 10, 8, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[164], 28, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 9, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 13, 11, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 17, 19, 18, // tri2 + 17, 22, 19 // tri3 + ), + gsSPNTriangles_5b(22, 23, 19, // tri0 + 19, 23, 21, // tri1 + 23, 24, 21, // tri2 + 22, 25, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 23, // tri0 + 23, 26, 24, // tri1 + 26, 27, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_4_v[192], 13, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c new file mode 100644 index 00000000..28a5a56f --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_4/grd_s_t_r1_4_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_r1_4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_r1_4_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_r1_4_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c b/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c new file mode 100644 index 00000000..64e92589 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5.c @@ -0,0 +1,339 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 tekkyo_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_r1_5_v[] = { +#include "assets/field/bg/grd_s_t_r1_5_v.inc" +}; + +extern Gfx grd_s_t_r1_5_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_5_v[264], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 6, 4, 5, // tri1 + 6, 7, 4, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 8, 10, 7, // tri1 + 3, 0, 11, // tri2 + 8, 12, 10 // tri3 + ), + gsSPNTriangles_5b(8, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_r1_5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_r1_5_v[208], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 5, // tri0 + 7, 8, 9, // tri1 + 10, 11, 12, // tri2 + 0, 10, 13 // tri3 + ), + gsSPNTriangles_5b(14, 5, 15, // tri0 + 16, 7, 17, // tri1 + 18, 19, 20, // tri2 + 16, 17, 19 // tri3 + ), + gsSPNTriangles_5b(11, 18, 20, // tri0 + 21, 22, 23, // tri1 + 22, 24, 25, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 28, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(tekkyo_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[240], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 19, 17, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[0], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 2, 6, 0, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 11, 12, 10, // tri1 + 8, 13, 9, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 14, 17, 16, // tri1 + 18, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 23, // tri0 + 25, 26, 27, // tri1 + 25, 28, 26, // tri2 + 28, 29, 26 // tri3 + ), + gsSPNTriangles_5b(28, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_5_v[31], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 1, 4, // tri0 + 5, 4, 6, // tri1 + 6, 7, 5, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 8, 9, 10, // tri1 + 11, 12, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 15, 17, 16, // tri1 + 16, 17, 18, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 21, 18, 17, // tri1 + 22, 23, 21, // tri2 + 24, 22, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 22, // tri0 + 24, 26, 25, // tri1 + 26, 27, 25, // tri2 + 28, 14, 29 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 30, 31, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_5_v[63], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 2, 9, 10, // tri2 + 2, 1, 9 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[74], 27, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 7, 8, 5, // tri1 + 7, 9, 8, // tri2 + 1, 10, 3 // tri3 + ), + gsSPNTriangles_5b(10, 11, 3, // tri0 + 12, 7, 4, // tri1 + 12, 13, 7, // tri2 + 13, 9, 7 // tri3 + ), + gsSPNTriangles_5b(13, 14, 9, // tri0 + 10, 15, 11, // tri1 + 15, 16, 11, // tri2 + 17, 13, 12 // tri3 + ), + gsSPNTriangles_5b(17, 18, 13, // tri0 + 18, 14, 13, // tri1 + 18, 19, 14, // tri2 + 20, 17, 21 // tri3 + ), + gsSPNTriangles_5b(17, 22, 21, // tri0 + 23, 24, 25, // tri1 + 23, 25, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[101], 32, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 5, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 7, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 11, 14, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 17, // tri0 + 20, 17, 22, // tri1 + 23, 21, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 26, 29, // tri1 + 29, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_5_v[133], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[136], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 5, // tri0 + 7, 8, 9, // tri1 + 0, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 5, 15, // tri0 + 16, 7, 17, // tri1 + 18, 19, 20, // tri2 + 12, 18, 20 // tri3 + ), + gsSPNTriangles_5b(16, 17, 19, // tri0 + 21, 22, 23, // tri1 + 24, 21, 25, // tri2 + 26, 24, 27 // tri3 + ), + gsSPNTriangles_5b(28, 26, 29, // tri0 + 30, 28, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_r1_5_v[168], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(3, 0, 4, // tri0 + 6, 0, 2, // tri1 + 4, 7, 5, // tri2 + 4, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 11, 12, 9, // tri1 + 12, 13, 9, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 14, 16, 13, // tri1 + 15, 17, 18, // tri2 + 15, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 21, 19, // tri1 + 19, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 23, 25, 26, // tri1 + 23, 26, 24, // tri2 + 22, 24, 21 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 30, 28, // tri1 + 27, 31, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_r1_5_v[200], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(3, 0, 4, // tri0 + 6, 7, 5, // tri1 + 4, 6, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c b/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c new file mode 100644 index 00000000..702e3e0c --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_r1_5/grd_s_t_r1_5_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_r1_5_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_r1_5_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_r1_5_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c b/src/data/field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c new file mode 100644 index 00000000..ad88d56e --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_sh_1/grd_s_t_sh_1.c @@ -0,0 +1,256 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_sh_1_v[] = { +#include "assets/field/bg/grd_s_t_sh_1_v.inc" +}; + +extern Gfx grd_s_t_sh_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_sh_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_sh_1_v[143], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 6, 3, // tri0 + 9, 10, 11, // tri1 + 12, 10, 13, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 5, // tri0 + 17, 12, 18, // tri1 + 6, 8, 7, // tri2 + 10, 9, 13 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_1_v[0], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 6, 3, // tri0 + 9, 10, 11, // tri1 + 12, 10, 13, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 5, // tri0 + 17, 12, 18, // tri1 + 6, 8, 7, // tri2 + 10, 9, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_sh_1_v[19], 32, 0), + gsSPNTrianglesInit_5b( + 28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 6, 8, 9, // tri1 + 6, 7, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 10, 12, 13, // tri1 + 10, 11, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 17, 18, 14, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 20, 0, 18, // tri0 + 20, 1, 0, // tri1 + 20, 21, 1, // tri2 + 3, 1, 22 // tri3 + ), + gsSPNTriangles_5b( + 22, 1, 23, // tri0 + 22, 24, 3, // tri1 + 24, 25, 3, // tri2 + 21, 26, 1 // tri3 + ), + gsSPNTriangles_5b( + 16, 15, 27, // tri0 + 15, 28, 27, // tri1 + 28, 29, 27, // tri2 + 29, 28, 30 // tri3 + ), + gsSPNTriangles_5b( + 28, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_sh_1_v[51], 27, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 7, // tri0 + 11, 12, 7, // tri1 + 11, 4, 12, // tri2 + 4, 13, 12 // tri3 + ), + gsSPNTriangles_5b( + 5, 13, 4, // tri0 + 13, 14, 15, // tri1 + 13, 5, 14, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 16, 14, 17, // tri1 + 19, 20, 18, // tri2 + 18, 17, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 21, 22, // tri0 + 20, 19, 21, // tri1 + 9, 23, 24, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 9, 24, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_1_v[78], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 5, 4, // tri1 + 8, 9, 5, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 8, // tri0 + 12, 11, 10, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 3, 11, // tri0 + 11, 1, 9, // tri1 + 11, 3, 1, // tri2 + 9, 1, 5 // tri3 + ), + gsSPNTriangles_5b( + 1, 15, 5, // tri0 + 5, 16, 7, // tri1 + 5, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 17, // tri0 + 1, 18, 15, // tri1 + 1, 0, 18, // tri2 + 14, 19, 3 // tri3 + ), + gsSPNTriangles_5b( + 19, 2, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_1_v[98], 30, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 9, 11, // tri1 + 12, 11, 6, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 14, // tri0 + 18, 19, 17, // tri1 + 20, 21, 19, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 25, 24, 26, // tri0 + 27, 26, 28, // tri1 + 29, 28, 21, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_1_v[128], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 10, 11, // tri1 + 12, 13, 10, // tri2 + 14, 11, 6 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c b/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c new file mode 100644 index 00000000..892f7c35 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2.c @@ -0,0 +1,280 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_sh_2_v[] = { +#include "assets/field/bg/grd_s_t_sh_2_v.inc" +}; + +extern Gfx grd_s_t_sh_2_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPLoadMultiBlock_4b_Dolphin(water_2_tex_dummy, 1, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPDisplayList(0x08000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_sh_2_v[197], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 4, 6, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_sh_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_sh_2_v[180], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 9, 10, 4, // tri1 + 11, 12, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 15, 12, // tri0 + 2, 5, 0, // tri1 + 12, 11, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[0], 17, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 1, 0, 9, // tri1 + 10, 9, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(4, 3, 13, // tri0 + 15, 11, 16, // tri1 + 5, 16, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[17], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 12, 7, 15, // tri1 + 7, 5, 15, // tri2 + 15, 16, 9 // tri3 + ), + gsSPNTriangles_5b(15, 5, 16, // tri0 + 16, 17, 9, // tri1 + 17, 18, 9, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 22, 11, 23, // tri2 + 11, 24, 23 // tri3 + ), + gsSPNTriangles_5b(20, 25, 22, // tri0 + 10, 11, 26, // tri1 + 9, 27, 11, // tri2 + 9, 18, 27 // tri3 + ), + gsSPNTriangles_5b(27, 24, 11, // tri0 + 6, 28, 4, // tri1 + 28, 29, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_sh_2_v[47], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 3, 4, // tri0 + 5, 4, 6, // tri1 + 4, 7, 6, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 10, 11, 12, // tri1 + 13, 12, 11, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 19, 16, 18, // tri2 + 20, 18, 17 // tri3 + ), + gsSPNTriangles_5b(17, 21, 20, // tri0 + 21, 22, 20, // tri1 + 22, 23, 20, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 28, 29, 23, // tri1 + 28, 27, 29, // tri2 + 27, 30, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_sh_2_v[79], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 1, 3, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[91], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 5, 4, // tri1 + 8, 9, 5, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(11, 9, 8, // tri0 + 12, 11, 10, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(14, 3, 11, // tri0 + 11, 1, 9, // tri1 + 11, 3, 1, // tri2 + 9, 1, 5 // tri3 + ), + gsSPNTriangles_5b(1, 15, 5, // tri0 + 5, 16, 7, // tri1 + 5, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(15, 18, 17, // tri0 + 1, 18, 15, // tri1 + 1, 0, 18, // tri2 + 14, 19, 3 // tri3 + ), + gsSPNTriangles_5b(19, 2, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[111], 27, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 7, 8, 6, // tri1 + 9, 10, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 17, 14, 18, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 23, 24, 25, // tri1 + 24, 17, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[138], 23, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 6, 9, // tri0 + 10, 11, 5, // tri1 + 12, 11, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 15, 18, // tri0 + 19, 20, 12, // tri1 + 18, 20, 21, // tri2 + 3, 4, 22 // tri3 + ), + gsSPNTriangles_5b(9, 22, 8, // tri0 + 12, 13, 19, // tri1 + 18, 21, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, cliff_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_2_v[161], 19, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 6, 7, 8, // tri1 + 9, 10, 7, // tri2 + 7, 6, 9 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 11, 12, 13, // tri1 + 12, 14, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 5, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c b/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c new file mode 100644 index 00000000..c8acb03b --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_sh_2/grd_s_t_sh_2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL grd_s_t_sh_2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA grd_s_t_sh_2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, grd_s_t_sh_2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c b/src/data/field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c new file mode 100644 index 00000000..eaa6f268 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_sh_3/grd_s_t_sh_3.c @@ -0,0 +1,244 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_sh_3_v[] = { +#include "assets/field/bg/grd_s_t_sh_3_v.inc" +}; + +extern Gfx grd_s_t_sh_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_sh_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_sh_3_v[147], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 9, 13, // tri1 + 7, 0, 2, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b( + 14, 3, 5, // tri0 + 10, 14, 15, // tri1 + 3, 16, 4, // tri2 + 16, 17, 18 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_3_v[0], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 5, 16, // tri0 + 17, 12, 18, // tri1 + 3, 4, 8, // tri2 + 9, 11, 13 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_sh_3_v[19], 32, 0), + gsSPNTrianglesInit_5b( + 23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 6, 8, 9, // tri1 + 6, 7, 8, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b( + 8, 11, 10, // tri0 + 10, 12, 13, // tri1 + 10, 11, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 18, // tri0 + 14, 17, 15, // tri1 + 17, 19, 18, // tri2 + 19, 20, 18 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 20, // tri0 + 22, 23, 24, // tri1 + 24, 25, 22, // tri2 + 22, 25, 26 // tri3 + ), + gsSPNTriangles_5b( + 27, 28, 29, // tri0 + 27, 30, 28, // tri1 + 28, 31, 29, // tri2 + 31, 21, 29 // tri3 + ), + gsSPVertex(&grd_s_t_sh_3_v[51], 28, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b( + 4, 1, 3, // tri0 + 5, 4, 6, // tri1 + 7, 6, 4, // tri2 + 6, 8, 5 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 5, // tri0 + 8, 10, 9, // tri1 + 11, 10, 12, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 15, // tri0 + 13, 16, 15, // tri1 + 16, 17, 15, // tri2 + 18, 15, 17 // tri3 + ), + gsSPNTriangles_5b( + 16, 19, 17, // tri0 + 18, 20, 21, // tri1 + 22, 23, 24, // tri2 + 23, 25, 24 // tri3 + ), + gsSPNTriangles_5b( + 22, 26, 23, // tri0 + 26, 27, 23, // tri1 + 27, 21, 23, // tri2 + 21, 20, 23 // tri3 + ), + gsSPNTriangles_5b( + 23, 20, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_3_v[79], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 5, 4, // tri1 + 8, 9, 5, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b( + 11, 9, 8, // tri0 + 12, 11, 10, // tri1 + 12, 13, 11, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b( + 14, 3, 11, // tri0 + 11, 1, 9, // tri1 + 11, 3, 1, // tri2 + 9, 1, 5 // tri3 + ), + gsSPNTriangles_5b( + 1, 15, 5, // tri0 + 5, 16, 7, // tri1 + 5, 15, 16, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 18, 17, // tri0 + 1, 18, 15, // tri1 + 1, 0, 18, // tri2 + 14, 19, 3 // tri3 + ), + gsSPNTriangles_5b( + 19, 2, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_3_v[99], 29, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 3, 8, // tri0 + 9, 5, 10, // tri1 + 11, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 14, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 18, 21, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b( + 22, 24, 25, // tri0 + 13, 26, 27, // tri1 + 26, 28, 27, // tri2 + 18, 20, 21 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_sh_3_v[128], 19, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b( + 5, 6, 7, // tri0 + 8, 5, 9, // tri1 + 10, 11, 12, // tri2 + 11, 8, 13 // tri3 + ), + gsSPNTriangles_5b( + 14, 10, 15, // tri0 + 2, 14, 16, // tri1 + 17, 4, 18, // tri2 + 11, 13, 12 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_st1_1/grd_s_t_st1_1.c b/src/data/field/bg/acre/grd_s_t_st1_1/grd_s_t_st1_1.c new file mode 100644 index 00000000..e10c728a --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_st1_1/grd_s_t_st1_1.c @@ -0,0 +1,280 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 station_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_st1_1_v[] = { +#include "assets/field/bg/grd_s_t_st1_1_v.inc" +}; + +extern Gfx grd_s_t_st1_1_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_st1_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_st1_1_v[180], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 8, // tri1 + 12, 6, 11, // tri2 + 13, 9, 14 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, station_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(station_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 8, // tri0 + 5, 9, 7, // tri1 + 7, 10, 8, // tri2 + 5, 4, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 12, 13, // tri0 + 12, 14, 13, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b( + 19, 20, 1, // tri0 + 20, 2, 1, // tri1 + 1, 0, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b( + 23, 25, 24, // tri0 + 26, 27, 28, // tri1 + 26, 28, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_1_v[30], 6, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[36], 15, 0), + gsSPNTrianglesInit_5b( + 7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 9, // tri0 + 10, 11, 8, // tri1 + 12, 6, 11, // tri2 + 13, 9, 14 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[51], 21, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 7, 4, // tri1 + 7, 5, 4, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 10, 11, 7, // tri2 + 7, 12, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 12, // tri0 + 5, 12, 1, // tri1 + 12, 13, 1, // tri2 + 1, 14, 3 // tri3 + ), + gsSPNTriangles_5b( + 1, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 12, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 16, // tri0 + 11, 18, 12, // tri1 + 18, 17, 12, // tri2 + 11, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 10, 20, 11, // tri0 + 20, 19, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[72], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 2, // tri0 + 1, 6, 3, // tri1 + 1, 7, 6, // tri2 + 7, 8, 6 // tri3 + ), + gsSPNTriangles_5b( + 4, 9, 10, // tri0 + 9, 11, 10, // tri1 + 4, 3, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 21, 20, 22, // tri1 + 20, 23, 22, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 22, 23, 24, // tri0 + 26, 27, 28, // tri1 + 26, 29, 27, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b( + 12, 31, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_1_v[104], 18, 0), + gsSPNTrianglesInit_5b( + 15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b( + 3, 6, 7, // tri0 + 7, 6, 8, // tri1 + 8, 9, 7, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b( + 10, 11, 9, // tri0 + 10, 12, 11, // tri1 + 12, 13, 11, // tri2 + 11, 14, 15 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 14, // tri0 + 16, 17, 4, // tri1 + 15, 17, 16, // tri2 + 15, 14, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[122], 27, 0), + gsSPNTrianglesInit_5b( + 14, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 8, 7, 4, // tri0 + 9, 2, 10, // tri1 + 11, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 14, 17, 15, // tri0 + 15, 11, 16, // tri1 + 18, 17, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 23, 21, 24, // tri1 + 24, 18, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_1_v[149], 31, 0), + gsSPNTrianglesInit_5b( + 22, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 6, // tri1 + 9, 4, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 11, 13, 12, // tri0 + 13, 14, 12, // tri1 + 14, 15, 12, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 3, 18, 1, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 22, 21, 23 // tri3 + ), + gsSPNTriangles_5b( + 10, 22, 24, // tri0 + 15, 25, 26, // tri1 + 26, 27, 28, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 9, 30, 29, // tri0 + 9, 8, 30, // tri1 + 2, 17, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_st1_2/grd_s_t_st1_2.c b/src/data/field/bg/acre/grd_s_t_st1_2/grd_s_t_st1_2.c new file mode 100644 index 00000000..d9d25813 --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_st1_2/grd_s_t_st1_2.c @@ -0,0 +1,318 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 station_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_st1_2_v[] = { +#include "assets/field/bg/grd_s_t_st1_2_v.inc" +}; + +extern Gfx grd_s_t_st1_2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_st1_2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_st1_2_v[216], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 17, // tri0 + 18, 16, 19, // tri1 + 20, 18, 21, // tri2 + 22, 20, 23 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b( + 2, 5, 4, // tri0 + 4, 5, 6, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b( + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 13, 16, 1, // tri2 + 12, 11, 17 // tri3 + ), + gsSPNTriangles_5b( + 17, 11, 18, // tri0 + 17, 18, 19, // tri1 + 20, 19, 21, // tri2 + 22, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 19, // tri0 + 19, 20, 23, // tri1 + 25, 8, 23, // tri2 + 23, 20, 25 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 26, // tri0 + 15, 14, 27, // tri1 + 14, 28, 27, // tri2 + 29, 30, 3 // tri3 + ), + gsSPNTriangles_5b( + 5, 31, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_2_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 21, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 6, 8, 7, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 14, 15, // tri0 + 15, 17, 16, // tri1 + 16, 17, 18, // tri2 + 17, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 22, 23, 24, // tri2 + 22, 24, 25 // tri3 + ), + gsSPNTriangles_5b( + 26, 27, 23, // tri0 + 28, 29, 27, // tri1 + 10, 29, 28, // tri2 + 1, 4, 2 // tri3 + ), + gsSPNTriangles_5b( + 28, 27, 30, // tri0 + 26, 30, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_2_v[63], 12, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b( + 8, 6, 5, // tri0 + 9, 4, 10, // tri1 + 10, 4, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[75], 11, 0), + gsSPNTrianglesInit_5b( + 5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 6, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[86], 32, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b( + 13, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 19, 20, // tri2 + 19, 21, 22 // tri3 + ), + gsSPNTriangles_5b( + 21, 23, 24, // tri0 + 25, 26, 27, // tri1 + 27, 28, 25, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b( + 29, 9, 28, // tri0 + 10, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_2_v[118], 17, 0), + gsSPNTrianglesInit_5b( + 8, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b( + 13, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[135], 20, 0), + gsSPNTrianglesInit_5b( + 24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b( + 1, 3, 2, // tri0 + 4, 5, 6, // tri1 + 5, 7, 6, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 7, 10, 9, // tri1 + 5, 11, 7, // tri2 + 10, 12, 9 // tri3 + ), + gsSPNTriangles_5b( + 11, 10, 7, // tri0 + 3, 13, 5, // tri1 + 13, 11, 5, // tri2 + 1, 14, 3 // tri3 + ), + gsSPNTriangles_5b( + 14, 13, 3, // tri0 + 14, 15, 13, // tri1 + 13, 16, 11, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 11, // tri0 + 11, 17, 10, // tri1 + 17, 18, 10, // tri2 + 10, 18, 12 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, station_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(station_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[155], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 4, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b( + 8, 12, 10, // tri0 + 10, 13, 11, // tri1 + 8, 7, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b( + 15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 22, 3, 1 // tri3 + ), + gsSPNTriangles_5b( + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 27, 28, 29, // tri2 + 27, 29, 30 // tri3 + ), + gsSPVertex(&grd_s_t_st1_2_v[186], 6, 0), + gsSPNTrianglesInit_5b( + 2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_2_v[192], 24, 0), + gsSPNTrianglesInit_5b( + 11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 8, 9, // tri0 + 8, 3, 10, // tri1 + 11, 12, 13, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 18, // tri0 + 12, 16, 19, // tri1 + 20, 21, 22, // tri2 + 21, 14, 23 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c b/src/data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c new file mode 100644 index 00000000..e67ef08d --- /dev/null +++ b/src/data/field/bg/acre/grd_s_t_st1_3/grd_s_t_st1_3.c @@ -0,0 +1,287 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 station_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx grd_s_t_st1_3_v[] = { +#include "assets/field/bg/grd_s_t_st1_3_v.inc" +}; + +extern Gfx grd_s_t_st1_3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_s_t_st1_3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grd_s_t_st1_3_v[190], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b( + 7, 5, 8, // tri0 + 9, 7, 10, // tri1 + 11, 9, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, earth_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[0], 32, 0), + gsSPNTrianglesInit_5b( + 19, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 7, 8, 5, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 13, 15, 14 // tri3 + ), + gsSPNTriangles_5b( + 16, 12, 17, // tri0 + 6, 16, 17, // tri1 + 18, 19, 20, // tri2 + 21, 20, 19 // tri3 + ), + gsSPNTriangles_5b( + 7, 6, 21, // tri0 + 22, 23, 0, // tri1 + 5, 16, 6, // tri2 + 13, 24, 15 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 20, // tri0 + 26, 27, 28, // tri1 + 27, 9, 11, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_s_t_st1_3_v[32], 32, 0), + gsSPNTrianglesInit_5b( + 20, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 8, // tri0 + 0, 3, 1, // tri1 + 3, 5, 4, // tri2 + 5, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 13, 14, 11, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b( + 18, 19, 20, // tri0 + 18, 21, 19, // tri1 + 22, 23, 24, // tri2 + 24, 23, 25 // tri3 + ), + gsSPNTriangles_5b( + 19, 21, 26, // tri0 + 19, 27, 20, // tri1 + 28, 29, 26, // tri2 + 29, 15, 30 // tri3 + ), + gsSPNTriangles_5b( + 17, 30, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_3_v[63], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[66], 25, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b( + 0, 5, 1, // tri0 + 3, 6, 4, // tri1 + 7, 8, 6, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b( + 9, 10, 11, // tri0 + 12, 13, 11, // tri1 + 14, 15, 13, // tri2 + 15, 14, 16 // tri3 + ), + gsSPNTriangles_5b( + 16, 17, 15, // tri0 + 17, 18, 19, // tri1 + 18, 20, 19, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b( + 20, 22, 21, // tri0 + 22, 23, 21, // tri1 + 22, 24, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[91], 31, 0), + gsSPNTrianglesInit_5b( + 17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b( + 6, 7, 0, // tri0 + 8, 9, 6, // tri1 + 10, 11, 8, // tri2 + 10, 12, 11 // tri3 + ), + gsSPNTriangles_5b( + 10, 13, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 19, 16, 20 // tri3 + ), + gsSPNTriangles_5b( + 17, 21, 22, // tri0 + 21, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b( + 27, 29, 30, // tri0 + 29, 19, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rail_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[122], 21, 0), + gsSPNTrianglesInit_5b( + 25, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b( + 4, 5, 1, // tri0 + 6, 7, 4, // tri1 + 7, 5, 4, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b( + 8, 9, 7, // tri0 + 9, 10, 7, // tri1 + 10, 11, 7, // tri2 + 7, 12, 5 // tri3 + ), + gsSPNTriangles_5b( + 7, 11, 12, // tri0 + 5, 12, 1, // tri1 + 12, 13, 1, // tri2 + 1, 14, 3 // tri3 + ), + gsSPNTriangles_5b( + 1, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 12, 16, 13 // tri3 + ), + gsSPNTriangles_5b( + 12, 17, 16, // tri0 + 11, 18, 12, // tri1 + 18, 17, 12, // tri2 + 11, 19, 18 // tri3 + ), + gsSPNTriangles_5b( + 10, 20, 11, // tri0 + 20, 19, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, station_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(station_tex_dummy, G_IM_FMT_CI, 128, 32, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[143], 32, 0), + gsSPNTrianglesInit_5b( + 18, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b( + 10, 14, 12, // tri0 + 12, 15, 13, // tri1 + 10, 9, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b( + 17, 19, 18, // tri0 + 20, 2, 1, // tri1 + 12, 21, 22, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b( + 24, 25, 26, // tri0 + 24, 26, 27, // tri1 + 28, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_s_t_st1_3_v[174], 3, 0), + gsSPNTrianglesInit_5b( + 1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, bush_pal_dummy), + gsDPLoadTextureBlock_4b_Dolphin(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&grd_s_t_st1_3_v[177], 13, 0), + gsSPNTrianglesInit_5b( + 6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b( + 1, 5, 8, // tri0 + 9, 10, 11, // tri1 + 10, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/grd_yamishop/grd_yamishop.c b/src/data/field/bg/acre/grd_yamishop/grd_yamishop.c new file mode 100644 index 00000000..652f892c --- /dev/null +++ b/src/data/field/bg/acre/grd_yamishop/grd_yamishop.c @@ -0,0 +1,476 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_yami_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_wall_pal.inc" +}; + +static u16 rom_yami_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_floor_pal.inc" +}; + +static u16 rom_yami_box_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_box_pal.inc" +}; + +static u16 rom_yami_mono01_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono01_pal.inc" +}; + +static u16 rom_yami_mono02_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono02_pal.inc" +}; + +static u16 rom_yami_mono03_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono03_pal.inc" +}; + +static u16 rom_yami_qup_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_qup_pal.inc" +}; + +static u16 rom_yami_hyou_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_hyou_pal.inc" +}; + +static u16 rom_yami_step_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_step_tex_pal.inc" +}; + +static u16 rom_yami_hugu_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_hugu_pal.inc" +}; + +static u16 rom_yami_tama_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_tama_pal.inc" +}; + +static u8 rom_yami_wall_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_wall_tex.inc" +}; + +static u8 rom_yami_floor_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_floor_tex.inc" +}; + +static u8 rom_yami_poll_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_poll_tex.inc" +}; + +static u8 rom_yami_box01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_box01_tex.inc" +}; + +static u8 rom_yami_box02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_box02_tex.inc" +}; + +static u8 rom_yami_mono01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono01_tex.inc" +}; + +static u8 rom_yami_mono02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono02_tex.inc" +}; + +static u8 rom_yami_mono03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_mono03_tex.inc" +}; + +static u8 rom_yami_qup_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_qup_tex.inc" +}; + +static u8 rom_yami_hyou_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_hyou_tex.inc" +}; + +static u8 rom_yami_hyou02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_hyou02_tex.inc" +}; + +static u8 rom_yami_step_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_step_tex.inc" +}; + +static u8 rom_yami_hugu_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_hugu_tex.inc" +}; + +static u8 rom_yami_tama_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_tama_tex.inc" +}; + +static u8 rom_yami_shadow01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_yami_shadow01_tex.inc" +}; + +static Vtx grd_yamishop_v[] = { +#include "assets/field/bg/grd_yamishop_v.inc" +}; + +extern Gfx grd_yamishop_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx grd_yamishop_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_hugu_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_hugu_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&grd_yamishop_v[226], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_tama_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_tama_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[232], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_hyou_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_hyou02_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[238], 12, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_hyou_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 7, 10, 11 // tri2 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_qup_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_qup_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[250], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_mono01_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_mono01_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[255], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_mono02_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_mono02_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[260], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_mono03_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_mono03_tex, G_IM_FMT_CI, 64, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[265], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_step_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_step_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[0], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_wall_tex, G_IM_FMT_CI, 32, 48, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[5], 32, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 6, 8, 2, // tri1 + 0, 2, 8, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 6, 2, // tri0 + 10, 11, 3, // tri1 + 10, 9, 11, // tri2 + 9, 2, 11 // tri3 + ), + gsSPNTriangles_5b(2, 3, 11, // tri0 + 9, 12, 6, // tri1 + 12, 4, 6, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 4, 12, // tri0 + 14, 15, 16, // tri1 + 17, 14, 16, // tri2 + 16, 15, 18 // tri3 + ), + gsSPNTriangles_5b(17, 16, 18, // tri0 + 19, 4, 20, // tri1 + 17, 19, 20, // tri2 + 13, 17, 20 // tri3 + ), + gsSPNTriangles_5b(13, 20, 4, // tri0 + 17, 18, 19, // tri1 + 18, 21, 22, // tri2 + 23, 19, 22 // tri3 + ), + gsSPNTriangles_5b(18, 22, 19, // tri0 + 24, 21, 18, // tri1 + 15, 24, 18, // tri2 + 5, 4, 19 // tri3 + ), + gsSPNTriangles_5b(23, 5, 19, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&grd_yamishop_v[37], 13, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 6, 2, 4, // tri1 + 7, 8, 9, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(6, 4, 8, // tri0 + 4, 9, 8, // tri1 + 6, 10, 2, // tri2 + 10, 11, 2 // tri3 + ), + gsSPNTriangles_5b(6, 12, 10, // tri0 + 12, 11, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_floor_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_yamishop_v[50], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 6, 7, 1, // tri1 + 8, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 13, // tri0 + 13, 17, 14, // tri1 + 22, 23, 2, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 25, 12, 23, // tri1 + 26, 24, 22, // tri2 + 25, 24, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 5, // tri0 + 28, 30, 29, // tri1 + 28, 31, 30, // tri2 + 28, 16, 31 // tri3 + ), + gsSPVertex(&grd_yamishop_v[82], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 7, // tri0 + 5, 9, 6, // tri1 + 10, 6, 11, // tri2 + 5, 7, 12 // tri3 + ), + gsSPNTriangles_5b(7, 8, 13, // tri0 + 14, 15, 9, // tri1 + 16, 14, 17, // tri2 + 16, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 18, 15, // tri0 + 19, 20, 12, // tri1 + 0, 2, 21, // tri2 + 22, 0, 21 // tri3 + ), + gsSPNTriangles_5b(23, 22, 21, // tri0 + 24, 25, 11, // tri1 + 26, 27, 28, // tri2 + 24, 29, 28 // tri3 + ), + gsSPNTriangles_5b(27, 24, 28, // tri0 + 13, 30, 4, // tri1 + 31, 3, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_yamishop_v[114], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_poll_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[118], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 8, 9, 1 // tri3 + ), + gsSPNTriangles_5b(8, 1, 0, // tri0 + 9, 10, 4, // tri1 + 9, 4, 1, // tri2 + 10, 11, 6 // tri3 + ), + gsSPNTriangles_5b(10, 6, 4, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 13, 16, 17 // tri3 + ), + gsSPNTriangles_5b(13, 17, 14, // tri0 + 16, 18, 19, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 21, 24, 25, // tri1 + 21, 25, 22, // tri2 + 26, 20, 23 // tri3 + ), + gsSPNTriangles_5b(26, 23, 27, // tri0 + 28, 29, 30, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grd_yamishop_v[150], 24, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 9, 12, 13 // tri3 + ), + gsSPNTriangles_5b(9, 13, 10, // tri0 + 14, 8, 11, // tri1 + 14, 11, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 17, 20, 21, // tri1 + 17, 21, 18, // tri2 + 22, 16, 19 // tri3 + ), + gsSPNTriangles_5b(22, 19, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_yami_box_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_box02_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&grd_yamishop_v[174], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_box01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[182], 28, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 22, 23, 19, // tri1 + 22, 19, 18, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 150, 10, 10, 30, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_yami_shadow01_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&grd_yamishop_v[210], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/myr_etc/myr_etc.c b/src/data/field/bg/acre/myr_etc/myr_etc.c new file mode 100644 index 00000000..a1032a8a --- /dev/null +++ b/src/data/field/bg/acre/myr_etc/myr_etc.c @@ -0,0 +1,74 @@ +#include "libforest/gbi_extensions.h" + +static u16 myr_kotei_pal[] = { +#include "assets/field/bg/myr_kotei_pal.inc" +}; + +static u8 myr_enter[] = { +#include "assets/field/bg/myr_enter.inc" +}; + +static u8 myr_window[] = { +#include "assets/field/bg/myr_window.inc" +}; + +static Vtx myr_kotei_v[] = { +#include "assets/field/bg/myr_kotei_v.inc" +}; + +static Gfx myr_kotei_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, myr_kotei_pal), + gsDPLoadTextureBlock_4b(myr_enter, G_IM_FMT_CI, 64, 32, 15, G_TX_MIRROR | G_TX_CLAMP, G_TX_MIRROR | G_TX_CLAMP, 6, + 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPClearGeometryMode(G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPVertex(&myr_kotei_v[0], 6, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 2, 0, 5, 0, 2, 0), + gsSPEndDisplayList(), +}; + +static Gfx myr_out_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PASS2), + gsDPSetRenderMode(G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2), + gsSPClearGeometryMode(G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPVertex(&myr_kotei_v[6], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 7, 5, 0), + gsSPEndDisplayList(), +}; + +static Gfx myr_koteiT_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, myr_kotei_pal), + gsDPLoadTextureBlock_4b(myr_window, G_IM_FMT_CI, 64, 64, 15, G_TX_MIRROR | G_TX_CLAMP, G_TX_MIRROR | G_TX_CLAMP, 6, + 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPClearGeometryMode(G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsSPVertex(&myr_kotei_v[14], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSPEndDisplayList(), +}; + +extern Gfx myr_etc_model[] = { + gsDPPipeSync(), + gsSPDisplayList(myr_kotei_model), + gsSPDisplayList(myr_koteiT_model), + gsSPDisplayList(myr_out_model), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/police_indoor/police_indoor.c b/src/data/field/bg/acre/police_indoor/police_indoor.c new file mode 100644 index 00000000..12f129f2 --- /dev/null +++ b/src/data/field/bg/acre/police_indoor/police_indoor.c @@ -0,0 +1,643 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_koban_tel_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_tel_pal.inc" +}; + +static u16 rom_koban_win_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_win_pal.inc" +}; + +static u16 rom_koban_us_pos_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_us_pos_pal.inc" +}; + +static u16 rom_koban_jim_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_jim_pal.inc" +}; + +static u16 rom_koban_kabe_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_kabe_pal.inc" +}; + +static u16 rom_koban_roc_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_roc_pal.inc" +}; + +static u8 rom_koban_tel[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_tel.inc" +}; + +static u8 rom_koban_win[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_win.inc" +}; + +static u8 rom_koban_desk_front[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_desk_front.inc" +}; + +static u8 rom_koban_desk_side[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_desk_side.inc" +}; + +static u8 rom_koban_desk_top[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_desk_top.inc" +}; + +static u8 rom_koban_yuka[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_yuka.inc" +}; + +static u8 rom_koban_us_pos1[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_us_pos1.inc" +}; + +static u8 rom_koban_us_pos2[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_us_pos2.inc" +}; + +static u8 rom_koban_kage1[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_kage1.inc" +}; + +static u8 rom_koban_kage2[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_kage2.inc" +}; + +static u8 rom_koban_ent[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_ent.inc" +}; + +static u8 rom_koban_jim_front[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_jim_front.inc" +}; + +static u8 rom_koban_jim_side[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_jim_side.inc" +}; + +static u8 rom_koban_jim_top[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_jim_top.inc" +}; + +static u8 rom_koban_kabe1[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_kabe1.inc" +}; + +static u8 rom_koban_telcode[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_telcode.inc" +}; + +static u8 rom_koban_book[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_book.inc" +}; + +static u8 rom_koban_roc_s[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_roc_s.inc" +}; + +static u8 rom_koban_roc_t[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_roc_t.inc" +}; + +static u8 rom_koban_kabe3[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_kabe3.inc" +}; + +static u8 rom_koban_isu[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_isu.inc" +}; + +static u8 rom_koban_roc_i[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_roc_i.inc" +}; + +static u8 rom_koban_roc_f3[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_koban_roc_f3.inc" +}; + +static Vtx police_indoor_v[] = { +#include "assets/field/bg/police_indoor_v.inc" +}; + +extern Gfx police_indoor_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx police_indoor_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_win_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_win, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&police_indoor_v[268], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_us_pos_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_us_pos2, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&police_indoor_v[276], 8, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_us_pos1, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_win_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_desk_side, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[336], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_desk_front, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&police_indoor_v[352], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 16, 17, 18, // tri1 + 16, 19, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[384], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_roc_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_roc_f3, G_IM_FMT_CI, 32, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&police_indoor_v[392], 7, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 1, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_jim_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_isu, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[399], 14, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_jim_side, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 6, 7, 8, // tri0 + 6, 9, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_jim_front, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_tel_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_book, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[413], 12, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_telcode, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_tel, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 8, 7, 11 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_win_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_ent, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&police_indoor_v[0], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_kabe_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_kabe1, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[5], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 6, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(4, 12, 13, // tri0 + 12, 14, 13, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(17, 19, 10, // tri0 + 20, 1, 6, // tri1 + 1, 0, 6, // tri2 + 8, 10, 19 // tri3 + ), + gsSPNTriangles_5b(21, 12, 3, // tri0 + 12, 4, 3, // tri1 + 17, 18, 19, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 22, 24, // tri0 + 26, 27, 28, // tri1 + 29, 26, 28, // tri2 + 22, 30, 31 // tri3 + ), + gsSPNTriangles_5b(23, 22, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[37], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 3, // tri0 + 7, 0, 2, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 14, 12, // tri0 + 14, 15, 12, // tri1 + 15, 13, 12, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 8, 18, // tri1 + 8, 10, 18, // tri2 + 10, 19, 18 // tri3 + ), + gsSPNTriangles_5b(20, 21, 14, // tri0 + 20, 22, 21, // tri1 + 22, 23, 21, // tri2 + 23, 14, 21 // tri3 + ), + gsSPNTriangles_5b(23, 24, 14, // tri0 + 8, 25, 9, // tri1 + 25, 26, 9, // tri2 + 8, 27, 25 // tri3 + ), + gsSPNTriangles_5b(27, 26, 25, // tri0 + 16, 14, 24, // tri1 + 28, 29, 30, // tri2 + 31, 30, 29 // tri3 + ), + gsSPVertex(&police_indoor_v[69], 10, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 3 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 3, 5, 6, // tri1 + 3, 6, 7, // tri2 + 6, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 7, 8, // tri0 + 9, 3, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_tel_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_yuka, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&police_indoor_v[79], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 4, // tri0 + 6, 7, 1, // tri1 + 8, 9, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 23, 17, 14, // tri1 + 24, 25, 2, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(26, 27, 25, // tri0 + 27, 12, 25, // tri1 + 28, 26, 24, // tri2 + 27, 26, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[111], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 1, 6, // tri0 + 7, 1, 3, // tri1 + 8, 9, 0, // tri2 + 9, 10, 0 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 12, 9, 13, // tri1 + 8, 0, 14, // tri2 + 0, 10, 4 // tri3 + ), + gsSPNTriangles_5b(15, 16, 11, // tri0 + 17, 15, 18, // tri1 + 17, 16, 15, // tri2 + 17, 19, 16 // tri3 + ), + gsSPNTriangles_5b(2, 20, 14, // tri0 + 5, 6, 21, // tri1 + 22, 5, 21, // tri2 + 23, 22, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 13, // tri0 + 26, 27, 28, // tri1 + 24, 29, 28, // tri2 + 27, 24, 28 // tri3 + ), + gsSPNTriangles_5b(4, 30, 3, // tri0 + 31, 7, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[143], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPVertex(&police_indoor_v[147], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_win_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_desk_top, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[155], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(29, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[187], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_roc_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_roc_i, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[195], 12, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_roc_t, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 7, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_roc_s, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 9, 11, 10, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_jim_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_jim_top, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[207], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_koban_kabe_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_kabe3, G_IM_FMT_CI, 32, 64, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsSPVertex(&police_indoor_v[211], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(5, 3, 1, // tri0 + 5, 6, 3, // tri1 + 6, 7, 3, // tri2 + 3, 7, 2 // tri3 + ), + gsSPNTriangles_5b(7, 8, 2, // tri0 + 9, 10, 11, // tri1 + 9, 11, 12, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 15, 12, 14, // tri1 + 15, 14, 16, // tri2 + 9, 12, 15 // tri3 + ), + gsSPNTriangles_5b(9, 15, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 24, 21, 25, // tri1 + 24, 22, 21, // tri2 + 21, 26, 25 // tri3 + ), + gsSPNTriangles_5b(21, 19, 26, // tri0 + 27, 28, 29, // tri1 + 27, 30, 28, // tri2 + 28, 31, 29 // tri3 + ), + gsSPVertex(&police_indoor_v[243], 25, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 4, 2, 7, // tri1 + 8, 9, 10, // tri2 + 11, 8, 10 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 11, 10, 13, // tri1 + 14, 15, 12, // tri2 + 14, 12, 10 // tri3 + ), + gsSPNTriangles_5b(14, 10, 9, // tri0 + 14, 9, 16, // tri1 + 17, 18, 19, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 0, 0, 0, 115), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_kage2, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&police_indoor_v[284], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_koban_kage1, G_IM_FMT_I, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&police_indoor_v[288], 32, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 26, 27, 28, // tri1 + 26, 29, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&police_indoor_v[318], 18, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_museum1/rom_museum1.c b/src/data/field/bg/acre/rom_museum1/rom_museum1.c new file mode 100644 index 00000000..d47c6bde --- /dev/null +++ b/src/data/field/bg/acre/rom_museum1/rom_museum1.c @@ -0,0 +1,412 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_museum1_mado_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_mado_pal.inc" +}; + +static u16 rom_museum1_step_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_step_pal.inc" +}; + +static u16 rom_museum1_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_floor_pal.inc" +}; + +static u16 rom_museum1_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_wall_pal.inc" +}; + +static u8 rom_museum1_mado1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_mado1_tex.inc" +}; + +static u8 rom_museum1_step1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_step1_tex.inc" +}; + +static u8 rom_museum1_step2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_step2_tex.inc" +}; + +static u8 rom_museum1_floorA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_floorA_tex.inc" +}; + +static u8 rom_museum1_floorB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_floorB_tex.inc" +}; + +static u8 rom_museum1_mado2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_mado2_tex.inc" +}; + +static u8 rom_museum1_sign1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_sign1_tex.inc" +}; + +static u8 rom_museum1_wallA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_wallA_tex.inc" +}; + +static u8 rom_museum1_wallB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_wallB_tex.inc" +}; + +static u8 rom_museum1_sign2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_sign2_tex.inc" +}; + +static u8 rom_museum1_sign3_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_sign3_tex.inc" +}; + +static u8 rom_museum1_sign4_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum1_sign4_tex.inc" +}; + +static Vtx rom_museum1_v[] = { +#include "assets/field/bg/rom_museum1_v.inc" +}; + +extern Gfx rom_museum1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 1, 0, PRIM_LOD_FRAC, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum1_mado_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_mado2_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_museum1_v[268], 16, 0), + gsSPNTriangles(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13, // tri2 + 8, 10, 14 // tri3 + ), + gsSPNTriangles_5b(11, 13, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_mado1_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[284], 16, 0), + gsSPNTriangles(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 4, 6, // tri2 + 14, 7, 9 // tri3 + ), + gsSPNTriangles_5b(11, 15, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx rom_museum1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_museum1_v[0], 16, 0), + gsSPNTriangles(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum1_step_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_sign4_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[16], 20, 0), + gsSPNTriangles(3, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 2, 3 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_sign3_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTriangles(3, // tri count + 5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 5, 7, 9 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_sign2_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTriangles(3, // tri count + 10, 11, 12, // tri0 + 12, 13, 10, // tri1 + 10, 14, 11 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_sign1_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTriangles(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 15, 19, 16 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_step2_tex, G_IM_FMT_CI, 64, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum1_v[36], 27, 0), + gsSPNTriangles(14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b(6, 11, 9, // tri0 + 12, 13, 14, // tri1 + 15, 16, 12, // tri2 + 12, 14, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 17, 21, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_step1_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTriangles(3, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 22, 26, 23 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum1_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_wallA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[63], 32, 0), + gsSPNTriangles(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 + ), + gsSPNTriangles_5b(4, 8, 9, // tri0 + 10, 6, 7, // tri1 + 8, 11, 9, // tri2 + 12, 2, 1 // tri3 + ), + gsSPNTriangles_5b(5, 13, 3, // tri0 + 2, 14, 0, // tri1 + 4, 15, 5, // tri2 + 0, 16, 7 // tri3 + ), + gsSPNTriangles_5b(17, 4, 9, // tri0 + 18, 19, 14, // tri1 + 20, 15, 21, // tri2 + 15, 4, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 17, // tri0 + 23, 4, 17, // tri1 + 24, 25, 16, // tri2 + 0, 24, 16 // tri3 + ), + gsSPNTriangles_5b(19, 0, 14, // tri0 + 26, 10, 7, // tri1 + 0, 19, 24, // tri2 + 12, 27, 2 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum1_v[94], 18, 0), + gsSPNTriangles(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 2, 1, // tri0 + 3, 5, 6, // tri1 + 5, 7, 6, // tri2 + 3, 8, 5 // tri3 + ), + gsSPNTriangles_5b(8, 7, 5, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_wallB_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[112], 32, 0), + gsSPNTriangles(21, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 11, 10, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 8, 16, 9, // tri1 + 8, 17, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 20, 11, 9, // tri1 + 21, 22, 23, // tri2 + 22, 24, 23 // tri3 + ), + gsSPNTriangles_5b(14, 15, 25, // tri0 + 22, 12, 24, // tri1 + 12, 14, 24, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 28, // tri0 + 29, 28, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum1_v[143], 32, 0), + gsSPNTriangles(20, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 7, // tri1 + 9, 0, 2, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 15, 16, 17, // tri2 + 18, 15, 17 // tri3 + ), + gsSPNTriangles_5b(15, 19, 16, // tri0 + 20, 21, 22, // tri1 + 23, 20, 22, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(25, 23, 24, // tri0 + 25, 26, 27, // tri1 + 28, 26, 25, // tri2 + 28, 25, 24 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum1_v[175], 8, 0), + gsSPNTriangles(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum1_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_floorB_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[183], 32, 0), + gsSPNTriangles(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 6, 8, 7, // tri1 + 8, 9, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 11, 14, 12, // tri1 + 15, 16, 17, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 18, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 20, 22, 28, // tri1 + 26, 29, 24, // tri2 + 3, 30, 4 // tri3 + ), + gsSPNTriangles_5b(14, 31, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum1_v[215], 10, 0), + gsSPNTriangles(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum1_floorA_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum1_v[225], 27, 0), + gsSPNTriangles(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 6, 18, 7, // tri1 + 19, 20, 21, // tri2 + 22, 19, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 14, // tri0 + 23, 24, 25, // tri1 + 23, 26, 24, // tri2 + 10, 9, 12 // tri3 + ), + gsSPNTriangles_5b(17, 13, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum1_v[252], 16, 0), + gsSPNTriangles(12, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 1, // tri0 + 7, 6, 5, // tri1 + 5, 1, 0, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 8, 10, 12, // tri1 + 12, 10, 13, // tri2 + 10, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_museum2/rom_museum2.c b/src/data/field/bg/acre/rom_museum2/rom_museum2.c new file mode 100644 index 00000000..49c55b79 --- /dev/null +++ b/src/data/field/bg/acre/rom_museum2/rom_museum2.c @@ -0,0 +1,417 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_museum2_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_wall_pal.inc" +}; + +static u16 rom_museum2_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_floor_pal.inc" +}; + +static u16 rom_museum2_step1_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_step1_pal.inc" +}; + +static u8 rom_museum2_wallA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_wallA_tex.inc" +}; + +static u8 rom_museum2_wallB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_wallB_tex.inc" +}; + +static u8 rom_museum2_floorA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_floorA_tex.inc" +}; + +static u8 rom_museum2_step1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_step1_tex.inc" +}; + +static u8 rom_museum2_plate_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum2_plate_tex.inc" +}; + +static Vtx rom_museum2_v[] = { +#include "assets/field/bg/rom_museum2_v.inc" +}; + +extern Gfx rom_museum2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx rom_museum2_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum2_step1_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum2_step1_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_museum2_v[0], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum2_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum2_wallB_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum2_v[5], 25, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 5, 6, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(4, 3, 11, // tri0 + 3, 12, 11, // tri1 + 6, 5, 13, // tri2 + 5, 14, 13 // tri3 + ), + gsSPNTriangles_5b(13, 15, 9, // tri0 + 7, 9, 15, // tri1 + 13, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 16, 18, // tri0 + 20, 21, 22, // tri1 + 23, 16, 19, // tri2 + 16, 23, 22 // tri3 + ), + gsSPNTriangles_5b(24, 22, 23, // tri0 + 24, 20, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum2_wallA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum2_v[30], 25, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 7, 5, 4, // tri1 + 8, 9, 10, // tri2 + 8, 0, 9 // tri3 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 9, // tri1 + 11, 12, 6, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 14, 6, 12, // tri1 + 0, 15, 1, // tri2 + 15, 5, 1 // tri3 + ), + gsSPNTriangles_5b(0, 3, 15, // tri0 + 3, 5, 15, // tri1 + 7, 6, 14, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 18, 20, // tri0 + 18, 17, 20, // tri1 + 21, 20, 17, // tri2 + 21, 19, 20 // tri3 + ), + gsSPNTriangles_5b(17, 16, 22, // tri0 + 16, 23, 22, // tri1 + 24, 22, 23, // tri2 + 24, 17, 22 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum2_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum2_floorA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum2_v[55], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 14, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 14, 19, // tri0 + 21, 22, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(24, 23, 26, // tri0 + 28, 0, 2, // tri1 + 28, 29, 0, // tri2 + 29, 28, 7 // tri3 + ), + gsSPNTriangles_5b(28, 8, 7, // tri0 + 29, 4, 0, // tri1 + 12, 13, 29, // tri2 + 15, 30, 16 // tri3 + ), + gsSPNTriangles_5b(15, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum2_v[87], 27, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 5, 3 // tri2 + ), + gsSPNTriangles_5b(2, 1, 5, // tri0 + 5, 6, 7, // tri1 + 8, 9, 0, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 16, 13, 10 // tri3 + ), + gsSPNTriangles_5b(14, 13, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 18, 22, 21 // tri3 + ), + gsSPNTriangles_5b(18, 4, 22, // tri0 + 23, 21, 24, // tri1 + 25, 21, 22, // tri2 + 26, 11, 18 // tri3 + ), + gsSPNTriangles_5b(11, 2, 18, // tri0 + 26, 12, 11, // tri1 + 2, 11, 15, // tri2 + 26, 18, 20 // tri3 + ), + gsSPNTriangles_5b(18, 2, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum2_step1_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum2_plate_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum2_v[114], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 5, 3, // tri0 + 1, 6, 4, // tri1 + 1, 4, 2, // tri2 + 0, 7, 6 // tri3 + ), + gsSPNTriangles_5b(0, 6, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 13, 12, 14, // tri1 + 13, 14, 15, // tri2 + 8, 11, 13 // tri3 + ), + gsSPNTriangles_5b(8, 13, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 17, 22, 20, // tri1 + 17, 20, 18, // tri2 + 16, 23, 22 // tri3 + ), + gsSPNTriangles_5b(16, 22, 17, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 24, 27, 29, // tri1 + 24, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum2_v[145], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 0, 6, 4, // tri1 + 0, 4, 1, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(7, 9, 10, // tri0 + 10, 9, 11, // tri1 + 10, 11, 12, // tri2 + 7, 10, 12 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 14, 17, // tri1 + 20, 17, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 23, 24, // tri0 + 23, 25, 26, // tri1 + 23, 26, 24, // tri2 + 22, 27, 25 // tri3 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 28, 29, 30, // tri1 + 28, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum2_v[177], 32, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 6, 0, 3, // tri1 + 6, 3, 5, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(7, 9, 10, // tri0 + 9, 11, 12, // tri1 + 9, 12, 10, // tri2 + 8, 13, 11 // tri3 + ), + gsSPNTriangles_5b(8, 11, 9, // tri0 + 7, 14, 13, // tri1 + 7, 13, 8, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(15, 17, 18, // tri0 + 18, 17, 19, // tri1 + 18, 19, 20, // tri2 + 20, 19, 21 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 15, 18, 20, // tri1 + 15, 20, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 25, 26, // tri0 + 25, 27, 28, // tri1 + 25, 28, 26, // tri2 + 24, 29, 27 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 23, 30, 29, // tri1 + 23, 29, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum2_v[208], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 0, 3, 5 // tri3 + ), + gsSPNTriangles_5b(0, 5, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 9, 14, 12, // tri1 + 9, 12, 10, // tri2 + 8, 15, 14 // tri3 + ), + gsSPNTriangles_5b(8, 14, 9, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 19, 18, 20 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 22, // tri1 + 21, 22, 23, // tri2 + 16, 19, 21 // tri3 + ), + gsSPNTriangles_5b(16, 21, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 26, 28, 29 // tri3 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 25, 30, 28, // tri1 + 25, 28, 26, // tri2 + 24, 31, 30 // tri3 + ), + gsSPNTriangles_5b(24, 30, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum2_v[240], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 0, 3, 5 // tri3 + ), + gsSPNTriangles_5b(0, 5, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 9, 14, 12, // tri1 + 9, 12, 10, // tri2 + 8, 15, 14 // tri3 + ), + gsSPNTriangles_5b(8, 14, 9, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 17, 22, 20, // tri1 + 17, 20, 18, // tri2 + 16, 23, 22 // tri3 + ), + gsSPNTriangles_5b(16, 22, 17, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 29, 28, 30, // tri1 + 29, 30, 31, // tri2 + 24, 27, 29 // tri3 + ), + gsSPNTriangles_5b(24, 29, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_museum3/rom_museum3.c b/src/data/field/bg/acre/rom_museum3/rom_museum3.c new file mode 100644 index 00000000..1fe59e22 --- /dev/null +++ b/src/data/field/bg/acre/rom_museum3/rom_museum3.c @@ -0,0 +1,417 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_museum3_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_wall_pal.inc" +}; + +static u16 rom_museum3_back_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_back_pal.inc" +}; + +static u16 rom_museum3_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_floor_pal.inc" +}; + +static u8 rom_museum3_wallA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_wallA_tex.inc" +}; + +static u8 rom_museum3_wallB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_wallB_tex.inc" +}; + +static u8 rom_museum3_back_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_back_tex.inc" +}; + +static u8 rom_museum3_floorA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_floorA_tex.inc" +}; + +static u8 rom_museum3_step_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_step_tex.inc" +}; + +static u8 rom_museum3_hasira_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_hasira_tex.inc" +}; + +static u8 rom_museum3_backside_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum3_backside_tex.inc" +}; + +static Vtx rom_museum3_v[] = { +#include "assets/field/bg/rom_museum3_v.inc" +}; + +extern Gfx rom_museum3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx rom_museum3_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, COMBINED, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum3_back_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_step_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_museum3_v[0], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum3_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_wallA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum3_v[5], 27, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 7, 5, 4, // tri1 + 8, 9, 10, // tri2 + 8, 0, 9 // tri3 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 9, // tri1 + 11, 12, 6, // tri2 + 11, 13, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 14, 6, 12, // tri1 + 0, 15, 1, // tri2 + 15, 16, 1 // tri3 + ), + gsSPNTriangles_5b(0, 17, 15, // tri0 + 17, 16, 15, // tri1 + 7, 6, 14, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 20, 22, // tri0 + 20, 19, 22, // tri1 + 23, 22, 19, // tri2 + 23, 21, 22 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 18, 25, 24, // tri1 + 26, 24, 25, // tri2 + 26, 19, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_wallB_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum3_v[32], 27, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 5, 6, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(4, 3, 11, // tri0 + 3, 12, 11, // tri1 + 13, 14, 15, // tri2 + 14, 16, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 9, // tri0 + 7, 9, 17, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 20, // tri0 + 22, 23, 24, // tri1 + 25, 18, 21, // tri2 + 18, 25, 24 // tri3 + ), + gsSPNTriangles_5b(26, 24, 25, // tri0 + 26, 22, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum3_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_floorA_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_museum3_v[59], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 9, 11 // tri3 + ), + gsSPNTriangles_5b(13, 12, 11, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 14, 20, 19 // tri3 + ), + gsSPNTriangles_5b(18, 14, 19, // tri0 + 21, 22, 23, // tri1 + 24, 25, 23, // tri2 + 24, 26, 27 // tri3 + ), + gsSPNTriangles_5b(24, 23, 26, // tri0 + 28, 0, 2, // tri1 + 28, 29, 0, // tri2 + 29, 28, 7 // tri3 + ), + gsSPNTriangles_5b(28, 8, 7, // tri0 + 29, 4, 0, // tri1 + 12, 13, 29, // tri2 + 15, 30, 16 // tri3 + ), + gsSPNTriangles_5b(15, 31, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum3_v[91], 27, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 5, 3 // tri2 + ), + gsSPNTriangles_5b(2, 1, 5, // tri0 + 5, 6, 7, // tri1 + 8, 9, 0, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 13, 14, 11, // tri1 + 14, 15, 11, // tri2 + 16, 13, 10 // tri3 + ), + gsSPNTriangles_5b(14, 13, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 18, 22, 21 // tri3 + ), + gsSPNTriangles_5b(18, 4, 22, // tri0 + 23, 21, 24, // tri1 + 25, 21, 22, // tri2 + 26, 11, 18 // tri3 + ), + gsSPNTriangles_5b(11, 2, 18, // tri0 + 26, 12, 11, // tri1 + 2, 11, 15, // tri2 + 26, 18, 20 // tri3 + ), + gsSPNTriangles_5b(18, 2, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum3_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_hasira_tex, G_IM_FMT_CI, 16, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum3_v[118], 32, 0), + gsSPNTrianglesInit_5b(40, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 5, 7, 6, // tri1 + 7, 8, 6, // tri2 + 9, 0, 10 // tri3 + ), + gsSPNTriangles_5b(0, 11, 10, // tri0 + 11, 12, 10, // tri1 + 13, 9, 14, // tri2 + 9, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 14, // tri0 + 17, 18, 19, // tri1 + 17, 13, 18, // tri2 + 18, 20, 19 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 17, 22, // tri1 + 22, 24, 23, // tri2 + 16, 18, 14 // tri3 + ), + gsSPNTriangles_5b(16, 20, 18, // tri0 + 18, 13, 14, // tri1 + 12, 16, 10, // tri2 + 16, 15, 10 // tri3 + ), + gsSPNTriangles_5b(15, 9, 10, // tri0 + 20, 22, 19, // tri1 + 20, 24, 22, // tri2 + 22, 17, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 24, 26, 25, // tri1 + 25, 21, 23, // tri2 + 4, 12, 2 // tri3 + ), + gsSPNTriangles_5b(12, 11, 2, // tri0 + 11, 0, 2, // tri1 + 8, 4, 6, // tri2 + 4, 3, 6 // tri3 + ), + gsSPNTriangles_5b(3, 1, 6, // tri0 + 27, 7, 28, // tri1 + 27, 8, 7, // tri2 + 7, 5, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum3_v[150], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 7, 8, 9, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 12, 13, 8, // tri1 + 12, 14, 13, // tri2 + 12, 15, 14 // tri3 + ), + gsSPNTriangles_5b(16, 9, 17, // tri0 + 16, 18, 9, // tri1 + 16, 19, 18, // tri2 + 20, 17, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 17, // tri0 + 20, 23, 22, // tri1 + 24, 25, 26, // tri2 + 25, 21, 26 // tri3 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 28, 29, 30, // tri1 + 29, 26, 30, // tri2 + 28, 31, 29 // tri3 + ), + gsSPNTriangles_5b(20, 25, 23, // tri0 + 25, 27, 23, // tri1 + 20, 21, 25, // tri2 + 16, 23, 19 // tri3 + ), + gsSPNTriangles_5b(16, 22, 23, // tri0 + 16, 17, 22, // tri1 + 24, 29, 27, // tri2 + 29, 31, 27 // tri3 + ), + gsSPNTriangles_5b(24, 26, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum3_v[182], 26, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 10, 7, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 7, // tri0 + 10, 13, 12, // tri1 + 14, 15, 16, // tri2 + 15, 11, 16 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21, // tri2 + 18, 21, 22 // tri3 + ), + gsSPNTriangles_5b(18, 22, 23, // tri0 + 18, 23, 24, // tri1 + 18, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum3_back_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_backside_tex, G_IM_FMT_CI, 16, 48, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum3_v[208], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 9, 10, // tri1 + 8, 11, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 17, 19, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 31, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum3_v[240], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum3_back_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum3_v[248], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 7, 11 // tri3 + ), + gsSPNTriangles_5b(7, 6, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 17, 19, 18, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(23, 25, 24, // tri0 + 25, 23, 26, // tri1 + 25, 26, 27, // tri2 + 13, 12, 28 // tri3 + ), + gsSPNTriangles_5b(12, 29, 28, // tri0 + 4, 30, 31, // tri1 + 4, 3, 30, // tri2 + 3, 1, 30 // tri3 + ), + gsSPVertex(&rom_museum3_v[280], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_museum5/rom_museum5.c b/src/data/field/bg/acre/rom_museum5/rom_museum5.c new file mode 100644 index 00000000..5f4141f1 --- /dev/null +++ b/src/data/field/bg/acre/rom_museum5/rom_museum5.c @@ -0,0 +1,344 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_museum5_on_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_on_pal.inc" +}; + +static u16 rom_museum5_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_wall_pal.inc" +}; + +static u16 rom_museum5_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_floor_pal.inc" +}; + +static u16 rom_museum5_step_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_step_pal.inc" +}; + +static u8 rom_museum5_ki_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_ki_tex.inc" +}; + +static u8 rom_museum5_wallA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_wallA_tex.inc" +}; + +static u8 rom_museum5_floor_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_floor_tex.inc" +}; + +static u8 rom_museum5_step_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_step_tex.inc" +}; + +static u8 rom_museum5_isi_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_isi_tex.inc" +}; + +static u8 rom_museum5_plate_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_museum5_plate_tex.inc" +}; + +static Vtx rom_museum5_v[] = { +#include "assets/field/bg/rom_museum5_v.inc" +}; + +extern Gfx rom_museum5_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx rom_museum5_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum5_step_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_plate_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_museum5_v[196], 20, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, PRIMITIVE, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsSPVertex(&rom_museum5_v[0], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 9, 10, 11, // tri2 + 11, 2, 1 // tri3 + ), + gsSPNTriangles_5b(9, 11, 1, // tri0 + 7, 4, 0, // tri1 + 4, 3, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_step_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_museum5_v[12], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum5_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_wallA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum5_v[17], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 1, 7, 5, // tri1 + 1, 8, 7, // tri2 + 0, 8, 1 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 11, 12, // tri1 + 13, 9, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(9, 13, 15, // tri0 + 15, 14, 16, // tri1 + 15, 16, 17, // tri2 + 9, 18, 10 // tri3 + ), + gsSPNTriangles_5b(9, 19, 18, // tri0 + 19, 20, 18, // tri1 + 21, 2, 22, // tri2 + 23, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 2, 1, // tri0 + 23, 22, 1, // tri1 + 5, 4, 24, // tri2 + 23, 5, 24 // tri3 + ), + gsSPNTriangles_5b(25, 23, 24, // tri0 + 25, 24, 4, // tri1 + 23, 1, 5, // tri2 + 9, 15, 19 // tri3 + ), + gsSPNTriangles_5b(15, 26, 19, // tri0 + 26, 27, 19, // tri1 + 15, 17, 26, // tri2 + 26, 17, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum5_v[48], 9, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(4, 2, 1, // tri0 + 3, 5, 0, // tri1 + 3, 6, 7, // tri2 + 7, 8, 5 // tri3 + ), + gsSPNTriangles_5b(3, 7, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum5_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_floor_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum5_v[57], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 4, 8, // tri0 + 5, 7, 9, // tri1 + 5, 4, 7, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 13, 15, // tri1 + 17, 16, 15, // tri2 + 3, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 1, 0, // tri0 + 3, 21, 2, // tri1 + 22, 23, 24, // tri2 + 25, 26, 24 // tri3 + ), + gsSPNTriangles_5b(25, 27, 28, // tri0 + 25, 24, 27, // tri1 + 29, 7, 8, // tri2 + 29, 30, 7 // tri3 + ), + gsSPNTriangles_5b(30, 29, 11, // tri0 + 29, 12, 11, // tri1 + 30, 9, 7, // tri2 + 16, 17, 30 // tri3 + ), + gsSPNTriangles_5b(18, 31, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum5_v[89], 26, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 7, 8, 1, // tri1 + 9, 10, 11, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 13, 14, 10, // tri1 + 15, 12, 9, // tri2 + 13, 12, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 17, 21, 20, // tri2 + 17, 4, 21 // tri3 + ), + gsSPNTriangles_5b(22, 20, 23, // tri0 + 24, 20, 21, // tri1 + 25, 10, 17, // tri2 + 10, 2, 17 // tri3 + ), + gsSPNTriangles_5b(25, 11, 10, // tri0 + 2, 10, 14, // tri1 + 25, 17, 19, // tri2 + 17, 2, 4 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_museum5_on_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_isi_tex, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum5_v[115], 32, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 5, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 10, 12, // tri0 + 12, 11, 1, // tri1 + 12, 1, 0, // tri2 + 5, 1, 14 // tri3 + ), + gsSPNTriangles_5b(14, 7, 6, // tri0 + 5, 14, 6, // tri1 + 12, 0, 3, // tri2 + 13, 12, 3 // tri3 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 4, 6, 9, // tri1 + 15, 16, 17, // tri2 + 18, 19, 15 // tri3 + ), + gsSPNTriangles_5b(18, 15, 17, // tri0 + 20, 21, 22, // tri1 + 23, 24, 20, // tri2 + 23, 20, 22 // tri3 + ), + gsSPNTriangles_5b(25, 19, 18, // tri0 + 22, 21, 25, // tri1 + 22, 25, 18, // tri2 + 26, 23, 22 // tri3 + ), + gsSPNTriangles_5b(26, 22, 18, // tri0 + 26, 18, 17, // tri1 + 27, 28, 29, // tri2 + 28, 30, 29 // tri3 + ), + gsSPNTriangles_5b(31, 28, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum5_v[147], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 6, 7, 8, // tri1 + 6, 4, 7, // tri2 + 4, 5, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_museum5_ki_tex, G_IM_FMT_CI, 16, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_museum5_v[156], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 5, 8, 9, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(8, 12, 9, // tri0 + 8, 10, 12, // tri1 + 9, 12, 14, // tri2 + 15, 10, 8 // tri3 + ), + gsSPNTriangles_5b(15, 16, 10, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 20, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 22, 18, // tri0 + 23, 18, 17, // tri1 + 22, 24, 25, // tri2 + 22, 25, 18 // tri3 + ), + gsSPNTriangles_5b(26, 23, 17, // tri0 + 26, 27, 28, // tri1 + 29, 26, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_museum5_v[186], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 2, 5, // tri0 + 3, 5, 4, // tri1 + 2, 7, 8, // tri2 + 2, 8, 5 // tri3 + ), + gsSPNTriangles_5b(9, 3, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_shop4_1/rom_shop4_1.c b/src/data/field/bg/acre/rom_shop4_1/rom_shop4_1.c new file mode 100644 index 00000000..9f1ed49a --- /dev/null +++ b/src/data/field/bg/acre/rom_shop4_1/rom_shop4_1.c @@ -0,0 +1,612 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_shop4_1_floor_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor_tex_pal.inc" +}; + +static u16 rom_shop4_1_lamp_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_lamp_tex_pal.inc" +}; + +static u16 rom_shop4_1_base_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_base_tex_pal.inc" +}; + +static u16 rom_shop4_1_stair_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_stair_tex_pal.inc" +}; + +static u16 rom_shop4_1_table_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table_tex_pal.inc" +}; + +static u16 rom_shop4_1_wall_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall_tex_pal.inc" +}; + +static u16 rom_shop4_1_sign01_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign01_tex_pal.inc" +}; + +static u16 rom_shop4_1_kaunta_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta_tex_pal.inc" +}; + +static u16 rom_shop4_1_us_sign01_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign01_tex_pal.inc" +}; + +static u16 rom_shop4_1_us_sign02_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign02_tex_pal.inc" +}; + +static u16 rom_shop4_1_us_sign03_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign03_tex_pal.inc" +}; + +static u16 rom_shop4_1_sign03_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign03_tex_pal.inc" +}; + +static u16 rom_shop4_1_reji_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji_tex_pal.inc" +}; + +static u8 rom_shop4_1_floor01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor01_tex.inc" +}; + +static u8 rom_shop4_1_lamp_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_lamp_tex.inc" +}; + +static u8 rom_shop4_1_base_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_base_tex.inc" +}; + +static u8 rom_shop4_1_stair01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_stair01_tex.inc" +}; + +static u8 rom_shop4_1_table01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table01_tex.inc" +}; + +static u8 rom_shop4_1_table02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table02_tex.inc" +}; + +static u8 rom_shop4_1_wall01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall01_tex.inc" +}; + +static u8 rom_shop4_1_wall02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall02_tex.inc" +}; + +static u8 rom_shop4_1_sign05_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign05_tex.inc" +}; + +static u8 rom_shop4_1_kaunta01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta01_tex.inc" +}; + +static u8 rom_shop4_1_kaunta02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta02_tex.inc" +}; + +static u8 rom_shop4_1_us_sign01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign01_tex.inc" +}; + +static u8 rom_shop4_1_us_sign02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign02_tex.inc" +}; + +static u8 rom_shop4_1_us_sign03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign03_tex.inc" +}; + +static u8 rom_shop4_1_sign04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign04_tex.inc" +}; + +static u8 rom_shop4_1_reji01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji01_tex.inc" +}; + +static u8 rom_shop4_1_reji02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji02_tex.inc" +}; + +static u8 rom_shop4_1_reji03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji03_tex.inc" +}; + +static u8 rom_shop4_1_floor02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor02_tex.inc" +}; + +static u8 rom_shop4_1_floor03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor03_tex.inc" +}; + +static u8 rom_shop4_1_floor04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor04_tex.inc" +}; + +static u8 rom_shop4_1_shadow01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_shadow01_tex.inc" +}; + +static u8 rom_shop4_1_shadow02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_shadow02_tex.inc" +}; + +static u8 rom_shop4_1_lamp02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_lamp02_tex.inc" +}; + +static u8 rom_shop4_1_shadow03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_shadow03_tex.inc" +}; + +static Vtx rom_shop4_1_v[] = { +#include "assets/field/bg/rom_shop4_1_v.inc" +}; + +extern Gfx rom_shop4_1_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 140, 50, 0, 40, 100), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_shadow02_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_1_v[322], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 100, 255, 255, 200, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_shadow01_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_1_v[346], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetPrimColor(0, 140, 255, 255, 130, 255), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_shadow03_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[350], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx rom_shop4_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_lamp_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_lamp02_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_1_v[294], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_us_sign01_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_us_sign01_tex, G_IM_FMT_CI, 32, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[300], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_kaunta_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_kaunta01_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_1_v[304], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_reji_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji03_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[310], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_us_sign03_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_us_sign03_tex, G_IM_FMT_CI, 48, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[314], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_sign03_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_sign04_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_1_v[318], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_base_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_base_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[0], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 2, // tri0 + 6, 0, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_stair_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_stair01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[7], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 3, // tri0 + 1, 6, 5, // tri1 + 5, 7, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_floor_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor01_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[15], 23, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 14, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 19, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor02_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[38], 25, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 9, 11, 13 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 24, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor03_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[63], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 10, // tri2 + 9, 5, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 15, 17, 14 // tri3 + ), + gsSPNTriangles_5b(12, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor04_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[87], 26, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 7, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 11, 14, // tri0 + 16, 17, 11, // tri1 + 18, 19, 20, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 23, 24, 21, // tri1 + 22, 25, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_wall_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_wall01_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[113], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 12, // tri1 + 16, 17, 14, // tri2 + 16, 14, 12 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 18, 22, 19, // tri2 + 18, 23, 24 // tri3 + ), + gsSPNTriangles_5b(18, 25, 23, // tri0 + 26, 27, 28, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_shop4_1_v[145], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 5, 9, 7, // tri2 + 9, 0, 7 // tri3 + ), + gsSPNTriangles_5b(5, 10, 9, // tri0 + 10, 0, 9, // tri1 + 10, 3, 0, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b(12, 13, 8, // tri0 + 13, 4, 8, // tri1 + 4, 6, 8, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 15, 20, 17 // tri3 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 21, 22, 18, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 28, // tri0 + 30, 31, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_shop4_1_v[177], 13, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(3, 2, 5, // tri0 + 4, 3, 5, // tri1 + 5, 6, 7, // tri2 + 4, 5, 7 // tri3 + ), + gsSPNTriangles_5b(8, 4, 7, // tri0 + 2, 1, 9, // tri1 + 2, 9, 10, // tri2 + 11, 6, 5 // tri3 + ), + gsSPNTriangles_5b(12, 11, 5, // tri0 + 10, 12, 5, // tri1 + 2, 10, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_wall02_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[190], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 6, 7, 4, // tri1 + 6, 4, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 10, 12, 13, // tri1 + 10, 13, 11, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_table_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_table02_tex, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[206], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_table01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_1_v[238], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_lamp_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_lamp_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_1_v[250], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_sign01_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_sign05_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_1_v[254], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_kaunta_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_kaunta02_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[258], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 10, 0, 3 // tri3 + ), + gsSPNTriangles_5b(10, 3, 11, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_reji_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji02_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[274], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji01_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[280], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 6, 7, // tri1 + 4, 7, 5, // tri2 + 6, 8, 9 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_us_sign02_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_us_sign02_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_1_v[290], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_shop4_fuku/rom_shop4_fuku.c b/src/data/field/bg/acre/rom_shop4_fuku/rom_shop4_fuku.c new file mode 100644 index 00000000..8242f70f --- /dev/null +++ b/src/data/field/bg/acre/rom_shop4_fuku/rom_shop4_fuku.c @@ -0,0 +1,604 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_shop4_1_floor_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor_tex_pal2.inc" +}; + +static u16 rom_shop4_1_base_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_base_tex_pal2.inc" +}; + +static u16 rom_shop4_1_stair_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_stair_tex_pal2.inc" +}; + +static u16 rom_shop4_1_table_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table_tex_pal2.inc" +}; + +static u16 rom_shop4_1_wall_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall_tex_pal2.inc" +}; + +static u16 rom_shop4_1_sign01_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign01_tex_pal2.inc" +}; + +static u16 rom_shop4_1_kaunta_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta_tex_pal2.inc" +}; + +static u16 rom_shop4_2_sign01_us_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_2_sign01_us_tex_pal.inc" +}; + +static u16 rom_shop4_1_us_sign02_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign02_tex_pal2.inc" +}; + +static u16 rom_shop4_1_us_sign0_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign0_tex_pal.inc" +}; + +static u16 rom_shop4_1_sign03_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign03_tex_pal2.inc" +}; + +static u16 rom_shop4_1_reji_tex_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji_tex_pal2.inc" +}; + +static u16 rom_shop_kouhaku_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop_kouhaku_pal2.inc" +}; + +static u8 rom_shop4_1_floor01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor01_tex2.inc" +}; + +static u8 rom_shop4_1_base_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_base_tex2.inc" +}; + +static u8 rom_shop4_1_stair01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_stair01_tex2.inc" +}; + +static u8 rom_shop4_1_table01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table01_tex2.inc" +}; + +static u8 rom_shop4_1_table02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_table02_tex2.inc" +}; + +static u8 rom_shop4_1_wall01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall01_tex2.inc" +}; + +static u8 rom_shop4_1_wall02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_wall02_tex2.inc" +}; + +static u8 rom_shop4_1_sign05_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign05_tex2.inc" +}; + +static u8 rom_shop4_1_kaunta01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta01_tex2.inc" +}; + +static u8 rom_shop4_1_kaunta02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_kaunta02_tex2.inc" +}; + +static u8 rom_shop4_2_us_sign01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_2_us_sign01_tex.inc" +}; + +static u8 rom_shop4_1_us_sign02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign02_tex2.inc" +}; + +static u8 rom_shop4_1_us_sign0_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_us_sign0_tex.inc" +}; + +static u8 rom_shop4_1_sign04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_sign04_tex2.inc" +}; + +static u8 rom_shop4_1_reji01_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji01_tex2.inc" +}; + +static u8 rom_shop4_1_reji02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji02_tex2.inc" +}; + +static u8 rom_shop4_1_reji03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_reji03_tex2.inc" +}; + +static u8 rom_shop4_1_floor02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor02_tex2.inc" +}; + +static u8 rom_shop4_1_floor03_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor03_tex2.inc" +}; + +static u8 rom_shop4_1_floor04_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_floor04_tex2.inc" +}; + +static u8 rom_shop4_1_shadow02_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop4_1_shadow02_tex2.inc" +}; + +static u8 rom_shop_kouhaku_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_shop_kouhaku_tex2.inc" +}; + +static Vtx rom_shop4_fuku_v[] = { +#include "assets/field/bg/rom_shop4_fuku_v.inc" +}; + +extern Gfx rom_shop4_fuku_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 140, 50, 0, 40, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_shadow02_tex, G_IM_FMT_I, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_fuku_v[346], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx rom_shop4_fuku_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_2_sign01_us_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_2_us_sign01_tex, G_IM_FMT_CI, 32, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_shop4_fuku_v[278], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_us_sign0_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_us_sign0_tex, G_IM_FMT_CI, 48, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[282], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_sign03_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_sign04_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[286], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_kaunta_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_kaunta01_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[290], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop_kouhaku_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop_kouhaku_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[296], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 0, 2 // tri2 + ), + gsSPNTriangles_5b(5, 3, 4, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 12, 13, // tri1 + 10, 13, 11, // tri2 + 12, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 15, 16, 14, // tri1 + 16, 17, 14, // tri2 + 9, 18, 6 // tri3 + ), + gsSPNTriangles_5b(9, 19, 18, // tri0 + 19, 20, 18, // tri1 + 19, 21, 20, // tri2 + 21, 22, 20 // tri3 + ), + gsSPNTriangles_5b(21, 23, 22, // tri0 + 24, 25, 26, // tri1 + 24, 27, 25, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(27, 29, 25, // tri0 + 28, 30, 31, // tri1 + 28, 31, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_shop4_fuku_v[328], 14, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 6, 7, 8, // tri1 + 6, 8, 9, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 11, 12, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_reji_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji03_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[342], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_base_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_base_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[0], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 2, // tri0 + 6, 0, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_stair_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_stair01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[7], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 3, // tri0 + 1, 6, 5, // tri1 + 5, 7, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_floor_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor01_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[15], 23, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 3, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 6, 7, 8, // tri1 + 7, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 11, // tri0 + 14, 15, 16, // tri1 + 15, 17, 16, // tri2 + 15, 14, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 20, 19, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor02_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[38], 25, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 9, 13, // tri2 + 9, 11, 13 // tri3 + ), + gsSPNTriangles_5b(10, 14, 11, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 24, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor03_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[63], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 10, // tri2 + 9, 5, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 13, 15, 14, // tri1 + 13, 16, 15, // tri2 + 15, 17, 14 // tri3 + ), + gsSPNTriangles_5b(12, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_floor04_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[87], 26, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 7, 9, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 11, 14, // tri0 + 16, 17, 11, // tri1 + 18, 19, 20, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 23, 24, 21, // tri1 + 22, 25, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_wall_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_wall01_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[113], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 5, 9, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 14, 15, 12, // tri1 + 16, 17, 14, // tri2 + 16, 14, 12 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 19, 21, 20, // tri1 + 18, 22, 19, // tri2 + 18, 23, 24 // tri3 + ), + gsSPNTriangles_5b(18, 25, 23, // tri0 + 26, 27, 28, // tri1 + 27, 29, 28, // tri2 + 29, 30, 28 // tri3 + ), + gsSPNTriangles_5b(30, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_shop4_fuku_v[145], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 7, 8, 6, // tri1 + 5, 9, 7, // tri2 + 9, 0, 7 // tri3 + ), + gsSPNTriangles_5b(5, 10, 9, // tri0 + 10, 0, 9, // tri1 + 10, 3, 0, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b(12, 13, 8, // tri0 + 13, 4, 8, // tri1 + 4, 6, 8, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 17, 16, // tri0 + 17, 18, 16, // tri1 + 18, 19, 16, // tri2 + 15, 20, 17 // tri3 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 21, 22, 18, // tri1 + 23, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(29, 26, 28, // tri0 + 30, 31, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_shop4_fuku_v[177], 13, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(3, 2, 5, // tri0 + 4, 3, 5, // tri1 + 5, 6, 7, // tri2 + 4, 5, 7 // tri3 + ), + gsSPNTriangles_5b(8, 4, 7, // tri0 + 2, 1, 9, // tri1 + 2, 9, 10, // tri2 + 11, 6, 5 // tri3 + ), + gsSPNTriangles_5b(12, 11, 5, // tri0 + 10, 12, 5, // tri1 + 2, 10, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_wall02_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[190], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(4, 0, 5, // tri0 + 6, 7, 4, // tri1 + 6, 4, 5, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 10, 12, 13, // tri1 + 10, 13, 11, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_table_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_table01_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[206], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_table02_tex, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[218], 20, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_sign01_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_sign05_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[238], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_reji_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji01_tex, G_IM_FMT_CI, 32, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[242], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 4, 5, // tri1 + 6, 5, 7, // tri2 + 8, 6, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_reji02_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[252], 6, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_kaunta_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_kaunta02_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[258], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 5, 12, 15, // tri1 + 5, 15, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_shop4_1_us_sign02_tex_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_shop4_1_us_sign02_tex, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_shop4_fuku_v[274], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_tailor/rom_tailor.c b/src/data/field/bg/acre/rom_tailor/rom_tailor.c new file mode 100644 index 00000000..d77ec18c --- /dev/null +++ b/src/data/field/bg/acre/rom_tailor/rom_tailor.c @@ -0,0 +1,930 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_tailor_wall_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_wall_pal.inc" +}; + +static u16 rom_tailor_floor_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_floor_pal.inc" +}; + +static u16 rom_tailor_mado_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_mado_pal.inc" +}; + +static u16 rom_tailor_reji_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_reji_pal.inc" +}; + +static u16 rom_tailor_dogu_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_dogu_pal.inc" +}; + +static u16 rom_tailor_misin_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misin_pal.inc" +}; + +static u16 rom_tailor_table_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_pal.inc" +}; + +static u16 rom_tailor_box_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box_pal.inc" +}; + +static u16 rom_tailor_quilt_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_quilt_pal.inc" +}; + +static u16 rom_tailor_ent_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_ent_pal.inc" +}; + +static u8 rom_tailor_wallA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_wallA_tex.inc" +}; + +static u8 rom_tailor_wallB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_wallB_tex.inc" +}; + +static u8 rom_tailor_floorA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_floorA_tex.inc" +}; + +static u8 rom_tailor_floorB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_floorB_tex.inc" +}; + +static u8 rom_tailor_floorC_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_floorC_tex.inc" +}; + +static u8 rom_tailor_floorD_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_floorD_tex.inc" +}; + +static u8 rom_tailor_kage1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_kage1_tex.inc" +}; + +static u8 rom_tailor_mado_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_mado_tex.inc" +}; + +static u8 rom_tailor_pic1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic1_tex.inc" +}; + +static u8 rom_tailor_pic2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic2_tex.inc" +}; + +static u8 rom_tailor_pic3_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic3_tex.inc" +}; + +static u8 rom_tailor_pic4_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic4_tex.inc" +}; + +static u8 rom_tailor_pic5_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic5_tex.inc" +}; + +static u8 rom_tailor_pic6_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic6_tex.inc" +}; + +static u8 rom_tailor_pic7_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic7_tex.inc" +}; + +static u8 rom_tailor_pic8_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_pic8_tex.inc" +}; + +static u8 rom_tailor_tyoki_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_tyoki_tex.inc" +}; + +static u8 rom_tailor_cloth1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_cloth1_tex.inc" +}; + +static u8 rom_tailor_misin2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misin2_tex.inc" +}; + +static u8 rom_tailor_table_mae_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_mae_tex.inc" +}; + +static u8 rom_tailor_table_yoko_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_yoko_tex.inc" +}; + +static u8 rom_tailor_table_ue_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_ue_tex.inc" +}; + +static u8 rom_tailor_ito_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_ito_tex.inc" +}; + +static u8 rom_tailor_table_reji_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_reji_tex.inc" +}; + +static u8 rom_tailor_misin1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misin1_tex.inc" +}; + +static u8 rom_tailor_misindai_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misindai_tex.inc" +}; + +static u8 rom_tailor_table_misin1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_misin1_tex.inc" +}; + +static u8 rom_tailor_reji_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_reji_tex.inc" +}; + +static u8 rom_tailor_table_misin2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_table_misin2_tex.inc" +}; + +static u8 rom_tailor_box_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box_tex.inc" +}; + +static u8 rom_tailor_box1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box1_tex.inc" +}; + +static u8 rom_tailor_box2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box2_tex.inc" +}; + +static u8 rom_tailor_box3_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box3_tex.inc" +}; + +static u8 rom_tailor_box4_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box4_tex.inc" +}; + +static u8 rom_tailor_box5_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box5_tex.inc" +}; + +static u8 rom_tailor_box6_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box6_tex.inc" +}; + +static u8 rom_tailor_box7_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box7_tex.inc" +}; + +static u8 rom_tailor_box8_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_box8_tex.inc" +}; + +static u8 rom_tailor_kage2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_kage2_tex.inc" +}; + +static u8 rom_tailor_quilt_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_quilt_tex.inc" +}; + +static u8 rom_tailor_ent_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_ent_tex.inc" +}; + +static u8 rom_tailor_misinbari1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misinbari1_tex.inc" +}; + +static u8 rom_tailor_misinbari2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_misinbari2_tex.inc" +}; + +static u8 rom_tailor_tape_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_tape_tex.inc" +}; + +static u8 rom_tailor_dogu1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_dogu1_tex.inc" +}; + +static u8 rom_tailor_dogu2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tailor_dogu2_tex.inc" +}; + +static Vtx rom_tailor_v[] = { +#include "assets/field/bg/rom_tailor_v.inc" +}; + +extern Gfx rom_tailor_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 0, 0, 30, 80), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_kage2_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_tailor_v[274], 12, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_kage1_tex, G_IM_FMT_I, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 8, 9, 10 // tri2 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_kage2_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_tailor_v[286], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +extern Gfx rom_tailor_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_table_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_misin2_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_tailor_v[290], 24, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_misin1_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_yoko_tex, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_mae_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_tailor_v[314], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_reji_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_tyoki_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[322], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_dogu_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_dogu1_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[326], 30, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_tape_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 4, 5, 6, // tri0 + 5, 7, 6, // tri1 + 5, 8, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 11, 13, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_ito_tex, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 26, 27, 28 // tri3 + ), + gsSPNTriangles_5b(26, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tailor_v[356], 24, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_misin_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_misinbari2_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[380], 8, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_misinbari1_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_misindai_tex, G_IM_FMT_CI, 64, 16, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&rom_tailor_v[388], 22, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_misin1_tex, G_IM_FMT_CI, 64, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 8, 9, 10 // tri2 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 14, // tri1 + 13, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_misin2_tex, G_IM_FMT_CI, 64, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 19, 18 // tri2 + ), + gsSPNTriangles_5b(20, 18, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_box_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box8_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[410], 28, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box6_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 6, 9, 10 // tri2 + ), + gsSPNTriangles_5b(6, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box4_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 12, 15, 16 // tri2 + ), + gsSPNTriangles_5b(12, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box2_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 18, 21, 22 // tri2 + ), + gsSPNTriangles_5b(18, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 25, 27, 26, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&rom_tailor_v[438], 16, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(3, 1, 5, // tri0 + 0, 6, 7, // tri1 + 0, 7, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_quilt_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_quilt_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[454], 24, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_mado_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic8_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 7, 4, 6, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic6_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic5_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_mado_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 17, 19, 18, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, 0, 0, 0, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsSPVertex(&rom_tailor_v[0], 8, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_wall_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_wallB_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[8], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(0, 5, 6, // tri0 + 5, 7, 6, // tri1 + 8, 9, 10, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(4, 12, 13, // tri0 + 12, 14, 13, // tri1 + 7, 5, 15, // tri2 + 5, 16, 15 // tri3 + ), + gsSPNTriangles_5b(15, 17, 10, // tri0 + 18, 1, 6, // tri1 + 1, 0, 6, // tri2 + 8, 10, 17 // tri3 + ), + gsSPNTriangles_5b(19, 12, 3, // tri0 + 12, 4, 3, // tri1 + 15, 16, 17, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 20, 22, // tri0 + 24, 25, 26, // tri1 + 27, 24, 26, // tri2 + 20, 28, 29 // tri3 + ), + gsSPNTriangles_5b(21, 20, 29, // tri0 + 30, 31, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tailor_v[40], 7, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_wallA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[47], 29, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(1, 3, 5, // tri0 + 3, 6, 7, // tri1 + 6, 8, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 13, 14, 15, // tri1 + 14, 9, 15, // tri2 + 16, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 11, 20, // tri0 + 19, 9, 11, // tri1 + 12, 20, 11, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(21, 16, 22, // tri0 + 16, 18, 22, // tri1 + 18, 23, 22, // tri2 + 24, 15, 9 // tri3 + ), + gsSPNTriangles_5b(24, 25, 15, // tri0 + 25, 13, 15, // tri1 + 16, 26, 17, // tri2 + 26, 20, 17 // tri3 + ), + gsSPNTriangles_5b(16, 19, 26, // tri0 + 19, 20, 26, // tri1 + 10, 9, 14, // tri2 + 5, 3, 7 // tri3 + ), + gsSPNTriangles_5b(27, 8, 6, // tri0 + 28, 6, 3, // tri1 + 28, 27, 6, // tri2 + 4, 2, 1 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_floor_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_floorD_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[76], 28, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(3, 1, 5, // tri0 + 6, 7, 8, // tri1 + 6, 9, 7, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(6, 11, 10, // tri0 + 7, 9, 12, // tri1 + 13, 9, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_floorC_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 17, 18, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 15, // tri0 + 20, 17, 14, // tri1 + 18, 17, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 24, 23, // tri0 + 22, 24, 26, // tri1 + 24, 25, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_floorB_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[104], 28, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 8, 6, // tri0 + 5, 9, 10, // tri1 + 11, 12, 6, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 13, 17, 18, // tri1 + 16, 14, 18, // tri2 + 14, 13, 18 // tri3 + ), + gsSPNTriangles_5b(19, 16, 18, // tri0 + 20, 21, 22, // tri1 + 20, 23, 21, // tri2 + 24, 25, 22 // tri3 + ), + gsSPNTriangles_5b(24, 23, 26, // tri0 + 24, 21, 23, // tri1 + 24, 22, 21, // tri2 + 0, 2, 27 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_floorA_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[132], 26, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 0, 4 // tri2 + ), + gsSPNTriangles_5b(3, 1, 0, // tri0 + 3, 6, 1, // tri1 + 7, 8, 9, // tri2 + 8, 10, 9 // tri3 + ), + gsSPNTriangles_5b(9, 11, 12, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(13, 19, 18, // tri0 + 16, 14, 18, // tri1 + 14, 13, 18, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 23, 24, 21, // tri1 + 25, 23, 20, // tri2 + 4, 0, 2 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_table_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_reji_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[158], 16, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 2, 1, 5, // tri1 + 2, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_table_ue_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_reji_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_reji_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tailor_v[174], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 10, 8, // tri1 + 4, 6, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_dogu_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_dogu2_tex, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&rom_tailor_v[190], 18, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 6, 5, 4, // tri1 + 6, 4, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_cloth1_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 8, 9, 10, // tri0 + 8, 11, 9, // tri1 + 11, 12, 9 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 14, 17, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_box_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box7_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_tailor_v[208], 30, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 6, 7, 5, // tri1 + 6, 5, 4, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box5_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 14, 15, 11 // tri2 + ), + gsSPNTriangles_5b(14, 11, 10, // tri0 + 16, 17, 15, // tri1 + 16, 15, 14, // tri2 + 18, 19, 17 // tri3 + ), + gsSPNTriangles_5b(18, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box3_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 23, 22, 24 // tri2 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 25, 24, 26, // tri1 + 25, 26, 27, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_box1_tex, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_tailor_v[238], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 1, 0, // tri0 + 6, 7, 5, // tri1 + 6, 5, 4, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(8, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_ent_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_ent_tex, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_tailor_v[248], 26, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tailor_mado_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic7_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 6, 7, 8, // tri0 + 6, 9, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic4_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic3_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic2_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 18, 19, 20, // tri0 + 18, 21, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tailor_pic1_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 22, 23, 24, // tri0 + 22, 25, 23, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_tent/rom_tent.c b/src/data/field/bg/acre/rom_tent/rom_tent.c new file mode 100644 index 00000000..24c36fcc --- /dev/null +++ b/src/data/field/bg/acre/rom_tent/rom_tent.c @@ -0,0 +1,524 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_tent_box_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_box_pal.inc" +}; + +static u16 rom_tent_can_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_can_pal.inc" +}; + +static u16 rom_tent_mono1_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_mono1_pal.inc" +}; + +static u16 rom_tent_gas_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_gas_pal.inc" +}; + +static u8 rom_tent_enter[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_enter.inc" +}; + +static u8 rom_tent_floor[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_floor.inc" +}; + +static u8 rom_tent_wall1[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_wall1.inc" +}; + +static u8 rom_tent_wall2[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_wall2.inc" +}; + +static u8 rom_tent_bou[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_bou.inc" +}; + +static u8 rom_tent_mono1[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_mono1.inc" +}; + +static u8 rom_tent_can[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_can.inc" +}; + +static u8 rom_tent_conpas[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_conpas.inc" +}; + +static u8 rom_tent_box[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_box.inc" +}; + +static u8 rom_tent_kage_m[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_kage_m.inc" +}; + +static u8 rom_tent_gas[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_gas.inc" +}; + +static u8 rom_tent_kage_s[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_kage_s.inc" +}; + +static u8 rom_tent_kage_b[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_tent_kage_b.inc" +}; + +static Vtx rom_tent_v[] = { +#include "assets/field/bg/rom_tent_v.inc" +}; + +extern Gfx rom_tent_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx rom_tent_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_gas_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_gas, G_IM_FMT_CI, 16, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_tent_v[187], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 9, 7, 10, // tri1 + 11, 10, 12, // tri2 + 13, 14, 11 // tri3 + ), + gsSPNTriangles_5b(6, 15, 4, // tri0 + 6, 16, 15, // tri1 + 8, 17, 16, // tri2 + 8, 16, 6 // tri3 + ), + gsSPNTriangles_5b(11, 18, 9, // tri0 + 11, 14, 18, // tri1 + 9, 18, 17, // tri2 + 9, 17, 8 // tri3 + ), + gsSPNTriangles_5b(3, 6, 4, // tri0 + 10, 11, 9, // tri1 + 12, 13, 11, // tri2 + 5, 8, 6 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 19, 20, 21, // tri1 + 19, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(23, 25, 26, // tri0 + 27, 28, 29, // tri1 + 27, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[218], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 7, 1, // tri0 + 9, 10, 11, // tri1 + 12, 4, 10, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 14, // tri0 + 17, 18, 16, // tri1 + 17, 16, 13, // tri2 + 15, 19, 20 // tri3 + ), + gsSPNTriangles_5b(15, 14, 19, // tri0 + 20, 19, 21, // tri1 + 20, 21, 22, // tri2 + 23, 18, 17 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 25, 24, 27, // tri1 + 27, 26, 25, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[250], 30, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_box_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_box, G_IM_FMT_CI, 32, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(16, // tri count + 6, 7, 8, // tri0 + 7, 9, 8, // tri1 + 10, 11, 7 // tri2 + ), + gsSPNTriangles_5b(10, 7, 12, // tri0 + 11, 13, 9, // tri1 + 11, 9, 7, // tri2 + 6, 14, 7 // tri3 + ), + gsSPNTriangles_5b(6, 15, 14, // tri0 + 16, 9, 17, // tri1 + 16, 8, 9, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(18, 20, 21, // tri0 + 22, 23, 24, // tri1 + 25, 26, 27, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(22, 29, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_can_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_conpas, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tent_v[280], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_mono1_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_mono1, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tent_v[284], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 4, 7 // tri3 + ), + gsSPNTriangles_5b(12, 7, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17, // tri2 + 16, 12, 13 // tri3 + ), + gsSPNTriangles_5b(16, 13, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23, // tri2 + 21, 23, 24 // tri3 + ), + gsSPNTriangles_5b(25, 21, 24, // tri0 + 25, 24, 26, // tri1 + 27, 25, 26, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(29, 27, 28, // tri0 + 29, 28, 30, // tri1 + 31, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[316], 13, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_can_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_bou, G_IM_FMT_CI, 8, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 11, 7, 10 // tri2 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_can, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tent_v[0], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 5, 6, 1, // tri1 + 6, 7, 1, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 9, 10, 1, // tri1 + 10, 11, 1, // tri2 + 11, 12, 1 // tri3 + ), + gsSPNTriangles_5b(12, 2, 1, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(18, 20, 19, // tri0 + 18, 21, 20, // tri1 + 21, 22, 20, // tri2 + 21, 23, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 22, // tri0 + 15, 25, 13, // tri1 + 15, 26, 25, // tri2 + 26, 27, 25 // tri3 + ), + gsSPNTriangles_5b(26, 28, 27, // tri0 + 28, 29, 27, // tri1 + 28, 30, 29, // tri2 + 30, 19, 29 // tri3 + ), + gsSPNTriangles_5b(30, 17, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[31], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 5, 6, 1, // tri1 + 6, 7, 1, // tri2 + 7, 8, 1 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 9, 10, 1, // tri1 + 10, 11, 1, // tri2 + 11, 12, 1 // tri3 + ), + gsSPNTriangles_5b(12, 3, 1, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 13, 18 // tri3 + ), + gsSPNTriangles_5b(13, 15, 18, // tri0 + 19, 18, 20, // tri1 + 19, 17, 18, // tri2 + 14, 21, 16 // tri3 + ), + gsSPNTriangles_5b(21, 22, 16, // tri0 + 23, 24, 25, // tri1 + 23, 26, 24, // tri2 + 27, 25, 28 // tri3 + ), + gsSPNTriangles_5b(27, 23, 25, // tri0 + 29, 20, 30, // tri1 + 29, 19, 20, // tri2 + 30, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[62], 32, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 1, 6, 5, // tri1 + 1, 7, 6, // tri2 + 0, 8, 1 // tri3 + ), + gsSPNTriangles_5b(8, 9, 1, // tri0 + 9, 10, 1, // tri1 + 10, 11, 1, // tri2 + 11, 12, 1 // tri3 + ), + gsSPNTriangles_5b(12, 7, 1, // tri0 + 13, 14, 15, // tri1 + 13, 16, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 18, 19, 17, // tri1 + 18, 20, 19, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 15, 23, 13, // tri1 + 15, 24, 23, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b(25, 26, 23, // tri0 + 25, 27, 26, // tri1 + 27, 28, 26, // tri2 + 27, 29, 28 // tri3 + ), + gsSPNTriangles_5b(29, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_tent_v[93], 31, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 6, 5, 7, // tri1 + 6, 4, 5, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(8, 6, 7, // tri0 + 10, 11, 12, // tri1 + 11, 13, 12, // tri2 + 1, 10, 3 // tri3 + ), + gsSPNTriangles_5b(10, 12, 3, // tri0 + 14, 15, 16, // tri1 + 14, 17, 15, // tri2 + 9, 16, 8 // tri3 + ), + gsSPNTriangles_5b(9, 14, 16, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19, // tri2 + 21, 22, 19 // tri3 + ), + gsSPNTriangles_5b(22, 23, 19, // tri0 + 23, 24, 19, // tri1 + 24, 25, 19, // tri2 + 25, 26, 19 // tri3 + ), + gsSPNTriangles_5b(26, 27, 19, // tri0 + 27, 28, 19, // tri1 + 28, 29, 19, // tri2 + 29, 30, 19 // tri3 + ), + gsSPNTriangles_5b(30, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_wall2, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tent_v[124], 24, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(6, 8, 7, // tri0 + 5, 9, 6, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 11, // tri0 + 15, 16, 17, // tri1 + 15, 4, 16, // tri2 + 4, 3, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 7, 19, // tri1 + 7, 8, 19, // tri2 + 21, 22, 13 // tri3 + ), + gsSPNTriangles_5b(22, 14, 13, // tri0 + 21, 23, 22, // tri1 + 0, 2, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_wall1, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_tent_v[148], 24, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 9, 7, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 9, 15, 7, // tri1 + 15, 6, 7, // tri2 + 1, 16, 3 // tri3 + ), + gsSPNTriangles_5b(16, 17, 3, // tri0 + 13, 18, 11, // tri1 + 18, 19, 11, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(21, 11, 19, // tri0 + 22, 23, 17, // tri1 + 23, 3, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_floor, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_tent_v[172], 15, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 0, // tri1 + 0, 7, 3, // tri2 + 7, 8, 3 // tri3 + ), + gsSPNTriangles_5b(9, 6, 2, // tri0 + 6, 0, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_tent_box_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_enter, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 10, 11, 12, // tri0 + 13, 14, 10, // tri1 + 13, 10, 12 // tri2 + ), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 120, 40, 0, 40, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_kage_b, G_IM_FMT_I, 32, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_tent_v[329], 20, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_kage_s, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_tent_kage_m, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_toudai/rom_toudai.c b/src/data/field/bg/acre/rom_toudai/rom_toudai.c new file mode 100644 index 00000000..b7859c54 --- /dev/null +++ b/src/data/field/bg/acre/rom_toudai/rom_toudai.c @@ -0,0 +1,212 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_toudai_yuka_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_yuka_pal.inc" +}; + +static u16 rom_toudai_kabe_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_kabe_pal.inc" +}; + +static u16 rom_toudai_step_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_step_pal.inc" +}; + +static u16 rom_toudai_meka_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_meka_pal.inc" +}; + +static u16 rom_toudai_ukiwa_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_ukiwa_pal.inc" +}; + +static u8 rom_toudai_yuka_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_yuka_tex.inc" +}; + +static u8 rom_toudai_kabeA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_kabeA_tex.inc" +}; + +static u8 rom_toudai_kabeB_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_kabeB_tex.inc" +}; + +static u8 rom_toudai_step_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_step_tex.inc" +}; + +static u8 rom_toudai_mekaA_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_mekaA_tex.inc" +}; + +static u8 rom_toudai_ukiwa_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_ukiwa_tex.inc" +}; + +static u8 rom_toudai_kage1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_kage1_tex.inc" +}; + +static u8 rom_toudai_mekaC_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_mekaC_tex.inc" +}; + +static u8 rom_toudai_kage2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_toudai_kage2_tex.inc" +}; + +static Vtx rom_toudai_v[] = { +#include "assets/field/bg/rom_toudai_v.inc" +}; + +extern Gfx rom_toudai_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx rom_toudai_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_toudai_meka_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_mekaC_tex, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_toudai_v[66], 11, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(0, 6, 4, // tri0 + 7, 8, 9, // tri1 + 8, 10, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_mekaA_tex, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_toudai_v[77], 22, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 8, 11 // tri3 + ), + gsSPNTriangles_5b(20, 11, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_toudai_ukiwa_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_ukiwa_tex, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_toudai_v[99], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_toudai_yuka_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_yuka_tex, G_IM_FMT_CI, 64, 64, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_toudai_v[0], 19, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 1, 0, 5 // tri2 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 0, 4, 7, // tri1 + 0, 8, 3, // tri2 + 9, 10, 0 // tri3 + ), + gsSPNTriangles_5b(10, 11, 0, // tri0 + 11, 12, 0, // tri1 + 12, 13, 0, // tri2 + 14, 15, 0 // tri3 + ), + gsSPNTriangles_5b(15, 16, 0, // tri0 + 16, 17, 0, // tri1 + 17, 18, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_toudai_step_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_step_tex, G_IM_FMT_CI, 64, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rom_toudai_v[19], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(5, 4, 2, // tri0 + 6, 4, 5, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_toudai_kabe_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_kabeB_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPVertex(&rom_toudai_v[27], 31, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 6, 7, 8, // tri1 + 9, 6, 8, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(10, 8, 12, // tri0 + 9, 13, 14, // tri1 + 9, 14, 15, // tri2 + 16, 12, 15 // tri3 + ), + gsSPNTriangles_5b(14, 16, 15, // tri0 + 11, 13, 9, // tri1 + 8, 11, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_kabeA_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 17, 18, 19, // tri0 + 20, 17, 19, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(24, 21, 23, // tri0 + 25, 26, 27, // tri1 + 25, 27, 28, // tri2 + 24, 26, 25 // tri3 + ), + gsSPNTriangles_5b(21, 24, 25, // tri0 + 29, 23, 22, // tri1 + 29, 22, 30, // tri2 + 18, 17, 28 // tri3 + ), + gsSPNTriangles_5b(18, 28, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 110, 0, 0, 30, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_kage2_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_toudai_v[58], 8, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_toudai_kage1_tex, G_IM_FMT_I, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_train_in/rom_train_in.c b/src/data/field/bg/acre/rom_train_in/rom_train_in.c new file mode 100644 index 00000000..250ebae6 --- /dev/null +++ b/src/data/field/bg/acre/rom_train_in/rom_train_in.c @@ -0,0 +1,621 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_train_1_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_1_pal.inc" +}; + +static u16 rom_train_2_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_2_pal.inc" +}; + +static u16 rom_train_3_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_3_pal.inc" +}; + +static u8 rom_train_seat1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_seat1_tex.inc" +}; + +static u8 rom_train_seat2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_seat2_tex.inc" +}; + +static u8 rom_train_floor_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_floor_tex.inc" +}; + +static u8 rom_train_wall1_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_wall1_tex.inc" +}; + +static u8 rom_train_roof_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_roof_tex.inc" +}; + +static u8 rom_train_wall2_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_wall2_tex.inc" +}; + +static u8 rom_train_net_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_net_tex.inc" +}; + +static u8 rom_train_glass_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_glass_tex.inc" +}; + +static u8 rom_train_light_tex[] ATTRIBUTE_ALIGN(32) = { +#include "assets/field/bg/rom_train_light_tex.inc" +}; + +static Vtx rom_train_in_v[] = { +#include "assets/field/bg/rom_train_in_v.inc" +}; + +extern Gfx rom_train_in_modelT[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetEnvColor(0x64, 0xE6, 0xFF, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_glass_tex, G_IM_FMT_I, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_train_in_v[479], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetCombineMode(G_CC_BLENDPEDECALA, G_CC_PASS2), + gsDPSetEnvColor(0xFF, 0xFF, 0x78, 0xFF), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_light_tex, G_IM_FMT_I, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_train_in_v[511], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +extern Gfx rom_train_in_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_train_1_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_seat1_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_train_in_v[213], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 0, 4, // tri0 + 5, 6, 7, // tri1 + 5, 7, 8, // tri2 + 9, 10, 6 // tri3 + ), + gsSPNTriangles_5b(9, 6, 5, // tri0 + 11, 12, 13, // tri1 + 11, 13, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 15, 19, 16, // tri1 + 19, 18, 16, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 21, 18, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25, // tri2 + 25, 24, 26 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 29, 23, // tri1 + 28, 23, 22, // tri2 + 30, 22, 25 // tri3 + ), + gsSPNTriangles_5b(30, 25, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[245], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 9, 1, // tri2 + 1, 9, 4 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 10, 11, 12, // tri1 + 10, 12, 13, // tri2 + 14, 10, 13 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 16, 10, 14, // tri1 + 16, 14, 15, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 21, 22, 23, // tri1 + 21, 23, 24, // tri2 + 25, 26, 22 // tri3 + ), + gsSPNTriangles_5b(25, 22, 21, // tri0 + 27, 28, 29, // tri1 + 27, 30, 28, // tri2 + 28, 31, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[277], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 6, // tri1 + 5, 7, 8, // tri2 + 7, 9, 10 // tri3 + ), + gsSPNTriangles_5b(7, 10, 8, // tri0 + 11, 12, 13, // tri1 + 11, 13, 14, // tri2 + 15, 16, 12 // tri3 + ), + gsSPNTriangles_5b(15, 12, 11, // tri0 + 14, 13, 17, // tri1 + 14, 17, 18, // tri2 + 19, 11, 14 // tri3 + ), + gsSPNTriangles_5b(19, 14, 20, // tri0 + 21, 22, 23, // tri1 + 21, 23, 24, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(25, 27, 22, // tri0 + 23, 28, 29, // tri1 + 23, 29, 30, // tri2 + 22, 27, 28 // tri3 + ), + gsSPNTriangles_5b(22, 28, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[308], 11, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 4, // tri0 + 4, 3, 6, // tri1 + 5, 4, 6, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(7, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_train_3_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_net_tex, G_IM_FMT_CI, 128, 32, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsSPVertex(&rom_train_in_v[319], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[351], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[383], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[415], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[447], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 26, // tri1 + 24, 26, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(28, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_train_1_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_seat2_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_train_in_v[0], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 8, 10, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 12, 8, // tri0 + 13, 14, 15, // tri1 + 14, 16, 15, // tri2 + 17, 13, 18 // tri3 + ), + gsSPNTriangles_5b(13, 19, 18, // tri0 + 13, 15, 19, // tri1 + 15, 20, 19, // tri2 + 15, 21, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 22, 24, // tri1 + 25, 24, 26, // tri2 + 27, 25, 26 // tri3 + ), + gsSPNTriangles_5b(27, 26, 28, // tri0 + 24, 29, 30, // tri1 + 24, 30, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[31], 26, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(4, 3, 0, // tri0 + 5, 6, 7, // tri1 + 5, 7, 8, // tri2 + 6, 9, 7 // tri3 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 10, 13, 14, // tri2 + 13, 15, 11 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 16, 19, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 21, 23, 25, // tri1 + 23, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTLUT_Dolphin(15, 16, 1, rom_train_2_pal), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_wall1_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsSPVertex(&rom_train_in_v[57], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 1, 4, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 4, 6, 5, // tri1 + 6, 7, 5, // tri2 + 5, 8, 9 // tri3 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 10, 11, 5, // tri1 + 10, 5, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 17, 18, 19, // tri1 + 17, 19, 20, // tri2 + 6, 21, 7 // tri3 + ), + gsSPNTriangles_5b(21, 22, 7, // tri0 + 23, 24, 25, // tri1 + 23, 25, 26, // tri2 + 27, 28, 22 // tri3 + ), + gsSPNTriangles_5b(27, 22, 29, // tri0 + 22, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[89], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 16, 14, 13, // tri1 + 18, 13, 19, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 25, 13, 15, // tri2 + 25, 15, 26 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 27, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[120], 17, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 5, // tri1 + 10, 8, 5, // tri2 + 5, 9, 11 // tri3 + ), + gsSPNTriangles_5b(5, 11, 12, // tri0 + 13, 5, 12, // tri1 + 13, 12, 14, // tri2 + 15, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_roof_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPVertex(&rom_train_in_v[137], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 3, 4, 1 // tri2 + ), + gsSPNTriangles_5b(4, 5, 1, // tri0 + 2, 1, 6, // tri1 + 1, 7, 6, // tri2 + 1, 8, 7 // tri3 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 8, 9, 7, // tri1 + 8, 10, 9, // tri2 + 9, 6, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 6, // tri0 + 11, 9, 12, // tri1 + 9, 13, 12, // tri2 + 9, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 10, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_wall2_tex, G_IM_FMT_CI, 64, 64, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsSPVertex(&rom_train_in_v[152], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 5, // tri0 + 3, 5, 6, // tri1 + 7, 3, 6, // tri2 + 7, 6, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 11, // tri1 + 10, 13, 12, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 15, 16, 12, // tri1 + 15, 17, 16, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(19, 21, 20, // tri0 + 22, 23, 24, // tri1 + 23, 25, 24, // tri2 + 26, 22, 24 // tri3 + ), + gsSPNTriangles_5b(20, 27, 24, // tri0 + 20, 28, 27, // tri1 + 27, 26, 24, // tri2 + 21, 28, 20 // tri3 + ), + gsSPNTriangles_5b(29, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rom_train_in_v[184], 10, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 2, 4, 3, // tri1 + 7, 8, 5, // tri2 + 7, 5, 9 // tri3 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 9, 4, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(rom_train_floor_tex, G_IM_FMT_CI, 64, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&rom_train_in_v[194], 19, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 7, 8, 3, // tri1 + 2, 7, 3, // tri2 + 7, 9, 8 // tri3 + ), + gsSPNTriangles_5b(7, 10, 9, // tri0 + 11, 12, 9, // tri1 + 11, 9, 13, // tri2 + 9, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 10, 14, // tri0 + 10, 15, 14, // tri1 + 10, 16, 15, // tri2 + 13, 14, 17 // tri3 + ), + gsSPNTriangles_5b(14, 18, 17, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_uranai/rom_uranai.c b/src/data/field/bg/acre/rom_uranai/rom_uranai.c new file mode 100644 index 00000000..eb331d11 --- /dev/null +++ b/src/data/field/bg/acre/rom_uranai/rom_uranai.c @@ -0,0 +1,399 @@ +#include "libforest/gbi_extensions.h" + +static u16 rom_uranai_floor_tex_pal[] = { +#include "assets/field/bg/rom_uranai_floor_tex_pal.inc" +}; + +static u16 rom_uranai_wall_tex_pal[] = { +#include "assets/field/bg/rom_uranai_wall_tex_pal.inc" +}; + +static u16 rom_uranai_table_tex_pal[] = { +#include "assets/field/bg/rom_uranai_table_tex_pal.inc" +}; + +static u16 rom_uranai_tubo_tex_pal[] = { +#include "assets/field/bg/rom_uranai_tubo_tex_pal.inc" +}; + +static u16 rom_uranai_stand_tex_pal[] = { +#include "assets/field/bg/rom_uranai_stand_tex_pal.inc" +}; + +static u16 rom_uranai_tex_nuno_pal[] = { +#include "assets/field/bg/rom_uranai_tex_nuno_pal.inc" +}; + +static u16 rom_uranai_tex_bace_pal[] = { +#include "assets/field/bg/rom_uranai_tex_bace_pal.inc" +}; + +static u16 rom_uranai_card_tex_pal[] = { +#include "assets/field/bg/rom_uranai_card_tex_pal.inc" +}; + +static u8 rom_uranai_floor_tex[] = { +#include "assets/field/bg/rom_uranai_floor_tex.inc" +}; + +static u8 rom_uranai_wall01_tex[] = { +#include "assets/field/bg/rom_uranai_wall01_tex.inc" +}; + +static u8 rom_uranai_wall02_tex[] = { +#include "assets/field/bg/rom_uranai_wall02_tex.inc" +}; + +static u8 rom_uranai_wall03_tex[] = { +#include "assets/field/bg/rom_uranai_wall03_tex.inc" +}; + +static u8 rom_uranai_table01_tex[] = { +#include "assets/field/bg/rom_uranai_table01_tex.inc" +}; + +static u8 rom_uranai_table02_tex[] = { +#include "assets/field/bg/rom_uranai_table02_tex.inc" +}; + +static u8 rom_uranai_tubo_tex[] = { +#include "assets/field/bg/rom_uranai_tubo_tex.inc" +}; + +static u8 rom_uranai_shadow01_tex[] = { +#include "assets/field/bg/rom_uranai_shadow01_tex.inc" +}; + +static u8 rom_uranai_vell_tex[] = { +#include "assets/field/bg/rom_uranai_vell_tex.inc" +}; + +static u8 rom_uranai_vell02_tex[] = { +#include "assets/field/bg/rom_uranai_vell02_tex.inc" +}; + +static u8 rom_uranai_stand01_tex[] = { +#include "assets/field/bg/rom_uranai_stand01_tex.inc" +}; + +static u8 rom_uranai_nuno01_tex[] = { +#include "assets/field/bg/rom_uranai_nuno01_tex.inc" +}; + +static u8 rom_uranai_nuno02_tex[] = { +#include "assets/field/bg/rom_uranai_nuno02_tex.inc" +}; + +static u8 rom_uranai_bace_tex[] = { +#include "assets/field/bg/rom_uranai_bace_tex.inc" +}; + +static u8 rom_uranai_card01_tex[] = { +#include "assets/field/bg/rom_uranai_card01_tex.inc" +}; + +static u8 rom_uranai_shadow02_tex[] = { +#include "assets/field/bg/rom_uranai_shadow02_tex.inc" +}; + +static u8 rom_uranai_card02_tex[] = { +#include "assets/field/bg/rom_uranai_card02_tex.inc" +}; + +static u8 rom_uranai_cris02_tex[] = { +#include "assets/field/bg/rom_uranai_cris02_tex.inc" +}; + +static u8 rom_uranai_cris01_tex_rgb_ia8[] = { +#include "assets/field/bg/rom_uranai_cris01_tex_rgb_ia8.inc" +}; + +static u8 rom_uranai_hi02_tex_rgb_i4[] = { +#include "assets/field/bg/rom_uranai_hi02_tex_rgb_i4.inc" +}; + +static u8 rom_uranai_hi03_tex_rgb_i4[] = { +#include "assets/field/bg/rom_uranai_hi03_tex_rgb_i4.inc" +}; + +static Vtx rom_uranai_v[] = { +#include "assets/field/bg/rom_uranai_v.inc" +}; + +extern Gfx rom_uranai_modelT[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 150, 20, 0, 30, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(rom_uranai_shadow02_tex, G_IM_FMT_I, 16, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_uranai_v[224], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsDPPipeSync(), + gsDPSetPrimColor(0, 120, 10, 0, 30, 255), + gsDPPipeSync(), + gsDPLoadTextureBlock_4b(rom_uranai_shadow01_tex, G_IM_FMT_I, 16, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[232], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0, 0, 0, 0, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 255, 255, 255, 80), + gsDPSetEnvColor(0x64, 0xFF, 0x00, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPPipeSync(), + gsDPLoadTextureBlock_4b(rom_uranai_vell02_tex, G_IM_FMT_I, 32, 64, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[240], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsDPPipeSync(), + gsDPSetPrimColor(0, 255, 255, 255, 255, 100), + gsDPSetEnvColor(0xFF, 0x00, 0x00, 0xFF), + gsDPPipeSync(), + gsDPLoadTextureBlock_4b(rom_uranai_vell_tex, G_IM_FMT_I, 32, 64, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[248], 24, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(2, 4, 5, 0, 2, 5, 3, 0), + gsSP2Triangles(4, 6, 7, 0, 4, 7, 5, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(10, 1, 0, 0, 10, 0, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 14, 15, 0), + gsSP2Triangles(14, 16, 17, 0, 14, 17, 15, 0), + gsSP2Triangles(16, 18, 19, 0, 16, 19, 17, 0), + gsSP2Triangles(19, 18, 20, 0, 19, 20, 21, 0), + gsSP2Triangles(20, 22, 23, 0, 20, 23, 21, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(0, 0, 0, PRIMITIVE, TEXEL0, 0, PRIM_LOD_FRAC, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 120, 10, 0, 30, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_DECAL2), + gsDPPipeSync(), + gsDPLoadTextureBlock_4b(rom_uranai_shadow01_tex, G_IM_FMT_I, 16, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[272], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL1, TEXEL0, PRIM_LOD_FRAC, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, ENVIRONMENT, COMBINED, + ENVIRONMENT, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 0, 255, 150, 0, 255), + gsDPSetEnvColor(0xFF, 0x96, 0x00, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b(rom_uranai_hi02_tex_rgb_i4, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(rom_uranai_hi03_tex_rgb_i4, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x09000000), + gsSPVertex(&rom_uranai_v[280], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSPTexture(4000, 4000, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, TEXEL1, TEXEL0, TEXEL1, TEXEL0, 0, TEXEL1, 0, 0, 0, 0, COMBINED, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 128, 200, 255, 255, 120), + gsDPLoadTextureBlock(rom_uranai_cris01_tex_rgb_ia8, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 5, 5, 1, 1), + gsDPLoadMultiBlock(rom_uranai_cris02_tex, 0x0080, 1, G_IM_FMT_RGBA, G_IM_SIZ_16b, 32, 32, 0, + G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, 2, 2), + gsSPDisplayList(0x0A000000), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_SHADING_SMOOTH), + gsSPVertex(&rom_uranai_v[288], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(0, 4, 3, 0, 3, 5, 6, 0), + gsSP2Triangles(3, 4, 5, 0, 5, 7, 6, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 11, 9, 0), + gsSP2Triangles(9, 12, 10, 0, 6, 13, 8, 0), + gsSP2Triangles(6, 7, 13, 0, 13, 11, 8, 0), + gsSP2Triangles(14, 10, 12, 0, 14, 15, 10, 0), + gsSP2Triangles(14, 16, 15, 0, 17, 15, 16, 0), + gsSP2Triangles(17, 1, 15, 0, 17, 2, 1, 0), + gsSP2Triangles(3, 18, 1, 0, 19, 3, 6, 0), + gsSP2Triangles(20, 6, 8, 0, 21, 8, 10, 0), + gsSP2Triangles(15, 22, 10, 0, 1, 23, 15, 0), + gsSP2Triangles(19, 6, 20, 0, 18, 3, 19, 0), + gsSP2Triangles(1, 18, 23, 0, 10, 22, 21, 0), + gsSP2Triangles(20, 8, 21, 0, 15, 23, 22, 0), + gsSP2Triangles(24, 19, 20, 0, 24, 18, 19, 0), + gsSP2Triangles(18, 24, 23, 0, 23, 24, 22, 0), + gsSP2Triangles(24, 20, 21, 0, 22, 24, 21, 0), + gsSP2Triangles(25, 12, 9, 0, 25, 9, 26, 0), + gsSP2Triangles(11, 27, 26, 0, 11, 26, 9, 0), + gsSP2Triangles(13, 28, 27, 0, 13, 27, 11, 0), + gsSP2Triangles(7, 29, 28, 0, 7, 28, 13, 0), + gsSP2Triangles(5, 30, 29, 0, 5, 29, 7, 0), + gsSP2Triangles(4, 31, 30, 0, 4, 30, 5, 0), + gsSPVertex(&rom_uranai_v[320], 14, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(1, 4, 5, 0, 1, 5, 2, 0), + gsSP2Triangles(4, 6, 7, 0, 4, 7, 5, 0), + gsSP2Triangles(6, 8, 9, 0, 6, 9, 7, 0), + gsSP2Triangles(8, 10, 11, 0, 8, 11, 9, 0), + gsSP2Triangles(10, 12, 13, 0, 10, 13, 11, 0), + gsSPEndDisplayList(), +}; + +extern Gfx rom_uranai_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, rom_uranai_floor_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_floor_tex, G_IM_FMT_CI, 64, 64, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&rom_uranai_v[0], 18, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 4, 1, 0, 4, 3, 1, 0), + gsSP2Triangles(5, 3, 6, 0, 3, 4, 6, 0), + gsSP2Triangles(4, 7, 6, 0, 8, 9, 10, 0), + gsSP2Triangles(9, 0, 10, 0, 0, 11, 10, 0), + gsSP2Triangles(12, 0, 13, 0, 0, 2, 13, 0), + gsSP2Triangles(2, 14, 13, 0, 15, 2, 16, 0), + gsSP2Triangles(2, 3, 16, 0, 3, 17, 16, 0), + gsSP2Triangles(2, 15, 14, 0, 8, 7, 4, 0), + gsSP2Triangles(3, 5, 17, 0, 11, 0, 12, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_wall_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_wall01_tex, G_IM_FMT_CI, 48, 64, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[18], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(3, 4, 2, 0, 5, 6, 7, 0), + gsSP2Triangles(6, 8, 7, 0, 8, 9, 7, 0), + gsSP2Triangles(10, 11, 12, 0, 10, 13, 11, 0), + gsSP2Triangles(13, 14, 11, 0, 15, 16, 17, 0), + gsSP2Triangles(16, 18, 17, 0, 16, 19, 18, 0), + gsSP2Triangles(20, 21, 22, 0, 20, 10, 21, 0), + gsSP2Triangles(10, 23, 21, 0, 24, 25, 26, 0), + gsSP2Triangles(24, 27, 25, 0, 25, 28, 26, 0), + gsSP1Triangle(29, 30, 31, 0), + gsSPVertex(&rom_uranai_v[50], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(7, 8, 6, 0, 9, 10, 11, 0), + gsSP2Triangles(9, 12, 10, 0, 12, 13, 10, 0), + gsSP2Triangles(14, 15, 16, 0, 14, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 18, 20, 21, 0), + gsSP2Triangles(9, 22, 23, 0, 9, 23, 24, 0), + gsSP2Triangles(25, 26, 27, 0, 26, 28, 27, 0), + gsSP2Triangles(28, 29, 27, 0, 30, 2, 31, 0), + gsSP1Triangle(2, 1, 31, 0), + gsSPVertex(&rom_uranai_v[82], 18, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 5, 6, 0, 4, 7, 8, 0), + gsSP2Triangles(4, 8, 5, 0, 8, 9, 5, 0), + gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0), + gsSP2Triangles(10, 13, 14, 0, 11, 15, 16, 0), + gsSP2Triangles(11, 16, 12, 0, 11, 17, 15, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_wall_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_wall03_tex, G_IM_FMT_CI, 32, 64, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[100], 6, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 1, 0, 4, 1, 0, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_table_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_table01_tex, G_IM_FMT_CI, 16, 16, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[106], 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_tex_nuno_pal), + gsDPLoadTextureBlock_4b(rom_uranai_nuno01_tex, G_IM_FMT_CI, 16, 16, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 4, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[110], 7, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 4, 1, 0, 4, 5, 1, 0), + gsSP2Triangles(5, 6, 1, 0, 6, 3, 1, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_tex_bace_pal), + gsDPLoadTextureBlock_4b(rom_uranai_bace_tex, G_IM_FMT_CI, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[117], 5, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 3, 0, 0), + gsSP1Triangle(0, 4, 1, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_wall_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_wall02_tex, G_IM_FMT_CI, 32, 64, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[122], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(2, 4, 5, 0, 2, 5, 3, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(8, 10, 11, 0, 8, 11, 9, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_table_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_table02_tex, G_IM_FMT_CI, 16, 16, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[134], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_card_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_card01_tex, G_IM_FMT_CI, 32, 32, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[146], 14, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 2, 1, 0, 8, 1, 9, 0), + gsSP2Triangles(10, 11, 12, 0, 10, 12, 13, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_card_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_card02_tex, G_IM_FMT_CI, 48, 48, 15, G_TX_MIRROR | G_TX_CLAMP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[160], 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_tubo_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_tubo_tex, G_IM_FMT_CI, 16, 64, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[164], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(3, 4, 2, 0, 4, 5, 2, 0), + gsSP2Triangles(6, 7, 8, 0, 7, 9, 8, 0), + gsSP2Triangles(9, 10, 8, 0, 10, 11, 8, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_stand_tex_pal), + gsDPLoadTextureBlock_4b(rom_uranai_stand01_tex, G_IM_FMT_CI, 16, 64, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[176], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(1, 4, 5, 0, 1, 5, 2, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(7, 10, 11, 0, 7, 11, 8, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rom_uranai_tex_nuno_pal), + gsDPLoadTextureBlock_4b(rom_uranai_nuno02_tex, G_IM_FMT_CI, 16, 16, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 4, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&rom_uranai_v[188], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(0, 3, 4, 0, 5, 1, 0, 0), + gsSP2Triangles(5, 0, 6, 0, 5, 6, 7, 0), + gsSP2Triangles(0, 8, 9, 0, 0, 9, 6, 0), + gsSP2Triangles(4, 10, 8, 0, 4, 8, 0, 0), + gsSP2Triangles(11, 12, 13, 0, 11, 13, 14, 0), + gsSP2Triangles(13, 15, 16, 0, 13, 16, 14, 0), + gsSP2Triangles(15, 17, 18, 0, 15, 18, 16, 0), + gsSP2Triangles(19, 11, 14, 0, 19, 14, 16, 0), + gsSP2Triangles(19, 16, 20, 0, 16, 18, 21, 0), + gsSP2Triangles(16, 21, 20, 0, 22, 23, 24, 0), + gsSP2Triangles(22, 24, 25, 0, 24, 26, 27, 0), + gsSP2Triangles(24, 27, 25, 0, 26, 28, 29, 0), + gsSP2Triangles(26, 29, 27, 0, 23, 30, 31, 0), + gsSP2Triangles(23, 31, 26, 0, 23, 26, 24, 0), + gsSPVertex(&rom_uranai_v[220], 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c b/src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c new file mode 100644 index 00000000..b5f3a87b --- /dev/null +++ b/src/data/field/bg/acre/rom_uranai/rom_uranai_evw_anime.c @@ -0,0 +1,10 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL rom_uranai_evw_anime_2[] = { { 0, 0, 32, 32 }, { 0, 12, 32, 32 } }; + +static EVW_ANIME_SCROLL rom_uranai_evw_anime_3[] = { { 0, 0, 32, 32 }, { 1, 1, 32, 32 } }; + +extern EVW_ANIME_DATA rom_uranai_evw_anime[] = { + { 2, EVW_ANIME_TYPE_SCROLL2, rom_uranai_evw_anime_2 }, + { -3, EVW_ANIME_TYPE_SCROLL2, rom_uranai_evw_anime_3 }, +}; diff --git a/src/data/field/bg/acre/room01/room01.c b/src/data/field/bg/acre/room01/room01.c new file mode 100644 index 00000000..3b9498f5 --- /dev/null +++ b/src/data/field/bg/acre/room01/room01.c @@ -0,0 +1,96 @@ +#include "libforest/gbi_extensions.h" + +static u16 room[] = { +#include "assets/field/bg/room.inc" +}; + +static u8 room_floor[] = { +#include "assets/field/bg/room_floor.inc" +}; + +static u8 room_wall[] = { +#include "assets/field/bg/room_wall.inc" +}; + +static u8 room_window[] = { +#include "assets/field/bg/room_window.inc" +}; + +static Vtx room01_v[] = { +#include "assets/field/bg/room01_v.inc" +}; + +static Gfx room01_grp_room01__edge[] = { + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_pal16(15, room), + gsDPLoadTextureBlock_4b(room_window, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&room01_v[80], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSPEndDisplayList(), +}; + +static Gfx room01_grp_room_out01[] = { + gsDPPipeSync(), + gsDPSetCombineMode(G_CC_PRIMITIVE, G_CC_PASS2), + gsSPVertex(&room01_v[72], 8, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 7, 5, 0), + gsSPEndDisplayList(), +}; + +static Gfx room01_grp_room01[] = { + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_pal16(15, room), + gsDPLoadTextureBlock_4b(room_wall, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 6, + 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&room01_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 0, 0), + gsSP2Triangles(0, 5, 1, 0, 0, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 7, 9, 8, 0), + gsSP2Triangles(10, 11, 12, 0, 11, 13, 12, 0), + gsSP2Triangles(14, 15, 16, 0, 15, 17, 16, 0), + gsSP2Triangles(18, 19, 20, 0, 19, 21, 20, 0), + gsSP2Triangles(22, 23, 24, 0, 23, 25, 24, 0), + gsSP2Triangles(23, 26, 25, 0, 26, 27, 25, 0), + gsSP2Triangles(26, 28, 27, 0, 29, 30, 31, 0), + gsSPVertex(&room01_v[32], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(1, 4, 3, 0, 4, 5, 3, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 9, 7, 0), + gsSP2Triangles(9, 10, 7, 0, 10, 11, 7, 0), + gsDPLoadTLUT_pal16(15, room), + gsDPLoadTextureBlock_4b(room_floor, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, + 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&room01_v[44], 28, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 8, 7, 9, 0), + gsSP2Triangles(4, 10, 11, 0, 6, 11, 12, 0), + gsSP2Triangles(13, 11, 6, 0, 4, 11, 13, 0), + gsSP2Triangles(14, 15, 13, 0, 16, 17, 14, 0), + gsSP2Triangles(17, 18, 19, 0, 17, 19, 14, 0), + gsSP2Triangles(19, 15, 14, 0, 20, 21, 22, 0), + gsSP2Triangles(20, 23, 21, 0, 17, 24, 22, 0), + gsSP2Triangles(5, 15, 25, 0, 5, 13, 15, 0), + gsSP2Triangles(5, 26, 13, 0, 15, 21, 25, 0), + gsSP2Triangles(15, 19, 21, 0, 19, 18, 21, 0), + gsSP2Triangles(27, 8, 13, 0, 8, 14, 13, 0), + gsSP2Triangles(8, 16, 14, 0, 17, 9, 24, 0), + gsSPEndDisplayList(), +}; + +extern Gfx room01_model[] = { + gsDPPipeSync(), + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_NOOP, G_RM_AA_ZB_TEX_EDGE2), + gsSPClearGeometryMode(G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR), + gsSPSetGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_SHADING_SMOOTH), + gsDPSetTextureLUT(G_TT_RGBA16), + gsSPDisplayList(room01_grp_room01), + gsSPDisplayList(room01_grp_room_out01), + gsSPDisplayList(room01_grp_room01__edge), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmp/tmp.c b/src/data/field/bg/acre/tmp/tmp.c new file mode 100644 index 00000000..401698a4 --- /dev/null +++ b/src/data/field/bg/acre/tmp/tmp.c @@ -0,0 +1,37 @@ +#include "libforest/gbi_extensions.h" + +extern u8 grass_tex_dummy[]; + +static Vtx tmp_v[] = { +#include "assets/field/bg/tmp_v.inc" +}; + +extern Gfx tmp_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx tmp_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&tmp_v[0], 28, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 3, 0, 4, 3, 6, 0), + gsSP2Triangles(7, 0, 8, 0, 7, 8, 9, 0), + gsSP2Triangles(10, 7, 9, 0, 10, 9, 11, 0), + gsSP2Triangles(12, 4, 6, 0, 12, 6, 13, 0), + gsSP2Triangles(14, 10, 11, 0, 14, 11, 15, 0), + gsSP2Triangles(16, 12, 13, 0, 16, 13, 17, 0), + gsSP2Triangles(18, 14, 15, 0, 18, 15, 19, 0), + gsSP2Triangles(20, 16, 17, 0, 20, 17, 21, 0), + gsSP2Triangles(22, 18, 19, 0, 22, 19, 23, 0), + gsSP2Triangles(24, 20, 21, 0, 24, 21, 25, 0), + gsSP2Triangles(26, 8, 5, 0, 26, 5, 27, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmp2/tmp2.c b/src/data/field/bg/acre/tmp2/tmp2.c new file mode 100644 index 00000000..474efa06 --- /dev/null +++ b/src/data/field/bg/acre/tmp2/tmp2.c @@ -0,0 +1,149 @@ +#include "libforest/gbi_extensions.h" + +static u16 grd_s_cliff_pal[] = { +#include "assets/field/bg/grd_s_cliff_pal.inc" +}; + +static u16 grd_s_earth_pal[] = { +#include "assets/field/bg/grd_s_earth_pal.inc" +}; + +static u8 grd_s_cliff_tex[] = { +#include "assets/field/bg/grd_s_cliff_tex.inc" +}; + +static u8 grd_s_earth_tex[] = { +#include "assets/field/bg/grd_s_earth_tex.inc" +}; + +static u8 grd_s_grass_tex[] = { +#include "assets/field/bg/grd_s_grass_tex.inc" +}; + +static Vtx tmp2_v[] = { +#include "assets/field/bg/tmp2_v.inc" +}; + +extern Gfx tmp2_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx tmp2_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(0, 0, 0, TEXEL0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, grd_s_earth_pal), + gsDPLoadTextureBlock_4b(grd_s_grass_tex, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&tmp2_v[232], 4, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmp2_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(0, 4, 5, 0, 0, 5, 3, 0), + gsSP2Triangles(4, 6, 5, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 10, 8, 0, 10, 2, 11, 0), + gsSP2Triangles(0, 12, 4, 0, 12, 13, 4, 0), + gsSP2Triangles(14, 15, 6, 0, 8, 10, 16, 0), + gsSP2Triangles(16, 10, 17, 0, 10, 11, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(21, 24, 22, 0, 22, 25, 26, 0), + gsSP2Triangles(22, 26, 23, 0, 27, 28, 29, 0), + gsSP1Triangle(27, 29, 30, 0), + gsSPVertex(&tmp2_v[31], 10, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 7, 5, 0), + gsSP2Triangles(5, 8, 9, 0, 5, 9, 6, 0), + gsSPVertex(&tmp2_v[41], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 3, 4, 0), + gsSP2Triangles(2, 4, 0, 0, 4, 3, 5, 0), + gsSP2Triangles(5, 3, 6, 0, 6, 7, 5, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(8, 12, 13, 0, 8, 13, 9, 0), + gsSP2Triangles(14, 15, 16, 0, 14, 16, 17, 0), + gsSP2Triangles(18, 19, 15, 0, 18, 15, 14, 0), + gsSP2Triangles(6, 20, 7, 0, 21, 7, 20, 0), + gsSP2Triangles(21, 20, 22, 0, 23, 22, 20, 0), + gsSP2Triangles(23, 20, 24, 0, 25, 23, 24, 0), + gsSP2Triangles(24, 26, 25, 0, 24, 27, 28, 0), + gsSP2Triangles(24, 28, 26, 0, 29, 30, 31, 0), + gsSPVertex(&tmp2_v[73], 16, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 5, 6, 0, 6, 5, 7, 0), + gsSP2Triangles(6, 7, 8, 0, 8, 7, 9, 0), + gsSP2Triangles(8, 9, 10, 0, 2, 11, 12, 0), + gsSP2Triangles(2, 12, 4, 0, 12, 13, 4, 0), + gsSP2Triangles(2, 1, 11, 0, 4, 13, 14, 0), + gsSP1Triangle(14, 15, 4, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&tmp2_v[89], 14, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(1, 4, 2, 0, 5, 6, 2, 0), + gsSP2Triangles(5, 2, 4, 0, 7, 6, 8, 0), + gsSP2Triangles(6, 9, 8, 0, 6, 5, 9, 0), + gsSP2Triangles(7, 10, 6, 0, 11, 12, 13, 0), + gsSP2Triangles(11, 13, 10, 0, 11, 10, 7, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_pal16(15, grd_s_earth_pal), + gsDPLoadTextureBlock_4b(grd_s_earth_tex, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmp2_v[103], 29, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 3, 7, 0, 7, 8, 6, 0), + gsSP2Triangles(9, 6, 8, 0, 10, 9, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 10, 15, 16, 0), + gsSP2Triangles(16, 12, 14, 0, 14, 13, 17, 0), + gsSP2Triangles(17, 18, 19, 0, 9, 20, 21, 0), + gsSP2Triangles(10, 22, 9, 0, 23, 24, 10, 0), + gsSP2Triangles(25, 26, 23, 0, 27, 25, 28, 0), + gsSP1Triangle(2, 27, 28, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, grd_s_cliff_pal), + gsDPLoadTextureBlock_4b(grd_s_cliff_tex, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp2_v[132], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 5, 6, 0, 0, 7, 8, 0), + gsSP2Triangles(0, 8, 1, 0, 9, 10, 4, 0), + gsSP2Triangles(9, 4, 11, 0, 12, 13, 14, 0), + gsSP2Triangles(12, 14, 0, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 19, 21, 20, 0), + gsSP2Triangles(18, 22, 19, 0, 23, 24, 25, 0), + gsSP2Triangles(23, 25, 26, 0, 18, 27, 28, 0), + gsSP2Triangles(18, 28, 22, 0, 29, 30, 24, 0), + gsSP1Triangle(29, 24, 31, 0), + gsSPVertex(&tmp2_v[164], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 10, 11, 0), + gsSP2Triangles(11, 10, 12, 0, 11, 12, 13, 0), + gsSP2Triangles(7, 6, 0, 0, 7, 0, 3, 0), + gsSP2Triangles(12, 14, 15, 0, 12, 16, 14, 0), + gsSP2Triangles(17, 18, 19, 0, 17, 19, 20, 0), + gsSP2Triangles(21, 22, 23, 0, 21, 23, 24, 0), + gsSP2Triangles(20, 25, 26, 0, 20, 26, 27, 0), + gsSP2Triangles(28, 23, 29, 0, 28, 29, 30, 0), + gsSP1Triangle(20, 27, 31, 0), + gsSPVertex(&tmp2_v[196], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 7, 4, 6, 0), + gsSP2Triangles(7, 6, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(9, 11, 3, 0, 12, 13, 7, 0), + gsSP2Triangles(12, 7, 14, 0, 15, 5, 13, 0), + gsSP2Triangles(15, 13, 12, 0, 1, 16, 10, 0), + gsSP2Triangles(1, 10, 9, 0, 17, 18, 19, 0), + gsSP2Triangles(17, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(21, 23, 24, 0, 24, 23, 25, 0), + gsSP2Triangles(24, 25, 26, 0, 20, 19, 27, 0), + gsSP2Triangles(20, 27, 28, 0, 25, 29, 30, 0), + gsSP2Triangles(25, 31, 29, 0, 31, 22, 29, 0), + gsSPVertex(&tmp2_v[228], 4, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmp3/tmp3.c b/src/data/field/bg/acre/tmp3/tmp3.c new file mode 100644 index 00000000..f8feb6a7 --- /dev/null +++ b/src/data/field/bg/acre/tmp3/tmp3.c @@ -0,0 +1,141 @@ +#include "libforest/gbi_extensions.h" + +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx tmp3_v[] = { +#include "assets/field/bg/tmp3_v.inc" +}; + +extern Gfx tmp3_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx tmp3_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, bush_pal_dummy), + gsDPLoadTextureBlock_4b(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmp3_v[245], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 3, 6, 0, 7, 5, 8, 0), + gsSP2Triangles(9, 7, 10, 0, 11, 9, 12, 0), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp3_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(2, 4, 0, 0, 5, 6, 7, 0), + gsSP2Triangles(6, 8, 7, 0, 5, 9, 6, 0), + gsSP2Triangles(10, 11, 12, 0, 13, 14, 15, 0), + gsSP2Triangles(11, 13, 16, 0, 14, 17, 18, 0), + gsSP2Triangles(17, 19, 20, 0, 4, 21, 22, 0), + gsSP2Triangles(23, 3, 24, 0, 25, 23, 26, 0), + gsSP2Triangles(5, 25, 27, 0, 8, 28, 29, 0), + gsSPVertex(&tmp3_v[30], 27, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 3, 6, 0, 7, 5, 8, 0), + gsSP2Triangles(9, 7, 10, 0, 11, 9, 12, 0), + gsSP2Triangles(13, 14, 15, 0, 16, 13, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 19, 16, 21, 0), + gsSP2Triangles(22, 23, 24, 0, 25, 22, 26, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp3_v[57], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 4, 5, 0, 0, 2, 4, 0), + gsSP2Triangles(4, 6, 5, 0, 7, 5, 8, 0), + gsSP2Triangles(5, 6, 8, 0, 6, 9, 8, 0), + gsSP2Triangles(10, 11, 12, 0, 11, 13, 12, 0), + gsSP2Triangles(14, 3, 15, 0, 3, 1, 15, 0), + gsSP2Triangles(13, 16, 12, 0, 13, 17, 16, 0), + gsSP2Triangles(17, 18, 16, 0, 17, 19, 18, 0), + gsSP2Triangles(19, 20, 18, 0, 21, 22, 23, 0), + gsSP2Triangles(22, 24, 23, 0, 21, 25, 22, 0), + gsSP2Triangles(21, 26, 25, 0, 26, 27, 25, 0), + gsSP2Triangles(28, 29, 30, 0, 29, 31, 30, 0), + gsSP2Triangles(29, 13, 31, 0, 13, 11, 31, 0), + gsSPVertex(&tmp3_v[89], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(4, 6, 5, 0, 5, 7, 3, 0), + gsSP2Triangles(7, 8, 9, 0, 8, 10, 11, 0), + gsSP2Triangles(10, 12, 13, 0, 14, 12, 15, 0), + gsSP2Triangles(12, 16, 15, 0, 12, 17, 16, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 19, 18, 0), + gsSP2Triangles(22, 20, 19, 0, 22, 23, 24, 0), + gsSP2Triangles(25, 26, 27, 0, 26, 23, 27, 0), + gsSP2Triangles(26, 28, 23, 0, 28, 24, 23, 0), + gsSP2Triangles(28, 29, 24, 0, 26, 25, 30, 0), + gsSP1Triangle(25, 2, 30, 0), + gsSPVertex(&tmp3_v[120], 12, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 11, 9, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp3_v[132], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(3, 4, 1, 0, 3, 5, 4, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(10, 6, 9, 0, 11, 12, 13, 0), + gsSP2Triangles(12, 14, 13, 0, 12, 10, 14, 0), + gsSP2Triangles(15, 16, 17, 0, 16, 11, 18, 0), + gsSP2Triangles(15, 17, 19, 0, 20, 15, 19, 0), + gsSP2Triangles(21, 20, 22, 0, 23, 24, 25, 0), + gsSP2Triangles(24, 21, 25, 0, 21, 22, 25, 0), + gsSP2Triangles(26, 24, 23, 0, 27, 28, 29, 0), + gsSP2Triangles(28, 30, 29, 0, 28, 26, 30, 0), + gsSPVertex(&tmp3_v[163], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(4, 6, 5, 0, 4, 0, 6, 0), + gsSP2Triangles(7, 8, 9, 0, 10, 8, 7, 0), + gsSP2Triangles(11, 12, 13, 0, 9, 11, 13, 0), + gsSP2Triangles(8, 11, 9, 0, 13, 12, 14, 0), + gsSP2Triangles(12, 15, 14, 0, 15, 16, 14, 0), + gsSP2Triangles(16, 17, 18, 0, 17, 19, 18, 0), + gsSP2Triangles(18, 19, 20, 0, 19, 21, 20, 0), + gsSP2Triangles(21, 22, 20, 0, 23, 24, 25, 0), + gsSP2Triangles(26, 23, 25, 0, 22, 26, 25, 0), + gsSP2Triangles(24, 27, 28, 0, 27, 29, 28, 0), + gsSP1Triangle(29, 30, 28, 0), + gsSPVertex(&tmp3_v[194], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 1, 0, 0), + gsSP2Triangles(4, 5, 6, 0, 7, 4, 6, 0), + gsSP2Triangles(8, 9, 10, 0, 5, 8, 10, 0), + gsSP2Triangles(10, 9, 11, 0, 9, 12, 11, 0), + gsSP2Triangles(12, 13, 11, 0, 14, 15, 13, 0), + gsSP2Triangles(14, 16, 15, 0, 17, 18, 19, 0), + gsSP2Triangles(16, 17, 19, 0, 15, 16, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 23, 24, 25, 0), + gsSP2Triangles(26, 27, 25, 0, 28, 29, 30, 0), + gsSP1Triangle(29, 26, 30, 0), + gsSPVertex(&tmp3_v[225], 7, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 3, 4, 0), + gsSP1Triangle(5, 6, 4, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, bush_pal_dummy), + gsDPLoadTextureBlock_4b(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp3_v[232], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 6, 7, 0, 1, 5, 8, 0), + gsSP2Triangles(9, 10, 11, 0, 10, 3, 12, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmp4/tmp4.c b/src/data/field/bg/acre/tmp4/tmp4.c new file mode 100644 index 00000000..f41460ee --- /dev/null +++ b/src/data/field/bg/acre/tmp4/tmp4.c @@ -0,0 +1,139 @@ +#include "libforest/gbi_extensions.h" + +extern u8 rail_pal_dummy[]; +extern u8 bush_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 station_pal_dummy[]; +extern u8 stone_tex_dummy[]; +extern u8 station_tex_dummy[]; +extern u8 rail_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 bush_b_tex_dummy[]; +extern u8 bush_a_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx tmp4_v[] = { +#include "assets/field/bg/tmp4_v.inc" +}; + +extern Gfx tmp4_modelT[] = { + gsSPEndDisplayList(), +}; + +extern Gfx tmp4_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, bush_pal_dummy), + gsDPLoadTextureBlock_4b(bush_a_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmp4_v[191], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 3, 6, 0, 7, 5, 8, 0), + gsSP2Triangles(9, 7, 10, 0, 11, 9, 12, 0), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(4, 6, 7, 0, 8, 9, 0, 0), + gsSP2Triangles(1, 0, 9, 0, 0, 10, 8, 0), + gsSP2Triangles(11, 12, 13, 0, 14, 15, 16, 0), + gsSP2Triangles(15, 17, 16, 0, 18, 14, 19, 0), + gsSP2Triangles(9, 18, 19, 0, 20, 21, 22, 0), + gsSP2Triangles(23, 22, 21, 0, 1, 9, 23, 0), + gsSP2Triangles(24, 25, 3, 0, 8, 18, 9, 0), + gsSP2Triangles(15, 26, 17, 0, 26, 27, 22, 0), + gsSP2Triangles(28, 29, 30, 0, 29, 11, 13, 0), + gsSPVertex(&tmp4_v[31], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(4, 6, 7, 0, 7, 8, 9, 0), + gsSP2Triangles(9, 10, 11, 0, 3, 6, 4, 0), + gsSP2Triangles(6, 8, 7, 0, 8, 10, 9, 0), + gsSP2Triangles(10, 12, 11, 0, 13, 14, 15, 0), + gsSP2Triangles(16, 17, 14, 0, 18, 19, 20, 0), + gsSP2Triangles(0, 21, 22, 0, 0, 23, 21, 0), + gsSP2Triangles(2, 1, 24, 0, 24, 1, 25, 0), + gsSP2Triangles(21, 23, 26, 0, 21, 27, 22, 0), + gsSP2Triangles(28, 29, 26, 0, 29, 18, 30, 0), + gsSP1Triangle(20, 30, 18, 0), + gsSPVertex(&tmp4_v[62], 3, 0), + gsSP1Triangle(0, 1, 2, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(stone_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[65], 25, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 3, 4, 0), + gsSP2Triangles(2, 1, 3, 0, 0, 5, 1, 0), + gsSP2Triangles(3, 6, 4, 0, 7, 8, 6, 0), + gsSP2Triangles(7, 9, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 11, 0, 14, 15, 13, 0), + gsSP2Triangles(15, 14, 16, 0, 16, 17, 15, 0), + gsSP2Triangles(17, 18, 19, 0, 18, 20, 19, 0), + gsSP2Triangles(20, 21, 19, 0, 20, 22, 21, 0), + gsSP2Triangles(22, 23, 21, 0, 22, 24, 23, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[90], 31, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(2, 4, 5, 0, 6, 7, 0, 0), + gsSP2Triangles(8, 9, 6, 0, 10, 11, 8, 0), + gsSP2Triangles(10, 12, 11, 0, 10, 13, 12, 0), + gsSP2Triangles(13, 14, 15, 0, 16, 17, 18, 0), + gsSP2Triangles(19, 16, 20, 0, 17, 21, 22, 0), + gsSP2Triangles(21, 23, 24, 0, 23, 25, 24, 0), + gsSP2Triangles(26, 27, 28, 0, 27, 29, 30, 0), + gsSP1Triangle(29, 19, 30, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, rail_pal_dummy), + gsDPLoadTextureBlock_4b(rail_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[121], 21, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 1, 0, 0, 4, 5, 1, 0), + gsSP2Triangles(6, 7, 4, 0, 7, 5, 4, 0), + gsSP2Triangles(8, 7, 6, 0, 8, 9, 7, 0), + gsSP2Triangles(9, 10, 7, 0, 10, 11, 7, 0), + gsSP2Triangles(7, 12, 5, 0, 7, 11, 12, 0), + gsSP2Triangles(5, 12, 1, 0, 12, 13, 1, 0), + gsSP2Triangles(1, 14, 3, 0, 1, 13, 14, 0), + gsSP2Triangles(13, 15, 14, 0, 13, 16, 15, 0), + gsSP2Triangles(12, 16, 13, 0, 12, 17, 16, 0), + gsSP2Triangles(11, 18, 12, 0, 18, 17, 12, 0), + gsSP2Triangles(11, 19, 18, 0, 10, 20, 11, 0), + gsSP1Triangle(20, 19, 11, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, station_pal_dummy), + gsDPLoadTextureBlock_4b(station_tex_dummy, G_IM_FMT_CI, 128, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 7, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[142], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(4, 8, 5, 0, 9, 10, 11, 0), + gsSP2Triangles(9, 12, 10, 0, 11, 13, 14, 0), + gsSP2Triangles(11, 15, 13, 0, 13, 16, 14, 0), + gsSP2Triangles(11, 10, 15, 0, 17, 18, 19, 0), + gsSP2Triangles(18, 20, 19, 0, 21, 8, 4, 0), + gsSP2Triangles(22, 23, 24, 0, 23, 25, 24, 0), + gsSP2Triangles(26, 27, 28, 0, 26, 28, 29, 0), + gsSPVertex(&tmp4_v[172], 6, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, bush_pal_dummy), + gsDPLoadTextureBlock_4b(bush_b_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmp4_v[178], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 6, 7, 0, 1, 5, 8, 0), + gsSP2Triangles(9, 10, 11, 0, 10, 3, 12, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmpr/tmpr.c b/src/data/field/bg/acre/tmpr/tmpr.c index d0695ef7..82aaab3a 100644 --- a/src/data/field/bg/acre/tmpr/tmpr.c +++ b/src/data/field/bg/acre/tmpr/tmpr.c @@ -1,27 +1,30 @@ #include "libforest/gbi_extensions.h" -// clang-format off - -static Vtx tmpr_v[] = { }; // TODO: include asset - -extern u8 earth_tex_dummy[]; +extern u8 bridge_2_pal_dummy[]; +extern u8 bridge_2_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; extern u8 river_tex_dummy[]; extern u8 grass_tex_dummy[]; -extern u8 water_1_tex_dummy[]; -extern u8 water_2_tex_dummy[]; -extern u8 bridge_2_tex_dummy[]; -extern u16 bridge_2_pal_dummy[]; +extern u8 earth_tex_dummy[]; -Gfx tmpr_modelT[] = { - gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), +static Vtx tmpr_v[] = { +#include "assets/field/bg/tmpr_v.inc" +}; + +extern Gfx tmpr_modelT[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), gsDPPipeSync(), - gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), gsDPSetPrimColor(0, 50, 255, 255, 255, 50), - gsDPSetEnvColor(0, 100, 255, 255), + gsDPSetEnvColor(0x00, 0x64, 0xFF, 0xFF), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), gsDPSetTextureLUT(G_TT_NONE), - gsDPLoadTextureBlock_4b(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), - gsDPLoadMultiBlock_4b(water_2_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock_4b(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(water_2_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPDisplayList(0x08000000), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&tmpr_v[152], 22, 0), @@ -36,13 +39,14 @@ Gfx tmpr_modelT[] = { gsSP2Triangles(18, 17, 15, 0, 18, 15, 10, 0), gsSP2Triangles(18, 10, 13, 0, 19, 18, 13, 0), gsSP2Triangles(19, 13, 20, 0, 21, 19, 20, 0), - gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), + gsSPTexture(65535, 65535, 0, 0, G_ON), gsDPPipeSync(), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), gsDPSetTextureLUT(G_TT_RGBA16), - gsDPLoadTLUT_pal16(15, 0x80FD90E0), - gsDPLoadTextureBlock_4b(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_WRAP, 7, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTLUT_pal16(15, bridge_2_pal_dummy), + gsDPLoadTextureBlock_4b(bridge_2_tex_dummy, G_IM_FMT_CI, 128, 32, 15, G_TX_NOMIRROR | G_TX_CLAMP, + G_TX_NOMIRROR | G_TX_WRAP, 7, 5, G_TX_NOLOD, G_TX_NOLOD), gsDPSetPrimColor(0, 128, 255, 255, 255, 255), gsSPVertex(&tmpr_v[174], 32, 0), gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), @@ -63,14 +67,15 @@ Gfx tmpr_modelT[] = { gsSPEndDisplayList(), }; -Gfx tmpr_model[] = { - gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), +extern Gfx tmpr_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), gsDPPipeSync(), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), gsDPSetTextureLUT(G_TT_RGBA16), gsDPLoadTLUT_pal16(15, 0x09000000), - gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), gsDPSetPrimColor(0, 128, 255, 255, 255, 255), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&tmpr_v[0], 32, 0), @@ -89,7 +94,8 @@ Gfx tmpr_model[] = { gsSP2Triangles(5, 3, 6, 0, 7, 5, 8, 0), gsDPPipeSync(), gsDPLoadTLUT_pal16(15, 0x09000000), - gsDPLoadTextureBlock_4b(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock_4b(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(&tmpr_v[41], 32, 0), gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), @@ -114,7 +120,8 @@ Gfx tmpr_model[] = { gsSP1Triangle(26, 5, 3, 0), gsDPPipeSync(), gsDPLoadTLUT_pal16(15, 0x09000000), - gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), gsSPVertex(&tmpr_v[100], 32, 0), gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), gsSP2Triangles(4, 5, 3, 0, 5, 2, 3, 0), @@ -140,5 +147,3 @@ Gfx tmpr_model[] = { gsSP1Triangle(17, 19, 18, 0), gsSPEndDisplayList(), }; - -// clang-format on diff --git a/src/data/field/bg/acre/tmpr/tmpr_evw_anime.c b/src/data/field/bg/acre/tmpr/tmpr_evw_anime.c new file mode 100644 index 00000000..fbd05dba --- /dev/null +++ b/src/data/field/bg/acre/tmpr/tmpr_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL tmpr_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA tmpr_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, tmpr_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/tmpr2/tmpr2.c b/src/data/field/bg/acre/tmpr2/tmpr2.c new file mode 100644 index 00000000..4819294d --- /dev/null +++ b/src/data/field/bg/acre/tmpr2/tmpr2.c @@ -0,0 +1,100 @@ +#include "libforest/gbi_extensions.h" + +static u16 grd_1_earth_pal[] = { +#include "assets/field/bg/grd_1_earth_pal.inc" +}; + +static u8 grd_s_river_tex[] = { +#include "assets/field/bg/grd_s_river_tex.inc" +}; + +static u8 grd_water1_tex[] = { +#include "assets/field/bg/grd_water1_tex.inc" +}; + +static u8 grd_s_grass_tex[] = { +#include "assets/field/bg/grd_s_grass_tex2.inc" +}; + +static Vtx tmpr2_v[] = { +#include "assets/field/bg/tmpr2_v.inc" +}; + +static Gfx tmpr2_grp_grd_s_r1_1_river[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, grd_1_earth_pal), + gsDPLoadTextureBlock_4b(grd_s_river_tex, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr2_v[25], 19, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(1, 4, 3, 0, 4, 5, 3, 0), + gsSP2Triangles(4, 6, 5, 0, 6, 7, 5, 0), + gsSP2Triangles(6, 8, 7, 0, 6, 9, 8, 0), + gsSP2Triangles(10, 11, 12, 0, 11, 13, 12, 0), + gsSP2Triangles(13, 4, 12, 0, 14, 15, 16, 0), + gsSP2Triangles(14, 17, 15, 0, 15, 13, 16, 0), + gsSP2Triangles(15, 4, 13, 0, 10, 18, 11, 0), + gsSPEndDisplayList(), +}; + +static Gfx tmpr2_grp_grd_s_r1_1_grass[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, grd_1_earth_pal), + gsDPLoadTextureBlock_4b(grd_s_grass_tex, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr2_v[0], 25, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(3, 4, 2, 0, 3, 5, 4, 0), + gsSP2Triangles(0, 6, 1, 0, 0, 7, 6, 0), + gsSP2Triangles(7, 8, 6, 0, 8, 9, 6, 0), + gsSP2Triangles(9, 10, 6, 0, 10, 11, 6, 0), + gsSP2Triangles(11, 1, 6, 0, 11, 12, 1, 0), + gsSP2Triangles(12, 3, 1, 0, 12, 13, 3, 0), + gsSP2Triangles(13, 14, 3, 0, 14, 5, 3, 0), + gsSP2Triangles(15, 16, 17, 0, 16, 18, 17, 0), + gsSP2Triangles(19, 17, 18, 0, 19, 20, 17, 0), + gsSP2Triangles(15, 21, 16, 0, 21, 22, 16, 0), + gsSP2Triangles(21, 23, 22, 0, 21, 24, 23, 0), + gsSPEndDisplayList(), +}; + +static Gfx tmpr2_grp_grd_s_r1_1_waterT[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(grd_water1_tex, G_IM_FMT_I, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_WRAP, 5, + 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr2_v[44], 10, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(1, 4, 2, 0, 4, 5, 2, 0), + gsSP2Triangles(4, 6, 5, 0, 6, 7, 5, 0), + gsSP2Triangles(6, 8, 7, 0, 8, 9, 7, 0), + gsSPEndDisplayList(), +}; + +extern Gfx tmpr2_modelT[] = { + gsSPDisplayList(tmpr2_grp_grd_s_r1_1_waterT), + gsSPEndDisplayList(), +}; + +extern Gfx tmpr2_model[] = { + gsSPDisplayList(tmpr2_grp_grd_s_r1_1_grass), + gsSPDisplayList(tmpr2_grp_grd_s_r1_1_river), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c b/src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c new file mode 100644 index 00000000..2e0325b8 --- /dev/null +++ b/src/data/field/bg/acre/tmpr2/tmpr2_evw_anime.c @@ -0,0 +1,7 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL tmpr2_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +extern EVW_ANIME_DATA tmpr2_evw_anime[] = { + { -1, EVW_ANIME_TYPE_SCROLL2, tmpr2_evw_anime_1 }, +}; diff --git a/src/data/field/bg/acre/tmpr3/tmpr3.c b/src/data/field/bg/acre/tmpr3/tmpr3.c new file mode 100644 index 00000000..3076aeda --- /dev/null +++ b/src/data/field/bg/acre/tmpr3/tmpr3.c @@ -0,0 +1,242 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 bridge_1_pal_dummy[]; +extern u8 bridge_1_tex_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx tmpr3_v[] = { +#include "assets/field/bg/tmpr3_v.inc" +}; + +extern Gfx tmpr3_modelT[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsDPSetEnvColor(0x90, 0x80, 0x60, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 5, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr3_v[199], 26, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 0, 0, 5, 1, 0, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(8, 10, 9, 0, 11, 9, 10, 0), + gsSP2Triangles(0, 12, 4, 0, 3, 13, 0, 0), + gsSP2Triangles(0, 13, 12, 0, 13, 14, 12, 0), + gsSP2Triangles(14, 15, 12, 0, 9, 16, 6, 0), + gsSP2Triangles(9, 17, 16, 0, 11, 17, 9, 0), + gsSP2Triangles(18, 17, 19, 0, 19, 20, 18, 0), + gsSP2Triangles(18, 20, 15, 0, 15, 14, 18, 0), + gsSP2Triangles(17, 21, 19, 0, 17, 22, 21, 0), + gsSP2Triangles(17, 11, 22, 0, 5, 23, 1, 0), + gsSP2Triangles(24, 25, 10, 0, 25, 11, 10, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPLoadTextureBlock(wave1_tex_dummy, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock(wave2_tex_dummy, 0x0080, 1, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x09000000), + gsSPVertex(&tmpr3_v[225], 20, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 2, 0), + gsSP2Triangles(1, 4, 5, 0, 2, 1, 5, 0), + gsSP2Triangles(2, 5, 6, 0, 2, 6, 7, 0), + gsSP2Triangles(3, 2, 7, 0, 8, 3, 7, 0), + gsSP2Triangles(9, 10, 11, 0, 12, 13, 9, 0), + gsSP2Triangles(11, 12, 9, 0, 11, 10, 14, 0), + gsSP2Triangles(11, 14, 15, 0, 15, 14, 16, 0), + gsSP2Triangles(15, 16, 17, 0, 18, 19, 15, 0), + gsSP2Triangles(15, 19, 11, 0, 15, 17, 18, 0), + gsSP1Triangle(11, 19, 12, 0), + gsDPPipeSync(), + gsDPLoadTextureBlock(wave1_tex_dummy, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock(wave3_tex_dummy, 0x0080, 1, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x0A000000), + gsSPVertex(&tmpr3_v[245], 16, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 2, 0), + gsSP2Triangles(3, 2, 4, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 6, 8, 9, 0), + gsSP2Triangles(10, 6, 9, 0, 10, 9, 11, 0), + gsSP2Triangles(10, 11, 12, 0, 13, 10, 12, 0), + gsSP2Triangles(14, 13, 12, 0, 3, 5, 15, 0), + gsSP2Triangles(6, 3, 15, 0, 6, 15, 7, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(water_2_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x08000000), + gsSPVertex(&tmpr3_v[261], 10, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(5, 2, 7, 0, 2, 3, 7, 0), + gsSP2Triangles(0, 8, 1, 0, 8, 9, 1, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(sprashA_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, 1), + gsSPDisplayList(0x0B000000), + gsSPVertex(&tmpr3_v[271], 7, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(1, 4, 2, 0, 4, 5, 2, 0), + gsSP1Triangle(1, 6, 4, 0), + gsSPEndDisplayList(), +}; + +extern Gfx tmpr3_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, bridge_1_pal_dummy), + gsDPLoadTextureBlock_4b(bridge_1_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_MIRROR | G_TX_WRAP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr3_v[186], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 2, 4, 0, 2, 5, 4, 0), + gsSP2Triangles(6, 4, 7, 0, 6, 7, 8, 0), + gsSP2Triangles(9, 0, 4, 0, 9, 4, 6, 0), + gsSP2Triangles(10, 11, 1, 0, 10, 1, 12, 0), + gsSP2Triangles(12, 1, 0, 0, 12, 0, 9, 0), + gsSP2Triangles(5, 7, 4, 0, 11, 3, 1, 0), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTLUT_pal16(15, cliff_pal_dummy), + gsDPLoadTextureBlock_4b(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr3_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 10, 11, 0, 10, 12, 11, 0), + gsSP2Triangles(13, 14, 12, 0, 13, 15, 14, 0), + gsSP2Triangles(16, 17, 15, 0, 16, 18, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 20, 0), + gsSP2Triangles(23, 24, 22, 0, 25, 26, 24, 0), + gsSP2Triangles(27, 28, 26, 0, 26, 25, 27, 0), + gsSP2Triangles(24, 23, 25, 0, 22, 21, 23, 0), + gsSP2Triangles(20, 19, 21, 0, 16, 19, 18, 0), + gsSP2Triangles(15, 13, 16, 0, 12, 10, 13, 0), + gsSP2Triangles(7, 9, 10, 0, 6, 29, 30, 0), + gsSP1Triangle(29, 31, 30, 0), + gsSPVertex(&tmpr3_v[32], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(2, 1, 3, 0, 0, 6, 1, 0), + gsSP2Triangles(7, 8, 6, 0, 6, 8, 1, 0), + gsSP2Triangles(9, 10, 7, 0, 9, 11, 10, 0), + gsSP2Triangles(12, 13, 11, 0, 13, 10, 11, 0), + gsSP2Triangles(14, 15, 12, 0, 16, 17, 14, 0), + gsSP2Triangles(18, 19, 16, 0, 20, 21, 18, 0), + gsSP2Triangles(22, 23, 20, 0, 24, 25, 22, 0), + gsSP2Triangles(26, 27, 28, 0, 26, 29, 27, 0), + gsSP2Triangles(29, 30, 27, 0, 31, 25, 24, 0), + gsSP2Triangles(22, 25, 23, 0, 20, 23, 21, 0), + gsSP2Triangles(18, 21, 19, 0, 19, 17, 16, 0), + gsSP2Triangles(14, 17, 15, 0, 15, 13, 12, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, beach_pal_dummy2), + gsDPLoadTextureBlock_4b(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr3_v[64], 14, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(2, 3, 4, 0, 3, 5, 4, 0), + gsSP2Triangles(6, 7, 8, 0, 7, 9, 8, 0), + gsSP2Triangles(9, 10, 11, 0, 11, 8, 9, 0), + gsSP2Triangles(12, 11, 10, 0, 12, 13, 11, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr3_v[78], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 1, 0), + gsSP2Triangles(5, 6, 4, 0, 7, 8, 6, 0), + gsSP2Triangles(9, 10, 11, 0, 12, 11, 13, 0), + gsSP2Triangles(14, 13, 15, 0, 16, 15, 17, 0), + gsSP2Triangles(18, 19, 10, 0, 20, 21, 22, 0), + gsSP2Triangles(23, 22, 8, 0, 24, 25, 21, 0), + gsSP2Triangles(26, 27, 28, 0, 29, 26, 30, 0), + gsSPVertex(&tmpr3_v[109], 9, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 4, 0), + gsSP2Triangles(5, 0, 6, 0, 7, 5, 8, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr3_v[118], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 1, 0, 0), + gsSP2Triangles(5, 4, 1, 0, 6, 5, 7, 0), + gsSP2Triangles(5, 8, 7, 0, 7, 8, 9, 0), + gsSP2Triangles(9, 8, 10, 0, 8, 11, 10, 0), + gsSP2Triangles(12, 13, 14, 0, 12, 15, 13, 0), + gsSP2Triangles(14, 0, 2, 0, 16, 13, 17, 0), + gsSP2Triangles(17, 13, 18, 0, 19, 20, 21, 0), + gsSP2Triangles(19, 22, 20, 0, 23, 20, 22, 0), + gsSP2Triangles(24, 20, 23, 0, 25, 20, 24, 0), + gsSP2Triangles(18, 20, 25, 0, 20, 26, 21, 0), + gsSP2Triangles(20, 27, 26, 0, 20, 15, 27, 0), + gsSP2Triangles(15, 20, 13, 0, 20, 18, 13, 0), + gsSP2Triangles(28, 29, 30, 0, 29, 31, 30, 0), + gsSPVertex(&tmpr3_v[150], 22, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(4, 2, 3, 0, 4, 5, 2, 0), + gsSP2Triangles(6, 7, 5, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 6, 10, 0, 6, 11, 10, 0), + gsSP2Triangles(12, 13, 8, 0, 12, 14, 13, 0), + gsSP2Triangles(12, 15, 14, 0, 12, 16, 15, 0), + gsSP2Triangles(17, 18, 16, 0, 10, 19, 17, 0), + gsSP2Triangles(19, 18, 17, 0, 11, 19, 10, 0), + gsSP2Triangles(11, 20, 19, 0, 20, 21, 19, 0), + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 200, 184, 144, 255), + gsDPSetEnvColor(0x90, 0x80, 0x60, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr3_v[172], 14, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 0, 3, 0, 5, 4, 3, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 6, 0), + gsSP2Triangles(9, 6, 8, 0, 11, 10, 12, 0), + gsSP2Triangles(12, 10, 9, 0, 12, 13, 11, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c b/src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c new file mode 100644 index 00000000..8686ddd1 --- /dev/null +++ b/src/data/field/bg/acre/tmpr3/tmpr3_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL tmpr3_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL tmpr3_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL tmpr3_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL tmpr3_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA tmpr3_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, tmpr3_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, tmpr3_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, tmpr3_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, tmpr3_evw_anime_4 }, +}; diff --git a/src/data/field/bg/acre/tmpr4/tmpr4.c b/src/data/field/bg/acre/tmpr4/tmpr4.c new file mode 100644 index 00000000..8283e67b --- /dev/null +++ b/src/data/field/bg/acre/tmpr4/tmpr4.c @@ -0,0 +1,224 @@ +#include "libforest/gbi_extensions.h" + +extern u8 sprashC_tex_dummy[]; +extern u8 sprashA_tex_dummy[]; +extern u8 wave3_tex_dummy[]; +extern u8 wave2_tex_dummy[]; +extern u8 wave1_tex_dummy[]; +extern u8 sand_tex_dummy[]; +extern u8 beach_pal_dummy2[]; +extern u8 beach2_tex_dummy2[]; +extern u8 beach1_tex_dummy2[]; +extern u8 cliff_pal_dummy[]; +extern u8 earth_pal_dummy[]; +extern u8 water_2_tex_dummy[]; +extern u8 water_1_tex_dummy[]; +extern u8 river_tex_dummy[]; +extern u8 grass_tex_dummy[]; +extern u8 earth_tex_dummy[]; + +static Vtx tmpr4_v[] = { +#include "assets/field/bg/tmpr4_v.inc" +}; + +extern Gfx tmpr4_modelT[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 32, 48, 144, 255), + gsDPSetEnvColor(0x90, 0x80, 0x60, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(beach2_tex_dummy2, G_IM_FMT_I, 32, 16, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 5, 4, G_TX_NOLOD, G_TX_NOLOD), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr4_v[218], 24, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 7, 5, 0), + gsSP2Triangles(8, 7, 4, 0, 7, 9, 10, 0), + gsSP2Triangles(9, 11, 10, 0, 7, 12, 9, 0), + gsSP2Triangles(13, 3, 14, 0, 13, 0, 3, 0), + gsSP2Triangles(7, 8, 12, 0, 15, 16, 17, 0), + gsSP2Triangles(15, 18, 16, 0, 18, 11, 16, 0), + gsSP2Triangles(6, 5, 19, 0, 18, 10, 11, 0), + gsSP2Triangles(20, 6, 19, 0, 8, 21, 12, 0), + gsSP2Triangles(22, 20, 23, 0, 20, 19, 23, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL1, 0, TEXEL0, TEXEL0, TEXEL1, 0, TEXEL0, 0, PRIMITIVE, 0, SHADE, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 60, 120, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPLoadTextureBlock(wave1_tex_dummy, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock(wave2_tex_dummy, 0x0080, 1, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 64, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 5, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x09000000), + gsSPVertex(&tmpr4_v[242], 19, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 1, 3, 0, 4, 3, 5, 0), + gsSP2Triangles(0, 6, 3, 0, 7, 8, 9, 0), + gsSP2Triangles(10, 9, 11, 0, 9, 8, 11, 0), + gsSP2Triangles(7, 9, 12, 0, 13, 14, 15, 0), + gsSP2Triangles(16, 13, 17, 0, 16, 14, 13, 0), + gsSP1Triangle(13, 15, 18, 0), + gsDPPipeSync(), + gsDPLoadTextureBlock(wave1_tex_dummy, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock(wave3_tex_dummy, 0x0080, 1, G_IM_FMT_IA, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x0A000000), + gsSPVertex(&tmpr4_v[261], 23, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(0, 4, 5, 0, 0, 2, 4, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 9, 11, 0, 12, 11, 13, 0), + gsSP2Triangles(14, 12, 13, 0, 15, 16, 17, 0), + gsSP2Triangles(7, 18, 8, 0, 18, 7, 19, 0), + gsSP2Triangles(20, 18, 19, 0, 15, 17, 10, 0), + gsSP2Triangles(9, 15, 10, 0, 6, 8, 12, 0), + gsSP2Triangles(14, 6, 12, 0, 5, 14, 13, 0), + gsSP2Triangles(5, 13, 21, 0, 5, 21, 0, 0), + gsSP1Triangle(1, 22, 2, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 1, 0, TEXEL0, TEXEL1, COMBINED, 0, SHADE, TEXEL0, + COMBINED, 0, PRIM_LOD_FRAC, PRIMITIVE), + gsDPSetPrimColor(0, 50, 255, 255, 255, 50), + gsDPSetEnvColor(0x00, 0x3C, 0xFF, 0xFF), + gsDPLoadTextureBlock_4b(water_1_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(water_2_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPDisplayList(0x08000000), + gsSPVertex(&tmpr4_v[284], 10, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 2, 0, 4, 6, 5, 0), + gsSP2Triangles(2, 5, 0, 0, 7, 6, 8, 0), + gsSP2Triangles(6, 4, 8, 0, 3, 9, 1, 0), + gsDPPipeSync(), + gsDPSetCombineLERP(1, 0, PRIMITIVE, TEXEL0, TEXEL1, 0, PRIMITIVE, 0, COMBINED, 0, SHADE, TEXEL1, 0, 0, 0, COMBINED), + gsDPSetPrimColor(0, 255, 100, 140, 255, 200), + gsDPLoadTextureBlock_4b(sprashC_tex_dummy, G_IM_FMT_I, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadMultiBlock_4b(sprashA_tex_dummy, 0x0040, 1, G_IM_FMT_I, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, 1), + gsSPDisplayList(0x0B000000), + gsSPVertex(&tmpr4_v[294], 7, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(1, 4, 2, 0, 4, 5, 2, 0), + gsSP1Triangle(1, 6, 4, 0), + gsSPEndDisplayList(), +}; + +extern Gfx tmpr4_model[] = { + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPSetTextureLUT(G_TT_RGBA16), + gsDPLoadTLUT_pal16(15, cliff_pal_dummy), + gsDPLoadTextureBlock_4b(river_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tmpr4_v[0], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 7, 8, 6, 0), + gsSP2Triangles(8, 4, 6, 0, 9, 10, 11, 0), + gsSP2Triangles(9, 12, 10, 0, 9, 13, 12, 0), + gsSP2Triangles(13, 14, 12, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 17, 19, 0, 17, 16, 19, 0), + gsSP2Triangles(7, 20, 8, 0, 20, 21, 8, 0), + gsSP2Triangles(22, 23, 24, 0, 23, 25, 24, 0), + gsSP2Triangles(26, 22, 27, 0, 22, 24, 27, 0), + gsSP2Triangles(28, 29, 30, 0, 28, 30, 31, 0), + gsSPVertex(&tmpr4_v[32], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(8, 9, 10, 0, 11, 12, 13, 0), + gsSP2Triangles(14, 15, 16, 0, 2, 17, 0, 0), + gsSP2Triangles(18, 11, 13, 0, 19, 20, 21, 0), + gsSP2Triangles(14, 22, 15, 0, 23, 20, 24, 0), + gsSP2Triangles(22, 17, 25, 0, 26, 12, 11, 0), + gsSP2Triangles(17, 2, 25, 0, 27, 28, 29, 0), + gsSP1Triangle(22, 25, 15, 0), + gsSPVertex(&tmpr4_v[62], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP2Triangles(3, 4, 1, 0, 5, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 11, 12, 13, 0), + gsSP2Triangles(14, 15, 16, 0, 15, 17, 16, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(23, 24, 25, 0, 26, 27, 12, 0), + gsSP2Triangles(28, 18, 29, 0, 24, 30, 25, 0), + gsSP2Triangles(13, 12, 27, 0, 28, 31, 18, 0), + gsSPVertex(&tmpr4_v[94], 18, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 2, 7, 0, 8, 5, 4, 0), + gsSP2Triangles(9, 10, 11, 0, 12, 13, 14, 0), + gsSP2Triangles(15, 16, 17, 0, 3, 12, 14, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, beach_pal_dummy2), + gsDPLoadTextureBlock_4b(sand_tex_dummy, G_IM_FMT_CI, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr4_v[112], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 2, 1, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 5, 7, 6, 0), + gsSP2Triangles(8, 2, 3, 0, 9, 10, 11, 0), + gsSP1Triangle(10, 12, 11, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(grass_tex_dummy, G_IM_FMT_CI, 32, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_WRAP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr4_v[125], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 1, 3, 2, 0), + gsSP2Triangles(0, 4, 1, 0, 0, 5, 4, 0), + gsSP2Triangles(0, 6, 5, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 9, 10, 0, 10, 11, 12, 0), + gsSP2Triangles(10, 12, 7, 0, 13, 2, 14, 0), + gsSP2Triangles(13, 14, 15, 0, 16, 17, 18, 0), + gsSP2Triangles(17, 19, 18, 0, 19, 20, 18, 0), + gsSP2Triangles(21, 17, 16, 0, 22, 23, 24, 0), + gsSP2Triangles(25, 26, 23, 0, 25, 23, 22, 0), + gsSP2Triangles(24, 27, 28, 0, 13, 19, 29, 0), + gsSP1Triangle(19, 17, 29, 0), + gsSPVertex(&tmpr4_v[155], 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(3, 6, 4, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 10, 8, 0, 10, 5, 8, 0), + gsSP2Triangles(11, 12, 13, 0, 14, 15, 16, 0), + gsSP2Triangles(17, 1, 0, 0, 18, 2, 19, 0), + gsSP2Triangles(20, 21, 22, 0, 23, 1, 17, 0), + gsSP2Triangles(24, 25, 26, 0, 18, 26, 27, 0), + gsSP2Triangles(28, 18, 27, 0, 29, 18, 28, 0), + gsSP2Triangles(30, 18, 29, 0, 2, 18, 30, 0), + gsSP2Triangles(0, 2, 31, 0, 31, 2, 30, 0), + gsSPVertex(&tmpr4_v[187], 5, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 3, 1, 0), + gsSP1Triangle(1, 4, 2, 0), + gsDPPipeSync(), + gsDPLoadTLUT_pal16(15, earth_pal_dummy), + gsDPLoadTextureBlock_4b(earth_tex_dummy, G_IM_FMT_CI, 64, 64, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 6, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr4_v[192], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 0, 4, 0), + gsSP2Triangles(5, 6, 7, 0, 6, 3, 8, 0), + gsSP2Triangles(9, 5, 10, 0, 11, 9, 12, 0), + gsSPTexture(65535, 65535, 0, 0, G_ON), + gsDPPipeSync(), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, 0, 0, 0, TEXEL0, COMBINED, 0, SHADE, 0, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 255, 200, 184, 144, 255), + gsDPSetEnvColor(0x90, 0x80, 0x60, 0xFF), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPPipeSync(), + gsDPSetTextureLUT(G_TT_NONE), + gsDPLoadTextureBlock_4b(beach1_tex_dummy2, G_IM_FMT_I, 64, 32, 15, G_TX_NOMIRROR | G_TX_WRAP, + G_TX_NOMIRROR | G_TX_CLAMP, 6, 5, G_TX_NOLOD, G_TX_NOLOD), + gsSPVertex(&tmpr4_v[205], 13, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 8, 11, 9, 0), + gsSP1Triangle(9, 12, 10, 0), + gsSPEndDisplayList(), +}; diff --git a/src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c b/src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c new file mode 100644 index 00000000..5c3e0389 --- /dev/null +++ b/src/data/field/bg/acre/tmpr4/tmpr4_evw_anime.c @@ -0,0 +1,16 @@ +#include "evw_anime.h" + +static EVW_ANIME_SCROLL tmpr4_evw_anime_1[] = { { 1, -1, 32, 32 }, { -1, -2, 32, 32 } }; + +static EVW_ANIME_SCROLL tmpr4_evw_anime_2[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 64 } }; + +static EVW_ANIME_SCROLL tmpr4_evw_anime_3[] = { { 0, 1, 32, 32 }, { 0, 0, 32, 32 } }; + +static EVW_ANIME_SCROLL tmpr4_evw_anime_4[] = { { 0, -6, 32, 32 }, { 0, 0, 32, 32 } }; + +extern EVW_ANIME_DATA tmpr4_evw_anime[] = { + { 1, EVW_ANIME_TYPE_SCROLL2, tmpr4_evw_anime_1 }, + { 2, EVW_ANIME_TYPE_SCROLL2, tmpr4_evw_anime_2 }, + { 3, EVW_ANIME_TYPE_SCROLL2, tmpr4_evw_anime_3 }, + { -4, EVW_ANIME_TYPE_SCROLL2, tmpr4_evw_anime_4 }, +}; diff --git a/src/data/model/mural/obj_mural.c b/src/data/model/mural/obj_mural.c index c2efa085..6eccd999 100644 --- a/src/data/model/mural/obj_mural.c +++ b/src/data/model/mural/obj_mural.c @@ -14,11 +14,11 @@ Gfx obj_mural_model[] = { /* @BUG - These commands were never updated for Dolphin and therefore render broken */ #ifndef BUGFIXES - gsDPLoadTLUT_pal16(15, 0x08000000), - gsDPLoadTextureBlock_4b(0x09000000, G_IM_FMT_CI, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), + gsDPLoadTLUT_pal16(15, anime_1_txt), + gsDPLoadTextureBlock_4b(anime_2_txt, G_IM_FMT_CI, 32, 32, 15, G_TX_MIRROR | G_TX_WRAP, G_TX_MIRROR | G_TX_CLAMP, 5, 5, G_TX_NOLOD, G_TX_NOLOD), #else - gsDPLoadTLUT_Dolphin(15, 16, 1, 0x08000000), - gsDPLoadTextureBlock_4b_Dolphin(0x09000000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPLoadTLUT_Dolphin(15, 16, 1, anime_1_txt), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), #endif gsDPSetPrimColor(0, 128, 255, 255, 255, 255), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), diff --git a/src/data/model/obj_e_boat/obj_e_boat.c b/src/data/model/obj_e_boat/obj_e_boat.c index 0b123c0e..8ed35500 100644 --- a/src/data/model/obj_e_boat/obj_e_boat.c +++ b/src/data/model/obj_e_boat/obj_e_boat.c @@ -29,246 +29,219 @@ static Gfx obj_e_boat_boat1_model[] = { gsDPSetPrimColor(0, 128, 255, 255, 255, 255), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[30], 30, 0), - gsSPNTrianglesInit_5b( - 4, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 - ), - gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t7_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), - gsSPNTrianglesInit_5b( - 2, // tri count - 8, 9, 10, // tri0 - 8, 10, 11, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 0, 0 // tri2 + ), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 2, // tri count - 12, 13, 14, // tri0 - 12, 14, 15, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 0, 0, 0 // tri2 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t1_tex_txt, G_IM_FMT_CI, 32, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 5, // tri count - 16, 17, 18, // tri0 - 16, 18, 19, // tri1 - 16, 20, 21 // tri2 - ), - gsSPNTriangles_5b( - 16, 21, 17, // tri0 - 20, 22, 21, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(5, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 16, 20, 21 // tri2 + ), + gsSPNTriangles_5b(16, 21, 17, // tri0 + 20, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t3_tex_txt, G_IM_FMT_CI, 32, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), - gsSPNTrianglesInit_5b( - 5, // tri count - 23, 24, 25, // tri0 - 23, 25, 26, // tri1 - 23, 27, 24 // tri2 - ), - gsSPNTriangles_5b( - 26, 25, 28, // tri0 - 26, 28, 29, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(5, // tri count + 23, 24, 25, // tri0 + 23, 25, 26, // tri1 + 23, 27, 24 // tri2 + ), + gsSPNTriangles_5b(26, 25, 28, // tri0 + 26, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t2_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[60], 31, 0), - gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 2, // tri0 - 0, 2, 3, // tri1 - 4, 5, 6 // tri2 - ), - gsSPNTriangles_5b( - 4, 6, 7, // tri0 - 8, 9, 10, // tri1 - 8, 10, 11, // tri2 - 12, 13, 14 // tri3 - ), - gsSPNTriangles_5b( - 12, 14, 15, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t5_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), - gsSPNTrianglesInit_5b( - 4, // tri count - 16, 17, 18, // tri0 - 16, 18, 19, // tri1 - 20, 21, 22 // tri2 - ), - gsSPNTriangles_5b( - 20, 22, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 22, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t8_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 2, // tri count - 23, 24, 25, // tri0 - 23, 25, 26, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 23, 24, 25, // tri0 + 23, 25, 26, // tri1 + 0, 0, 0 // tri2 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t4_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 2, // tri count - 27, 28, 29, // tri0 - 27, 29, 30, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 27, 28, 29, // tri0 + 27, 29, 30, // tri1 + 0, 0, 0 // tri2 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t3_tex_txt, G_IM_FMT_CI, 32, 64, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsSPVertex(&obj_e_boat_v[91], 7, 0), - gsSPNTrianglesInit_5b( - 5, // tri count - 0, 1, 2, // tri0 - 0, 3, 1, // tri1 - 4, 5, 6 // tri2 - ), - gsSPNTriangles_5b( - 4, 3, 0, // tri0 - 4, 6, 3, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 0, // tri0 + 4, 6, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsSPEndDisplayList(), }; static Gfx obj_e_boat_water1_model[] = { gsSPTexture(0, 0, 0, 0, G_ON), - gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, COMBINED, 0, TEXEL0, 0), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, + COMBINED, 0, TEXEL0, 0), gsDPSetPrimColor(0, 255, 190, 210, 255, 230), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water2_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water1_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 14), - gsSPDisplayList(0x09000000), + gsSPDisplayList(anime_2_model), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[142], 14, 0), - gsSPNTrianglesInit_5b( - 14, // tri count - 0, 1, 2, // tri0 - 2, 1, 3, // tri1 - 4, 5, 6 // tri2 - ), - gsSPNTriangles_5b( - 2, 7, 8, // tri0 - 2, 9, 0, // tri1 - 10, 11, 12, // tri2 - 8, 9, 2 // tri3 - ), - gsSPNTriangles_5b( - 3, 7, 2, // tri0 - 8, 13, 10, // tri1 - 6, 13, 8, // tri2 - 8, 12, 9 // tri3 - ), - gsSPNTriangles_5b( - 10, 12, 8, // tri0 - 8, 4, 6, // tri1 - 7, 4, 8, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 2, 9, 0, // tri1 + 10, 11, 12, // tri2 + 8, 9, 2 // tri3 + ), + gsSPNTriangles_5b(3, 7, 2, // tri0 + 8, 13, 10, // tri1 + 6, 13, 8, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(10, 12, 8, // tri0 + 8, 4, 6, // tri1 + 7, 4, 8, // tri2 + 0, 0, 0 // tri3 + ), gsSPEndDisplayList(), }; static Gfx obj_e_boat_water2_model[] = { gsSPTexture(0, 0, 0, 0, G_ON), - gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, COMBINED, 0, TEXEL0, 0), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, + COMBINED, 0, TEXEL0, 0), gsDPSetPrimColor(0, 255, 190, 210, 255, 230), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water2_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water1_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 14), - gsSPDisplayList(0x09000000), - gsSPMatrix(0x0D000080, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPDisplayList(anime_2_model), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[125], 5, 0), - gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), gsSPVertex(&obj_e_boat_v[130], 12, 5), - gsSPNTrianglesInit_5b( - 8, // tri count - 1, 5, 6, // tri0 - 3, 7, 8, // tri1 - 0, 4, 9 // tri2 - ), - gsSPNTriangles_5b( - 4, 10, 11, // tri0 - 0, 12, 13, // tri1 - 4, 2, 14, // tri2 - 3, 1, 15 // tri3 - ), - gsSPNTriangles_5b( - 2, 3, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 6, // tri0 + 3, 7, 8, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 0, 12, 13, // tri1 + 4, 2, 14, // tri2 + 3, 1, 15 // tri3 + ), + gsSPNTriangles_5b(2, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsSPEndDisplayList(), }; static Gfx obj_e_boat_water3_model[] = { gsSPTexture(0, 0, 0, 0, G_ON), - gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, COMBINED, 0, TEXEL0, 0), + gsDPSetCombineLERP(PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, COMBINED, + COMBINED, 0, TEXEL0, 0), gsDPSetPrimColor(0, 255, 190, 210, 255, 230), gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_ZB_XLU_SURF2), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water2_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 0), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_water1_pic_i4, G_IM_FMT_I, 32, 32, 15, GX_REPEAT, GX_REPEAT, 0, 14), - gsSPDisplayList(0x09000000), - gsSPMatrix(0x0D0000C0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPDisplayList(anime_2_model), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[98], 5, 0), - gsSPMatrix(0x0D000100, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), gsSPVertex(&obj_e_boat_v[103], 22, 5), - gsSPNTrianglesInit_5b( - 8, // tri count - 0, 1, 5, // tri0 - 0, 6, 7, // tri1 - 1, 2, 8 // tri2 - ), - gsSPNTriangles_5b( - 2, 3, 9, // tri0 - 3, 4, 10, // tri1 - 4, 11, 12, // tri2 - 3, 13, 14 // tri3 - ), - gsSPNTriangles_5b( - 1, 15, 16, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), - gsSPNTrianglesInit_5b( - 8, // tri count - 17, 18, 19, // tri0 - 20, 21, 22, // tri1 - 19, 23, 24 // tri2 - ), - gsSPNTriangles_5b( - 20, 22, 25, // tri0 - 23, 26, 24, // tri1 - 25, 26, 23, // tri2 - 25, 23, 20 // tri3 - ), - gsSPNTriangles_5b( - 24, 17, 19, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 5, // tri0 + 0, 6, 7, // tri1 + 1, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 3, 4, 10, // tri1 + 4, 11, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 19, 23, 24 // tri2 + ), + gsSPNTriangles_5b(20, 22, 25, // tri0 + 23, 26, 24, // tri1 + 25, 26, 23, // tri2 + 25, 23, 20 // tri3 + ), + gsSPNTriangles_5b(24, 17, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsSPEndDisplayList(), }; @@ -280,65 +253,92 @@ static Gfx obj_e_boat_oar1_model[] = { gsDPSetPrimColor(0, 128, 255, 255, 255, 255), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), gsSPVertex(&obj_e_boat_v[0], 30, 0), - gsSPNTrianglesInit_5b( - 2, // tri count - 0, 1, 2, // tri0 - 3, 4, 5, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 0, 0 // tri2 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t11_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), - gsSPNTrianglesInit_5b( - 6, // tri count - 6, 7, 8, // tri0 - 6, 8, 9, // tri1 - 10, 11, 12 // tri2 - ), - gsSPNTriangles_5b( - 10, 12, 13, // tri0 - 14, 15, 16, // tri1 - 14, 16, 17, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(6, // tri count + 6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 11, 12 // tri2 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t9_tex_txt, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 4, // tri count - 18, 19, 20, // tri0 - 21, 18, 20, // tri1 - 22, 23, 24 // tri2 - ), - gsSPNTriangles_5b( - 25, 22, 24, // tri0 - 0, 0, 0, // tri1 - 0, 0, 0, // tri2 - 0, 0, 0 // tri3 - ), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 21, 18, 20, // tri1 + 22, 23, 24 // tri2 + ), + gsSPNTriangles_5b(25, 22, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), gsDPLoadTextureBlock_4b_Dolphin(obj_s_boat_t9_tex_txt, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), - gsSPNTrianglesInit_5b( - 2, // tri count - 26, 27, 28, // tri0 - 26, 28, 29, // tri1 - 0, 0, 0 // tri2 - ), + gsSPNTrianglesInit_5b(2, // tri count + 26, 27, 28, // tri0 + 26, 28, 29, // tri1 + 0, 0, 0 // tri2 + ), gsSPEndDisplayList(), }; extern cKF_Joint_R_c cKF_je_r_obj_e_boat_tbl[] = { - /* joint 0 */ obj_e_boat_boat1_model, 2, cKF_JOINT_FLAG_DISP_OPA, 0,0,0, - /* joint 1 */ NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,2200,-4500, - /* joint 2 */ obj_e_boat_oar1_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0, - /* joint 3 */ NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,4000, - /* joint 4 */ obj_e_boat_water1_model, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0, - /* joint 5 */ obj_e_boat_water2_model, 1, cKF_JOINT_FLAG_DISP_XLU, 8400,0,0, - /* joint 6 */ obj_e_boat_water3_model, 0, cKF_JOINT_FLAG_DISP_XLU, 4600,0,0, + /* joint 0 */ obj_e_boat_boat1_model, + 2, + cKF_JOINT_FLAG_DISP_OPA, + 0, + 0, + 0, + /* joint 1 */ NULL, + 1, + cKF_JOINT_FLAG_DISP_OPA, + 300, + 2200, + -4500, + /* joint 2 */ obj_e_boat_oar1_model, + 0, + cKF_JOINT_FLAG_DISP_OPA, + 0, + 0, + 0, + /* joint 3 */ NULL, + 1, + cKF_JOINT_FLAG_DISP_OPA, + 0, + 0, + 4000, + /* joint 4 */ obj_e_boat_water1_model, + 1, + cKF_JOINT_FLAG_DISP_XLU, + 0, + 0, + 0, + /* joint 5 */ obj_e_boat_water2_model, + 1, + cKF_JOINT_FLAG_DISP_XLU, + 8400, + 0, + 0, + /* joint 6 */ obj_e_boat_water3_model, + 0, + cKF_JOINT_FLAG_DISP_XLU, + 4600, + 0, + 0, }; -extern cKF_Skeleton_R_c cKF_bs_r_obj_e_boat = { - 7, // 7 total joints - 5, // 5 displayed joints (rendered joints) - cKF_je_r_obj_e_boat_tbl -}; +extern cKF_Skeleton_R_c cKF_bs_r_obj_e_boat = { 7, // 7 total joints + 5, // 5 displayed joints (rendered joints) + cKF_je_r_obj_e_boat_tbl }; static u8 cKF_ckcb_r_obj_e_boat_tbl[] = { /* joint 0 */ cKF_ANIMITION_BIT_NONE, @@ -350,59 +350,32 @@ static u8 cKF_ckcb_r_obj_e_boat_tbl[] = { /* joint 6 */ cKF_ANIMITION_BIT_NONE }; -static s16 cKF_kn_obj_e_boat_tbl[] = { - 8, - 5, - 9 -}; +static s16 cKF_kn_obj_e_boat_tbl[] = { 8, 5, 9 }; // Fixed position table (used when the joint has no translation) static s16 cKF_c_obj_e_boat_tbl[] = { - /* joint 0 */ 0, 0, 0, - /* joint 1 */ 0, 0, 0, - /* joint 2 */ 0, 900, 900, - /* joint 3 */ -450, 900, 450, - /* joint 4 */ 0, 0, 0, - /* joint 5 */ 0, 0, 0, - /* joint 6 */ 0, 0, 0 + /* joint 0 */ 0, 0, 0, + /* joint 1 */ 0, 0, 0, + /* joint 2 */ 0, 900, 900, + /* joint 3 */ -450, 900, 450, + /* joint 4 */ 0, 0, 0, + /* joint 5 */ 0, 0, 0, + /* joint 6 */ 0, 0, 0 }; /* frame value slope */ static s16 cKF_ds_obj_e_boat_tbl[] = { /* joint 2 X rotational frames */ - 1, 904, 648, - 13, 1075, 212, - 23, 1099, -60, - 40, 920, -572, - 45, 828, -481, - 62, 701, 20, - 80, 877, 651, - 81, 900, 675, + 1, 904, 648, 13, 1075, 212, 23, 1099, -60, 40, 920, -572, 45, 828, -481, 62, 701, 20, 80, 877, 651, 81, 900, 675, /* joint 2 Y rotational frames */ - 1, 449, 134, - 27, 495, -50, - 43, 442, -124, - 67, 405, 49, - 81, 449, 132, - + 1, 449, 134, 27, 495, -50, 43, 442, -124, 67, 405, 49, 81, 449, 132, + /* joint 2 Z rotational frames */ - 1, -180, 143, - 5, -143, 443, - 20, 141, 303, - 26, 177, 119, - 40, 183, -81, - 44, 156, -370, - 60, -141, -305, - 65, -173, -137, - 81, -180, 83 + 1, -180, 143, 5, -143, 443, 20, 141, 303, 26, 177, 119, 40, 183, -81, 44, 156, -370, 60, -141, -305, 65, -173, -137, + 81, -180, 83 }; extern cKF_Animation_R_c cKF_ba_r_obj_e_boat = { - cKF_ckcb_r_obj_e_boat_tbl, - cKF_ds_obj_e_boat_tbl, - cKF_kn_obj_e_boat_tbl, - cKF_c_obj_e_boat_tbl, - -1, - 81 + cKF_ckcb_r_obj_e_boat_tbl, cKF_ds_obj_e_boat_tbl, cKF_kn_obj_e_boat_tbl, cKF_c_obj_e_boat_tbl, -1, 81 }; diff --git a/src/data/npc/model/mdl/ant_1.c b/src/data/npc/model/mdl/ant_1.c new file mode 100644 index 00000000..a4d4a4f8 --- /dev/null +++ b/src/data/npc/model/mdl/ant_1.c @@ -0,0 +1,627 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx ant_1_v[] = { +#include "assets/npc/mdl/ant_1_v.inc" +}; + +static Gfx head_ant_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[21], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[29], 22, 8), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 8, // tri0 + 4, 10, 9, // tri1 + 1, 12, 11 // tri2 + ), + gsSPNTriangles_5b(1, 14, 13, // tri0 + 4, 16, 15, // tri1 + 7, 4, 17, // tri2 + 1, 7, 18 // tri3 + ), + gsSPNTriangles_5b(7, 19, 20, // tri0 + 3, 1, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 2, 22, // tri0 + 5, 0, 23, // tri1 + 0, 24, 25 // tri2 + ), + gsSPNTriangles_5b(2, 26, 27, // tri0 + 5, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ant_1_v[51], 27, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 7, 6, // tri1 + 2, 8, 0, // tri2 + 0, 8, 5 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(19, // tri count + 9, 10, 11, // tri0 + 9, 12, 13, // tri1 + 14, 15, 9 // tri2 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 11, // tri1 + 21, 22, 23, // tri2 + 12, 9, 15 // tri3 + ), + gsSPNTriangles_5b(24, 14, 25, // tri0 + 26, 24, 25, // tri1 + 9, 13, 21, // tri2 + 17, 16, 21 // tri3 + ), + gsSPNTriangles_5b(25, 14, 9, // tri0 + 16, 10, 9, // tri1 + 21, 13, 22, // tri2 + 25, 11, 20 // tri3 + ), + gsSPNTriangles_5b(9, 11, 25, // tri0 + 21, 16, 9, // tri1 + 25, 20, 26, // tri2 + 23, 17, 21 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 48, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ant_1_v[78], 28, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 11, 12 // tri2 + ), + gsSPNTriangles_5b(12, 13, 10, // tri0 + 11, 10, 6, // tri1 + 11, 6, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 17, 16, 15, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 15, 14, 18, // tri1 + 18, 20, 21, // tri2 + 22, 21, 20 // tri3 + ), + gsSPNTriangles_5b(14, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 24, 27, 25, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ant_1_v[106], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 0, 7, 1, // tri1 + 3, 8, 2, // tri2 + 2, 8, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_ant_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[7], 14, 7), + gsSPNTrianglesInit_5b(5, // tri count + 3, 2, 7, // tri0 + 0, 5, 8, // tri1 + 1, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 2, 1, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 6, 13, 14, // tri0 + 4, 15, 16, // tri1 + 4, 17, 6 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_ant_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[151], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[156], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_ant_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[172], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[176], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_ant_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[115], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[120], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_ant_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[136], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[140], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_ant_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[187], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[194], 22, 7), + gsSPNTrianglesInit_5b(14, // tri count + 6, 7, 8, // tri0 + 4, 9, 1, // tri1 + 5, 0, 10 // tri2 + ), + gsSPNTriangles_5b(2, 6, 11, // tri0 + 6, 3, 12, // tri1 + 1, 13, 14, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 17, 18, // tri0 + 1, 20, 19, // tri1 + 2, 21, 22, // tri2 + 2, 23, 0 // tri3 + ), + gsSPNTriangles_5b(3, 24, 25, // tri0 + 6, 26, 27, // tri1 + 3, 1, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&ant_1_v[216], 13, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 9, 8, 7, // tri1 + 6, 5, 10, // tri2 + 10, 5, 11 // tri3 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 9, 12, 8, // tri1 + 8, 1, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_ant_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[229], 30, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b(10, 8, 7, // tri0 + 6, 11, 9, // tri1 + 1, 5, 3, // tri2 + 3, 9, 2 // tri3 + ), + gsSPNTriangles_5b(7, 4, 2, // tri0 + 11, 6, 12, // tri1 + 9, 3, 6, // tri2 + 9, 11, 10 // tri3 + ), + gsSPNTriangles_5b(12, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(16, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 21, 17 // tri2 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 24, 25, 21, // tri1 + 19, 26, 24, // tri2 + 27, 24, 26 // tri3 + ), + gsSPNTriangles_5b(27, 25, 24, // tri0 + 23, 28, 26, // tri1 + 18, 22, 20, // tri2 + 20, 26, 19 // tri3 + ), + gsSPNTriangles_5b(24, 21, 19, // tri0 + 28, 23, 29, // tri1 + 26, 20, 23, // tri2 + 26, 28, 27 // tri3 + ), + gsSPNTriangles_5b(29, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_ant_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[308], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[313], 18, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 17, 22 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_ant_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[331], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[335], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 2, 4, // tri0 + 1, 5, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 0, 11, 10, // tri1 + 0, 3, 12, // tri2 + 0, 13, 1 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 19 // tri2 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 24, 21, 17, // tri1 + 17, 19, 24, // tri2 + 22, 25, 20 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_ant_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[259], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[264], 18, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 15, 22 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_ant_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[282], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ant_1_v[286], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 0, 11, 10, // tri1 + 3, 0, 12, // tri2 + 1, 13, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 17, 23, 18 // tri2 + ), + gsSPNTriangles_5b(21, 20, 24, // tri0 + 19, 21, 24, // tri1 + 24, 17, 19, // tri2 + 22, 25, 20 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_ant_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ant_1_v[357], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 7, // tri1 + 10, 0, 2, // tri2 + 4, 11, 12 // tri3 + ), + gsSPNTriangles_5b(5, 4, 13, // tri0 + 4, 12, 13, // tri1 + 3, 5, 9, // tri2 + 9, 8, 3 // tri3 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_ant_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_ant_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-550,0 }, + /* joint 3 */ { Lfoot1_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,550,0 }, + /* joint 7 */ { Rfoot1_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,-900 }, + /* joint 11 */ { tail1_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_ant_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,-850,0 }, + /* joint 15 */ { Larm1_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_ant_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,850,0 }, + /* joint 18 */ { Rarm1_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1099,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1000,0,1800 }, + /* joint 23 */ { mouth_ant_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_ant_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_ant_1 = { 26, 13, cKF_je_r_ant_1_tbl }; diff --git a/src/data/npc/model/mdl/bea_1.c b/src/data/npc/model/mdl/bea_1.c new file mode 100644 index 00000000..a2e9934a --- /dev/null +++ b/src/data/npc/model/mdl/bea_1.c @@ -0,0 +1,590 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx bea_1_v[] = { +#include "assets/npc/mdl/bea_1_v.inc" +}; + +static Gfx head_bea_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[0], 24, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 3, // tri1 + 9, 5, 10, // tri2 + 3, 8, 2 // tri3 + ), + gsSPNTriangles_5b(10, 5, 11, // tri0 + 5, 0, 2, // tri1 + 8, 7, 12, // tri2 + 10, 11, 13 // tri3 + ), + gsSPNTriangles_5b(2, 11, 5, // tri0 + 8, 11, 2, // tri1 + 12, 11, 8, // tri2 + 13, 11, 12 // tri3 + ), + gsSPNTriangles_5b(14, 15, 6, // tri0 + 14, 6, 3, // tri1 + 14, 3, 16, // tri2 + 6, 15, 7 // tri3 + ), + gsSPNTriangles_5b(16, 3, 1, // tri0 + 16, 1, 17, // tri1 + 17, 1, 18, // tri2 + 0, 19, 18 // tri3 + ), + gsSPNTriangles_5b(16, 17, 20, // tri0 + 13, 12, 21, // tri1 + 22, 15, 14, // tri2 + 15, 23, 7 // tri3 + ), + gsSPNTriangles_5b(18, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bea_1_v[24], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(2, 1, 5, // tri0 + 2, 6, 7, // tri1 + 7, 8, 2, // tri2 + 5, 6, 2 // tri3 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 8, 10, 11, // tri1 + 12, 5, 1, // tri2 + 13, 14, 1 // tri3 + ), + gsSPNTriangles_5b(8, 11, 4, // tri0 + 0, 13, 1, // tri1 + 2, 8, 4, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(1, 14, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bea_1_v[39], 18, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(1, 3, 7, // tri0 + 8, 6, 9, // tri1 + 8, 9, 10, // tri2 + 7, 8, 10 // tri3 + ), + gsSPNTriangles_5b(1, 0, 3, // tri0 + 8, 7, 5, // tri1 + 8, 5, 6, // tri2 + 3, 5, 7 // tri3 + ), + gsSPNTriangles_5b(3, 0, 4, // tri0 + 11, 4, 0, // tri1 + 9, 6, 11, // tri2 + 12, 11, 0 // tri3 + ), + gsSPNTriangles_5b(11, 13, 9, // tri0 + 6, 4, 14, // tri1 + 12, 0, 15, // tri2 + 9, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 10, 9, // tri0 + 2, 15, 0, // tri1 + 9, 13, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bea_1_v[57], 26, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 8, 10, // tri1 + 11, 12, 13, // tri2 + 10, 13, 9 // tri3 + ), + gsSPNTriangles_5b(11, 13, 10, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 11, 10, // tri0 + 16, 20, 21, // tri1 + 16, 21, 14, // tri2 + 19, 22, 23 // tri3 + ), + gsSPNTriangles_5b(19, 23, 17, // tri0 + 24, 3, 1, // tri1 + 2, 3, 25, // tri2 + 25, 5, 2 // tri3 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_bea_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[120], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[126], 13, 6), + gsSPNTrianglesInit_5b(7, // tri count + 0, 6, 7, // tri0 + 4, 5, 8, // tri1 + 1, 4, 9 // tri2 + ), + gsSPNTriangles_5b(5, 10, 11, // tri0 + 3, 2, 12, // tri1 + 4, 13, 14, // tri2 + 5, 3, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_bea_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[139], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[145], 12, 6), + gsSPNTrianglesInit_5b(8, // tri count + 4, 6, 7, // tri0 + 0, 8, 9, // tri1 + 1, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 13, // tri0 + 1, 0, 14, // tri1 + 2, 1, 15, // tri2 + 5, 3, 16 // tri3 + ), + gsSPNTriangles_5b(0, 4, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_bea_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[83], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[89], 13, 6), + gsSPNTrianglesInit_5b(7, // tri count + 0, 6, 7, // tri0 + 5, 4, 8, // tri1 + 4, 1, 9 // tri2 + ), + gsSPNTriangles_5b(5, 10, 11, // tri0 + 2, 3, 12, // tri1 + 4, 13, 14, // tri2 + 3, 5, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_bea_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[102], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[108], 12, 6), + gsSPNTrianglesInit_5b(8, // tri count + 4, 6, 7, // tri0 + 0, 8, 9, // tri1 + 1, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 13, // tri0 + 0, 1, 14, // tri1 + 1, 2, 15, // tri2 + 3, 5, 16 // tri3 + ), + gsSPNTriangles_5b(4, 0, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_bea_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[157], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[167], 21, 10), + gsSPNTrianglesInit_5b(14, // tri count + 0, 2, 10, // tri0 + 3, 11, 12, // tri1 + 4, 6, 13 // tri2 + ), + gsSPNTriangles_5b(7, 1, 14, // tri0 + 9, 15, 16, // tri1 + 6, 9, 17, // tri2 + 4, 18, 19 // tri3 + ), + gsSPNTriangles_5b(8, 20, 21, // tri0 + 8, 3, 22, // tri1 + 2, 23, 24, // tri2 + 8, 25, 2 // tri3 + ), + gsSPNTriangles_5b(2, 26, 27, // tri0 + 9, 7, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&bea_1_v[188], 21, 10), + gsSPNTrianglesInit_5b(3, // tri count + 3, 11, 10, // tri0 + 3, 5, 12, // tri1 + 9, 13, 14 // tri2 + ), + gsSPNTrianglesInit_5b(13, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 16, 15, 19 // tri2 + ), + gsSPNTriangles_5b(16, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 23, // tri2 + 26, 23, 25 // tri3 + ), + gsSPNTriangles_5b(23, 26, 27, // tri0 + 23, 27, 21, // tri1 + 23, 22, 28, // tri2 + 23, 28, 24 // tri3 + ), + gsSPNTriangles_5b(19, 29, 30, // tri0 + 20, 19, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_bea_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[209], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[214], 20, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 5, 6, // tri0 + 2, 7, 8, // tri1 + 3, 9, 2 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 1, 11, 12, // tri1 + 4, 1, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 19, 16, 20, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(24, 17, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_bea_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[285], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[290], 20, 5), + gsSPNTrianglesInit_5b(10, // tri count + 3, 5, 6, // tri0 + 1, 7, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 4, 11, // tri0 + 2, 12, 13, // tri1 + 3, 0, 14, // tri2 + 3, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 0, // tri0 + 4, 3, 18, // tri1 + 1, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_bea_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[310], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[317], 19, 7), + gsSPNTrianglesInit_5b(11, // tri count + 2, 7, 4, // tri0 + 2, 0, 8, // tri1 + 3, 9, 1 // tri2 + ), + gsSPNTriangles_5b(4, 10, 5, // tri0 + 4, 11, 12, // tri1 + 3, 6, 13, // tri2 + 5, 14, 15 // tri3 + ), + gsSPNTriangles_5b(4, 17, 16, // tri0 + 0, 18, 19, // tri1 + 6, 5, 20, // tri2 + 3, 21, 22 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_bea_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[234], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[239], 20, 5), + gsSPNTrianglesInit_5b(10, // tri count + 3, 5, 6, // tri0 + 1, 7, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(4, 1, 11, // tri0 + 2, 12, 13, // tri1 + 0, 14, 15, // tri2 + 0, 3, 16 // tri3 + ), + gsSPNTriangles_5b(0, 17, 2, // tri0 + 3, 4, 18, // tri1 + 1, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_bea_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[259], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bea_1_v[266], 19, 7), + gsSPNTrianglesInit_5b(11, // tri count + 4, 7, 2, // tri0 + 0, 2, 8, // tri1 + 1, 9, 3 // tri2 + ), + gsSPNTriangles_5b(5, 10, 4, // tri0 + 4, 11, 12, // tri1 + 6, 3, 13, // tri2 + 5, 14, 15 // tri3 + ), + gsSPNTriangles_5b(4, 17, 16, // tri0 + 0, 18, 19, // tri1 + 5, 6, 20, // tri2 + 3, 21, 22 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_bea_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bea_1_v[336], 20, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 5, 4, // tri1 + 11, 12, 13, // tri2 + 5, 14, 6 // tri3 + ), + gsSPNTriangles_5b(0, 3, 14, // tri0 + 5, 15, 14, // tri1 + 13, 16, 17, // tri2 + 17, 18, 9 // tri3 + ), + gsSPNTriangles_5b(14, 15, 0, // tri0 + 9, 19, 17, // tri1 + 17, 19, 13, // tri2 + 13, 12, 16 // tri3 + ), + gsSPNTriangles_5b(7, 9, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bea_1_v[356], 14, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 7, // tri0 + 6, 9, 10, // tri1 + 8, 9, 5, // tri2 + 6, 10, 7 // tri3 + ), + gsSPNTriangles_5b(3, 4, 11, // tri0 + 12, 11, 4, // tri1 + 3, 1, 0, // tri2 + 13, 1, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_bea_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_bea_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-500,0 }, + /* joint 3 */ { Lfoot1_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,500,0 }, + /* joint 7 */ { Rfoot1_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 325,0,-973 }, + /* joint 11 */ { tail1_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_bea_model, 3, cKF_JOINT_FLAG_DISP_OPA, 939,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 775,-700,0 }, + /* joint 15 */ { Larm1_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_bea_model, 0, cKF_JOINT_FLAG_DISP_OPA, 703,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 775,700,0 }, + /* joint 18 */ { Rarm1_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1265,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_bea_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1500,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_bea_1 = { 26, 12, cKF_je_r_bea_1_tbl }; diff --git a/src/data/npc/model/mdl/bev_1.c b/src/data/npc/model/mdl/bev_1.c new file mode 100644 index 00000000..8e21a82a --- /dev/null +++ b/src/data/npc/model/mdl/bev_1.c @@ -0,0 +1,691 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx bev_1_v[] = { +#include "assets/npc/mdl/bev_1_v.inc" +}; + +static Gfx head_bev_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[0], 29, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 5, 3 // tri2 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 16, 17, 18, // tri1 + 16, 18, 19, // tri2 + 14, 20, 12 // tri3 + ), + gsSPNTriangles_5b(11, 21, 9, // tri0 + 8, 22, 6, // tri1 + 23, 24, 25, // tri2 + 26, 27, 23 // tri3 + ), + gsSPNTriangles_5b(23, 28, 26, // tri0 + 25, 28, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bev_1_v[29], 29, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(3, 6, 7, // tri0 + 0, 8, 9, // tri1 + 10, 11, 3, // tri2 + 2, 11, 10 // tri3 + ), + gsSPNTriangles_5b(3, 0, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 13, 14, 15, // tri0 + 16, 17, 14, // tri1 + 14, 18, 19 // tri2 + ), + gsSPNTriangles_5b(14, 19, 16, // tri0 + 14, 17, 20, // tri1 + 20, 15, 14, // tri2 + 21, 22, 16 // tri3 + ), + gsSPNTriangles_5b(16, 19, 23, // tri0 + 23, 24, 21, // tri1 + 13, 18, 14, // tri2 + 22, 17, 16 // tri3 + ), + gsSPNTriangles_5b(21, 16, 23, // tri0 + 15, 25, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&bev_1_v[58], 30, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 8, 17, 18 // tri3 + ), + gsSPNTriangles_5b(12, 19, 17, // tri0 + 1, 4, 3, // tri1 + 20, 21, 22, // tri2 + 23, 2, 1 // tri3 + ), + gsSPNTriangles_5b(19, 1, 0, // tri0 + 24, 2, 21, // tri1 + 20, 14, 24, // tri2 + 17, 10, 13 // tri3 + ), + gsSPNTriangles_5b(17, 0, 18, // tri0 + 18, 0, 24, // tri1 + 0, 17, 19, // tri2 + 2, 24, 0 // tri3 + ), + gsSPNTriangles_5b(23, 21, 2, // tri0 + 19, 12, 4, // tri1 + 25, 8, 16, // tri2 + 25, 16, 26 // tri3 + ), + gsSPNTriangles_5b(13, 12, 17, // tri0 + 24, 21, 20, // tri1 + 7, 22, 21, // tri2 + 5, 4, 12 // tri3 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&bev_1_v[88], 19, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 5 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 8, 9, 6, // tri1 + 10, 11, 1, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bev_1_v[107], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 5, 11, 12, // tri1 + 2, 13, 0, // tri2 + 11, 14, 9 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 5, 17, 3, // tri1 + 15, 8, 2, // tri2 + 2, 1, 15 // tri3 + ), + gsSPNTriangles_5b(12, 17, 5, // tri0 + 8, 16, 6, // tri1 + 10, 12, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPVertex(&bev_1_v[125], 23, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 1, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 7, 6, // tri2 + 5, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 1, 5, // tri0 + 9, 15, 5, // tri1 + 5, 14, 7, // tri2 + 16, 3, 17 // tri3 + ), + gsSPNTriangles_5b(17, 9, 16, // tri0 + 18, 19, 20, // tri1 + 7, 12, 5, // tri2 + 5, 16, 9 // tri3 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 4, 17, 3, // tri1 + 17, 4, 10, // tri2 + 21, 14, 13 // tri3 + ), + gsSPNTriangles_5b(22, 8, 7, // tri0 + 15, 13, 5, // tri1 + 13, 15, 21, // tri2 + 3, 16, 5 // tri3 + ), + gsSPNTriangles_5b(8, 0, 6, // tri0 + 10, 9, 17, // tri1 + 5, 12, 2, // tri2 + 6, 2, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bev_1_v[148], 18, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 4, 10, 11, // tri1 + 4, 6, 12, // tri2 + 4, 13, 10 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 14, 5, 0, // tri1 + 6, 9, 8, // tri2 + 11, 5, 4 // tri3 + ), + gsSPNTriangles_5b(5, 11, 1, // tri0 + 8, 12, 6, // tri1 + 15, 9, 6, // tri2 + 15, 16, 9 // tri3 + ), + gsSPNTriangles_5b(1, 0, 5, // tri0 + 15, 6, 3, // tri1 + 12, 13, 4, // tri2 + 0, 17, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_bev_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[202], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[207], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_bev_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[223], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[227], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 0, 11, 10, // tri1 + 1, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_bev_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[166], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[171], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_bev_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[187], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[191], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 3, 9, // tri0 + 0, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 2, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_bev_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[238], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[249], 12, 11), + gsSPNTrianglesInit_5b(8, // tri count + 3, 11, 12, // tri0 + 4, 13, 8, // tri1 + 3, 8, 14 // tri2 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 7, 18, 17, // tri1 + 7, 6, 19, // tri2 + 4, 7, 20 // tri3 + ), + gsSPNTriangles_5b(6, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bev_1_v[261], 18, 11), + gsSPNTrianglesInit_5b(9, // tri count + 1, 0, 11, // tri0 + 9, 10, 12, // tri1 + 5, 13, 14 // tri2 + ), + gsSPNTriangles_5b(5, 9, 15, // tri0 + 10, 1, 16, // tri1 + 2, 17, 18, // tri2 + 0, 2, 19 // tri3 + ), + gsSPNTriangles_5b(10, 20, 21, // tri0 + 1, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 27, 28, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&bev_1_v[279], 18, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 7, 0, // tri0 + 5, 1, 0, // tri1 + 0, 3, 5, // tri2 + 1, 8, 2 // tri3 + ), + gsSPNTriangles_5b(1, 5, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 9, 10, 11, // tri0 + 11, 12, 9, // tri1 + 13, 10, 9 // tri2 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 11, 14, 16, // tri1 + 11, 17, 14, // tri2 + 10, 17, 11 // tri3 + ), + gsSPNTriangles_5b(16, 12, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_bev_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[317], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[320], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 0, 2, 10, // tri1 + 1, 11, 12, // tri2 + 2, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_bev_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[297], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[301], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 3, 0, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 10, 1, // tri1 + 1, 11, 0, // tri2 + 3, 12, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_bev_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[362], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[367], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_bev_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[384], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_bev_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[331], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bev_1_v[336], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_bev_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[353], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_bev_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bev_1_v[393], 28, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 0, // tri0 + 9, 10, 11, // tri1 + 9, 12, 6, // tri2 + 13, 14, 6 // tri3 + ), + gsSPNTriangles_5b(15, 13, 12, // tri0 + 9, 16, 12, // tri1 + 15, 12, 16, // tri2 + 6, 12, 13 // tri3 + ), + gsSPNTriangles_5b(6, 10, 9, // tri0 + 3, 17, 4, // tri1 + 13, 18, 19, // tri2 + 14, 19, 20 // tri3 + ), + gsSPNTriangles_5b(15, 18, 13, // tri0 + 14, 13, 19, // tri1 + 21, 16, 22, // tri2 + 1, 23, 2 // tri3 + ), + gsSPNTriangles_5b(15, 21, 18, // tri0 + 24, 25, 26, // tri1 + 22, 9, 11, // tri2 + 11, 10, 27 // tri3 + ), + gsSPNTriangles_5b(16, 9, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_bev_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_bev_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-370,0 }, + /* joint 3 */ { Lfoot1_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,370,0 }, + /* joint 7 */ { Rfoot1_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-1100 }, + /* joint 11 */ { tail1_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_bev_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, + /* joint 13 */ { chest_bev_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 550,-800,0 }, + /* joint 15 */ { Larm1_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_bev_model, 0, cKF_JOINT_FLAG_DISP_OPA, 401,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 550,800,0 }, + /* joint 18 */ { Rarm1_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 399,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 776,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,300 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_bev_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1499,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_bev_1 = { 26, 13, cKF_je_r_bev_1_tbl }; diff --git a/src/data/npc/model/mdl/boa_1.c b/src/data/npc/model/mdl/boa_1.c new file mode 100644 index 00000000..7910010e --- /dev/null +++ b/src/data/npc/model/mdl/boa_1.c @@ -0,0 +1,752 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx boa_1_v[] = { +#include "assets/npc/mdl/boa_1_v.inc" +}; + +static Gfx head_boa_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[26], 28, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 4, 5, 6, // tri0 + 7, 5, 4, // tri1 + 8, 5, 7 // tri2 + ), + gsSPNTriangles_5b(6, 5, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 12, 13, 10, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 15, 14 // tri2 + ), + gsSPNTriangles_5b(17, 14, 19, // tri0 + 17, 19, 20, // tri1 + 18, 16, 15, // tri2 + 16, 18, 20 // tri3 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 20, 18, 17, // tri1 + 20, 19, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(10, // tri count + 21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 23, 22, 25 // tri2 + ), + gsSPNTriangles_5b(26, 23, 25, // tri0 + 27, 26, 25, // tri1 + 22, 21, 24, // tri2 + 27, 24, 21 // tri3 + ), + gsSPNTriangles_5b(26, 21, 23, // tri0 + 25, 24, 27, // tri1 + 21, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&boa_1_v[54], 22, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 8, 1, 6, // tri1 + 5, 9, 3, // tri2 + 3, 9, 10 // tri3 + ), + gsSPNTriangles_5b(0, 11, 7, // tri0 + 0, 12, 11, // tri1 + 10, 8, 3, // tri2 + 13, 2, 14 // tri3 + ), + gsSPNTriangles_5b(7, 15, 16, // tri0 + 17, 18, 1, // tri1 + 19, 20, 21, // tri2 + 21, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 1, 18, // tri0 + 15, 7, 11, // tri1 + 13, 21, 20, // tri2 + 15, 11, 19 // tri3 + ), + gsSPNTriangles_5b(16, 4, 7, // tri0 + 14, 2, 18, // tri1 + 19, 11, 20, // tri2 + 1, 8, 17 // tri3 + ), + gsSPNTriangles_5b(7, 6, 0, // tri0 + 0, 6, 1, // tri1 + 6, 3, 8, // tri2 + 0, 2, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&boa_1_v[76], 21, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(5, 9, 3, // tri0 + 10, 2, 11, // tri1 + 12, 6, 13, // tri2 + 5, 8, 7 // tri3 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 14, 11, 2, // tri1 + 6, 12, 15, // tri2 + 1, 14, 2 // tri3 + ), + gsSPNTriangles_5b(6, 15, 7, // tri0 + 3, 9, 16, // tri1 + 17, 18, 13, // tri2 + 1, 0, 16 // tri3 + ), + gsSPNTriangles_5b(13, 18, 12, // tri0 + 16, 0, 19, // tri1 + 10, 20, 17, // tri2 + 11, 20, 10 // tri3 + ), + gsSPNTriangles_5b(16, 19, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&boa_1_v[97], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 1, // tri1 + 14, 15, 16, // tri2 + 3, 9, 17 // tri3 + ), + gsSPNTriangles_5b(4, 3, 18, // tri0 + 19, 8, 7, // tri1 + 20, 21, 22, // tri2 + 23, 20, 11 // tri3 + ), + gsSPNTriangles_5b(9, 3, 10, // tri0 + 20, 23, 21, // tri1 + 1, 0, 12, // tri2 + 11, 20, 24 // tri3 + ), + gsSPNTriangles_5b(1, 22, 25, // tri0 + 1, 25, 2, // tri1 + 26, 23, 11, // tri2 + 13, 22, 1 // tri3 + ), + gsSPNTriangles_5b(11, 24, 9, // tri0 + 8, 27, 17, // tri1 + 17, 27, 3, // tri2 + 28, 29, 30 // tri3 + ), + gsSPNTriangles_5b(8, 0, 6, // tri0 + 2, 6, 0, // tri1 + 22, 13, 24, // tri2 + 22, 24, 20 // tri3 + ), + gsSPVertex(&boa_1_v[128], 27, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 0, 3, // tri2 + 12, 8, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 13, 16, // tri1 + 17, 18, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 23, 20, // tri0 + 5, 24, 6, // tri1 + 23, 25, 20, // tri2 + 15, 26, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_boa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[6], 20, 6), + gsSPNTrianglesInit_5b(10, // tri count + 3, 4, 6, // tri0 + 5, 2, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 3, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 3, 17, // tri0 + 1, 18, 19, // tri1 + 1, 0, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 23, 25, 21 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_boa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[189], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[193], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_boa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[209], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[212], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_boa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[155], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[159], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_boa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[175], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[178], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_boa_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[223], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[233], 20, 10), + gsSPNTrianglesInit_5b(13, // tri count + 2, 5, 10, // tri0 + 5, 6, 11, // tri1 + 1, 12, 13 // tri2 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 3, 2, 16, // tri1 + 4, 17, 18, // tri2 + 0, 4, 19 // tri3 + ), + gsSPNTriangles_5b(7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 6, 8, 24, // tri2 + 7, 1, 25 // tri3 + ), + gsSPNTriangles_5b(8, 26, 27, // tri0 + 5, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&boa_1_v[253], 4, 10), + gsSPNTrianglesInit_5b(3, // tri count + 1, 9, 10, // tri0 + 9, 0, 11, // tri1 + 5, 12, 13 // tri2 + ), + gsSPVertex(&boa_1_v[257], 23, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 0, // tri0 + 0, 7, 8, // tri1 + 9, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTriangles_5b(0, 8, 12, // tri0 + 9, 14, 15, // tri1 + 15, 10, 9, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b(10, 16, 11, // tri0 + 11, 17, 9, // tri1 + 11, 18, 17, // tri2 + 14, 19, 15 // tri3 + ), + gsSPNTriangles_5b(3, 20, 7, // tri0 + 16, 10, 15, // tri1 + 5, 21, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[280], 31, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 7, // tri1 + 9, 7, 6, // tri2 + 11, 0, 5 // tri3 + ), + gsSPNTriangles_5b(2, 7, 10, // tri0 + 2, 10, 3, // tri1 + 2, 8, 7, // tri2 + 1, 8, 2 // tri3 + ), + gsSPNTriangles_5b(8, 1, 12, // tri0 + 13, 10, 9, // tri1 + 12, 1, 0, // tri2 + 12, 0, 11 // tri3 + ), + gsSPNTriangles_5b(14, 3, 10, // tri0 + 14, 4, 3, // tri1 + 10, 13, 14, // tri2 + 0, 3, 4 // tri3 + ), + gsSPNTriangles_5b(9, 15, 13, // tri0 + 5, 16, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 24, 22, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 25, 26, 27, // tri0 + 26, 25, 28, // tri1 + 26, 29, 27 // tri2 + ), + gsSPNTriangles_5b(29, 26, 28, // tri0 + 30, 25, 27, // tri1 + 25, 30, 28, // tri2 + 29, 30, 27 // tri3 + ), + gsSPNTriangles_5b(30, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&boa_1_v[311], 30, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(0, 3, 5, // tri0 + 3, 0, 2, // tri1 + 4, 1, 5, // tri2 + 1, 4, 2 // tri3 + ), + gsSPNTriangles_5b(1, 0, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 10, 9, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 11, // tri0 + 9, 6, 8, // tri1 + 10, 7, 11, // tri2 + 7, 10, 8 // tri3 + ), + gsSPNTriangles_5b(7, 6, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 178, 178, 178, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_boa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[382], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[388], 14, 6), + gsSPNTrianglesInit_5b(5, // tri count + 2, 4, 6, // tri0 + 0, 2, 7, // tri1 + 4, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 11, 10, // tri0 + 2, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 3, 5, 14, // tri0 + 5, 1, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 16, 19, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_boa_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[402], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[410], 13, 8), + gsSPNTrianglesInit_5b(9, // tri count + 6, 8, 9, // tri0 + 7, 4, 10, // tri1 + 5, 11, 12 // tri2 + ), + gsSPNTriangles_5b(2, 6, 13, // tri0 + 0, 2, 14, // tri1 + 3, 15, 5, // tri2 + 3, 16, 17 // tri3 + ), + gsSPNTriangles_5b(3, 1, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_boa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[341], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[347], 14, 6), + gsSPNTrianglesInit_5b(2, // tri count + 5, 3, 6, // tri0 + 1, 5, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 2, 8, 9, // tri0 + 4, 2, 10, // tri1 + 2, 0, 11 // tri2 + ), + gsSPNTriangles_5b(4, 13, 12, // tri0 + 0, 15, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 17, 19, 18 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_boa_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[361], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&boa_1_v[369], 13, 8), + gsSPNTrianglesInit_5b(9, // tri count + 6, 8, 9, // tri0 + 4, 2, 10, // tri1 + 4, 11, 12 // tri2 + ), + gsSPNTriangles_5b(7, 5, 13, // tri0 + 3, 6, 14, // tri1 + 2, 0, 15, // tri2 + 1, 3, 16 // tri3 + ), + gsSPNTriangles_5b(3, 17, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_boa_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&boa_1_v[423], 30, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 5, 9, 3 // tri3 + ), + gsSPNTriangles_5b(15, 18, 19, // tri0 + 20, 13, 12, // tri1 + 8, 7, 21, // tri2 + 11, 3, 9 // tri3 + ), + gsSPNTriangles_5b(19, 16, 15, // tri0 + 22, 15, 17, // tri1 + 20, 23, 13, // tri2 + 7, 24, 21 // tri3 + ), + gsSPNTriangles_5b(21, 24, 25, // tri0 + 14, 26, 12, // tri1 + 8, 27, 6, // tri2 + 21, 28, 8 // tri3 + ), + gsSPNTriangles_5b(12, 29, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_boa_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_boa_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 150,0,-850 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_boa_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_boa_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { mouth_boa_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_boa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1245,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_boa_1 = { 26, 12, cKF_je_r_boa_1_tbl }; diff --git a/src/data/npc/model/mdl/bpt_1.c b/src/data/npc/model/mdl/bpt_1.c new file mode 100644 index 00000000..003366b0 --- /dev/null +++ b/src/data/npc/model/mdl/bpt_1.c @@ -0,0 +1,709 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx bpt_1_v[] = { +#include "assets/npc/mdl/bpt_1_v.inc" +}; + +static Gfx head_bpt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[21], 25, 0), + gsSPNTrianglesInit_5b(34, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 8, 9, 10, // tri1 + 11, 12, 5, // tri2 + 5, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 10, 12, 8, // tri1 + 13, 9, 16, // tri2 + 13, 16, 17 // tri3 + ), + gsSPNTriangles_5b(9, 8, 16, // tri0 + 17, 14, 13, // tri1 + 0, 18, 19, // tri2 + 17, 16, 20 // tri3 + ), + gsSPNTriangles_5b(17, 20, 21, // tri0 + 20, 16, 8, // tri1 + 21, 14, 17, // tri2 + 14, 21, 19 // tri3 + ), + gsSPNTriangles_5b(14, 19, 18, // tri0 + 15, 14, 18, // tri1 + 11, 4, 22, // tri2 + 15, 18, 0 // tri3 + ), + gsSPNTriangles_5b(23, 20, 11, // tri0 + 11, 8, 12, // tri1 + 24, 23, 22, // tri2 + 11, 20, 8 // tri3 + ), + gsSPNTriangles_5b(19, 23, 24, // tri0 + 23, 19, 21, // tri1 + 21, 20, 23, // tri2 + 19, 1, 0 // tri3 + ), + gsSPNTriangles_5b(5, 4, 11, // tri0 + 22, 23, 11, // tri1 + 24, 1, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bpt_1_v[46], 27, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 5, 7, 4, // tri1 + 4, 3, 8, // tri2 + 3, 1, 0 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(24, // tri count + 10, 11, 12, // tri0 + 13, 14, 10, // tri1 + 10, 15, 16 // tri2 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 20, 21, 12, // tri1 + 14, 18, 17, // tri2 + 10, 22, 13 // tri3 + ), + gsSPNTriangles_5b(23, 15, 10, // tri0 + 11, 16, 24, // tri1 + 24, 20, 11, // tri2 + 15, 23, 17 // tri3 + ), + gsSPNTriangles_5b(13, 18, 14, // tri0 + 11, 20, 12, // tri1 + 24, 25, 21, // tri2 + 13, 19, 18 // tri3 + ), + gsSPNTriangles_5b(12, 22, 10, // tri0 + 16, 11, 10, // tri1 + 10, 14, 23, // tri2 + 19, 26, 17 // tri3 + ), + gsSPNTriangles_5b(21, 20, 24, // tri0 + 24, 16, 15, // tri1 + 17, 26, 15, // tri2 + 15, 25, 24 // tri3 + ), + gsSPNTriangles_5b(17, 23, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bpt_1_v[73], 24, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 8, 7, 6, // tri1 + 9, 10, 11, // tri2 + 6, 4, 12 // tri3 + ), + gsSPNTriangles_5b(5, 13, 3, // tri0 + 9, 14, 10, // tri1 + 2, 15, 0, // tri2 + 11, 1, 9 // tri3 + ), + gsSPNTriangles_5b(12, 8, 6, // tri0 + 9, 1, 0, // tri1 + 0, 14, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(22, 19, 16, // tri0 + 20, 19, 22, // tri1 + 23, 21, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&bpt_1_v[97], 17, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 0, 2, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 8, 0, 9, // tri1 + 5, 10, 6, // tri2 + 9, 0, 11 // tri3 + ), + gsSPNTriangles_5b(2, 12, 3, // tri0 + 5, 2, 4, // tri1 + 5, 4, 10, // tri2 + 9, 13, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx feel_bpt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[114], 14, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 9, 1, 7, // tri1 + 4, 10, 9, // tri2 + 7, 11, 9 // tri3 + ), + gsSPNTriangles_5b(5, 12, 3, // tri0 + 4, 3, 10, // tri1 + 9, 10, 1, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 9, 11, 4, // tri1 + 10, 2, 1, // tri2 + 4, 11, 8 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_bpt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[5], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 6, // tri0 + 1, 7, 0, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 4, 10, // tri0 + 4, 12, 11, // tri1 + 2, 13, 14, // tri2 + 3, 15, 2 // tri3 + ), + gsSPNTriangles_5b(4, 0, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_bpt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[169], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[175], 22, 6), + gsSPNTrianglesInit_5b(4, // tri count + 0, 6, 4, // tri0 + 0, 2, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 5, 3, 12, // tri0 + 3, 13, 14, // tri1 + 1, 5, 15 // tri2 + ), + gsSPNTriangles_5b(1, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 18, 22, 19 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 25, 26, 23, // tri1 + 24, 27, 25 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_bpt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[197], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[200], 11, 3), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 3, // tri0 + 1, 4, 5, // tri1 + 0, 7, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 2, 0, 8, // tri0 + 2, 9, 1, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_bpt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[128], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[133], 22, 5), + gsSPNTrianglesInit_5b(4, // tri count + 3, 5, 6, // tri0 + 2, 7, 8, // tri1 + 3, 0, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 3, 11, 12, // tri0 + 1, 13, 14, // tri1 + 1, 4, 15 // tri2 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 19, 21, 17 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 25, 26, 22 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_bpt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[155], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[158], 11, 3), + gsSPNTrianglesInit_5b(3, // tri count + 0, 4, 3, // tri0 + 1, 5, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 1, 8, 2, // tri0 + 2, 9, 10, // tri1 + 0, 2, 11 // tri2 + ), + gsSPNTriangles_5b(0, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_bpt_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[211], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[218], 23, 7), + gsSPNTrianglesInit_5b(15, // tri count + 4, 5, 7, // tri0 + 3, 8, 9, // tri1 + 6, 10, 1 // tri2 + ), + gsSPNTriangles_5b(1, 11, 12, // tri0 + 1, 14, 13, // tri1 + 0, 15, 16, // tri2 + 6, 0, 17 // tri3 + ), + gsSPNTriangles_5b(5, 18, 19, // tri0 + 6, 20, 21, // tri1 + 2, 22, 23, // tri2 + 2, 24, 3 // tri3 + ), + gsSPNTriangles_5b(1, 25, 2, // tri0 + 3, 26, 5, // tri1 + 4, 27, 28, // tri2 + 4, 29, 0 // tri3 + ), + gsSPVertex(&bpt_1_v[241], 16, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 0 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 10, 3, // tri1 + 5, 8, 3, // tri2 + 2, 11, 6 // tri3 + ), + gsSPNTriangles_5b(0, 7, 12, // tri0 + 1, 0, 4, // tri1 + 12, 13, 4, // tri2 + 5, 13, 14 // tri3 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 12, 4, 0, // tri1 + 8, 15, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(8, 14, 15, // tri0 + 5, 14, 8, // tri1 + 2, 3, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_bpt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[276], 6, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 3, 5, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_bpt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[257], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[260], 16, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 1, 0, 10, // tri1 + 0, 2, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 12, 13, 14, // tri0 + 15, 13, 16, // tri1 + 14, 16, 17 // tri2 + ), + gsSPNTriangles_5b(16, 13, 12, // tri0 + 12, 17, 16, // tri1 + 16, 14, 15, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b(14, 18, 12, // tri0 + 17, 18, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_bpt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[312], 8, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 1, 6 // tri2 + ), + gsSPNTriangles_5b(5, 3, 7, // tri0 + 5, 7, 2, // tri1 + 2, 7, 3, // tri2 + 2, 1, 5 // tri3 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 5, 6, 4, // tri1 + 2, 3, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_bpt_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[320], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[328], 13, 8), + gsSPNTrianglesInit_5b(9, // tri count + 0, 2, 8, // tri0 + 3, 1, 9, // tri1 + 3, 10, 6 // tri2 + ), + gsSPNTriangles_5b(4, 11, 2, // tri0 + 2, 12, 13, // tri1 + 1, 14, 15, // tri2 + 5, 7, 16 // tri3 + ), + gsSPNTriangles_5b(7, 17, 18, // tri0 + 5, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_bpt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[282], 8, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 6, 4 // tri2 + ), + gsSPNTriangles_5b(2, 3, 4, // tri0 + 2, 6, 0, // tri1 + 0, 7, 1, // tri2 + 1, 3, 2 // tri3 + ), + gsSPNTriangles_5b(4, 6, 2, // tri0 + 1, 7, 4, // tri1 + 7, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_bpt_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[290], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bpt_1_v[296], 16, 6), + gsSPNTrianglesInit_5b(8, // tri count + 1, 6, 7, // tri0 + 4, 8, 0, // tri1 + 1, 9, 2 // tri2 + ), + gsSPNTriangles_5b(3, 11, 10, // tri0 + 5, 3, 12, // tri1 + 5, 13, 14, // tri2 + 1, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_bpt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bpt_1_v[341], 25, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 2, 1, 6, // tri1 + 2, 6, 5, // tri2 + 4, 8, 0 // tri3 + ), + gsSPNTriangles_5b(9, 8, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(9, // tri count + 10, 11, 12, // tri0 + 10, 13, 11, // tri1 + 14, 15, 13 // tri2 + ), + gsSPNTriangles_5b(14, 13, 10, // tri0 + 12, 11, 16, // tri1 + 17, 18, 19, // tri2 + 17, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 23, 24, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_bpt_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_bpt_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-500 }, + /* joint 11 */ { tail1_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_bpt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 999,0,0 }, + /* joint 13 */ { chest_bpt_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,-500,0 }, + /* joint 15 */ { Larm1_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_bpt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 750,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,500,0 }, + /* joint 18 */ { Rarm1_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 750,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 750,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1074,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 250,0,900 }, + /* joint 23 */ { mouth_bpt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_bpt_model, 1, cKF_JOINT_FLAG_DISP_OPA, -199,0,0 }, + /* joint 25 */ { feel_bpt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1400,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_bpt_1 = { 26, 15, cKF_je_r_bpt_1_tbl }; diff --git a/src/data/npc/model/mdl/brd_1.c b/src/data/npc/model/mdl/brd_1.c new file mode 100644 index 00000000..e3aa839c --- /dev/null +++ b/src/data/npc/model/mdl/brd_1.c @@ -0,0 +1,665 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx brd_1_v[] = { +#include "assets/npc/mdl/brd_1_v.inc" +}; + +static Gfx head_brd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[12], 21, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 + ), + gsSPNTriangles_5b(3, 7, 4, // tri0 + 8, 9, 2, // tri1 + 8, 7, 3, // tri2 + 3, 9, 8 // tri3 + ), + gsSPNTriangles_5b(1, 10, 2, // tri0 + 3, 11, 9, // tri1 + 9, 11, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 12, 13, 14, // tri0 + 15, 14, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&brd_1_v[33], 24, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 3, 8, 4, // tri1 + 9, 8, 7, // tri2 + 9, 7, 10 // tri3 + ), + gsSPNTriangles_5b(5, 4, 12, // tri0 + 13, 10, 7, // tri1 + 4, 8, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&brd_1_v[57], 29, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 14, 11, 15 // tri2 + ), + gsSPNTriangles_5b(16, 13, 15, // tri0 + 17, 13, 18, // tri1 + 19, 20, 11, // tri2 + 13, 16, 18 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&brd_1_v[86], 17, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 3, 4, 5, // tri0 + 3, 6, 7, // tri1 + 8, 5, 9 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 15, 14, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_brd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[5], 7, 5), + gsSPNTrianglesInit_5b(5, // tri count + 3, 1, 5, // tri0 + 4, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 4, 10, // tri0 + 0, 2, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_brd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[134], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[138], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_brd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[153], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[156], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_brd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[103], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[107], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_brd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[122], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[125], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_brd_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[165], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[174], 20, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 10, // tri0 + 8, 11, 12, // tri1 + 1, 0, 13 // tri2 + ), + gsSPNTriangles_5b(0, 3, 14, // tri0 + 4, 15, 7, // tri1 + 3, 7, 16, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(3, 20, 19, // tri0 + 8, 2, 21, // tri1 + 5, 8, 22, // tri2 + 5, 23, 24 // tri3 + ), + gsSPNTriangles_5b(6, 26, 25, // tri0 + 6, 5, 27, // tri1 + 4, 6, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&brd_1_v[194], 17, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTriangles_5b(5, 14, 10, // tri0 + 6, 11, 4, // tri1 + 10, 14, 11, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(5, 15, 3, // tri0 + 9, 12, 7, // tri1 + 11, 8, 7, // tri2 + 2, 16, 0 // tri3 + ), + gsSPNTriangles_5b(13, 1, 0, // tri0 + 4, 14, 5, // tri1 + 1, 9, 6, // tri2 + 8, 6, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_brd_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[211], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[216], 15, 5), + gsSPNTrianglesInit_5b(3, // tri count + 1, 2, 5, // tri0 + 2, 0, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 3, 1, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 4, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 4, 1, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 4, 0, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 15, 14, 16, // tri1 + 15, 17, 13 // tri2 + ), + gsSPNTriangles_5b(15, 18, 19, // tri0 + 16, 18, 15, // tri1 + 19, 17, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_brd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[281], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[285], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_brd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[305], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[309], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_brd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[323], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 4, 2, // tri1 + 3, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_brd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[231], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[235], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_brd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[255], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&brd_1_v[259], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_brd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[273], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 1, 7, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_brd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&brd_1_v[331], 21, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 1, 6, 7, // tri1 + 8, 3, 9, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 12, 5, 7, // tri1 + 9, 3, 4, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(10, 11, 14, // tri0 + 13, 15, 16, // tri1 + 14, 11, 15, // tri2 + 13, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 16, 18, // tri0 + 1, 0, 19, // tri1 + 1, 19, 6, // tri2 + 19, 0, 20 // tri3 + ), + gsSPNTriangles_5b(6, 19, 13, // tri0 + 13, 19, 20, // tri1 + 20, 3, 8, // tri2 + 8, 10, 20 // tri3 + ), + gsSPNTriangles_5b(0, 3, 20, // tri0 + 13, 20, 14, // tri1 + 10, 14, 20, // tri2 + 7, 5, 1 // tri3 + ), + gsSPNTriangles_5b(17, 6, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_brd_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_brd_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_brd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_brd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-650 }, + /* joint 11 */ { tail1_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_brd_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 550,-500,0 }, + /* joint 15 */ { Larm1_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_brd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 448,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 550,500,0 }, + /* joint 18 */ { Rarm1_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 824,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1300 }, + /* joint 23 */ { mouth_brd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_brd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1252,0,-158 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_brd_1 = { 26, 15, cKF_je_r_brd_1_tbl }; diff --git a/src/data/npc/model/mdl/bul_1.c b/src/data/npc/model/mdl/bul_1.c new file mode 100644 index 00000000..eae818d6 --- /dev/null +++ b/src/data/npc/model/mdl/bul_1.c @@ -0,0 +1,656 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx bul_1_v[] = { +#include "assets/npc/mdl/bul_1_v.inc" +}; + +static Gfx head_bul_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[0], 19, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 3, 7, 9, // tri2 + 14, 15, 2 // tri3 + ), + gsSPNTriangles_5b(16, 15, 10, // tri0 + 8, 3, 9, // tri1 + 5, 7, 3, // tri2 + 8, 14, 17 // tri3 + ), + gsSPNTriangles_5b(14, 8, 15, // tri0 + 17, 5, 4, // tri1 + 8, 4, 3, // tri2 + 10, 15, 8 // tri3 + ), + gsSPNTriangles_5b(0, 18, 1, // tri0 + 1, 14, 2, // tri1 + 13, 12, 5, // tri2 + 13, 5, 17 // tri3 + ), + gsSPNTriangles_5b(17, 4, 8, // tri0 + 13, 17, 14, // tri1 + 11, 13, 1, // tri2 + 1, 18, 11 // tri3 + ), + gsSPNTriangles_5b(14, 1, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&bul_1_v[19], 27, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 9, 6, 5, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(8, 14, 16, // tri0 + 9, 5, 10, // tri1 + 5, 6, 3, // tri2 + 17, 15, 10 // tri3 + ), + gsSPNTriangles_5b(14, 10, 15, // tri0 + 4, 3, 17, // tri1 + 5, 4, 10, // tri2 + 10, 14, 8 // tri3 + ), + gsSPNTriangles_5b(1, 18, 2, // tri0 + 0, 15, 1, // tri1 + 17, 3, 12, // tri2 + 17, 12, 11 // tri3 + ), + gsSPNTriangles_5b(10, 4, 17, // tri0 + 15, 17, 11, // tri1 + 1, 11, 13, // tri2 + 13, 18, 1 // tri3 + ), + gsSPNTriangles_5b(11, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 21, 25, 19 // tri2 + ), + gsSPNTriangles_5b(26, 22, 24, // tri0 + 24, 25, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 253, 255, 255, 255), + gsSPVertex(&bul_1_v[46], 21, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 0, 3 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 1, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(14, // tri count + 8, 9, 10, // tri0 + 9, 8, 11, // tri1 + 12, 11, 8 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 10, 9, // tri1 + 10, 14, 8, // tri2 + 17, 13, 18 // tri3 + ), + gsSPNTriangles_5b(15, 18, 13, // tri0 + 14, 13, 19, // tri1 + 13, 17, 12, // tri2 + 19, 8, 14 // tri3 + ), + gsSPNTriangles_5b(18, 15, 20, // tri0 + 12, 19, 13, // tri1 + 8, 19, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bul_1_v[67], 26, 0), + gsSPNTrianglesInit_5b(36, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 3, 10, // tri0 + 10, 11, 12, // tri1 + 8, 7, 13, // tri2 + 9, 12, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 12, 17, 14, // tri1 + 14, 17, 16, // tri2 + 16, 18, 15 // tri3 + ), + gsSPNTriangles_5b(18, 19, 7, // tri0 + 6, 15, 18, // tri1 + 20, 9, 15, // tri2 + 14, 15, 9 // tri3 + ), + gsSPNTriangles_5b(18, 7, 6, // tri0 + 21, 1, 22, // tri1 + 21, 4, 3, // tri2 + 3, 9, 20 // tri3 + ), + gsSPNTriangles_5b(15, 6, 20, // tri0 + 10, 12, 9, // tri1 + 20, 23, 3, // tri2 + 2, 23, 20 // tri3 + ), + gsSPNTriangles_5b(8, 2, 6, // tri0 + 5, 24, 10, // tri1 + 16, 19, 18, // tri2 + 22, 1, 0 // tri3 + ), + gsSPNTriangles_5b(5, 4, 22, // tri0 + 8, 25, 0, // tri1 + 2, 1, 21, // tri2 + 5, 10, 3 // tri3 + ), + gsSPNTriangles_5b(3, 23, 21, // tri0 + 21, 23, 2, // tri1 + 2, 8, 0, // tri2 + 20, 6, 2 // tri3 + ), + gsSPNTriangles_5b(22, 4, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&bul_1_v[93], 26, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 4, // tri0 + 9, 10, 11, // tri1 + 2, 6, 7, // tri2 + 1, 6, 2 // tri3 + ), + gsSPNTriangles_5b(9, 3, 10, // tri0 + 8, 3, 9, // tri1 + 5, 4, 6, // tri2 + 4, 8, 12 // tri3 + ), + gsSPNTriangles_5b(12, 7, 4, // tri0 + 5, 10, 3, // tri1 + 6, 1, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 13, 14, 15, // tri0 + 16, 17, 14, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(21, 22, 15, // tri0 + 23, 21, 14, // tri1 + 23, 14, 17, // tri2 + 15, 14, 21 // tri3 + ), + gsSPNTriangles_5b(20, 23, 17, // tri0 + 20, 17, 24, // tri1 + 20, 24, 18, // tri2 + 16, 14, 13 // tri3 + ), + gsSPNTriangles_5b(16, 24, 17, // tri0 + 25, 24, 16, // tri1 + 18, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_bul_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[155], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[160], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_bul_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[176], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[180], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_bul_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[119], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[124], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_bul_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[140], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[144], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_bul_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[191], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[198], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 + ), + gsSPNTriangles_5b(3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&bul_1_v[218], 10, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_bul_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[242], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_bul_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[228], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[232], 10, 4), + gsSPNTrianglesInit_5b(4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_bul_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[290], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[295], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 5, // tri0 + 0, 2, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_bul_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[311], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[317], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 0, 6, 7, // tri0 + 2, 5, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 1, 11, // tri0 + 0, 3, 12, // tri1 + 4, 2, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_bul_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[250], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[255], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 2, 5, // tri0 + 2, 0, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 16, 20, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_bul_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[271], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&bul_1_v[277], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 3, 1, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 3, 11, // tri0 + 2, 4, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_bul_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&bul_1_v[330], 30, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 9, 19, 7, // tri1 + 20, 11, 21, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 11, 20, 12, // tri1 + 8, 7, 13, // tri2 + 13, 15, 8 // tri3 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 14, 10, 12, // tri1 + 18, 22, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 24, 23 // tri2 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_bul_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_bul_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_bul_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_bul_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_bul_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_bul_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1600,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_bul_1 = { 26, 13, cKF_je_r_bul_1_tbl }; diff --git a/src/data/npc/model/mdl/cat_1.c b/src/data/npc/model/mdl/cat_1.c new file mode 100644 index 00000000..75edea65 --- /dev/null +++ b/src/data/npc/model/mdl/cat_1.c @@ -0,0 +1,582 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx cat_1_v[] = { +#include "assets/npc/mdl/cat_1_v.inc" +}; + +static Gfx head_cat_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[6], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 1, 0, 6, // tri0 + 1, 7, 8, // tri1 + 3, 1, 9 // tri2 + ), + gsSPNTriangles_5b(4, 11, 10, // tri0 + 5, 4, 12, // tri1 + 5, 13, 0, // tri2 + 0, 15, 14 // tri3 + ), + gsSPNTriangles_5b(5, 16, 17, // tri0 + 4, 2, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cat_1_v[19], 31, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 2, // tri0 + 6, 7, 8, // tri1 + 1, 9, 10, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(13, 10, 12, // tri0 + 10, 9, 11, // tri1 + 14, 8, 13, // tri2 + 1, 0, 9 // tri3 + ), + gsSPNTriangles_5b(14, 13, 12, // tri0 + 8, 7, 13, // tri1 + 14, 15, 8, // tri2 + 7, 10, 13 // tri3 + ), + gsSPNTriangles_5b(10, 3, 1, // tri0 + 7, 3, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(16, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 16, 18, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 21, // tri0 + 21, 23, 24, // tri1 + 23, 20, 22, // tri2 + 23, 22, 25 // tri3 + ), + gsSPNTriangles_5b(26, 16, 22, // tri0 + 23, 27, 24, // tri1 + 23, 25, 27, // tri2 + 24, 28, 21 // tri3 + ), + gsSPNTriangles_5b(25, 22, 18, // tri0 + 28, 29, 21, // tri1 + 28, 30, 29, // tri2 + 21, 29, 19 // tri3 + ), + gsSPNTriangles_5b(22, 20, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cat_1_v[50], 22, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 3 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 3, 2, 8, // tri1 + 8, 2, 9, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(11, 4, 8, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14, // tri2 + 12, 15, 16 // tri3 + ), + gsSPNTriangles_5b(4, 14, 13, // tri0 + 13, 16, 5, // tri1 + 16, 13, 12, // tri2 + 3, 8, 4 // tri3 + ), + gsSPNTriangles_5b(7, 3, 5, // tri0 + 5, 17, 18, // tri1 + 5, 4, 13, // tri2 + 16, 15, 17 // tri3 + ), + gsSPNTriangles_5b(18, 7, 5, // tri0 + 19, 6, 20, // tri1 + 21, 7, 18, // tri2 + 20, 7, 21 // tri3 + ), + gsSPNTriangles_5b(20, 6, 7, // tri0 + 0, 6, 19, // tri1 + 4, 11, 14, // tri2 + 2, 1, 9 // tri3 + ), + gsSPNTriangles_5b(16, 17, 5, // tri0 + 0, 2, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_cat_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[108], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[113], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_cat_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[129], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[133], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 2, 4, // tri0 + 1, 5, 6, // tri1 + 0, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 0, 11, // tri1 + 0, 1, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_cat_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[72], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[77], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_cat_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[93], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[97], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 3, 8 // tri2 + ), + gsSPNTriangles_5b(3, 0, 9, // tri0 + 3, 11, 10, // tri1 + 0, 13, 12, // tri2 + 0, 2, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_cat_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[144], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[151], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 7, 3, // tri0 + 1, 2, 8, // tri1 + 4, 6, 9 // tri2 + ), + gsSPNTriangles_5b(6, 5, 10, // tri0 + 3, 11, 12, // tri1 + 2, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsSPNTriangles_5b(3, 18, 17, // tri0 + 4, 19, 20, // tri1 + 4, 21, 2, // tri2 + 5, 22, 23 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 5, 3, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_cat_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[195], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_cat_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[171], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[175], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 + ), + gsSPNTriangles_5b(17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_cat_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[256], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[261], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 6, 5, // tri0 + 0, 8, 7, // tri1 + 3, 2, 9 // tri2 + ), + gsSPNTriangles_5b(0, 4, 10, // tri0 + 0, 11, 12, // tri1 + 1, 0, 13, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 21 // tri2 + ), + gsSPNTriangles_5b(21, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_cat_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[281], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[287], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 2, 7, 6, // tri0 + 0, 1, 8, // tri1 + 0, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 5, 11, // tri0 + 4, 2, 12, // tri1 + 1, 13, 14, // tri2 + 0, 15, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 18, 17, // tri0 + 23, 17, 21, // tri1 + 21, 20, 23, // tri2 + 22, 24, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_cat_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[203], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[208], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 0, 5, // tri0 + 2, 7, 6, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 + ), + gsSPNTriangles_5b(0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 20, 22, 23 // tri2 + ), + gsSPNTriangles_5b(18, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_cat_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[228], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cat_1_v[234], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 6, // tri0 + 0, 7, 8, // tri1 + 1, 10, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 11, // tri0 + 3, 12, 13, // tri1 + 0, 14, 1, // tri2 + 5, 1, 15 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 16, 22, 17 // tri2 + ), + gsSPNTriangles_5b(21, 23, 19, // tri0 + 24, 16, 18, // tri1 + 18, 20, 24, // tri2 + 20, 19, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_cat_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cat_1_v[309], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 0, 9, // tri1 + 10, 5, 7, // tri2 + 6, 11, 12 // tri3 + ), + gsSPNTriangles_5b(9, 0, 13, // tri0 + 12, 3, 6, // tri1 + 12, 11, 8, // tri2 + 8, 9, 12 // tri3 + ), + gsSPNTriangles_5b(0, 2, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_cat_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_cat_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_cat_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_cat_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_cat_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_cat_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_cat_1 = { 26, 13, cKF_je_r_cat_1_tbl }; diff --git a/src/data/npc/model/mdl/cbr_1.c b/src/data/npc/model/mdl/cbr_1.c new file mode 100644 index 00000000..1045a7cf --- /dev/null +++ b/src/data/npc/model/mdl/cbr_1.c @@ -0,0 +1,660 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx cbr_1_v[] = { +#include "assets/npc/mdl/cbr_1_v.inc" +}; + +static Gfx head_cbr_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[0], 30, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 3, 5, // tri1 + 3, 7, 0, // tri2 + 0, 2, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(30, // tri count + 8, 9, 10, // tri0 + 11, 12, 8, // tri1 + 13, 14, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 10, // tri0 + 17, 11, 8, // tri1 + 12, 13, 9, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 18, 9, 15, // tri1 + 20, 21, 22, // tri2 + 20, 23, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 17, // tri0 + 26, 11, 27, // tri1 + 24, 23, 25, // tri2 + 25, 27, 11 // tri3 + ), + gsSPNTriangles_5b(28, 23, 22, // tri0 + 16, 20, 24, // tri1 + 25, 11, 17, // tri2 + 23, 28, 27 // tri3 + ), + gsSPNTriangles_5b(23, 27, 25, // tri0 + 21, 20, 16, // tri1 + 22, 23, 20, // tri2 + 22, 29, 28 // tri3 + ), + gsSPNTriangles_5b(15, 9, 13, // tri0 + 24, 17, 16, // tri1 + 10, 18, 16, // tri2 + 15, 19, 18 // tri3 + ), + gsSPNTriangles_5b(10, 9, 18, // tri0 + 17, 8, 10, // tri1 + 12, 11, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cbr_1_v[30], 10, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 8, 9, 5 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cbr_1_v[40], 32, 0), + gsSPNTrianglesInit_5b(42, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 4, // tri1 + 12, 13, 14, // tri2 + 15, 16, 14 // tri3 + ), + gsSPNTriangles_5b(1, 0, 17, // tri0 + 11, 10, 18, // tri1 + 5, 15, 19, // tri2 + 20, 7, 21 // tri3 + ), + gsSPNTriangles_5b(22, 19, 15, // tri0 + 4, 20, 5, // tri1 + 12, 21, 9, // tri2 + 6, 19, 23 // tri3 + ), + gsSPNTriangles_5b(15, 5, 20, // tri0 + 2, 1, 24, // tri1 + 23, 10, 3, // tri2 + 17, 4, 11 // tri3 + ), + gsSPNTriangles_5b(9, 8, 25, // tri0 + 17, 0, 7, // tri1 + 24, 1, 26, // tri2 + 14, 27, 15 // tri3 + ), + gsSPNTriangles_5b(15, 27, 22, // tri0 + 20, 16, 15, // tri1 + 21, 16, 20, // tri2 + 9, 21, 7 // tri3 + ), + gsSPNTriangles_5b(19, 22, 23, // tri0 + 23, 18, 10, // tri1 + 3, 6, 23, // tri2 + 28, 26, 11 // tri3 + ), + gsSPNTriangles_5b(17, 7, 20, // tri0 + 0, 2, 8, // tri1 + 4, 17, 20, // tri2 + 25, 2, 29 // tri3 + ), + gsSPNTriangles_5b(30, 9, 25, // tri0 + 19, 6, 5, // tri1 + 4, 3, 10, // tri2 + 16, 21, 12 // tri3 + ), + gsSPNTriangles_5b(12, 14, 16, // tri0 + 28, 31, 24, // tri1 + 24, 26, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&cbr_1_v[72], 20, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(5, 4, 6, // tri0 + 7, 8, 9, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 12, 13, 14, // tri0 + 15, 12, 16, // tri1 + 17, 15, 16 // tri2 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 14, 18, 16, // tri1 + 16, 12, 14, // tri2 + 17, 16, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cbr_1_v[92], 20, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 5, // tri0 + 10, 3, 11, // tri1 + 6, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(10, 6, 5, // tri0 + 3, 16, 17, // tri1 + 12, 7, 6, // tri2 + 14, 13, 9 // tri3 + ), + gsSPNTriangles_5b(13, 2, 18, // tri0 + 9, 8, 14, // tri1 + 2, 1, 4, // tri2 + 18, 9, 13 // tri3 + ), + gsSPNTriangles_5b(4, 16, 3, // tri0 + 11, 6, 10, // tri1 + 17, 11, 3, // tri2 + 11, 17, 19 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 15, 0, 13, // tri1 + 3, 10, 18, // tri2 + 5, 18, 10 // tri3 + ), + gsSPNTriangles_5b(5, 9, 18, // tri0 + 3, 18, 2, // tri1 + 19, 12, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_cbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[112], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[116], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 0, 4, // tri0 + 0, 5, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 9, 10, // tri0 + 3, 11, 12, // tri1 + 0, 1, 13, // tri2 + 1, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_cbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[132], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[136], 12, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 5, 4, // tri0 + 1, 7, 6, // tri1 + 3, 8, 1 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 0, 13, 2 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_cbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[200], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[204], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 1, 8, // tri0 + 0, 9, 10, // tri1 + 3, 11, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_cbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[220], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[226], 12, 6), + gsSPNTrianglesInit_5b(8, // tri count + 0, 6, 7, // tri0 + 2, 8, 5, // tri1 + 2, 10, 9 // tri2 + ), + gsSPNTriangles_5b(5, 12, 11, // tri0 + 3, 13, 1, // tri1 + 5, 14, 4, // tri2 + 4, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 0, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_cbr_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[148], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[157], 22, 9), + gsSPNTrianglesInit_5b(15, // tri count + 7, 0, 9, // tri0 + 1, 4, 10, // tri1 + 6, 7, 11 // tri2 + ), + gsSPNTriangles_5b(4, 13, 12, // tri0 + 3, 15, 14, // tri1 + 0, 2, 16, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(2, 19, 20, // tri0 + 5, 6, 21, // tri1 + 6, 22, 23, // tri2 + 3, 5, 24 // tri3 + ), + gsSPNTriangles_5b(0, 25, 26, // tri0 + 4, 8, 27, // tri1 + 8, 3, 28, // tri2 + 8, 29, 30 // tri3 + ), + gsSPVertex(&cbr_1_v[179], 21, 9), + gsSPNTrianglesInit_5b(2, // tri count + 7, 9, 10, // tri0 + 7, 11, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(15, // tri count + 13, 14, 15, // tri0 + 14, 13, 16, // tri1 + 17, 18, 19 // tri2 + ), + gsSPNTriangles_5b(20, 16, 13, // tri0 + 21, 22, 17, // tri1 + 20, 23, 16, // tri2 + 24, 23, 20 // tri3 + ), + gsSPNTriangles_5b(25, 19, 18, // tri0 + 23, 18, 16, // tri1 + 22, 21, 26, // tri2 + 18, 17, 16 // tri3 + ), + gsSPNTriangles_5b(22, 27, 28, // tri0 + 17, 22, 16, // tri1 + 19, 29, 17, // tri2 + 17, 29, 21 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_cbr_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[306], 6, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(0, 4, 3, // tri0 + 1, 5, 2, // tri1 + 5, 1, 3, // tri2 + 5, 4, 2 // tri3 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_cbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[272], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[277], 19, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 3, 11, 12, // tri1 + 4, 13, 0, // tri2 + 1, 15, 14 // tri3 + ), + gsSPNTriangles_5b(2, 1, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 21, 22, 20 // tri2 + ), + gsSPNTriangles_5b(18, 23, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_cbr_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[296], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 5, 8, 9, // tri1 + 5, 9, 6, // tri2 + 8, 0, 3 // tri3 + ), + gsSPNTriangles_5b(8, 3, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_cbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[238], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cbr_1_v[243], 19, 5), + gsSPNTrianglesInit_5b(8, // tri count + 4, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(4, 11, 0, // tri0 + 3, 12, 4, // tri1 + 3, 2, 13, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(2, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 18, 21, // tri1 + 18, 17, 21 // tri2 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_cbr_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[262], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 5, 0, 3, // tri1 + 5, 3, 6, // tri2 + 1, 8, 9 // tri3 + ), + gsSPNTriangles_5b(1, 9, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_cbr_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cbr_1_v[312], 16, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 7, 8, 9, // tri1 + 10, 11, 9, // tri2 + 3, 2, 11 // tri3 + ), + gsSPNTriangles_5b(12, 1, 13, // tri0 + 11, 2, 14, // tri1 + 2, 1, 14, // tri2 + 6, 12, 4 // tri3 + ), + gsSPNTriangles_5b(12, 6, 14, // tri0 + 6, 15, 14, // tri1 + 15, 9, 14, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(9, 11, 14, // tri0 + 11, 10, 3, // tri1 + 0, 13, 1, // tri2 + 1, 12, 14 // tri3 + ), + gsSPNTriangles_5b(13, 4, 12, // tri0 + 9, 15, 7, // tri1 + 7, 15, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPVertex(&cbr_1_v[328], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 7, 11, // tri2 + 14, 12, 11 // tri3 + ), + gsSPNTriangles_5b(7, 13, 5, // tri0 + 11, 8, 14, // tri1 + 10, 14, 8, // tri2 + 4, 15, 2 // tri3 + ), + gsSPNTriangles_5b(2, 15, 0, // tri0 + 3, 10, 9, // tri1 + 16, 17, 1, // tri2 + 1, 0, 16 // tri3 + ), + gsSPNTriangles_5b(9, 4, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_cbr_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_cbr_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-525,0 }, + /* joint 3 */ { Lfoot1_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,525,0 }, + /* joint 7 */ { Rfoot1_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-932 }, + /* joint 11 */ { tail1_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_cbr_model, 3, cKF_JOINT_FLAG_DISP_OPA, 426,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,-1000,100 }, + /* joint 15 */ { Larm1_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_cbr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,1000,100 }, + /* joint 18 */ { Rarm1_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1295,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1050,0,1650 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_cbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 2000,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_cbr_1 = { 26, 12, cKF_je_r_cbr_1_tbl }; diff --git a/src/data/npc/model/mdl/chn_1.c b/src/data/npc/model/mdl/chn_1.c new file mode 100644 index 00000000..84c3e787 --- /dev/null +++ b/src/data/npc/model/mdl/chn_1.c @@ -0,0 +1,757 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx chn_1_v[] = { +#include "assets/npc/mdl/chn_1_v.inc" +}; + +static Gfx head_chn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[11], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[19], 21, 8), + gsSPNTrianglesInit_5b(14, // tri count + 6, 8, 9, // tri0 + 6, 4, 10, // tri1 + 3, 11, 12 // tri2 + ), + gsSPNTriangles_5b(3, 2, 13, // tri0 + 1, 14, 15, // tri1 + 1, 0, 16, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(7, 6, 19, // tri0 + 0, 20, 21, // tri1 + 0, 7, 22, // tri2 + 2, 23, 24 // tri3 + ), + gsSPNTriangles_5b(2, 1, 25, // tri0 + 5, 26, 27, // tri1 + 5, 3, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&chn_1_v[40], 27, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 2, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 2, // tri0 + 7, 6, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(5, 2, 7, // tri0 + 5, 7, 11, // tri1 + 11, 10, 12, // tri2 + 8, 1, 0 // tri3 + ), + gsSPNTriangles_5b(15, 11, 7, // tri0 + 4, 8, 0, // tri1 + 7, 8, 4, // tri2 + 14, 13, 9 // tri3 + ), + gsSPNTriangles_5b(14, 0, 5, // tri0 + 11, 12, 5, // tri1 + 5, 12, 14, // tri2 + 11, 15, 16 // tri3 + ), + gsSPNTriangles_5b(16, 15, 14, // tri0 + 11, 16, 9, // tri1 + 9, 16, 14, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(7, 4, 3, // tri0 + 15, 3, 0, // tri1 + 7, 3, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 17, 18, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 22, 21, 23, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&chn_1_v[67], 23, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 5, 6, 7, // tri0 + 8, 9, 6, // tri1 + 6, 10, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 8, 10, 11, // tri1 + 12, 7, 13, // tri2 + 14, 8, 11 // tri3 + ), + gsSPNTriangles_5b(13, 15, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&chn_1_v[90], 31, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 0, 8, // tri0 + 7, 8, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(11, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 17 // tri2 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 20, 15, 18, // tri1 + 26, 27, 28, // tri2 + 25, 29, 23 // tri3 + ), + gsSPNTriangles_5b(28, 30, 26, // tri0 + 24, 23, 26, // tri1 + 17, 18, 15, // tri2 + 17, 16, 21 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&chn_1_v[121], 24, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 3, 9, // tri0 + 10, 11, 2, // tri1 + 12, 13, 9, // tri2 + 2, 11, 0 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 15, 13, 12, // tri1 + 9, 3, 12, // tri2 + 7, 2, 1 // tri3 + ), + gsSPNTriangles_5b(8, 16, 4, // tri0 + 12, 2, 15, // tri1 + 2, 12, 10, // tri2 + 10, 12, 3 // tri3 + ), + gsSPNTriangles_5b(3, 14, 10, // tri0 + 15, 2, 7, // tri1 + 4, 3, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 21, 22, 23 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_chn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[0], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[4], 7, 4), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 4, // tri0 + 2, 6, 5, // tri1 + 0, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 3, 0, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_chn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[176], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[180], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_chn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[195], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[198], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_chn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[145], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[149], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_chn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[164], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[167], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_chn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[207], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[214], 24, 7), + gsSPNTrianglesInit_5b(15, // tri count + 3, 7, 8, // tri0 + 4, 9, 1, // tri1 + 5, 0, 10 // tri2 + ), + gsSPNTriangles_5b(2, 11, 12, // tri0 + 1, 13, 14, // tri1 + 0, 15, 16, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(1, 19, 20, // tri0 + 2, 21, 22, // tri1 + 2, 23, 0, // tri2 + 3, 24, 25 // tri3 + ), + gsSPNTriangles_5b(3, 1, 26, // tri0 + 2, 6, 27, // tri1 + 6, 3, 28, // tri2 + 1, 29, 30 // tri3 + ), + gsSPVertex(&chn_1_v[238], 17, 7), + gsSPNTrianglesInit_5b(1, // tri count + 0, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(13, // tri count + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 11, 16 // tri2 + ), + gsSPNTriangles_5b(17, 12, 18, // tri0 + 19, 17, 20, // tri1 + 21, 22, 23, // tri2 + 21, 19, 22 // tri3 + ), + gsSPNTriangles_5b(23, 16, 21, // tri0 + 16, 23, 15, // tri1 + 18, 20, 17, // tri2 + 20, 22, 19 // tri3 + ), + gsSPNTriangles_5b(11, 15, 9, // tri0 + 14, 18, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_chn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[255], 27, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b(10, 8, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 11, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 17, 18, // tri1 + 19, 20, 18 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&chn_1_v[282], 10, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_chn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[364], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[368], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 1, 4, 5, // tri0 + 1, 6, 3, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 0, 3, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 16, 17, 15, // tri1 + 15, 17, 18 // tri2 + ), + gsSPNTriangles_5b(15, 18, 13, // tri0 + 15, 19, 20, // tri1 + 15, 20, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_chn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[388], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[393], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 3, 4, 7, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 4, 1, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_chn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[407], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[411], 25, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 0, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 3, 2, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 16, 20, 14 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 19, 25, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_chn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[292], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[296], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 4, 5, // tri0 + 3, 6, 1, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 3, 0, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 13, 16, 17, // tri1 + 18, 16, 13 // tri2 + ), + gsSPNTriangles_5b(15, 18, 13, // tri0 + 19, 20, 13, // tri1 + 17, 19, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_chn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[316], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[321], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 4, 3, 7, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 0, 10, // tri0 + 1, 4, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_chn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[335], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&chn_1_v[339], 25, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 1, 5, 0, // tri1 + 0, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 2, 3, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 16, 20, 14 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 19, 25, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_chn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&chn_1_v[436], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 7, // tri1 + 10, 0, 2, // tri2 + 4, 11, 12 // tri3 + ), + gsSPNTriangles_5b(5, 4, 13, // tri0 + 4, 12, 13, // tri1 + 3, 5, 9, // tri2 + 9, 8, 3 // tri3 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_chn_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_chn_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { Lfoot1_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_chn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { Rfoot1_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_chn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { tail1_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_chn_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-1150,0 }, + /* joint 15 */ { Larm1_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_chn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,1150,0 }, + /* joint 18 */ { Rarm1_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 999,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,0,850 }, + /* joint 23 */ { mouth_chn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_chn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_chn_1 = { 26, 15, cKF_je_r_chn_1_tbl }; diff --git a/src/data/npc/model/mdl/cml_1.c b/src/data/npc/model/mdl/cml_1.c new file mode 100644 index 00000000..cec7081f --- /dev/null +++ b/src/data/npc/model/mdl/cml_1.c @@ -0,0 +1,708 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx cml_1_v[] = { +#include "assets/npc/mdl/cml_1_v.inc" +}; + +static Gfx head_cml_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[26], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[32], 16, 6), + gsSPNTrianglesInit_5b(11, // tri count + 2, 7, 6, // tri0 + 4, 1, 8, // tri1 + 2, 3, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 1, 5, 12, // tri1 + 5, 2, 13, // tri2 + 5, 14, 15 // tri3 + ), + gsSPNTriangles_5b(1, 17, 16, // tri0 + 3, 18, 19, // tri1 + 0, 4, 20, // tri2 + 3, 0, 21 // tri3 + ), + gsSPVertex(&cml_1_v[48], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 9, 3, // tri1 + 10, 11, 8, // tri2 + 2, 1, 12 // tri3 + ), + gsSPNTriangles_5b(13, 0, 3, // tri0 + 14, 12, 15, // tri1 + 16, 17, 13, // tri2 + 13, 18, 19 // tri3 + ), + gsSPNTriangles_5b(13, 19, 20, // tri0 + 12, 21, 15, // tri1 + 20, 16, 13, // tri2 + 14, 22, 12 // tri3 + ), + gsSPNTriangles_5b(12, 23, 21, // tri0 + 24, 8, 25, // tri1 + 26, 4, 27, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&cml_1_v[79], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 4, 8, 0, // tri1 + 7, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 11, // tri1 + 14, 19, 20, // tri2 + 17, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 11, 9, 17, // tri1 + 9, 6, 17, // tri2 + 23, 12, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 28, 16, 15, // tri1 + 10, 13, 29, // tri2 + 17, 6, 30 // tri3 + ), + gsSPVertex(&cml_1_v[110], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 3, 1, 10, // tri1 + 11, 12, 13, // tri2 + 6, 5, 14 // tri3 + ), + gsSPNTriangles_5b(0, 15, 10, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21, // tri2 + 19, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 13, 14, // tri0 + 19, 23, 14, // tri1 + 10, 4, 3, // tri2 + 6, 14, 13 // tri3 + ), + gsSPNTriangles_5b(16, 9, 8, // tri0 + 22, 14, 23, // tri1 + 24, 3, 6, // tri2 + 25, 26, 27 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 30, 8, // tri1 + 22, 30, 29, // tri2 + 27, 26, 11 // tri3 + ), + gsSPVertex(&cml_1_v[141], 29, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 3, 4, 5, // tri0 + 6, 3, 5, // tri1 + 5, 7, 6 // tri2 + ), + gsSPNTrianglesInit_5b(3, // tri count + 8, 9, 10, // tri0 + 10, 11, 8, // tri1 + 12, 11, 10 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 253, 255, 255, 255), + gsSPNTrianglesInit_5b(8, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 17, 15 // tri2 + ), + gsSPNTriangles_5b(16, 19, 20, // tri0 + 18, 21, 16, // tri1 + 22, 15, 14, // tri2 + 15, 22, 18 // tri3 + ), + gsSPNTriangles_5b(19, 16, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 23, 24, 25, // tri0 + 24, 26, 25, // tri1 + 24, 27, 26 // tri2 + ), + gsSPNTriangles_5b(28, 27, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cml_1_v[170], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 3, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_cml_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[6], 20, 6), + gsSPNTrianglesInit_5b(6, // tri count + 1, 5, 6, // tri0 + 1, 7, 8, // tri1 + 0, 3, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 5, 0, 12, // tri1 + 5, 13, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 2, 15, // tri0 + 2, 17, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 20, 21, 22, // tri1 + 20, 22, 18 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_cml_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[209], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[213], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 3, 11, // tri1 + 0, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(3, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_cml_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[229], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[232], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_cml_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[175], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[179], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_cml_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[195], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[198], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_cml_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[243], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[251], 24, 8), + gsSPNTrianglesInit_5b(16, // tri count + 7, 4, 8, // tri0 + 2, 9, 10, // tri1 + 0, 11, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 4, 2, 15, // tri1 + 5, 16, 0, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(6, 19, 20, // tri0 + 3, 6, 21, // tri1 + 3, 22, 5, // tri2 + 7, 23, 24 // tri3 + ), + gsSPNTriangles_5b(7, 25, 6, // tri0 + 1, 26, 27, // tri1 + 2, 1, 28, // tri2 + 1, 0, 29 // tri3 + ), + gsSPNTriangles_5b(3, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cml_1_v[275], 26, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 10, 11, // tri2 + 1, 0, 12 // tri3 + ), + gsSPNTriangles_5b(13, 6, 11, // tri0 + 12, 0, 14, // tri1 + 15, 12, 16, // tri2 + 11, 10, 17 // tri3 + ), + gsSPNTriangles_5b(17, 13, 11, // tri0 + 6, 13, 16, // tri1 + 10, 3, 15, // tri2 + 14, 7, 16 // tri3 + ), + gsSPNTriangles_5b(14, 16, 12, // tri0 + 16, 7, 6, // tri1 + 15, 3, 1, // tri2 + 11, 6, 5 // tri3 + ), + gsSPNTriangles_5b(4, 3, 10, // tri0 + 4, 10, 9, // tri1 + 8, 7, 14, // tri2 + 8, 14, 18 // tri3 + ), + gsSPNTriangles_5b(18, 14, 0, // tri0 + 16, 13, 17, // tri1 + 16, 17, 15, // tri2 + 15, 17, 10 // tri3 + ), + gsSPNTriangles_5b(1, 12, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 19, 25, 20 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&cml_1_v[301], 30, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 2, // tri0 + 2, 8, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 11, 14, 12 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 20, 21, 17 // tri2 + ), + gsSPNTriangles_5b(22, 23, 17, // tri0 + 17, 16, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 25, 26, 27, // tri0 + 28, 25, 27, // tri1 + 28, 27, 29 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&cml_1_v[331], 28, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 2 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 9, 10, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 11, 12, 13, // tri0 + 12, 14, 15, // tri1 + 12, 15, 13 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 18, 22, 23 // tri2 + ), + gsSPNTriangles_5b(24, 25, 18, // tri0 + 19, 26, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[359], 26, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 7, 5, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(20, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 9, 8, 16, // tri1 + 16, 15, 14, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(11, 10, 17, // tri0 + 20, 10, 21, // tri1 + 22, 21, 9, // tri2 + 20, 17, 10 // tri3 + ), + gsSPNTriangles_5b(17, 20, 18, // tri0 + 23, 24, 14, // tri1 + 19, 25, 13, // tri2 + 25, 23, 14 // tri3 + ), + gsSPNTriangles_5b(19, 13, 17, // tri0 + 14, 24, 16, // tri1 + 16, 24, 9, // tri2 + 17, 13, 12 // tri3 + ), + gsSPNTriangles_5b(9, 24, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_cml_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[410], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[414], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_cml_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[428], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 2, 1, 4, // tri1 + 2, 6, 0, // tri2 + 3, 2, 4 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_cml_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[385], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cml_1_v[389], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_cml_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[403], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(6, 2, 3, // tri0 + 4, 1, 0, // tri1 + 2, 6, 0, // tri2 + 4, 0, 5 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_cml_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cml_1_v[435], 16, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 4, 6, 8, // tri1 + 8, 9, 4, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b(2, 5, 11, // tri0 + 2, 11, 12, // tri1 + 13, 14, 15, // tri2 + 15, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 3, 2, 1, // tri1 + 3, 5, 2, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b(9, 13, 11, // tri0 + 7, 3, 1, // tri1 + 9, 10, 13, // tri2 + 9, 11, 5 // tri3 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 12, 15, 0, // tri1 + 2, 12, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_cml_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_cml_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_cml_model, 3, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,-350,0 }, + /* joint 15 */ { Larm1_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_cml_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,350,0 }, + /* joint 18 */ { Rarm1_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,1050 }, + /* joint 23 */ { mouth_cml_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_cml_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 600,0,500 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_cml_1 = { 26, 12, cKF_je_r_cml_1_tbl }; diff --git a/src/data/npc/model/mdl/cow_1.c b/src/data/npc/model/mdl/cow_1.c new file mode 100644 index 00000000..5a6cb699 --- /dev/null +++ b/src/data/npc/model/mdl/cow_1.c @@ -0,0 +1,658 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx cow_1_v[] = { +#include "assets/npc/mdl/cow_1_v.inc" +}; + +static Gfx head_cow_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[0], 28, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 6, 9, 10, // tri1 + 3, 11, 12, // tri2 + 6, 7, 9 // tri3 + ), + gsSPNTriangles_5b(4, 13, 8, // tri0 + 0, 2, 3, // tri1 + 2, 11, 3, // tri2 + 10, 1, 0 // tri3 + ), + gsSPNTriangles_5b(13, 4, 3, // tri0 + 3, 12, 13, // tri1 + 10, 0, 6, // tri2 + 5, 6, 0 // tri3 + ), + gsSPNTriangles_5b(3, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(16, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 17, 21 // tri2 + ), + gsSPNTriangles_5b(17, 22, 18, // tri0 + 23, 24, 21, // tri1 + 25, 26, 19, // tri2 + 24, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 27, 18, // tri0 + 19, 14, 16, // tri1 + 19, 26, 14, // tri2 + 16, 15, 23 // tri3 + ), + gsSPNTriangles_5b(19, 18, 27, // tri0 + 27, 25, 19, // tri1 + 21, 16, 23, // tri2 + 16, 21, 17 // tri3 + ), + gsSPNTriangles_5b(16, 17, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 48, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cow_1_v[28], 27, 0), + gsSPNTrianglesInit_5b(38, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 5, // tri0 + 1, 8, 2, // tri1 + 6, 9, 10, // tri2 + 10, 11, 2 // tri3 + ), + gsSPNTriangles_5b(1, 0, 12, // tri0 + 0, 4, 13, // tri1 + 13, 4, 5, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 12, 13, // tri0 + 5, 16, 13, // tri1 + 3, 9, 5, // tri2 + 3, 11, 10 // tri3 + ), + gsSPNTriangles_5b(18, 19, 12, // tri0 + 20, 17, 16, // tri1 + 13, 16, 17, // tri2 + 12, 17, 18 // tri3 + ), + gsSPNTriangles_5b(18, 21, 19, // tri0 + 22, 18, 17, // tri1 + 20, 21, 22, // tri2 + 15, 21, 20 // tri3 + ), + gsSPNTriangles_5b(16, 15, 20, // tri0 + 22, 21, 18, // tri1 + 17, 20, 22, // tri2 + 0, 11, 3 // tri3 + ), + gsSPNTriangles_5b(10, 9, 3, // tri0 + 2, 11, 0, // tri1 + 5, 9, 6, // tri2 + 12, 19, 23 // tri3 + ), + gsSPNTriangles_5b(16, 5, 7, // tri0 + 6, 24, 7, // tri1 + 13, 12, 0, // tri2 + 7, 25, 14 // tri3 + ), + gsSPNTriangles_5b(23, 26, 1, // tri0 + 1, 12, 23, // tri1 + 14, 16, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&cow_1_v[55], 29, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 4, 3, // tri1 + 7, 6, 9, // tri2 + 5, 10, 11 // tri3 + ), + gsSPNTriangles_5b(5, 11, 6, // tri0 + 7, 12, 5, // tri1 + 9, 6, 8, // tri2 + 8, 11, 4 // tri3 + ), + gsSPNTriangles_5b(10, 0, 4, // tri0 + 10, 4, 11, // tri1 + 8, 6, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 19, 16 // tri2 + ), + gsSPNTriangles_5b(15, 17, 20, // tri0 + 20, 13, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 253, 255, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 25, 27, 26 // tri2 + ), + gsSPNTriangles_5b(25, 28, 27, // tri0 + 23, 24, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[84], 28, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 1, 0, 5, // tri2 + 1, 12, 11 // tri3 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 5, 0, 3, // tri1 + 2, 3, 0, // tri2 + 8, 7, 3 // tri3 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 11, 2, 1, // tri1 + 12, 1, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(16, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(14, 22, 23, // tri0 + 21, 15, 19, // tri1 + 20, 17, 16, // tri2 + 23, 19, 14 // tri3 + ), + gsSPNTriangles_5b(23, 18, 17, // tri0 + 24, 25, 22, // tri1 + 18, 26, 27, // tri2 + 24, 22, 13 // tri3 + ), + gsSPNTriangles_5b(16, 18, 27, // tri0 + 14, 19, 15, // tri1 + 17, 20, 19, // tri2 + 22, 14, 13 // tri3 + ), + gsSPNTriangles_5b(17, 19, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_cow_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[148], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[153], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_cow_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[169], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[173], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_cow_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[112], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[117], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_cow_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[133], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[137], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_cow_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[184], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[191], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 4, 7, 1, // tri0 + 5, 0, 8, // tri1 + 2, 6, 9 // tri2 + ), + gsSPNTriangles_5b(6, 3, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(1, 18, 17, // tri0 + 2, 19, 20, // tri1 + 2, 21, 0, // tri2 + 3, 22, 23 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 3, 1, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&cow_1_v[211], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 1, 9, // tri0 + 10, 6, 0, // tri1 + 2, 1, 8, // tri2 + 7, 3, 5 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_cow_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[236], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_cow_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[222], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[226], 10, 4), + gsSPNTrianglesInit_5b(4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_cow_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[293], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[298], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 20, 17, 21 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_cow_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[315], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[319], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(15, 19, 20, // tri0 + 21, 22, 18, // tri1 + 20, 16, 15, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_cow_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[244], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[249], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 20, 15, 21 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_cow_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[266], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&cow_1_v[271], 22, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 5, // tri0 + 4, 6, 7, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(4, 0, 10, // tri0 + 0, 11, 12, // tri1 + 4, 13, 3, // tri2 + 2, 3, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 15, 21, 16 // tri2 + ), + gsSPNTriangles_5b(20, 22, 18, // tri0 + 23, 15, 17, // tri1 + 17, 19, 23, // tri2 + 19, 18, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_cow_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&cow_1_v[341], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 4, 0, 2, // tri1 + 0, 9, 1, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 12, 11, // tri1 + 3, 0, 4, // tri2 + 13, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_cow_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_cow_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_cow_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_cow_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_cow_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_cow_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1800,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_cow_1 = { 26, 13, cKF_je_r_cow_1_tbl }; diff --git a/src/data/npc/model/mdl/crd_1.c b/src/data/npc/model/mdl/crd_1.c new file mode 100644 index 00000000..4cf2adf8 --- /dev/null +++ b/src/data/npc/model/mdl/crd_1.c @@ -0,0 +1,686 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx crd_1_v[] = { +#include "assets/npc/mdl/crd_1_v.inc" +}; + +static Gfx head_crd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 48, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 188), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[49], 32, 0), + gsSPNTrianglesInit_5b(45, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 5, 9, // tri1 + 11, 12, 13, // tri2 + 6, 14, 7 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 13, 18, 11, // tri1 + 15, 17, 6, // tri2 + 7, 2, 1 // tri3 + ), + gsSPNTriangles_5b(9, 19, 10, // tri0 + 5, 8, 3, // tri1 + 2, 20, 0, // tri2 + 21, 12, 22 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 8, 12, 21, // tri1 + 15, 22, 16, // tri2 + 23, 24, 16 // tri3 + ), + gsSPNTriangles_5b(11, 25, 23, // tri0 + 1, 0, 3, // tri1 + 1, 3, 8, // tri2 + 12, 8, 10 // tri3 + ), + gsSPNTriangles_5b(16, 24, 26, // tri0 + 17, 16, 27, // tri1 + 28, 25, 29, // tri2 + 29, 25, 11 // tri3 + ), + gsSPNTriangles_5b(28, 26, 24, // tri0 + 23, 25, 28, // tri1 + 6, 1, 15, // tri2 + 10, 13, 12 // tri3 + ), + gsSPNTriangles_5b(7, 14, 30, // tri0 + 5, 4, 31, // tri1 + 30, 20, 2, // tri2 + 2, 7, 30 // tri3 + ), + gsSPNTriangles_5b(31, 19, 9, // tri0 + 9, 5, 31, // tri1 + 21, 15, 1, // tri2 + 1, 8, 21 // tri3 + ), + gsSPNTriangles_5b(22, 15, 21, // tri0 + 28, 24, 23, // tri1 + 16, 22, 23, // tri2 + 23, 22, 11 // tri3 + ), + gsSPNTriangles_5b(11, 18, 29, // tri0 + 26, 27, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&crd_1_v[81], 18, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 5, 4, 1, // tri1 + 7, 2, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 6, 13, 14, // tri1 + 14, 15, 6, // tri2 + 11, 16, 12 // tri3 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 1, 9, 2, // tri1 + 2, 12, 8, // tri2 + 15, 1, 4 // tri3 + ), + gsSPNTriangles_5b(6, 15, 4, // tri0 + 12, 2, 9, // tri1 + 14, 17, 15, // tri2 + 15, 9, 1 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&crd_1_v[99], 31, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 1, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 2, // tri2 + 3, 2, 6 // tri3 + ), + gsSPNTriangles_5b(10, 14, 15, // tri0 + 11, 16, 17, // tri1 + 10, 15, 11, // tri2 + 11, 17, 9 // tri3 + ), + gsSPNTriangles_5b(12, 11, 15, // tri0 + 7, 18, 16, // tri1 + 19, 8, 20, // tri2 + 20, 8, 1 // tri3 + ), + gsSPNTriangles_5b(20, 1, 0, // tri0 + 2, 1, 12, // tri1 + 7, 11, 1, // tri2 + 8, 21, 22 // tri3 + ), + gsSPNTriangles_5b(13, 15, 2, // tri0 + 1, 11, 12, // tri1 + 2, 15, 14, // tri2 + 15, 13, 12 // tri3 + ), + gsSPNTriangles_5b(8, 16, 18, // tri0 + 8, 18, 7, // tri1 + 16, 11, 7, // tri2 + 21, 8, 19 // tri3 + ), + gsSPNTriangles_5b(6, 2, 4, // tri0 + 14, 4, 2, // tri1 + 22, 16, 8, // tri2 + 19, 23, 21 // tri3 + ), + gsSPNTriangles_5b(16, 22, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(5, // tri count + 24, 25, 26, // tri0 + 26, 25, 27, // tri1 + 25, 28, 29 // tri2 + ), + gsSPNTriangles_5b(27, 25, 29, // tri0 + 30, 24, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&crd_1_v[130], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 4, 3, // tri1 + 7, 8, 9, // tri2 + 6, 9, 4 // tri3 + ), + gsSPNTriangles_5b(7, 9, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_crd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[7], 22, 7), + gsSPNTrianglesInit_5b(8, // tri count + 5, 7, 8, // tri0 + 6, 5, 9, // tri1 + 6, 10, 11 // tri2 + ), + gsSPNTriangles_5b(4, 12, 13, // tri0 + 0, 6, 14, // tri1 + 5, 15, 16, // tri2 + 5, 4, 17 // tri3 + ), + gsSPNTriangles_5b(4, 3, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(2, // tri count + 2, 19, 20, // tri0 + 1, 21, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 26, 28, 27 // tri2 + ), + gsSPVertex(&crd_1_v[29], 20, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 7, 8, 9, // tri0 + 10, 11, 7, // tri1 + 7, 9, 12 // tri2 + ), + gsSPNTriangles_5b(8, 13, 9, // tri0 + 10, 14, 11, // tri1 + 12, 10, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 16, 18, 17, // tri1 + 18, 19, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_crd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[176], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[181], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_crd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[197], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[201], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_crd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[140], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[145], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_crd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[161], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[165], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_crd_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[212], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[221], 20, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 10, // tri0 + 8, 11, 12, // tri1 + 1, 0, 13 // tri2 + ), + gsSPNTriangles_5b(0, 3, 14, // tri0 + 4, 15, 7, // tri1 + 3, 7, 16, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(3, 20, 19, // tri0 + 8, 2, 21, // tri1 + 5, 8, 22, // tri2 + 5, 23, 24 // tri3 + ), + gsSPNTriangles_5b(6, 26, 25, // tri0 + 6, 5, 27, // tri1 + 4, 6, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&crd_1_v[241], 17, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTriangles_5b(5, 14, 10, // tri0 + 6, 11, 4, // tri1 + 10, 14, 11, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(5, 15, 3, // tri0 + 9, 12, 7, // tri1 + 11, 8, 7, // tri2 + 2, 16, 0 // tri3 + ), + gsSPNTriangles_5b(13, 1, 0, // tri0 + 4, 14, 5, // tri1 + 1, 9, 6, // tri2 + 8, 6, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_crd_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[278], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[282], 12, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 3, 1, 12, // tri1 + 1, 0, 13, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_crd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[258], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[262], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 3, 11, 10, // tri1 + 1, 13, 12, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_crd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[325], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[330], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_crd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[347], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_crd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[294], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&crd_1_v[299], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_crd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[316], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_crd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&crd_1_v[356], 21, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 1, 6, 7, // tri1 + 8, 3, 9, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 12, 5, 7, // tri1 + 9, 3, 4, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(10, 11, 14, // tri0 + 13, 15, 16, // tri1 + 14, 11, 15, // tri2 + 13, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 16, 18, // tri0 + 1, 0, 19, // tri1 + 1, 19, 6, // tri2 + 19, 0, 20 // tri3 + ), + gsSPNTriangles_5b(6, 19, 13, // tri0 + 13, 19, 20, // tri1 + 20, 3, 8, // tri2 + 8, 10, 20 // tri3 + ), + gsSPNTriangles_5b(0, 3, 20, // tri0 + 13, 20, 14, // tri1 + 10, 14, 20, // tri2 + 7, 5, 1 // tri3 + ), + gsSPNTriangles_5b(17, 6, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_crd_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_crd_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -300,0,-700 }, + /* joint 11 */ { tail1_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_crd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 399,0,0 }, + /* joint 13 */ { chest_crd_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_crd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,300 }, + /* joint 23 */ { mouth_crd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_crd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,-100 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_crd_1 = { 26, 14, cKF_je_r_crd_1_tbl }; diff --git a/src/data/npc/model/mdl/dog_1.c b/src/data/npc/model/mdl/dog_1.c new file mode 100644 index 00000000..a4f6583a --- /dev/null +++ b/src/data/npc/model/mdl/dog_1.c @@ -0,0 +1,634 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx dog_1_v[] = { +#include "assets/npc/mdl/dog_1_v.inc" +}; + +static Gfx head_dog_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[7], 14, 7), + gsSPNTrianglesInit_5b(10, // tri count + 3, 7, 8, // tri0 + 3, 1, 9, // tri1 + 1, 11, 10 // tri2 + ), + gsSPNTriangles_5b(4, 2, 12, // tri0 + 0, 13, 2, // tri1 + 1, 4, 14, // tri2 + 5, 3, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 0, 6, 18, // tri1 + 2, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&dog_1_v[21], 31, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsSPNTriangles_5b(7, 0, 8, // tri0 + 9, 4, 3, // tri1 + 5, 10, 8, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(10, 14, 15, // tri0 + 5, 14, 10, // tri1 + 6, 16, 9, // tri2 + 7, 17, 0 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 5, 2, 3, // tri1 + 2, 6, 3, // tri2 + 3, 6, 9 // tri3 + ), + gsSPNTriangles_5b(18, 16, 6, // tri0 + 13, 14, 4, // tri1 + 4, 11, 13, // tri2 + 6, 1, 18 // tri3 + ), + gsSPNTriangles_5b(13, 12, 20, // tri0 + 21, 19, 18, // tri1 + 8, 10, 7, // tri2 + 17, 1, 0 // tri3 + ), + gsSPNTriangles_5b(7, 10, 15, // tri0 + 4, 14, 5, // tri1 + 9, 11, 4, // tri2 + 8, 2, 5 // tri3 + ), + gsSPNTriangles_5b(8, 0, 2, // tri0 + 20, 14, 13, // tri1 + 18, 1, 21, // tri2 + 21, 1, 17 // tri3 + ), + gsSPNTriangles_5b(15, 14, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 22, 24, 28 // tri2 + ), + gsSPNTriangles_5b(26, 22, 28, // tri0 + 26, 25, 22, // tri1 + 29, 24, 30, // tri2 + 24, 23, 30 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 30, 22, 29, // tri1 + 22, 25, 29, // tri2 + 30, 23, 22 // tri3 + ), + gsSPNTriangles_5b(25, 27, 29, // tri0 + 29, 28, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&dog_1_v[52], 21, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 8, // tri0 + 9, 6, 5, // tri1 + 9, 7, 10, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 5, 7, 9, // tri1 + 4, 6, 14, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 13, // tri0 + 17, 16, 18, // tri1 + 14, 6, 0, // tri2 + 18, 16, 8 // tri3 + ), + gsSPNTriangles_5b(14, 0, 3, // tri0 + 15, 14, 19, // tri1 + 10, 16, 13, // tri2 + 3, 19, 14 // tri3 + ), + gsSPNTriangles_5b(7, 16, 10, // tri0 + 9, 10, 20, // tri1 + 10, 11, 20, // tri2 + 20, 11, 1 // tri3 + ), + gsSPNTriangles_5b(1, 0, 20, // tri0 + 20, 0, 9, // tri1 + 6, 9, 0, // tri2 + 7, 8, 16 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&dog_1_v[73], 28, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 11, 5, 4, // tri1 + 2, 12, 11, // tri2 + 13, 2, 1 // tri3 + ), + gsSPNTriangles_5b(8, 5, 12, // tri0 + 11, 12, 5, // tri1 + 5, 7, 3, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 14, 9, // tri0 + 4, 15, 11, // tri1 + 16, 14, 10, // tri2 + 13, 17, 16 // tri3 + ), + gsSPNTriangles_5b(13, 16, 2, // tri0 + 2, 16, 10, // tri1 + 12, 10, 8, // tri2 + 11, 0, 2 // tri3 + ), + gsSPNTriangles_5b(18, 1, 0, // tri0 + 0, 11, 15, // tri1 + 8, 7, 5, // tri2 + 10, 12, 2 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 19, 24, 22 // tri2 + ), + gsSPNTriangles_5b(22, 25, 23, // tri0 + 19, 21, 24, // tri1 + 26, 20, 19, // tri2 + 26, 25, 22 // tri3 + ), + gsSPNTriangles_5b(21, 27, 24, // tri0 + 20, 26, 22, // tri1 + 20, 22, 27, // tri2 + 22, 24, 27 // tri3 + ), + gsSPNTriangles_5b(23, 26, 19, // tri0 + 23, 25, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_dog_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[132], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[136], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 2, 6, 1, // tri1 + 0, 1, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 0, 11, 10, // tri1 + 3, 0, 12, // tri2 + 3, 13, 2 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm_dog_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[149], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[152], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 0, 6, 5, // tri1 + 0, 2, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 1, 0, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_dog_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[101], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[105], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 6, 2, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 0, 11, 10, // tri1 + 0, 3, 12, // tri2 + 2, 13, 3 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_dog_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[118], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[121], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 0, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_dog_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[163], 32, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 5, 9, 3, // tri1 + 10, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 13, 19, 14, // tri1 + 20, 7, 2, // tri2 + 21, 9, 5 // tri3 + ), + gsSPNTriangles_5b(22, 1, 0, // tri0 + 23, 6, 3, // tri1 + 10, 12, 24, // tri2 + 24, 25, 10 // tri3 + ), + gsSPNTriangles_5b(18, 25, 24, // tri0 + 19, 26, 21, // tri1 + 3, 9, 23, // tri2 + 0, 27, 22 // tri3 + ), + gsSPNTriangles_5b(2, 1, 20, // tri0 + 5, 14, 21, // tri1 + 0, 2, 8, // tri2 + 28, 7, 19 // tri3 + ), + gsSPNTriangles_5b(29, 7, 28, // tri0 + 22, 27, 30, // tri1 + 20, 19, 7, // tri2 + 8, 27, 0 // tri3 + ), + gsSPNTriangles_5b(19, 20, 26, // tri0 + 22, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&dog_1_v[195], 12, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 10, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_dog_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[234], 15, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 0 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 8, 12, // tri1 + 10, 13, 8, // tri2 + 5, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_dog_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[207], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[213], 21, 6), + gsSPNTrianglesInit_5b(8, // tri count + 1, 6, 7, // tri0 + 3, 8, 9, // tri1 + 4, 10, 11 // tri2 + ), + gsSPNTriangles_5b(3, 12, 13, // tri0 + 3, 2, 14, // tri1 + 1, 0, 15, // tri2 + 0, 4, 16 // tri3 + ), + gsSPNTriangles_5b(5, 3, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 20, 22, 24 // tri2 + ), + gsSPNTriangles_5b(25, 18, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_dog_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[294], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[300], 18, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 3, 6, // tri0 + 3, 7, 8, // tri1 + 2, 9, 3 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 1, 15, 2 // tri3 + ), + gsSPNTriangles_5b(1, 16, 17, // tri0 + 0, 5, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 19, 20, 21, // tri0 + 21, 22, 23, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_dog_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[318], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[324], 15, 6), + gsSPNTrianglesInit_5b(10, // tri count + 1, 7, 6, // tri0 + 1, 0, 8, // tri1 + 3, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 2, 1, 12, // tri1 + 2, 13, 14, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 3, 17, // tri0 + 3, 18, 19, // tri1 + 5, 2, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_dog_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[249], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[255], 18, 6), + gsSPNTrianglesInit_5b(9, // tri count + 3, 4, 6, // tri0 + 3, 7, 8, // tri1 + 3, 9, 2 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 1 // tri3 + ), + gsSPNTriangles_5b(1, 16, 17, // tri0 + 5, 0, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_dog_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[273], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&dog_1_v[279], 15, 6), + gsSPNTrianglesInit_5b(10, // tri count + 1, 7, 6, // tri0 + 0, 1, 8, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 1, 2, 12, // tri1 + 2, 13, 14, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(3, 0, 17, // tri0 + 3, 18, 19, // tri1 + 2, 5, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_dog_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&dog_1_v[339], 24, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 6, // tri0 + 2, 5, 8, // tri1 + 9, 4, 3, // tri2 + 8, 0, 2 // tri3 + ), + gsSPNTriangles_5b(0, 8, 3, // tri0 + 5, 7, 10, // tri1 + 4, 1, 0, // tri2 + 4, 11, 1 // tri3 + ), + gsSPNTrianglesInit_5b(11, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 18, 17 // tri2 + ), + gsSPNTriangles_5b(19, 20, 15, // tri0 + 13, 15, 20, // tri1 + 19, 17, 21, // tri2 + 17, 19, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 15, // tri0 + 20, 14, 13, // tri1 + 12, 14, 22, // tri2 + 23, 22, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_dog_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_dog_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 125,0,-675 }, + /* joint 11 */ { tail1_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_dog_model, 0, cKF_JOINT_FLAG_DISP_OPA, 525,0,0 }, + /* joint 13 */ { chest_dog_model, 3, cKF_JOINT_FLAG_DISP_OPA, 626,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-700,100 }, + /* joint 15 */ { Larm1_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_dog_model, 0, cKF_JOINT_FLAG_DISP_OPA, 426,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,700,100 }, + /* joint 18 */ { Rarm_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 275,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 549,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_dog_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1325,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_dog_1 = { 26, 13, cKF_je_r_dog_1_tbl }; diff --git a/src/data/npc/model/mdl/duk_1.c b/src/data/npc/model/mdl/duk_1.c new file mode 100644 index 00000000..0804ad49 --- /dev/null +++ b/src/data/npc/model/mdl/duk_1.c @@ -0,0 +1,636 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx duk_1_v[] = { +#include "assets/npc/mdl/duk_1_v.inc" +}; + +static Gfx head_duk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[26], 19, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 0 // tri2 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 5, 9, 3, // tri1 + 6, 4, 10, // tri2 + 4, 3, 10 // tri3 + ), + gsSPNTriangles_5b(2, 8, 4, // tri0 + 2, 4, 6, // tri1 + 6, 10, 7, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(11, 10, 3, // tri0 + 10, 12, 7, // tri1 + 7, 12, 13, // tri2 + 7, 13, 14 // tri3 + ), + gsSPNTriangles_5b(0, 7, 14, // tri0 + 15, 11, 16, // tri1 + 16, 3, 9, // tri2 + 16, 11, 3 // tri3 + ), + gsSPNTriangles_5b(15, 13, 12, // tri0 + 12, 11, 15, // tri1 + 17, 18, 8, // tri2 + 2, 1, 17 // tri3 + ), + gsSPNTriangles_5b(17, 8, 2, // tri0 + 2, 6, 0, // tri1 + 8, 18, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&duk_1_v[45], 13, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 7, 2, // tri0 + 5, 8, 0, // tri1 + 0, 2, 9, // tri2 + 10, 3, 5 // tri3 + ), + gsSPNTriangles_5b(10, 5, 9, // tri0 + 4, 11, 8, // tri1 + 4, 8, 5, // tri2 + 9, 2, 12 // tri3 + ), + gsSPNTriangles_5b(9, 12, 10, // tri0 + 12, 2, 7, // tri1 + 9, 5, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&duk_1_v[58], 27, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 0, 3, 11, // tri1 + 0, 12, 1, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(11, 12, 0, // tri0 + 16, 17, 8, // tri1 + 7, 15, 5, // tri2 + 6, 18, 19 // tri3 + ), + gsSPNTriangles_5b(19, 20, 7, // tri0 + 4, 8, 10, // tri1 + 10, 3, 4, // tri2 + 16, 8, 4 // tri3 + ), + gsSPNTriangles_5b(21, 14, 13, // tri0 + 22, 20, 23, // tri1 + 24, 25, 22, // tri2 + 24, 22, 23 // tri3 + ), + gsSPNTriangles_5b(2, 4, 0, // tri0 + 7, 20, 13, // tri1 + 13, 20, 22, // tri2 + 23, 20, 19 // tri3 + ), + gsSPNTriangles_5b(15, 7, 13, // tri0 + 19, 7, 6, // tri1 + 4, 2, 16, // tri2 + 19, 18, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&duk_1_v[85], 16, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 0, 2, 4, // tri1 + 11, 5, 4, // tri2 + 6, 5, 11 // tri3 + ), + gsSPNTriangles_5b(10, 7, 6, // tri0 + 11, 12, 6, // tri1 + 4, 12, 11, // tri2 + 12, 4, 2 // tri3 + ), + gsSPNTriangles_5b(12, 13, 8, // tri0 + 7, 14, 5, // tri1 + 5, 14, 3, // tri2 + 8, 6, 12 // tri3 + ), + gsSPNTriangles_5b(6, 8, 10, // tri0 + 2, 15, 12, // tri1 + 4, 3, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_duk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[0], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[4], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 4, // tri0 + 2, 6, 5, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 11, 10, // tri1 + 3, 0, 12, // tri2 + 0, 14, 13 // tri3 + ), + gsSPNTrianglesInit_5b(10, // tri count + 15, 16, 17, // tri0 + 18, 17, 16, // tri1 + 18, 16, 19 // tri2 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 16, 15, 24, // tri2 + 24, 19, 16 // tri3 + ), + gsSPNTriangles_5b(18, 19, 24, // tri0 + 25, 18, 24, // tri1 + 15, 17, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_duk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[133], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[137], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 3, 5, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 0, // tri0 + 3, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_duk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[152], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[156], 9, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 1, 3, 10, // tri1 + 3, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_duk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[101], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[105], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 3, 5, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 3, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_duk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[120], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[124], 9, 4), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 3, 1, 10, // tri1 + 3, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_duk_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[165], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[174], 20, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 10, // tri0 + 8, 11, 12, // tri1 + 1, 0, 13 // tri2 + ), + gsSPNTriangles_5b(0, 3, 14, // tri0 + 4, 15, 7, // tri1 + 3, 7, 16, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(3, 20, 19, // tri0 + 8, 2, 21, // tri1 + 5, 8, 22, // tri2 + 5, 23, 24 // tri3 + ), + gsSPNTriangles_5b(6, 26, 25, // tri0 + 6, 5, 27, // tri1 + 4, 6, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&duk_1_v[194], 17, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 7, 8, 9, // tri1 + 7, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTriangles_5b(5, 14, 10, // tri0 + 6, 11, 4, // tri1 + 10, 14, 11, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(5, 15, 3, // tri0 + 9, 12, 7, // tri1 + 11, 8, 7, // tri2 + 2, 16, 0 // tri3 + ), + gsSPNTriangles_5b(13, 1, 0, // tri0 + 4, 14, 5, // tri1 + 1, 9, 6, // tri2 + 8, 6, 9 // tri3 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_duk_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[211], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[217], 6, 6), + gsSPNTrianglesInit_5b(6, // tri count + 2, 6, 4, // tri0 + 0, 4, 7, // tri1 + 1, 8, 5 // tri2 + ), + gsSPNTriangles_5b(3, 9, 2, // tri0 + 5, 10, 3, // tri1 + 1, 0, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_duk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[272], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[276], 16, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 2, 1, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 3, 9, // tri0 + 1, 0, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 16, 17, 13, // tri1 + 13, 15, 16 // tri2 + ), + gsSPNTriangles_5b(18, 17, 16, // tri0 + 18, 16, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_duk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[292], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[297], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 2, 3, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_duk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[311], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 0, 8, // tri0 + 6, 9, 4, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_duk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[223], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[227], 16, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 2, 8 // tri2 + ), + gsSPNTriangles_5b(3, 0, 9, // tri0 + 0, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 17, 13, 15 // tri2 + ), + gsSPNTriangles_5b(18, 17, 16, // tri0 + 18, 16, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_duk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[243], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&duk_1_v[248], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 3, 2, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 0, 10, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_duk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[262], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 6, 9, 4, // tri1 + 2, 8, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_duk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&duk_1_v[321], 23, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 1, 6, // tri1 + 7, 3, 8, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 5, 6, 11, // tri1 + 12, 5, 11, // tri2 + 8, 3, 4 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 9, 10, 14, // tri1 + 13, 15, 16, // tri2 + 14, 10, 15 // tri3 + ), + gsSPNTriangles_5b(13, 16, 17, // tri0 + 17, 16, 18, // tri1 + 18, 16, 19, // tri2 + 1, 0, 20 // tri3 + ), + gsSPNTriangles_5b(1, 20, 21, // tri0 + 20, 0, 22, // tri1 + 21, 20, 13, // tri2 + 13, 20, 22 // tri3 + ), + gsSPNTriangles_5b(6, 1, 21, // tri0 + 21, 13, 17, // tri1 + 22, 3, 7, // tri2 + 7, 9, 22 // tri3 + ), + gsSPNTriangles_5b(0, 3, 22, // tri0 + 13, 22, 14, // tri1 + 9, 14, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_duk_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_duk_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_duk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_duk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-650 }, + /* joint 11 */ { tail1_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_duk_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-420,0 }, + /* joint 15 */ { Larm1_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_duk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,420,0 }, + /* joint 18 */ { Rarm1_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1150 }, + /* joint 23 */ { mouth_duk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_duk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1003,0,2 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_duk_1 = { 26, 15, cKF_je_r_duk_1_tbl }; diff --git a/src/data/npc/model/mdl/elp_1.c b/src/data/npc/model/mdl/elp_1.c new file mode 100644 index 00000000..4b1a3fd3 --- /dev/null +++ b/src/data/npc/model/mdl/elp_1.c @@ -0,0 +1,660 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx elp_1_v[] = { +#include "assets/npc/mdl/elp_1_v.inc" +}; + +static Gfx head_elp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[27], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[33], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 5, 6, 3, // tri0 + 1, 7, 8, // tri1 + 0, 9, 10 // tri2 + ), + gsSPNTriangles_5b(2, 11, 12, // tri0 + 3, 13, 2, // tri1 + 3, 14, 15, // tri2 + 2, 16, 0 // tri3 + ), + gsSPNTriangles_5b(0, 17, 1, // tri0 + 1, 18, 4, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&elp_1_v[46], 26, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 10, 9, // tri1 + 0, 13, 1, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTriangles_5b(12, 9, 16, // tri0 + 17, 18, 19, // tri1 + 18, 20, 21, // tri2 + 18, 22, 19 // tri3 + ), + gsSPNTriangles_5b(18, 23, 20, // tri0 + 24, 9, 25, // tri1 + 5, 6, 8, // tri2 + 11, 25, 9 // tri3 + ), + gsSPNTriangles_5b(8, 3, 5, // tri0 + 2, 15, 0, // tri1 + 21, 22, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&elp_1_v[72], 24, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 0, 3, // tri0 + 9, 7, 6, // tri1 + 5, 6, 3, // tri2 + 5, 10, 6 // tri3 + ), + gsSPNTriangles_5b(10, 9, 6, // tri0 + 11, 12, 1, // tri1 + 11, 1, 13, // tri2 + 2, 4, 0 // tri3 + ), + gsSPNTriangles_5b(1, 12, 2, // tri0 + 3, 0, 4, // tri1 + 3, 7, 8, // tri2 + 8, 13, 0 // tri3 + ), + gsSPNTriangles_5b(13, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 20 // tri2 + ), + gsSPNTriangles_5b(20, 21, 19, // tri0 + 16, 22, 14, // tri1 + 16, 21, 20, // tri2 + 20, 22, 16 // tri3 + ), + gsSPNTriangles_5b(19, 23, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPVertex(&elp_1_v[96], 21, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 3, 4 // tri2 + ), + gsSPNTriangles_5b(4, 1, 6, // tri0 + 7, 8, 6, // tri1 + 9, 7, 10, // tri2 + 4, 11, 5 // tri3 + ), + gsSPNTriangles_5b(4, 8, 11, // tri0 + 6, 8, 4, // tri1 + 12, 7, 6, // tri2 + 13, 11, 14 // tri3 + ), + gsSPNTriangles_5b(10, 15, 9, // tri0 + 6, 16, 12, // tri1 + 8, 7, 9, // tri2 + 8, 9, 14 // tri3 + ), + gsSPNTriangles_5b(8, 14, 11, // tri0 + 15, 17, 9, // tri1 + 17, 18, 14, // tri2 + 1, 16, 6 // tri3 + ), + gsSPNTriangles_5b(9, 17, 14, // tri0 + 14, 18, 13, // tri1 + 19, 20, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&elp_1_v[117], 16, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 + ), + gsSPNTriangles_5b(7, 8, 3, // tri0 + 9, 3, 10, // tri1 + 4, 3, 9, // tri2 + 3, 11, 7 // tri3 + ), + gsSPNTriangles_5b(5, 12, 1, // tri0 + 5, 1, 11, // tri1 + 11, 1, 13, // tri2 + 13, 1, 0 // tri3 + ), + gsSPNTriangles_5b(3, 8, 10, // tri0 + 14, 10, 8, // tri1 + 1, 12, 15, // tri2 + 3, 5, 11 // tri3 + ), + gsSPNTriangles_5b(1, 15, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_elp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[5], 22, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 2, 5, // tri0 + 0, 1, 6, // tri1 + 4, 0, 7 // tri2 + ), + gsSPNTriangles_5b(4, 8, 3, // tri0 + 0, 9, 10, // tri1 + 0, 11, 12, // tri2 + 2, 14, 13 // tri3 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 21, 23, 22 // tri2 + ), + gsSPNTriangles_5b(22, 24, 20, // tri0 + 25, 20, 24, // tri1 + 23, 21, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_elp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[169], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[174], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 6, // tri0 + 0, 1, 7, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(4, 2, 10, // tri0 + 1, 4, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 0, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_elp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[190], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[194], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 1, 4, // tri0 + 2, 5, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 1, 0, 11, // tri1 + 1, 13, 12, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_elp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[133], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[138], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 6, // tri0 + 1, 0, 7, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 4, 10, // tri0 + 4, 1, 11, // tri1 + 3, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(0, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_elp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[154], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[158], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 2, 4, // tri0 + 2, 5, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 0, 9, // tri0 + 0, 1, 10, // tri1 + 1, 12, 11, // tri2 + 0, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_elp_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[205], 28, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(2, 1, 7, // tri0 + 2, 7, 8, // tri1 + 9, 10, 3, // tri2 + 9, 3, 11 // tri3 + ), + gsSPNTriangles_5b(8, 7, 10, // tri0 + 8, 10, 9, // tri1 + 11, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(14, // tri count + 12, 13, 14, // tri0 + 12, 15, 13, // tri1 + 16, 14, 13 // tri2 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 13, 18, 16, // tri1 + 20, 21, 15, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(16, 18, 17, // tri0 + 19, 23, 22, // tri1 + 24, 25, 22, // tri2 + 26, 21, 20 // tri3 + ), + gsSPNTriangles_5b(20, 27, 26, // tri0 + 22, 17, 19, // tri1 + 15, 12, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&elp_1_v[233], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(1, 3, 2, // tri0 + 2, 6, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_elp_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[266], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 6, 4, 5, // tri1 + 7, 0, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_elp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[240], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[244], 22, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 3, 2, 10, // tri1 + 3, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(11, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 17, 18, 19 // tri2 + ), + gsSPNTriangles_5b(20, 15, 21, // tri0 + 22, 19, 18, // tri1 + 21, 15, 14, // tri2 + 16, 15, 23 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 18, 25, 22, // tri1 + 21, 14, 25, // tri2 + 25, 18, 21 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_elp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[315], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[320], 17, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 0, 7, 8, // tri1 + 2, 10, 9 // tri2 + ), + gsSPNTriangles_5b(1, 11, 0, // tri0 + 4, 2, 12, // tri1 + 1, 4, 13, // tri2 + 1, 14, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 17, 21, 20 // tri2 + ), + gsSPNTriangles_5b(19, 18, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_elp_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[337], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[343], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 1, 3, 6, // tri0 + 2, 1, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(4, 2, 9, // tri0 + 0, 5, 10, // tri1 + 1, 12, 11, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 5, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_elp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[274], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[279], 17, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 9, 1 // tri2 + ), + gsSPNTriangles_5b(2, 4, 10, // tri0 + 4, 1, 11, // tri1 + 1, 12, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 16, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 20, 21, 19 // tri2 + ), + gsSPNTriangles_5b(20, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_elp_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[296], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&elp_1_v[302], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 0, 3, 6, // tri0 + 3, 1, 7, // tri1 + 1, 2, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 1, 16, 15 // tri3 + ), + gsSPNTriangles_5b(4, 0, 17, // tri0 + 2, 5, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_elp_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&elp_1_v[356], 24, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 7, 10, // tri1 + 9, 3, 7, // tri2 + 3, 1, 7 // tri3 + ), + gsSPNTriangles_5b(6, 11, 4, // tri0 + 10, 6, 5, // tri1 + 10, 5, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(10, // tri count + 12, 13, 14, // tri0 + 15, 14, 13, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(14, 19, 12, // tri0 + 14, 17, 19, // tri1 + 20, 21, 22, // tri2 + 23, 22, 15 // tri3 + ), + gsSPNTriangles_5b(13, 23, 15, // tri0 + 22, 23, 20, // tri1 + 19, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_elp_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_elp_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-375,0 }, + /* joint 3 */ { Lfoot1_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,375,0 }, + /* joint 7 */ { Rfoot1_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 50,0,-625 }, + /* joint 11 */ { tail1_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_elp_model, 0, cKF_JOINT_FLAG_DISP_OPA, 475,0,0 }, + /* joint 13 */ { chest_elp_model, 3, cKF_JOINT_FLAG_DISP_OPA, 501,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,-700,0 }, + /* joint 15 */ { Larm1_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_elp_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,700,0 }, + /* joint 18 */ { Rarm1_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1076,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1800 }, + /* joint 23 */ { mouth_elp_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_elp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1323,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_elp_1 = { 26, 14, cKF_je_r_elp_1_tbl }; diff --git a/src/data/npc/model/mdl/end_1.c b/src/data/npc/model/mdl/end_1.c new file mode 100644 index 00000000..78e18ed3 --- /dev/null +++ b/src/data/npc/model/mdl/end_1.c @@ -0,0 +1,708 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx end_1_v[] = { +#include "assets/npc/mdl/end_1_v.inc" +}; + +static Gfx head_end_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[0], 27, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 7, 6, 11, // tri1 + 10, 9, 12, // tri2 + 12, 9, 13 // tri3 + ), + gsSPNTriangles_5b(7, 14, 15, // tri0 + 11, 14, 7, // tri1 + 10, 16, 8, // tri2 + 4, 7, 15 // tri3 + ), + gsSPNTriangles_5b(2, 16, 10, // tri0 + 2, 10, 0, // tri1 + 15, 17, 4, // tri2 + 5, 0, 12 // tri3 + ), + gsSPNTriangles_5b(13, 6, 3, // tri0 + 5, 13, 3, // tri1 + 12, 13, 5, // tri2 + 12, 0, 10 // tri3 + ), + gsSPNTriangles_5b(7, 4, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 18, 19, 20, // tri0 + 21, 18, 22, // tri1 + 20, 23, 22 // tri2 + ), + gsSPNTriangles_5b(20, 22, 18, // tri0 + 24, 18, 21, // tri1 + 25, 21, 22, // tri2 + 18, 24, 19 // tri3 + ), + gsSPNTriangles_5b(21, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&end_1_v[27], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 6, 9, // tri0 + 10, 11, 12, // tri1 + 13, 11, 10, // tri2 + 14, 15, 1 // tri3 + ), + gsSPNTriangles_5b(16, 17, 5, // tri0 + 18, 19, 20, // tri1 + 6, 5, 17, // tri2 + 21, 8, 22 // tri3 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 23, 17, 16, // tri1 + 24, 25, 26, // tri2 + 27, 28, 16 // tri3 + ), + gsSPNTriangles_5b(29, 30, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&end_1_v[58], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 12, 13, // tri1 + 12, 14, 15, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 11, 22, // tri1 + 15, 23, 13, // tri2 + 5, 24, 3 // tri3 + ), + gsSPNTriangles_5b(13, 23, 25, // tri0 + 9, 12, 10, // tri1 + 26, 27, 28, // tri2 + 29, 8, 30 // tri3 + ), + gsSPVertex(&end_1_v[89], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsSPNTriangles_5b(2, 7, 5, // tri0 + 8, 9, 10, // tri1 + 11, 9, 8, // tri2 + 12, 13, 3 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 12, 3, 16, // tri1 + 17, 18, 19, // tri2 + 17, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 11, // tri0 + 19, 18, 24, // tri1 + 25, 8, 10, // tri2 + 21, 26, 27 // tri3 + ), + gsSPNTriangles_5b(22, 28, 25, // tri0 + 29, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&end_1_v[121], 32, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(8, 1, 9, // tri0 + 10, 11, 12, // tri1 + 6, 13, 12, // tri2 + 7, 6, 12 // tri3 + ), + gsSPNTriangles_5b(6, 3, 14, // tri0 + 15, 16, 14, // tri1 + 4, 17, 8, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 10, 13, // tri1 + 7, 22, 20, // tri2 + 23, 24, 11 // tri3 + ), + gsSPNTriangles_5b(12, 11, 7, // tri0 + 25, 26, 16, // tri1 + 4, 8, 9, // tri2 + 22, 27, 18 // tri3 + ), + gsSPNTriangles_5b(28, 29, 30, // tri0 + 28, 30, 31, // tri1 + 20, 22, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&end_1_v[153], 18, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 9, // tri0 + 2, 7, 0, // tri1 + 5, 8, 3, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(11, 10, 13, // tri0 + 14, 15, 16, // tri1 + 12, 11, 16, // tri2 + 12, 17, 10 // tri3 + ), + gsSPNTriangles_5b(14, 11, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_end_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[206], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[210], 17, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 3, 1, 5, // tri1 + 2, 3, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 2, 8, 9, // tri1 + 1, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 14, 15, 16, // tri0 + 16, 17, 18, // tri1 + 19, 14, 20 // tri2 + ), + gsSPNTriangles_5b(20, 18, 19, // tri0 + 19, 18, 17, // tri1 + 15, 14, 19, // tri2 + 17, 15, 19 // tri3 + ), + gsSPNTriangles_5b(16, 20, 14, // tri0 + 18, 20, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_end_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[227], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[230], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_end_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[171], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[175], 17, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 3, 2, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(0, 1, 7, // tri0 + 2, 8, 9, // tri1 + 1, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 14, 15, 16, // tri0 + 17, 18, 15, // tri1 + 19, 20, 16 // tri2 + ), + gsSPNTriangles_5b(16, 20, 14, // tri0 + 16, 15, 18, // tri1 + 16, 18, 17, // tri2 + 17, 19, 16 // tri3 + ), + gsSPNTriangles_5b(20, 19, 17, // tri0 + 17, 15, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_end_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[192], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[195], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_end_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[241], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[246], 21, 5), + gsSPNTrianglesInit_5b(11, // tri count + 2, 5, 6, // tri0 + 0, 2, 7, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 10, 11, // tri0 + 1, 12, 3, // tri1 + 1, 13, 14, // tri2 + 3, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 18, // tri0 + 4, 0, 19, // tri1 + 1, 4, 20, // tri2 + 2, 3, 21 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_end_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[267], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 3, 4, // tri0 + 8, 2, 1, // tri1 + 1, 3, 8, // tri2 + 2, 4, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_end_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[332], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[335], 13, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 4, 3, // tri0 + 2, 5, 0, // tri1 + 2, 1, 6 // tri2 + ), + gsSPNTriangles_5b(2, 8, 7, // tri0 + 0, 9, 1, // tri1 + 0, 11, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 15, 13, 12 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_end_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[348], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[352], 10, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 1, 4, // tri0 + 1, 0, 5, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(3, 9, 8, // tri0 + 2, 10, 0, // tri1 + 0, 12, 11, // tri2 + 2, 3, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_end_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[362], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[367], 23, 5), + gsSPNTrianglesInit_5b(10, // tri count + 2, 0, 5, // tri0 + 3, 2, 6, // tri1 + 4, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 2, 10, 11, // tri1 + 1, 4, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTriangles_5b(4, 3, 15, // tri0 + 0, 16, 17, // tri1 + 1, 18, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(7, // tri count + 20, 21, 22, // tri0 + 23, 24, 21, // tri1 + 23, 25, 24 // tri2 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 26, 25, 23, // tri1 + 24, 25, 27, // tri2 + 27, 22, 24 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_end_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[276], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[282], 14, 6), + gsSPNTrianglesInit_5b(2, // tri count + 2, 6, 0, // tri0 + 0, 7, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 1, 9, 8, // tri0 + 4, 11, 10, // tri1 + 3, 4, 12 // tri2 + ), + gsSPNTriangles_5b(3, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 18, 16, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_end_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[296], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[300], 14, 4), + gsSPNTrianglesInit_5b(9, // tri count + 0, 5, 4, // tri0 + 2, 1, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 8, // tri0 + 1, 11, 10, // tri1 + 0, 3, 12, // tri2 + 3, 2, 13 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 2, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_end_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[314], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&end_1_v[319], 13, 5), + gsSPNTrianglesInit_5b(9, // tri count + 1, 5, 6, // tri0 + 2, 7, 8, // tri1 + 0, 2, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 4, 13, 14 // tri3 + ), + gsSPNTriangles_5b(4, 1, 15, // tri0 + 3, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_end_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[390], 28, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 28), + gsSPNTrianglesInit_5b(4, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 24, 25, 26 // tri2 + ), + gsSPNTriangles_5b(24, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&end_1_v[418], 21, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(17, // tri count + 4, 5, 6, // tri0 + 6, 7, 8, // tri1 + 6, 8, 4 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 9, 11, 12, // tri1 + 10, 8, 7, // tri2 + 10, 7, 11 // tri3 + ), + gsSPNTriangles_5b(13, 5, 14, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18, // tri2 + 18, 19, 16 // tri3 + ), + gsSPNTriangles_5b(9, 12, 16, // tri0 + 9, 16, 19, // tri1 + 17, 20, 18, // tri2 + 15, 20, 17 // tri3 + ), + gsSPNTriangles_5b(15, 17, 13, // tri0 + 4, 14, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&end_1_v[439], 14, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 9, 10, 7, // tri1 + 11, 2, 5, // tri2 + 5, 8, 3 // tri3 + ), + gsSPNTriangles_5b(2, 11, 0, // tri0 + 7, 3, 8, // tri1 + 4, 11, 5, // tri2 + 6, 10, 9 // tri3 + ), + gsSPNTriangles_5b(6, 12, 13, // tri0 + 6, 13, 10, // tri1 + 9, 1, 6, // tri2 + 12, 4, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_end_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_end_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_end_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_end_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_end_model, 3, cKF_JOINT_FLAG_DISP_OPA, 599,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-500,0 }, + /* joint 15 */ { Larm1_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_end_model, 0, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,500,0 }, + /* joint 18 */ { Rarm1_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 701,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 699,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 701,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,700 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_end_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_end_1 = { 26, 14, cKF_je_r_end_1_tbl }; diff --git a/src/data/npc/model/mdl/flg_1.c b/src/data/npc/model/mdl/flg_1.c new file mode 100644 index 00000000..30df65c6 --- /dev/null +++ b/src/data/npc/model/mdl/flg_1.c @@ -0,0 +1,522 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx flg_1_v[] = { +#include "assets/npc/mdl/flg_1_v.inc" +}; + +static Gfx head_flg_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[0], 18, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 6, 9, 5, // tri1 + 5, 7, 3, // tri2 + 10, 11, 8 // tri3 + ), + gsSPNTriangles_5b(8, 7, 12, // tri0 + 13, 9, 6, // tri1 + 5, 12, 7, // tri2 + 2, 5, 9 // tri3 + ), + gsSPNTriangles_5b(13, 2, 9, // tri0 + 2, 12, 5, // tri1 + 12, 14, 10, // tri2 + 10, 8, 12 // tri3 + ), + gsSPNTriangles_5b(13, 15, 0, // tri0 + 0, 2, 13, // tri1 + 6, 16, 13, // tri2 + 8, 17, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&flg_1_v[18], 22, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 9, 4, 10, // tri1 + 11, 1, 0, // tri2 + 11, 12, 1 // tri3 + ), + gsSPNTriangles_5b(4, 6, 10, // tri0 + 13, 4, 9, // tri1 + 5, 4, 13, // tri2 + 2, 1, 7 // tri3 + ), + gsSPNTriangles_5b(14, 0, 2, // tri0 + 13, 9, 14, // tri1 + 14, 2, 13, // tri2 + 8, 5, 13 // tri3 + ), + gsSPNTriangles_5b(8, 13, 2, // tri0 + 1, 12, 15, // tri1 + 1, 15, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 17, 20, 18 // tri2 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&flg_1_v[40], 32, 0), + gsSPNTrianglesInit_5b(45, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 2, 1, // tri0 + 8, 7, 2, // tri1 + 9, 10, 11, // tri2 + 6, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 7, 6, // tri0 + 15, 16, 10, // tri1 + 16, 17, 10, // tri2 + 17, 11, 10 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 5, 21, 3, // tri1 + 11, 22, 9, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(24, 2, 25, // tri0 + 21, 24, 23, // tri1 + 26, 25, 27, // tri2 + 17, 28, 29 // tri3 + ), + gsSPNTriangles_5b(5, 4, 30, // tri0 + 29, 22, 11, // tri1 + 11, 17, 29, // tri2 + 30, 19, 18 // tri3 + ), + gsSPNTriangles_5b(18, 5, 30, // tri0 + 21, 18, 20, // tri1 + 21, 5, 18, // tri2 + 14, 13, 27 // tri3 + ), + gsSPNTriangles_5b(2, 7, 14, // tri0 + 0, 24, 21, // tri1 + 10, 26, 15, // tri2 + 23, 26, 10 // tri3 + ), + gsSPNTriangles_5b(10, 21, 23, // tri0 + 25, 26, 23, // tri1 + 10, 9, 3, // tri2 + 10, 3, 21 // tri3 + ), + gsSPNTriangles_5b(21, 20, 0, // tri0 + 2, 24, 0, // tri1 + 27, 13, 12, // tri2 + 27, 12, 31 // tri3 + ), + gsSPNTriangles_5b(15, 27, 31, // tri0 + 16, 28, 17, // tri1 + 26, 27, 15, // tri2 + 6, 13, 14 // tri3 + ), + gsSPNTriangles_5b(27, 25, 14, // tri0 + 14, 25, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_flg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[108], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[113], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_flg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[129], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[133], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_flg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[72], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[77], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_flg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[93], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[97], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_flg_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[144], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[151], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&flg_1_v[171], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_flg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[230], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[235], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_flg_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[252], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[256], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_flg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[180], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[185], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_flg_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[202], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&flg_1_v[208], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_flg_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&flg_1_v[278], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_flg_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_flg_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_flg_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_flg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_flg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_flg_1 = { 26, 11, cKF_je_r_flg_1_tbl }; diff --git a/src/data/npc/model/mdl/fob_1.c b/src/data/npc/model/mdl/fob_1.c new file mode 100644 index 00000000..6621c847 --- /dev/null +++ b/src/data/npc/model/mdl/fob_1.c @@ -0,0 +1,725 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx fob_1_v[] = { +#include "assets/npc/mdl/fob_1_v.inc" +}; + +static Gfx head_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[22], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 7, 5, 9, // tri1 + 10, 2, 1, // tri2 + 1, 11, 12 // tri3 + ), + gsSPNTriangles_5b(0, 13, 1, // tri0 + 14, 5, 4, // tri1 + 5, 6, 3, // tri2 + 15, 4, 3 // tri3 + ), + gsSPNTriangles_5b(16, 4, 15, // tri0 + 8, 17, 18, // tri1 + 11, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(17, 8, 7, // tri0 + 24, 12, 20, // tri1 + 25, 3, 26, // tri2 + 23, 22, 2 // tri3 + ), + gsSPNTriangles_5b(13, 19, 11, // tri0 + 1, 13, 11, // tri1 + 18, 24, 20, // tri2 + 27, 28, 8 // tri3 + ), + gsSPNTriangles_5b(1, 12, 10, // tri0 + 5, 14, 9, // tri1 + 26, 28, 27, // tri2 + 28, 3, 6 // tri3 + ), + gsSPNTriangles_5b(17, 7, 29, // tri0 + 20, 19, 27, // tri1 + 27, 19, 26, // tri2 + 15, 25, 13 // tri3 + ), + gsSPNTriangles_5b(2, 10, 23, // tri0 + 23, 9, 14, // tri1 + 30, 23, 10, // tri2 + 9, 23, 30 // tri3 + ), + gsSPNTriangles_5b(3, 25, 15, // tri0 + 12, 24, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&fob_1_v[54], 29, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 8, 9, // tri1 + 7, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 1, // tri0 + 15, 1, 0, // tri1 + 16, 3, 2, // tri2 + 17, 8, 18 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 21, 22, 23, // tri0 + 24, 22, 21, // tri1 + 23, 25, 21 // tri2 + ), + gsSPNTriangles_5b(22, 24, 26, // tri0 + 25, 27, 28, // tri1 + 25, 28, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[83], 30, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 5, 4, // tri1 + 9, 1, 0, // tri2 + 6, 10, 4 // tri3 + ), + gsSPNTriangles_5b(0, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 20, 21, 22, // tri0 + 23, 24, 25, // tri1 + 26, 20, 27 // tri2 + ), + gsSPNTriangles_5b(28, 23, 29, // tri0 + 29, 26, 27, // tri1 + 29, 27, 28, // tri2 + 23, 25, 29 // tri3 + ), + gsSPNTriangles_5b(26, 21, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[113], 19, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 4, 6, 11, // tri2 + 12, 7, 10 // tri3 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 5, 14, 6, // tri1 + 15, 16, 17, // tri2 + 1, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 16, 15, // tri0 + 10, 15, 12, // tri1 + 17, 18, 15, // tri2 + 11, 18, 17 // tri3 + ), + gsSPNTriangles_5b(11, 17, 4, // tri0 + 8, 2, 1, // tri1 + 3, 14, 13, // tri2 + 3, 13, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[0], 7, 0), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&fob_1_v[7], 15, 7), + gsSPNTrianglesInit_5b(9, // tri count + 6, 7, 8, // tri0 + 6, 4, 9, // tri1 + 1, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 0, 12, // tri0 + 4, 1, 13, // tri1 + 0, 5, 14, // tri2 + 5, 6, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 1, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[166], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[170], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[186], 3, 0), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[189], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 1, 0, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[132], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[136], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[152], 3, 0), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[155], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 1, 12, // tri2 + 2, 0, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[200], 11, 0), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[211], 13, 11), + gsSPNTrianglesInit_5b(9, // tri count + 10, 4, 11, // tri0 + 4, 12, 13, // tri1 + 7, 9, 14 // tri2 + ), + gsSPNTriangles_5b(2, 7, 15, // tri0 + 2, 16, 17, // tri1 + 8, 10, 18, // tri2 + 9, 8, 19 // tri3 + ), + gsSPNTriangles_5b(8, 20, 21, // tri0 + 9, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[224], 20, 11), + gsSPNTrianglesInit_5b(8, // tri count + 6, 11, 12, // tri0 + 1, 13, 14, // tri1 + 0, 15, 16 // tri2 + ), + gsSPNTriangles_5b(6, 17, 18, // tri0 + 5, 1, 19, // tri1 + 0, 3, 20, // tri2 + 1, 6, 21 // tri3 + ), + gsSPNTriangles_5b(6, 0, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 26, 27, 25, // tri1 + 23, 28, 24 // tri2 + ), + gsSPNTriangles_5b(29, 30, 26, // tri0 + 25, 27, 23, // tri1 + 25, 29, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[244], 19, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 10, 11, 7, // tri1 + 5, 1, 0, // tri2 + 7, 12, 9 // tri3 + ), + gsSPNTriangles_5b(3, 13, 4, // tri0 + 0, 14, 5, // tri1 + 5, 14, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 16, 15, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[300], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[303], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[263], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[267], 20, 4), + gsSPNTrianglesInit_5b(12, // tri count + 2, 0, 4, // tri0 + 2, 5, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 3, 10, // tri1 + 3, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 0, 16, 17, // tri1 + 0, 18, 19, // tri2 + 2, 20, 21 // tri3 + ), + gsSPNTriangles_5b(3, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&fob_1_v[287], 13, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 6, 1, 0, // tri1 + 8, 10, 9, // tri2 + 5, 4, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 3, // tri0 + 7, 11, 3, // tri1 + 7, 5, 6, // tri2 + 3, 5, 7 // tri3 + ), + gsSPNTriangles_5b(2, 10, 8, // tri0 + 7, 0, 2, // tri1 + 9, 12, 11, // tri2 + 2, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[339], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[343], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[357], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[314], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[318], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[332], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_fob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_PASS2), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_SHADING_SMOOTH), + gsSPVertex(&fob_1_v[364], 26, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 2, 7, // tri0 + 7, 6, 8, // tri1 + 7, 5, 4, // tri2 + 2, 8, 0 // tri3 + ), + gsSPNTriangles_5b(5, 9, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(19, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(19, 20, 13, // tri0 + 21, 15, 22, // tri1 + 17, 15, 21, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 23, 12, 18, // tri1 + 19, 17, 16, // tri2 + 16, 18, 12 // tri3 + ), + gsSPNTriangles_5b(14, 24, 22, // tri0 + 14, 22, 15, // tri1 + 19, 15, 17, // tri2 + 23, 25, 10 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 15, 19, 13, // tri1 + 10, 12, 23, // tri2 + 18, 21, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fob_1_v[390], 29, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 4, 6, 5, // tri1 + 0, 2, 3, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(6, 7, 9, // tri0 + 5, 11, 3, // tri1 + 9, 12, 6, // tri2 + 8, 13, 10 // tri3 + ), + gsSPNTriangles_5b(3, 2, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x700, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 16, 15 // tri2 + ), + gsSPNTriangles_5b(21, 18, 22, // tri0 + 23, 24, 25, // tri1 + 23, 25, 16, // tri2 + 15, 26, 27 // tri3 + ), + gsSPNTriangles_5b(14, 26, 15, // tri0 + 16, 25, 14, // tri1 + 26, 28, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_fob_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_fob_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_fob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, + /* joint 13 */ { chest_fob_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-500,0 }, + /* joint 15 */ { Larm1_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_fob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,500,0 }, + /* joint 18 */ { Rarm1_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1300 }, + /* joint 23 */ { mouth_fob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_fob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_fob_1 = { 26, 14, cKF_je_r_fob_1_tbl }; diff --git a/src/data/npc/model/mdl/fox_1.c b/src/data/npc/model/mdl/fox_1.c new file mode 100644 index 00000000..4feb66a0 --- /dev/null +++ b/src/data/npc/model/mdl/fox_1.c @@ -0,0 +1,657 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx fox_1_v[] = { +#include "assets/npc/mdl/fox_1_v.inc" +}; + +static Gfx head_fox_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[22], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 7, 5, 9, // tri1 + 10, 2, 1, // tri2 + 1, 11, 12 // tri3 + ), + gsSPNTriangles_5b(0, 13, 1, // tri0 + 14, 5, 4, // tri1 + 5, 6, 3, // tri2 + 15, 4, 3 // tri3 + ), + gsSPNTriangles_5b(16, 4, 15, // tri0 + 8, 17, 18, // tri1 + 11, 19, 20, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(17, 8, 7, // tri0 + 24, 12, 20, // tri1 + 25, 3, 26, // tri2 + 23, 22, 2 // tri3 + ), + gsSPNTriangles_5b(13, 19, 11, // tri0 + 1, 13, 11, // tri1 + 18, 24, 20, // tri2 + 27, 28, 8 // tri3 + ), + gsSPNTriangles_5b(1, 12, 10, // tri0 + 5, 14, 9, // tri1 + 26, 28, 27, // tri2 + 28, 3, 6 // tri3 + ), + gsSPNTriangles_5b(17, 7, 29, // tri0 + 20, 19, 27, // tri1 + 27, 19, 26, // tri2 + 15, 25, 13 // tri3 + ), + gsSPNTriangles_5b(2, 10, 23, // tri0 + 23, 9, 14, // tri1 + 30, 23, 10, // tri2 + 9, 23, 30 // tri3 + ), + gsSPNTriangles_5b(3, 25, 15, // tri0 + 12, 24, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&fox_1_v[54], 29, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 4, 8, 9, // tri1 + 7, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 1, // tri0 + 15, 1, 0, // tri1 + 16, 3, 2, // tri2 + 17, 8, 18 // tri3 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 23, 24, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fox_1_v[83], 20, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 5, 0, 3, // tri1 + 4, 6, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 15, 16, // tri0 + 11, 10, 17, // tri1 + 14, 15, 12, // tri2 + 17, 18, 11 // tri3 + ), + gsSPNTriangles_5b(19, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_fox_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[7], 15, 7), + gsSPNTrianglesInit_5b(9, // tri count + 6, 7, 8, // tri0 + 6, 4, 9, // tri1 + 1, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 0, 12, // tri0 + 4, 1, 13, // tri1 + 0, 5, 14, // tri2 + 5, 6, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 1, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_fox_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[137], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[141], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_fox_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[157], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[160], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_fox_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[103], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[107], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_fox_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[123], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[126], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_fox_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[171], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[182], 13, 11), + gsSPNTrianglesInit_5b(9, // tri count + 7, 2, 11, // tri0 + 2, 12, 13, // tri1 + 8, 14, 15 // tri2 + ), + gsSPNTriangles_5b(1, 8, 16, // tri0 + 1, 17, 18, // tri1 + 9, 7, 19, // tri2 + 10, 9, 20 // tri3 + ), + gsSPNTriangles_5b(7, 22, 21, // tri0 + 8, 10, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fox_1_v[195], 20, 11), + gsSPNTrianglesInit_5b(8, // tri count + 3, 5, 11, // tri0 + 4, 13, 12, // tri1 + 5, 14, 15 // tri2 + ), + gsSPNTriangles_5b(4, 16, 6, // tri0 + 3, 17, 18, // tri1 + 4, 0, 19, // tri2 + 6, 20, 5 // tri3 + ), + gsSPNTriangles_5b(0, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 25, 24, 26, // tri1 + 27, 28, 23 // tri2 + ), + gsSPNTriangles_5b(26, 29, 30, // tri0 + 25, 27, 23, // tri1 + 26, 30, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fox_1_v[215], 12, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 1, 9, 6, // tri1 + 3, 10, 4, // tri2 + 5, 4, 11 // tri3 + ), + gsSPNTriangles_5b(3, 8, 10, // tri0 + 6, 8, 3, // tri1 + 2, 1, 5, // tri2 + 6, 3, 1 // tri3 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_fox_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[264], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[267], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_fox_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[227], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[231], 20, 4), + gsSPNTrianglesInit_5b(12, // tri count + 2, 0, 4, // tri0 + 2, 5, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 3, 10, // tri1 + 3, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 0, 16, 17, // tri1 + 0, 18, 19, // tri2 + 2, 20, 21 // tri3 + ), + gsSPNTriangles_5b(3, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&fox_1_v[251], 13, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 6, 1, 0, // tri1 + 8, 10, 9, // tri2 + 5, 4, 6 // tri3 + ), + gsSPNTriangles_5b(11, 12, 3, // tri0 + 7, 11, 3, // tri1 + 7, 5, 6, // tri2 + 3, 5, 7 // tri3 + ), + gsSPNTriangles_5b(2, 10, 8, // tri0 + 7, 0, 2, // tri1 + 9, 12, 11, // tri2 + 2, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_fox_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[303], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[307], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_fox_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[321], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_fox_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[278], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&fox_1_v[282], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_fox_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[296], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_fox_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&fox_1_v[328], 26, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 2, 7, // tri0 + 7, 6, 8, // tri1 + 7, 5, 4, // tri2 + 2, 8, 0 // tri3 + ), + gsSPNTriangles_5b(5, 9, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(19, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 13, 15, 16 // tri2 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 16, 20, 13, // tri1 + 21, 15, 22, // tri2 + 18, 15, 21 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 23, 22, 24, // tri1 + 21, 23, 19, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(17, 19, 12, // tri0 + 14, 24, 22, // tri1 + 14, 22, 15, // tri2 + 16, 15, 18 // tri3 + ), + gsSPNTriangles_5b(23, 12, 19, // tri0 + 12, 23, 25, // tri1 + 12, 25, 10, // tri2 + 24, 25, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&fox_1_v[354], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 6, // tri0 + 5, 9, 10, // tri1 + 5, 10, 3, // tri2 + 6, 0, 2 // tri3 + ), + gsSPNTriangles_5b(11, 7, 12, // tri0 + 12, 3, 10, // tri1 + 7, 11, 13, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_fox_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_fox_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_fox_model, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, + /* joint 13 */ { chest_fox_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-500,0 }, + /* joint 15 */ { Larm1_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_fox_model, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,500,0 }, + /* joint 18 */ { Rarm1_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1550 }, + /* joint 23 */ { mouth_fox_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_fox_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_fox_1 = { 26, 14, cKF_je_r_fox_1_tbl }; diff --git a/src/data/npc/model/mdl/goa_1.c b/src/data/npc/model/mdl/goa_1.c new file mode 100644 index 00000000..ceb20f40 --- /dev/null +++ b/src/data/npc/model/mdl/goa_1.c @@ -0,0 +1,627 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx goa_1_v[] = { +#include "assets/npc/mdl/goa_1_v.inc" +}; + +static Gfx head_goa_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[7], 24, 0), + gsSPNTrianglesInit_5b(34, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 7, 6, // tri2 + 16, 12, 17 // tri3 + ), + gsSPNTriangles_5b(1, 6, 11, // tri0 + 17, 5, 18, // tri1 + 6, 18, 15, // tri2 + 15, 18, 5 // tri3 + ), + gsSPNTriangles_5b(19, 7, 15, // tri0 + 5, 4, 15, // tri1 + 0, 17, 1, // tri2 + 20, 8, 7 // tri3 + ), + gsSPNTriangles_5b(21, 19, 4, // tri0 + 15, 4, 19, // tri1 + 7, 19, 20, // tri2 + 20, 22, 8 // tri3 + ), + gsSPNTriangles_5b(23, 20, 19, // tri0 + 21, 22, 23, // tri1 + 3, 22, 21, // tri2 + 4, 3, 21 // tri3 + ), + gsSPNTriangles_5b(23, 22, 20, // tri0 + 19, 21, 23, // tri1 + 12, 5, 17, // tri2 + 18, 6, 1 // tri3 + ), + gsSPNTriangles_5b(1, 17, 18, // tri0 + 1, 11, 2, // tri1 + 5, 12, 14, // tri2 + 9, 11, 6 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 8, 9, 6, // tri1 + 16, 17, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&goa_1_v[31], 25, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 1, 0, 5, // tri1 + 5, 0, 10, // tri2 + 11, 4, 3 // tri3 + ), + gsSPNTriangles_5b(12, 11, 3, // tri0 + 10, 0, 13, // tri1 + 7, 6, 10, // tri2 + 8, 12, 6 // tri3 + ), + gsSPNTriangles_5b(3, 6, 12, // tri0 + 5, 9, 1, // tri1 + 10, 6, 3, // tri2 + 3, 5, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 19 // tri2 + ), + gsSPNTriangles_5b(17, 19, 21, // tri0 + 17, 15, 18, // tri1 + 22, 19, 18, // tri2 + 22, 18, 14 // tri3 + ), + gsSPNTriangles_5b(15, 23, 24, // tri0 + 19, 22, 20, // tri1 + 24, 16, 15, // tri2 + 23, 15, 17 // tri3 + ), + gsSPNTriangles_5b(14, 18, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&goa_1_v[56], 26, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 2, 1, // tri0 + 5, 7, 9, // tri1 + 9, 10, 3, // tri2 + 11, 12, 8 // tri3 + ), + gsSPNTriangles_5b(13, 1, 14, // tri0 + 8, 1, 11, // tri1 + 14, 1, 0, // tri2 + 14, 0, 15 // tri3 + ), + gsSPNTriangles_5b(15, 0, 5, // tri0 + 15, 5, 16, // tri1 + 16, 5, 4, // tri2 + 3, 5, 9 // tri3 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 1, 13, 11, // tri1 + 7, 5, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 253, 255, 255, 255), + gsSPNTrianglesInit_5b(7, // tri count + 17, 18, 19, // tri0 + 20, 19, 21, // tri1 + 20, 22, 19 // tri2 + ), + gsSPNTriangles_5b(21, 23, 20, // tri0 + 22, 17, 19, // tri1 + 24, 18, 17, // tri2 + 17, 25, 24 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[82], 31, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 2, 5, 0 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 4, 7, 1, // tri1 + 6, 8, 4, // tri2 + 1, 7, 2 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 14, 15, 9 // tri2 + ), + gsSPNTriangles_5b(9, 15, 16, // tri0 + 12, 17, 18, // tri1 + 13, 19, 20, // tri2 + 14, 9, 11 // tri3 + ), + gsSPNTriangles_5b(11, 17, 12, // tri0 + 21, 10, 9, // tri1 + 12, 18, 19, // tri2 + 16, 21, 9 // tri3 + ), + gsSPNTriangles_5b(19, 13, 12, // tri0 + 11, 12, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 25, 24, 26 // tri2 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 29, 23, 22, // tri1 + 28, 27, 30, // tri2 + 22, 27, 29 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&goa_1_v[113], 13, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 5, // tri0 + 0, 3, 1, // tri1 + 5, 9, 0, // tri2 + 7, 9, 5 // tri3 + ), + gsSPNTriangles_5b(10, 11, 1, // tri0 + 12, 4, 3, // tri1 + 2, 5, 0, // tri2 + 1, 11, 2 // tri3 + ), + gsSPNTriangles_5b(5, 8, 6, // tri0 + 4, 10, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_goa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[0], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[4], 3, 4), + gsSPNTrianglesInit_5b(3, // tri count + 1, 4, 3, // tri0 + 2, 0, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_goa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[162], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[167], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_goa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[183], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[187], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_goa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[126], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[131], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_goa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[147], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[151], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_goa_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[198], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[205], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 + ), + gsSPNTriangles_5b(3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&goa_1_v[225], 10, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_goa_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[235], 11, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 1, 0, // tri1 + 5, 0, 8, // tri2 + 6, 5, 9 // tri3 + ), + gsSPNTriangles_5b(0, 5, 7, // tri0 + 8, 9, 5, // tri1 + 3, 10, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_goa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[286], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[291], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 5, // tri0 + 0, 2, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_goa_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[307], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[313], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 0, 6, 7, // tri0 + 2, 5, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 1, 11, // tri0 + 0, 3, 12, // tri1 + 4, 2, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_goa_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[246], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[251], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 2, 5, // tri0 + 2, 0, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 16, 20, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_goa_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[267], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&goa_1_v[273], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 3, 1, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 3, 11, // tri0 + 2, 4, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_goa_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&goa_1_v[326], 30, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 9, 19, 7, // tri1 + 20, 11, 21, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 11, 20, 12, // tri1 + 8, 7, 13, // tri2 + 13, 15, 8 // tri3 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 14, 10, 12, // tri1 + 18, 22, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 24, 23 // tri2 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_goa_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_goa_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -200,0,-600 }, + /* joint 11 */ { tail1_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_goa_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_goa_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -300,0,700 }, + /* joint 23 */ { mouth_goa_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_goa_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_goa_1 = { 26, 13, cKF_je_r_goa_1_tbl }; diff --git a/src/data/npc/model/mdl/gor_1.c b/src/data/npc/model/mdl/gor_1.c new file mode 100644 index 00000000..5ddf32c4 --- /dev/null +++ b/src/data/npc/model/mdl/gor_1.c @@ -0,0 +1,739 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx gor_1_v[] = { +#include "assets/npc/mdl/gor_1_v.inc" +}; + +static Gfx head_gor_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[32], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[42], 21, 10), + gsSPNTrianglesInit_5b(13, // tri count + 9, 10, 11, // tri0 + 0, 7, 12, // tri1 + 0, 13, 14 // tri2 + ), + gsSPNTriangles_5b(7, 15, 16, // tri0 + 0, 17, 18, // tri1 + 8, 19, 7, // tri2 + 0, 20, 9 // tri3 + ), + gsSPNTriangles_5b(4, 21, 22, // tri0 + 1, 9, 23, // tri1 + 1, 24, 25, // tri2 + 8, 4, 26 // tri3 + ), + gsSPNTriangles_5b(8, 27, 28, // tri0 + 9, 29, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gor_1_v[63], 13, 10), + gsSPNTrianglesInit_5b(3, // tri count + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 14, 15 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(5, // tri count + 5, 16, 17, // tri0 + 5, 2, 18, // tri1 + 6, 19, 20 // tri2 + ), + gsSPNTriangles_5b(3, 6, 21, // tri0 + 6, 5, 22, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gor_1_v[76], 21, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 5, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 6, 7, 3, // tri1 + 8, 5, 2, // tri2 + 6, 5, 8 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 2, 4, 0, // tri1 + 6, 10, 9, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 1, 12, 13, // tri1 + 0, 14, 15, // tri2 + 16, 17, 10 // tri3 + ), + gsSPNTriangles_5b(15, 18, 12, // tri0 + 15, 1, 0, // tri1 + 10, 8, 16, // tri2 + 13, 8, 1 // tri3 + ), + gsSPNTriangles_5b(13, 16, 8, // tri0 + 11, 10, 17, // tri1 + 8, 10, 6, // tri2 + 11, 19, 9 // tri3 + ), + gsSPNTriangles_5b(17, 20, 11, // tri0 + 12, 1, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gor_1_v[97], 22, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 0, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 1, 0, // tri1 + 2, 1, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 14, 7, 15, // tri1 + 15, 16, 14, // tri2 + 8, 7, 17 // tri3 + ), + gsSPNTriangles_5b(18, 13, 19, // tri0 + 7, 14, 10, // tri1 + 18, 14, 20, // tri2 + 20, 11, 18 // tri3 + ), + gsSPNTriangles_5b(14, 16, 20, // tri0 + 18, 19, 10, // tri1 + 9, 8, 17, // tri2 + 0, 5, 9 // tri3 + ), + gsSPNTriangles_5b(7, 6, 15, // tri0 + 10, 1, 9, // tri1 + 19, 13, 2, // tri2 + 9, 17, 10 // tri3 + ), + gsSPNTriangles_5b(10, 17, 7, // tri0 + 10, 19, 2, // tri1 + 10, 14, 18, // tri2 + 13, 18, 11 // tri3 + ), + gsSPNTriangles_5b(8, 21, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gor_1_v[119], 29, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 6, 10, // tri0 + 3, 5, 11, // tri1 + 2, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 16, 10, // tri0 + 18, 19, 9, // tri1 + 17, 20, 14, // tri2 + 16, 17, 14 // tri3 + ), + gsSPNTriangles_5b(18, 9, 16, // tri0 + 0, 10, 8, // tri1 + 10, 16, 9, // tri2 + 10, 0, 17 // tri3 + ), + gsSPNTriangles_5b(6, 9, 11, // tri0 + 20, 17, 21, // tri1 + 5, 7, 6, // tri2 + 16, 15, 18 // tri3 + ), + gsSPNTriangles_5b(21, 17, 0, // tri0 + 8, 10, 6, // tri1 + 8, 1, 0, // tri2 + 21, 2, 13 // tri3 + ), + gsSPNTriangles_5b(13, 20, 21, // tri0 + 0, 2, 21, // tri1 + 11, 9, 19, // tri2 + 11, 19, 3 // tri3 + ), + gsSPNTriangles_5b(11, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(5, // tri count + 22, 23, 24, // tri0 + 25, 26, 23, // tri1 + 25, 23, 22 // tri2 + ), + gsSPNTriangles_5b(27, 26, 25, // tri0 + 27, 25, 28, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gor_1_v[148], 20, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 2 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 5, 9, 3, // tri1 + 2, 7, 6, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 10, 12, 16, // tri1 + 16, 17, 18, // tri2 + 15, 19, 13 // tri3 + ), + gsSPNTriangles_5b(16, 18, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_gor_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[7], 18, 7), + gsSPNTrianglesInit_5b(2, // tri count + 3, 7, 8, // tri0 + 3, 9, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(7, // tri count + 2, 4, 10, // tri0 + 5, 11, 12, // tri1 + 4, 6, 13 // tri2 + ), + gsSPNTriangles_5b(4, 14, 15, // tri0 + 5, 1, 16, // tri1 + 6, 5, 17, // tri2 + 6, 18, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(3, // tri count + 20, 21, 22, // tri0 + 22, 23, 24, // tri1 + 22, 24, 20 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPVertex(&gor_1_v[25], 7, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 3, 5, // tri0 + 0, 2, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_gor_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[214], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[218], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 4, // tri0 + 0, 7, 6, // tri1 + 1, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 0, 2, 11, // tri1 + 3, 0, 12, // tri2 + 1, 3, 13 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 16, 17, 18, // tri0 + 18, 19, 20, // tri1 + 20, 19, 21 // tri2 + ), + gsSPNTriangles_5b(19, 22, 23, // tri0 + 24, 18, 17, // tri1 + 24, 22, 18, // tri2 + 18, 22, 19 // tri3 + ), + gsSPNTriangles_5b(23, 22, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_gor_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[239], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[244], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 4, 6, 5, // tri0 + 0, 8, 7, // tri1 + 4, 0, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 1, 12, 0, // tri1 + 4, 13, 3, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_gor_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[168], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[172], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 4, // tri0 + 3, 7, 6, // tri1 + 0, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 3, 11, 12, // tri1 + 3, 2, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 16, 17, 18, // tri0 + 18, 19, 20, // tri1 + 21, 19, 18 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 17, 16, 24, // tri1 + 16, 22, 24, // tri2 + 23, 22, 16 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_gor_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[193], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[198], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 4, 6, 5, // tri0 + 2, 8, 7, // tri1 + 2, 4, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 2, 12, 3, // tri1 + 0, 13, 4, // tri2 + 1, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_gor_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[260], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[270], 8, 10), + gsSPNTrianglesInit_5b(6, // tri count + 2, 10, 11, // tri0 + 2, 12, 13, // tri1 + 1, 7, 14 // tri2 + ), + gsSPNTriangles_5b(9, 0, 15, // tri0 + 2, 1, 16, // tri1 + 0, 2, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPVertex(&gor_1_v[278], 17, 10), + gsSPNTrianglesInit_5b(10, // tri count + 3, 4, 10, // tri0 + 4, 12, 11, // tri1 + 3, 13, 14 // tri2 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 4, 8, 17, // tri1 + 6, 18, 19, // tri2 + 6, 3, 20 // tri3 + ), + gsSPNTriangles_5b(5, 21, 22, // tri0 + 8, 23, 24, // tri1 + 8, 25, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gor_1_v[295], 19, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 10, 11, 12, // tri1 + 9, 5, 4, // tri2 + 4, 7, 9 // tri3 + ), + gsSPNTriangles_5b(8, 13, 6, // tri0 + 5, 14, 3, // tri1 + 2, 15, 16, // tri2 + 12, 17, 18 // tri3 + ), + gsSPNTriangles_5b(2, 16, 0, // tri0 + 18, 10, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_gor_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[359], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[363], 18, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 0, 2, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 10, 3, // tri1 + 1, 0, 11, // tri2 + 1, 13, 12 // tri3 + ), + gsSPNTriangles_5b(2, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 18 // tri2 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 16, 20, 19, // tri1 + 19, 20, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_gor_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[381], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[390], 14, 9), + gsSPNTrianglesInit_5b(2, // tri count + 5, 9, 10, // tri0 + 5, 12, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 13, // tri0 + 1, 3, 14, // tri1 + 1, 15, 16 // tri2 + ), + gsSPNTriangles_5b(6, 0, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(4, // tri count + 8, 18, 4, // tri0 + 4, 19, 20, // tri1 + 2, 4, 21 // tri2 + ), + gsSPNTriangles_5b(7, 22, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_gor_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[314], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[318], 18, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 4, // tri0 + 0, 5, 6, // tri1 + 2, 1, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 3, 10, 0, // tri1 + 1, 0, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsSPNTriangles_5b(2, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 16, 20, 21 // tri2 + ), + gsSPNTriangles_5b(19, 17, 16, // tri0 + 19, 21, 18, // tri1 + 16, 21, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_gor_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[336], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&gor_1_v[345], 14, 9), + gsSPNTrianglesInit_5b(2, // tri count + 6, 10, 9, // tri0 + 6, 11, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 1, 13, 14, // tri0 + 0, 4, 15, // tri1 + 1, 0, 16 // tri2 + ), + gsSPNTriangles_5b(8, 1, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(4, // tri count + 3, 18, 19, // tri0 + 5, 7, 20, // tri1 + 3, 2, 21 // tri2 + ), + gsSPNTriangles_5b(3, 22, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_gor_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gor_1_v[404], 25, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 1, 6, 3, // tri1 + 7, 4, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(2, 9, 0, // tri0 + 8, 12, 7, // tri1 + 11, 0, 9, // tri2 + 4, 7, 2 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(8, // tri count + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 17, 14, 13 // tri2 + ), + gsSPNTriangles_5b(13, 18, 17, // tri0 + 19, 20, 16, // tri1 + 15, 14, 21, // tri2 + 16, 15, 19 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_gor_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_gor_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-875 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_gor_model, 3, cKF_JOINT_FLAG_DISP_OPA, 546,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 825,-1400,350 }, + /* joint 15 */ { Larm1_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_gor_model, 0, cKF_JOINT_FLAG_DISP_OPA, 658,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 825,1400,350 }, + /* joint 18 */ { Rarm1_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1187,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 137,0,750 }, + /* joint 23 */ { mouth_gor_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_gor_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_gor_1 = { 26, 12, cKF_je_r_gor_1_tbl }; diff --git a/src/data/npc/model/mdl/grf_1.c b/src/data/npc/model/mdl/grf_1.c new file mode 100644 index 00000000..be9e7c67 --- /dev/null +++ b/src/data/npc/model/mdl/grf_1.c @@ -0,0 +1,754 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx grf_1_v[] = { +#include "assets/npc/mdl/grf_1_v.inc" +}; + +static Gfx head_grf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[32], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[38], 20, 6), + gsSPNTrianglesInit_5b(10, // tri count + 1, 2, 6, // tri0 + 3, 5, 7, // tri1 + 5, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 10, 9, // tri0 + 5, 11, 12, // tri1 + 2, 4, 13, // tri2 + 1, 14, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 0, 1, 18, // tri1 + 2, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 21, 22, 23, // tri0 + 21, 24, 22, // tri1 + 25, 22, 24 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[58], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 2 // tri2 + ), + gsSPNTriangles_5b(2, 1, 6, // tri0 + 5, 4, 8, // tri1 + 5, 9, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[68], 30, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 2, // tri0 + 8, 10, 6, // tri1 + 7, 11, 8, // tri2 + 4, 12, 13 // tri3 + ), + gsSPNTriangles_5b(4, 13, 14, // tri0 + 0, 2, 15, // tri1 + 16, 13, 12, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 12, 4, 3, // tri1 + 12, 3, 23, // tri2 + 18, 24, 19 // tri3 + ), + gsSPNTriangles_5b(25, 5, 4, // tri0 + 4, 14, 25, // tri1 + 12, 26, 16, // tri2 + 20, 22, 27 // tri3 + ), + gsSPNTriangles_5b(26, 12, 23, // tri0 + 1, 28, 9, // tri1 + 29, 6, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[98], 26, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 3, // tri0 + 2, 3, 8, // tri1 + 3, 1, 9, // tri2 + 0, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 8, 3, // tri0 + 13, 0, 11, // tri1 + 12, 3, 7, // tri2 + 0, 13, 4 // tri3 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 3, 9, 6, // tri1 + 10, 0, 2, // tri2 + 2, 14, 10 // tri3 + ), + gsSPNTriangles_5b(8, 14, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 17, 16, 19 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 22, 18, // tri1 + 18, 19, 21, // tri2 + 21, 20, 22 // tri3 + ), + gsSPNTriangles_5b(23, 19, 16, // tri0 + 24, 16, 15, // tri1 + 22, 20, 25, // tri2 + 20, 19, 23 // tri3 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[124], 19, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 2, 1, 3, // tri1 + 4, 6, 9, // tri2 + 8, 5, 4 // tri3 + ), + gsSPNTriangles_5b(9, 7, 4, // tri0 + 6, 5, 8, // tri1 + 6, 8, 9, // tri2 + 3, 1, 10 // tri3 + ), + gsSPNTriangles_5b(10, 11, 3, // tri0 + 3, 11, 0, // tri1 + 0, 10, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 28), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 13, 17 // tri2 + ), + gsSPNTriangles_5b(16, 13, 12, // tri0 + 17, 18, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[143], 21, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 5, // tri0 + 11, 9, 12, // tri1 + 12, 13, 11, // tri2 + 7, 6, 14 // tri3 + ), + gsSPNTriangles_5b(13, 12, 15, // tri0 + 13, 15, 16, // tri1 + 3, 5, 17, // tri2 + 6, 15, 18 // tri3 + ), + gsSPNTriangles_5b(1, 14, 6, // tri0 + 11, 19, 9, // tri1 + 8, 16, 15, // tri2 + 10, 9, 19 // tri3 + ), + gsSPNTriangles_5b(1, 18, 20, // tri0 + 15, 6, 8, // tri1 + 5, 4, 9, // tri2 + 4, 12, 9 // tri3 + ), + gsSPNTriangles_5b(18, 1, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_grf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[7], 18, 7), + gsSPNTrianglesInit_5b(2, // tri count + 3, 7, 1, // tri0 + 1, 8, 9, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 10, // tri0 + 6, 0, 11, // tri1 + 4, 6, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 6, 15, 16, // tri1 + 2, 17, 18, // tri2 + 0, 19, 20 // tri3 + ), + gsSPNTriangles_5b(5, 4, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[25], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 4, // tri0 + 1, 6, 3, // tri1 + 4, 2, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_grf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[198], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[202], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 0, 10, // tri0 + 0, 3, 11, // tri1 + 2, 12, 13, // tri2 + 1, 2, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_grf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[218], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[221], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 3, // tri0 + 1, 5, 4, // tri1 + 2, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 2, 0, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_grf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[164], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[168], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 3, 0, 11, // tri1 + 2, 12, 13, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_grf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[184], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[187], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 0, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_grf_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[232], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[242], 22, 10), + gsSPNTrianglesInit_5b(14, // tri count + 9, 10, 11, // tri0 + 9, 12, 13, // tri1 + 8, 0, 14 // tri2 + ), + gsSPNTriangles_5b(9, 6, 15, // tri0 + 0, 7, 16, // tri1 + 8, 17, 18, // tri2 + 4, 8, 19 // tri3 + ), + gsSPNTriangles_5b(3, 20, 21, // tri0 + 4, 22, 23, // tri1 + 7, 1, 24, // tri2 + 1, 25, 26 // tri3 + ), + gsSPNTriangles_5b(6, 27, 28, // tri0 + 3, 9, 29, // tri1 + 7, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grf_1_v[264], 21, 10), + gsSPNTrianglesInit_5b(2, // tri count + 2, 3, 10, // tri0 + 6, 5, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(15, // tri count + 12, 13, 14, // tri0 + 15, 16, 12, // tri1 + 17, 18, 19 // tri2 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 22, 21, 23, // tri1 + 17, 19, 23, // tri2 + 14, 13, 24 // tri3 + ), + gsSPNTriangles_5b(20, 22, 25, // tri0 + 15, 26, 16, // tri1 + 13, 12, 16, // tri2 + 27, 19, 18 // tri3 + ), + gsSPNTriangles_5b(28, 23, 21, // tri0 + 28, 17, 23, // tri1 + 26, 15, 29, // tri2 + 30, 14, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[285], 20, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 3, 1, 4 // tri2 + ), + gsSPNTriangles_5b(1, 3, 2, // tri0 + 5, 6, 7, // tri1 + 7, 6, 8, // tri2 + 4, 0, 2 // tri3 + ), + gsSPNTriangles_5b(1, 0, 4, // tri0 + 9, 5, 10, // tri1 + 11, 12, 13, // tri2 + 12, 11, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 13, // tri0 + 15, 11, 13, // tri1 + 11, 15, 14, // tri2 + 14, 15, 13 // tri3 + ), + gsSPNTriangles_5b(16, 8, 17, // tri0 + 18, 17, 9, // tri1 + 18, 9, 19, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(8, 16, 7, // tri0 + 7, 10, 5, // tri1 + 10, 19, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&grf_1_v[305], 12, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 9, 10, 7, // tri1 + 2, 8, 7, // tri2 + 1, 0, 6 // tri3 + ), + gsSPNTriangles_5b(6, 11, 4, // tri0 + 7, 3, 2, // tri1 + 6, 5, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_grf_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[328], 6, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 2, // tri0 + 0, 5, 4, // tri1 + 0, 4, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_grf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[317], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[320], 8, 3), + gsSPNTrianglesInit_5b(3, // tri count + 2, 3, 0, // tri0 + 1, 4, 2, // tri1 + 0, 5, 1 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 6, 7, 8, // tri0 + 7, 6, 9, // tri1 + 9, 6, 10 // tri2 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 10, 6, 8, // tri1 + 8, 9, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_grf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[374], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[378], 18, 4), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 4, // tri0 + 0, 5, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 2, 1, 11, // tri1 + 1, 2, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 0, 15, // tri0 + 2, 16, 17, // tri1 + 1, 3, 18, // tri2 + 3, 2, 19 // tri3 + ), + gsSPNTriangles_5b(2, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grf_1_v[396], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_grf_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[406], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(5, 1, 6, // tri0 + 2, 7, 0, // tri1 + 4, 7, 2, // tri2 + 6, 4, 5 // tri3 + ), + gsSPNTriangles_5b(0, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_grf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[334], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&grf_1_v[338], 18, 4), + gsSPNTrianglesInit_5b(12, // tri count + 1, 0, 4, // tri0 + 0, 5, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 1, 2, 11, // tri1 + 2, 1, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 2, 16, 17, // tri1 + 3, 1, 18, // tri2 + 2, 3, 19 // tri3 + ), + gsSPNTriangles_5b(2, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&grf_1_v[356], 10, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_grf_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[366], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 1, 5, // tri0 + 2, 7, 0, // tri1 + 0, 7, 3, // tri2 + 5, 3, 6 // tri3 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_grf_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&grf_1_v[414], 16, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 4, 6, 8, // tri1 + 8, 9, 4, // tri2 + 10, 9, 8 // tri3 + ), + gsSPNTriangles_5b(2, 5, 11, // tri0 + 2, 11, 12, // tri1 + 13, 14, 15, // tri2 + 15, 12, 13 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 3, 2, 1, // tri1 + 3, 5, 2, // tri2 + 13, 10, 14 // tri3 + ), + gsSPNTriangles_5b(9, 13, 11, // tri0 + 7, 3, 1, // tri1 + 9, 10, 13, // tri2 + 9, 11, 5 // tri3 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 12, 15, 0, // tri1 + 2, 12, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_grf_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_grf_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,-800 }, + /* joint 11 */ { tail1_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_grf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_grf_model, 3, cKF_JOINT_FLAG_DISP_OPA, 667,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,-800,0 }, + /* joint 15 */ { Larm1_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_grf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,800,0 }, + /* joint 18 */ { Rarm1_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 2279,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,750 }, + /* joint 23 */ { mouth_grf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_grf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1153,0,400 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_grf_1 = { 26, 14, cKF_je_r_grf_1_tbl }; diff --git a/src/data/npc/model/mdl/gst_1.c b/src/data/npc/model/mdl/gst_1.c new file mode 100644 index 00000000..1d315ae1 --- /dev/null +++ b/src/data/npc/model/mdl/gst_1.c @@ -0,0 +1,404 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx gst_1_v[] = { +#include "assets/npc/mdl/gst_1_v.inc" +}; + +static Gfx head_gst_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 127, 255, 255, 255, 180), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gst_1_v[0], 13, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[13], 19, 13), + gsSPNTrianglesInit_5b(13, // tri count + 10, 13, 14, // tri0 + 9, 1, 15, // tri1 + 0, 7, 16 // tri2 + ), + gsSPNTriangles_5b(0, 18, 17, // tri0 + 6, 4, 19, // tri1 + 2, 5, 20, // tri2 + 3, 21, 22 // tri3 + ), + gsSPNTriangles_5b(2, 23, 1, // tri0 + 0, 24, 4, // tri1 + 11, 25, 26, // tri2 + 3, 6, 27 // tri3 + ), + gsSPNTriangles_5b(1, 29, 28, // tri0 + 5, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gst_1_v[32], 15, 13), + gsSPNTrianglesInit_5b(9, // tri count + 6, 13, 14, // tri0 + 12, 15, 16, // tri1 + 8, 17, 18 // tri2 + ), + gsSPNTriangles_5b(8, 11, 19, // tri0 + 12, 10, 20, // tri1 + 1, 21, 22, // tri2 + 0, 23, 24 // tri3 + ), + gsSPNTriangles_5b(5, 3, 25, // tri0 + 3, 26, 27, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[47], 13, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 1, 3 // tri2 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 5, 6, 2, // tri1 + 3, 7, 8, // tri2 + 8, 9, 4 // tri3 + ), + gsSPNTriangles_5b(4, 3, 8, // tri0 + 4, 9, 5, // tri1 + 2, 6, 10, // tri2 + 10, 11, 0 // tri3 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 0, 11, 12, // tri1 + 4, 5, 2, // tri2 + 12, 7, 3 // tri3 + ), + gsSPNTriangles_5b(3, 0, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[60], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 2, 8, 9, // tri1 + 10, 11, 4, // tri2 + 11, 12, 5 // tri3 + ), + gsSPNTriangles_5b(5, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 10, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 19, 21, 0, // tri1 + 15, 14, 22, // tri2 + 22, 23, 15 // tri3 + ), + gsSPNTriangles_5b(22, 24, 25, // tri0 + 5, 4, 11, // tri1 + 26, 16, 15, // tri2 + 27, 26, 28 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 2, 30, 18, // tri1 + 2, 18, 0, // tri2 + 21, 20, 8 // tri3 + ), + gsSPVertex(&gst_1_v[91], 32, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(12, 6, 5, // tri0 + 7, 6, 12, // tri1 + 3, 12, 11, // tri2 + 3, 11, 0 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 7, 12, 3, // tri2 + 7, 21, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 25, 26, // tri1 + 23, 15, 14, // tri2 + 27, 2, 28 // tri3 + ), + gsSPNTriangles_5b(18, 17, 29, // tri0 + 30, 31, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gst_1_v[123], 21, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 3, 0 // tri2 + ), + gsSPNTriangles_5b(6, 3, 5, // tri0 + 7, 8, 1, // tri1 + 4, 8, 7, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(11, 10, 9, // tri0 + 12, 6, 11, // tri1 + 13, 14, 1, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[144], 19, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(6, 8, 2, // tri0 + 9, 10, 4, // tri1 + 2, 8, 11, // tri2 + 12, 13, 0 // tri3 + ), + gsSPNTriangles_5b(14, 5, 4, // tri0 + 2, 15, 0, // tri1 + 3, 8, 6, // tri2 + 16, 15, 2 // tri3 + ), + gsSPNTriangles_5b(2, 1, 6, // tri0 + 11, 8, 3, // tri1 + 5, 11, 3, // tri2 + 2, 11, 16 // tri3 + ), + gsSPNTriangles_5b(17, 12, 15, // tri0 + 18, 4, 3, // tri1 + 0, 15, 12, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(4, 10, 14, // tri0 + 4, 18, 9, // tri1 + 3, 7, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[163], 15, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 7, // tri0 + 9, 2, 1, // tri1 + 4, 3, 6, // tri2 + 10, 11, 6 // tri3 + ), + gsSPNTriangles_5b(6, 11, 4, // tri0 + 7, 6, 3, // tri1 + 2, 10, 0, // tri2 + 6, 0, 10 // tri3 + ), + gsSPNTriangles_5b(5, 12, 3, // tri0 + 7, 13, 0, // tri1 + 12, 5, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx feel_gst_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 20, 255, 255, 255, 255), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gst_1_v[178], 4, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_gst_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 127, 255, 255, 255, 180), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gst_1_v[182], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[192], 22, 10), + gsSPNTrianglesInit_5b(14, // tri count + 8, 2, 10, // tri0 + 6, 11, 12, // tri1 + 7, 13, 14 // tri2 + ), + gsSPNTriangles_5b(0, 1, 15, // tri0 + 5, 0, 16, // tri1 + 1, 9, 17, // tri2 + 3, 4, 18 // tri3 + ), + gsSPNTriangles_5b(3, 19, 20, // tri0 + 2, 3, 21, // tri1 + 2, 22, 23, // tri2 + 4, 24, 25 // tri3 + ), + gsSPNTriangles_5b(3, 26, 27, // tri0 + 9, 28, 29, // tri1 + 1, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gst_1_v[214], 6, 10), + gsSPNTrianglesInit_5b(4, // tri count + 6, 5, 10, // tri0 + 5, 11, 12, // tri1 + 8, 13, 14 // tri2 + ), + gsSPNTriangles_5b(4, 7, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_gst_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 127, 255, 255, 255, 180), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gst_1_v[220], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&gst_1_v[228], 20, 8), + gsSPNTrianglesInit_5b(14, // tri count + 1, 0, 8, // tri0 + 1, 9, 10, // tri1 + 6, 11, 12 // tri2 + ), + gsSPNTriangles_5b(4, 13, 14, // tri0 + 6, 7, 15, // tri1 + 2, 1, 16, // tri2 + 0, 6, 17 // tri3 + ), + gsSPNTriangles_5b(5, 4, 18, // tri0 + 2, 19, 3, // tri1 + 5, 20, 7, // tri2 + 3, 21, 22 // tri3 + ), + gsSPNTriangles_5b(5, 23, 24, // tri0 + 4, 25, 26, // tri1 + 4, 3, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&gst_1_v[248], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(0, 2, 4, // tri0 + 3, 6, 2, // tri1 + 2, 6, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_gst_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, PRIMITIVE, 0, ENVIRONMENT, 0, COMBINED, 0, PRIM_LOD_FRAC, COMBINED, 0, 0, 0, + COMBINED), + gsDPSetPrimColor(0, 127, 255, 255, 255, 180), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_XLU_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&gst_1_v[255], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 9, 8, 6, // tri1 + 1, 7, 2, // tri2 + 10, 1, 11 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 12, 14, 13, // tri1 + 14, 15, 13, // tri2 + 16, 4, 17 // tri3 + ), + gsSPNTriangles_5b(15, 17, 13, // tri0 + 6, 3, 9, // tri1 + 9, 2, 7, // tri2 + 17, 15, 16 // tri3 + ), + gsSPNTriangles_5b(11, 12, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_gst_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,1000,0 }, + /* joint 1 */ { base_gst_model, 4, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,-400,0 }, + /* joint 3 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 4 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,400,0 }, + /* joint 7 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 8 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 200,0,-800 }, + /* joint 11 */ { tail1_gst_model, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 650,0,0 }, + /* joint 13 */ { chest_gst_model, 3, cKF_JOINT_FLAG_DISP_XLU, 700,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 600,-1100,1050 }, + /* joint 15 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 16 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 600,1100,1050 }, + /* joint 18 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 19 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 501,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 499,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_XLU, 1200,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_XLU, 300,0,800 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 24 */ { head_gst_model, 1, cKF_JOINT_FLAG_DISP_XLU, 0,0,0 }, + /* joint 25 */ { feel_gst_model, 0, cKF_JOINT_FLAG_DISP_XLU, 1102,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_gst_1 = { 26, 5, cKF_je_r_gst_1_tbl }; diff --git a/src/data/npc/model/mdl/hem_1.c b/src/data/npc/model/mdl/hem_1.c new file mode 100644 index 00000000..b0256321 --- /dev/null +++ b/src/data/npc/model/mdl/hem_1.c @@ -0,0 +1,591 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx hem_1_v[] = { +#include "assets/npc/mdl/hem_1_v.inc" +}; + +static Gfx head_hem_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[26], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 380, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hem_1_v[35], 23, 9), + gsSPNTrianglesInit_5b(14, // tri count + 4, 2, 9, // tri0 + 1, 10, 11, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(5, 14, 15, // tri0 + 4, 16, 17, // tri1 + 1, 3, 18, // tri2 + 5, 19, 20 // tri3 + ), + gsSPNTriangles_5b(2, 0, 21, // tri0 + 3, 5, 22, // tri1 + 4, 23, 24, // tri2 + 0, 1, 25 // tri3 + ), + gsSPNTriangles_5b(1, 27, 26, // tri0 + 5, 28, 29, // tri1 + 0, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hem_1_v[58], 20, 9), + gsSPNTrianglesInit_5b(4, // tri count + 6, 9, 10, // tri0 + 6, 11, 8, // tri1 + 7, 4, 12 // tri2 + ), + gsSPNTriangles_5b(5, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 20, 21, 22, // tri0 + 23, 21, 24, // tri1 + 25, 21, 20 // tri2 + ), + gsSPNTriangles_5b(24, 21, 26, // tri0 + 27, 21, 25, // tri1 + 26, 21, 27, // tri2 + 28, 21, 23 // tri3 + ), + gsSPNTriangles_5b(22, 21, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPVertex(&hem_1_v[78], 14, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 10, 4, 3, // tri1 + 3, 0, 10, // tri2 + 5, 11, 3 // tri3 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 6, 11, 5, // tri1 + 0, 12, 10, // tri2 + 8, 13, 9 // tri3 + ), + gsSPNTriangles_5b(9, 13, 2, // tri0 + 2, 12, 0, // tri1 + 2, 1, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 124), + gsSPVertex(&hem_1_v[92], 25, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 7, 11, // tri2 + 14, 4, 15 // tri3 + ), + gsSPNTriangles_5b(14, 15, 9, // tri0 + 2, 1, 13, // tri1 + 2, 13, 16, // tri2 + 5, 4, 14 // tri3 + ), + gsSPNTriangles_5b(5, 14, 17, // tri0 + 18, 19, 12, // tri1 + 4, 19, 18, // tri2 + 10, 20, 8 // tri3 + ), + gsSPNTriangles_5b(1, 21, 6, // tri0 + 9, 8, 14, // tri1 + 13, 1, 7, // tri2 + 16, 13, 12 // tri3 + ), + gsSPNTriangles_5b(16, 12, 22, // tri0 + 22, 12, 19, // tri1 + 22, 19, 3, // tri2 + 12, 11, 18 // tri3 + ), + gsSPNTriangles_5b(18, 15, 4, // tri0 + 17, 14, 8, // tri1 + 17, 8, 23, // tri2 + 23, 8, 20 // tri3 + ), + gsSPNTriangles_5b(23, 20, 24, // tri0 + 3, 19, 4, // tri1 + 0, 21, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx feel_hem_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[117], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 1, 3, // tri0 + 2, 6, 4, // tri1 + 1, 7, 2, // tri2 + 5, 4, 8 // tri3 + ), + gsSPNTriangles_5b(9, 1, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 10, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_hem_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hem_1_v[5], 21, 5), + gsSPNTrianglesInit_5b(10, // tri count + 2, 6, 5, // tri0 + 2, 8, 7, // tri1 + 3, 10, 9 // tri2 + ), + gsSPNTriangles_5b(2, 1, 11, // tri0 + 0, 2, 12, // tri1 + 3, 0, 13, // tri2 + 1, 4, 14 // tri3 + ), + gsSPNTriangles_5b(4, 16, 15, // tri0 + 4, 3, 17, // tri1 + 3, 19, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 20, 21, 22, // tri0 + 23, 21, 20, // tri1 + 24, 21, 25 // tri2 + ), + gsSPNTriangles_5b(25, 21, 23, // tri0 + 22, 21, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_hem_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[133], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hem_1_v[138], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_hem_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[154], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(7, 0, 6, // tri0 + 7, 6, 5, // tri1 + 1, 0, 7, // tri2 + 2, 8, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_hem_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[163], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 380, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hem_1_v[172], 22, 9), + gsSPNTrianglesInit_5b(14, // tri count + 4, 5, 9, // tri0 + 2, 3, 10, // tri1 + 8, 11, 12 // tri2 + ), + gsSPNTriangles_5b(3, 8, 13, // tri0 + 2, 14, 15, // tri1 + 0, 6, 16, // tri2 + 0, 18, 17 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 8, 4, 21, // tri1 + 1, 23, 22, // tri2 + 7, 1, 24 // tri3 + ), + gsSPNTriangles_5b(6, 25, 26, // tri0 + 0, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hem_1_v[194], 15, 9), + gsSPNTrianglesInit_5b(2, // tri count + 1, 2, 9, // tri0 + 5, 0, 10, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 14, 16, 17 // tri2 + ), + gsSPNTriangles_5b(17, 13, 18, // tri0 + 14, 17, 18, // tri1 + 18, 13, 12, // tri2 + 13, 19, 11 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 23, 20, 22, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_hem_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, TEXEL0, 0, ENVIRONMENT, 0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hem_1_v[209], 32, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 7, 11, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(12, 8, 7, // tri0 + 12, 7, 10, // tri1 + 13, 14, 15, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 10, 2, 1, // tri2 + 10, 1, 12 // tri3 + ), + gsSPNTriangles_5b(9, 8, 5, // tri0 + 9, 21, 22, // tri1 + 9, 22, 6, // tri2 + 11, 23, 3 // tri3 + ), + gsSPNTriangles_5b(5, 8, 12, // tri0 + 20, 19, 14, // tri1 + 20, 14, 13, // tri2 + 11, 7, 6 // tri3 + ), + gsSPNTriangles_5b(12, 1, 5, // tri0 + 11, 2, 10, // tri1 + 21, 9, 5, // tri2 + 5, 24, 21 // tri3 + ), + gsSPNTriangles_5b(11, 6, 22, // tri0 + 11, 22, 25, // tri1 + 16, 15, 18, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(11, 25, 26, // tri0 + 11, 26, 5, // tri1 + 3, 2, 11, // tri2 + 4, 0, 3 // tri3 + ), + gsSPNTriangles_5b(4, 3, 23, // tri0 + 27, 28, 29, // tri1 + 27, 29, 30, // tri2 + 31, 25, 22 // tri3 + ), + gsSPVertex(&hem_1_v[241], 12, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 6, 4, 3, // tri1 + 2, 1, 7, // tri2 + 2, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 0, 2, // tri0 + 8, 2, 9, // tri1 + 10, 3, 0, // tri2 + 10, 0, 8 // tri3 + ), + gsSPNTriangles_5b(11, 6, 3, // tri0 + 11, 3, 10, // tri1 + 9, 2, 6, // tri2 + 9, 6, 11 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 380, 124), + gsSPVertex(&hem_1_v[253], 27, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 8, 14, // tri2 + 15, 14, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 7, // tri0 + 12, 16, 10, // tri1 + 7, 14, 8, // tri2 + 4, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 6, 1, // tri0 + 4, 3, 17, // tri1 + 7, 10, 15, // tri2 + 20, 21, 2 // tri3 + ), + gsSPNTriangles_5b(3, 22, 23, // tri0 + 20, 24, 14, // tri1 + 10, 16, 23, // tri2 + 15, 25, 14 // tri3 + ), + gsSPNTriangles_5b(6, 13, 24, // tri0 + 16, 12, 17, // tri1 + 17, 3, 16, // tri2 + 14, 24, 13 // tri3 + ), + gsSPNTriangles_5b(24, 2, 6, // tri0 + 23, 26, 10, // tri1 + 23, 16, 3, // tri2 + 14, 25, 20 // tri3 + ), + gsSPNTriangles_5b(11, 10, 7, // tri0 + 2, 24, 20, // tri1 + 5, 22, 3, // tri2 + 2, 21, 0 // tri3 + ), + gsSPNTriangles_5b(10, 26, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hem_1_v[280], 32, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 9, // tri1 + 10, 7, 11, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(12, 8, 7, // tri0 + 12, 7, 10, // tri1 + 13, 14, 15, // tri2 + 13, 15, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 10, 2, 1, // tri2 + 10, 1, 12 // tri3 + ), + gsSPNTriangles_5b(9, 8, 5, // tri0 + 9, 21, 22, // tri1 + 9, 22, 6, // tri2 + 11, 23, 3 // tri3 + ), + gsSPNTriangles_5b(5, 8, 12, // tri0 + 20, 19, 14, // tri1 + 20, 14, 13, // tri2 + 11, 7, 6 // tri3 + ), + gsSPNTriangles_5b(12, 1, 5, // tri0 + 11, 2, 10, // tri1 + 21, 9, 5, // tri2 + 5, 24, 21 // tri3 + ), + gsSPNTriangles_5b(11, 6, 22, // tri0 + 11, 22, 25, // tri1 + 16, 15, 18, // tri2 + 16, 18, 17 // tri3 + ), + gsSPNTriangles_5b(11, 25, 26, // tri0 + 11, 26, 5, // tri1 + 3, 2, 11, // tri2 + 4, 0, 3 // tri3 + ), + gsSPNTriangles_5b(4, 3, 23, // tri0 + 27, 28, 29, // tri1 + 27, 29, 30, // tri2 + 31, 25, 22 // tri3 + ), + gsSPVertex(&hem_1_v[312], 21, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 6, 4, 3, // tri1 + 2, 1, 7, // tri2 + 2, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 0, 2, // tri0 + 8, 2, 9, // tri1 + 10, 3, 0, // tri2 + 10, 0, 8 // tri3 + ), + gsSPNTriangles_5b(11, 6, 3, // tri0 + 11, 3, 10, // tri1 + 9, 2, 6, // tri2 + 9, 6, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 12, 18 // tri2 + ), + gsSPNTriangles_5b(12, 16, 19, // tri0 + 17, 20, 15, // tri1 + 14, 18, 12, // tri2 + 13, 12, 19 // tri3 + ), + gsSPNTriangles_5b(15, 19, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_hem_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,500,0 }, + /* joint 1 */ { base_hem_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 200,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 201,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 201,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 199,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_hem_model, 3, cKF_JOINT_FLAG_DISP_OPA, 603,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-1500,0 }, + /* joint 15 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,1500,0 }, + /* joint 18 */ { Rarm1_hem_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_hem_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1197,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,1300 }, + /* joint 23 */ { mouth_hem_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_hem_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { feel_hem_model, 0, cKF_JOINT_FLAG_DISP_OPA, 501,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_hem_1 = { 26, 7, cKF_je_r_hem_1_tbl }; diff --git a/src/data/npc/model/mdl/hgh_1.c b/src/data/npc/model/mdl/hgh_1.c new file mode 100644 index 00000000..78bfb94c --- /dev/null +++ b/src/data/npc/model/mdl/hgh_1.c @@ -0,0 +1,771 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx hgh_1_v[] = { +#include "assets/npc/mdl/hgh_1_v.inc" +}; + +static Gfx head_hgh_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[26], 23, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 6, 11 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 22, 21, 20 // tri2 + ), + gsSPVertex(&hgh_1_v[49], 18, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 9, 11, 7 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 2, 12, 17, // tri1 + 17, 0, 2, // tri2 + 8, 16, 6 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgh_1_v[67], 24, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 8, 7, // tri1 + 10, 5, 11, // tri2 + 3, 12, 13 // tri3 + ), + gsSPNTriangles_5b(4, 3, 14, // tri0 + 5, 10, 6, // tri1 + 15, 1, 0, // tri2 + 16, 0, 4 // tri3 + ), + gsSPNTriangles_5b(9, 17, 13, // tri0 + 18, 19, 20, // tri1 + 4, 0, 2, // tri2 + 15, 18, 11 // tri3 + ), + gsSPNTriangles_5b(21, 22, 17, // tri0 + 2, 12, 3, // tri1 + 12, 8, 9, // tri2 + 5, 6, 23 // tri3 + ), + gsSPNTriangles_5b(8, 12, 2, // tri0 + 23, 6, 8, // tri1 + 11, 18, 20, // tri2 + 21, 17, 9 // tri3 + ), + gsSPNTriangles_5b(23, 2, 5, // tri0 + 8, 2, 23, // tri1 + 11, 5, 1, // tri2 + 11, 1, 15 // tri3 + ), + gsSPNTriangles_5b(13, 12, 9, // tri0 + 11, 20, 10, // tri1 + 7, 21, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgh_1_v[91], 18, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(5, 8, 9, // tri0 + 10, 9, 11, // tri1 + 5, 9, 10, // tri2 + 5, 10, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 6, // tri0 + 16, 0, 17, // tri1 + 15, 2, 12, // tri2 + 13, 17, 14 // tri3 + ), + gsSPNTriangles_5b(17, 0, 14, // tri0 + 15, 14, 0, // tri1 + 2, 15, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[109], 26, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 9, // tri0 + 4, 10, 11, // tri1 + 5, 12, 3, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 7, 19, 6, // tri1 + 9, 20, 8, // tri2 + 2, 21, 0 // tri3 + ), + gsSPNTriangles_5b(18, 14, 16, // tri0 + 15, 22, 13, // tri1 + 14, 18, 23, // tri2 + 23, 15, 14 // tri3 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 21, 24, 0, // tri1 + 4, 11, 9, // tri2 + 3, 10, 4 // tri3 + ), + gsSPNTriangles_5b(7, 25, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[135], 29, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 6, 3, 0, // tri1 + 3, 7, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(6, 0, 2, // tri0 + 9, 4, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 11, 15, 12 // tri2 + ), + gsSPNTriangles_5b(11, 14, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 21, 17, 19 // tri2 + ), + gsSPNTriangles_5b(19, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&hgh_1_v[164], 27, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 21, 20, 22 // tri2 + ), + gsSPNTriangles_5b(23, 19, 24, // tri0 + 21, 24, 19, // tri1 + 18, 25, 16, // tri2 + 25, 18, 23 // tri3 + ), + gsSPNTriangles_5b(24, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hgh_1_v[191], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 9, 10, 11, // tri1 + 9, 12, 7, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_hgh_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[5], 21, 5), + gsSPNTrianglesInit_5b(10, // tri count + 0, 3, 5, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 4, 1, 11, // tri1 + 4, 12, 13, // tri2 + 4, 14, 2 // tri3 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 1, 17, 18, // tri1 + 3, 2, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 20, 21, 22, // tri0 + 21, 23, 24, // tri1 + 25, 23, 21 // tri2 + ), + gsSPNTriangles_5b(25, 21, 20, // tri0 + 22, 21, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_hgh_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[241], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[246], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_hgh_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[262], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[266], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_hgh_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[205], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[210], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_hgh_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[226], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[230], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_hgh_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[277], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[288], 20, 11), + gsSPNTrianglesInit_5b(10, // tri count + 3, 12, 11, // tri0 + 3, 13, 14, // tri1 + 5, 15, 16 // tri2 + ), + gsSPNTriangles_5b(5, 17, 18, // tri0 + 5, 7, 19, // tri1 + 7, 1, 20, // tri2 + 0, 21, 22 // tri3 + ), + gsSPNTriangles_5b(7, 23, 24, // tri0 + 2, 0, 25, // tri1 + 0, 3, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 10, 27, 4, // tri0 + 10, 9, 28, // tri1 + 9, 8, 29 // tri2 + ), + gsSPNTriangles_5b(8, 6, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgh_1_v[308], 20, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 11, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 19, 14 // tri2 + ), + gsSPVertex(&hgh_1_v[328], 17, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 8, 9, 10, // tri1 + 6, 11, 0, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(6, 14, 11, // tri0 + 2, 9, 4, // tri1 + 15, 7, 16, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(13, 5, 8, // tri0 + 7, 5, 16, // tri1 + 0, 3, 6, // tri2 + 0, 2, 4 // tri3 + ), + gsSPNTriangles_5b(15, 11, 14, // tri0 + 10, 9, 2, // tri1 + 5, 4, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_hgh_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[365], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[369], 12, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 3, 1, 12, // tri1 + 1, 0, 13, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_hgh_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[345], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[349], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 3, 11, 10, // tri1 + 1, 13, 12, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_hgh_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[412], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[417], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_hgh_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[434], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_hgh_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[381], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgh_1_v[386], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_hgh_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[403], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_hgh_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgh_1_v[443], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 1, 8, 9, // tri1 + 0, 4, 8, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b(7, 3, 11, // tri0 + 7, 11, 12, // tri1 + 13, 8, 7, // tri2 + 7, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 12, 14, // tri0 + 8, 1, 0, // tri1 + 8, 4, 3, // tri2 + 0, 5, 4 // tri3 + ), + gsSPNTriangles_5b(9, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_hgh_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,600,0 }, + /* joint 1 */ { base_hgh_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-300,0 }, + /* joint 3 */ { Lfoot1_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 200,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,300,0 }, + /* joint 7 */ { Rfoot1_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 301,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 200,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-450 }, + /* joint 11 */ { tail1_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_hgh_model, 0, cKF_JOINT_FLAG_DISP_OPA, 488,0,0 }, + /* joint 13 */ { chest_hgh_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,-450,0 }, + /* joint 15 */ { Larm1_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_hgh_model, 0, cKF_JOINT_FLAG_DISP_OPA, 402,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,450,0 }, + /* joint 18 */ { Rarm1_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 403,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 398,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,1200 }, + /* joint 23 */ { mouth_hgh_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_hgh_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_hgh_1 = { 26, 14, cKF_je_r_hgh_1_tbl }; diff --git a/src/data/npc/model/mdl/hgs_1.c b/src/data/npc/model/mdl/hgs_1.c new file mode 100644 index 00000000..245fdc63 --- /dev/null +++ b/src/data/npc/model/mdl/hgs_1.c @@ -0,0 +1,771 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx hgs_1_v[] = { +#include "assets/npc/mdl/hgs_1_v.inc" +}; + +static Gfx head_hgs_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[26], 23, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 10, 6, 11 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 12, 13, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 22, 21, 20 // tri2 + ), + gsSPVertex(&hgs_1_v[49], 18, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 9, 11, 7 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 2, 12, 17, // tri1 + 17, 0, 2, // tri2 + 8, 16, 6 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgs_1_v[67], 24, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 8, 7, // tri1 + 10, 5, 11, // tri2 + 3, 12, 13 // tri3 + ), + gsSPNTriangles_5b(4, 3, 14, // tri0 + 5, 10, 6, // tri1 + 15, 1, 0, // tri2 + 16, 0, 4 // tri3 + ), + gsSPNTriangles_5b(9, 17, 13, // tri0 + 18, 19, 20, // tri1 + 4, 0, 2, // tri2 + 15, 18, 11 // tri3 + ), + gsSPNTriangles_5b(21, 22, 17, // tri0 + 2, 12, 3, // tri1 + 12, 8, 9, // tri2 + 5, 6, 23 // tri3 + ), + gsSPNTriangles_5b(8, 12, 2, // tri0 + 23, 6, 8, // tri1 + 11, 18, 20, // tri2 + 21, 17, 9 // tri3 + ), + gsSPNTriangles_5b(23, 2, 5, // tri0 + 8, 2, 23, // tri1 + 11, 5, 1, // tri2 + 11, 1, 15 // tri3 + ), + gsSPNTriangles_5b(13, 12, 9, // tri0 + 11, 20, 10, // tri1 + 7, 21, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgs_1_v[91], 18, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(5, 8, 9, // tri0 + 10, 9, 11, // tri1 + 5, 9, 10, // tri2 + 5, 10, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 12, 13, 14, // tri1 + 12, 14, 15, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 6, // tri0 + 16, 0, 17, // tri1 + 15, 2, 12, // tri2 + 13, 17, 14 // tri3 + ), + gsSPNTriangles_5b(17, 0, 14, // tri0 + 15, 14, 0, // tri1 + 2, 15, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[109], 26, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 9, // tri0 + 4, 10, 11, // tri1 + 5, 12, 3, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 7, 19, 6, // tri1 + 9, 20, 8, // tri2 + 2, 21, 0 // tri3 + ), + gsSPNTriangles_5b(18, 14, 16, // tri0 + 15, 22, 13, // tri1 + 14, 18, 23, // tri2 + 23, 15, 14 // tri3 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 21, 24, 0, // tri1 + 4, 11, 9, // tri2 + 3, 10, 4 // tri3 + ), + gsSPNTriangles_5b(7, 25, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[135], 29, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 6, 3, 0, // tri1 + 3, 7, 4, // tri2 + 9, 10, 4 // tri3 + ), + gsSPNTriangles_5b(6, 0, 2, // tri0 + 9, 4, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 11, 15, 12 // tri2 + ), + gsSPNTriangles_5b(11, 14, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 18, 20, 19, // tri1 + 21, 17, 19 // tri2 + ), + gsSPNTriangles_5b(19, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&hgs_1_v[164], 27, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 21, 20, 22 // tri2 + ), + gsSPNTriangles_5b(23, 19, 24, // tri0 + 21, 24, 19, // tri1 + 18, 25, 16, // tri2 + 25, 18, 23 // tri3 + ), + gsSPNTriangles_5b(24, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hgs_1_v[191], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 9, 10, 11, // tri1 + 9, 12, 7, // tri2 + 9, 13, 12 // tri3 + ), + gsSPNTriangles_5b(11, 13, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_hgs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[5], 21, 5), + gsSPNTrianglesInit_5b(10, // tri count + 0, 3, 5, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 4, 1, 11, // tri1 + 4, 12, 13, // tri2 + 4, 14, 2 // tri3 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 1, 17, 18, // tri1 + 3, 2, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 20, 21, 22, // tri0 + 21, 23, 24, // tri1 + 25, 23, 21 // tri2 + ), + gsSPNTriangles_5b(25, 21, 20, // tri0 + 22, 21, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_hgs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[239], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[243], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 0, 4, // tri0 + 3, 5, 6, // tri1 + 0, 1, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 2, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_hgs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[259], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[262], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 1, 10, 9, // tri1 + 0, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_hgs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[205], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[209], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 2, 4, // tri0 + 3, 5, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 3, 1, 12, // tri2 + 2, 3, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_hgs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[225], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[228], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 0, 1, 7 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 1, 10, 9, // tri1 + 2, 0, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_hgs_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[273], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[284], 20, 11), + gsSPNTrianglesInit_5b(10, // tri count + 3, 12, 11, // tri0 + 3, 13, 14, // tri1 + 5, 15, 16 // tri2 + ), + gsSPNTriangles_5b(5, 17, 18, // tri0 + 5, 7, 19, // tri1 + 7, 1, 20, // tri2 + 0, 21, 22 // tri3 + ), + gsSPNTriangles_5b(7, 23, 24, // tri0 + 2, 0, 25, // tri1 + 0, 3, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 10, 27, 4, // tri0 + 10, 9, 28, // tri1 + 9, 8, 29 // tri2 + ), + gsSPNTriangles_5b(8, 6, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hgs_1_v[304], 20, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 6, 7 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 11, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 19, 14 // tri2 + ), + gsSPVertex(&hgs_1_v[324], 19, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 8, 9, 10, // tri1 + 6, 11, 0, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 11, // tri0 + 2, 9, 16, // tri1 + 17, 7, 18, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(13, 5, 8, // tri0 + 7, 5, 18, // tri1 + 0, 3, 6, // tri2 + 0, 2, 4 // tri3 + ), + gsSPNTriangles_5b(17, 11, 15, // tri0 + 10, 9, 2, // tri1 + 5, 4, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_hgs_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[363], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[367], 12, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 3, 1, 12, // tri1 + 1, 0, 13, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_hgs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[343], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[347], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 3, 11, 10, // tri1 + 1, 13, 12, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_hgs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[410], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[415], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_hgs_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[432], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 6, 8, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_hgs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[379], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hgs_1_v[384], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_hgs_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[401], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 8, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_hgs_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hgs_1_v[441], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 1, 8, 9, // tri1 + 0, 4, 8, // tri2 + 10, 6, 9 // tri3 + ), + gsSPNTriangles_5b(7, 3, 11, // tri0 + 7, 11, 12, // tri1 + 13, 8, 7, // tri2 + 7, 12, 13 // tri3 + ), + gsSPNTriangles_5b(13, 12, 14, // tri0 + 8, 1, 0, // tri1 + 8, 4, 3, // tri2 + 0, 5, 4 // tri3 + ), + gsSPNTriangles_5b(9, 6, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_hgs_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,600,0 }, + /* joint 1 */ { base_hgs_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-300,0 }, + /* joint 3 */ { Lfoot1_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 200,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,300,0 }, + /* joint 7 */ { Rfoot1_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 301,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 200,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-450 }, + /* joint 11 */ { tail1_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_hgs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 488,0,0 }, + /* joint 13 */ { chest_hgs_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-700,0 }, + /* joint 15 */ { Larm1_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_hgs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,700,0 }, + /* joint 18 */ { Rarm1_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 549,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,1200 }, + /* joint 23 */ { mouth_hgs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_hgs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_hgs_1 = { 26, 14, cKF_je_r_hgs_1_tbl }; diff --git a/src/data/npc/model/mdl/hip_1.c b/src/data/npc/model/mdl/hip_1.c new file mode 100644 index 00000000..7f1eda27 --- /dev/null +++ b/src/data/npc/model/mdl/hip_1.c @@ -0,0 +1,729 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx hip_1_v[] = { +#include "assets/npc/mdl/hip_1_v.inc" +}; + +static Gfx head_hip_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[28], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[35], 18, 7), + gsSPNTrianglesInit_5b(12, // tri count + 1, 7, 8, // tri0 + 1, 9, 10, // tri1 + 2, 11, 12 // tri2 + ), + gsSPNTriangles_5b(2, 13, 14, // tri0 + 3, 4, 15, // tri1 + 5, 6, 16, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(4, 19, 20, // tri0 + 1, 3, 21, // tri1 + 6, 2, 22, // tri2 + 0, 1, 23 // tri3 + ), + gsSPNTriangles_5b(2, 0, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hip_1_v[53], 27, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 4, 0, 3, // tri1 + 4, 3, 5, // tri2 + 6, 7, 8 // tri3 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 10, 6, 9, // tri1 + 10, 9, 11, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 14, 18, 12 // tri2 + ), + gsSPNTriangles_5b(14, 15, 19, // tri0 + 19, 15, 17, // tri1 + 18, 19, 17, // tri2 + 19, 18, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 20, 21, 22, // tri0 + 22, 23, 24, // tri1 + 24, 25, 20 // tri2 + ), + gsSPNTriangles_5b(22, 24, 20, // tri0 + 20, 26, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hip_1_v[80], 26, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 2, 1 // tri2 + ), + gsSPNTriangles_5b(0, 6, 7, // tri0 + 5, 2, 3, // tri1 + 1, 7, 3, // tri2 + 0, 7, 1 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPNTrianglesInit_5b(20, // tri count + 8, 9, 10, // tri0 + 8, 11, 12, // tri1 + 8, 12, 13 // tri2 + ), + gsSPNTriangles_5b(8, 14, 15, // tri0 + 11, 16, 17, // tri1 + 18, 19, 20, // tri2 + 19, 21, 12 // tri3 + ), + gsSPNTriangles_5b(11, 15, 16, // tri0 + 20, 19, 12, // tri1 + 17, 16, 22, // tri2 + 9, 13, 23 // tri3 + ), + gsSPNTriangles_5b(12, 11, 17, // tri0 + 12, 17, 20, // tri1 + 17, 22, 24, // tri2 + 24, 18, 20 // tri3 + ), + gsSPNTriangles_5b(20, 17, 24, // tri0 + 15, 11, 8, // tri1 + 13, 12, 21, // tri2 + 21, 25, 13 // tri3 + ), + gsSPNTriangles_5b(9, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hip_1_v[106], 21, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 3, // tri0 + 11, 12, 9, // tri1 + 0, 11, 13, // tri2 + 3, 5, 14 // tri3 + ), + gsSPNTriangles_5b(15, 13, 14, // tri0 + 11, 14, 13, // tri1 + 11, 16, 12, // tri2 + 9, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 14, 5, // tri0 + 3, 14, 9, // tri1 + 8, 7, 4, // tri2 + 3, 17, 8 // tri3 + ), + gsSPNTriangles_5b(17, 3, 10, // tri0 + 2, 1, 18, // tri1 + 19, 6, 8, // tri2 + 2, 16, 11 // tri3 + ), + gsSPNTriangles_5b(20, 16, 2, // tri0 + 2, 18, 20, // tri1 + 8, 17, 19, // tri2 + 2, 11, 0 // tri3 + ), + gsSPNTriangles_5b(4, 3, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 252), + gsSPVertex(&hip_1_v[127], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 4, // tri2 + 16, 4, 3 // tri3 + ), + gsSPNTriangles_5b(9, 17, 10, // tri0 + 18, 12, 11, // tri1 + 19, 20, 21, // tri2 + 20, 19, 22 // tri3 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 23, 26, 27, // tri1 + 28, 29, 30, // tri2 + 2, 1, 31 // tri3 + ), + gsSPVertex(&hip_1_v[159], 32, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 0, 12, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 19, 20, 13, // tri1 + 21, 18, 17, // tri2 + 22, 12, 23 // tri3 + ), + gsSPNTriangles_5b(13, 22, 24, // tri0 + 16, 19, 25, // tri1 + 16, 15, 19, // tri2 + 5, 14, 18 // tri3 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 15, 26, 27, // tri1 + 27, 20, 15, // tri2 + 18, 28, 5 // tri3 + ), + gsSPNTriangles_5b(12, 0, 2, // tri0 + 19, 15, 20, // tri1 + 1, 27, 26, // tri2 + 1, 26, 4 // tri3 + ), + gsSPNTriangles_5b(2, 29, 12, // tri0 + 16, 18, 14, // tri1 + 25, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hip_1_v[189], 25, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 9, 11, 15 // tri2 + ), + gsSPNTriangles_5b(16, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(24, 21, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hip_1_v[214], 18, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 3 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 6, 3, 9, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 12, 16, 10 // tri2 + ), + gsSPNTriangles_5b(15, 17, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_hip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[5], 23, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 4, 8, 7, // tri1 + 0, 9, 10 // tri2 + ), + gsSPNTriangles_5b(4, 3, 11, // tri0 + 1, 2, 12, // tri1 + 0, 4, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 3, 1, 15, // tri0 + 3, 16, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 18, 23, 22 // tri2 + ), + gsSPNTriangles_5b(18, 22, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 27, 25, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_hip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[265], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[270], 13, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 5, // tri0 + 0, 6, 7, // tri1 + 3, 2, 8 // tri2 + ), + gsSPNTriangles_5b(1, 4, 9, // tri0 + 1, 10, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_hip_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[283], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[287], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 2, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 3, 1, 10, // tri1 + 2, 11, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_hip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[232], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[237], 13, 5), + gsSPNTrianglesInit_5b(7, // tri count + 1, 0, 5, // tri0 + 0, 6, 7, // tri1 + 2, 3, 8 // tri2 + ), + gsSPNTriangles_5b(4, 1, 9, // tri0 + 1, 10, 11, // tri1 + 2, 12, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_hip_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[250], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[254], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 2, 0, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 3, 10, // tri1 + 2, 11, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_hip_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[298], 16, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 4, // tri0 + 3, 0, 2, // tri1 + 11, 12, 13, // tri2 + 7, 6, 12 // tri3 + ), + gsSPNTriangles_5b(13, 9, 11, // tri0 + 7, 12, 11, // tri1 + 4, 10, 5, // tri2 + 14, 2, 1 // tri3 + ), + gsSPNTriangles_5b(0, 3, 5, // tri0 + 15, 6, 8, // tri1 + 15, 8, 14, // tri2 + 10, 9, 13 // tri3 + ), + gsSPVertex(&hip_1_v[314], 19, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 0, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 4, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 6, 4 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 13, 17, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_hip_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[342], 12, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_hip_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[333], 9, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_hip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[392], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[397], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 2, 0, 7, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 3, 10, // tri0 + 4, 2, 11, // tri1 + 0, 1, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_hip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[413], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[418], 12, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 5, 6, // tri0 + 3, 2, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(4, 10, 0, // tri0 + 0, 11, 12, // tri1 + 0, 13, 1, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx lfoot1_hip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[375], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[380], 12, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 6, 5, // tri0 + 0, 1, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 4, // tri0 + 4, 11, 12, // tri1 + 1, 4, 13, // tri2 + 0, 14, 3 // tri3 + ), + gsSPNTriangles_5b(0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_hip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[354], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hip_1_v[359], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 4, 5, 6, // tri0 + 3, 7, 8, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 4, 11, 12, // tri1 + 2, 13, 14, // tri2 + 2, 4, 15 // tri3 + ), + gsSPNTriangles_5b(3, 1, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_hip_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hip_1_v[430], 24, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 4 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 9, 2, 10, // tri1 + 9, 10, 11, // tri2 + 11, 10, 12 // tri3 + ), + gsSPNTriangles_5b(12, 10, 13, // tri0 + 14, 8, 7, // tri1 + 8, 14, 15, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 4, 6, 5, // tri1 + 6, 1, 0, // tri2 + 5, 7, 3 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 20, 18, // tri1 + 20, 21, 18, // tri2 + 20, 22, 21 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_hip_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_hip_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-600,0 }, + /* joint 3 */ { lfoot1_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 250,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,600,0 }, + /* joint 7 */ { Rfoot1_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 250,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,-1300 }, + /* joint 11 */ { tail1_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_hip_model, 0, cKF_JOINT_FLAG_DISP_OPA, 602,0,0 }, + /* joint 13 */ { chest_hip_model, 3, cKF_JOINT_FLAG_DISP_OPA, 430,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1100,-1450,0 }, + /* joint 15 */ { Larm1_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_hip_model, 0, cKF_JOINT_FLAG_DISP_OPA, 556,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1100,1450,1 }, + /* joint 18 */ { Rarm1_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 549,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 553,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 2020,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,900 }, + /* joint 23 */ { mouth_hip_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_hip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1950,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_hip_1 = { 26, 14, cKF_je_r_hip_1_tbl }; diff --git a/src/data/npc/model/mdl/hrs_1.c b/src/data/npc/model/mdl/hrs_1.c new file mode 100644 index 00000000..b9eac946 --- /dev/null +++ b/src/data/npc/model/mdl/hrs_1.c @@ -0,0 +1,703 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx hrs_1_v[] = { +#include "assets/npc/mdl/hrs_1_v.inc" +}; + +static Gfx head_hrs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[24], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[30], 23, 6), + gsSPNTrianglesInit_5b(14, // tri count + 2, 6, 7, // tri0 + 0, 8, 9, // tri1 + 2, 5, 10 // tri2 + ), + gsSPNTriangles_5b(3, 2, 11, // tri0 + 1, 4, 12, // tri1 + 1, 13, 14, // tri2 + 5, 0, 15 // tri3 + ), + gsSPNTriangles_5b(5, 16, 17, // tri0 + 0, 18, 19, // tri1 + 0, 1, 20, // tri2 + 5, 21, 22 // tri3 + ), + gsSPNTriangles_5b(5, 23, 24, // tri0 + 5, 26, 25, // tri1 + 0, 28, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 92), + gsSPVertex(&hrs_1_v[53], 19, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 1, 9, // tri0 + 1, 0, 10, // tri1 + 11, 3, 6, // tri2 + 12, 2, 6 // tri3 + ), + gsSPNTriangles_5b(4, 3, 11, // tri0 + 13, 11, 8, // tri1 + 2, 1, 8, // tri2 + 8, 11, 6 // tri3 + ), + gsSPNTriangles_5b(8, 6, 2, // tri0 + 7, 12, 6, // tri1 + 2, 12, 0, // tri2 + 11, 13, 4 // tri3 + ), + gsSPNTriangles_5b(9, 13, 8, // tri0 + 5, 7, 3, // tri1 + 10, 9, 1, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(14, 16, 17, // tri0 + 14, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hrs_1_v[72], 25, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 4, 3, // tri0 + 10, 11, 12, // tri1 + 11, 10, 6, // tri2 + 2, 1, 13 // tri3 + ), + gsSPNTriangles_5b(8, 2, 6, // tri0 + 6, 2, 11, // tri1 + 2, 8, 0, // tri2 + 13, 11, 2 // tri3 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 0, 8, 3, // tri1 + 14, 15, 12, // tri2 + 3, 8, 7 // tri3 + ), + gsSPNTriangles_5b(12, 15, 16, // tri0 + 7, 9, 3, // tri1 + 3, 5, 0, // tri2 + 13, 14, 12 // tri3 + ), + gsSPNTriangles_5b(12, 16, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(24, 17, 19, // tri0 + 22, 18, 20, // tri1 + 21, 19, 18, // tri2 + 21, 18, 22 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hrs_1_v[97], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(4, 0, 3, // tri0 + 6, 7, 8, // tri1 + 8, 7, 5, // tri2 + 8, 5, 4 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hrs_1_v[107], 27, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 9, 10, 11, // tri1 + 8, 0, 6, // tri2 + 12, 11, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 9, // tri0 + 1, 13, 2, // tri1 + 13, 1, 14, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 18, 10, 19, // tri1 + 16, 14, 4, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 20, // tri0 + 14, 15, 13, // tri1 + 23, 20, 19, // tri2 + 24, 19, 21 // tri3 + ), + gsSPNTriangles_5b(18, 25, 26, // tri0 + 14, 1, 5, // tri1 + 11, 10, 18, // tri2 + 19, 10, 23 // tri3 + ), + gsSPNTriangles_5b(16, 15, 14, // tri0 + 9, 23, 10, // tri1 + 8, 7, 12, // tri2 + 4, 14, 5 // tri3 + ), + gsSPNTriangles_5b(18, 19, 24, // tri0 + 4, 3, 24, // tri1 + 3, 25, 18, // tri2 + 18, 24, 3 // tri3 + ), + gsSPNTriangles_5b(5, 25, 3, // tri0 + 24, 22, 17, // tri1 + 24, 17, 4, // tri2 + 26, 25, 5 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&hrs_1_v[134], 22, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(2, 8, 0, // tri0 + 9, 6, 0, // tri1 + 5, 10, 3, // tri2 + 11, 12, 5 // tri3 + ), + gsSPNTriangles_5b(11, 4, 13, // tri0 + 1, 0, 6, // tri1 + 11, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 16 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 15, 20, 19, // tri1 + 16, 15, 19, // tri2 + 19, 21, 17 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_hrs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[5], 19, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(4, 0, 11, // tri0 + 1, 12, 13, // tri1 + 1, 3, 14, // tri2 + 2, 4, 15 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(18, 23, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_hrs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[192], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[197], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_hrs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[213], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[217], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_hrs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[156], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[161], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_hrs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[177], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[181], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_hrs_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[228], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[235], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&hrs_1_v[255], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 6, 5, 12 // tri3 + ), + gsSPNTriangles_5b(11, 10, 5, // tri0 + 11, 5, 4, // tri1 + 1, 13, 2, // tri2 + 3, 2, 9 // tri3 + ), + gsSPNTriangles_5b(3, 9, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_hrs_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[283], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_hrs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[269], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[273], 10, 4), + gsSPNTrianglesInit_5b(4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_hrs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[341], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[346], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_hrs_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[363], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[367], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_hrs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[291], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[296], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_hrs_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[313], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&hrs_1_v[319], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_hrs_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&hrs_1_v[389], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_hrs_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_hrs_model, 4, cKF_JOINT_FLAG_DISP_OPA, 42,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 200,0,-600 }, + /* joint 11 */ { tail1_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_hrs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_hrs_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 400,-600,0 }, + /* joint 15 */ { Larm1_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_hrs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 400,600,0 }, + /* joint 18 */ { Rarm1_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,1000 }, + /* joint 23 */ { mouth_hrs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_hrs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1558,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_hrs_1 = { 26, 14, cKF_je_r_hrs_1_tbl }; diff --git a/src/data/npc/model/mdl/kab_1.c b/src/data/npc/model/mdl/kab_1.c new file mode 100644 index 00000000..83bc7758 --- /dev/null +++ b/src/data/npc/model/mdl/kab_1.c @@ -0,0 +1,631 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx kab_1_v[] = { +#include "assets/npc/mdl/kab_1_v.inc" +}; + +static Gfx head_kab_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[26], 28, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 4, 5, 6, // tri0 + 7, 5, 4, // tri1 + 8, 5, 7 // tri2 + ), + gsSPNTriangles_5b(6, 5, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 10, 11, 12, // tri0 + 12, 13, 10, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 14, 15, 16, // tri0 + 15, 17, 18, // tri1 + 17, 15, 14 // tri2 + ), + gsSPNTriangles_5b(17, 14, 19, // tri0 + 17, 19, 20, // tri1 + 18, 16, 15, // tri2 + 16, 18, 20 // tri3 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 20, 18, 17, // tri1 + 20, 19, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(10, // tri count + 21, 22, 23, // tri0 + 24, 25, 22, // tri1 + 23, 22, 25 // tri2 + ), + gsSPNTriangles_5b(26, 23, 25, // tri0 + 27, 26, 25, // tri1 + 22, 21, 24, // tri2 + 27, 24, 21 // tri3 + ), + gsSPNTriangles_5b(26, 21, 23, // tri0 + 25, 24, 27, // tri1 + 21, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kab_1_v[54], 23, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 4, 7, // tri0 + 7, 8, 5, // tri1 + 9, 3, 7, // tri2 + 6, 10, 4 // tri3 + ), + gsSPNTriangles_5b(4, 10, 11, // tri0 + 0, 12, 8, // tri1 + 0, 2, 12, // tri2 + 11, 9, 4 // tri3 + ), + gsSPNTriangles_5b(13, 1, 14, // tri0 + 8, 15, 16, // tri1 + 17, 18, 3, // tri2 + 19, 20, 21 // tri3 + ), + gsSPNTriangles_5b(19, 21, 22, // tri0 + 21, 13, 14, // tri1 + 1, 3, 18, // tri2 + 15, 8, 12 // tri3 + ), + gsSPNTriangles_5b(13, 21, 20, // tri0 + 15, 12, 19, // tri1 + 16, 5, 8, // tri2 + 14, 1, 18 // tri3 + ), + gsSPNTriangles_5b(19, 12, 20, // tri0 + 3, 9, 17, // tri1 + 8, 7, 0, // tri2 + 0, 7, 3 // tri3 + ), + gsSPNTriangles_5b(7, 4, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&kab_1_v[77], 22, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 11, 4, 3, // tri1 + 12, 13, 14, // tri2 + 3, 8, 11 // tri3 + ), + gsSPNTriangles_5b(15, 12, 16, // tri0 + 10, 17, 2, // tri1 + 10, 14, 13, // tri2 + 9, 14, 10 // tri3 + ), + gsSPNTriangles_5b(18, 11, 8, // tri0 + 12, 15, 19, // tri1 + 7, 18, 8, // tri2 + 2, 17, 0 // tri3 + ), + gsSPNTriangles_5b(12, 19, 13, // tri0 + 5, 20, 16, // tri1 + 5, 16, 21, // tri2 + 16, 20, 15 // tri3 + ), + gsSPNTriangles_5b(0, 6, 1, // tri0 + 7, 6, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kab_1_v[99], 32, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 1, // tri1 + 14, 15, 16, // tri2 + 17, 14, 11 // tri3 + ), + gsSPNTriangles_5b(4, 3, 18, // tri0 + 19, 8, 7, // tri1 + 9, 3, 10, // tri2 + 13, 16, 1 // tri3 + ), + gsSPNTriangles_5b(14, 17, 15, // tri0 + 11, 20, 9, // tri1 + 1, 0, 12, // tri2 + 11, 14, 20 // tri3 + ), + gsSPNTriangles_5b(1, 16, 21, // tri0 + 1, 21, 2, // tri1 + 22, 17, 11, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(8, 0, 6, // tri0 + 8, 26, 27, // tri1 + 27, 26, 3, // tri2 + 2, 6, 0 // tri3 + ), + gsSPNTriangles_5b(5, 10, 3, // tri0 + 16, 13, 20, // tri1 + 16, 20, 14, // tri2 + 28, 29, 30 // tri3 + ), + gsSPVertex(&kab_1_v[130], 29, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 5, 7, // tri1 + 9, 0, 3, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 8, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20, // tri2 + 20, 21, 18 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 21, 25, 18, // tri1 + 26, 27, 22, // tri2 + 12, 28, 10 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_kab_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[6], 20, 6), + gsSPNTrianglesInit_5b(10, // tri count + 3, 4, 6, // tri0 + 5, 2, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 3, 15, 16 // tri3 + ), + gsSPNTriangles_5b(0, 3, 17, // tri0 + 1, 18, 19, // tri1 + 1, 0, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 23, 25, 21 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_kab_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[193], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[197], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_kab_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[213], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[216], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_kab_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[159], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[163], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_kab_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[179], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[182], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_kab_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[227], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[237], 20, 10), + gsSPNTrianglesInit_5b(13, // tri count + 2, 5, 10, // tri0 + 5, 6, 11, // tri1 + 1, 12, 13 // tri2 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 3, 2, 16, // tri1 + 4, 17, 18, // tri2 + 0, 4, 19 // tri3 + ), + gsSPNTriangles_5b(7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 6, 8, 24, // tri2 + 7, 1, 25 // tri3 + ), + gsSPNTriangles_5b(8, 26, 27, // tri0 + 5, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&kab_1_v[257], 4, 10), + gsSPNTrianglesInit_5b(3, // tri count + 1, 9, 10, // tri0 + 9, 0, 11, // tri1 + 5, 12, 13 // tri2 + ), + gsSPVertex(&kab_1_v[261], 23, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 0, // tri0 + 0, 7, 8, // tri1 + 9, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTriangles_5b(0, 8, 12, // tri0 + 9, 14, 15, // tri1 + 15, 10, 9, // tri2 + 0, 12, 1 // tri3 + ), + gsSPNTriangles_5b(10, 16, 11, // tri0 + 11, 17, 9, // tri1 + 11, 18, 17, // tri2 + 14, 19, 15 // tri3 + ), + gsSPNTriangles_5b(3, 20, 7, // tri0 + 16, 10, 15, // tri1 + 5, 21, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_kab_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[325], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[331], 14, 6), + gsSPNTrianglesInit_5b(5, // tri count + 2, 4, 6, // tri0 + 0, 2, 7, // tri1 + 4, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 11, 10, // tri0 + 2, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 3, 5, 14, // tri0 + 5, 1, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 16, 19, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_kab_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[345], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[353], 13, 8), + gsSPNTrianglesInit_5b(9, // tri count + 6, 8, 9, // tri0 + 7, 4, 10, // tri1 + 5, 11, 12 // tri2 + ), + gsSPNTriangles_5b(2, 6, 13, // tri0 + 0, 2, 14, // tri1 + 3, 15, 5, // tri2 + 3, 16, 17 // tri3 + ), + gsSPNTriangles_5b(3, 1, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_kab_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[284], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[290], 14, 6), + gsSPNTrianglesInit_5b(2, // tri count + 5, 3, 6, // tri0 + 1, 5, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 2, 8, 9, // tri0 + 4, 2, 10, // tri1 + 2, 0, 11 // tri2 + ), + gsSPNTriangles_5b(4, 13, 12, // tri0 + 0, 15, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 17, 19, 18 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_kab_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[304], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kab_1_v[312], 13, 8), + gsSPNTrianglesInit_5b(9, // tri count + 6, 8, 9, // tri0 + 4, 2, 10, // tri1 + 4, 11, 12 // tri2 + ), + gsSPNTriangles_5b(7, 5, 13, // tri0 + 3, 6, 14, // tri1 + 2, 0, 15, // tri2 + 1, 3, 16 // tri3 + ), + gsSPNTriangles_5b(3, 17, 18, // tri0 + 2, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_kab_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kab_1_v[366], 30, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 5, 9, 3 // tri3 + ), + gsSPNTriangles_5b(15, 18, 19, // tri0 + 20, 13, 12, // tri1 + 8, 7, 21, // tri2 + 11, 3, 9 // tri3 + ), + gsSPNTriangles_5b(19, 16, 15, // tri0 + 22, 15, 17, // tri1 + 20, 23, 13, // tri2 + 7, 24, 21 // tri3 + ), + gsSPNTriangles_5b(21, 24, 25, // tri0 + 14, 26, 12, // tri1 + 8, 27, 6, // tri2 + 21, 28, 8 // tri3 + ), + gsSPNTriangles_5b(12, 29, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_kab_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_kab_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 150,0,-850 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_kab_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_kab_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { mouth_kab_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_kab_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1245,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_kab_1 = { 26, 12, cKF_je_r_kab_1_tbl }; diff --git a/src/data/npc/model/mdl/kal_1.c b/src/data/npc/model/mdl/kal_1.c new file mode 100644 index 00000000..920f1499 --- /dev/null +++ b/src/data/npc/model/mdl/kal_1.c @@ -0,0 +1,566 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx kal_1_v[] = { +#include "assets/npc/mdl/kal_1_v.inc" +}; + +static Gfx head_kal_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[0], 25, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 6, 10, 1, // tri1 + 11, 12, 13, // tri2 + 11, 13, 14 // tri3 + ), + gsSPNTriangles_5b(6, 0, 15, // tri0 + 9, 16, 5, // tri1 + 7, 9, 4, // tri2 + 17, 7, 4 // tri3 + ), + gsSPNTriangles_5b(15, 0, 18, // tri0 + 3, 5, 19, // tri1 + 15, 20, 6, // tri2 + 5, 4, 9 // tri3 + ), + gsSPNTriangles_5b(15, 13, 12, // tri0 + 11, 14, 5, // tri1 + 19, 5, 14, // tri2 + 21, 22, 12 // tri3 + ), + gsSPNTriangles_5b(23, 15, 18, // tri0 + 13, 15, 23, // tri1 + 23, 19, 14, // tri2 + 23, 14, 13 // tri3 + ), + gsSPNTriangles_5b(12, 22, 15, // tri0 + 11, 24, 21, // tri1 + 12, 11, 21, // tri2 + 5, 24, 11 // tri3 + ), + gsSPNTriangles_5b(4, 3, 17, // tri0 + 2, 18, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kal_1_v[25], 22, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 4, 9, // tri1 + 7, 10, 11, // tri2 + 7, 11, 8 // tri3 + ), + gsSPNTriangles_5b(0, 8, 1, // tri0 + 8, 0, 12, // tri1 + 12, 0, 2, // tri2 + 12, 6, 8 // tri3 + ), + gsSPNTriangles_5b(1, 3, 2, // tri0 + 2, 9, 12, // tri1 + 8, 11, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 17, 16, 19 // tri2 + ), + gsSPNTriangles_5b(20, 14, 21, // tri0 + 21, 17, 19, // tri1 + 19, 20, 21, // tri2 + 20, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kal_1_v[47], 21, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 3, 2, // tri1 + 0, 3, 10, // tri2 + 0, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 0, 11, // tri0 + 4, 13, 14, // tri1 + 15, 0, 12, // tri2 + 14, 16, 4 // tri3 + ), + gsSPNTriangles_5b(9, 5, 17, // tri0 + 17, 4, 16, // tri1 + 17, 5, 4, // tri2 + 18, 13, 1 // tri3 + ), + gsSPNTriangles_5b(9, 10, 3, // tri0 + 2, 5, 9, // tri1 + 13, 4, 1, // tri2 + 19, 13, 18 // tri3 + ), + gsSPNTriangles_5b(15, 1, 0, // tri0 + 1, 15, 18, // tri1 + 6, 19, 18, // tri2 + 18, 15, 6 // tri3 + ), + gsSPNTriangles_5b(8, 20, 19, // tri0 + 19, 6, 8, // tri1 + 2, 1, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kal_1_v[68], 32, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 2, // tri0 + 10, 11, 12, // tri1 + 6, 13, 14, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 19, 20, 17, // tri1 + 21, 19, 12, // tri2 + 3, 5, 22 // tri3 + ), + gsSPNTriangles_5b(5, 23, 24, // tri0 + 13, 25, 15, // tri1 + 26, 27, 22, // tri2 + 0, 28, 29 // tri3 + ), + gsSPNTriangles_5b(30, 31, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&kal_1_v[100], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15, // tri2 + 6, 16, 15 // tri3 + ), + gsSPNTriangles_5b(3, 5, 17, // tri0 + 17, 18, 19, // tri1 + 7, 20, 21, // tri2 + 22, 23, 24 // tri3 + ), + gsSPNTriangles_5b(12, 11, 25, // tri0 + 26, 10, 12, // tri1 + 7, 9, 27, // tri2 + 22, 24, 12 // tri3 + ), + gsSPNTriangles_5b(21, 28, 7, // tri0 + 17, 19, 29, // tri1 + 7, 28, 30, // tri2 + 31, 13, 15 // tri3 + ), + gsSPVertex(&kal_1_v[132], 9, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_kal_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[177], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[182], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_kal_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[198], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[202], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_kal_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[141], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[146], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_kal_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[162], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[166], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_kal_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[213], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[220], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&kal_1_v[240], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_kal_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[299], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[304], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_kal_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[321], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[325], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_kal_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[249], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[254], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_kal_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[271], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kal_1_v[277], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_kal_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kal_1_v[347], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_kal_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_kal_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_kal_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_kal_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_kal_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1500,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_kal_1 = { 26, 11, cKF_je_r_kal_1_tbl }; diff --git a/src/data/npc/model/mdl/kgr_1.c b/src/data/npc/model/mdl/kgr_1.c new file mode 100644 index 00000000..4c24a6eb --- /dev/null +++ b/src/data/npc/model/mdl/kgr_1.c @@ -0,0 +1,752 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx kgr_1_v[] = { +#include "assets/npc/mdl/kgr_1_v.inc" +}; + +static Gfx head_kgr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[18], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[24], 19, 6), + gsSPNTrianglesInit_5b(12, // tri count + 4, 6, 7, // tri0 + 0, 9, 8, // tri1 + 3, 1, 10 // tri2 + ), + gsSPNTriangles_5b(1, 12, 11, // tri0 + 1, 0, 13, // tri1 + 3, 14, 15, // tri2 + 2, 17, 16 // tri3 + ), + gsSPNTriangles_5b(4, 2, 18, // tri0 + 0, 5, 19, // tri1 + 5, 20, 21, // tri2 + 2, 3, 22 // tri3 + ), + gsSPNTriangles_5b(1, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&kgr_1_v[43], 29, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 0, 2 // tri2 + ), + gsSPNTriangles_5b(6, 2, 4, // tri0 + 7, 6, 8, // tri1 + 4, 2, 5, // tri2 + 8, 9, 7 // tri3 + ), + gsSPNTriangles_5b(5, 10, 3, // tri0 + 7, 0, 6, // tri1 + 6, 4, 3, // tri2 + 6, 3, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(18, // tri count + 11, 12, 13, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19 // tri2 + ), + gsSPNTriangles_5b(14, 20, 13, // tri0 + 21, 22, 17, // tri1 + 15, 23, 17, // tri2 + 15, 14, 23 // tri3 + ), + gsSPNTriangles_5b(12, 11, 24, // tri0 + 17, 24, 21, // tri1 + 19, 15, 17, // tri2 + 11, 25, 26 // tri3 + ), + gsSPNTriangles_5b(11, 26, 27, // tri0 + 16, 28, 20, // tri1 + 16, 20, 14, // tri2 + 13, 25, 11 // tri3 + ), + gsSPNTriangles_5b(13, 23, 14, // tri0 + 17, 12, 24, // tri1 + 27, 24, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kgr_1_v[72], 31, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 9, 10 // tri2 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 4, 7, // tri1 + 9, 12, 13, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 7, 4, // tri0 + 12, 8, 11, // tri1 + 6, 14, 11, // tri2 + 5, 4, 10 // tri3 + ), + gsSPNTriangles_5b(14, 13, 12, // tri0 + 11, 14, 12, // tri1 + 4, 6, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 17 // tri2 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 19, 26, // tri1 + 26, 19, 27, // tri2 + 23, 21, 28 // tri3 + ), + gsSPNTriangles_5b(29, 27, 30, // tri0 + 22, 21, 23, // tri1 + 29, 26, 27, // tri2 + 18, 20, 15 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 16, 28, 21, // tri1 + 19, 25, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_kgr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[5], 13, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 5, // tri0 + 2, 3, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 0, 9, // tri0 + 4, 10, 11, // tri1 + 3, 13, 12, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_kgr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[137], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[141], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_kgr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[157], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[160], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 3, // tri0 + 1, 5, 4, // tri1 + 2, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 2, 0, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_kgr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[103], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[107], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 0, 10, // tri0 + 1, 2, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_kgr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[123], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[126], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 0, 3, // tri0 + 1, 5, 4, // tri1 + 2, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 0, 2, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_kgr_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[171], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[179], 24, 8), + gsSPNTrianglesInit_5b(15, // tri count + 4, 2, 8, // tri0 + 7, 9, 10, // tri1 + 4, 11, 12 // tri2 + ), + gsSPNTriangles_5b(3, 13, 1, // tri0 + 3, 14, 15, // tri1 + 2, 17, 16, // tri2 + 1, 18, 19 // tri3 + ), + gsSPNTriangles_5b(1, 20, 21, // tri0 + 2, 22, 23, // tri1 + 7, 4, 24, // tri2 + 3, 7, 25 // tri3 + ), + gsSPNTriangles_5b(5, 1, 26, // tri0 + 6, 27, 2, // tri1 + 7, 28, 29, // tri2 + 7, 30, 31 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kgr_1_v[203], 18, 8), + gsSPNTrianglesInit_5b(3, // tri count + 0, 9, 8, // tri0 + 0, 10, 11, // tri1 + 0, 13, 12 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(4, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kgr_1_v[221], 30, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 4, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 7, // tri0 + 9, 10, 8, // tri1 + 3, 5, 8, // tri2 + 9, 1, 11 // tri3 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 7, 6, 2, // tri1 + 2, 9, 8, // tri2 + 2, 8, 7 // tri3 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 10, 3, // tri1 + 11, 10, 9, // tri2 + 9, 2, 1 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 12, 13, 14, // tri0 + 15, 16, 13, // tri1 + 14, 17, 12 // tri2 + ), + gsSPNTriangles_5b(16, 18, 13, // tri0 + 14, 19, 17, // tri1 + 12, 15, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 20, 21, 22, // tri0 + 23, 24, 20, // tri1 + 22, 23, 20 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 25, 26, 27, // tri0 + 26, 28, 29, // tri1 + 26, 25, 28 // tri2 + ), + gsSPNTriangles_5b(29, 27, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_kgr_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[251], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[255], 18, 4), + gsSPNTrianglesInit_5b(9, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 0, 10, 11, // tri1 + 3, 12, 1, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 2, 17, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 19, 18, // tri1 + 20, 19, 21 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_kgr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[332], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[335], 13, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 2, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 0, 10, // tri1 + 0, 2, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 14, 13, 15 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_kgr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[348], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[351], 14, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 1, 2, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 8, // tri0 + 2, 0, 9, // tri1 + 1, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_kgr_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[365], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[370], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 5, // tri0 + 0, 6, 1, // tri1 + 0, 4, 7 // tri2 + ), + gsSPNTriangles_5b(0, 9, 8, // tri0 + 4, 3, 10, // tri1 + 1, 11, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 17, 19, 20, // tri1 + 17, 16, 19 // tri2 + ), + gsSPNTriangles_5b(20, 21, 17, // tri0 + 16, 18, 21, // tri1 + 16, 21, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_kgr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[273], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[276], 13, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 5, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 1, 10, // tri1 + 2, 0, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 14, 15, 12, // tri1 + 15, 13, 12 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_kgr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[289], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[292], 14, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 2, 1, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 0, 2, 9, // tri1 + 1, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_kgr_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[306], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&kgr_1_v[312], 20, 6), + gsSPNTrianglesInit_5b(8, // tri count + 0, 2, 6, // tri0 + 4, 7, 8, // tri1 + 1, 9, 10 // tri2 + ), + gsSPNTriangles_5b(4, 5, 11, // tri0 + 3, 13, 12, // tri1 + 5, 1, 14, // tri2 + 4, 15, 3 // tri3 + ), + gsSPNTriangles_5b(2, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 21, 19, 18 // tri2 + ), + gsSPNTriangles_5b(18, 22, 20, // tri0 + 20, 22, 17, // tri1 + 20, 17, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_kgr_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&kgr_1_v[390], 28, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 4, // tri0 + 9, 4, 3, // tri1 + 10, 6, 5, // tri2 + 10, 5, 4 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 11, 13, 2, // tri1 + 12, 14, 0, // tri2 + 12, 0, 13 // tri3 + ), + gsSPNTriangles_5b(15, 16, 11, // tri0 + 6, 17, 7, // tri1 + 2, 13, 0, // tri2 + 5, 18, 3 // tri3 + ), + gsSPNTriangles_5b(9, 19, 10, // tri0 + 11, 16, 12, // tri1 + 20, 21, 22, // tri2 + 20, 23, 24 // tri3 + ), + gsSPNTriangles_5b(24, 25, 20, // tri0 + 11, 26, 15, // tri1 + 25, 16, 15, // tri2 + 12, 27, 14 // tri3 + ), + gsSPNTriangles_5b(21, 7, 17, // tri0 + 21, 17, 22, // tri1 + 22, 23, 20, // tri2 + 10, 17, 6 // tri3 + ), + gsSPNTriangles_5b(24, 16, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&kgr_1_v[418], 13, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 4, 5, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 6, 7, 8, // tri0 + 9, 10, 6, // tri1 + 10, 9, 11 // tri2 + ), + gsSPNTriangles_5b(12, 8, 11, // tri0 + 11, 9, 12, // tri1 + 11, 8, 7, // tri2 + 8, 9, 6 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_kgr_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_kgr_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_kgr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_kgr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -350,0,-800 }, + /* joint 11 */ { tail1_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 399,0,0 }, + /* joint 13 */ { chest_kgr_model, 3, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-650,0 }, + /* joint 15 */ { Larm1_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_kgr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,650,0 }, + /* joint 18 */ { Rarm1_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 451,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1150,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,1100 }, + /* joint 23 */ { mouth_kgr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_kgr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_kgr_1 = { 26, 15, cKF_je_r_kgr_1_tbl }; diff --git a/src/data/npc/model/mdl/lon_1.c b/src/data/npc/model/mdl/lon_1.c new file mode 100644 index 00000000..9208d650 --- /dev/null +++ b/src/data/npc/model/mdl/lon_1.c @@ -0,0 +1,719 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx lon_1_v[] = { +#include "assets/npc/mdl/lon_1_v.inc" +}; + +static Gfx head_lon_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 178, 178, 178, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[0], 19, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 7, 8, 9, // tri1 + 7, 9, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(7, // tri count + 10, 11, 12, // tri0 + 13, 14, 11, // tri1 + 11, 10, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 12, // tri0 + 12, 18, 16, // tri1 + 11, 15, 13, // tri2 + 12, 17, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&lon_1_v[19], 32, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 6, 11, 7, // tri2 + 8, 12, 9 // tri3 + ), + gsSPNTriangles_5b(11, 2, 13, // tri0 + 14, 1, 12, // tri1 + 1, 15, 12, // tri2 + 11, 16, 2 // tri3 + ), + gsSPNTriangles_5b(15, 1, 4, // tri0 + 17, 18, 19, // tri1 + 20, 21, 22, // tri2 + 23, 24, 25 // tri3 + ), + gsSPNTriangles_5b(26, 18, 17, // tri0 + 25, 24, 20, // tri1 + 27, 21, 28, // tri2 + 27, 29, 30 // tri3 + ), + gsSPNTriangles_5b(31, 8, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&lon_1_v[51], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 7, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 8, 2, 1 // tri3 + ), + gsSPNTriangles_5b(0, 2, 8, // tri0 + 8, 1, 15, // tri1 + 16, 5, 15, // tri2 + 17, 0, 8 // tri3 + ), + gsSPNTriangles_5b(17, 7, 18, // tri0 + 19, 20, 21, // tri1 + 21, 13, 19, // tri2 + 12, 14, 22 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 25, 9, 26, // tri1 + 27, 26, 28, // tri2 + 29, 30, 31 // tri3 + ), + gsSPVertex(&lon_1_v[83], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 3, 10, 11, // tri1 + 12, 2, 11, // tri2 + 6, 13, 4 // tri3 + ), + gsSPNTriangles_5b(9, 8, 2, // tri0 + 14, 9, 15, // tri1 + 16, 17, 18, // tri2 + 8, 7, 0 // tri3 + ), + gsSPNTriangles_5b(0, 2, 8, // tri0 + 2, 3, 11, // tri1 + 19, 20, 21, // tri2 + 21, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 21, 23, // tri0 + 21, 9, 25, // tri1 + 19, 21, 12, // tri2 + 24, 15, 9 // tri3 + ), + gsSPNTriangles_5b(15, 26, 16, // tri0 + 16, 14, 15, // tri1 + 9, 21, 24, // tri2 + 2, 12, 25 // tri3 + ), + gsSPNTriangles_5b(25, 12, 21, // tri0 + 2, 25, 9, // tri1 + 16, 27, 28, // tri2 + 28, 7, 16 // tri3 + ), + gsSPNTriangles_5b(14, 16, 7, // tri0 + 10, 29, 6, // tri1 + 4, 19, 12, // tri2 + 10, 5, 12 // tri3 + ), + gsSPVertex(&lon_1_v[113], 28, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(30, // tri count + 3, 4, 5, // tri0 + 6, 7, 8, // tri1 + 9, 10, 3 // tri2 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 7, 12, 9, // tri1 + 14, 15, 11, // tri2 + 3, 7, 9 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 12, 6, 18, // tri1 + 19, 18, 6, // tri2 + 3, 10, 4 // tri3 + ), + gsSPNTriangles_5b(19, 6, 20, // tri0 + 21, 3, 22, // tri1 + 17, 15, 14, // tri2 + 23, 14, 24 // tri3 + ), + gsSPNTriangles_5b(3, 5, 22, // tri0 + 7, 3, 21, // tri1 + 25, 13, 18, // tri2 + 17, 26, 15 // tri3 + ), + gsSPNTriangles_5b(24, 14, 13, // tri0 + 10, 27, 4, // tri1 + 12, 7, 6, // tri2 + 18, 13, 12 // tri3 + ), + gsSPNTriangles_5b(11, 9, 12, // tri0 + 14, 23, 16, // tri1 + 8, 7, 21, // tri2 + 24, 13, 25 // tri3 + ), + gsSPNTriangles_5b(25, 18, 19, // tri0 + 20, 6, 8, // tri1 + 11, 13, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&lon_1_v[141], 24, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 9, 11, // tri1 + 12, 11, 13, // tri2 + 6, 9, 14 // tri3 + ), + gsSPNTriangles_5b(15, 10, 6, // tri0 + 0, 2, 16, // tri1 + 8, 3, 5, // tri2 + 17, 12, 18 // tri3 + ), + gsSPNTriangles_5b(13, 19, 12, // tri0 + 16, 20, 18, // tri1 + 5, 6, 8, // tri2 + 18, 20, 17 // tri3 + ), + gsSPNTriangles_5b(14, 7, 6, // tri0 + 16, 18, 0, // tri1 + 10, 15, 21, // tri2 + 19, 13, 22 // tri3 + ), + gsSPNTriangles_5b(22, 13, 11, // tri0 + 22, 11, 21, // tri1 + 9, 6, 10, // tri2 + 18, 19, 23 // tri3 + ), + gsSPNTriangles_5b(22, 23, 19, // tri0 + 21, 11, 10, // tri1 + 19, 18, 12, // tri2 + 23, 0, 18 // tri3 + ), + gsSPNTriangles_5b(6, 5, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&lon_1_v[165], 27, 0), + gsSPNTrianglesInit_5b(9, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 0, 7, // tri0 + 2, 7, 0, // tri1 + 7, 6, 8, // tri2 + 8, 6, 9 // tri3 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 6, 7, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 12, // tri0 + 13, 10, 12, // tri1 + 12, 14, 15 // tri2 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 14, 16, 15, // tri1 + 14, 17, 16, // tri2 + 13, 11, 10 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 22, 23, 24 // tri2 + ), + gsSPNTriangles_5b(25, 19, 18, // tri0 + 18, 24, 25, // tri1 + 24, 26, 22, // tri2 + 23, 25, 24 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_lon_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[228], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[233], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_lon_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[249], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[253], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_lon_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[192], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[197], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_lon_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[213], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[217], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_lon_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[264], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[271], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&lon_1_v[291], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_lon_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[314], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 0, 4 // tri2 + ), + gsSPNTriangles_5b(4, 3, 1, // tri0 + 0, 2, 6, // tri1 + 7, 5, 6, // tri2 + 6, 2, 7 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_lon_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[300], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[304], 10, 4), + gsSPNTrianglesInit_5b(4, // tri count + 2, 1, 4, // tri0 + 3, 2, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 8, 9, 10, // tri0 + 11, 9, 12, // tri1 + 12, 9, 8 // tri2 + ), + gsSPNTriangles_5b(10, 9, 11, // tri0 + 10, 11, 13, // tri1 + 13, 11, 12, // tri2 + 13, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_lon_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[372], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[377], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_lon_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[394], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[398], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_lon_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[322], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[327], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_lon_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[344], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lon_1_v[350], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_lon_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lon_1_v[420], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_lon_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_lon_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_lon_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_lon_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_lon_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_lon_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1400,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_lon_1 = { 26, 13, cKF_je_r_lon_1_tbl }; diff --git a/src/data/npc/model/mdl/lrc_1.c b/src/data/npc/model/mdl/lrc_1.c new file mode 100644 index 00000000..0d254a5a --- /dev/null +++ b/src/data/npc/model/mdl/lrc_1.c @@ -0,0 +1,660 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx lrc_1_v[] = { +#include "assets/npc/mdl/lrc_1_v.inc" +}; + +static Gfx head_lrc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&lrc_1_v[42], 31, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 8, 10, 6 // tri2 + ), + gsSPNTriangles_5b(6, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 15, 12 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 19, 22, 17 // tri2 + ), + gsSPNTriangles_5b(19, 21, 23, // tri0 + 23, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 28, 29, 26 // tri2 + ), + gsSPNTriangles_5b(26, 29, 24, // tri0 + 25, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[73], 24, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 7, 4, 5, // tri1 + 4, 3, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(17, // tri count + 8, 9, 10, // tri0 + 11, 10, 12, // tri1 + 10, 11, 8 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 17, // tri1 + 14, 17, 18, // tri2 + 11, 19, 20 // tri3 + ), + gsSPNTriangles_5b(20, 8, 11, // tri0 + 17, 21, 18, // tri1 + 19, 11, 22, // tri2 + 15, 14, 18 // tri3 + ), + gsSPNTriangles_5b(15, 18, 12, // tri0 + 22, 18, 21, // tri1 + 12, 22, 11, // tri2 + 12, 10, 15 // tri3 + ), + gsSPNTriangles_5b(18, 22, 12, // tri0 + 20, 23, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_lrc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 3, // tri0 + 4, 3, 11, // tri1 + 2, 0, 12, // tri2 + 1, 2, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_lrc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[142], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[148], 24, 6), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 6, // tri0 + 0, 2, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 3, 1, 14, // tri2 + 1, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 22, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 23, 22, // tri1 + 19, 25, 22, // tri2 + 22, 21, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_lrc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[172], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[176], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 0, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 2, 3, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_lrc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[97], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[103], 24, 6), + gsSPNTrianglesInit_5b(8, // tri count + 5, 2, 6, // tri0 + 2, 0, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 1, 3, 14, // tri2 + 0, 1, 15 // tri3 + ), + gsSPNTriangles_5b(4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 20, 19, 22 // tri2 + ), + gsSPNTriangles_5b(23, 22, 18, // tri0 + 22, 23, 24, // tri1 + 22, 25, 20, // tri2 + 19, 18, 22 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 26, 27, 28, // tri0 + 26, 29, 27, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_lrc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[127], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[131], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 1, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 3, 2, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_lrc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[187], 25, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 14, 2, 9 // tri3 + ), + gsSPNTriangles_5b(13, 8, 0, // tri0 + 11, 15, 12, // tri1 + 16, 0, 17, // tri2 + 16, 1, 0 // tri3 + ), + gsSPNTriangles_5b(8, 17, 0, // tri0 + 13, 14, 11, // tri1 + 0, 14, 13, // tri2 + 13, 5, 8 // tri3 + ), + gsSPNTriangles_5b(5, 12, 6, // tri0 + 5, 13, 12, // tri1 + 15, 11, 18, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(2, 14, 0, // tri0 + 11, 14, 9, // tri1 + 19, 20, 2, // tri2 + 19, 2, 1 // tri3 + ), + gsSPNTriangles_5b(1, 16, 21, // tri0 + 10, 9, 22, // tri1 + 10, 22, 23, // tri2 + 24, 18, 10 // tri3 + ), + gsSPNTriangles_5b(20, 9, 2, // tri0 + 9, 20, 22, // tri1 + 1, 21, 19, // tri2 + 23, 24, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&lrc_1_v[212], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 8, 1, 9, // tri1 + 10, 2, 11, // tri2 + 7, 2, 10 // tri3 + ), + gsSPNTriangles_5b(2, 7, 3, // tri0 + 2, 1, 11, // tri1 + 4, 3, 5, // tri2 + 12, 9, 1 // tri3 + ), + gsSPNTriangles_5b(0, 2, 3, // tri0 + 12, 1, 0, // tri1 + 8, 11, 1, // tri2 + 11, 8, 13 // tri3 + ), + gsSPNTriangles_5b(14, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_lrc_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[252], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[256], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_lrc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[227], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[231], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_lrc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[292], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[297], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_lrc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[312], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[267], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&lrc_1_v[271], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_lrc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[285], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_lrc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&lrc_1_v[321], 19, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 5, 8, 6, // tri1 + 6, 8, 9, // tri2 + 7, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 7, 5, // tri1 + 1, 5, 4, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 6, 9, // tri0 + 4, 6, 10, // tri1 + 2, 4, 13, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 17, 12, 11, // tri1 + 15, 16, 17, // tri2 + 18, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 4, // tri0 + 18, 13, 10, // tri1 + 16, 14, 18, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 17, 16, 12, // tri1 + 3, 2, 14, // tri2 + 14, 15, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_lrc_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_lrc_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_lrc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_lrc_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-700,0 }, + /* joint 15 */ { Larm1_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_lrc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,700,0 }, + /* joint 18 */ { Rarm1_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 900,0,1900 }, + /* joint 23 */ { mouth_lrc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_lrc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_lrc_1 = { 26, 14, cKF_je_r_lrc_1_tbl }; diff --git a/src/data/npc/model/mdl/mka_1.c b/src/data/npc/model/mdl/mka_1.c new file mode 100644 index 00000000..84c48934 --- /dev/null +++ b/src/data/npc/model/mdl/mka_1.c @@ -0,0 +1,587 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mka_1_v[] = { +#include "assets/npc/mdl/mka_1_v.inc" +}; + +static Gfx head_mka_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[6], 23, 6), + gsSPNTrianglesInit_5b(9, // tri count + 3, 1, 6, // tri0 + 4, 8, 7, // tri1 + 5, 4, 9 // tri2 + ), + gsSPNTriangles_5b(5, 10, 0, // tri0 + 0, 12, 11, // tri1 + 5, 13, 14, // tri2 + 4, 2, 15 // tri3 + ), + gsSPNTriangles_5b(1, 0, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 25, 26, 22 // tri2 + ), + gsSPNTriangles_5b(27, 28, 19, // tri0 + 21, 27, 19, // tri1 + 22, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mka_1_v[29], 22, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 1, 4, // tri1 + 4, 7, 8, // tri2 + 9, 2, 10 // tri3 + ), + gsSPNTriangles_5b(11, 5, 3, // tri0 + 1, 10, 2, // tri1 + 2, 12, 0, // tri2 + 12, 2, 9 // tri3 + ), + gsSPNTriangles_5b(0, 13, 14, // tri0 + 11, 3, 15, // tri1 + 12, 16, 13, // tri2 + 14, 15, 0 // tri3 + ), + gsSPNTriangles_5b(17, 11, 18, // tri0 + 19, 15, 14, // tri1 + 18, 15, 19, // tri2 + 18, 11, 15 // tri3 + ), + gsSPNTriangles_5b(20, 11, 17, // tri0 + 5, 21, 6, // tri1 + 20, 5, 11, // tri2 + 20, 21, 5 // tri3 + ), + gsSPNTriangles_5b(1, 8, 10, // tri0 + 12, 13, 0, // tri1 + 3, 5, 4, // tri2 + 9, 16, 12 // tri3 + ), + gsSPNTriangles_5b(3, 4, 1, // tri0 + 15, 3, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 32, 13, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mka_1_v[51], 26, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 9, 10, 5, // tri1 + 11, 3, 12, // tri2 + 3, 13, 4 // tri3 + ), + gsSPNTriangles_5b(11, 13, 3, // tri0 + 10, 0, 5, // tri1 + 0, 14, 6, // tri2 + 15, 16, 17 // tri3 + ), + gsSPNTriangles_5b(17, 16, 1, // tri0 + 16, 15, 12, // tri1 + 16, 12, 8, // tri2 + 10, 14, 0 // tri3 + ), + gsSPNTriangles_5b(16, 2, 1, // tri0 + 16, 8, 2, // tri1 + 1, 7, 17, // tri2 + 8, 12, 3 // tri3 + ), + gsSPNTriangles_5b(7, 18, 17, // tri0 + 7, 19, 18, // tri1 + 20, 11, 12, // tri2 + 6, 1, 0 // tri3 + ), + gsSPNTriangles_5b(2, 8, 0, // tri0 + 17, 18, 21, // tri1 + 5, 0, 8, // tri2 + 12, 15, 20 // tri3 + ), + gsSPNTriangles_5b(22, 23, 6, // tri0 + 5, 4, 24, // tri1 + 7, 6, 23, // tri2 + 6, 14, 25 // tri3 + ), + gsSPNTriangles_5b(7, 23, 19, // tri0 + 21, 15, 17, // tri1 + 24, 9, 5, // tri2 + 6, 25, 22 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mka_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[113], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[118], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mka_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[134], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[138], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_mka_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[77], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[82], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_mka_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[98], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[102], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_mka_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[149], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[156], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 7, 3, // tri0 + 1, 2, 8, // tri1 + 4, 6, 9 // tri2 + ), + gsSPNTriangles_5b(6, 5, 10, // tri0 + 3, 11, 12, // tri1 + 2, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsSPNTriangles_5b(3, 18, 17, // tri0 + 4, 19, 20, // tri1 + 4, 21, 2, // tri2 + 5, 22, 23 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 5, 3, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_mka_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[200], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_mka_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[176], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[180], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 + ), + gsSPNTriangles_5b(17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_mka_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[261], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[266], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 6, 5, // tri0 + 0, 8, 7, // tri1 + 3, 2, 9 // tri2 + ), + gsSPNTriangles_5b(0, 4, 10, // tri0 + 0, 11, 12, // tri1 + 1, 0, 13, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 21 // tri2 + ), + gsSPNTriangles_5b(21, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_mka_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[286], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[292], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 2, 7, 6, // tri0 + 0, 1, 8, // tri1 + 0, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 5, 11, // tri0 + 4, 2, 12, // tri1 + 1, 13, 14, // tri2 + 0, 15, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 18, 17, // tri0 + 23, 17, 21, // tri1 + 21, 20, 23, // tri2 + 22, 24, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_mka_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[208], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[213], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 0, 5, // tri0 + 2, 7, 6, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 + ), + gsSPNTriangles_5b(0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 20, 22, 23 // tri2 + ), + gsSPNTriangles_5b(18, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_mka_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[233], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mka_1_v[239], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 6, // tri0 + 0, 7, 8, // tri1 + 1, 10, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 11, // tri0 + 3, 12, 13, // tri1 + 0, 14, 1, // tri2 + 5, 1, 15 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 16, 22, 17 // tri2 + ), + gsSPNTriangles_5b(21, 23, 19, // tri0 + 24, 16, 18, // tri1 + 18, 20, 24, // tri2 + 20, 19, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_mka_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mka_1_v[314], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 8, 0, 9, // tri1 + 10, 5, 7, // tri2 + 6, 11, 12 // tri3 + ), + gsSPNTriangles_5b(9, 0, 13, // tri0 + 12, 3, 6, // tri1 + 12, 11, 8, // tri2 + 8, 9, 12 // tri3 + ), + gsSPNTriangles_5b(0, 2, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mka_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_mka_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_mka_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_mka_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mka_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mka_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mka_1 = { 26, 13, cKF_je_r_mka_1_tbl }; diff --git a/src/data/npc/model/mdl/mnk_1.c b/src/data/npc/model/mdl/mnk_1.c new file mode 100644 index 00000000..1abb4e7f --- /dev/null +++ b/src/data/npc/model/mdl/mnk_1.c @@ -0,0 +1,732 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mnk_1_v[] = { +#include "assets/npc/mdl/mnk_1_v.inc" +}; + +static Gfx head_mnk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[0], 15, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 1, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 3, // tri0 + 8, 0, 9, // tri1 + 9, 10, 8, // tri2 + 3, 0, 6 // tri3 + ), + gsSPNTriangles_5b(8, 7, 6, // tri0 + 7, 11, 12, // tri1 + 3, 1, 0, // tri2 + 12, 11, 13 // tri3 + ), + gsSPNTriangles_5b(13, 11, 8, // tri0 + 3, 7, 4, // tri1 + 2, 1, 5, // tri2 + 12, 4, 7 // tri3 + ), + gsSPNTriangles_5b(0, 14, 9, // tri0 + 8, 11, 7, // tri1 + 6, 0, 8, // tri2 + 8, 10, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 250, 255), + gsSPVertex(&mnk_1_v[15], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 0, 9, // tri0 + 10, 7, 11, // tri1 + 12, 1, 13, // tri2 + 14, 15, 8 // tri3 + ), + gsSPNTriangles_5b(0, 16, 13, // tri0 + 2, 17, 0, // tri1 + 15, 14, 18, // tri2 + 8, 10, 19 // tri3 + ), + gsSPNTriangles_5b(8, 7, 10, // tri0 + 20, 16, 5, // tri1 + 13, 1, 0, // tri2 + 15, 21, 8 // tri3 + ), + gsSPNTriangles_5b(13, 16, 20, // tri0 + 3, 21, 15, // tri1 + 6, 5, 16, // tri2 + 6, 8, 21 // tri3 + ), + gsSPNTriangles_5b(10, 22, 23, // tri0 + 24, 25, 17, // tri1 + 16, 0, 6, // tri2 + 21, 5, 6 // tri3 + ), + gsSPNTriangles_5b(5, 21, 3, // tri0 + 5, 4, 20, // tri1 + 17, 9, 0, // tri2 + 26, 17, 25 // tri3 + ), + gsSPNTriangles_5b(22, 10, 26, // tri0 + 25, 22, 26, // tri1 + 11, 9, 17, // tri2 + 6, 9, 27 // tri3 + ), + gsSPNTriangles_5b(11, 7, 27, // tri0 + 11, 26, 10, // tri1 + 17, 26, 11, // tri2 + 27, 9, 11 // tri3 + ), + gsSPNTriangles_5b(27, 7, 6, // tri0 + 24, 17, 2, // tri1 + 19, 10, 23, // tri2 + 8, 19, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[43], 25, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 1, 0 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 4, 3, 6, // tri1 + 2, 8, 0, // tri2 + 4, 8, 2 // tri3 + ), + gsSPNTriangles_5b(0, 9, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(15, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 16, 13, 15 // tri2 + ), + gsSPNTriangles_5b(12, 16, 17, // tri0 + 14, 13, 18, // tri1 + 17, 19, 12, // tri2 + 15, 17, 16 // tri3 + ), + gsSPNTriangles_5b(18, 20, 14, // tri0 + 21, 18, 12, // tri1 + 12, 19, 10, // tri2 + 18, 13, 16 // tri3 + ), + gsSPNTriangles_5b(18, 16, 12, // tri0 + 22, 20, 18, // tri1 + 23, 24, 22, // tri2 + 18, 23, 22 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mnk_1_v[68], 26, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 3, // tri0 + 2, 4, 11, // tri1 + 5, 9, 3, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 14, 16, 15, // tri1 + 8, 17, 6, // tri2 + 13, 18, 14 // tri3 + ), + gsSPNTriangles_5b(6, 19, 7, // tri0 + 2, 11, 20, // tri1 + 20, 0, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 21, 22, 23, // tri0 + 23, 24, 25, // tri1 + 25, 21, 23 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mnk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[134], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[138], 22, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 3, 1, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 16, 17, 18, // tri0 + 19, 20, 16, // tri1 + 20, 21, 16 // tri2 + ), + gsSPNTriangles_5b(17, 16, 21, // tri0 + 16, 18, 19, // tri1 + 21, 19, 18, // tri2 + 21, 18, 17 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mnk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[160], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[163], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_mnk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[94], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[98], 22, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 3, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 16, 17, 18, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 20, 16, 18, // tri1 + 17, 16, 20, // tri2 + 17, 20, 21 // tri3 + ), + gsSPNTriangles_5b(22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_mnk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[120], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[123], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_mnk_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[174], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[183], 21, 9), + gsSPNTrianglesInit_5b(13, // tri count + 2, 1, 9, // tri0 + 1, 0, 10, // tri1 + 1, 12, 11 // tri2 + ), + gsSPNTriangles_5b(0, 13, 14, // tri0 + 0, 6, 15, // tri1 + 0, 16, 17, // tri2 + 7, 19, 18 // tri3 + ), + gsSPNTriangles_5b(4, 20, 21, // tri0 + 3, 22, 23, // tri1 + 4, 3, 24, // tri2 + 2, 25, 3 // tri3 + ), + gsSPNTriangles_5b(8, 27, 26, // tri0 + 4, 28, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mnk_1_v[204], 22, 9), + gsSPNTrianglesInit_5b(3, // tri count + 5, 9, 7, // tri0 + 8, 10, 6, // tri1 + 5, 4, 11 // tri2 + ), + gsSPNTrianglesInit_5b(16, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(18, 20, 17, // tri0 + 21, 22, 23, // tri1 + 19, 18, 24, // tri2 + 17, 16, 24 // tri3 + ), + gsSPNTriangles_5b(25, 26, 14, // tri0 + 19, 27, 12, // tri1 + 21, 28, 15, // tri2 + 28, 21, 29 // tri3 + ), + gsSPNTriangles_5b(30, 14, 13, // tri0 + 30, 25, 14, // tri1 + 21, 23, 29, // tri2 + 24, 18, 17 // tri3 + ), + gsSPNTriangles_5b(24, 27, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_mnk_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[258], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[261], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_mnk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[226], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[229], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 2, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mnk_1_v[238], 20, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 6, 7, // tri1 + 8, 9, 10, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 11, 12, 13, // tri1 + 13, 12, 14, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 16, 4, // tri0 + 17, 13, 15, // tri1 + 17, 15, 18, // tri2 + 4, 16, 1 // tri3 + ), + gsSPNTriangles_5b(4, 1, 5, // tri0 + 5, 1, 0, // tri1 + 5, 0, 6, // tri2 + 6, 0, 19 // tri3 + ), + gsSPNTriangles_5b(6, 19, 10, // tri0 + 10, 19, 17, // tri1 + 10, 17, 12, // tri2 + 12, 17, 18 // tri3 + ), + gsSPNTriangles_5b(12, 18, 14, // tri0 + 0, 8, 11, // tri1 + 0, 11, 19, // tri2 + 2, 8, 0 // tri3 + ), + gsSPNTriangles_5b(19, 11, 13, // tri0 + 19, 13, 17, // tri1 + 16, 3, 2, // tri2 + 16, 2, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_mnk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[317], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[320], 21, 3), + gsSPNTrianglesInit_5b(9, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 0, 2, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 1, 10, // tri1 + 2, 11, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 1, 0, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 20, 22, 21 // tri2 + ), + gsSPNTriangles_5b(18, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_mnk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[341], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[344], 14, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 2, 0, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 8, // tri0 + 1, 9, 10, // tri1 + 1, 2, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_mnk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[358], 6, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 4, 1, // tri0 + 4, 5, 3, // tri1 + 1, 0, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_mnk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[270], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[273], 21, 3), + gsSPNTrianglesInit_5b(9, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 0, 7 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 1, 9, 10, // tri1 + 2, 11, 12, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 0, 1, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 20, 21, 18, // tri1 + 21, 22, 18 // tri2 + ), + gsSPNTriangles_5b(19, 23, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_mnk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[294], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mnk_1_v[297], 14, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 1, 5, 6, // tri1 + 0, 2, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 1, 9, 10, // tri1 + 2, 1, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_mnk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[311], 6, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(2, 4, 5, // tri0 + 0, 5, 4, // tri1 + 5, 3, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_mnk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mnk_1_v[364], 25, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 6, 5, 1, // tri1 + 3, 7, 8, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(7, 3, 4, // tri0 + 10, 11, 12, // tri1 + 8, 9, 11, // tri2 + 10, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 9, 12, // tri0 + 10, 13, 14, // tri1 + 1, 0, 15, // tri2 + 1, 15, 16 // tri3 + ), + gsSPNTriangles_5b(15, 0, 17, // tri0 + 16, 15, 10, // tri1 + 10, 15, 17, // tri2 + 8, 17, 3 // tri3 + ), + gsSPNTriangles_5b(0, 3, 17, // tri0 + 10, 17, 11, // tri1 + 8, 11, 17, // tri2 + 1, 16, 6 // tri3 + ), + gsSPNTriangles_5b(14, 16, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 20, 24, 18 // tri2 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mnk_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_mnk_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-350,0 }, + /* joint 3 */ { Lfoot1_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_mnk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,350,0 }, + /* joint 7 */ { Rfoot1_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_mnk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { tail1_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_mnk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_mnk_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,-550,0 }, + /* joint 15 */ { Larm1_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mnk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,550,0 }, + /* joint 18 */ { Rarm1_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 549,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 551,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1225,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1150 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mnk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1410,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mnk_1 = { 26, 15, cKF_je_r_mnk_1_tbl }; diff --git a/src/data/npc/model/mdl/mob_1.c b/src/data/npc/model/mdl/mob_1.c new file mode 100644 index 00000000..35ad5777 --- /dev/null +++ b/src/data/npc/model/mdl/mob_1.c @@ -0,0 +1,541 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mob_1_v[] = { +#include "assets/npc/mdl/mob_1_v.inc" +}; + +static Gfx head_mob_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[32], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[42], 15, 10), + gsSPNTrianglesInit_5b(10, // tri count + 0, 10, 11, // tri0 + 1, 12, 13, // tri1 + 7, 0, 14 // tri2 + ), + gsSPNTriangles_5b(0, 1, 15, // tri0 + 3, 16, 17, // tri1 + 5, 18, 19, // tri2 + 4, 3, 20 // tri3 + ), + gsSPNTriangles_5b(0, 21, 22, // tri0 + 1, 4, 23, // tri1 + 5, 7, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[57], 20, 10), + gsSPNTrianglesInit_5b(8, // tri count + 8, 11, 10, // tri0 + 8, 13, 12, // tri1 + 9, 15, 14 // tri2 + ), + gsSPNTriangles_5b(8, 6, 16, // tri0 + 2, 9, 17, // tri1 + 9, 8, 18, // tri2 + 9, 19, 20 // tri3 + ), + gsSPNTriangles_5b(8, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 27, 26, 25 // tri2 + ), + gsSPNTriangles_5b(28, 27, 25, // tri0 + 29, 28, 25, // tri1 + 24, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mob_1_v[77], 31, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 12, 14, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 25, 27, 26 // tri2 + ), + gsSPNTriangles_5b(29, 24, 26, // tri0 + 30, 29, 26, // tri1 + 28, 30, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mob_1_v[108], 31, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 6, // tri1 + 9, 11, 7, // tri2 + 8, 4, 3 // tri3 + ), + gsSPNTriangles_5b(2, 10, 0, // tri0 + 6, 5, 10, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 16, 15, 12 // tri2 + ), + gsSPNTriangles_5b(18, 14, 13, // tri0 + 12, 19, 16, // tri1 + 14, 19, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 20, 21, 22, // tri0 + 23, 22, 24, // tri1 + 23, 25, 26 // tri2 + ), + gsSPNTriangles_5b(23, 26, 20, // tri0 + 20, 22, 23, // tri1 + 27, 28, 26, // tri2 + 20, 26, 28 // tri3 + ), + gsSPNTriangles_5b(26, 25, 29, // tri0 + 25, 24, 30, // tri1 + 28, 21, 20, // tri2 + 25, 30, 29 // tri3 + ), + gsSPNTriangles_5b(24, 25, 23, // tri0 + 29, 27, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_mob_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[5], 21, 5), + gsSPNTrianglesInit_5b(10, // tri count + 2, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 12, 13, // tri1 + 1, 4, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(2, 16, 17, // tri0 + 2, 1, 18, // tri1 + 0, 2, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 23, 24, 25 // tri2 + ), + gsSPNTriangles_5b(23, 25, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mob_1_v[26], 6, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx hand_mob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[175], 25, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 0, 10, 1, // tri2 + 11, 8, 4 // tri3 + ), + gsSPNTriangles_5b(11, 4, 3, // tri0 + 12, 13, 14, // tri1 + 9, 13, 12, // tri2 + 9, 12, 7 // tri3 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 6, 5, 8, // tri1 + 6, 8, 11, // tri2 + 11, 10, 2 // tri3 + ), + gsSPNTriangles_5b(11, 2, 6, // tri0 + 3, 1, 10, // tri1 + 3, 10, 11, // tri2 + 6, 2, 1 // tri3 + ), + gsSPNTriangles_5b(6, 1, 3, // tri0 + 13, 15, 14, // tri1 + 9, 5, 4, // tri2 + 9, 4, 16 // tri3 + ), + gsSPNTriangles_5b(16, 15, 13, // tri0 + 16, 13, 9, // tri1 + 15, 12, 14, // tri2 + 16, 4, 8 // tri3 + ), + gsSPNTriangles_5b(16, 8, 7, // tri0 + 7, 12, 15, // tri1 + 7, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 18, 17, 22, // tri1 + 18, 22, 20, // tri2 + 19, 23, 17 // tri3 + ), + gsSPNTriangles_5b(17, 23, 24, // tri0 + 17, 24, 22, // tri1 + 24, 21, 22, // tri2 + 23, 19, 21 // tri3 + ), + gsSPNTriangles_5b(23, 21, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mob_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[200], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[205], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mob_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[221], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[225], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_mob_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[139], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[144], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_mob_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[160], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[164], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_mob_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[236], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mob_1_v[245], 22, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 3, // tri0 + 1, 10, 8, // tri1 + 4, 11, 5 // tri2 + ), + gsSPNTriangles_5b(6, 12, 2, // tri0 + 8, 13, 14, // tri1 + 8, 15, 7, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b(1, 18, 19, // tri0 + 3, 20, 21, // tri1 + 4, 22, 23, // tri2 + 0, 24, 25 // tri3 + ), + gsSPNTriangles_5b(0, 5, 26, // tri0 + 2, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mob_1_v[267], 6, 9), + gsSPNTrianglesInit_5b(4, // tri count + 3, 9, 10, // tri0 + 3, 11, 1, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(4, 2, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mob_1_v[273], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 7, 10, 15 // tri3 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 16, 1, 17, // tri1 + 15, 8, 7, // tri2 + 9, 15, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 14, // tri0 + 11, 14, 9, // tri1 + 13, 17, 14, // tri2 + 1, 16, 2 // tri3 + ), + gsSPNTriangles_5b(17, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_mob_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mob_1_v[291], 24, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(0, 7, 6, // tri0 + 5, 4, 8, // tri1 + 9, 4, 10, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(6, 12, 1, // tri0 + 13, 3, 5, // tri1 + 13, 2, 14, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 1, 12, // tri0 + 17, 18, 6, // tri1 + 17, 6, 19, // tri2 + 2, 1, 16 // tri3 + ), + gsSPNTriangles_5b(2, 16, 14, // tri0 + 6, 18, 12, // tri1 + 3, 20, 4, // tri2 + 21, 17, 19 // tri3 + ), + gsSPNTriangles_5b(21, 19, 22, // tri0 + 15, 23, 3, // tri1 + 15, 3, 13, // tri2 + 20, 3, 23 // tri3 + ), + gsSPNTriangles_5b(19, 6, 7, // tri0 + 20, 10, 4, // tri1 + 8, 4, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mob_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 1 */ { base_mob_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_mob_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-1050,0 }, + /* joint 15 */ { Larm1_mob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,1050,0 }, + /* joint 18 */ { Rarm1_mob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { hand_mob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1399,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,900 }, + /* joint 23 */ { mouth_mob_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mob_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mob_1 = { 26, 9, cKF_je_r_mob_1_tbl }; diff --git a/src/data/npc/model/mdl/mol_1.c b/src/data/npc/model/mdl/mol_1.c new file mode 100644 index 00000000..c90cb022 --- /dev/null +++ b/src/data/npc/model/mdl/mol_1.c @@ -0,0 +1,556 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mol_1_v[] = { +#include "assets/npc/mdl/mol_1_v.inc" +}; + +static Gfx head_mol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[34], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[44], 15, 10), + gsSPNTrianglesInit_5b(10, // tri count + 1, 4, 10, // tri0 + 5, 7, 11, // tri1 + 0, 12, 13 // tri2 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 7, 0, 16, // tri1 + 0, 1, 17, // tri2 + 3, 18, 19 // tri3 + ), + gsSPNTriangles_5b(5, 20, 21, // tri0 + 4, 3, 22, // tri1 + 0, 23, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mol_1_v[59], 20, 10), + gsSPNTrianglesInit_5b(8, // tri count + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 15, 14 // tri2 + ), + gsSPNTriangles_5b(8, 17, 16, // tri0 + 9, 19, 18, // tri1 + 8, 6, 20, // tri2 + 2, 9, 21 // tri3 + ), + gsSPNTriangles_5b(9, 8, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 27, 26, 25 // tri2 + ), + gsSPNTriangles_5b(28, 27, 25, // tri0 + 29, 28, 25, // tri1 + 24, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mol_1_v[79], 31, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 12, 14, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 25, 27, 26 // tri2 + ), + gsSPNTriangles_5b(29, 24, 26, // tri0 + 30, 29, 26, // tri1 + 28, 30, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mol_1_v[110], 25, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 6, // tri1 + 9, 11, 7, // tri2 + 8, 4, 3 // tri3 + ), + gsSPNTriangles_5b(2, 10, 0, // tri0 + 6, 5, 10, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 14, 18, 12 // tri2 + ), + gsSPNTriangles_5b(14, 13, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mol_1_v[135], 11, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 8, 0, // tri0 + 2, 1, 5, // tri1 + 2, 5, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(4, 9, 5, // tri0 + 6, 5, 9, // tri1 + 5, 1, 3, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 1, 10, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_mol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[5], 23, 5), + gsSPNTrianglesInit_5b(10, // tri count + 2, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 12, 13, // tri1 + 1, 4, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(2, 16, 17, // tri0 + 2, 1, 18, // tri1 + 0, 2, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 24, 26, 27, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mol_1_v[28], 6, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx hand_mol_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[182], 25, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 0, 10, 1, // tri2 + 11, 8, 4 // tri3 + ), + gsSPNTriangles_5b(11, 4, 3, // tri0 + 12, 13, 14, // tri1 + 9, 13, 12, // tri2 + 9, 12, 7 // tri3 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 6, 5, 8, // tri1 + 6, 8, 11, // tri2 + 11, 10, 2 // tri3 + ), + gsSPNTriangles_5b(11, 2, 6, // tri0 + 3, 1, 10, // tri1 + 3, 10, 11, // tri2 + 6, 2, 1 // tri3 + ), + gsSPNTriangles_5b(6, 1, 3, // tri0 + 13, 15, 14, // tri1 + 9, 5, 4, // tri2 + 9, 4, 16 // tri3 + ), + gsSPNTriangles_5b(16, 15, 13, // tri0 + 16, 13, 9, // tri1 + 15, 12, 14, // tri2 + 16, 4, 8 // tri3 + ), + gsSPNTriangles_5b(16, 8, 7, // tri0 + 7, 12, 15, // tri1 + 7, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 18, 17, 22, // tri1 + 18, 22, 20, // tri2 + 19, 23, 17 // tri3 + ), + gsSPNTriangles_5b(17, 23, 24, // tri0 + 17, 24, 22, // tri1 + 24, 21, 22, // tri2 + 23, 19, 21 // tri3 + ), + gsSPNTriangles_5b(23, 21, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[207], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[212], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[228], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[232], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_mol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[146], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[151], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_mol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[167], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[171], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_mol_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[243], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mol_1_v[252], 22, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 3, // tri0 + 1, 10, 8, // tri1 + 4, 11, 5 // tri2 + ), + gsSPNTriangles_5b(6, 12, 2, // tri0 + 8, 13, 14, // tri1 + 8, 15, 7, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b(1, 18, 19, // tri0 + 3, 20, 21, // tri1 + 4, 22, 23, // tri2 + 0, 24, 25 // tri3 + ), + gsSPNTriangles_5b(0, 5, 26, // tri0 + 2, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mol_1_v[274], 6, 9), + gsSPNTrianglesInit_5b(4, // tri count + 3, 9, 10, // tri0 + 3, 11, 1, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(4, 2, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mol_1_v[280], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 7, 10, 15 // tri3 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 16, 1, 17, // tri1 + 15, 8, 7, // tri2 + 9, 15, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 14, // tri0 + 11, 14, 9, // tri1 + 13, 17, 14, // tri2 + 1, 16, 2 // tri3 + ), + gsSPNTriangles_5b(17, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_mol_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mol_1_v[298], 24, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 13, 5 // tri3 + ), + gsSPNTriangles_5b(12, 5, 14, // tri0 + 8, 3, 1, // tri1 + 6, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 13, 15, 6, // tri1 + 13, 6, 5, // tri2 + 19, 18, 16 // tri3 + ), + gsSPNTriangles_5b(11, 17, 20, // tri0 + 11, 20, 10, // tri1 + 11, 8, 21, // tri2 + 6, 16, 18 // tri3 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 2, 4, 22, // tri1 + 21, 1, 0, // tri2 + 23, 7, 6 // tri3 + ), + gsSPNTriangles_5b(23, 6, 18, // tri0 + 8, 1, 21, // tri1 + 23, 18, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mol_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 1 */ { base_mol_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_mol_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-1500,0 }, + /* joint 15 */ { Larm1_mol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,1500,0 }, + /* joint 18 */ { Rarm1_mol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { hand_mol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1100,0,1100 }, + /* joint 23 */ { mouth_mol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mol_1 = { 26, 9, cKF_je_r_mol_1_tbl }; diff --git a/src/data/npc/model/mdl/mos_1.c b/src/data/npc/model/mdl/mos_1.c new file mode 100644 index 00000000..9959781e --- /dev/null +++ b/src/data/npc/model/mdl/mos_1.c @@ -0,0 +1,556 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mos_1_v[] = { +#include "assets/npc/mdl/mos_1_v.inc" +}; + +static Gfx head_mos_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[34], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[44], 15, 10), + gsSPNTrianglesInit_5b(10, // tri count + 1, 4, 10, // tri0 + 5, 7, 11, // tri1 + 0, 12, 13 // tri2 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 7, 0, 16, // tri1 + 0, 1, 17, // tri2 + 3, 18, 19 // tri3 + ), + gsSPNTriangles_5b(5, 20, 21, // tri0 + 4, 3, 22, // tri1 + 0, 23, 24, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mos_1_v[59], 20, 10), + gsSPNTrianglesInit_5b(8, // tri count + 9, 10, 11, // tri0 + 8, 12, 13, // tri1 + 8, 15, 14 // tri2 + ), + gsSPNTriangles_5b(8, 17, 16, // tri0 + 9, 19, 18, // tri1 + 8, 6, 20, // tri2 + 2, 9, 21 // tri3 + ), + gsSPNTriangles_5b(9, 8, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 27, 26, 25 // tri2 + ), + gsSPNTriangles_5b(28, 27, 25, // tri0 + 29, 28, 25, // tri1 + 24, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mos_1_v[79], 31, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 12, 14, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 24, 25, 26, // tri0 + 27, 28, 26, // tri1 + 25, 27, 26 // tri2 + ), + gsSPNTriangles_5b(29, 24, 26, // tri0 + 30, 29, 26, // tri1 + 28, 30, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mos_1_v[110], 25, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 2, 6, // tri1 + 9, 11, 7, // tri2 + 8, 4, 3 // tri3 + ), + gsSPNTriangles_5b(2, 10, 0, // tri0 + 6, 5, 10, // tri1 + 3, 9, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 14, 18, 12 // tri2 + ), + gsSPNTriangles_5b(14, 13, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mos_1_v[135], 11, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 8, 0, // tri0 + 2, 1, 5, // tri1 + 2, 5, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(4, 9, 5, // tri0 + 6, 5, 9, // tri1 + 5, 1, 3, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 1, 10, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_mos_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[5], 23, 5), + gsSPNTrianglesInit_5b(10, // tri count + 2, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 12, 13, // tri1 + 1, 4, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(2, 16, 17, // tri0 + 2, 1, 18, // tri1 + 0, 2, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 24, 25, 26, // tri0 + 24, 26, 27, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mos_1_v[28], 6, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 2 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx hand_mos_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[182], 25, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 0, 10, 1, // tri2 + 11, 8, 4 // tri3 + ), + gsSPNTriangles_5b(11, 4, 3, // tri0 + 12, 13, 14, // tri1 + 9, 13, 12, // tri2 + 9, 12, 7 // tri3 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 6, 5, 8, // tri1 + 6, 8, 11, // tri2 + 11, 10, 2 // tri3 + ), + gsSPNTriangles_5b(11, 2, 6, // tri0 + 3, 1, 10, // tri1 + 3, 10, 11, // tri2 + 6, 2, 1 // tri3 + ), + gsSPNTriangles_5b(6, 1, 3, // tri0 + 13, 15, 14, // tri1 + 9, 5, 4, // tri2 + 9, 4, 16 // tri3 + ), + gsSPNTriangles_5b(16, 15, 13, // tri0 + 16, 13, 9, // tri1 + 15, 12, 14, // tri2 + 16, 4, 8 // tri3 + ), + gsSPNTriangles_5b(16, 8, 7, // tri0 + 7, 12, 15, // tri1 + 7, 15, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 17, 18, 19, // tri0 + 19, 18, 20, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(20, 22, 21, // tri0 + 18, 17, 22, // tri1 + 18, 22, 20, // tri2 + 19, 23, 17 // tri3 + ), + gsSPNTriangles_5b(17, 23, 24, // tri0 + 17, 24, 22, // tri1 + 24, 21, 22, // tri2 + 23, 19, 21 // tri3 + ), + gsSPNTriangles_5b(23, 21, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mos_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[207], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[212], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mos_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[228], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[232], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_mos_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[146], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[151], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_mos_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[167], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[171], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_mos_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[243], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mos_1_v[252], 22, 9), + gsSPNTrianglesInit_5b(14, // tri count + 0, 9, 3, // tri0 + 1, 10, 8, // tri1 + 4, 11, 5 // tri2 + ), + gsSPNTriangles_5b(6, 12, 2, // tri0 + 8, 13, 14, // tri1 + 8, 15, 7, // tri2 + 2, 16, 17 // tri3 + ), + gsSPNTriangles_5b(1, 18, 19, // tri0 + 3, 20, 21, // tri1 + 4, 22, 23, // tri2 + 0, 24, 25 // tri3 + ), + gsSPNTriangles_5b(0, 5, 26, // tri0 + 2, 27, 28, // tri1 + 1, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mos_1_v[274], 6, 9), + gsSPNTrianglesInit_5b(4, // tri count + 3, 9, 10, // tri0 + 3, 11, 1, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(4, 2, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mos_1_v[280], 18, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 7, 10, 15 // tri3 + ), + gsSPNTriangles_5b(4, 8, 5, // tri0 + 16, 1, 17, // tri1 + 15, 8, 7, // tri2 + 9, 15, 10 // tri3 + ), + gsSPNTriangles_5b(11, 12, 14, // tri0 + 11, 14, 9, // tri1 + 13, 17, 14, // tri2 + 1, 16, 2 // tri3 + ), + gsSPNTriangles_5b(17, 13, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_mos_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 64, 24, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mos_1_v[298], 24, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 10, 9, 8, // tri1 + 10, 8, 11, // tri2 + 12, 13, 5 // tri3 + ), + gsSPNTriangles_5b(12, 5, 14, // tri0 + 8, 3, 1, // tri1 + 6, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(17, 19, 20, // tri0 + 13, 15, 6, // tri1 + 13, 6, 5, // tri2 + 19, 18, 16 // tri3 + ), + gsSPNTriangles_5b(11, 17, 20, // tri0 + 11, 20, 10, // tri1 + 11, 8, 21, // tri2 + 6, 16, 18 // tri3 + ), + gsSPNTriangles_5b(2, 1, 4, // tri0 + 2, 4, 22, // tri1 + 21, 1, 0, // tri2 + 23, 7, 6 // tri3 + ), + gsSPNTriangles_5b(23, 6, 18, // tri0 + 8, 1, 21, // tri1 + 23, 18, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mos_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 1 */ { base_mos_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-950 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_mos_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-1500,0 }, + /* joint 15 */ { Larm1_mos_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mos_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,1500,0 }, + /* joint 18 */ { Rarm1_mos_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mos_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 20 */ { hand_mos_model, 0, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1100,0,1100 }, + /* joint 23 */ { mouth_mos_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mos_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mos_1 = { 26, 9, cKF_je_r_mos_1_tbl }; diff --git a/src/data/npc/model/mdl/mus_1.c b/src/data/npc/model/mdl/mus_1.c new file mode 100644 index 00000000..b730eb4c --- /dev/null +++ b/src/data/npc/model/mdl/mus_1.c @@ -0,0 +1,661 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx mus_1_v[] = { +#include "assets/npc/mdl/mus_1_v.inc" +}; + +static Gfx head_mus_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[8], 19, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 9, 10, 11, // tri1 + 5, 4, 0, // tri2 + 12, 5, 0 // tri3 + ), + gsSPNTriangles_5b(6, 10, 9, // tri0 + 11, 13, 14, // tri1 + 11, 14, 9, // tri2 + 8, 15, 6 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 5, 16, 17, // tri1 + 5, 17, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mus_1_v[27], 20, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(0, 5, 6, // tri0 + 6, 1, 0, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 12, 7, // tri0 + 12, 3, 8, // tri1 + 7, 12, 8, // tri2 + 7, 13, 10 // tri3 + ), + gsSPNTriangles_5b(14, 4, 3, // tri0 + 12, 15, 14, // tri1 + 7, 9, 16, // tri2 + 3, 12, 14 // tri3 + ), + gsSPNTriangles_5b(16, 13, 7, // tri0 + 1, 6, 8, // tri1 + 1, 8, 3, // tri2 + 8, 6, 9 // tri3 + ), + gsSPNTriangles_5b(10, 17, 18, // tri0 + 10, 18, 11, // tri1 + 15, 12, 11, // tri2 + 9, 6, 5 // tri3 + ), + gsSPNTriangles_5b(9, 5, 19, // tri0 + 16, 9, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mus_1_v[47], 19, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 0, 12, 14, // tri2 + 9, 11, 6 // tri3 + ), + gsSPNTriangles_5b(15, 7, 6, // tri0 + 13, 12, 4, // tri1 + 16, 1, 0, // tri2 + 5, 4, 12 // tri3 + ), + gsSPNTriangles_5b(3, 5, 11, // tri0 + 5, 12, 0, // tri1 + 17, 5, 0, // tri2 + 6, 5, 17 // tri3 + ), + gsSPNTriangles_5b(2, 18, 17, // tri0 + 6, 11, 5, // tri1 + 15, 6, 17, // tri2 + 17, 0, 2 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 0, 14, 16, // tri1 + 17, 18, 15, // tri2 + 10, 3, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mus_1_v[66], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 9, 10, // tri1 + 10, 7, 1, // tri2 + 5, 4, 10 // tri3 + ), + gsSPNTriangles_5b(8, 2, 1, // tri0 + 9, 11, 5, // tri1 + 12, 13, 5, // tri2 + 11, 9, 1 // tri3 + ), + gsSPNTriangles_5b(1, 0, 12, // tri0 + 10, 9, 5, // tri1 + 13, 6, 5, // tri2 + 12, 11, 1 // tri3 + ), + gsSPNTriangles_5b(5, 11, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mus_1_v[80], 26, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 7, 0 // tri3 + ), + gsSPNTriangles_5b(13, 14, 11, // tri0 + 10, 9, 11, // tri1 + 16, 8, 10, // tri2 + 3, 5, 6 // tri3 + ), + gsSPNTriangles_5b(17, 4, 3, // tri0 + 13, 18, 19, // tri1 + 0, 7, 1, // tri2 + 15, 14, 13 // tri3 + ), + gsSPNTriangles_5b(20, 15, 13, // tri0 + 13, 19, 21, // tri1 + 11, 14, 10, // tri2 + 2, 22, 23 // tri3 + ), + gsSPNTriangles_5b(2, 23, 24, // tri0 + 7, 3, 6, // tri1 + 16, 10, 14, // tri2 + 3, 7, 17 // tri3 + ), + gsSPNTriangles_5b(0, 25, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&mus_1_v[106], 12, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 2, 5, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 9, 10, 8, // tri1 + 8, 11, 6 // tri2 + ), + gsSPNTriangles_5b(8, 7, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_mus_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[0], 8, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 6, 5, 7, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_mus_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[154], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[159], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_mus_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[175], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[179], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_mus_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[118], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[123], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_mus_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[139], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[143], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_mus_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[190], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[197], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&mus_1_v[217], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_mus_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[256], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 1, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 5, 7, // tri1 + 8, 0, 9, // tri2 + 5, 6, 4 // tri3 + ), + gsSPNTriangles_5b(0, 8, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_mus_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[226], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[232], 24, 6), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 6, // tri0 + 2, 8, 7, // tri1 + 4, 3, 9 // tri2 + ), + gsSPNTriangles_5b(3, 11, 10, // tri0 + 0, 5, 12, // tri1 + 5, 14, 13, // tri2 + 2, 1, 15 // tri3 + ), + gsSPNTriangles_5b(1, 17, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 24, 25, 26 // tri2 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_mus_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[318], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[324], 18, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 + ), + gsSPNTriangles_5b(1, 2, 11, // tri0 + 2, 3, 12, // tri1 + 3, 5, 13, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_mus_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[342], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[346], 24, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 18, // tri1 + 21, 24, 19, // tri2 + 17, 22, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_mus_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[266], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[272], 18, 6), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 + ), + gsSPNTriangles_5b(2, 1, 11, // tri0 + 3, 2, 12, // tri1 + 5, 3, 13, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 20, 22, 23 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_mus_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[290], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&mus_1_v[294], 24, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 1, 5, 0, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 3, 8, // tri0 + 2, 9, 10, // tri1 + 1, 2, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 16, 18, 17 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 18, 22, 23, // tri1 + 21, 24, 19, // tri2 + 18, 23, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_mus_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&mus_1_v[370], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_mus_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_mus_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,-700 }, + /* joint 11 */ { tail1_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_mus_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, + /* joint 13 */ { chest_mus_model, 3, cKF_JOINT_FLAG_DISP_OPA, 525,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-450,0 }, + /* joint 15 */ { Larm1_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_mus_model, 0, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,450,0 }, + /* joint 18 */ { Rarm1_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 925,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1700,0,2200 }, + /* joint 23 */ { mouth_mus_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_mus_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 2050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_mus_1 = { 26, 14, cKF_je_r_mus_1_tbl }; diff --git a/src/data/npc/model/mdl/oct_1.c b/src/data/npc/model/mdl/oct_1.c new file mode 100644 index 00000000..da4a64d2 --- /dev/null +++ b/src/data/npc/model/mdl/oct_1.c @@ -0,0 +1,731 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx oct_1_v[] = { +#include "assets/npc/mdl/oct_1_v.inc" +}; + +static Gfx head_oct_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[0], 19, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 + ), + gsSPNTriangles_5b(7, 8, 4, // tri0 + 9, 10, 7, // tri1 + 10, 2, 1, // tri2 + 5, 11, 3 // tri3 + ), + gsSPNTriangles_5b(9, 2, 10, // tri0 + 7, 3, 9, // tri1 + 1, 12, 10, // tri2 + 4, 3, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 15, 17, 18 // tri2 + ), + gsSPNTriangles_5b(15, 18, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&oct_1_v[19], 32, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 8, 10, 11, // tri1 + 12, 13, 14, // tri2 + 2, 15, 0 // tri3 + ), + gsSPNTriangles_5b(2, 16, 17, // tri0 + 18, 16, 1, // tri1 + 19, 20, 7, // tri2 + 16, 2, 1 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 1, 0, 23, // tri1 + 3, 16, 18, // tri2 + 21, 0, 15 // tri3 + ), + gsSPNTriangles_5b(21, 15, 22, // tri0 + 17, 7, 20, // tri1 + 24, 12, 25, // tri2 + 16, 5, 17 // tri3 + ), + gsSPNTriangles_5b(5, 7, 17, // tri0 + 17, 22, 15, // tri1 + 25, 12, 26, // tri2 + 20, 22, 17 // tri3 + ), + gsSPNTriangles_5b(13, 21, 19, // tri0 + 19, 7, 27, // tri1 + 14, 13, 19, // tri2 + 15, 2, 17 // tri3 + ), + gsSPNTriangles_5b(12, 24, 28, // tri0 + 14, 26, 12, // tri1 + 13, 12, 23, // tri2 + 3, 29, 30 // tri3 + ), + gsSPNTriangles_5b(11, 6, 31, // tri0 + 11, 31, 8, // tri1 + 29, 3, 10, // tri2 + 1, 23, 28 // tri3 + ), + gsSPNTriangles_5b(28, 23, 12, // tri0 + 4, 3, 30, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[51], 19, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 3, 2, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(11, 13, 14, // tri0 + 15, 16, 2, // tri1 + 17, 18, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_oct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[117], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[122], 25, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 2, 7, 6, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 12, 0, // tri2 + 0, 14, 13 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(14, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 20, 23, 24 // tri2 + ), + gsSPNTriangles_5b(19, 22, 21, // tri0 + 22, 23, 20, // tri1 + 19, 18, 25, // tri2 + 25, 23, 22 // tri3 + ), + gsSPNTriangles_5b(26, 27, 28, // tri0 + 21, 20, 27, // tri1 + 27, 20, 24, // tri2 + 29, 21, 27 // tri3 + ), + gsSPNTriangles_5b(19, 21, 29, // tri0 + 25, 22, 19, // tri1 + 24, 28, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_oct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[147], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[151], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 4, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 10, // tri0 + 2, 0, 11, // tri1 + 1, 3, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_oct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[70], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[75], 14, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 2, // tri0 + 2, 7, 6, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 0, 12, 4, // tri2 + 0, 14, 13 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[89], 13, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(4, 3, 0, // tri0 + 5, 7, 3, // tri1 + 8, 1, 0, // tri2 + 3, 7, 8 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 10, 5, 4, // tri1 + 6, 5, 10, // tri2 + 12, 4, 0 // tri3 + ), + gsSPNTriangles_5b(0, 3, 8, // tri0 + 10, 9, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_oct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[102], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[106], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 4, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 10, // tri0 + 0, 2, 11, // tri1 + 3, 1, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_oct_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[162], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[169], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[189], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_oct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[329], 12, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[341], 10, 12), + gsSPNTrianglesInit_5b(7, // tri count + 1, 12, 13, // tri0 + 0, 1, 14, // tri1 + 3, 15, 16 // tri2 + ), + gsSPNTriangles_5b(2, 17, 3, // tri0 + 2, 18, 19, // tri1 + 1, 3, 20, // tri2 + 2, 0, 21 // tri3 + ), + gsSPVertex(&oct_1_v[351], 10, 12), + gsSPNTrianglesInit_5b(7, // tri count + 4, 12, 6, // tri0 + 6, 13, 14, // tri1 + 6, 15, 7 // tri2 + ), + gsSPNTriangles_5b(7, 16, 17, // tri0 + 4, 18, 19, // tri1 + 4, 5, 20, // tri2 + 5, 7, 21 // tri3 + ), + gsSPVertex(&oct_1_v[361], 19, 12), + gsSPNTrianglesInit_5b(7, // tri count + 11, 12, 8, // tri0 + 8, 13, 14, // tri1 + 11, 15, 16 // tri2 + ), + gsSPNTriangles_5b(11, 10, 17, // tri0 + 10, 9, 18, // tri1 + 9, 19, 20, // tri2 + 8, 21, 9 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_oct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[380], 12, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[392], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 1, 13, 12, // tri0 + 9, 14, 15, // tri1 + 9, 16, 17 // tri2 + ), + gsSPNTriangles_5b(1, 18, 19, // tri0 + 0, 9, 20, // tri1 + 9, 6, 21, // tri2 + 1, 0, 22 // tri3 + ), + gsSPNTriangles_5b(6, 1, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[404], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 12, // tri0 + 3, 13, 14, // tri1 + 8, 15, 16 // tri2 + ), + gsSPNTriangles_5b(11, 17, 18, // tri0 + 11, 8, 19, // tri1 + 3, 11, 20, // tri2 + 8, 2, 21 // tri3 + ), + gsSPNTriangles_5b(11, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[416], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 5, 7, 12, // tri0 + 4, 13, 14, // tri1 + 4, 5, 15 // tri2 + ), + gsSPNTriangles_5b(7, 10, 16, // tri0 + 7, 17, 18, // tri1 + 10, 4, 19, // tri2 + 4, 20, 21 // tri3 + ), + gsSPNTriangles_5b(7, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_oct_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[428], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[432], 26, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 0, 11, 10, // tri1 + 0, 12, 1, // tri2 + 0, 3, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 24, 25, // tri0 + 25, 26, 23, // tri1 + 27, 28, 29, // tri2 + 29, 24, 27 // tri3 + ), + gsSPNTriangles_5b(24, 23, 27, // tri0 + 18, 26, 25, // tri1 + 29, 28, 21, // tri2 + 20, 22, 17 // tri3 + ), + gsSPNTriangles_5b(20, 29, 21, // tri0 + 25, 19, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_oct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[198], 12, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[210], 10, 12), + gsSPNTrianglesInit_5b(7, // tri count + 1, 12, 13, // tri0 + 1, 0, 14, // tri1 + 3, 15, 16 // tri2 + ), + gsSPNTriangles_5b(3, 17, 2, // tri0 + 2, 18, 19, // tri1 + 3, 1, 20, // tri2 + 0, 2, 21 // tri3 + ), + gsSPVertex(&oct_1_v[220], 10, 12), + gsSPNTrianglesInit_5b(7, // tri count + 6, 12, 4, // tri0 + 6, 13, 14, // tri1 + 7, 15, 6 // tri2 + ), + gsSPNTriangles_5b(7, 16, 17, // tri0 + 4, 18, 19, // tri1 + 5, 4, 20, // tri2 + 7, 5, 21 // tri3 + ), + gsSPVertex(&oct_1_v[230], 19, 12), + gsSPNTrianglesInit_5b(7, // tri count + 8, 12, 11, // tri0 + 8, 13, 14, // tri1 + 11, 15, 16 // tri2 + ), + gsSPNTriangles_5b(10, 11, 17, // tri0 + 9, 10, 18, // tri1 + 9, 19, 20, // tri2 + 9, 21, 8 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 22, 23, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_oct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[249], 12, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[261], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 1, 13, 12, // tri0 + 9, 14, 15, // tri1 + 9, 16, 17 // tri2 + ), + gsSPNTriangles_5b(1, 18, 19, // tri0 + 9, 0, 20, // tri1 + 6, 9, 21, // tri2 + 0, 1, 22 // tri3 + ), + gsSPNTriangles_5b(1, 6, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[273], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 12, // tri0 + 3, 13, 14, // tri1 + 8, 15, 16 // tri2 + ), + gsSPNTriangles_5b(11, 17, 18, // tri0 + 8, 11, 19, // tri1 + 11, 3, 20, // tri2 + 2, 8, 21 // tri3 + ), + gsSPNTriangles_5b(11, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&oct_1_v[285], 12, 12), + gsSPNTrianglesInit_5b(8, // tri count + 7, 5, 12, // tri0 + 4, 13, 14, // tri1 + 5, 4, 15 // tri2 + ), + gsSPNTriangles_5b(10, 7, 16, // tri0 + 7, 17, 18, // tri1 + 4, 10, 19, // tri2 + 4, 20, 21 // tri3 + ), + gsSPNTriangles_5b(7, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_oct_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[297], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&oct_1_v[303], 13, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 0, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 3, 11, 12, // tri1 + 1, 13, 14, // tri2 + 3, 5, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&oct_1_v[316], 13, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(3, 5, 8, // tri0 + 2, 9, 0, // tri1 + 9, 2, 6, // tri2 + 8, 9, 6 // tri3 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 0, 10, 11, // tri1 + 11, 1, 0, // tri2 + 5, 4, 12 // tri3 + ), + gsSPNTriangles_5b(12, 10, 5, // tri0 + 12, 11, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_oct_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&oct_1_v[458], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_oct_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_oct_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_oct_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_oct_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_oct_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,-450,0 }, + /* joint 15 */ { Larm1_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_oct_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,450,0 }, + /* joint 18 */ { Rarm1_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 551,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 575,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_oct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1400,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_oct_1 = { 26, 13, cKF_je_r_oct_1_tbl }; diff --git a/src/data/npc/model/mdl/ost_1.c b/src/data/npc/model/mdl/ost_1.c new file mode 100644 index 00000000..a1ecf115 --- /dev/null +++ b/src/data/npc/model/mdl/ost_1.c @@ -0,0 +1,713 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx ost_1_v[] = { +#include "assets/npc/mdl/ost_1_v.inc" +}; + +static Gfx head_ost_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[12], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[20], 21, 8), + gsSPNTrianglesInit_5b(4, // tri count + 4, 6, 8, // tri0 + 6, 1, 9, // tri1 + 6, 10, 11 // tri2 + ), + gsSPNTriangles_5b(6, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 2, 14, // tri0 + 3, 15, 16, // tri1 + 2, 17, 18 // tri2 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 5, 3, 21, // tri1 + 0, 22, 23, // tri2 + 7, 5, 24 // tri3 + ), + gsSPNTriangles_5b(2, 7, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&ost_1_v[41], 21, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(16, // tri count + 6, 7, 8, // tri0 + 8, 7, 9, // tri1 + 9, 10, 8 // tri2 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 12, 6, 11, // tri1 + 13, 14, 7, // tri2 + 15, 9, 16 // tri3 + ), + gsSPNTriangles_5b(17, 18, 6, // tri0 + 9, 19, 16, // tri1 + 10, 9, 15, // tri2 + 20, 6, 18 // tri3 + ), + gsSPNTriangles_5b(17, 6, 12, // tri0 + 9, 7, 14, // tri1 + 20, 7, 6, // tri2 + 19, 9, 14 // tri3 + ), + gsSPNTriangles_5b(7, 20, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ost_1_v[62], 31, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(1, 3, 6, // tri0 + 7, 2, 1, // tri1 + 8, 4, 2, // tri2 + 9, 8, 2 // tri3 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 0, 2, // tri1 + 12, 9, 2, // tri2 + 3, 11, 5 // tri3 + ), + gsSPNTriangles_5b(4, 10, 3, // tri0 + 2, 7, 12, // tri1 + 3, 1, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(22, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 14, 13 // tri2 + ), + gsSPNTriangles_5b(18, 17, 20, // tri0 + 21, 22, 23, // tri1 + 17, 16, 22, // tri2 + 23, 22, 16 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 21, 27, 22, // tri1 + 20, 28, 24, // tri2 + 29, 25, 24 // tri3 + ), + gsSPNTriangles_5b(21, 13, 15, // tri0 + 24, 28, 27, // tri1 + 24, 27, 15, // tri2 + 15, 14, 29 // tri3 + ), + gsSPNTriangles_5b(29, 24, 15, // tri0 + 15, 27, 21, // tri1 + 24, 26, 20, // tri2 + 26, 25, 30 // tri3 + ), + gsSPNTriangles_5b(22, 27, 28, // tri0 + 22, 28, 17, // tri1 + 17, 28, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ost_1_v[93], 10, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 9, 7, 0, // tri1 + 0, 2, 9, // tri2 + 8, 1, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_ost_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[5], 7, 5), + gsSPNTrianglesInit_5b(5, // tri count + 2, 0, 5, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 3, 10, // tri0 + 4, 1, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_ost_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[134], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[138], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_ost_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[153], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[156], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_ost_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[103], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[107], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_ost_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[122], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[125], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_ost_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[165], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[174], 20, 9), + gsSPNTrianglesInit_5b(14, // tri count + 1, 10, 9, // tri0 + 0, 11, 12, // tri1 + 0, 8, 13 // tri2 + ), + gsSPNTriangles_5b(8, 2, 14, // tri0 + 1, 0, 15, // tri1 + 3, 1, 16, // tri2 + 7, 17, 18 // tri3 + ), + gsSPNTriangles_5b(8, 19, 20, // tri0 + 2, 7, 21, // tri1 + 7, 6, 22, // tri2 + 4, 23, 5 // tri3 + ), + gsSPNTriangles_5b(6, 5, 24, // tri0 + 5, 25, 26, // tri1 + 6, 28, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&ost_1_v[194], 25, 0), + gsSPNTrianglesInit_5b(28, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 0 // tri2 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 5, 8, 9, // tri1 + 5, 9, 10, // tri2 + 11, 0, 12 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 8, 14, 15, // tri1 + 8, 15, 9, // tri2 + 14, 11, 13 // tri3 + ), + gsSPNTriangles_5b(14, 13, 15, // tri0 + 7, 5, 10, // tri1 + 7, 10, 16, // tri2 + 0, 6, 17 // tri3 + ), + gsSPNTriangles_5b(0, 17, 12, // tri0 + 18, 19, 11, // tri1 + 18, 14, 8, // tri2 + 1, 20, 2 // tri3 + ), + gsSPNTriangles_5b(3, 21, 4, // tri0 + 19, 1, 22, // tri1 + 23, 24, 4, // tri2 + 8, 24, 23 // tri3 + ), + gsSPNTriangles_5b(4, 24, 5, // tri0 + 0, 22, 1, // tri1 + 22, 11, 19, // tri2 + 8, 23, 18 // tri3 + ), + gsSPNTriangles_5b(11, 14, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail_ost_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[219], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[223], 20, 4), + gsSPNTrianglesInit_5b(3, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 8, 9 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 0, 3, 10, // tri0 + 2, 0, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 3, 1, 14, // tri0 + 1, 15, 16, // tri1 + 0, 17, 18 // tri2 + ), + gsSPNTriangles_5b(1, 2, 19, // tri0 + 1, 20, 21, // tri1 + 0, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[243], 21, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b(10, 8, 7, // tri0 + 6, 11, 9, // tri1 + 1, 5, 3, // tri2 + 3, 9, 2 // tri3 + ), + gsSPNTriangles_5b(7, 4, 2, // tri0 + 9, 11, 10, // tri1 + 9, 3, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 14, 16, 12 // tri2 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 14, 19, 17, // tri1 + 13, 20, 15, // tri2 + 15, 19, 14 // tri3 + ), + gsSPNTriangles_5b(17, 16, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_ost_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[314], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[318], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_ost_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[338], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[342], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_ost_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[356], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 4, 2, // tri1 + 3, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_ost_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[264], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[268], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_ost_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[288], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ost_1_v[292], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_ost_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[306], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 1, 7, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_ost_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ost_1_v[364], 17, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(4, 8, 9, // tri0 + 0, 9, 10, // tri1 + 9, 8, 11, // tri2 + 12, 10, 11 // tri3 + ), + gsSPNTriangles_5b(2, 5, 9, // tri0 + 4, 3, 13, // tri1 + 4, 13, 14, // tri2 + 14, 13, 15 // tri3 + ), + gsSPNTriangles_5b(4, 9, 5, // tri0 + 11, 10, 9, // tri1 + 14, 8, 4, // tri2 + 2, 1, 6 // tri3 + ), + gsSPNTriangles_5b(6, 5, 2, // tri0 + 6, 1, 16, // tri1 + 16, 7, 6, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(5, 7, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_ost_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_ost_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-275,0 }, + /* joint 3 */ { Lfoot1_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_ost_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,275,0 }, + /* joint 7 */ { Rfoot1_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_ost_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,-650 }, + /* joint 11 */ { tail_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_ost_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-550,150 }, + /* joint 15 */ { Larm1_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_ost_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,550,150 }, + /* joint 18 */ { Rarm1_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 976,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1100,0,1150 }, + /* joint 23 */ { mouth_ost_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_ost_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1399,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_ost_1 = { 26, 15, cKF_je_r_ost_1_tbl }; diff --git a/src/data/npc/model/mdl/owl_1.c b/src/data/npc/model/mdl/owl_1.c new file mode 100644 index 00000000..0b5eeb88 --- /dev/null +++ b/src/data/npc/model/mdl/owl_1.c @@ -0,0 +1,770 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx owl_1_v[] = { +#include "assets/npc/mdl/owl_1_v.inc" +}; + +static Gfx head_owl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[14], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[23], 21, 9), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 9, // tri0 + 1, 11, 10, // tri1 + 4, 2, 12 // tri2 + ), + gsSPNTriangles_5b(2, 14, 13, // tri0 + 7, 0, 15, // tri1 + 0, 17, 16, // tri2 + 1, 4, 18 // tri3 + ), + gsSPNTriangles_5b(4, 20, 19, // tri0 + 5, 7, 21, // tri1 + 7, 23, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 28), + gsDPSetPrimColor(0, 128, 255, 250, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 3, 8, 24, // tri0 + 8, 6, 25, // tri1 + 6, 27, 26 // tri2 + ), + gsSPNTriangles_5b(8, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[44], 30, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 4, 5, 6, // tri0 + 6, 7, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 60), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(24, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 11, 13, 14 // tri2 + ), + gsSPNTriangles_5b(15, 14, 13, // tri0 + 12, 16, 17, // tri1 + 12, 17, 13, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(17, 21, 8, // tri0 + 12, 11, 22, // tri1 + 20, 23, 16, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b(26, 9, 8, // tri0 + 16, 12, 20, // tri1 + 8, 13, 17, // tri2 + 21, 27, 28 // tri3 + ), + gsSPNTriangles_5b(20, 19, 29, // tri0 + 20, 29, 24, // tri1 + 28, 26, 8, // tri2 + 28, 8, 21 // tri3 + ), + gsSPNTriangles_5b(23, 20, 24, // tri0 + 10, 13, 8, // tri1 + 20, 12, 18, // tri2 + 22, 18, 12 // tri3 + ), + gsSPNTriangles_5b(13, 10, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&owl_1_v[74], 32, 0), + gsSPNTrianglesInit_5b(46, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 2, 12, // tri2 + 8, 6, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 2, 1, 19, // tri2 + 19, 1, 7 // tri3 + ), + gsSPNTriangles_5b(19, 7, 20, // tri0 + 15, 14, 21, // tri1 + 22, 23, 14, // tri2 + 19, 24, 17 // tri3 + ), + gsSPNTriangles_5b(20, 7, 6, // tri0 + 25, 26, 12, // tri1 + 14, 18, 22, // tri2 + 20, 8, 27 // tri3 + ), + gsSPNTriangles_5b(18, 17, 24, // tri0 + 24, 19, 20, // tri1 + 24, 20, 28, // tri2 + 23, 22, 28 // tri3 + ), + gsSPNTriangles_5b(22, 24, 28, // tri0 + 24, 22, 18, // tri1 + 28, 27, 23, // tri2 + 29, 21, 14 // tri3 + ), + gsSPNTriangles_5b(16, 18, 14, // tri0 + 14, 23, 29, // tri1 + 27, 10, 29, // tri2 + 13, 9, 8 // tri3 + ), + gsSPNTriangles_5b(12, 26, 11, // tri0 + 6, 8, 20, // tri1 + 19, 12, 2, // tri2 + 29, 23, 27 // tri3 + ), + gsSPNTriangles_5b(16, 25, 17, // tri0 + 12, 17, 25, // tri1 + 17, 12, 19, // tri2 + 27, 28, 20 // tri3 + ), + gsSPNTriangles_5b(10, 27, 8, // tri0 + 4, 7, 1, // tri1 + 4, 1, 0, // tri2 + 3, 2, 11 // tri3 + ), + gsSPNTriangles_5b(11, 30, 3, // tri0 + 13, 6, 5, // tri1 + 5, 31, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&owl_1_v[106], 17, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 3, 4, 5, // tri0 + 5, 6, 3, // tri1 + 3, 7, 4 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 28), + gsDPSetPrimColor(0, 128, 255, 250, 255, 255), + gsSPNTrianglesInit_5b(7, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 9 // tri2 + ), + gsSPNTriangles_5b(14, 9, 8, // tri0 + 11, 13, 14, // tri1 + 16, 12, 11, // tri2 + 14, 13, 15 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_owl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[6], 8, 6), + gsSPNTrianglesInit_5b(1, // tri count + 2, 3, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 1, 5, 7, // tri0 + 4, 0, 8, // tri1 + 0, 1, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 12, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_owl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[174], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[180], 25, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 0, 2, 8, // tri1 + 5, 4, 9 // tri2 + ), + gsSPNTriangles_5b(3, 5, 10, // tri0 + 0, 11, 12, // tri1 + 4, 1, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 16, 17, // tri0 + 4, 18, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 26, 27, 23, // tri1 + 23, 25, 26 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&owl_1_v[205], 6, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_owl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[211], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[214], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 2, 3, // tri0 + 0, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 10, 11, // tri1 + 0, 1, 12, // tri2 + 2, 0, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_owl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[123], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[129], 25, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 2, 0, 8, // tri1 + 4, 5, 9 // tri2 + ), + gsSPNTriangles_5b(5, 3, 10, // tri0 + 0, 11, 12, // tri1 + 1, 4, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 16, 17, // tri0 + 4, 18, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 27, 23, 25 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 28, 29, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&owl_1_v[154], 6, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_owl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[160], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[163], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 1, 3, // tri0 + 0, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 10, 11, // tri1 + 1, 0, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_owl_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[225], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPVertex(&owl_1_v[234], 23, 9), + gsSPNTrianglesInit_5b(14, // tri count + 3, 8, 9, // tri0 + 7, 2, 10, // tri1 + 7, 11, 12 // tri2 + ), + gsSPNTriangles_5b(6, 13, 14, // tri0 + 4, 15, 16, // tri1 + 2, 5, 17, // tri2 + 6, 18, 19 // tri3 + ), + gsSPNTriangles_5b(0, 20, 21, // tri0 + 1, 22, 23, // tri1 + 8, 24, 25, // tri2 + 0, 7, 26 // tri3 + ), + gsSPNTriangles_5b(1, 6, 27, // tri0 + 2, 28, 29, // tri1 + 3, 30, 31, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&owl_1_v[257], 5, 9), + gsSPNTrianglesInit_5b(4, // tri count + 4, 3, 9, // tri0 + 5, 10, 11, // tri1 + 8, 1, 12 // tri2 + ), + gsSPNTriangles_5b(6, 0, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&owl_1_v[262], 21, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 8, 10, // tri1 + 10, 9, 12, // tri2 + 13, 12, 14 // tri3 + ), + gsSPNTriangles_5b(10, 12, 13, // tri0 + 2, 15, 0, // tri1 + 16, 8, 17, // tri2 + 14, 12, 15 // tri3 + ), + gsSPNTriangles_5b(18, 17, 11, // tri0 + 13, 14, 19, // tri1 + 1, 0, 7, // tri2 + 20, 5, 4 // tri3 + ), + gsSPNTriangles_5b(5, 16, 3, // tri0 + 17, 3, 16, // tri1 + 15, 2, 14, // tri2 + 17, 8, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_owl_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[283], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[288], 16, 5), + gsSPNTrianglesInit_5b(3, // tri count + 2, 4, 5, // tri0 + 4, 3, 6, // tri1 + 3, 1, 7 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 1, 0, 12, // tri0 + 0, 2, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 16, 18, 14 // tri2 + ), + gsSPNTriangles_5b(16, 19, 20, // tri0 + 17, 19, 16, // tri1 + 20, 18, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_owl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[354], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[358], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 1, 4, 5, // tri0 + 1, 6, 3, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 0, 3, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(18, 21, 22, // tri0 + 18, 22, 16, // tri1 + 20, 23, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_owl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[378], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[382], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 3, 0, 10, // tri1 + 3, 11, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_owl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[396], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 3, 7, 1, // tri1 + 4, 2, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_owl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[304], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[308], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 4, 5, // tri0 + 3, 6, 1, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 3, 0, 10, // tri1 + 2, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 19, 16 // tri2 + ), + gsSPNTriangles_5b(21, 22, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_owl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[328], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&owl_1_v[332], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 0, 3, 10, // tri1 + 3, 11, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_owl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x5C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[346], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 1, 7, 3, // tri1 + 6, 0, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_owl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&owl_1_v[404], 21, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 3, 2, 7, // tri1 + 8, 9, 5, // tri2 + 5, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 2, 4, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 10, 5, 9 // tri3 + ), + gsSPNTriangles_5b(13, 12, 18, // tri0 + 5, 11, 4, // tri1 + 7, 18, 3, // tri2 + 9, 15, 10 // tri3 + ), + gsSPNTriangles_5b(4, 11, 19, // tri0 + 6, 13, 7, // tri1 + 0, 8, 1, // tri2 + 1, 4, 2 // tri3 + ), + gsSPNTriangles_5b(5, 1, 8, // tri0 + 17, 10, 15, // tri1 + 14, 20, 12, // tri2 + 18, 7, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_owl_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_owl_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_owl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_owl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-1000 }, + /* joint 11 */ { tail1_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_owl_model, 3, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-1400,0 }, + /* joint 15 */ { Larm1_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_owl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,1400,0 }, + /* joint 18 */ { Rarm1_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 700,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1750 }, + /* joint 23 */ { mouth_owl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_owl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_owl_1 = { 26, 15, cKF_je_r_owl_1_tbl }; diff --git a/src/data/npc/model/mdl/pbr_1.c b/src/data/npc/model/mdl/pbr_1.c new file mode 100644 index 00000000..eebb9d04 --- /dev/null +++ b/src/data/npc/model/mdl/pbr_1.c @@ -0,0 +1,692 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pbr_1_v[] = { +#include "assets/npc/mdl/pbr_1_v.inc" +}; + +static Gfx head_pbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[21], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[27], 18, 6), + gsSPNTrianglesInit_5b(12, // tri count + 0, 6, 7, // tri0 + 0, 5, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 3, 11, // tri0 + 2, 12, 13, // tri1 + 2, 4, 14, // tri2 + 4, 15, 16 // tri3 + ), + gsSPNTriangles_5b(4, 1, 17, // tri0 + 1, 18, 19, // tri1 + 1, 0, 20, // tri2 + 3, 21, 22 // tri3 + ), + gsSPNTriangles_5b(3, 2, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[45], 31, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 6, 8, // tri1 + 9, 6, 5, // tri2 + 1, 10, 11 // tri3 + ), + gsSPNTriangles_5b(0, 10, 1, // tri0 + 9, 7, 6, // tri1 + 2, 1, 3, // tri2 + 5, 6, 2 // tri3 + ), + gsSPNTriangles_5b(11, 12, 3, // tri0 + 2, 8, 0, // tri1 + 5, 13, 9, // tri2 + 3, 1, 11 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(18, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 17, 20, 21 // tri2 + ), + gsSPNTriangles_5b(19, 18, 22, // tri0 + 23, 22, 18, // tri1 + 16, 24, 14, // tri2 + 17, 16, 25 // tri3 + ), + gsSPNTriangles_5b(17, 26, 27, // tri0 + 16, 15, 28, // tri1 + 28, 25, 16, // tri2 + 18, 27, 29 // tri3 + ), + gsSPNTriangles_5b(25, 26, 17, // tri0 + 27, 18, 17, // tri1 + 21, 16, 17, // tri2 + 24, 16, 21 // tri3 + ), + gsSPNTriangles_5b(19, 20, 17, // tri0 + 29, 30, 18, // tri1 + 18, 30, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pbr_1_v[76], 23, 0), + gsSPNTrianglesInit_5b(33, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 10, 5, 4, // tri1 + 11, 12, 3, // tri2 + 9, 0, 2 // tri3 + ), + gsSPNTriangles_5b(5, 11, 3, // tri0 + 2, 13, 9, // tri1 + 13, 2, 10, // tri2 + 5, 14, 11 // tri3 + ), + gsSPNTriangles_5b(11, 14, 15, // tri0 + 7, 16, 12, // tri1 + 12, 8, 7, // tri2 + 17, 7, 6 // tri3 + ), + gsSPNTriangles_5b(7, 17, 18, // tri0 + 16, 7, 18, // tri1 + 6, 19, 17, // tri2 + 5, 10, 2 // tri3 + ), + gsSPNTriangles_5b(16, 3, 12, // tri0 + 9, 8, 0, // tri1 + 18, 20, 16, // tri2 + 21, 2, 1 // tri3 + ), + gsSPNTriangles_5b(14, 5, 21, // tri0 + 21, 1, 14, // tri1 + 2, 21, 5, // tri2 + 15, 14, 1 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 15, 1, 0, // tri1 + 11, 15, 0, // tri2 + 0, 8, 22 // tri3 + ), + gsSPNTriangles_5b(22, 11, 0, // tri0 + 22, 8, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[99], 16, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 3 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 8, 4, 3, // tri1 + 2, 1, 8, // tri2 + 2, 8, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 4, // tri0 + 3, 5, 7, // tri1 + 6, 0, 2, // tri2 + 1, 10, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 11, 12, 13, // tri0 + 13, 14, 15, // tri1 + 13, 15, 11 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_pbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[5], 16, 5), + gsSPNTrianglesInit_5b(6, // tri count + 3, 0, 5, // tri0 + 4, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 4, 10, // tri0 + 2, 1, 11, // tri1 + 1, 13, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[146], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[150], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 2, 11, 0, // tri1 + 3, 12, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 18, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[165], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[168], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_pbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[115], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[119], 15, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 3, 1, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 0, 11, 2, // tri1 + 3, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 15, 17, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_pbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[134], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[137], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_pbr_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[177], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[185], 21, 8), + gsSPNTrianglesInit_5b(14, // tri count + 2, 8, 9, // tri0 + 6, 10, 11, // tri1 + 3, 5, 12 // tri2 + ), + gsSPNTriangles_5b(1, 6, 13, // tri0 + 5, 14, 15, // tri1 + 4, 16, 17, // tri2 + 1, 18, 19 // tri3 + ), + gsSPNTriangles_5b(0, 1, 20, // tri0 + 4, 7, 21, // tri1 + 7, 0, 22, // tri2 + 0, 24, 23 // tri3 + ), + gsSPNTriangles_5b(6, 2, 25, // tri0 + 3, 26, 27, // tri1 + 5, 4, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pbr_1_v[206], 26, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 13, 16, // tri2 + 11, 17, 9 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 16, 18, 15, // tri1 + 13, 11, 16, // tri2 + 13, 2, 11 // tri3 + ), + gsSPNTriangles_5b(15, 14, 13, // tri0 + 6, 19, 20, // tri1 + 11, 10, 16, // tri2 + 5, 21, 3 // tri3 + ), + gsSPNTriangles_5b(8, 19, 6, // tri0 + 19, 8, 1, // tri1 + 17, 3, 21, // tri2 + 17, 21, 9 // tri3 + ), + gsSPNTriangles_5b(0, 19, 1, // tri0 + 13, 12, 2, // tri1 + 22, 16, 10, // tri2 + 23, 21, 5 // tri3 + ), + gsSPNTriangles_5b(20, 24, 6, // tri0 + 5, 25, 23, // tri1 + 20, 19, 12, // tri2 + 10, 21, 23 // tri3 + ), + gsSPNTriangles_5b(23, 22, 10, // tri0 + 12, 14, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_pbr_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[232], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[236], 15, 4), + gsSPNTrianglesInit_5b(4, // tri count + 2, 3, 4, // tri0 + 3, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 1, 0, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 2, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(6, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 14, 16, 12 // tri2 + ), + gsSPNTriangles_5b(14, 17, 18, // tri0 + 15, 17, 14, // tri1 + 18, 16, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_pbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[301], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[305], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[325], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[329], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pbr_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[343], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 3, 7, 1, // tri1 + 4, 2, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_pbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[251], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[255], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pbr_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[275], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pbr_1_v[279], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pbr_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[293], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(4, 5, 6, // tri0 + 1, 7, 3, // tri1 + 6, 0, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_pbr_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 28), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pbr_1_v[351], 21, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 8, // tri0 + 9, 1, 10, // tri1 + 6, 8, 4, // tri2 + 7, 4, 8 // tri3 + ), + gsSPNTriangles_5b(11, 12, 13, // tri0 + 10, 13, 14, // tri1 + 11, 10, 15, // tri2 + 16, 12, 11 // tri3 + ), + gsSPNTriangles_5b(16, 11, 17, // tri0 + 15, 10, 1, // tri1 + 17, 11, 15, // tri2 + 10, 14, 9 // tri3 + ), + gsSPNTriangles_5b(5, 18, 19, // tri0 + 5, 19, 6, // tri1 + 8, 6, 20, // tri2 + 8, 20, 0 // tri3 + ), + gsSPNTriangles_5b(6, 19, 20, // tri0 + 8, 0, 3, // tri1 + 1, 9, 2, // tri2 + 10, 11, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pbr_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pbr_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_pbr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_pbr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-600 }, + /* joint 11 */ { tail1_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 13 */ { chest_pbr_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,-1100,0 }, + /* joint 15 */ { Larm1_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pbr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 651,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 750,1100,0 }, + /* joint 18 */ { Rarm1_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 651,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1175,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,800 }, + /* joint 23 */ { mouth_pbr_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pbr_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pbr_1 = { 26, 15, cKF_je_r_pbr_1_tbl }; diff --git a/src/data/npc/model/mdl/pga_1.c b/src/data/npc/model/mdl/pga_1.c new file mode 100644 index 00000000..af359b9a --- /dev/null +++ b/src/data/npc/model/mdl/pga_1.c @@ -0,0 +1,768 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pga_1_v[] = { +#include "assets/npc/mdl/pga_1_v.inc" +}; + +static Gfx head_pga_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[40], 30, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(15, // tri count + 3, 4, 5, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11 // tri2 + ), + gsSPNTriangles_5b(3, 5, 9, // tri0 + 12, 13, 6, // tri1 + 14, 9, 15, // tri2 + 5, 12, 9 // tri3 + ), + gsSPNTriangles_5b(13, 12, 5, // tri0 + 16, 7, 6, // tri1 + 9, 14, 17, // tri2 + 16, 13, 5 // tri3 + ), + gsSPNTriangles_5b(6, 9, 12, // tri0 + 6, 13, 16, // tri1 + 17, 10, 9, // tri2 + 11, 3, 9 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 22, 23, 19 // tri2 + ), + gsSPNTriangles_5b(24, 21, 20, // tri0 + 22, 19, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 25, 26, 27, // tri0 + 27, 28, 29, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&pga_1_v[70], 12, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 3, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 6, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 9, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pga_1_v[82], 30, 0), + gsSPNTrianglesInit_5b(48, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 8, 9, // tri0 + 6, 10, 11, // tri1 + 6, 11, 3, // tri2 + 6, 9, 10 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 2, 15, 12, // tri1 + 12, 16, 17, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(11, 18, 19, // tri0 + 4, 11, 19, // tri1 + 4, 15, 2, // tri2 + 1, 4, 2 // tri3 + ), + gsSPNTriangles_5b(13, 20, 14, // tri0 + 5, 21, 22, // tri1 + 13, 18, 20, // tri2 + 20, 9, 8 // tri3 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 13, 15, 19, // tri1 + 19, 18, 13, // tri2 + 23, 16, 14 // tri3 + ), + gsSPNTriangles_5b(14, 8, 23, // tri0 + 9, 6, 5, // tri1 + 8, 5, 22, // tri2 + 16, 12, 14 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 17, 2, 12, // tri1 + 14, 20, 8, // tri2 + 11, 4, 3 // tri3 + ), + gsSPNTriangles_5b(9, 20, 18, // tri0 + 18, 10, 9, // tri1 + 19, 15, 4, // tri2 + 3, 27, 26 // tri3 + ), + gsSPNTriangles_5b(24, 7, 6, // tri0 + 26, 27, 7, // tri1 + 26, 7, 24, // tri2 + 6, 3, 25 // tri3 + ), + gsSPNTriangles_5b(25, 24, 6, // tri0 + 3, 26, 25, // tri1 + 7, 21, 5, // tri2 + 27, 3, 1 // tri3 + ), + gsSPNTriangles_5b(27, 28, 29, // tri0 + 29, 21, 7, // tri1 + 29, 7, 27, // tri2 + 1, 28, 27 // tri3 + ), + gsSPNTriangles_5b(0, 28, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pga_1_v[112], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 2, 3, 6, // tri1 + 4, 2, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_pga_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[5], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 0, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 1, 3, 17, // tri0 + 3, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pga_1_v[20], 20, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 1 // tri2 + ), + gsSPNTriangles_5b(0, 8, 6, // tri0 + 9, 10, 4, // tri1 + 11, 10, 9, // tri2 + 12, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 10, 11, // tri0 + 8, 0, 4, // tri1 + 4, 10, 8, // tri2 + 4, 0, 2 // tri3 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 9, 4, 3, // tri1 + 6, 8, 12, // tri2 + 1, 0, 6 // tri3 + ), + gsSPNTriangles_5b(3, 13, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 14, 18 // tri2 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pga_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[192], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[197], 23, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 2, 4, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 1, 10, // tri0 + 3, 11, 12, // tri1 + 0, 2, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 17, 16, // tri0 + 4, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 22, 26, 23 // tri2 + ), + gsSPNTriangles_5b(25, 27, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pga_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[220], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[228], 13, 8), + gsSPNTrianglesInit_5b(8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 3, 0, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 5, 4, 15, // tri1 + 1, 6, 16, // tri2 + 7, 18, 17 // tri3 + ), + gsSPNTriangles_5b(0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pga_1_v[241], 24, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 4, 1, 0, // tri1 + 9, 10, 6, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 10, 11, 7, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 + ), + gsSPNTriangles_5b(7, 6, 10, // tri0 + 19, 20, 21, // tri1 + 13, 12, 22, // tri2 + 23, 19, 21 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_pga_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[119], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[124], 23, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 4, 2, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 3, 10, // tri0 + 3, 11, 12, // tri1 + 2, 0, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 17, 16, // tri0 + 3, 4, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 23, 26, 24 // tri2 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_pga_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[147], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[155], 13, 8), + gsSPNTrianglesInit_5b(8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 3, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 4, 5, 15, // tri1 + 6, 1, 16, // tri2 + 7, 18, 17 // tri3 + ), + gsSPNTriangles_5b(0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pga_1_v[168], 24, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 1, 3, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 7, 13, 9, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 19, 20, 21, // tri1 + 22, 12, 11, // tri2 + 19, 21, 23 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_pga_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[265], 32, 0), + gsSPNTrianglesInit_5b(40, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 3, 12, 0, // tri2 + 13, 14, 5 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 1, 20, 2, // tri2 + 3, 19, 18 // tri3 + ), + gsSPNTriangles_5b(7, 17, 16, // tri0 + 21, 4, 18, // tri1 + 17, 4, 21, // tri2 + 8, 22, 9 // tri3 + ), + gsSPNTriangles_5b(21, 15, 17, // tri0 + 18, 20, 21, // tri1 + 3, 18, 23, // tri2 + 21, 20, 24 // tri3 + ), + gsSPNTriangles_5b(21, 24, 15, // tri0 + 8, 15, 22, // tri1 + 2, 19, 3, // tri2 + 16, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 7, // tri0 + 13, 17, 7, // tri1 + 23, 25, 26, // tri2 + 27, 6, 5 // tri3 + ), + gsSPNTriangles_5b(27, 5, 28, // tri0 + 23, 18, 6, // tri1 + 6, 18, 4, // tri2 + 4, 17, 5 // tri3 + ), + gsSPNTriangles_5b(25, 23, 6, // tri0 + 5, 17, 13, // tri1 + 14, 13, 10, // tri2 + 13, 7, 10 // tri3 + ), + gsSPNTriangles_5b(26, 3, 23, // tri0 + 12, 3, 26, // tri1 + 12, 26, 29, // tri2 + 28, 30, 31 // tri3 + ), + gsSPNTriangles_5b(28, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_pga_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[408], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[413], 5, 5), + gsSPNTrianglesInit_5b(5, // tri count + 2, 5, 0, // tri0 + 0, 6, 3, // tri1 + 1, 7, 2 // tri2 + ), + gsSPNTriangles_5b(4, 8, 1, // tri0 + 4, 3, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_pga_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[344], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[347], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pga_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[365], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[369], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pga_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[383], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_pga_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[297], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[300], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pga_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[318], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pga_1_v[322], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pga_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[336], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_pga_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pga_1_v[391], 17, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 3, 9, 10, // tri1 + 7, 6, 11, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(6, 14, 13, // tri0 + 6, 13, 11, // tri1 + 12, 15, 11, // tri2 + 1, 0, 14 // tri3 + ), + gsSPNTriangles_5b(14, 5, 1, // tri0 + 14, 10, 13, // tri1 + 14, 6, 5, // tri2 + 0, 10, 14 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 6, 7, 4, // tri1 + 11, 15, 7, // tri2 + 16, 3, 2 // tri3 + ), + gsSPNTriangles_5b(10, 0, 3, // tri0 + 10, 9, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pga_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pga_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_pga_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_pga_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-650 }, + /* joint 11 */ { tail1_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pga_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,-500,0 }, + /* joint 15 */ { Larm1_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pga_model, 0, cKF_JOINT_FLAG_DISP_OPA, 801,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,500,0 }, + /* joint 18 */ { Rarm1_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 801,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1274,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1050,0,1350 }, + /* joint 23 */ { mouth_pga_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pga_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1501,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pga_1 = { 26, 15, cKF_je_r_pga_1_tbl }; diff --git a/src/data/npc/model/mdl/pgb_1.c b/src/data/npc/model/mdl/pgb_1.c new file mode 100644 index 00000000..d4f76fc4 --- /dev/null +++ b/src/data/npc/model/mdl/pgb_1.c @@ -0,0 +1,764 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pgb_1_v[] = { +#include "assets/npc/mdl/pgb_1_v.inc" +}; + +static Gfx head_pgb_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[29], 29, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 9, 10, 3, // tri1 + 11, 6, 3, // tri2 + 2, 9, 6 // tri3 + ), + gsSPNTriangles_5b(10, 9, 2, // tri0 + 6, 11, 12, // tri1 + 3, 6, 9, // tri2 + 12, 7, 6 // tri3 + ), + gsSPNTriangles_5b(8, 0, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 15, 14, 16, // tri1 + 15, 16, 17 // tri2 + ), + gsSPNTriangles_5b(13, 18, 14, // tri0 + 19, 17, 16, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 20, 21, 22, // tri0 + 23, 21, 20, // tri1 + 24, 22, 21 // tri2 + ), + gsSPNTriangles_5b(21, 23, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 26, 27, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPVertex(&pgb_1_v[58], 11, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 8, 9, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[69], 31, 0), + gsSPNTrianglesInit_5b(50, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 2, 4, // tri0 + 7, 8, 9, // tri1 + 10, 11, 7, // tri2 + 7, 12, 13 // tri3 + ), + gsSPNTriangles_5b(5, 4, 14, // tri0 + 5, 14, 15, // tri1 + 16, 5, 15, // tri2 + 16, 11, 10 // tri3 + ), + gsSPNTriangles_5b(17, 16, 10, // tri0 + 8, 18, 9, // tri1 + 0, 19, 20, // tri2 + 8, 14, 18 // tri3 + ), + gsSPNTriangles_5b(18, 2, 1, // tri0 + 7, 11, 8, // tri1 + 8, 11, 15, // tri2 + 15, 14, 8 // tri3 + ), + gsSPNTriangles_5b(21, 12, 9, // tri0 + 2, 3, 0, // tri1 + 9, 1, 21, // tri2 + 17, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 22, 17, // tri0 + 24, 17, 10, // tri1 + 1, 0, 20, // tri2 + 12, 7, 9 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 13, 10, 7, // tri1 + 9, 18, 1, // tri2 + 5, 16, 6 // tri3 + ), + gsSPNTriangles_5b(2, 18, 14, // tri0 + 14, 4, 2, // tri1 + 15, 11, 16, // tri2 + 6, 23, 27 // tri3 + ), + gsSPNTriangles_5b(25, 28, 3, // tri0 + 27, 23, 28, // tri1 + 27, 28, 25, // tri2 + 3, 6, 26 // tri3 + ), + gsSPNTriangles_5b(26, 25, 3, // tri0 + 6, 27, 26, // tri1 + 28, 19, 0, // tri2 + 23, 6, 17 // tri3 + ), + gsSPNTriangles_5b(23, 22, 29, // tri0 + 29, 22, 30, // tri1 + 29, 19, 28, // tri2 + 29, 28, 23 // tri3 + ), + gsSPNTriangles_5b(30, 19, 29, // tri0 + 6, 16, 17, // tri1 + 0, 3, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pgb_1_v[100], 10, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 4, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 7, 8, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_pgb_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[0], 29, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 6, 5, // tri0 + 9, 1, 0, // tri1 + 10, 4, 6, // tri2 + 10, 6, 8 // tri3 + ), + gsSPNTriangles_5b(8, 11, 10, // tri0 + 12, 11, 8, // tri1 + 10, 11, 9, // tri2 + 4, 3, 7 // tri3 + ), + gsSPNTriangles_5b(7, 6, 4, // tri0 + 5, 7, 13, // tri1 + 0, 4, 10, // tri2 + 5, 14, 12 // tri3 + ), + gsSPNTriangles_5b(0, 10, 9, // tri0 + 2, 3, 0, // tri1 + 13, 14, 5, // tri2 + 12, 8, 5 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 20, 21 // tri2 + ), + gsSPNTriangles_5b(17, 19, 18, // tri0 + 17, 18, 15, // tri1 + 15, 22, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 23, 24, 25, // tri0 + 26, 27, 24, // tri1 + 28, 23, 25 // tri2 + ), + gsSPNTriangles_5b(23, 26, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pgb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[183], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[188], 23, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 2, 4, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 1, 10, // tri0 + 3, 11, 12, // tri1 + 0, 2, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 17, 16, // tri0 + 4, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 22, 26, 23 // tri2 + ), + gsSPNTriangles_5b(25, 27, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pgb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[211], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[219], 13, 8), + gsSPNTrianglesInit_5b(8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 3, 0, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 5, 4, 15, // tri1 + 1, 6, 16, // tri2 + 7, 18, 17 // tri3 + ), + gsSPNTriangles_5b(0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pgb_1_v[232], 24, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 4, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 4, 1, 0, // tri1 + 9, 10, 6, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 10, 11, 7, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 + ), + gsSPNTriangles_5b(7, 6, 10, // tri0 + 19, 20, 21, // tri1 + 13, 12, 22, // tri2 + 23, 19, 21 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_pgb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[110], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[115], 23, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 4, 2, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 3, 10, // tri0 + 3, 11, 12, // tri1 + 2, 0, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 17, 16, // tri0 + 3, 4, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 22, 23, 24, // tri0 + 24, 25, 22, // tri1 + 23, 26, 24 // tri2 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_pgb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[138], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[146], 13, 8), + gsSPNTrianglesInit_5b(8, // tri count + 2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 3, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 4, 5, 15, // tri1 + 6, 1, 16, // tri2 + 7, 18, 17 // tri3 + ), + gsSPNTriangles_5b(0, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pgb_1_v[159], 24, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 2, 1, 3, // tri1 + 8, 9, 10, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 7, 13, 9, // tri1 + 16, 17, 14, // tri2 + 8, 18, 6 // tri3 + ), + gsSPNTriangles_5b(9, 8, 7, // tri0 + 19, 20, 21, // tri1 + 22, 12, 11, // tri2 + 19, 21, 23 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_pgb_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[256], 32, 0), + gsSPNTrianglesInit_5b(40, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 7, 11, // tri1 + 3, 12, 0, // tri2 + 13, 14, 5 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 1, 20, 2, // tri2 + 3, 19, 18 // tri3 + ), + gsSPNTriangles_5b(7, 17, 16, // tri0 + 21, 4, 18, // tri1 + 17, 4, 21, // tri2 + 8, 22, 9 // tri3 + ), + gsSPNTriangles_5b(21, 15, 17, // tri0 + 18, 20, 21, // tri1 + 3, 18, 23, // tri2 + 21, 20, 24 // tri3 + ), + gsSPNTriangles_5b(21, 24, 15, // tri0 + 8, 15, 22, // tri1 + 2, 19, 3, // tri2 + 16, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 11, 7, // tri0 + 13, 17, 7, // tri1 + 23, 25, 26, // tri2 + 27, 6, 5 // tri3 + ), + gsSPNTriangles_5b(27, 5, 28, // tri0 + 23, 18, 6, // tri1 + 6, 18, 4, // tri2 + 4, 17, 5 // tri3 + ), + gsSPNTriangles_5b(25, 23, 6, // tri0 + 5, 17, 13, // tri1 + 14, 13, 10, // tri2 + 13, 7, 10 // tri3 + ), + gsSPNTriangles_5b(26, 3, 23, // tri0 + 12, 3, 26, // tri1 + 12, 26, 29, // tri2 + 28, 30, 31 // tri3 + ), + gsSPNTriangles_5b(28, 31, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_pgb_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[399], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[404], 5, 5), + gsSPNTrianglesInit_5b(5, // tri count + 2, 5, 0, // tri0 + 0, 6, 3, // tri1 + 1, 7, 2 // tri2 + ), + gsSPNTriangles_5b(4, 8, 1, // tri0 + 4, 3, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_pgb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[335], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[338], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pgb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[356], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[360], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pgb_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[374], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_pgb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[288], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[291], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pgb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[309], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgb_1_v[313], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pgb_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x740, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[327], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_pgb_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgb_1_v[382], 17, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 3, 9, 10, // tri1 + 7, 6, 11, // tri2 + 12, 13, 10 // tri3 + ), + gsSPNTriangles_5b(6, 14, 13, // tri0 + 6, 13, 11, // tri1 + 12, 15, 11, // tri2 + 1, 0, 14 // tri3 + ), + gsSPNTriangles_5b(14, 5, 1, // tri0 + 14, 10, 13, // tri1 + 14, 6, 5, // tri2 + 0, 10, 14 // tri3 + ), + gsSPNTriangles_5b(11, 13, 12, // tri0 + 6, 7, 4, // tri1 + 11, 15, 7, // tri2 + 16, 3, 2 // tri3 + ), + gsSPNTriangles_5b(10, 0, 3, // tri0 + 10, 9, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pgb_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pgb_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_pgb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_pgb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-650 }, + /* joint 11 */ { tail1_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pgb_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,-500,0 }, + /* joint 15 */ { Larm1_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pgb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,500,0 }, + /* joint 18 */ { Rarm1_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 799,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1274,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1050,0,1350 }, + /* joint 23 */ { mouth_pgb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pgb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1601,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pgb_1 = { 26, 15, cKF_je_r_pgb_1_tbl }; diff --git a/src/data/npc/model/mdl/pgn_1.c b/src/data/npc/model/mdl/pgn_1.c new file mode 100644 index 00000000..3f998fb4 --- /dev/null +++ b/src/data/npc/model/mdl/pgn_1.c @@ -0,0 +1,664 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pgn_1_v[] = { +#include "assets/npc/mdl/pgn_1_v.inc" +}; + +static Gfx head_pgn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[13], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[22], 9, 9), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 9, // tri0 + 1, 11, 10, // tri1 + 7, 0, 12 // tri2 + ), + gsSPNTriangles_5b(0, 14, 13, // tri0 + 1, 4, 15, // tri1 + 4, 17, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pgn_1_v[31], 14, 9), + gsSPNTrianglesInit_5b(9, // tri count + 5, 6, 9, // tri0 + 6, 11, 10, // tri1 + 8, 13, 12 // tri2 + ), + gsSPNTriangles_5b(8, 5, 14, // tri0 + 2, 8, 15, // tri1 + 5, 16, 17, // tri2 + 2, 18, 19 // tri3 + ), + gsSPNTriangles_5b(3, 2, 20, // tri0 + 2, 22, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pgn_1_v[45], 16, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 0, 5 // tri2 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 6, 4, 7, // tri1 + 6, 7, 8, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 11, 12, // tri0 + 4, 3, 13, // tri1 + 13, 7, 4, // tri2 + 9, 0, 4 // tri3 + ), + gsSPNTriangles_5b(9, 4, 6, // tri0 + 8, 14, 15, // tri1 + 8, 15, 6, // tri2 + 6, 15, 10 // tri3 + ), + gsSPNTriangles_5b(6, 10, 9, // tri0 + 12, 1, 0, // tri1 + 12, 0, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pgn_1_v[61], 31, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 2 // tri2 + ), + gsSPNTriangles_5b(3, 6, 7, // tri0 + 8, 7, 9, // tri1 + 9, 10, 8, // tri2 + 11, 0, 12 // tri3 + ), + gsSPNTriangles_5b(11, 1, 0, // tri0 + 13, 14, 4, // tri1 + 15, 14, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 0, 2, // tri0 + 12, 0, 20, // tri1 + 13, 7, 8, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(18, 17, 20, // tri0 + 20, 17, 21, // tri1 + 22, 16, 13, // tri2 + 23, 22, 13 // tri3 + ), + gsSPNTriangles_5b(20, 21, 24, // tri0 + 3, 7, 13, // tri1 + 5, 18, 20, // tri2 + 13, 4, 3 // tri3 + ), + gsSPNTriangles_5b(2, 5, 20, // tri0 + 6, 3, 2, // tri1 + 6, 2, 1, // tri2 + 12, 25, 11 // tri3 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 13, 8, 23, // tri1 + 24, 12, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 26, 27, 28, // tri0 + 27, 26, 29, // tri1 + 30, 28, 27 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pgn_1_v[92], 23, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(6, 7, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 8, 9, 10, // tri0 + 11, 12, 8, // tri1 + 9, 8, 12 // tri2 + ), + gsSPNTriangles_5b(10, 13, 8, // tri0 + 8, 14, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 15, 16, 17, // tri0 + 17, 18, 15, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 19, 20, 21, // tri0 + 21, 22, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_pgn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[5], 8, 5), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 5, // tri0 + 2, 7, 6, // tri1 + 0, 9, 8 // tri2 + ), + gsSPNTriangles_5b(4, 2, 10, // tri0 + 3, 0, 11, // tri1 + 1, 4, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pgn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[145], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[148], 15, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 1, 2, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 1, 10, 0, // tri1 + 2, 11, 12, // tri2 + 2, 0, 13 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pgn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[163], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[166], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 2, 3, 4, // tri0 + 1, 2, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 2, 0, 10, // tri1 + 0, 1, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_pgn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[115], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[118], 15, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 2, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 0, 10, 1, // tri1 + 2, 11, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_pgn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[133], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[136], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 2, 3, 4, // tri0 + 2, 1, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 0, 2, 10, // tri1 + 1, 0, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_pgn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[175], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[186], 19, 11), + gsSPNTrianglesInit_5b(13, // tri count + 1, 12, 11, // tri0 + 3, 0, 13, // tri1 + 3, 14, 15 // tri2 + ), + gsSPNTriangles_5b(0, 17, 16, // tri0 + 0, 2, 18, // tri1 + 9, 5, 19, // tri2 + 7, 6, 20 // tri3 + ), + gsSPNTriangles_5b(5, 8, 21, // tri0 + 10, 23, 22, // tri1 + 6, 4, 24, // tri2 + 6, 26, 25 // tri3 + ), + gsSPNTriangles_5b(5, 28, 27, // tri0 + 2, 1, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pgn_1_v[205], 5, 11), + gsSPNTrianglesInit_5b(3, // tri count + 1, 9, 11, // tri0 + 9, 13, 12, // tri1 + 4, 15, 14 // tri2 + ), + gsSPVertex(&pgn_1_v[210], 21, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 9, 10, 11, // tri1 + 12, 13, 11, // tri2 + 1, 13, 12 // tri3 + ), + gsSPNTriangles_5b(14, 6, 4, // tri0 + 1, 15, 2, // tri1 + 4, 16, 14, // tri2 + 12, 15, 1 // tri3 + ), + gsSPNTriangles_5b(14, 8, 7, // tri0 + 17, 16, 3, // tri1 + 3, 16, 4, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(2, 15, 19, // tri0 + 15, 20, 19, // tri1 + 8, 10, 9, // tri2 + 11, 13, 0 // tri3 + ), + gsSPNTriangles_5b(11, 10, 12, // tri0 + 7, 6, 14, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_pgn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[231], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[236], 14, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 5, // tri0 + 0, 4, 6, // tri1 + 4, 3, 7 // tri2 + ), + gsSPNTriangles_5b(3, 9, 8, // tri0 + 0, 10, 1, // tri1 + 2, 1, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_pgn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[301], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[305], 18, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 2, 1, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 3, 9, // tri0 + 1, 0, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 16, 17, 13, // tri1 + 13, 15, 16 // tri2 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pgn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[323], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[328], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 2, 3, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 2, 10, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pgn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[342], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 0, 8, // tri0 + 6, 9, 4, // tri1 + 0, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_pgn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[250], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[254], 18, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 1, 2, 8 // tri2 + ), + gsSPNTriangles_5b(3, 0, 9, // tri0 + 0, 1, 10, // tri1 + 0, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 17, 13, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pgn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[272], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pgn_1_v[277], 14, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 5, 6, // tri0 + 3, 2, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 0, 10, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pgn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[291], 10, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 3, 8, // tri0 + 6, 9, 4, // tri1 + 2, 8, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_pgn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pgn_1_v[352], 30, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 6, // tri0 + 9, 10, 11, // tri1 + 11, 12, 9, // tri2 + 9, 0, 10 // tri3 + ), + gsSPNTriangles_5b(1, 13, 8, // tri0 + 10, 0, 2, // tri1 + 7, 14, 6, // tri2 + 6, 14, 2 // tri3 + ), + gsSPNTriangles_5b(8, 2, 1, // tri0 + 5, 7, 3, // tri1 + 7, 5, 12, // tri2 + 7, 12, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(18, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 15 // tri2 + ), + gsSPNTriangles_5b(20, 23, 18, // tri0 + 24, 15, 17, // tri1 + 21, 18, 23, // tri2 + 21, 25, 18 // tri3 + ), + gsSPNTriangles_5b(21, 24, 25, // tri0 + 22, 21, 26, // tri1 + 17, 27, 24, // tri2 + 15, 22, 16 // tri3 + ), + gsSPNTriangles_5b(22, 26, 28, // tri0 + 26, 29, 28, // tri1 + 28, 16, 22, // tri2 + 20, 29, 26 // tri3 + ), + gsSPNTriangles_5b(20, 26, 23, // tri0 + 15, 24, 21, // tri1 + 23, 26, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pgn_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pgn_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-700,0 }, + /* joint 3 */ { Lfoot1_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_pgn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,700,0 }, + /* joint 7 */ { Rfoot1_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_pgn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -200,0,-1200 }, + /* joint 11 */ { tail1_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pgn_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,-1650,0 }, + /* joint 15 */ { Larm1_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pgn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,1650,0 }, + /* joint 18 */ { Rarm1_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 651,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 649,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1500,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 400,0,1300 }, + /* joint 23 */ { mouth_pgn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pgn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 950,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pgn_1 = { 26, 15, cKF_je_r_pgn_1_tbl }; diff --git a/src/data/npc/model/mdl/pig_1.c b/src/data/npc/model/mdl/pig_1.c new file mode 100644 index 00000000..64d1f4bd --- /dev/null +++ b/src/data/npc/model/mdl/pig_1.c @@ -0,0 +1,558 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pig_1_v[] = { +#include "assets/npc/mdl/pig_1_v.inc" +}; + +static Gfx head_pig_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[0], 23, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 5, 8, 3, // tri1 + 0, 4, 9, // tri2 + 0, 9, 10 // tri3 + ), + gsSPNTriangles_5b(4, 3, 9, // tri0 + 11, 12, 4, // tri1 + 11, 4, 0, // tri2 + 13, 10, 9 // tri3 + ), + gsSPNTriangles_5b(13, 9, 14, // tri0 + 14, 9, 3, // tri1 + 13, 6, 10, // tri2 + 6, 13, 15 // tri3 + ), + gsSPNTriangles_5b(6, 15, 16, // tri0 + 1, 6, 16, // tri1 + 17, 14, 18, // tri2 + 18, 3, 8 // tri3 + ), + gsSPNTriangles_5b(18, 14, 3, // tri0 + 17, 15, 13, // tri1 + 17, 13, 14, // tri2 + 4, 12, 7 // tri3 + ), + gsSPNTriangles_5b(2, 11, 0, // tri0 + 11, 2, 19, // tri1 + 20, 21, 12, // tri2 + 20, 12, 11 // tri3 + ), + gsSPNTriangles_5b(12, 21, 22, // tri0 + 22, 7, 12, // tri1 + 19, 20, 11, // tri2 + 10, 6, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pig_1_v[23], 30, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 4, 3 // tri2 + ), + gsSPNTriangles_5b(7, 1, 0, // tri0 + 6, 1, 7, // tri1 + 7, 0, 8, // tri2 + 8, 0, 9 // tri3 + ), + gsSPNTriangles_5b(3, 2, 1, // tri0 + 10, 11, 6, // tri1 + 7, 12, 10, // tri2 + 13, 2, 14 // tri3 + ), + gsSPNTriangles_5b(15, 9, 0, // tri0 + 16, 4, 6, // tri1 + 11, 17, 16, // tri2 + 11, 16, 6 // tri3 + ), + gsSPNTriangles_5b(0, 13, 15, // tri0 + 15, 18, 9, // tri1 + 10, 6, 7, // tri2 + 8, 12, 7 // tri3 + ), + gsSPNTriangles_5b(3, 1, 6, // tri0 + 2, 13, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(15, // tri count + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 24, 25, 22 // tri2 + ), + gsSPNTriangles_5b(22, 26, 23, // tri0 + 26, 22, 25, // tri1 + 20, 27, 21, // tri2 + 28, 21, 27 // tri3 + ), + gsSPNTriangles_5b(21, 29, 19, // tri0 + 19, 29, 22, // tri1 + 24, 28, 27, // tri2 + 21, 28, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 29, // tri0 + 24, 29, 21, // tri1 + 26, 25, 24, // tri2 + 24, 27, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pig_1_v[53], 14, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 2, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 5, 1, 8, // tri1 + 1, 4, 8, // tri2 + 5, 9, 10 // tri3 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 10, 11, 5, // tri1 + 3, 0, 12, // tri2 + 2, 11, 13 // tri3 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 1, 0, 4, // tri1 + 8, 9, 5, // tri2 + 2, 5, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[103], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[108], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[124], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[128], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_pig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[67], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[72], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_pig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[88], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[92], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_pig_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[139], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[146], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 4, 7, 1, // tri0 + 5, 0, 8, // tri1 + 2, 6, 9 // tri2 + ), + gsSPNTriangles_5b(6, 3, 10, // tri0 + 1, 11, 12, // tri1 + 0, 13, 14, // tri2 + 0, 15, 16 // tri3 + ), + gsSPNTriangles_5b(1, 18, 17, // tri0 + 2, 19, 20, // tri1 + 2, 21, 0, // tri2 + 3, 22, 23 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 3, 1, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pig_1_v[166], 11, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 1, 9, // tri0 + 10, 6, 0, // tri1 + 2, 1, 8, // tri2 + 7, 3, 5 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_pig_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[177], 31, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 11, 12, 4, // tri2 + 11, 4, 13 // tri3 + ), + gsSPNTriangles_5b(14, 15, 12, // tri0 + 16, 17, 18, // tri1 + 0, 3, 19, // tri2 + 0, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 12, 15, // tri2 + 4, 12, 27 // tri3 + ), + gsSPNTriangles_5b(27, 5, 4, // tri0 + 4, 6, 25, // tri1 + 22, 14, 12, // tri2 + 17, 16, 24 // tri3 + ), + gsSPNTriangles_5b(23, 7, 28, // tri0 + 25, 24, 4, // tri1 + 12, 23, 22, // tri2 + 24, 26, 17 // tri3 + ), + gsSPNTriangles_5b(28, 21, 23, // tri0 + 18, 29, 30, // tri1 + 18, 30, 16, // tri2 + 10, 28, 7 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[257], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[262], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 20, 17, 21 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pig_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[279], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[283], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(15, 19, 20, // tri0 + 21, 22, 18, // tri1 + 20, 16, 15, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[208], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[213], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 20, 15, 21 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pig_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[230], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pig_1_v[235], 22, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 5, // tri0 + 1, 6, 7, // tri1 + 0, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 11, 12, // tri1 + 1, 13, 0, // tri2 + 4, 0, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 15, 21, 16 // tri2 + ), + gsSPNTriangles_5b(20, 22, 18, // tri0 + 23, 15, 17, // tri1 + 17, 19, 23, // tri2 + 19, 18, 23 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 24, 25, 26, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_pig_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pig_1_v[305], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 4, 0, 2, // tri1 + 0, 9, 1, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 12, 11, // tri1 + 3, 0, 4, // tri2 + 13, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pig_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pig_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pig_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pig_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pig_1 = { 26, 12, cKF_je_r_pig_1_tbl }; diff --git a/src/data/npc/model/mdl/pkn_1.c b/src/data/npc/model/mdl/pkn_1.c new file mode 100644 index 00000000..edc06b44 --- /dev/null +++ b/src/data/npc/model/mdl/pkn_1.c @@ -0,0 +1,534 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pkn_1_v[] = { +#include "assets/npc/mdl/pkn_1_v.inc" +}; + +static Gfx head_pkn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[0], 31, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 4, 0, 3, // tri1 + 5, 1, 0, // tri2 + 3, 8, 5 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(28, // tri count + 9, 10, 11, // tri0 + 12, 11, 13, // tri1 + 11, 10, 14 // tri2 + ), + gsSPNTriangles_5b(14, 10, 15, // tri0 + 14, 15, 16, // tri1 + 17, 18, 19, // tri2 + 20, 15, 21 // tri3 + ), + gsSPNTriangles_5b(16, 15, 20, // tri0 + 21, 22, 20, // tri1 + 19, 23, 17, // tri2 + 19, 12, 23 // tri3 + ), + gsSPNTriangles_5b(23, 12, 13, // tri0 + 24, 12, 19, // tri1 + 10, 21, 15, // tri2 + 24, 10, 9 // tri3 + ), + gsSPNTriangles_5b(24, 21, 10, // tri0 + 25, 26, 17, // tri1 + 22, 27, 20, // tri2 + 28, 18, 17 // tri3 + ), + gsSPNTriangles_5b(17, 23, 25, // tri0 + 13, 25, 23, // tri1 + 20, 29, 16, // tri2 + 21, 24, 30 // tri3 + ), + gsSPNTriangles_5b(30, 24, 19, // tri0 + 30, 22, 21, // tri1 + 19, 18, 30, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(9, 12, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPVertex(&pkn_1_v[31], 26, 0), + gsSPNTrianglesInit_5b(43, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 8, 1, 9, // tri1 + 10, 3, 0, // tri2 + 2, 1, 8 // tri3 + ), + gsSPNTriangles_5b(4, 3, 11, // tri0 + 12, 13, 14, // tri1 + 11, 3, 10, // tri2 + 14, 13, 0 // tri3 + ), + gsSPNTriangles_5b(0, 13, 15, // tri0 + 15, 13, 12, // tri1 + 16, 17, 18, // tri2 + 18, 17, 0 // tri3 + ), + gsSPNTriangles_5b(9, 1, 0, // tri0 + 2, 8, 19, // tri1 + 0, 2, 18, // tri2 + 0, 17, 20 // tri3 + ), + gsSPNTriangles_5b(20, 17, 16, // tri0 + 7, 5, 21, // tri1 + 22, 23, 24, // tri2 + 24, 23, 0 // tri3 + ), + gsSPNTriangles_5b(21, 5, 0, // tri0 + 0, 6, 24, // tri1 + 0, 23, 25, // tri2 + 25, 23, 22 // tri3 + ), + gsSPNTriangles_5b(6, 7, 22, // tri0 + 15, 9, 0, // tri1 + 0, 25, 14, // tri2 + 0, 20, 10 // tri3 + ), + gsSPNTriangles_5b(4, 21, 0, // tri0 + 8, 9, 15, // tri1 + 14, 25, 22, // tri2 + 14, 22, 12 // tri3 + ), + gsSPNTriangles_5b(7, 21, 4, // tri0 + 10, 20, 16, // tri1 + 10, 16, 11, // tri2 + 15, 12, 8 // tri3 + ), + gsSPNTriangles_5b(22, 24, 6, // tri0 + 4, 11, 7, // tri1 + 18, 2, 19, // tri2 + 19, 16, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[57], 22, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(0, 2, 7, // tri0 + 4, 8, 7, // tri1 + 9, 2, 1, // tri2 + 6, 8, 4 // tri3 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 11, 12, 9, // tri1 + 8, 0, 7, // tri2 + 11, 9, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 13, 14, 15, // tri0 + 16, 14, 13, // tri1 + 14, 16, 17 // tri2 + ), + gsSPNTriangles_5b(18, 15, 14, // tri0 + 13, 19, 16, // tri1 + 14, 17, 20, // tri2 + 15, 21, 13 // tri3 + ), + gsSPNTriangles_5b(20, 18, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pkn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[113], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[117], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 2, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 11, 10, // tri1 + 2, 12, 3, // tri2 + 1, 3, 13 // tri3 + ), + gsSPNTriangles_5b(1, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 17, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pkn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[133], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[136], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 0, 4, 5, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 1, 10, // tri1 + 1, 0, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_pkn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[79], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[83], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 2, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 1, 11, 10, // tri1 + 3, 12, 2, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(1, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_pkn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[99], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[102], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 0, 4, 5, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 2, 10, // tri1 + 0, 1, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_pkn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[147], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[153], 20, 6), + gsSPNTrianglesInit_5b(13, // tri count + 4, 6, 1, // tri0 + 4, 0, 7, // tri1 + 2, 5, 8 // tri2 + ), + gsSPNTriangles_5b(5, 3, 9, // tri0 + 1, 10, 11, // tri1 + 0, 12, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 1, 16, // tri0 + 5, 17, 18, // tri1 + 3, 19, 20, // tri2 + 2, 21, 0 // tri3 + ), + gsSPNTriangles_5b(1, 23, 22, // tri0 + 2, 24, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pkn_1_v[173], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 4, 5, 0, // tri1 + 4, 0, 2, // tri2 + 6, 5, 4 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pkn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[228], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[233], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 1, 5, 6, // tri0 + 2, 3, 7, // tri1 + 1, 2, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 4, 0, 10, // tri1 + 0, 12, 11, // tri2 + 2, 14, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 20, 21, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pkn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[250], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[254], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 0, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 3, 2, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 + ), + gsSPNTriangles_5b(21, 19, 18, // tri0 + 21, 18, 14, // tri1 + 14, 16, 21, // tri2 + 19, 22, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pkn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[180], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[185], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 1, 5, 6, // tri0 + 3, 2, 7, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 0, 4, 10, // tri1 + 0, 12, 11, // tri2 + 2, 14, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 18 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pkn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[202], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pkn_1_v[206], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 1, 5, 0, // tri1 + 0, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 2, 9, 10, // tri1 + 1, 11, 12, // tri2 + 2, 3, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 14, 20, 15 // tri2 + ), + gsSPNTriangles_5b(18, 17, 21, // tri0 + 16, 18, 21, // tri1 + 21, 14, 16, // tri2 + 19, 22, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_pkn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pkn_1_v[276], 12, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 4, 0, 2, // tri1 + 0, 9, 1, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(7, 11, 8, // tri0 + 10, 1, 11, // tri1 + 3, 0, 4, // tri2 + 9, 11, 1 // tri3 + ), + gsSPNTriangles_5b(8, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pkn_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pkn_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pkn_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pkn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pkn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pkn_1 = { 26, 11, cKF_je_r_pkn_1_tbl }; diff --git a/src/data/npc/model/mdl/pla_1.c b/src/data/npc/model/mdl/pla_1.c new file mode 100644 index 00000000..8abd8917 --- /dev/null +++ b/src/data/npc/model/mdl/pla_1.c @@ -0,0 +1,695 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx pla_1_v[] = { +#include "assets/npc/mdl/pla_1_v.inc" +}; + +static Gfx head_pla_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[0], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[7], 23, 7), + gsSPNTrianglesInit_5b(12, // tri count + 1, 7, 8, // tri0 + 6, 9, 10, // tri1 + 3, 11, 12 // tri2 + ), + gsSPNTriangles_5b(0, 13, 14, // tri0 + 4, 15, 16, // tri1 + 6, 17, 18, // tri2 + 0, 19, 2 // tri3 + ), + gsSPNTriangles_5b(2, 20, 21, // tri0 + 6, 22, 23, // tri1 + 6, 24, 25, // tri2 + 6, 26, 27 // tri3 + ), + gsSPNTriangles_5b(6, 29, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pla_1_v[30], 22, 7), + gsSPNTrianglesInit_5b(6, // tri count + 2, 7, 1, // tri0 + 3, 1, 8, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 6, 10, // tri0 + 6, 3, 11, // tri1 + 2, 12, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(1, // tri count + 5, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 20, 16, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(16, 20, 24, // tri0 + 25, 26, 21, // tri1 + 27, 17, 16, // tri2 + 21, 23, 28 // tri3 + ), + gsSPNTriangles_5b(28, 25, 21, // tri0 + 25, 28, 16, // tri1 + 16, 28, 23, // tri2 + 18, 25, 16 // tri3 + ), + gsSPNTriangles_5b(16, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[52], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 4, 3, 11, // tri1 + 12, 13, 14, // tri2 + 15, 16, 4 // tri3 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 15, 20, 21, // tri1 + 22, 23, 24, // tri2 + 12, 25, 13 // tri3 + ), + gsSPNTriangles_5b(26, 25, 12, // tri0 + 19, 18, 27, // tri1 + 23, 28, 29, // tri2 + 30, 10, 31 // tri3 + ), + gsSPVertex(&pla_1_v[84], 32, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(7, 9, 8, // tri0 + 10, 11, 12, // tri1 + 13, 4, 14, // tri2 + 15, 16, 9 // tri3 + ), + gsSPNTriangles_5b(6, 5, 4, // tri0 + 4, 13, 17, // tri1 + 18, 6, 4, // tri2 + 15, 9, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 23, 24, 25, // tri1 + 26, 0, 20, // tri2 + 27, 28, 29 // tri3 + ), + gsSPNTriangles_5b(20, 30, 26, // tri0 + 22, 30, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&pla_1_v[115], 32, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 1, 0, 13, // tri2 + 14, 15, 16 // tri3 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 18, 13, 19, // tri1 + 20, 21, 16, // tri2 + 9, 22, 23 // tri3 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 27, 28, 29, // tri1 + 30, 9, 8, // tri2 + 12, 31, 10 // tri3 + ), + gsSPVertex(&pla_1_v[147], 23, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 11, 12, 13, // tri1 + 14, 15, 16, // tri2 + 17, 18, 19 // tri3 + ), + gsSPNTriangles_5b(20, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[170], 21, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 2, 8, // tri0 + 0, 8, 9, // tri1 + 10, 11, 6, // tri2 + 10, 6, 12 // tri3 + ), + gsSPNTriangles_5b(4, 13, 8, // tri0 + 11, 14, 15, // tri1 + 4, 8, 2, // tri2 + 6, 11, 15 // tri3 + ), + gsSPNTriangles_5b(3, 2, 1, // tri0 + 15, 7, 6, // tri1 + 12, 6, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 20, 19, 16 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[191], 24, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 8, 2, // tri0 + 5, 9, 3, // tri1 + 2, 10, 0, // tri2 + 4, 11, 12 // tri3 + ), + gsSPNTriangles_5b(3, 13, 14, // tri0 + 4, 3, 11, // tri1 + 8, 7, 15, // tri2 + 2, 8, 10 // tri3 + ), + gsSPNTriangles_5b(1, 0, 16, // tri0 + 1, 16, 17, // tri1 + 18, 19, 14, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(1, 17, 20, // tri0 + 1, 20, 21, // tri1 + 2, 1, 21, // tri2 + 18, 13, 9 // tri3 + ), + gsSPNTriangles_5b(18, 9, 22, // tri0 + 4, 23, 5, // tri1 + 9, 13, 3, // tri2 + 2, 21, 6 // tri3 + ), + gsSPNTriangles_5b(14, 11, 3, // tri0 + 12, 23, 4, // tri1 + 15, 10, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[215], 29, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 4, 8, 5, // tri1 + 7, 0, 3, // tri2 + 7, 3, 8 // tri3 + ), + gsSPNTriangles_5b(9, 4, 6, // tri0 + 10, 11, 6, // tri1 + 10, 6, 5, // tri2 + 10, 5, 12 // tri3 + ), + gsSPNTriangles_5b(6, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 17, 18, 19, // tri0 + 17, 20, 21, // tri1 + 22, 23, 24 // tri2 + ), + gsSPNTriangles_5b(25, 17, 19, // tri0 + 18, 26, 27, // tri1 + 25, 22, 17, // tri2 + 17, 22, 20 // tri3 + ), + gsSPNTriangles_5b(23, 22, 25, // tri0 + 19, 18, 28, // tri1 + 27, 28, 18, // tri2 + 24, 20, 22 // tri3 + ), + gsSPNTriangles_5b(21, 26, 18, // tri0 + 21, 18, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_pla_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[279], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[283], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_pla_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[299], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[303], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 2, 4, // tri0 + 0, 3, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 1, 13, 12, // tri2 + 0, 14, 2 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_pla_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[244], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[248], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_pla_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[264], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[268], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 1, 4, // tri0 + 3, 0, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 10, 11, // tri1 + 1, 13, 12, // tri2 + 2, 14, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_pla_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[314], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[323], 11, 9), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 9, // tri0 + 1, 6, 10, // tri1 + 2, 0, 11 // tri2 + ), + gsSPNTriangles_5b(0, 13, 12, // tri0 + 1, 15, 14, // tri1 + 6, 16, 17, // tri2 + 2, 18, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[334], 17, 9), + gsSPNTrianglesInit_5b(8, // tri count + 7, 9, 10, // tri0 + 4, 8, 11, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(8, 7, 14, // tri0 + 7, 3, 15, // tri1 + 7, 16, 17, // tri2 + 5, 4, 18 // tri3 + ), + gsSPNTriangles_5b(4, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 24, 25, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&pla_1_v[351], 15, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 2, 9, 0, // tri1 + 6, 11, 7, // tri2 + 9, 12, 10 // tri3 + ), + gsSPNTriangles_5b(8, 13, 6, // tri0 + 10, 13, 8, // tri1 + 5, 7, 3, // tri2 + 14, 8, 7 // tri3 + ), + gsSPNTriangles_5b(9, 8, 14, // tri0 + 14, 0, 9, // tri1 + 7, 5, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_pla_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[366], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[369], 16, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 2, 4, 5, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 0, 9, 10, // tri1 + 2, 1, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 15, 17 // tri2 + ), + gsSPNTriangles_5b(16, 18, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_pla_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[410], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[414], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 2, 3, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 8, // tri0 + 3, 0, 9, // tri1 + 0, 11, 10, // tri2 + 2, 13, 12 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 16, 15 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_pla_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[428], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_pla_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[385], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&pla_1_v[389], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 3, 2, 6, // tri1 + 2, 1, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 0, 3, 9, // tri1 + 0, 11, 10, // tri2 + 2, 13, 12 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 14, 16, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_pla_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[403], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_pla_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&pla_1_v[435], 24, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 1, 0 // tri2 + ), + gsSPNTriangles_5b(6, 5, 0, // tri0 + 0, 2, 7, // tri1 + 5, 8, 9, // tri2 + 10, 3, 2 // tri3 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 9, 1, 5, // tri1 + 5, 11, 8, // tri2 + 8, 3, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 9, // tri0 + 7, 2, 4, // tri1 + 11, 5, 6, // tri2 + 7, 12, 0 // tri3 + ), + gsSPNTriangles_5b(0, 12, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 13, 14, 15, // tri0 + 16, 15, 17, // tri1 + 17, 15, 14 // tri2 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 21, 22, 23, // tri1 + 20, 16, 18, // tri2 + 23, 14, 21 // tri3 + ), + gsSPNTriangles_5b(14, 23, 17, // tri0 + 21, 14, 13, // tri1 + 17, 18, 16, // tri2 + 13, 16, 20 // tri3 + ), + gsSPNTriangles_5b(15, 16, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_pla_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_pla_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,-900 }, + /* joint 11 */ { tail1_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_pla_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,-1100,0 }, + /* joint 15 */ { Larm1_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_pla_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 950,1100,0 }, + /* joint 18 */ { Rarm1_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1201,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_pla_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_pla_1 = { 26, 12, cKF_je_r_pla_1_tbl }; diff --git a/src/data/npc/model/mdl/plb_1.c b/src/data/npc/model/mdl/plb_1.c new file mode 100644 index 00000000..905b7bcb --- /dev/null +++ b/src/data/npc/model/mdl/plb_1.c @@ -0,0 +1,764 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx plb_1_v[] = { +#include "assets/npc/mdl/plb_1_v.inc" +}; + +static Gfx head_plb_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[40], 27, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 4, 0, 2 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(20, // tri count + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 5, 11, 12 // tri2 + ), + gsSPNTriangles_5b(7, 11, 5, // tri0 + 13, 14, 8, // tri1 + 15, 8, 16, // tri2 + 17, 12, 11 // tri3 + ), + gsSPNTriangles_5b(7, 13, 15, // tri0 + 14, 13, 7, // tri1 + 18, 9, 8, // tri2 + 16, 19, 17 // tri3 + ), + gsSPNTriangles_5b(18, 14, 7, // tri0 + 15, 17, 11, // tri1 + 8, 15, 13, // tri2 + 19, 16, 10 // tri3 + ), + gsSPNTriangles_5b(10, 16, 8, // tri0 + 16, 17, 15, // tri1 + 11, 7, 15, // tri2 + 8, 14, 18 // tri3 + ), + gsSPNTriangles_5b(7, 6, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 20, 21, 22, // tri0 + 20, 22, 23, // tri1 + 24, 25, 26 // tri2 + ), + gsSPNTriangles_5b(23, 22, 26, // tri0 + 23, 26, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plb_1_v[67], 28, 0), + gsSPNTrianglesInit_5b(41, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 9, 10, // tri0 + 7, 11, 12, // tri1 + 7, 12, 3, // tri2 + 7, 10, 11 // tri3 + ), + gsSPNTriangles_5b(13, 14, 2, // tri0 + 15, 16, 13, // tri1 + 13, 1, 17, // tri2 + 12, 11, 18 // tri3 + ), + gsSPNTriangles_5b(12, 18, 19, // tri0 + 4, 12, 19, // tri1 + 4, 16, 15, // tri2 + 5, 4, 15 // tri3 + ), + gsSPNTriangles_5b(14, 20, 2, // tri0 + 14, 18, 20, // tri1 + 20, 10, 9, // tri2 + 13, 16, 14 // tri3 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 19, 18, 14, // tri1 + 2, 9, 0, // tri2 + 1, 13, 2 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 17, 15, 13, // tri1 + 2, 20, 9, // tri2 + 12, 4, 3 // tri3 + ), + gsSPNTriangles_5b(10, 20, 18, // tri0 + 18, 11, 10, // tri1 + 19, 16, 4, // tri2 + 3, 24, 23 // tri3 + ), + gsSPNTriangles_5b(21, 8, 7, // tri0 + 23, 24, 25, // tri1 + 23, 25, 21, // tri2 + 7, 3, 22 // tri3 + ), + gsSPNTriangles_5b(22, 21, 7, // tri0 + 3, 23, 22, // tri1 + 24, 3, 5, // tri2 + 8, 26, 6 // tri3 + ), + gsSPNTriangles_5b(5, 27, 24, // tri0 + 10, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plb_1_v[95], 30, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(2, 7, 6, // tri0 + 8, 0, 2, // tri1 + 5, 9, 6, // tri2 + 6, 9, 10 // tri3 + ), + gsSPNTriangles_5b(10, 8, 2, // tri0 + 3, 11, 12, // tri1 + 3, 12, 4, // tri2 + 11, 3, 7 // tri3 + ), + gsSPNTriangles_5b(7, 2, 1, // tri0 + 10, 2, 6, // tri1 + 6, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(13, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 19, 20, 16 // tri2 + ), + gsSPNTriangles_5b(13, 21, 22, // tri0 + 16, 18, 19, // tri1 + 15, 23, 13, // tri2 + 24, 22, 21 // tri3 + ), + gsSPNTriangles_5b(25, 26, 27, // tri0 + 25, 24, 28, // tri1 + 13, 22, 14, // tri2 + 21, 28, 24 // tri3 + ), + gsSPNTriangles_5b(28, 26, 25, // tri0 + 27, 29, 25, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_plb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[5], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 0, 10, // tri0 + 2, 11, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 1, 3, 17, // tri0 + 3, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plb_1_v[20], 20, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 6, // tri0 + 9, 10, 4, // tri1 + 11, 10, 9, // tri2 + 12, 8, 10 // tri3 + ), + gsSPNTriangles_5b(12, 10, 11, // tri0 + 8, 0, 4, // tri1 + 4, 10, 8, // tri2 + 4, 0, 2 // tri3 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 13, 9, 4, // tri1 + 6, 8, 12, // tri2 + 7, 1, 0 // tri3 + ), + gsSPNTriangles_5b(4, 3, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 14, 18 // tri2 + ), + gsSPNTriangles_5b(14, 16, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_plb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[168], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[172], 25, 4), + gsSPNTrianglesInit_5b(9, // tri count + 2, 4, 5, // tri0 + 1, 3, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 0, 10, 11, // tri1 + 1, 12, 13, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(0, 1, 15, // tri0 + 2, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 19, 18, // tri1 + 22, 19, 21 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 24, 28, 25 // tri2 + ), + gsSPNTriangles_5b(25, 27, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_plb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[197], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[200], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 2, 5, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 0, 1, 10, // tri1 + 2, 0, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_plb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[125], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[129], 25, 4), + gsSPNTrianglesInit_5b(9, // tri count + 2, 4, 5, // tri0 + 3, 1, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 0, 10, 11, // tri1 + 1, 12, 13, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 0, 15, // tri0 + 2, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 20, 19, 21, // tri1 + 21, 19, 22 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 23, 24, 25, // tri0 + 26, 27, 23, // tri1 + 23, 28, 24 // tri2 + ), + gsSPNTriangles_5b(25, 26, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_plb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[154], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[157], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 4, // tri0 + 2, 5, 6, // tri1 + 2, 1, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 0, 10, // tri1 + 0, 2, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_plb_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[211], 13, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[224], 6, 13), + gsSPNTrianglesInit_5b(4, // tri count + 12, 9, 13, // tri0 + 9, 14, 15, // tri1 + 11, 10, 16 // tri2 + ), + gsSPNTriangles_5b(11, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[230], 19, 13), + gsSPNTrianglesInit_5b(13, // tri count + 2, 13, 3, // tri0 + 8, 14, 15, // tri1 + 6, 8, 16 // tri2 + ), + gsSPNTriangles_5b(2, 1, 17, // tri0 + 1, 0, 18, // tri1 + 1, 20, 19, // tri2 + 0, 21, 22 // tri3 + ), + gsSPNTriangles_5b(0, 7, 23, // tri0 + 4, 25, 24, // tri1 + 3, 26, 27, // tri2 + 4, 3, 28 // tri3 + ), + gsSPNTriangles_5b(8, 5, 29, // tri0 + 8, 30, 31, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&plb_1_v[249], 11, 13), + gsSPNTrianglesInit_5b(1, // tri count + 5, 4, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(15, 21, 22, // tri0 + 14, 17, 19, // tri1 + 19, 18, 14, // tri2 + 22, 16, 15 // tri3 + ), + gsSPNTriangles_5b(20, 23, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[260], 21, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 5, // tri1 + 7, 13, 12, // tri2 + 12, 14, 7 // tri3 + ), + gsSPNTriangles_5b(5, 1, 12, // tri0 + 12, 1, 0, // tri1 + 12, 0, 14, // tri2 + 15, 14, 0 // tri3 + ), + gsSPNTriangles_5b(16, 4, 3, // tri0 + 8, 17, 6, // tri1 + 11, 10, 6, // tri2 + 6, 17, 11 // tri3 + ), + gsSPNTriangles_5b(11, 18, 9, // tri0 + 19, 0, 2, // tri1 + 15, 0, 20, // tri2 + 14, 8, 7 // tri3 + ), + gsSPNTriangles_5b(5, 4, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_plb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[328], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[331], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_plb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[349], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[353], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_plb_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[367], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_plb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[281], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[284], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_plb_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[302], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plb_1_v[306], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_plb_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[320], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_plb_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plb_1_v[375], 31, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(3, 1, 5, // tri0 + 6, 7, 8, // tri1 + 9, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 13, 8, 14, // tri1 + 12, 15, 16, // tri2 + 9, 17, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 1, 0, 22, // tri1 + 23, 24, 25, // tri2 + 22, 0, 26 // tri3 + ), + gsSPNTriangles_5b(12, 22, 26, // tri0 + 0, 6, 26, // tri1 + 12, 26, 13, // tri2 + 23, 25, 27 // tri3 + ), + gsSPNTriangles_5b(27, 28, 23, // tri0 + 6, 0, 4, // tri1 + 8, 13, 6, // tri2 + 13, 26, 6 // tri3 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 5, 20, 29, // tri1 + 20, 5, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPVertex(&plb_1_v[406], 18, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 4, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 9, 10, 11, // tri2 + 9, 11, 12 // tri3 + ), + gsSPNTriangles_5b(7, 2, 4, // tri0 + 7, 4, 8, // tri1 + 12, 6, 5, // tri2 + 12, 5, 9 // tri3 + ), + gsSPNTriangles_5b(7, 6, 0, // tri0 + 2, 7, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x6C0, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 13, 14, 15, // tri0 + 13, 15, 16, // tri1 + 16, 17, 13 // tri2 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_plb_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_plb_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_plb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_plb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-650 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_plb_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,-500,0 }, + /* joint 15 */ { Larm1_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_plb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,500,0 }, + /* joint 18 */ { Rarm1_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 998,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1274,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1050,0,1350 }, + /* joint 23 */ { mouth_plb_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_plb_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1601,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_plb_1 = { 26, 14, cKF_je_r_plb_1_tbl }; diff --git a/src/data/npc/model/mdl/plc_1.c b/src/data/npc/model/mdl/plc_1.c new file mode 100644 index 00000000..47f669b4 --- /dev/null +++ b/src/data/npc/model/mdl/plc_1.c @@ -0,0 +1,670 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx plc_1_v[] = { +#include "assets/npc/mdl/plc_1_v.inc" +}; + +static Gfx head_plc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[0], 29, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 8, // tri0 + 4, 8, 5, // tri1 + 7, 0, 3, // tri2 + 7, 3, 8 // tri3 + ), + gsSPNTriangles_5b(9, 4, 6, // tri0 + 10, 11, 6, // tri1 + 10, 6, 5, // tri2 + 10, 5, 12 // tri3 + ), + gsSPNTriangles_5b(6, 11, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 13, 14, 15, // tri0 + 15, 16, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 23, 21, 24 // tri2 + ), + gsSPNTriangles_5b(25, 19, 26, // tri0 + 27, 19, 25, // tri1 + 21, 20, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[29], 21, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(5, 4, 0, // tri0 + 7, 9, 10, // tri1 + 9, 11, 12, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(8, 3, 6, // tri0 + 2, 16, 14, // tri1 + 3, 8, 10, // tri2 + 2, 1, 17 // tri3 + ), + gsSPNTriangles_5b(18, 17, 19, // tri0 + 10, 20, 3, // tri1 + 2, 13, 0, // tri2 + 10, 8, 7 // tri3 + ), + gsSPNTriangles_5b(14, 13, 2, // tri0 + 15, 6, 5, // tri1 + 0, 13, 15, // tri2 + 5, 6, 3 // tri3 + ), + gsSPNTriangles_5b(15, 5, 0, // tri0 + 19, 12, 11, // tri1 + 11, 18, 19, // tri2 + 12, 20, 10 // tri3 + ), + gsSPNTriangles_5b(16, 2, 17, // tri0 + 17, 18, 16, // tri1 + 12, 10, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[50], 30, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(4, 2, 1, // tri0 + 5, 4, 6, // tri1 + 5, 6, 7, // tri2 + 8, 9, 10 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 5, 12, 13, // tri1 + 1, 14, 4, // tri2 + 4, 3, 2 // tri3 + ), + gsSPNTriangles_5b(8, 15, 7, // tri0 + 11, 16, 15, // tri1 + 15, 8, 11, // tri2 + 8, 7, 6 // tri3 + ), + gsSPNTriangles_5b(14, 9, 6, // tri0 + 12, 5, 7, // tri1 + 16, 17, 15, // tri2 + 13, 3, 5 // tri3 + ), + gsSPNTriangles_5b(3, 13, 0, // tri0 + 7, 17, 12, // tri1 + 6, 4, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 18, 19, 20, // tri0 + 19, 21, 22, // tri1 + 18, 23, 24 // tri2 + ), + gsSPNTriangles_5b(25, 19, 18, // tri0 + 26, 23, 18, // tri1 + 18, 20, 26, // tri2 + 20, 22, 27 // tri3 + ), + gsSPNTriangles_5b(22, 20, 19, // tri0 + 20, 27, 28, // tri1 + 28, 26, 20, // tri2 + 29, 21, 19 // tri3 + ), + gsSPNTriangles_5b(25, 24, 29, // tri0 + 29, 19, 25, // tri1 + 18, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[80], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 3, 1, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 7, 8, 5, // tri1 + 2, 9, 0, // tri2 + 4, 6, 5 // tri3 + ), + gsSPNTriangles_5b(4, 5, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_plc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[127], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[131], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 1, 4, // tri0 + 2, 5, 0, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 3, 0, 10, // tri1 + 1, 3, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_plc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[144], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[148], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 3, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 12, 13, // tri2 + 3, 1, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_plc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[90], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[94], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 3, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 12, 2, // tri2 + 1, 2, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_plc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[107], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[111], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 2, 6, // tri1 + 2, 3, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 1, 10, 3, // tri1 + 3, 11, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPNTriangles_5b(0, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_plc_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[164], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[174], 18, 10), + gsSPNTrianglesInit_5b(12, // tri count + 1, 0, 10, // tri0 + 3, 4, 11, // tri1 + 4, 12, 13 // tri2 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 2, 16, 17, // tri1 + 2, 18, 19, // tri2 + 4, 8, 20 // tri3 + ), + gsSPNTriangles_5b(3, 21, 22, // tri0 + 0, 23, 24, // tri1 + 6, 1, 25, // tri2 + 2, 3, 26 // tri3 + ), + gsSPNTriangles_5b(0, 2, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[192], 10, 10), + gsSPNTrianglesInit_5b(6, // tri count + 5, 10, 11, // tri0 + 7, 9, 12, // tri1 + 7, 13, 14 // tri2 + ), + gsSPNTriangles_5b(7, 15, 16, // tri0 + 5, 17, 18, // tri1 + 9, 5, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[202], 22, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 2, // tri0 + 7, 4, 1, // tri1 + 6, 5, 8, // tri2 + 9, 6, 10 // tri3 + ), + gsSPNTriangles_5b(9, 2, 6, // tri0 + 2, 9, 0, // tri1 + 2, 11, 5, // tri2 + 4, 11, 2 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(9, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 15, 18, 16 // tri2 + ), + gsSPNTriangles_5b(15, 17, 19, // tri0 + 15, 14, 18, // tri1 + 12, 14, 15, // tri2 + 12, 15, 20 // tri3 + ), + gsSPNTriangles_5b(19, 20, 15, // tri0 + 17, 16, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_plc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[249], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 2, 6, 4, // tri1 + 4, 6, 1, // tri2 + 0, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_plc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[224], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[228], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 1, 8 // tri2 + ), + gsSPNTriangles_5b(3, 9, 10, // tri0 + 2, 11, 12, // tri1 + 2, 3, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 0, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 20, // tri1 + 18, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 22, 21, // tri0 + 23, 21, 20, // tri1 + 20, 21, 19, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b(20, 16, 23, // tri0 + 21, 18, 19, // tri1 + 19, 18, 17, // tri2 + 18, 24, 16 // tri3 + ), + gsSPNTriangles_5b(22, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_plc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[297], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[302], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 4, 5, // tri0 + 3, 6, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 2, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(4, 0, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_plc_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[319], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[325], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 3, 6, 7, // tri0 + 3, 4, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(2, 3, 11, // tri0 + 0, 2, 12, // tri1 + 1, 13, 5, // tri2 + 1, 14, 15 // tri3 + ), + gsSPNTriangles_5b(1, 0, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_plc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[256], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[261], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 0, 5, 6, // tri0 + 3, 7, 8, // tri1 + 2, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 0, 4, 13, // tri1 + 2, 1, 14, // tri2 + 3, 2, 15 // tri3 + ), + gsSPNTriangles_5b(3, 16, 17, // tri0 + 4, 3, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_plc_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[278], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plc_1_v[284], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 2, 6, 7, // tri0 + 1, 8, 9, // tri1 + 0, 1, 10 // tri2 + ), + gsSPNTriangles_5b(2, 0, 11, // tri0 + 1, 4, 12, // tri1 + 3, 13, 14, // tri2 + 3, 2, 15 // tri3 + ), + gsSPNTriangles_5b(4, 16, 17, // tri0 + 3, 18, 5, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_plc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plc_1_v[338], 25, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 0, 9, 8, // tri1 + 10, 4, 11, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(3, 5, 2, // tri0 + 8, 12, 6, // tri1 + 11, 13, 10, // tri2 + 3, 11, 4 // tri3 + ), + gsSPNTriangles_5b(8, 7, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 14, 15, 16, // tri0 + 16, 17, 14, // tri1 + 14, 18, 19 // tri2 + ), + gsSPNTriangles_5b(19, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 20, 21, 22, // tri0 + 23, 24, 20, // tri1 + 20, 24, 21 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plc_1_v[363], 8, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 4, 3, // tri0 + 6, 1, 5, // tri1 + 6, 5, 7, // tri2 + 1, 0, 4 // tri3 + ), + gsSPNTriangles_5b(1, 4, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_plc_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_plc_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 150,0,-500 }, + /* joint 11 */ { tail1_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_plc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_plc_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,-900,0 }, + /* joint 15 */ { Larm1_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_plc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,900,0 }, + /* joint 18 */ { Rarm1_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1201,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_plc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_plc_1 = { 26, 13, cKF_je_r_plc_1_tbl }; diff --git a/src/data/npc/model/mdl/plj_1.c b/src/data/npc/model/mdl/plj_1.c new file mode 100644 index 00000000..02ece23a --- /dev/null +++ b/src/data/npc/model/mdl/plj_1.c @@ -0,0 +1,641 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx plj_1_v[] = { +#include "assets/npc/mdl/plj_1_v.inc" +}; + +static Gfx head_plj_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[0], 18, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[18], 21, 0), + gsSPNTrianglesInit_5b(26, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 11, 10, 7 // tri3 + ), + gsSPNTriangles_5b(13, 2, 1, // tri0 + 2, 15, 0, // tri1 + 16, 17, 18, // tri2 + 14, 9, 12 // tri3 + ), + gsSPNTriangles_5b(6, 5, 17, // tri0 + 9, 14, 1, // tri1 + 6, 8, 3, // tri2 + 4, 3, 19 // tri3 + ), + gsSPNTriangles_5b(1, 20, 9, // tri0 + 6, 16, 7, // tri1 + 1, 14, 13, // tri2 + 17, 16, 6 // tri3 + ), + gsSPNTriangles_5b(18, 12, 11, // tri0 + 7, 16, 18, // tri1 + 11, 12, 9, // tri2 + 18, 11, 7 // tri3 + ), + gsSPNTriangles_5b(19, 0, 15, // tri0 + 15, 4, 19, // tri1 + 0, 20, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[39], 30, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 3 // tri2 + ), + gsSPNTriangles_5b(6, 7, 2, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 10, 12, 8 // tri3 + ), + gsSPNTriangles_5b(13, 14, 1, // tri0 + 9, 8, 7, // tri1 + 2, 14, 6, // tri2 + 15, 12, 11 // tri3 + ), + gsSPNTriangles_5b(7, 15, 3, // tri0 + 7, 3, 2, // tri1 + 0, 5, 16, // tri2 + 0, 16, 17 // tri3 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 11, 4, 15, // tri1 + 17, 13, 1, // tri2 + 1, 0, 17 // tri3 + ), + gsSPNTriangles_5b(3, 15, 4, // tri0 + 15, 7, 8, // tri1 + 15, 8, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 18, 19, 20, // tri0 + 21, 22, 20, // tri1 + 18, 22, 23 // tri2 + ), + gsSPNTriangles_5b(18, 24, 19, // tri0 + 25, 23, 22, // tri1 + 26, 27, 23, // tri2 + 23, 25, 28 // tri3 + ), + gsSPNTriangles_5b(21, 29, 22, // tri0 + 20, 19, 21, // tri1 + 23, 28, 26, // tri2 + 20, 22, 18 // tri3 + ), + gsSPNTriangles_5b(27, 24, 18, // tri0 + 18, 23, 27, // tri1 + 22, 29, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[69], 10, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 8, 9, 1, // tri1 + 0, 7, 1, // tri2 + 2, 5, 4 // tri3 + ), + gsSPNTriangles_5b(2, 4, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_plj_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[116], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[120], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 1, 4, // tri0 + 2, 5, 0, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 3, 0, 10, // tri1 + 1, 3, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_plj_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[133], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[137], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 4, 5, // tri0 + 3, 2, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 2, 10, 11, // tri1 + 1, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_plj_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[79], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[83], 13, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 3, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 12, 2, // tri2 + 1, 2, 13 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 14, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_plj_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[96], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[100], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 4, 5, // tri0 + 1, 3, 6, // tri1 + 3, 0, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 10, 0, // tri1 + 0, 11, 12, // tri2 + 2, 1, 13 // tri3 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_plj_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[153], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[163], 10, 10), + gsSPNTrianglesInit_5b(6, // tri count + 2, 10, 11, // tri0 + 0, 12, 13, // tri1 + 9, 0, 14 // tri2 + ), + gsSPNTriangles_5b(2, 9, 15, // tri0 + 0, 16, 17, // tri1 + 2, 18, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[173], 18, 10), + gsSPNTrianglesInit_5b(12, // tri count + 5, 4, 10, // tri0 + 7, 8, 11, // tri1 + 6, 12, 13 // tri2 + ), + gsSPNTriangles_5b(8, 3, 14, // tri0 + 7, 15, 16, // tri1 + 4, 17, 18, // tri2 + 1, 5, 19 // tri3 + ), + gsSPNTriangles_5b(6, 7, 20, // tri0 + 8, 21, 22, // tri1 + 5, 23, 24, // tri2 + 4, 6, 25 // tri3 + ), + gsSPNTriangles_5b(6, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[191], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 9, 0, 3 // tri3 + ), + gsSPNTriangles_5b(9, 3, 10, // tri0 + 12, 5, 4, // tri1 + 12, 4, 13, // tri2 + 3, 2, 11 // tri3 + ), + gsSPNTriangles_5b(3, 11, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(9, // tri count + 14, 15, 16, // tri0 + 14, 17, 15, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(14, 21, 17, // tri0 + 14, 20, 21, // tri1 + 18, 20, 14, // tri2 + 18, 14, 22 // tri3 + ), + gsSPNTriangles_5b(16, 22, 14, // tri0 + 15, 17, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&plj_1_v[215], 12, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 2, 1, // tri0 + 3, 4, 1, // tri1 + 7, 4, 3, // tri2 + 1, 8, 6 // tri3 + ), + gsSPNTriangles_5b(5, 8, 1, // tri0 + 9, 5, 4, // tri1 + 2, 6, 10, // tri2 + 0, 2, 11 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_plj_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[252], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(1, 5, 4, // tri0 + 2, 6, 4, // tri1 + 4, 6, 1, // tri2 + 0, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_plj_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[227], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[231], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 0, 6, 7, // tri1 + 3, 1, 8 // tri2 + ), + gsSPNTriangles_5b(3, 9, 10, // tri0 + 2, 11, 12, // tri1 + 2, 3, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 0, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 20, // tri1 + 18, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 22, 21, // tri0 + 23, 21, 20, // tri1 + 20, 21, 19, // tri2 + 20, 17, 16 // tri3 + ), + gsSPNTriangles_5b(20, 16, 23, // tri0 + 21, 18, 19, // tri1 + 19, 18, 17, // tri2 + 18, 24, 16 // tri3 + ), + gsSPNTriangles_5b(22, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_plj_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[300], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[305], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 4, 5, // tri0 + 3, 6, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 2, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(4, 0, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_plj_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[322], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[328], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 5, 3, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 4, 11, // tri0 + 0, 1, 12, // tri1 + 2, 13, 3, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 0, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_plj_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[259], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[264], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 4, 3, 5, // tri0 + 3, 6, 7, // tri1 + 3, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 4, 10, // tri1 + 1, 11, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_plj_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[281], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&plj_1_v[287], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 3, // tri0 + 3, 7, 8, // tri1 + 5, 1, 9 // tri2 + ), + gsSPNTriangles_5b(5, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_plj_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&plj_1_v[341], 21, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 4, 3, // tri1 + 3, 5, 13, // tri2 + 10, 14, 15 // tri3 + ), + gsSPNTriangles_5b(6, 16, 17, // tri0 + 9, 12, 3, // tri1 + 3, 13, 8, // tri2 + 15, 11, 10 // tri3 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 14, 19, 18, // tri1 + 18, 15, 14, // tri2 + 8, 13, 6 // tri3 + ), + gsSPNTriangles_5b(17, 7, 6, // tri0 + 11, 12, 9, // tri1 + 3, 20, 9, // tri2 + 17, 16, 18 // tri3 + ), + gsSPNTriangles_5b(8, 20, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_plj_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_plj_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 150,0,-500 }, + /* joint 11 */ { tail1_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_plj_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_plj_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,-900,0 }, + /* joint 15 */ { Larm1_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_plj_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,900,0 }, + /* joint 18 */ { Rarm1_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1201,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_plj_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_plj_1 = { 26, 13, cKF_je_r_plj_1_tbl }; diff --git a/src/data/npc/model/mdl/rbt_1.c b/src/data/npc/model/mdl/rbt_1.c new file mode 100644 index 00000000..fb1e29fd --- /dev/null +++ b/src/data/npc/model/mdl/rbt_1.c @@ -0,0 +1,606 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rbt_1_v[] = { +#include "assets/npc/mdl/rbt_1_v.inc" +}; + +static Gfx head_rbt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[0], 16, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 5 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 10, 11, 7, // tri1 + 9, 12, 7, // tri2 + 10, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 0, // tri0 + 5, 6, 3, // tri1 + 14, 11, 10, // tri2 + 5, 15, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rbt_1_v[16], 23, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 3, 6, // tri0 + 8, 9, 10, // tri1 + 10, 11, 12, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 4, 9, 8, // tri1 + 13, 14, 3, // tri2 + 15, 11, 14 // tri3 + ), + gsSPNTriangles_5b(16, 15, 14, // tri0 + 7, 17, 18, // tri1 + 2, 12, 11, // tri2 + 13, 3, 7 // tri3 + ), + gsSPNTriangles_5b(11, 15, 2, // tri0 + 9, 4, 14, // tri1 + 9, 14, 11, // tri2 + 14, 4, 3 // tri3 + ), + gsSPNTriangles_5b(19, 0, 15, // tri0 + 20, 21, 19, // tri1 + 20, 19, 22, // tri2 + 18, 13, 7 // tri3 + ), + gsSPNTriangles_5b(2, 15, 0, // tri0 + 13, 18, 22, // tri1 + 16, 22, 19, // tri2 + 14, 13, 16 // tri3 + ), + gsSPNTriangles_5b(15, 16, 19, // tri0 + 22, 16, 13, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rbt_1_v[39], 19, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(5, 9, 10, // tri0 + 11, 12, 6, // tri1 + 13, 11, 6, // tri2 + 14, 3, 5 // tri3 + ), + gsSPNTriangles_5b(15, 0, 14, // tri0 + 13, 0, 15, // tri1 + 16, 15, 10, // tri2 + 9, 16, 10 // tri3 + ), + gsSPNTriangles_5b(13, 8, 17, // tri0 + 16, 18, 15, // tri1 + 5, 10, 14, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(12, 11, 18, // tri0 + 6, 8, 13, // tri1 + 15, 11, 13, // tri2 + 17, 1, 0 // tri3 + ), + gsSPNTriangles_5b(0, 13, 17, // tri0 + 14, 10, 15, // tri1 + 0, 2, 14, // tri2 + 15, 18, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rbt_1_v[58], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 3, 8, 0, // tri1 + 0, 8, 9, // tri2 + 8, 3, 6 // tri3 + ), + gsSPNTriangles_5b(8, 6, 10, // tri0 + 2, 4, 6, // tri1 + 8, 11, 9, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 0, // tri0 + 10, 6, 5, // tri1 + 12, 1, 0, // tri2 + 12, 13, 1 // tri3 + ), + gsSPNTriangles_5b(6, 3, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rbt_1_v[72], 28, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(4, 2, 1, // tri0 + 6, 8, 7, // tri1 + 9, 5, 10, // tri2 + 2, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 13, 16, 2, // tri1 + 17, 18, 19, // tri2 + 9, 18, 17 // tri3 + ), + gsSPNTriangles_5b(5, 9, 6, // tri0 + 17, 20, 9, // tri1 + 2, 14, 13, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(14, 4, 21, // tri0 + 20, 22, 8, // tri1 + 23, 24, 9, // tri2 + 25, 15, 14 // tri3 + ), + gsSPNTriangles_5b(21, 26, 14, // tri0 + 8, 6, 20, // tri1 + 20, 19, 27, // tri2 + 19, 20, 17 // tri3 + ), + gsSPNTriangles_5b(10, 23, 9, // tri0 + 2, 12, 0, // tri1 + 3, 21, 4, // tri2 + 27, 22, 20 // tri3 + ), + gsSPNTriangles_5b(14, 26, 25, // tri0 + 14, 2, 4, // tri1 + 16, 11, 2, // tri2 + 9, 24, 18 // tri3 + ), + gsSPNTriangles_5b(6, 9, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rbt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[136], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[141], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 3, // tri0 + 1, 4, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 0, 1, 11, // tri1 + 2, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rbt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[157], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[161], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_rbt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[100], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[105], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_rbt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[121], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[125], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_rbt_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[172], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[179], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&rbt_1_v[199], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_rbt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[208], 18, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 1, // tri0 + 1, 6, 3, // tri1 + 7, 4, 5, // tri2 + 1, 0, 4 // tri3 + ), + gsSPNTriangles_5b(6, 4, 7, // tri0 + 8, 6, 7, // tri1 + 3, 6, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(10, // tri count + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 10, 13, 12 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 10, 9, 14, // tri1 + 15, 14, 16, // tri2 + 14, 9, 16 // tri3 + ), + gsSPNTriangles_5b(14, 13, 10, // tri0 + 12, 13, 17, // tri1 + 17, 13, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rbt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[280], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[286], 18, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 + ), + gsSPNTriangles_5b(1, 2, 11, // tri0 + 2, 3, 12, // tri1 + 3, 5, 13, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 22, 23, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rbt_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[304], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[308], 24, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 23, 18, // tri1 + 21, 24, 19, // tri2 + 17, 22, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rbt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[226], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[232], 18, 6), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 6, // tri0 + 0, 8, 7, // tri1 + 3, 10, 9 // tri2 + ), + gsSPNTriangles_5b(2, 1, 11, // tri0 + 3, 2, 12, // tri1 + 5, 3, 13, // tri2 + 2, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 20, 22, 23 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rbt_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[250], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rbt_1_v[256], 24, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 24, 25, // tri1 + 23, 26, 21, // tri2 + 20, 25, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPNTrianglesInit_5b(1, // tri count + 27, 28, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_rbt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rbt_1_v[332], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rbt_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rbt_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rbt_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rbt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rbt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1100,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rbt_1 = { 26, 12, cKF_je_r_rbt_1_tbl }; diff --git a/src/data/npc/model/mdl/rcc_1.c b/src/data/npc/model/mdl/rcc_1.c new file mode 100644 index 00000000..f60787f3 --- /dev/null +++ b/src/data/npc/model/mdl/rcc_1.c @@ -0,0 +1,691 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rcc_1_v[] = { +#include "assets/npc/mdl/rcc_1_v.inc" +}; + +static Gfx head_rcc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcc_1_v[42], 29, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 2, 5, // tri0 + 6, 7, 1, // tri1 + 7, 8, 9, // tri2 + 10, 4, 3 // tri3 + ), + gsSPNTriangles_5b(11, 12, 3, // tri0 + 11, 3, 5, // tri1 + 5, 9, 11, // tri2 + 12, 10, 3 // tri3 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 6, 13, 7, // tri1 + 14, 12, 11, // tri2 + 1, 9, 5 // tri3 + ), + gsSPNTriangles_5b(9, 1, 7, // tri0 + 12, 15, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(21, 19, 18, // tri0 + 21, 18, 22, // tri1 + 17, 16, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 24, 25, 26, // tri0 + 27, 25, 24, // tri1 + 24, 28, 27 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[71], 26, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 6, 7, 8, // tri0 + 6, 9, 10, // tri1 + 11, 12, 6 // tri2 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 10, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 13, 14, 15, // tri0 + 15, 16, 17, // tri1 + 15, 17, 13 // tri2 + ), + gsSPNTriangles_5b(13, 18, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 21, 24, 19 // tri2 + ), + gsSPNTriangles_5b(19, 25, 22, // tri0 + 23, 20, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcc_1_v[97], 15, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 5, 3, 1, // tri1 + 5, 1, 0, // tri2 + 2, 1, 3 // tri3 + ), + gsSPNTriangles_5b(2, 7, 0, // tri0 + 8, 9, 0, // tri1 + 6, 4, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 10, 11, 12, // tri0 + 13, 14, 12, // tri1 + 12, 14, 10 // tri2 + ), + gsSPNTriangles_5b(12, 11, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_rcc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 1, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 0, // tri0 + 1, 0, 11, // tri1 + 4, 2, 12, // tri2 + 3, 4, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rcc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[153], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[157], 23, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 3, 1, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 18, 17 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 21, 20, // tri1 + 17, 22, 20, // tri2 + 20, 19, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rcc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[180], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[183], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 1, 2, 4, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 1, 9, 10, // tri1 + 2, 12, 11, // tri2 + 1, 13, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_rcc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[112], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[116], 23, 4), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 3, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 18, 17, 20 // tri2 + ), + gsSPNTriangles_5b(21, 20, 16, // tri0 + 20, 21, 22, // tri1 + 20, 22, 18, // tri2 + 17, 16, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 23, 24, 25, // tri0 + 23, 26, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_rcc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[139], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[142], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 2, 1, 4, // tri1 + 2, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 1, 9, 10, // tri1 + 2, 12, 11, // tri2 + 0, 13, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_rcc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[194], 25, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 14, 2, 9 // tri3 + ), + gsSPNTriangles_5b(13, 8, 0, // tri0 + 11, 15, 12, // tri1 + 16, 0, 17, // tri2 + 16, 1, 0 // tri3 + ), + gsSPNTriangles_5b(8, 17, 0, // tri0 + 13, 14, 11, // tri1 + 0, 14, 13, // tri2 + 13, 5, 8 // tri3 + ), + gsSPNTriangles_5b(5, 12, 6, // tri0 + 5, 13, 12, // tri1 + 15, 11, 18, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(2, 14, 0, // tri0 + 11, 14, 9, // tri1 + 19, 20, 2, // tri2 + 19, 2, 1 // tri3 + ), + gsSPNTriangles_5b(1, 16, 21, // tri0 + 10, 9, 22, // tri1 + 10, 22, 23, // tri2 + 24, 18, 10 // tri3 + ), + gsSPNTriangles_5b(20, 9, 2, // tri0 + 9, 20, 22, // tri1 + 1, 21, 19, // tri2 + 23, 24, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcc_1_v[219], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 8, 1, 9, // tri1 + 10, 2, 11, // tri2 + 7, 2, 10 // tri3 + ), + gsSPNTriangles_5b(2, 7, 3, // tri0 + 2, 1, 11, // tri1 + 4, 3, 5, // tri2 + 12, 9, 1 // tri3 + ), + gsSPNTriangles_5b(0, 2, 3, // tri0 + 12, 1, 0, // tri1 + 8, 11, 1, // tri2 + 11, 8, 13 // tri3 + ), + gsSPNTriangles_5b(14, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_rcc_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[259], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[263], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_rcc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[234], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[238], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rcc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[299], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[304], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rcc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[319], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcc_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[274], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcc_1_v[278], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rcc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[292], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_rcc_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x680, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcc_1_v[328], 19, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 5, 8, 6, // tri1 + 6, 8, 9, // tri2 + 7, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 7, 5, // tri1 + 1, 5, 4, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 6, 9, // tri0 + 4, 6, 10, // tri1 + 2, 4, 13, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 17, 12, 11, // tri1 + 15, 16, 17, // tri2 + 18, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 4, // tri0 + 18, 13, 10, // tri1 + 16, 14, 18, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 17, 16, 12, // tri1 + 3, 2, 14, // tri2 + 14, 15, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rcc_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rcc_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rcc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rcc_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rcc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1785 }, + /* joint 23 */ { mouth_rcc_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rcc_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rcc_1 = { 26, 14, cKF_je_r_rcc_1_tbl }; diff --git a/src/data/npc/model/mdl/rcd_1.c b/src/data/npc/model/mdl/rcd_1.c new file mode 100644 index 00000000..259ef442 --- /dev/null +++ b/src/data/npc/model/mdl/rcd_1.c @@ -0,0 +1,663 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rcd_1_v[] = { +#include "assets/npc/mdl/rcd_1_v.inc" +}; + +static Gfx head_rcd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(6, 8, 9, // tri0 + 0, 10, 1, // tri1 + 11, 5, 4, // tri2 + 5, 8, 3 // tri3 + ), + gsSPNTriangles_5b(0, 4, 12, // tri0 + 0, 12, 13, // tri1 + 4, 3, 12, // tri2 + 14, 15, 4 // tri3 + ), + gsSPNTriangles_5b(14, 4, 0, // tri0 + 6, 16, 17, // tri1 + 18, 19, 20, // tri2 + 16, 6, 9 // tri3 + ), + gsSPNTriangles_5b(21, 22, 20, // tri0 + 13, 12, 23, // tri1 + 13, 23, 24, // tri2 + 23, 12, 3 // tri3 + ), + gsSPNTriangles_5b(24, 10, 13, // tri0 + 10, 24, 19, // tri1 + 10, 19, 18, // tri2 + 1, 10, 18 // tri3 + ), + gsSPNTriangles_5b(17, 21, 20, // tri0 + 25, 7, 6, // tri1 + 25, 23, 7, // tri2 + 7, 3, 8 // tri3 + ), + gsSPNTriangles_5b(7, 23, 3, // tri0 + 20, 19, 25, // tri1 + 25, 19, 24, // tri2 + 24, 23, 25 // tri3 + ), + gsSPNTriangles_5b(4, 15, 11, // tri0 + 2, 14, 0, // tri1 + 6, 17, 25, // tri2 + 17, 20, 25 // tri3 + ), + gsSPNTriangles_5b(20, 22, 18, // tri0 + 26, 27, 15, // tri1 + 26, 15, 14, // tri2 + 13, 10, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcd_1_v[42], 29, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 6, 5, 8, // tri1 + 9, 10, 4, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(2, 7, 6, // tri0 + 13, 0, 6, // tri1 + 13, 6, 8, // tri2 + 8, 12, 13 // tri3 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 4, 3, 9, // tri1 + 9, 14, 10, // tri2 + 15, 0, 13 // tri3 + ), + gsSPNTriangles_5b(4, 12, 8, // tri0 + 12, 4, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 17, 19, 20 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 22, 20, 19, // tri1 + 22, 19, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 24, 25, 26, // tri0 + 26, 25, 27, // tri1 + 26, 28, 24 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[71], 26, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(3, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 6, 7, 8, // tri0 + 6, 9, 10, // tri1 + 11, 12, 6 // tri2 + ), + gsSPNTriangles_5b(8, 11, 6, // tri0 + 10, 7, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 16, 18, 13 // tri2 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 19, 20, 21, // tri0 + 19, 22, 23, // tri1 + 21, 24, 19 // tri2 + ), + gsSPNTriangles_5b(19, 25, 22, // tri0 + 23, 20, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_rcd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 1, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 0, // tri0 + 1, 0, 11, // tri1 + 4, 2, 12, // tri2 + 3, 4, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rcd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[141], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[147], 23, 6), + gsSPNTrianglesInit_5b(8, // tri count + 2, 5, 6, // tri0 + 0, 2, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 3, 1, 14, // tri2 + 1, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 22, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 23, 22, // tri1 + 19, 24, 22, // tri2 + 22, 21, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rcd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[170], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[174], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 0, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 2, 3, 13, // tri2 + 3, 0, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_rcd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[97], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[103], 23, 6), + gsSPNTrianglesInit_5b(8, // tri count + 5, 2, 6, // tri0 + 2, 0, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 10, 11, // tri0 + 1, 12, 13, // tri1 + 1, 3, 14, // tri2 + 0, 1, 15 // tri3 + ), + gsSPNTriangles_5b(4, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 18, 20, 21, // tri1 + 20, 19, 22 // tri2 + ), + gsSPNTriangles_5b(23, 22, 18, // tri0 + 22, 23, 24, // tri1 + 22, 24, 20, // tri2 + 19, 18, 22 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 25, 26, 27, // tri0 + 25, 28, 26, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_rcd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[126], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[130], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 1, // tri0 + 3, 6, 5, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 10, // tri0 + 3, 11, 12, // tri1 + 3, 2, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_rcd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[185], 25, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 5 // tri2 + ), + gsSPNTriangles_5b(8, 5, 4, // tri0 + 9, 10, 11, // tri1 + 11, 12, 13, // tri2 + 14, 2, 9 // tri3 + ), + gsSPNTriangles_5b(13, 8, 0, // tri0 + 11, 15, 12, // tri1 + 16, 0, 17, // tri2 + 16, 1, 0 // tri3 + ), + gsSPNTriangles_5b(8, 17, 0, // tri0 + 13, 14, 11, // tri1 + 0, 14, 13, // tri2 + 13, 5, 8 // tri3 + ), + gsSPNTriangles_5b(5, 12, 6, // tri0 + 5, 13, 12, // tri1 + 15, 11, 18, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(2, 14, 0, // tri0 + 11, 14, 9, // tri1 + 19, 20, 2, // tri2 + 19, 2, 1 // tri3 + ), + gsSPNTriangles_5b(1, 16, 21, // tri0 + 10, 9, 22, // tri1 + 10, 22, 23, // tri2 + 24, 18, 10 // tri3 + ), + gsSPNTriangles_5b(20, 9, 2, // tri0 + 9, 20, 22, // tri1 + 1, 21, 19, // tri2 + 23, 24, 10 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcd_1_v[210], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(3, 7, 6, // tri0 + 8, 1, 9, // tri1 + 10, 2, 11, // tri2 + 7, 2, 10 // tri3 + ), + gsSPNTriangles_5b(2, 7, 3, // tri0 + 2, 1, 11, // tri1 + 4, 3, 5, // tri2 + 12, 9, 1 // tri3 + ), + gsSPNTriangles_5b(0, 2, 3, // tri0 + 12, 1, 0, // tri1 + 8, 11, 1, // tri2 + 11, 8, 13 // tri3 + ), + gsSPNTriangles_5b(14, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_rcd_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[250], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[254], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_rcd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[225], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[229], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rcd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[290], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[295], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rcd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[310], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcd_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[265], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcd_1_v[269], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rcd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[283], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_rcd_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcd_1_v[319], 19, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 5, 8, 6, // tri1 + 6, 8, 9, // tri2 + 7, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 7, 5, // tri1 + 1, 5, 4, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(10, 6, 9, // tri0 + 4, 6, 10, // tri1 + 2, 4, 13, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 14, 16, // tri0 + 17, 12, 11, // tri1 + 15, 16, 17, // tri2 + 18, 10, 12 // tri3 + ), + gsSPNTriangles_5b(10, 13, 4, // tri0 + 18, 13, 10, // tri1 + 16, 14, 18, // tri2 + 18, 14, 13 // tri3 + ), + gsSPNTriangles_5b(9, 11, 10, // tri0 + 17, 16, 12, // tri1 + 3, 2, 14, // tri2 + 14, 15, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rcd_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rcd_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rcd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rcd_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rcd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1785 }, + /* joint 23 */ { mouth_rcd_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rcd_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rcd_1 = { 26, 14, cKF_je_r_rcd_1_tbl }; diff --git a/src/data/npc/model/mdl/rcf_1.c b/src/data/npc/model/mdl/rcf_1.c new file mode 100644 index 00000000..0a26219b --- /dev/null +++ b/src/data/npc/model/mdl/rcf_1.c @@ -0,0 +1,795 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rcf_1_v[] = { +#include "assets/npc/mdl/rcf_1_v.inc" +}; + +static Gfx head_rcf_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcf_1_v[42], 27, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 2, 1 // tri2 + ), + gsSPNTriangles_5b(3, 2, 5, // tri0 + 6, 7, 1, // tri1 + 7, 8, 9, // tri2 + 10, 4, 3 // tri3 + ), + gsSPNTriangles_5b(11, 12, 3, // tri0 + 11, 3, 5, // tri1 + 5, 9, 11, // tri2 + 12, 10, 3 // tri3 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 6, 13, 7, // tri1 + 14, 12, 11, // tri2 + 1, 9, 5 // tri3 + ), + gsSPNTriangles_5b(9, 1, 7, // tri0 + 12, 15, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 16, 18, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(21, 19, 23, // tri0 + 21, 23, 24, // tri1 + 25, 16, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPVertex(&rcf_1_v[69], 31, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 0, 4, 3 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 5, 6, 7, // tri0 + 7, 8, 9, // tri1 + 7, 9, 5 // tri2 + ), + gsSPNTriangles_5b(5, 10, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 11, 12, 13, // tri0 + 11, 14, 15, // tri1 + 16, 17, 11 // tri2 + ), + gsSPNTriangles_5b(13, 16, 11, // tri0 + 15, 12, 11, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 18, 19, 20, // tri0 + 20, 21, 22, // tri1 + 20, 22, 18 // tri2 + ), + gsSPNTriangles_5b(18, 23, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 24, 25, 26, // tri0 + 24, 27, 28, // tri1 + 26, 29, 24 // tri2 + ), + gsSPNTriangles_5b(24, 30, 27, // tri0 + 28, 25, 24, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[100], 29, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 9, 8, 11, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(12, 11, 14, // tri0 + 6, 15, 4, // tri1 + 11, 13, 9, // tri2 + 16, 2, 1 // tri3 + ), + gsSPNTriangles_5b(16, 1, 17, // tri0 + 14, 18, 12, // tri1 + 18, 4, 15, // tri2 + 18, 15, 12 // tri3 + ), + gsSPNTriangles_5b(10, 16, 17, // tri0 + 10, 17, 7, // tri1 + 3, 6, 5, // tri2 + 3, 5, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPNTrianglesInit_5b(8, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 24, 19, 25 // tri2 + ), + gsSPNTriangles_5b(24, 25, 26, // tri0 + 26, 22, 24, // tri1 + 19, 21, 25, // tri2 + 22, 27, 23 // tri3 + ), + gsSPNTriangles_5b(21, 20, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_rcf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 5, 6, // tri0 + 4, 8, 7, // tri1 + 2, 1, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 0, // tri0 + 1, 0, 11, // tri1 + 4, 2, 12, // tri2 + 3, 4, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx hand_rcf_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[163], 28, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 3, 4 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 3, 6, 7, // tri1 + 3, 7, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 8, 9, 10, // tri0 + 11, 12, 9, // tri1 + 13, 14, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 14, // tri0 + 18, 10, 19, // tri1 + 20, 21, 17, // tri2 + 21, 20, 18 // tri3 + ), + gsSPNTriangles_5b(17, 16, 20, // tri0 + 14, 13, 16, // tri1 + 12, 11, 13, // tri2 + 9, 8, 11 // tri3 + ), + gsSPNTriangles_5b(10, 18, 8, // tri0 + 19, 21, 18, // tri1 + 15, 12, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(4, // tri count + 22, 23, 24, // tri0 + 22, 24, 25, // tri1 + 24, 26, 27 // tri2 + ), + gsSPNTriangles_5b(24, 27, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcf_1_v[191], 7, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 3, 4, 2 // tri2 + ), + gsSPNTriangles_5b(4, 5, 2, // tri0 + 5, 6, 2, // tri1 + 6, 0, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rcf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[198], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[202], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rcf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[218], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[221], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_rcf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[129], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[133], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_rcf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[149], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[152], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_rcf_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[232], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[243], 12, 11), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 9, // tri0 + 8, 12, 10, // tri1 + 9, 13, 14 // tri2 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 8, 3, 17, // tri1 + 5, 18, 19, // tri2 + 8, 21, 20 // tri3 + ), + gsSPNTriangles_5b(5, 9, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcf_1_v[255], 13, 11), + gsSPNTrianglesInit_5b(9, // tri count + 2, 11, 12, // tri0 + 2, 1, 13, // tri1 + 7, 0, 14 // tri2 + ), + gsSPNTriangles_5b(1, 7, 15, // tri0 + 0, 4, 16, // tri1 + 6, 17, 18, // tri2 + 4, 6, 19 // tri3 + ), + gsSPNTriangles_5b(7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcf_1_v[268], 24, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 3, 5, // tri0 + 0, 7, 1, // tri1 + 2, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 11, 8, 10 // tri2 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 20, 18 // tri2 + ), + gsSPNTriangles_5b(22, 18, 19, // tri0 + 18, 23, 16, // tri1 + 18, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_rcf_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[317], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[321], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_rcf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[292], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[296], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rcf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[361], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[366], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rcf_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[381], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcf_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[332], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcf_1_v[337], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 16, 15, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rcf_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[352], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 4, 7, // tri1 + 7, 0, 2, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_rcf_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcf_1_v[390], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 2, 11, 0, // tri1 + 6, 8, 12, // tri2 + 12, 13, 6 // tri3 + ), + gsSPNTriangles_5b(2, 8, 11, // tri0 + 11, 3, 0, // tri1 + 8, 2, 12, // tri2 + 0, 3, 5 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 15, 17 // tri2 + ), + gsSPNTriangles_5b(16, 19, 14, // tri0 + 18, 17, 20, // tri1 + 19, 21, 22, // tri2 + 20, 23, 18 // tri3 + ), + gsSPNTriangles_5b(22, 14, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcf_1_v[414], 21, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 3, 9, // tri1 + 7, 10, 4, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(4, 5, 7, // tri0 + 11, 13, 2, // tri1 + 2, 13, 9, // tri2 + 2, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 14, 2, // tri0 + 10, 15, 1, // tri1 + 10, 1, 4, // tri2 + 5, 4, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 13, // tri0 + 5, 3, 8, // tri1 + 0, 2, 9, // tri2 + 2, 1, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 15, 10, // tri2 + 18, 16, 19 // tri3 + ), + gsSPNTriangles_5b(14, 20, 11, // tri0 + 17, 20, 14, // tri1 + 17, 18, 20, // tri2 + 15, 17, 14 // tri3 + ), + gsSPNTriangles_5b(19, 10, 7, // tri0 + 19, 16, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rcf_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rcf_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rcf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rcf_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rcf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { hand_rcf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1785 }, + /* joint 23 */ { mouth_rcf_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rcf_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rcf_1 = { 26, 15, cKF_je_r_rcf_1_tbl }; diff --git a/src/data/npc/model/mdl/rcn_1.c b/src/data/npc/model/mdl/rcn_1.c new file mode 100644 index 00000000..d5aa6626 --- /dev/null +++ b/src/data/npc/model/mdl/rcn_1.c @@ -0,0 +1,665 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rcn_1_v[] = { +#include "assets/npc/mdl/rcn_1_v.inc" +}; + +static Gfx head_rcn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcn_1_v[42], 31, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 8, 10, 6 // tri2 + ), + gsSPNTriangles_5b(6, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 15, 12 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 19, 22, 17 // tri2 + ), + gsSPNTriangles_5b(19, 21, 23, // tri0 + 23, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 28, 29, 26 // tri2 + ), + gsSPNTriangles_5b(26, 29, 24, // tri0 + 25, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[73], 24, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 7, 4, 5, // tri1 + 4, 3, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(17, // tri count + 8, 9, 10, // tri0 + 11, 10, 12, // tri1 + 10, 11, 8 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 17, // tri1 + 14, 17, 18, // tri2 + 11, 19, 20 // tri3 + ), + gsSPNTriangles_5b(20, 8, 11, // tri0 + 17, 21, 18, // tri1 + 19, 11, 22, // tri2 + 15, 14, 18 // tri3 + ), + gsSPNTriangles_5b(15, 18, 12, // tri0 + 22, 18, 21, // tri1 + 12, 22, 11, // tri2 + 12, 10, 15 // tri3 + ), + gsSPNTriangles_5b(18, 22, 12, // tri0 + 20, 23, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_rcn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 3, // tri0 + 4, 3, 11, // tri1 + 2, 0, 12, // tri2 + 1, 2, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rcn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[131], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[135], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rcn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[151], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[154], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_rcn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[97], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[101], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_rcn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[117], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[120], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 2, // tri0 + 1, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 2, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_rcn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[165], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[176], 13, 11), + gsSPNTrianglesInit_5b(9, // tri count + 1, 3, 11, // tri0 + 2, 13, 12, // tri1 + 3, 0, 14 // tri2 + ), + gsSPNTriangles_5b(0, 2, 15, // tri0 + 5, 16, 17, // tri1 + 5, 1, 18, // tri2 + 1, 19, 20 // tri3 + ), + gsSPNTriangles_5b(9, 21, 22, // tri0 + 2, 9, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcn_1_v[189], 20, 11), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 4, // tri0 + 6, 12, 13, // tri1 + 7, 6, 14 // tri2 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 7, 18, 17, // tri1 + 7, 19, 10, // tri2 + 8, 4, 20 // tri3 + ), + gsSPNTriangles_5b(4, 21, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 23, 24, 25, // tri0 + 25, 26, 27, // tri1 + 23, 28, 24 // tri2 + ), + gsSPNTriangles_5b(26, 29, 27, // tri0 + 25, 30, 23, // tri1 + 27, 30, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcn_1_v[209], 12, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 2, 6, // tri0 + 0, 5, 8, // tri1 + 3, 0, 8, // tri2 + 9, 8, 5 // tri3 + ), + gsSPNTriangles_5b(3, 1, 0, // tri0 + 10, 8, 9, // tri1 + 8, 11, 3, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(0, 6, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_rcn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[246], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[250], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_rcn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[221], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[225], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rcn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[290], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[295], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rcn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[310], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcn_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[261], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcn_1_v[266], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 16, 15, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rcn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[281], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 4, 7, // tri1 + 7, 0, 2, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_rcn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 48, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcn_1_v[319], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 6, // tri0 + 5, 9, 10, // tri1 + 5, 10, 3, // tri2 + 6, 0, 2 // tri3 + ), + gsSPNTriangles_5b(11, 7, 12, // tri0 + 12, 3, 10, // tri1 + 7, 11, 13, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 20, 14, 21 // tri2 + ), + gsSPNTriangles_5b(20, 22, 18, // tri0 + 18, 17, 20, // tri1 + 21, 22, 20, // tri2 + 16, 21, 14 // tri3 + ), + gsSPNTriangles_5b(19, 23, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcn_1_v[343], 14, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 5, 6, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 5, 7, 6, // tri1 + 4, 9, 5, // tri2 + 5, 9, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 0, 4, 1, // tri1 + 3, 9, 4, // tri2 + 9, 3, 10 // tri3 + ), + gsSPNTriangles_5b(11, 7, 9, // tri0 + 11, 8, 7, // tri1 + 8, 12, 6, // tri2 + 6, 13, 2 // tri3 + ), + gsSPNTriangles_5b(13, 6, 12, // tri0 + 6, 2, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rcn_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rcn_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rcn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rcn_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rcn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1785 }, + /* joint 23 */ { mouth_rcn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rcn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rcn_1 = { 26, 14, cKF_je_r_rcn_1_tbl }; diff --git a/src/data/npc/model/mdl/rcs_1.c b/src/data/npc/model/mdl/rcs_1.c new file mode 100644 index 00000000..5c3b0965 --- /dev/null +++ b/src/data/npc/model/mdl/rcs_1.c @@ -0,0 +1,680 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rcs_1_v[] = { +#include "assets/npc/mdl/rcs_1_v.inc" +}; + +static Gfx head_rcs_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[14], 28, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(0, 9, 1, // tri0 + 10, 5, 4, // tri1 + 5, 6, 3, // tri2 + 0, 4, 11 // tri3 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 3, 11, // tri1 + 13, 14, 4, // tri2 + 13, 4, 0 // tri3 + ), + gsSPNTriangles_5b(8, 15, 16, // tri0 + 17, 18, 19, // tri1 + 15, 8, 7, // tri2 + 20, 21, 19 // tri3 + ), + gsSPNTriangles_5b(12, 11, 22, // tri0 + 12, 22, 23, // tri1 + 22, 11, 3, // tri2 + 23, 9, 12 // tri3 + ), + gsSPNTriangles_5b(9, 23, 18, // tri0 + 9, 18, 17, // tri1 + 1, 9, 17, // tri2 + 16, 20, 19 // tri3 + ), + gsSPNTriangles_5b(24, 25, 8, // tri0 + 24, 22, 25, // tri1 + 25, 3, 6, // tri2 + 25, 22, 3 // tri3 + ), + gsSPNTriangles_5b(19, 18, 24, // tri0 + 24, 18, 23, // tri1 + 23, 22, 24, // tri2 + 4, 14, 10 // tri3 + ), + gsSPNTriangles_5b(2, 13, 0, // tri0 + 8, 16, 24, // tri1 + 16, 19, 24, // tri2 + 8, 25, 6 // tri3 + ), + gsSPNTriangles_5b(19, 21, 17, // tri0 + 26, 27, 14, // tri1 + 26, 14, 13, // tri2 + 12, 9, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcs_1_v[42], 31, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 6, 7, 8, // tri0 + 8, 9, 10, // tri1 + 8, 10, 6 // tri2 + ), + gsSPNTriangles_5b(6, 11, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(3, // tri count + 12, 13, 14, // tri0 + 12, 15, 16, // tri1 + 14, 15, 12 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 17, 18, 19, // tri0 + 19, 20, 21, // tri1 + 19, 22, 17 // tri2 + ), + gsSPNTriangles_5b(19, 21, 23, // tri0 + 23, 22, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(5, // tri count + 24, 25, 26, // tri0 + 26, 27, 28, // tri1 + 28, 29, 26 // tri2 + ), + gsSPNTriangles_5b(26, 29, 24, // tri0 + 25, 30, 26, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[73], 24, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 2, 5 // tri2 + ), + gsSPNTriangles_5b(1, 0, 6, // tri0 + 7, 4, 5, // tri1 + 4, 3, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(17, // tri count + 8, 9, 10, // tri0 + 11, 10, 12, // tri1 + 10, 11, 8 // tri2 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 14, 16, 17, // tri1 + 14, 17, 18, // tri2 + 11, 19, 20 // tri3 + ), + gsSPNTriangles_5b(20, 8, 11, // tri0 + 17, 21, 18, // tri1 + 19, 11, 22, // tri2 + 15, 14, 18 // tri3 + ), + gsSPNTriangles_5b(15, 18, 12, // tri0 + 22, 18, 21, // tri1 + 12, 22, 11, // tri2 + 12, 10, 15 // tri3 + ), + gsSPNTriangles_5b(18, 22, 12, // tri0 + 20, 23, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_rcs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[5], 9, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 5, 6, // tri0 + 2, 8, 7, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 3, // tri0 + 4, 3, 11, // tri1 + 2, 0, 12, // tri2 + 1, 2, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rcs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[131], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[135], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 0, 2, 12, // tri1 + 0, 13, 1, // tri2 + 2, 3, 14 // tri3 + ), + gsSPNTriangles_5b(3, 1, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rcs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[151], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[154], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 1, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 2, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_rcs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[97], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[101], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 1, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 0, 12, // tri1 + 1, 13, 0, // tri2 + 3, 2, 14 // tri3 + ), + gsSPNTriangles_5b(1, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_rcs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[117], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[120], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 1, 3, 2, // tri0 + 0, 5, 4, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 0, 10, 11, // tri1 + 0, 2, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_rcs_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[165], 11, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[176], 12, 11), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 9, // tri0 + 8, 12, 10, // tri1 + 9, 13, 14 // tri2 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 8, 3, 17, // tri1 + 5, 18, 19, // tri2 + 8, 21, 20 // tri3 + ), + gsSPNTriangles_5b(5, 9, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcs_1_v[188], 13, 11), + gsSPNTrianglesInit_5b(9, // tri count + 2, 11, 12, // tri0 + 2, 1, 13, // tri1 + 7, 0, 14 // tri2 + ), + gsSPNTriangles_5b(1, 7, 15, // tri0 + 0, 4, 16, // tri1 + 6, 17, 18, // tri2 + 4, 6, 19 // tri3 + ), + gsSPNTriangles_5b(7, 20, 21, // tri0 + 0, 22, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcs_1_v[201], 24, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 3, 5, // tri0 + 0, 7, 1, // tri1 + 2, 5, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 48, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(6, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 11, 8, 10 // tri2 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 13, 14, 11, // tri1 + 13, 15, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 16, 17, 18, // tri0 + 19, 18, 20, // tri1 + 21, 20, 18 // tri2 + ), + gsSPNTriangles_5b(22, 18, 19, // tri0 + 18, 23, 16, // tri1 + 18, 22, 23, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_rcs_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[250], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[254], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 2, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 2, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_rcs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[225], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[229], 21, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 0, 3, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 1, 2, 10, // tri1 + 0, 11, 12, // tri2 + 3, 1, 13 // tri3 + ), + gsSPNTriangles_5b(2, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 17, 16, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 21, 16, // tri1 + 16, 23, 19, // tri2 + 23, 22, 24 // tri3 + ), + gsSPNTriangles_5b(24, 22, 21, // tri0 + 16, 21, 20, // tri1 + 24, 19, 23, // tri2 + 22, 23, 20 // tri3 + ), + gsSPNTriangles_5b(21, 18, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rcs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[294], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[299], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 2, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 16, 15, // tri1 + 19, 17, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rcs_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[314], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 7, 4, 0, // tri1 + 0, 2, 7, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rcs_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[265], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rcs_1_v[270], 15, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 16, 18, // tri1 + 16, 15, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rcs_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[285], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 4, 7, // tri1 + 7, 0, 2, // tri2 + 5, 8, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_rcs_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 48, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rcs_1_v[323], 24, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 7, // tri0 + 2, 11, 0, // tri1 + 6, 8, 12, // tri2 + 12, 13, 6 // tri3 + ), + gsSPNTriangles_5b(2, 8, 11, // tri0 + 11, 3, 0, // tri1 + 8, 2, 12, // tri2 + 0, 3, 5 // tri3 + ), + gsSPNTriangles_5b(9, 7, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 14, 15, 16, // tri0 + 17, 18, 16, // tri1 + 16, 15, 17 // tri2 + ), + gsSPNTriangles_5b(16, 19, 14, // tri0 + 18, 17, 20, // tri1 + 19, 21, 22, // tri2 + 20, 23, 18 // tri3 + ), + gsSPNTriangles_5b(22, 14, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rcs_1_v[347], 21, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 3, 9, // tri1 + 7, 10, 4, // tri2 + 11, 12, 13 // tri3 + ), + gsSPNTriangles_5b(4, 5, 7, // tri0 + 11, 13, 2, // tri1 + 2, 13, 9, // tri2 + 2, 14, 11 // tri3 + ), + gsSPNTriangles_5b(15, 14, 2, // tri0 + 10, 15, 1, // tri1 + 10, 1, 4, // tri2 + 5, 4, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 13, // tri0 + 5, 3, 8, // tri1 + 0, 2, 9, // tri2 + 2, 1, 15 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 16, 18, 17, // tri1 + 16, 15, 10, // tri2 + 18, 16, 19 // tri3 + ), + gsSPNTriangles_5b(14, 20, 11, // tri0 + 17, 20, 14, // tri1 + 17, 18, 20, // tri2 + 15, 17, 14 // tri3 + ), + gsSPNTriangles_5b(19, 10, 7, // tri0 + 19, 16, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rcs_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rcs_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { tail1_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rcs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_rcs_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,-500,0 }, + /* joint 15 */ { Larm1_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rcs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 650,500,0 }, + /* joint 18 */ { Rarm1_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 875,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1785 }, + /* joint 23 */ { mouth_rcs_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rcs_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1050,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rcs_1 = { 26, 14, cKF_je_r_rcs_1_tbl }; diff --git a/src/data/npc/model/mdl/rhn_1.c b/src/data/npc/model/mdl/rhn_1.c new file mode 100644 index 00000000..b391fe58 --- /dev/null +++ b/src/data/npc/model/mdl/rhn_1.c @@ -0,0 +1,793 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx rhn_1_v[] = { +#include "assets/npc/mdl/rhn_1_v.inc" +}; + +static Gfx head_rhn_model[] = { + gsSPMatrix(anime_6_model + sizeof(Mtx) * 7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[21], 8, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 13.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[29], 19, 8), + gsSPNTrianglesInit_5b(13, // tri count + 0, 8, 6, // tri0 + 5, 9, 4, // tri1 + 3, 10, 5 // tri2 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 4, 13, 14, // tri1 + 2, 15, 16, // tri2 + 3, 17, 18 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 0, 4, 21, // tri1 + 3, 1, 22, // tri2 + 7, 23, 2 // tri3 + ), + gsSPNTriangles_5b(6, 24, 25, // tri0 + 6, 26, 7, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rhn_1_v[48], 27, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 5, 6, 7, // tri0 + 8, 9, 5, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(15, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 16, 17, 14 // tri2 + ), + gsSPNTriangles_5b(18, 19, 20, // tri0 + 11, 21, 14, // tri1 + 19, 13, 22, // tri2 + 23, 22, 13 // tri3 + ), + gsSPNTriangles_5b(24, 17, 16, // tri0 + 14, 21, 25, // tri1 + 15, 26, 13, // tri2 + 13, 26, 23 // tri3 + ), + gsSPNTriangles_5b(25, 15, 14, // tri0 + 14, 13, 16, // tri1 + 14, 12, 11, // tri2 + 22, 20, 19 // tri3 + ), + gsSPVertex(&rhn_1_v[75], 17, 0), + gsSPNTrianglesInit_5b(15, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 10, 11, 12, // tri1 + 9, 8, 2, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(8, 9, 6, // tri0 + 8, 4, 3, // tri1 + 11, 10, 8, // tri2 + 3, 2, 8 // tri3 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 8, 7, 11, // tri1 + 13, 2, 15, // tri2 + 15, 14, 13 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPVertex(&rhn_1_v[92], 29, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(4, 3, 0, // tri0 + 4, 0, 7, // tri1 + 4, 8, 5, // tri2 + 4, 9, 8 // tri3 + ), + gsSPNTriangles_5b(10, 11, 12, // tri0 + 13, 14, 12, // tri1 + 15, 10, 6, // tri2 + 8, 13, 16 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 17, 18, 6, // tri1 + 10, 17, 6, // tri2 + 18, 17, 19 // tri3 + ), + gsSPNTriangles_5b(10, 14, 19, // tri0 + 20, 21, 22, // tri1 + 12, 14, 10, // tri2 + 18, 9, 6 // tri3 + ), + gsSPNTriangles_5b(2, 7, 0, // tri0 + 22, 12, 11, // tri1 + 19, 17, 10, // tri2 + 6, 2, 15 // tri3 + ), + gsSPNTriangles_5b(8, 18, 23, // tri0 + 8, 23, 13, // tri1 + 24, 25, 26, // tri2 + 19, 23, 18 // tri3 + ), + gsSPNTriangles_5b(19, 14, 13, // tri0 + 25, 24, 22, // tri1 + 12, 24, 13, // tri2 + 8, 9, 18 // tri3 + ), + gsSPNTriangles_5b(7, 9, 4, // tri0 + 24, 12, 22, // tri1 + 5, 27, 3, // tri2 + 13, 23, 19 // tri3 + ), + gsSPNTriangles_5b(16, 5, 8, // tri0 + 22, 11, 20, // tri1 + 22, 21, 25, // tri2 + 28, 20, 11 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rhn_1_v[121], 25, 0), + gsSPNTrianglesInit_5b(27, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 0, 2, // tri1 + 12, 5, 7, // tri2 + 13, 14, 15 // tri3 + ), + gsSPNTriangles_5b(16, 7, 14, // tri0 + 13, 16, 14, // tri1 + 2, 15, 11, // tri2 + 17, 18, 4 // tri3 + ), + gsSPNTriangles_5b(3, 0, 19, // tri0 + 20, 3, 21, // tri1 + 4, 18, 0, // tri2 + 7, 16, 12 // tri3 + ), + gsSPNTriangles_5b(4, 22, 23, // tri0 + 7, 8, 14, // tri1 + 14, 11, 15, // tri2 + 0, 18, 1 // tri3 + ), + gsSPNTriangles_5b(9, 8, 24, // tri0 + 4, 23, 17, // tri1 + 8, 7, 24, // tri2 + 24, 7, 6 // tri3 + ), + gsSPNTriangles_5b(22, 4, 20, // tri0 + 20, 4, 3, // tri1 + 19, 21, 3, // tri2 + 10, 14, 8 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rhn_1_v[146], 16, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 0, 5, // tri0 + 6, 5, 8, // tri1 + 4, 9, 2, // tri2 + 8, 10, 6 // tri3 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 4, 11, 8, // tri1 + 1, 0, 12, // tri2 + 11, 10, 8 // tri3 + ), + gsSPNTriangles_5b(8, 9, 4, // tri0 + 13, 6, 10, // tri1 + 14, 3, 1, // tri2 + 10, 11, 15 // tri3 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rhn_1_v[162], 27, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 5 // tri2 + ), + gsSPNTriangles_5b(2, 7, 0, // tri0 + 8, 9, 10, // tri1 + 3, 6, 10, // tri2 + 1, 0, 3 // tri3 + ), + gsSPNTriangles_5b(11, 12, 8, // tri0 + 13, 14, 2, // tri1 + 8, 13, 1, // tri2 + 1, 9, 8 // tri3 + ), + gsSPNTriangles_5b(8, 15, 11, // tri0 + 3, 9, 1, // tri1 + 3, 0, 7, // tri2 + 10, 9, 3 // tri3 + ), + gsSPNTriangles_5b(16, 5, 4, // tri0 + 10, 15, 8, // tri1 + 12, 11, 17, // tri2 + 14, 13, 8 // tri3 + ), + gsSPNTriangles_5b(2, 1, 13, // tri0 + 7, 4, 3, // tri1 + 8, 12, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 18, 20, // tri1 + 21, 20, 22 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(2, // tri count + 23, 24, 25, // tri0 + 26, 23, 25, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&rhn_1_v[189], 14, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 0, 2, 4 // tri2 + ), + gsSPNTriangles_5b(3, 4, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(2, // tri count + 5, 6, 7, // tri0 + 5, 7, 8, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 9, 10, 11, // tri0 + 10, 9, 12, // tri1 + 13, 9, 11 // tri2 + ), + gsSPNTriangles_5b(9, 13, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_rhn_model[] = { + gsSPMatrix(anime_6_model + sizeof(Mtx) * 13.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[0], 5, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 12.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[5], 16, 5), + gsSPNTrianglesInit_5b(4, // tri count + 0, 5, 6, // tri0 + 2, 7, 8, // tri1 + 0, 4, 9 // tri2 + ), + gsSPNTriangles_5b(4, 2, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(2, // tri count + 3, 1, 11, // tri0 + 1, 13, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_rhn_model[] = { + gsSPMatrix(anime_6_model + sizeof(Mtx) * 10.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[237], 5, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 11.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[242], 18, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 5, 6, // tri0 + 3, 0, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 2, 12, 11, // tri1 + 3, 13, 4, // tri2 + 2, 4, 14 // tri3 + ), + gsSPNTriangles_5b(1, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_rhn_model[] = { + gsSPMatrix(anime_6_model + sizeof(Mtx) * 7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[260], 4, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 10.0, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[264], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 1, 6, // tri1 + 3, 0, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 1, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_rhn_model[] = { + gsSPMatrix(anime_6_model + sizeof(Mtx) * 8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[203], 4, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[207], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 3, 12, 13 // tri3 + ), + gsSPNTriangles_5b(3, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_rhn_model[] = { + gsSPMatrix(anime_6_model + sizeof(Mtx) * 7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[223], 3, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[226], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 3, // tri0 + 0, 5, 4, // tri1 + 2, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 0, 8, // tri0 + 1, 2, 9, // tri1 + 1, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_rhn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[275], 7, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[282], 24, 7), + gsSPNTrianglesInit_5b(14, // tri count + 6, 5, 7, // tri0 + 6, 9, 8, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(0, 12, 13, // tri0 + 3, 14, 15, // tri1 + 5, 2, 16, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(4, 19, 1, // tri0 + 4, 20, 21, // tri1 + 1, 22, 23, // tri2 + 2, 24, 25 // tri3 + ), + gsSPNTriangles_5b(3, 6, 26, // tri0 + 5, 27, 28, // tri1 + 2, 0, 29, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 30, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_rhn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[328], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 7, 1, // tri0 + 6, 7, 4, // tri1 + 1, 0, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_rhn_model[] = { + gsSPMatrix(anime_6_model + sizeof(Mtx) * 5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[306], 4, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 8, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[310], 18, 4), + gsSPNTrianglesInit_5b(6, // tri count + 1, 4, 5, // tri0 + 1, 0, 6, // tri1 + 3, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 2, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 14, 17, 15 // tri2 + ), + gsSPNTriangles_5b(19, 20, 14, // tri0 + 18, 21, 16, // tri1 + 19, 13, 17, // tri2 + 17, 13, 15 // tri3 + ), + gsSPNTriangles_5b(14, 13, 19, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_rhn_model[] = { + gsSPMatrix(anime_6_model + sizeof(Mtx) * 3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[388], 4, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[392], 17, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 4, 5, // tri0 + 2, 1, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 0, 3, 10, // tri1 + 3, 2, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsSPNTriangles_5b(2, 15, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 17, 16, 20 // tri2 + ), + gsSPNTriangles_5b(20, 18, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_rhn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[409], 5, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[414], 20, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 6, 5, // tri0 + 3, 2, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 0, 4, 11, // tri1 + 1, 12, 2, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPNTrianglesInit_5b(7, // tri count + 18, 19, 20, // tri0 + 21, 20, 22, // tri1 + 18, 23, 24 // tri2 + ), + gsSPNTriangles_5b(22, 23, 21, // tri0 + 22, 24, 23, // tri1 + 24, 19, 18, // tri2 + 20, 21, 18 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_rhn_model[] = { + gsSPMatrix(anime_6_model + sizeof(Mtx) * 1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[336], 5, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[341], 19, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 2, 5, // tri0 + 2, 1, 6, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 10, 11, // tri1 + 0, 12, 13, // tri2 + 0, 4, 14 // tri3 + ), + gsSPNTriangles_5b(0, 16, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 18, 22, 20 // tri2 + ), + gsSPNTriangles_5b(20, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_rhn_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[360], 6, 0), + gsSPMatrix(anime_6_model + sizeof(Mtx) * 1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&rhn_1_v[366], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 1, 7, 6, // tri0 + 0, 3, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(3, 4, 11, // tri0 + 5, 2, 12, // tri1 + 0, 13, 1, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPNTrianglesInit_5b(7, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 19, 21, 25 // tri2 + ), + gsSPNTriangles_5b(24, 26, 22, // tri0 + 27, 19, 25, // tri1 + 25, 23, 27, // tri2 + 23, 22, 27 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_rhn_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&rhn_1_v[434], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 8, 9, 1, // tri1 + 4, 0, 5, // tri2 + 10, 1, 9 // tri3 + ), + gsSPNTriangles_5b(11, 9, 12, // tri0 + 0, 8, 1, // tri1 + 11, 10, 9, // tri2 + 7, 13, 3 // tri3 + ), + gsSPNTriangles_5b(5, 6, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_rhn_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_rhn_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-450,0 }, + /* joint 3 */ { Lfoot1_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,450,0 }, + /* joint 7 */ { Rfoot1_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-725 }, + /* joint 11 */ { tail1_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_rhn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 13 */ { chest_rhn_model, 3, cKF_JOINT_FLAG_DISP_OPA, 329,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 625,-850,100 }, + /* joint 15 */ { Larm1_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_rhn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 625,850,100 }, + /* joint 18 */ { Rarm1_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 883,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,600 }, + /* joint 23 */ { mouth_rhn_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_rhn_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_rhn_1 = { 26, 14, cKF_je_r_rhn_1_tbl }; diff --git a/src/data/npc/model/mdl/seg_1.c b/src/data/npc/model/mdl/seg_1.c new file mode 100644 index 00000000..f0108d77 --- /dev/null +++ b/src/data/npc/model/mdl/seg_1.c @@ -0,0 +1,755 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx seg_1_v[] = { +#include "assets/npc/mdl/seg_1_v.inc" +}; + +static Gfx head_seg_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[21], 30, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 3, 5, 4 // tri2 + ), + gsSPNTriangles_5b(4, 6, 0, // tri0 + 7, 3, 0, // tri1 + 7, 0, 2, // tri2 + 0, 6, 1 // tri3 + ), + gsSPNTriangles_5b(5, 8, 4, // tri0 + 4, 9, 6, // tri1 + 7, 10, 3, // tri2 + 10, 5, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 14, 15, 11 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(17, // tri count + 16, 17, 18, // tri0 + 16, 19, 20, // tri1 + 17, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 20, 24, // tri0 + 23, 25, 26, // tri1 + 27, 23, 28, // tri2 + 24, 25, 23 // tri3 + ), + gsSPNTriangles_5b(20, 23, 16, // tri0 + 18, 19, 16, // tri1 + 22, 18, 17, // tri2 + 24, 22, 21 // tri3 + ), + gsSPNTriangles_5b(24, 21, 25, // tri0 + 21, 17, 26, // tri1 + 26, 25, 21, // tri2 + 26, 17, 29 // tri3 + ), + gsSPNTriangles_5b(17, 16, 27, // tri0 + 27, 16, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&seg_1_v[51], 27, 0), + gsSPNTrianglesInit_5b(39, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 6, 7, 1, // tri1 + 8, 4, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 15, // tri0 + 16, 7, 6, // tri1 + 17, 18, 19, // tri2 + 5, 17, 6 // tri3 + ), + gsSPNTriangles_5b(9, 4, 2, // tri0 + 15, 14, 8, // tri1 + 4, 20, 21, // tri2 + 4, 21, 5 // tri3 + ), + gsSPNTriangles_5b(4, 8, 20, // tri0 + 9, 22, 23, // tri1 + 1, 5, 6, // tri2 + 7, 16, 24 // tri3 + ), + gsSPNTriangles_5b(24, 23, 22, // tri0 + 19, 18, 25, // tri1 + 10, 24, 16, // tri2 + 23, 24, 10 // tri3 + ), + gsSPNTriangles_5b(9, 23, 15, // tri0 + 3, 26, 0, // tri1 + 21, 17, 5, // tri2 + 23, 10, 12 // tri3 + ), + gsSPNTriangles_5b(11, 10, 16, // tri0 + 19, 16, 6, // tri1 + 11, 16, 19, // tri2 + 25, 11, 19 // tri3 + ), + gsSPNTriangles_5b(12, 13, 15, // tri0 + 15, 23, 12, // tri1 + 19, 6, 17, // tri2 + 8, 9, 15 // tri3 + ), + gsSPNTriangles_5b(2, 22, 9, // tri0 + 5, 0, 26, // tri1 + 26, 3, 4, // tri2 + 4, 5, 26 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&seg_1_v[78], 24, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 5, 7, 9, // tri1 + 4, 0, 2, // tri2 + 8, 10, 11 // tri3 + ), + gsSPNTriangles_5b(12, 5, 9, // tri0 + 12, 1, 0, // tri1 + 13, 10, 8, // tri2 + 7, 6, 14 // tri3 + ), + gsSPNTriangles_5b(13, 7, 10, // tri0 + 10, 14, 11, // tri1 + 2, 1, 13, // tri2 + 13, 1, 9 // tri3 + ), + gsSPNTriangles_5b(9, 7, 13, // tri0 + 14, 10, 7, // tri1 + 15, 3, 8, // tri2 + 9, 1, 12 // tri3 + ), + gsSPNTriangles_5b(8, 11, 15, // tri0 + 2, 13, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 18, 19, 16, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 22, 23, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_seg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*15, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[5], 16, 5), + gsSPNTrianglesInit_5b(6, // tri count + 2, 4, 5, // tri0 + 3, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(4, 3, 10, // tri0 + 1, 0, 11, // tri1 + 0, 13, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 18, 19, // tri1 + 19, 18, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_seg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[145], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[149], 26, 4), + gsSPNTrianglesInit_5b(6, // tri count + 1, 3, 4, // tri0 + 0, 5, 6, // tri1 + 2, 0, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 0, 1, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 2, 13, 14, // tri0 + 3, 2, 15, // tri1 + 2, 16, 17 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 24, 22, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 25, 29, 26 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[175], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_seg_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[178], 10, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 3, 4, 5, // tri0 + 5, 6, 7, // tri1 + 8, 9, 4 // tri2 + ), + gsSPNTriangles_5b(7, 6, 9, // tri0 + 4, 3, 8, // tri1 + 7, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_seg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[102], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[106], 26, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 1, 4, // tri0 + 0, 5, 6, // tri1 + 0, 2, 7 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 0, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 2, 13, 14, // tri0 + 2, 3, 15, // tri1 + 2, 16, 17 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 18, 19, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 23, 22, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 25, 26, 27, // tri0 + 27, 28, 25, // tri1 + 26, 29, 27 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[132], 3, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_seg_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[135], 10, 0), + gsSPNTrianglesInit_5b(1, // tri count + 0, 1, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 3, 4, 5, // tri0 + 6, 7, 3, // tri1 + 4, 8, 9 // tri2 + ), + gsSPNTriangles_5b(8, 7, 6, // tri0 + 9, 5, 4, // tri1 + 3, 5, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_seg_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[188], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[197], 20, 9), + gsSPNTrianglesInit_5b(2, // tri count + 2, 9, 3, // tri0 + 5, 4, 10, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 8, 11, 12, // tri0 + 8, 5, 13, // tri1 + 4, 3, 14 // tri2 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 8, 17, 18, // tri0 + 6, 8, 19, // tri1 + 2, 1, 20 // tri2 + ), + gsSPNTriangles_5b(1, 0, 21, // tri0 + 1, 23, 22, // tri1 + 0, 24, 25, // tri2 + 0, 7, 26 // tri3 + ), + gsSPNTriangles_5b(4, 28, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&seg_1_v[217], 25, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 5, 7 // tri2 + ), + gsSPNTriangles_5b(8, 4, 3, // tri0 + 9, 2, 1, // tri1 + 10, 11, 12, // tri2 + 13, 14, 3 // tri3 + ), + gsSPNTriangles_5b(2, 14, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(4, // tri count + 15, 16, 17, // tri0 + 18, 16, 19, // tri1 + 20, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&seg_1_v[242], 15, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 6, 1, 5, // tri1 + 7, 8, 9, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(13, 14, 12, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_seg_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[270], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[273], 6, 3), + gsSPNTrianglesInit_5b(4, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_seg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[257], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[260], 10, 3), + gsSPNTrianglesInit_5b(4, // tri count + 1, 2, 3, // tri0 + 0, 4, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 9, 10, 11, // tri0 + 11, 12, 9, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_seg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[326], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[329], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 0, 2, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 7, // tri0 + 2, 8, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 16, 20, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_seg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[347], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[351], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 2, 10, 11, // tri1 + 2, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_seg_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[365], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 4, 7, 3, // tri1 + 0, 5, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_seg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[279], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[282], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 0, 1, 5, // tri1 + 2, 0, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 12, 14, 15, // tri1 + 16, 17, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 16, // tri0 + 17, 20, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_seg_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[300], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&seg_1_v[304], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 2, 10, 11, // tri1 + 3, 2, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_seg_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x600, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[318], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 0, 7, 4, // tri1 + 2, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_seg_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&seg_1_v[373], 17, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(3, 1, 5, // tri0 + 6, 7, 8, // tri1 + 4, 7, 6, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 11, 12, // tri0 + 10, 8, 11, // tri1 + 13, 9, 12, // tri2 + 10, 14, 6 // tri3 + ), + gsSPNTriangles_5b(8, 10, 6, // tri0 + 1, 0, 15, // tri1 + 15, 9, 13, // tri2 + 15, 0, 14 // tri3 + ), + gsSPNTriangles_5b(9, 15, 14, // tri0 + 0, 6, 14, // tri1 + 9, 14, 10, // tri2 + 15, 13, 5 // tri3 + ), + gsSPNTriangles_5b(5, 1, 15, // tri0 + 6, 0, 4, // tri1 + 12, 16, 13, // tri2 + 5, 16, 3 // tri3 + ), + gsSPNTriangles_5b(16, 5, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_seg_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_seg_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_seg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_seg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,-650 }, + /* joint 11 */ { tail1_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_seg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_seg_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,-500,0 }, + /* joint 15 */ { Larm1_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_seg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1150,500,0 }, + /* joint 18 */ { Rarm1_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 998,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1274,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,1350 }, + /* joint 23 */ { mouth_seg_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_seg_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1601,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_seg_1 = { 26, 16, cKF_je_r_seg_1_tbl }; diff --git a/src/data/npc/model/mdl/shp_1.c b/src/data/npc/model/mdl/shp_1.c new file mode 100644 index 00000000..6392e117 --- /dev/null +++ b/src/data/npc/model/mdl/shp_1.c @@ -0,0 +1,540 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx shp_1_v[] = { +#include "assets/npc/mdl/shp_1_v.inc" +}; + +static Gfx head_shp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&shp_1_v[5], 24, 5), + gsSPNTrianglesInit_5b(5, // tri count + 2, 1, 5, // tri0 + 4, 3, 6, // tri1 + 0, 4, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 8, // tri0 + 3, 2, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(14, // tri count + 10, 11, 12, // tri0 + 12, 13, 14, // tri1 + 12, 11, 15 // tri2 + ), + gsSPNTriangles_5b(15, 13, 12, // tri0 + 16, 17, 18, // tri1 + 18, 19, 16, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(21, 19, 18, // tri0 + 17, 20, 18, // tri1 + 22, 23, 24, // tri2 + 24, 25, 26 // tri3 + ), + gsSPNTriangles_5b(26, 27, 24, // tri0 + 24, 27, 28, // tri1 + 24, 28, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[29], 32, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 10, 11, 12, // tri1 + 10, 12, 9, // tri2 + 13, 4, 14 // tri3 + ), + gsSPNTriangles_5b(15, 7, 6, // tri0 + 8, 9, 6, // tri1 + 16, 13, 17, // tri2 + 18, 2, 16 // tri3 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 22, 21, 23, // tri1 + 24, 5, 25, // tri2 + 26, 27, 20 // tri3 + ), + gsSPNTriangles_5b(12, 11, 28, // tri0 + 24, 25, 29, // tri1 + 29, 30, 24, // tri2 + 6, 31, 15 // tri3 + ), + gsSPVertex(&shp_1_v[61], 32, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 13, 14, // tri1 + 15, 16, 17, // tri2 + 18, 19, 20 // tri3 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 24, 25, 26, // tri1 + 27, 28, 29, // tri2 + 30, 31, 14 // tri3 + ), + gsSPVertex(&shp_1_v[93], 27, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 0, // tri1 + 2, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 2, 1, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 18, 15, 19, // tri2 + 20, 21, 22 // tri3 + ), + gsSPNTriangles_5b(16, 23, 24, // tri0 + 25, 4, 3, // tri1 + 26, 20, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&shp_1_v[120], 24, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 5, 9, // tri1 + 1, 0, 9, // tri2 + 9, 5, 4 // tri3 + ), + gsSPNTriangles_5b(4, 1, 9, // tri0 + 9, 0, 7, // tri1 + 2, 6, 0, // tri2 + 5, 8, 3 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 10, 11, 12, // tri0 + 13, 14, 15, // tri1 + 15, 14, 16 // tri2 + ), + gsSPNTriangles_5b(16, 11, 10, // tri0 + 10, 15, 16, // tri1 + 10, 12, 17, // tri2 + 17, 13, 15 // tri3 + ), + gsSPNTriangles_5b(17, 15, 10, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(5, // tri count + 18, 19, 20, // tri0 + 21, 22, 20, // tri1 + 23, 21, 20 // tri2 + ), + gsSPNTriangles_5b(22, 18, 20, // tri0 + 20, 19, 23, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_shp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[175], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&shp_1_v[180], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 1, 2, 5, // tri0 + 3, 0, 6, // tri1 + 4, 7, 0 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 12, 4, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_shp_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[197], 9, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 1 // tri2 + ), + gsSPNTriangles_5b(1, 6, 7, // tri0 + 2, 8, 0, // tri1 + 0, 8, 3, // tri2 + 5, 0, 3 // tri3 + ), + gsSPNTriangles_5b(7, 2, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_shp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[144], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&shp_1_v[149], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 2, 1, 5, // tri0 + 0, 3, 6, // tri1 + 0, 7, 4 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 4, 12, 1, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_shp_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[166], 9, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(7, 6, 1, // tri0 + 2, 8, 0, // tri1 + 5, 8, 2, // tri2 + 5, 2, 3 // tri3 + ), + gsSPNTriangles_5b(1, 0, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_shp_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[206], 26, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 4, 2, // tri0 + 2, 4, 0, // tri1 + 7, 8, 6, // tri2 + 6, 8, 3 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 12, 1, 0, // tri1 + 11, 10, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 13, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(3, // tri count + 19, 20, 21, // tri0 + 22, 23, 24, // tri1 + 22, 24, 25 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsSPVertex(&shp_1_v[232], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 7, 8, 9 // tri3 + ), + gsSPNTriangles_5b(9, 8, 10, // tri0 + 11, 12, 9, // tri1 + 9, 12, 13, // tri2 + 9, 13, 7 // tri3 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_shp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[279], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&shp_1_v[284], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 1, 2, 5, // tri0 + 3, 0, 6, // tri1 + 4, 7, 0 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 1, 12, 4, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_shp_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[301], 11, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 1, 0, 3 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 2, 7, 0, // tri1 + 0, 7, 8, // tri2 + 9, 10, 3 // tri3 + ), + gsSPNTriangles_5b(8, 3, 0, // tri0 + 6, 2, 1, // tri1 + 3, 8, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_shp_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[246], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&shp_1_v[251], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 2, 1, 5, // tri0 + 0, 3, 6, // tri1 + 0, 7, 4 // tri2 + ), + gsSPNTriangles_5b(0, 8, 9, // tri0 + 1, 10, 11, // tri1 + 4, 12, 1, // tri2 + 0, 13, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_shp_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[268], 11, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 4, 2, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 1, // tri0 + 2, 7, 0, // tri1 + 8, 7, 2, // tri2 + 4, 9, 10 // tri3 + ), + gsSPNTriangles_5b(2, 4, 8, // tri0 + 1, 0, 5, // tri1 + 10, 8, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_shp_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 32, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 252), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&shp_1_v[312], 14, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 4, 5, 2 // tri2 + ), + gsSPNTriangles_5b(2, 5, 6, // tri0 + 2, 6, 0, // tri1 + 2, 3, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 7, 8, 9, // tri0 + 9, 8, 10, // tri1 + 11, 12, 9 // tri2 + ), + gsSPNTriangles_5b(9, 12, 13, // tri0 + 9, 13, 7, // tri1 + 9, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_shp_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_shp_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-375,0 }, + /* joint 3 */ { Lfoot1_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,375,0 }, + /* joint 7 */ { Rfoot1_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-300 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 100,0,0 }, + /* joint 13 */ { chest_shp_model, 3, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-1125,0 }, + /* joint 15 */ { Larm1_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_shp_model, 0, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,1125,0 }, + /* joint 18 */ { Rarm1_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 425,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 975,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 175,0,1200 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_shp_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_shp_1 = { 26, 11, cKF_je_r_shp_1_tbl }; diff --git a/src/data/npc/model/mdl/snt_1.c b/src/data/npc/model/mdl/snt_1.c new file mode 100644 index 00000000..dbe979b1 --- /dev/null +++ b/src/data/npc/model/mdl/snt_1.c @@ -0,0 +1,619 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx snt_1_v[] = { +#include "assets/npc/mdl/snt_1_v.inc" +}; + +static Gfx head_snt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[0], 26, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 1, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 2, // tri0 + 5, 6, 7, // tri1 + 6, 0, 3, // tri2 + 7, 2, 5 // tri3 + ), + gsSPNTriangles_5b(3, 2, 7, // tri0 + 5, 4, 6, // tri1 + 7, 6, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(19, // tri count + 8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 14, 11 // tri2 + ), + gsSPNTriangles_5b(8, 15, 9, // tri0 + 16, 12, 17, // tri1 + 17, 8, 16, // tri2 + 15, 8, 18 // tri3 + ), + gsSPNTriangles_5b(19, 20, 18, // tri0 + 21, 11, 22, // tri1 + 23, 19, 8, // tri2 + 23, 8, 17 // tri3 + ), + gsSPNTriangles_5b(10, 16, 8, // tri0 + 14, 24, 11, // tri1 + 12, 11, 17, // tri2 + 17, 11, 21 // tri3 + ), + gsSPNTriangles_5b(17, 21, 23, // tri0 + 18, 8, 19, // tri1 + 22, 25, 21, // tri2 + 22, 11, 24 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&snt_1_v[26], 29, 0), + gsSPNTrianglesInit_5b(37, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 5, 9, 12, // tri1 + 5, 12, 13, // tri2 + 12, 9, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 16, // tri0 + 5, 16, 3, // tri1 + 11, 14, 9, // tri2 + 17, 2, 1 // tri3 + ), + gsSPNTriangles_5b(4, 3, 18, // tri0 + 8, 7, 19, // tri1 + 18, 11, 10, // tri2 + 0, 20, 1 // tri3 + ), + gsSPNTriangles_5b(21, 2, 17, // tri0 + 8, 11, 6, // tri1 + 1, 7, 6, // tri2 + 1, 6, 17 // tri3 + ), + gsSPNTriangles_5b(11, 8, 22, // tri0 + 7, 1, 20, // tri1 + 9, 5, 4, // tri2 + 9, 4, 10 // tri3 + ), + gsSPNTriangles_5b(23, 19, 20, // tri0 + 22, 14, 11, // tri1 + 17, 6, 18, // tri2 + 3, 21, 17 // tri3 + ), + gsSPNTriangles_5b(18, 6, 11, // tri0 + 17, 18, 3, // tri1 + 20, 19, 7, // tri2 + 0, 24, 25 // tri3 + ), + gsSPNTriangles_5b(14, 26, 12, // tri0 + 27, 26, 14, // tri1 + 16, 5, 13, // tri2 + 16, 15, 28 // tri3 + ), + gsSPNTriangles_5b(18, 10, 4, // tri0 + 19, 22, 8, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 252, 255, 255), + gsSPVertex(&snt_1_v[55], 23, 0), + gsSPNTrianglesInit_5b(5, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 4 // tri2 + ), + gsSPNTriangles_5b(2, 6, 0, // tri0 + 4, 3, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPNTrianglesInit_5b(4, // tri count + 7, 8, 9, // tri0 + 9, 10, 7, // tri1 + 7, 10, 11 // tri2 + ), + gsSPNTriangles_5b(11, 8, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(11, // tri count + 12, 13, 14, // tri0 + 15, 16, 17, // tri1 + 17, 16, 18 // tri2 + ), + gsSPNTriangles_5b(18, 19, 17, // tri0 + 17, 19, 20, // tri1 + 12, 21, 22, // tri2 + 17, 12, 14 // tri3 + ), + gsSPNTriangles_5b(17, 14, 15, // tri0 + 22, 13, 12, // tri1 + 20, 21, 12, // tri2 + 12, 17, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&snt_1_v[78], 16, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 1, 6, 2 // tri2 + ), + gsSPNTriangles_5b(4, 7, 5, // tri0 + 5, 8, 3, // tri1 + 9, 10, 2, // tri2 + 11, 12, 3 // tri3 + ), + gsSPNTriangles_5b(1, 13, 6, // tri0 + 3, 14, 11, // tri1 + 2, 15, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&snt_1_v[94], 17, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 5, // tri0 + 7, 9, 10, // tri1 + 11, 8, 7, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(12, 13, 3, // tri0 + 4, 14, 15, // tri1 + 15, 14, 2, // tri2 + 14, 4, 2 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 10, 9, 13, // tri1 + 12, 7, 10, // tri2 + 4, 6, 0 // tri3 + ), + gsSPNTriangles_5b(4, 0, 2, // tri0 + 5, 8, 11, // tri1 + 5, 11, 1, // tri2 + 0, 6, 5 // tri3 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 11, 12, 1, // tri1 + 16, 9, 7, // tri2 + 3, 13, 9 // tri3 + ), + gsSPNTriangles_5b(3, 9, 16, // tri0 + 16, 7, 5, // tri1 + 1, 12, 3, // tri2 + 4, 16, 5 // tri3 + ), + gsSPNTriangles_5b(16, 4, 15, // tri0 + 3, 15, 2, // tri1 + 16, 15, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&snt_1_v[111], 17, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 10, 8, // tri1 + 11, 8, 7, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(3, 13, 11, // tri0 + 14, 15, 6, // tri1 + 0, 15, 14, // tri2 + 0, 6, 15 // tri3 + ), + gsSPNTriangles_5b(11, 13, 9, // tri0 + 13, 10, 9, // tri1 + 9, 8, 11, // tri2 + 0, 2, 4 // tri3 + ), + gsSPNTriangles_5b(0, 4, 6, // tri0 + 1, 12, 7, // tri1 + 1, 7, 5, // tri2 + 1, 5, 4 // tri3 + ), + gsSPNTriangles_5b(1, 4, 2, // tri0 + 1, 11, 12, // tri1 + 8, 10, 16, // tri2 + 16, 10, 13 // tri3 + ), + gsSPNTriangles_5b(16, 13, 3, // tri0 + 5, 8, 16, // tri1 + 3, 11, 1, // tri2 + 5, 16, 6 // tri3 + ), + gsSPNTriangles_5b(14, 6, 16, // tri0 + 0, 14, 3, // tri1 + 3, 14, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_snt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[128], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&snt_1_v[132], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_snt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[148], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&snt_1_v[151], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 4, // tri0 + 0, 5, 6, // tri1 + 0, 1, 7 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 1, 10, 9, // tri1 + 2, 12, 11, // tri2 + 2, 0, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_snt_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[162], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&snt_1_v[168], 22, 6), + gsSPNTrianglesInit_5b(14, // tri count + 0, 4, 6, // tri0 + 4, 3, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 2, 1, 11, // tri1 + 2, 12, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(0, 16, 17, // tri0 + 3, 18, 19, // tri1 + 5, 20, 21, // tri2 + 3, 5, 22 // tri3 + ), + gsSPNTriangles_5b(2, 23, 24, // tri0 + 2, 25, 5, // tri1 + 1, 26, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&snt_1_v[190], 25, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(6, 5, 7, // tri0 + 2, 8, 0, // tri1 + 8, 9, 5, // tri2 + 9, 10, 7 // tri3 + ), + gsSPNTriangles_5b(7, 10, 11, // tri0 + 8, 2, 12, // tri1 + 9, 12, 13, // tri2 + 10, 13, 14 // tri3 + ), + gsSPNTriangles_5b(6, 3, 1, // tri0 + 12, 9, 8, // tri1 + 5, 0, 8, // tri2 + 7, 5, 9 // tri3 + ), + gsSPNTriangles_5b(13, 10, 9, // tri0 + 13, 12, 4, // tri1 + 2, 1, 4, // tri2 + 6, 1, 0 // tri3 + ), + gsSPNTriangles_5b(4, 12, 2, // tri0 + 11, 10, 15, // tri1 + 10, 14, 15, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 16, 17, 18, // tri0 + 16, 19, 17, // tri1 + 19, 20, 21 // tri2 + ), + gsSPNTriangles_5b(19, 16, 20, // tri0 + 21, 22, 19, // tri1 + 17, 19, 22, // tri2 + 23, 17, 22 // tri3 + ), + gsSPNTriangles_5b(21, 20, 24, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&snt_1_v[215], 28, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 1, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 0, // tri0 + 3, 6, 7, // tri1 + 8, 4, 0, // tri2 + 2, 6, 3 // tri3 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 0, 5, 8, // tri1 + 11, 5, 12, // tri2 + 7, 12, 3 // tri3 + ), + gsSPNTriangles_5b(11, 8, 5, // tri0 + 8, 11, 9, // tri1 + 13, 6, 1, // tri2 + 10, 14, 4 // tri3 + ), + gsSPNTriangles_5b(14, 13, 1, // tri0 + 10, 4, 8, // tri1 + 1, 6, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 253, 255, 255), + gsSPNTrianglesInit_5b(19, // tri count + 15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 20, 15, 19 // tri2 + ), + gsSPNTriangles_5b(21, 16, 20, // tri0 + 21, 20, 19, // tri1 + 22, 23, 16, // tri2 + 22, 16, 21 // tri3 + ), + gsSPNTriangles_5b(24, 25, 19, // tri0 + 25, 26, 22, // tri1 + 26, 27, 22, // tri2 + 24, 19, 18 // tri3 + ), + gsSPNTriangles_5b(25, 24, 26, // tri0 + 27, 18, 22, // tri1 + 27, 26, 24, // tri2 + 25, 21, 19 // tri3 + ), + gsSPNTriangles_5b(25, 22, 21, // tri0 + 18, 27, 24, // tri1 + 17, 22, 18, // tri2 + 17, 18, 15 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_snt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[273], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&snt_1_v[278], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 3, 11, // tri1 + 2, 4, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 17, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_snt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[294], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 6, 3, 7, // tri1 + 7, 8, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_snt_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[243], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&snt_1_v[248], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 2, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 4, 2, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 15, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_snt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[264], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 7, 4, 6, // tri1 + 6, 8, 7, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_snt_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&snt_1_v[303], 13, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 1, // tri0 + 7, 1, 4, // tri1 + 9, 10, 11, // tri2 + 11, 12, 9 // tri3 + ), + gsSPNTriangles_5b(0, 2, 5, // tri0 + 9, 7, 10, // tri1 + 12, 2, 8, // tri2 + 8, 7, 9 // tri3 + ), + gsSPNTriangles_5b(12, 11, 6, // tri0 + 5, 12, 6, // tri1 + 6, 3, 0, // tri2 + 4, 1, 0 // tri3 + ), + gsSPNTriangles_5b(8, 9, 12, // tri0 + 2, 1, 8, // tri1 + 12, 5, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_snt_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_snt_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 200,0,-500 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_snt_model, 3, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 850,-500,0 }, + /* joint 15 */ { Larm1_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_snt_model, 0, cKF_JOINT_FLAG_DISP_OPA, 558,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 850,500,0 }, + /* joint 18 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1201,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 700,0,1250 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_snt_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1500,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_snt_1 = { 26, 9, cKF_je_r_snt_1_tbl }; diff --git a/src/data/npc/model/mdl/squ_1.c b/src/data/npc/model/mdl/squ_1.c new file mode 100644 index 00000000..57a5cfcd --- /dev/null +++ b/src/data/npc/model/mdl/squ_1.c @@ -0,0 +1,667 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx squ_1_v[] = { +#include "assets/npc/mdl/squ_1_v.inc" +}; + +static Gfx head_squ_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[0], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 6, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&squ_1_v[12], 25, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 4, 1, 8, // tri1 + 4, 8, 9, // tri2 + 10, 4, 9 // tri3 + ), + gsSPNTriangles_5b(11, 0, 12, // tri0 + 12, 3, 13, // tri1 + 12, 0, 3, // tri2 + 11, 8, 1 // tri3 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 14, 2, 4, // tri1 + 15, 3, 2, // tri2 + 16, 15, 2 // tri3 + ), + gsSPNTriangles_5b(10, 17, 18, // tri0 + 7, 13, 3, // tri1 + 14, 4, 10, // tri2 + 3, 15, 7 // tri3 + ), + gsSPNTriangles_5b(19, 5, 15, // tri0 + 20, 21, 19, // tri1 + 18, 14, 10, // tri2 + 7, 15, 5 // tri3 + ), + gsSPNTriangles_5b(14, 18, 22, // tri0 + 23, 16, 14, // tri1 + 2, 14, 16, // tri2 + 15, 16, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 20, // tri0 + 14, 22, 23, // tri1 + 23, 19, 15, // tri2 + 19, 23, 20 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&squ_1_v[37], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 3, // tri0 + 10, 8, 3, // tri1 + 11, 0, 2, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 7, 14, 15, // tri1 + 6, 14, 7, // tri2 + 10, 5, 16 // tri3 + ), + gsSPNTriangles_5b(2, 7, 11, // tri0 + 17, 0, 11, // tri1 + 9, 8, 18, // tri2 + 3, 5, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 10, // tri0 + 16, 19, 13, // tri1 + 13, 10, 16, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(13, 17, 11, // tri0 + 8, 12, 15, // tri1 + 15, 12, 7, // tri2 + 15, 18, 8 // tri3 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&squ_1_v[57], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 7, 2, // tri0 + 2, 7, 8, // tri1 + 7, 1, 5, // tri2 + 7, 5, 9 // tri3 + ), + gsSPNTriangles_5b(7, 10, 8, // tri0 + 7, 9, 10, // tri1 + 8, 11, 2, // tri2 + 9, 5, 4 // tri3 + ), + gsSPNTriangles_5b(11, 12, 2, // tri0 + 11, 13, 12, // tri1 + 0, 3, 5, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&squ_1_v[71], 20, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 7, 8, // tri1 + 0, 4, 9, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(4, 5, 12, // tri0 + 4, 12, 13, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b(10, 14, 17, // tri0 + 10, 17, 6, // tri1 + 9, 1, 0, // tri2 + 6, 8, 10 // tri3 + ), + gsSPNTriangles_5b(18, 9, 4, // tri0 + 14, 11, 19, // tri1 + 11, 14, 10, // tri2 + 19, 15, 14 // tri3 + ), + gsSPNTriangles_5b(4, 13, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_squ_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[127], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[132], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_squ_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[148], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[152], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_squ_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[91], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[96], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_squ_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[112], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[116], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_squ_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[163], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[170], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&squ_1_v[190], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_squ_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[242], 13, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 9, 11, // tri2 + 6, 3, 4 // tri3 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 9, 2, 6, // tri1 + 5, 3, 10, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(0, 10, 3, // tri0 + 9, 10, 0, // tri1 + 11, 9, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(10, 12, 5, // tri0 + 6, 1, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_squ_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[199], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[205], 16, 6), + gsSPNTrianglesInit_5b(11, // tri count + 3, 6, 7, // tri0 + 5, 1, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(2, 0, 11, // tri0 + 0, 3, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 1, // tri0 + 4, 18, 3, // tri1 + 4, 5, 19, // tri2 + 5, 20, 21 // tri3 + ), + gsSPVertex(&squ_1_v[221], 21, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 9, 11, 5, // tri2 + 6, 12, 7 // tri3 + ), + gsSPNTriangles_5b(13, 10, 14, // tri0 + 9, 7, 12, // tri1 + 5, 4, 7, // tri2 + 5, 7, 9 // tri3 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 13, 15, 16, // tri1 + 17, 18, 19, // tri2 + 17, 19, 15 // tri3 + ), + gsSPNTriangles_5b(13, 17, 15, // tri0 + 19, 18, 8, // tri1 + 11, 10, 13, // tri2 + 20, 2, 16 // tri3 + ), + gsSPNTriangles_5b(11, 13, 1, // tri0 + 10, 12, 14, // tri1 + 12, 10, 9, // tri2 + 14, 17, 13 // tri3 + ), + gsSPNTriangles_5b(8, 18, 6, // tri0 + 19, 20, 16, // tri1 + 19, 16, 15, // tri2 + 20, 19, 8 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 3, 8, 4, // tri1 + 5, 11, 1, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 13, 16, // tri0 + 20, 8, 3, // tri1 + 1, 16, 2, // tri2 + 2, 20, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_squ_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[305], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[310], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_squ_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[327], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[331], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_squ_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[255], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[260], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_squ_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[277], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&squ_1_v[283], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_squ_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&squ_1_v[353], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_squ_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_squ_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-350,0 }, + /* joint 3 */ { Lfoot1_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,350,0 }, + /* joint 7 */ { Rfoot1_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,-700 }, + /* joint 11 */ { tail1_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_squ_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1099,0,0 }, + /* joint 13 */ { chest_squ_model, 3, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-650,0 }, + /* joint 15 */ { Larm1_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_squ_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,650,0 }, + /* joint 18 */ { Rarm1_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_squ_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1600,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_squ_1 = { 26, 13, cKF_je_r_squ_1_tbl }; diff --git a/src/data/npc/model/mdl/tig_1.c b/src/data/npc/model/mdl/tig_1.c new file mode 100644 index 00000000..45efef1a --- /dev/null +++ b/src/data/npc/model/mdl/tig_1.c @@ -0,0 +1,679 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx tig_1_v[] = { +#include "assets/npc/mdl/tig_1_v.inc" +}; + +static Gfx head_tig_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[21], 17, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(0, 7, 8, // tri0 + 6, 9, 4, // tri1 + 3, 0, 8, // tri2 + 10, 11, 12 // tri3 + ), + gsSPNTriangles_5b(12, 11, 7, // tri0 + 8, 13, 3, // tri1 + 6, 14, 9, // tri2 + 15, 4, 9 // tri3 + ), + gsSPNTriangles_5b(12, 14, 10, // tri0 + 15, 9, 2, // tri1 + 2, 1, 16, // tri2 + 7, 0, 12 // tri3 + ), + gsSPNTriangles_5b(12, 9, 14, // tri0 + 2, 12, 0, // tri1 + 9, 12, 2, // tri2 + 16, 15, 2 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tig_1_v[38], 32, 0), + gsSPNTrianglesInit_5b(36, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 + ), + gsSPNTriangles_5b(0, 7, 3, // tri0 + 8, 1, 0, // tri1 + 2, 9, 0, // tri2 + 10, 11, 5 // tri3 + ), + gsSPNTriangles_5b(12, 13, 7, // tri0 + 9, 2, 6, // tri1 + 9, 14, 12, // tri2 + 0, 9, 15 // tri3 + ), + gsSPNTriangles_5b(6, 16, 17, // tri0 + 18, 19, 20, // tri1 + 13, 4, 3, // tri2 + 1, 16, 6 // tri3 + ), + gsSPNTriangles_5b(0, 21, 8, // tri0 + 17, 18, 22, // tri1 + 7, 15, 12, // tri2 + 18, 17, 8 // tri3 + ), + gsSPNTriangles_5b(14, 23, 24, // tri0 + 8, 16, 1, // tri1 + 7, 13, 3, // tri2 + 12, 14, 4 // tri3 + ), + gsSPNTriangles_5b(8, 17, 16, // tri0 + 3, 21, 0, // tri1 + 15, 7, 0, // tri2 + 17, 25, 6 // tri3 + ), + gsSPNTriangles_5b(4, 13, 12, // tri0 + 12, 15, 9, // tri1 + 6, 25, 9, // tri2 + 14, 9, 25 // tri3 + ), + gsSPNTriangles_5b(26, 23, 27, // tri0 + 28, 29, 30, // tri1 + 10, 5, 24, // tri2 + 22, 18, 20 // tri3 + ), + gsSPNTriangles_5b(31, 30, 29, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&tig_1_v[70], 27, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(3, 2, 7, // tri0 + 8, 4, 6, // tri1 + 3, 7, 9, // tri2 + 10, 8, 6 // tri3 + ), + gsSPNTriangles_5b(3, 11, 12, // tri0 + 3, 12, 13, // tri1 + 6, 5, 14, // tri2 + 14, 15, 6 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(9, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 18, 22, 16 // tri2 + ), + gsSPNTriangles_5b(23, 24, 20, // tri0 + 23, 17, 16, // tri1 + 18, 25, 22, // tri2 + 17, 23, 19 // tri3 + ), + gsSPNTriangles_5b(20, 19, 23, // tri0 + 26, 25, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 32, 40, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tig_1_v[97], 32, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14, // tri2 + 15, 0, 2 // tri3 + ), + gsSPNTriangles_5b(7, 6, 5, // tri0 + 16, 17, 18, // tri1 + 5, 3, 19, // tri2 + 18, 20, 21 // tri3 + ), + gsSPNTriangles_5b(0, 3, 22, // tri0 + 23, 5, 19, // tri1 + 13, 24, 25, // tri2 + 26, 10, 19 // tri3 + ), + gsSPNTriangles_5b(14, 17, 16, // tri0 + 27, 28, 20, // tri1 + 27, 20, 15, // tri2 + 3, 6, 29 // tri3 + ), + gsSPNTriangles_5b(11, 13, 25, // tri0 + 19, 10, 30, // tri1 + 26, 4, 17, // tri2 + 31, 27, 15 // tri3 + ), + gsSPVertex(&tig_1_v[129], 30, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 8, // tri0 + 5, 11, 0, // tri1 + 0, 2, 12, // tri2 + 13, 14, 7 // tri3 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 18, 19, 6, // tri1 + 18, 6, 3, // tri2 + 0, 16, 3 // tri3 + ), + gsSPNTriangles_5b(0, 3, 5, // tri0 + 8, 20, 4, // tri1 + 4, 6, 8, // tri2 + 12, 17, 16 // tri3 + ), + gsSPNTriangles_5b(5, 21, 22, // tri0 + 23, 13, 19, // tri1 + 18, 15, 24, // tri2 + 25, 20, 26 // tri3 + ), + gsSPNTriangles_5b(27, 4, 20, // tri0 + 28, 11, 29, // tri1 + 29, 11, 22, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tig_1_v[159], 18, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 10, // tri0 + 0, 2, 11, // tri1 + 12, 5, 4, // tri2 + 8, 13, 6 // tri3 + ), + gsSPNTriangles_5b(14, 15, 3, // tri0 + 11, 16, 0, // tri1 + 10, 12, 4, // tri2 + 3, 17, 14 // tri3 + ), + gsSPNTriangles_5b(6, 13, 1, // tri0 + 5, 17, 3, // tri1 + 1, 0, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_tig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[5], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 5, 6, // tri0 + 2, 7, 8, // tri1 + 4, 0, 9 // tri2 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 12, 3, // tri1 + 0, 2, 13, // tri2 + 0, 14, 15 // tri3 + ), + gsSPNTriangles_5b(1, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_tig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[214], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[219], 17, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 3, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 1, 4, 12, // tri1 + 0, 13, 14, // tri2 + 2, 0, 15 // tri3 + ), + gsSPNTriangles_5b(3, 2, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_tig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[236], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[240], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 3, 6, 5, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(3, 1, 9, // tri0 + 1, 0, 10, // tri1 + 0, 11, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_tig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[177], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[182], 17, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 3, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 1, 12, // tri1 + 0, 13, 14, // tri2 + 0, 2, 15 // tri3 + ), + gsSPNTriangles_5b(2, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 20, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_tig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[199], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[203], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 4, // tri0 + 3, 6, 5, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 3, 9, // tri0 + 0, 1, 10, // tri1 + 0, 11, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_tig_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[251], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[258], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 + ), + gsSPNTriangles_5b(3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&tig_1_v[278], 10, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_tig_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[312], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_tig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[288], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[292], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 + ), + gsSPNTriangles_5b(17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_tig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[361], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[366], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 2, 3, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 3, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_tig_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[383], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[389], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 2, 6, 7, // tri0 + 3, 8, 9, // tri1 + 3, 4, 10 // tri2 + ), + gsSPNTriangles_5b(4, 2, 11, // tri0 + 0, 3, 12, // tri1 + 5, 1, 13, // tri2 + 5, 14, 15 // tri3 + ), + gsSPNTriangles_5b(2, 5, 16, // tri0 + 0, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_tig_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[320], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[325], 17, 5), + gsSPNTrianglesInit_5b(9, // tri count + 3, 5, 6, // tri0 + 3, 2, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(1, 9, 10, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 + ), + gsSPNTriangles_5b(1, 15, 16, // tri0 + 3, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 19, 20, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_tig_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[342], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tig_1_v[348], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 1, 6, 7, // tri0 + 2, 8, 9, // tri1 + 0, 2, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 2, 4, 12, // tri1 + 5, 3, 13, // tri2 + 3, 14, 15 // tri3 + ), + gsSPNTriangles_5b(3, 1, 16, // tri0 + 4, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_tig_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tig_1_v[402], 26, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 1, 0, // tri1 + 2, 1, 4 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 5, 6, 7, // tri0 + 8, 9, 10, // tri1 + 11, 12, 13 // tri2 + ), + gsSPNTriangles_5b(14, 15, 16, // tri0 + 7, 17, 5, // tri1 + 18, 9, 19, // tri2 + 18, 19, 15 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 9, 18, 10, // tri1 + 6, 5, 11, // tri2 + 11, 13, 6 // tri3 + ), + gsSPNTriangles_5b(19, 16, 15, // tri0 + 12, 8, 10, // tri1 + 16, 20, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x480, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 21, 22, 23, // tri0 + 23, 22, 24, // tri1 + 25, 22, 21 // tri2 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_tig_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_tig_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_tig_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_tig_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,-500,0 }, + /* joint 15 */ { Larm1_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_tig_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 450,500,0 }, + /* joint 18 */ { Rarm1_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,700 }, + /* joint 23 */ { mouth_tig_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_tig_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1300,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_tig_1 = { 26, 14, cKF_je_r_tig_1_tbl }; diff --git a/src/data/npc/model/mdl/ttl_1.c b/src/data/npc/model/mdl/ttl_1.c new file mode 100644 index 00000000..5de8b6fe --- /dev/null +++ b/src/data/npc/model/mdl/ttl_1.c @@ -0,0 +1,649 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx ttl_1_v[] = { +#include "assets/npc/mdl/ttl_1_v.inc" +}; + +static Gfx head_ttl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[26], 23, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 2, 6, 7, // tri1 + 8, 3, 2, // tri2 + 2, 7, 8 // tri3 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(14, // tri count + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 13, 12, 14 // tri2 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 19, 20, 15, // tri2 + 14, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 13, 14, // tri0 + 12, 13, 11, // tri1 + 11, 20, 9, // tri2 + 17, 16, 22 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 22, 21, 17, // tri1 + 19, 9, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 124), + gsSPVertex(&ttl_1_v[49], 16, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 1, 0, 11, // tri1 + 11, 7, 1, // tri2 + 12, 5, 4 // tri3 + ), + gsSPNTriangles_5b(12, 4, 10, // tri0 + 10, 9, 12, // tri1 + 11, 8, 7, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 6, 15, 9, // tri1 + 8, 15, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[65], 17, 0), + gsSPNTrianglesInit_5b(19, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 8, 10, 11, // tri1 + 8, 11, 9, // tri2 + 8, 7, 12 // tri3 + ), + gsSPNTriangles_5b(4, 13, 3, // tri0 + 4, 3, 5, // tri1 + 5, 2, 14, // tri2 + 5, 3, 2 // tri3 + ), + gsSPNTriangles_5b(0, 10, 1, // tri0 + 1, 10, 8, // tri1 + 1, 12, 14, // tri2 + 1, 14, 2 // tri3 + ), + gsSPNTriangles_5b(14, 6, 5, // tri0 + 12, 1, 8, // tri1 + 6, 15, 4, // tri2 + 9, 16, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&ttl_1_v[82], 27, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 8, // tri0 + 9, 1, 0, // tri1 + 4, 10, 11, // tri2 + 12, 13, 9 // tri3 + ), + gsSPNTriangles_5b(6, 14, 15, // tri0 + 16, 17, 3, // tri1 + 14, 6, 8, // tri2 + 2, 1, 7 // tri3 + ), + gsSPNTriangles_5b(18, 12, 19, // tri0 + 18, 19, 20, // tri1 + 18, 15, 14, // tri2 + 2, 21, 22 // tri3 + ), + gsSPNTriangles_5b(17, 23, 3, // tri0 + 4, 23, 10, // tri1 + 5, 8, 6, // tri2 + 11, 21, 5 // tri3 + ), + gsSPNTriangles_5b(6, 15, 16, // tri0 + 24, 25, 26, // tri1 + 21, 2, 5, // tri2 + 22, 0, 2 // tri3 + ), + gsSPNTriangles_5b(14, 12, 18, // tri0 + 8, 13, 14, // tri1 + 3, 23, 4, // tri2 + 14, 13, 12 // tri3 + ), + gsSPNTriangles_5b(7, 5, 2, // tri0 + 5, 4, 11, // tri1 + 16, 3, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[109], 24, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 5, 1, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 32, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(14, // tri count + 6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 12, 13, 14 // tri2 + ), + gsSPNTriangles_5b(12, 15, 13, // tri0 + 9, 16, 8, // tri1 + 8, 16, 6, // tri2 + 14, 17, 6 // tri3 + ), + gsSPNTriangles_5b(11, 18, 13, // tri0 + 17, 7, 6, // tri1 + 11, 19, 9, // tri2 + 11, 10, 18 // tri3 + ), + gsSPNTriangles_5b(9, 19, 16, // tri0 + 6, 12, 14, // tri1 + 13, 15, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 20, 21, 22, // tri0 + 20, 23, 21, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_ttl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[0], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[5], 21, 5), + gsSPNTrianglesInit_5b(7, // tri count + 1, 2, 5, // tri0 + 3, 0, 6, // tri1 + 1, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 1, 9, // tri0 + 4, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(10, // tri count + 18, 19, 20, // tri0 + 20, 19, 21, // tri1 + 20, 22, 18 // tri2 + ), + gsSPNTriangles_5b(21, 23, 20, // tri0 + 22, 24, 25, // tri1 + 21, 19, 25, // tri2 + 25, 24, 23 // tri3 + ), + gsSPNTriangles_5b(25, 19, 18, // tri0 + 18, 22, 25, // tri1 + 25, 23, 21, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx hand_ttl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[160], 13, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(5, // tri count + 4, 5, 6, // tri0 + 7, 8, 9, // tri1 + 7, 9, 10 // tri2 + ), + gsSPNTriangles_5b(8, 11, 12, // tri0 + 8, 12, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_ttl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[173], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[177], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 1, 2, 4, // tri0 + 2, 0, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 1, 8, // tri0 + 0, 3, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_ttl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[193], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 2, 5, // tri0 + 5, 1, 6, // tri1 + 1, 0, 6, // tri2 + 2, 3, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_ttl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[133], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[137], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 2, 1, 4, // tri0 + 0, 2, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(1, 3, 8, // tri0 + 3, 0, 9, // tri1 + 0, 10, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTriangles_5b(1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_ttl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[153], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(6, 0, 3, // tri0 + 5, 1, 6, // tri1 + 5, 2, 1, // tri2 + 2, 4, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_ttl_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[200], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[208], 22, 8), + gsSPNTrianglesInit_5b(7, // tri count + 7, 8, 9, // tri0 + 7, 10, 5, // tri1 + 7, 11, 12 // tri2 + ), + gsSPNTriangles_5b(5, 13, 14, // tri0 + 5, 15, 3, // tri1 + 3, 16, 17, // tri2 + 3, 18, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPNTrianglesInit_5b(7, // tri count + 2, 20, 21, // tri0 + 2, 0, 22, // tri1 + 1, 23, 24 // tri2 + ), + gsSPNTriangles_5b(6, 2, 25, // tri0 + 1, 4, 26, // tri1 + 0, 27, 28, // tri2 + 1, 29, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPVertex(&ttl_1_v[230], 21, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 3, 1, 4 // tri2 + ), + gsSPNTriangles_5b(4, 1, 5, // tri0 + 5, 1, 6, // tri1 + 7, 8, 9, // tri2 + 6, 1, 0 // tri3 + ), + gsSPNTriangles_5b(3, 10, 11, // tri0 + 4, 8, 10, // tri1 + 5, 9, 8, // tri2 + 6, 12, 9 // tri3 + ), + gsSPNTriangles_5b(0, 13, 12, // tri0 + 2, 11, 13, // tri1 + 14, 11, 10, // tri2 + 14, 10, 15 // tri3 + ), + gsSPNTriangles_5b(11, 2, 3, // tri0 + 10, 3, 4, // tri1 + 8, 4, 5, // tri2 + 9, 5, 6 // tri3 + ), + gsSPNTriangles_5b(12, 6, 0, // tri0 + 13, 0, 2, // tri1 + 15, 10, 8, // tri2 + 15, 8, 7 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPNTrianglesInit_5b(3, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 17, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_ttl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[251], 5, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 0, 2 // tri2 + ), + gsSPNTriangles_5b(3, 4, 2, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_ttl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[286], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[290], 19, 4), + gsSPNTrianglesInit_5b(9, // tri count + 2, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 2, 3, 12, // tri1 + 1, 2, 13, // tri2 + 0, 1, 14 // tri3 + ), + gsSPNTriangles_5b(3, 0, 15, // tri0 + 0, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 20, 19, // tri1 + 21, 19, 22 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_ttl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[309], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 1, 3, 4, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 4, 3, // tri0 + 6, 3, 0, // tri1 + 0, 2, 6, // tri2 + 4, 5, 1 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_ttl_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[256], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&ttl_1_v[260], 19, 4), + gsSPNTrianglesInit_5b(9, // tri count + 2, 4, 5, // tri0 + 2, 6, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 11, // tri0 + 3, 2, 12, // tri1 + 2, 1, 13, // tri2 + 1, 0, 14 // tri3 + ), + gsSPNTriangles_5b(0, 3, 15, // tri0 + 0, 16, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 18, 19, 20, // tri0 + 21, 19, 18, // tri1 + 21, 18, 22 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_ttl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[279], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 0, 5, 1 // tri2 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 2, 4, 6, // tri1 + 6, 0, 2, // tri2 + 1, 5, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_ttl_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&ttl_1_v[316], 9, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 5, 3, 8, // tri1 + 4, 8, 3, // tri2 + 8, 6, 5 // tri3 + ), + gsSPNTriangles_5b(3, 5, 1, // tri0 + 7, 1, 5, // tri1 + 1, 7, 2, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_ttl_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_ttl_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-500,-300 }, + /* joint 3 */ { Lfoot1_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,500,-300 }, + /* joint 7 */ { Rfoot1_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, -400,0,-700 }, + /* joint 11 */ { tail1_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_ttl_model, 3, cKF_JOINT_FLAG_DISP_OPA, 403,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,-700,200 }, + /* joint 15 */ { Larm1_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_ttl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 451,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,700,200 }, + /* joint 18 */ { Rarm1_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 452,0,0 }, + /* joint 20 */ { hand_ttl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 449,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1000,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,2000 }, + /* joint 23 */ { mouth_ttl_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_ttl_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 997,0,1100 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_ttl_1 = { 26, 14, cKF_je_r_ttl_1_tbl }; diff --git a/src/data/npc/model/mdl/tuk_1.c b/src/data/npc/model/mdl/tuk_1.c new file mode 100644 index 00000000..3adced76 --- /dev/null +++ b/src/data/npc/model/mdl/tuk_1.c @@ -0,0 +1,850 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx tuk_1_v[] = { +#include "assets/npc/mdl/tuk_1_v.inc" +}; + +static Gfx head_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[11], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[20], 19, 9), + gsSPNTrianglesInit_5b(9, // tri count + 5, 3, 9, // tri0 + 1, 6, 10, // tri1 + 5, 11, 12 // tri2 + ), + gsSPNTriangles_5b(6, 13, 14, // tri0 + 7, 15, 16, // tri1 + 8, 17, 18, // tri2 + 7, 5, 19 // tri3 + ), + gsSPNTriangles_5b(6, 8, 20, // tri0 + 8, 7, 21, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 2, 4, 22, // tri0 + 4, 23, 24, // tri1 + 4, 25, 26 // tri2 + ), + gsSPNTriangles_5b(4, 0, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[39], 23, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 2, 4, 5 // tri2 + ), + gsSPNTriangles_5b(1, 6, 2, // tri0 + 2, 6, 7, // tri1 + 8, 3, 2, // tri2 + 2, 7, 8 // tri3 + ), + gsSPNTriangles_5b(2, 5, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPNTrianglesInit_5b(14, // tri count + 9, 10, 11, // tri0 + 11, 10, 12, // tri1 + 13, 12, 14 // tri2 + ), + gsSPNTriangles_5b(15, 16, 17, // tri0 + 15, 18, 19, // tri1 + 19, 20, 15, // tri2 + 14, 21, 22 // tri3 + ), + gsSPNTriangles_5b(22, 13, 14, // tri0 + 12, 13, 11, // tri1 + 11, 20, 9, // tri2 + 17, 16, 22 // tri3 + ), + gsSPNTriangles_5b(17, 18, 15, // tri0 + 22, 21, 17, // tri1 + 19, 9, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x140, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 124), + gsSPVertex(&tuk_1_v[62], 27, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 6, // tri0 + 1, 0, 11, // tri1 + 11, 7, 1, // tri2 + 12, 5, 4 // tri3 + ), + gsSPNTriangles_5b(12, 4, 10, // tri0 + 10, 9, 12, // tri1 + 11, 8, 7, // tri2 + 2, 13, 0 // tri3 + ), + gsSPNTriangles_5b(5, 14, 3, // tri0 + 6, 15, 9, // tri1 + 8, 15, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(12, // tri count + 16, 17, 18, // tri0 + 19, 20, 21, // tri1 + 19, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 18, 17, // tri0 + 17, 16, 24, // tri1 + 20, 25, 21, // tri2 + 26, 21, 25 // tri3 + ), + gsSPNTriangles_5b(22, 17, 24, // tri0 + 22, 24, 19, // tri1 + 21, 26, 23, // tri2 + 17, 22, 23 // tri3 + ), + gsSPNTriangles_5b(23, 22, 21, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[89], 13, 0), + gsSPNTrianglesInit_5b(13, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(2, 7, 0, // tri0 + 8, 5, 0, // tri1 + 7, 9, 0, // tri2 + 5, 10, 6 // tri3 + ), + gsSPNTriangles_5b(8, 10, 5, // tri0 + 11, 9, 7, // tri1 + 0, 9, 8, // tri2 + 5, 4, 1 // tri3 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 6, 10, 12, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&tuk_1_v[102], 21, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(4, 9, 5, // tri0 + 8, 2, 10, // tri1 + 11, 4, 3, // tri2 + 10, 2, 4 // tri3 + ), + gsSPNTriangles_5b(12, 8, 7, // tri0 + 9, 4, 1, // tri1 + 6, 8, 13, // tri2 + 4, 11, 10 // tri3 + ), + gsSPNTriangles_5b(4, 2, 1, // tri0 + 10, 14, 8, // tri1 + 13, 8, 14, // tri2 + 2, 12, 0 // tri3 + ), + gsSPNTriangles_5b(12, 2, 8, // tri0 + 15, 16, 17, // tri1 + 18, 19, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[123], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(2, 7, 8, // tri0 + 9, 5, 10, // tri1 + 7, 11, 12, // tri2 + 5, 9, 3 // tri3 + ), + gsSPNTriangles_5b(8, 0, 2, // tri0 + 4, 13, 10, // tri1 + 12, 11, 0, // tri2 + 10, 5, 4 // tri3 + ), + gsSPNTriangles_5b(0, 8, 12, // tri0 + 12, 8, 7, // tri1 + 10, 13, 9, // tri2 + 0, 11, 1 // tri3 + ), + gsSPNTriangles_5b(6, 13, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[137], 29, 0), + gsSPNTrianglesInit_5b(23, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(5, 9, 3, // tri0 + 2, 10, 0, // tri1 + 8, 11, 6, // tri2 + 6, 12, 7 // tri3 + ), + gsSPNTriangles_5b(4, 13, 5, // tri0 + 5, 13, 1, // tri1 + 10, 6, 0, // tri2 + 0, 5, 1 // tri3 + ), + gsSPNTriangles_5b(10, 12, 6, // tri0 + 0, 6, 14, // tri1 + 14, 6, 11, // tri2 + 14, 11, 15 // tri3 + ), + gsSPNTriangles_5b(16, 9, 5, // tri0 + 16, 5, 17, // tri1 + 16, 18, 15, // tri2 + 15, 18, 14 // tri3 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 14, 18, 17, // tri1 + 17, 5, 0, // tri2 + 0, 14, 17 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_MIRROR, 0, 0), + gsDPSetTileSize(0, 0, 0, 60, 60), + gsSPNTrianglesInit_5b(10, // tri count + 19, 20, 21, // tri0 + 22, 23, 19, // tri1 + 21, 24, 25 // tri2 + ), + gsSPNTriangles_5b(25, 22, 19, // tri0 + 25, 19, 21, // tri1 + 23, 26, 27, // tri2 + 24, 21, 20 // tri3 + ), + gsSPNTriangles_5b(27, 19, 23, // tri0 + 20, 28, 24, // tri1 + 19, 27, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[166], 5, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 1, 3, 4 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*14, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[0], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[4], 7, 4), + gsSPNTrianglesInit_5b(5, // tri count + 0, 3, 4, // tri0 + 2, 1, 5, // tri1 + 3, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 9, 8, // tri0 + 3, 2, 10, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[204], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[210], 15, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 6, 7, // tri0 + 2, 4, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(3, 11, 12, // tri0 + 3, 13, 0, // tri1 + 5, 14, 15, // tri2 + 5, 1, 16 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 17, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[225], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[228], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 3, // tri0 + 2, 0, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[171], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[177], 15, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 6, 7, // tri0 + 4, 2, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 11, 12, // tri0 + 0, 13, 3, // tri1 + 5, 14, 15, // tri2 + 1, 5, 16 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[192], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[195], 9, 3), + gsSPNTrianglesInit_5b(6, // tri count + 1, 0, 3, // tri0 + 0, 2, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 2, 1, 9, // tri1 + 2, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_tuk_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[237], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[245], 20, 8), + gsSPNTrianglesInit_5b(14, // tri count + 5, 8, 0, // tri0 + 0, 9, 6, // tri1 + 5, 11, 10 // tri2 + ), + gsSPNTriangles_5b(4, 3, 12, // tri0 + 7, 13, 3, // tri1 + 3, 14, 15, // tri2 + 4, 17, 16 // tri3 + ), + gsSPNTriangles_5b(5, 4, 18, // tri0 + 6, 20, 19, // tri1 + 7, 2, 21, // tri2 + 2, 1, 22 // tri3 + ), + gsSPNTriangles_5b(1, 6, 23, // tri0 + 1, 24, 25, // tri1 + 2, 27, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[265], 18, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 2, 1 // tri2 + ), + gsSPNTriangles_5b(6, 7, 4, // tri0 + 2, 8, 0, // tri1 + 5, 9, 3, // tri2 + 1, 7, 6 // tri3 + ), + gsSPNTriangles_5b(4, 3, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(6, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 11, 10, 14 // tri2 + ), + gsSPNTriangles_5b(12, 15, 16, // tri0 + 14, 17, 11, // tri1 + 16, 13, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&tuk_1_v[283], 26, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 2, 1 // tri2 + ), + gsSPNTriangles_5b(5, 6, 2, // tri0 + 7, 8, 9, // tri1 + 9, 10, 11, // tri2 + 9, 12, 7 // tri3 + ), + gsSPNTriangles_5b(2, 6, 4, // tri0 + 13, 14, 2, // tri1 + 11, 12, 9, // tri2 + 11, 0, 15 // tri3 + ), + gsSPNTriangles_5b(11, 15, 16, // tri0 + 13, 7, 17, // tri1 + 13, 17, 18, // tri2 + 0, 19, 20 // tri3 + ), + gsSPNTriangles_5b(0, 20, 15, // tri0 + 14, 13, 18, // tri1 + 14, 18, 21, // tri2 + 12, 11, 16 // tri3 + ), + gsSPNTriangles_5b(12, 16, 22, // tri0 + 7, 23, 8, // tri1 + 10, 24, 11, // tri2 + 0, 24, 1 // tri3 + ), + gsSPNTriangles_5b(23, 13, 3, // tri0 + 1, 24, 10, // tri1 + 3, 8, 23, // tri2 + 9, 25, 10 // tri3 + ), + gsSPNTriangles_5b(8, 25, 9, // tri0 + 2, 19, 0, // tri1 + 2, 3, 13, // tri2 + 7, 12, 22 // tri3 + ), + gsSPNTriangles_5b(7, 22, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[309], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 16, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[315], 20, 6), + gsSPNTrianglesInit_5b(3, // tri count + 1, 6, 7, // tri0 + 3, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(2, // tri count + 1, 0, 12, // tri0 + 5, 2, 13, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 1, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 16, // tri0 + 3, 17, 18, // tri1 + 1, 19, 20 // tri2 + ), + gsSPNTriangles_5b(4, 5, 21, // tri0 + 4, 22, 23, // tri1 + 2, 24, 25, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[335], 21, 0), + gsSPNTrianglesInit_5b(14, // tri count + 0, 1, 2, // tri0 + 2, 1, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(3, 5, 6, // tri0 + 7, 8, 4, // tri1 + 2, 9, 7, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b(10, 8, 7, // tri0 + 6, 11, 9, // tri1 + 1, 5, 3, // tri2 + 3, 9, 2 // tri3 + ), + gsSPNTriangles_5b(7, 4, 2, // tri0 + 9, 11, 10, // tri1 + 9, 3, 6, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(8, // tri count + 12, 13, 14, // tri0 + 14, 13, 15, // tri1 + 14, 16, 12 // tri2 + ), + gsSPNTriangles_5b(17, 18, 16, // tri0 + 14, 19, 17, // tri1 + 13, 20, 15, // tri2 + 15, 19, 14 // tri3 + ), + gsSPNTriangles_5b(17, 16, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[406], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[410], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 0, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 2, 10, 3, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 13, 16, 14, // tri1 + 13, 17, 18 // tri2 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 15, 19, 13, // tri1 + 18, 20, 13, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[430], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[434], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 0, 8 // tri2 + ), + gsSPNTriangles_5b(0, 2, 9, // tri0 + 2, 10, 11, // tri1 + 1, 3, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_tuk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[448], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(5, 6, 4, // tri0 + 5, 4, 2, // tri1 + 3, 7, 1, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[356], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[360], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 3, 0, 4, // tri0 + 0, 1, 5, // tri1 + 3, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 8, 9, // tri0 + 3, 10, 2, // tri1 + 1, 11, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 14, 16, 15, // tri1 + 17, 18, 15 // tri2 + ), + gsSPNTriangles_5b(18, 19, 15, // tri0 + 15, 19, 13, // tri1 + 15, 20, 17, // tri2 + 0, 0, 0 // tri3 + ), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_tuk_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[380], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&tuk_1_v[384], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 1, 6, 7, // tri1 + 0, 3, 8 // tri2 + ), + gsSPNTriangles_5b(2, 0, 9, // tri0 + 2, 10, 11, // tri1 + 3, 1, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 15, 16, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_tuk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x640, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[398], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 2, 4, 0 // tri2 + ), + gsSPNTriangles_5b(0, 4, 5, // tri0 + 0, 5, 6, // tri1 + 1, 7, 3, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_tuk_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tuk_1_v[456], 13, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 1, 7 // tri2 + ), + gsSPNTriangles_5b(7, 8, 6, // tri0 + 7, 0, 3, // tri1 + 3, 8, 7, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(10, 2, 11, // tri0 + 3, 0, 10, // tri1 + 3, 10, 4, // tri2 + 12, 4, 9 // tri3 + ), + gsSPNTriangles_5b(5, 4, 12, // tri0 + 10, 9, 4, // tri1 + 7, 1, 0, // tri2 + 5, 8, 3 // tri3 + ), + gsSPNTriangles_5b(2, 10, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_tuk_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_tuk_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-400,0 }, + /* joint 3 */ { Lfoot1_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 348,0,0 }, + /* joint 5 */ { Lfoot3_tuk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 351,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,400,0 }, + /* joint 7 */ { Rfoot1_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 349,0,0 }, + /* joint 9 */ { Rfoot3_tuk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 349,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,-800 }, + /* joint 11 */ { tail_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_tuk_model, 3, cKF_JOINT_FLAG_DISP_OPA, 201,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 575,-700,150 }, + /* joint 15 */ { Larm1_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_tuk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 349,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 575,700,150 }, + /* joint 18 */ { Rarm1_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1202,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,950 }, + /* joint 23 */ { mouth_tuk_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_tuk_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1198,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_tuk_1 = { 26, 15, cKF_je_r_tuk_1_tbl }; diff --git a/src/data/npc/model/mdl/wip_1.c b/src/data/npc/model/mdl/wip_1.c new file mode 100644 index 00000000..e0972177 --- /dev/null +++ b/src/data/npc/model/mdl/wip_1.c @@ -0,0 +1,633 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx wip_1_v[] = { +#include "assets/npc/mdl/wip_1_v.inc" +}; + +static Gfx head_wip_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[0], 15, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 1, 3 // tri2 + ), + gsSPNTriangles_5b(6, 3, 7, // tri0 + 6, 7, 8, // tri1 + 1, 0, 7, // tri2 + 9, 10, 8 // tri3 + ), + gsSPNTriangles_5b(6, 11, 12, // tri0 + 13, 11, 10, // tri1 + 3, 6, 4, // tri2 + 12, 4, 6 // tri3 + ), + gsSPNTriangles_5b(14, 9, 8, // tri0 + 14, 8, 7, // tri1 + 7, 0, 14, // tri2 + 11, 6, 8 // tri3 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 7, 3, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 32, 24, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wip_1_v[15], 27, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 11, // tri0 + 5, 4, 12, // tri1 + 13, 14, 15, // tri2 + 16, 14, 17 // tri3 + ), + gsSPNTriangles_5b(16, 18, 19, // tri0 + 20, 3, 5, // tri1 + 6, 8, 11, // tri2 + 15, 21, 13 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 22, 23, 24, // tri1 + 19, 1, 16, // tri2 + 17, 18, 16 // tri3 + ), + gsSPNTriangles_5b(2, 1, 19, // tri0 + 23, 3, 20, // tri1 + 25, 5, 2, // tri2 + 7, 6, 21 // tri3 + ), + gsSPNTriangles_5b(13, 6, 26, // tri0 + 10, 9, 22, // tri1 + 22, 24, 10, // tri2 + 20, 24, 23 // tri3 + ), + gsSPNTriangles_5b(11, 8, 9, // tri0 + 21, 6, 13, // tri1 + 17, 14, 13, // tri2 + 2, 5, 12 // tri3 + ), + gsSPNTriangles_5b(19, 25, 2, // tri0 + 13, 26, 17, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wip_1_v[42], 13, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 2, 3, 0, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 7, 8, 4, // tri1 + 5, 3, 2, // tri2 + 9, 10, 11 // tri3 + ), + gsSPNTriangles_5b(9, 12, 8, // tri0 + 5, 2, 6, // tri1 + 7, 9, 8, // tri2 + 11, 12, 9 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x180, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wip_1_v[55], 32, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 3, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 3, 6, // tri1 + 6, 7, 12, // tri2 + 8, 13, 14 // tri3 + ), + gsSPNTriangles_5b(15, 7, 16, // tri0 + 12, 17, 6, // tri1 + 18, 9, 8, // tri2 + 2, 4, 11 // tri3 + ), + gsSPNTriangles_5b(2, 11, 0, // tri0 + 19, 20, 21, // tri1 + 22, 23, 24, // tri2 + 5, 25, 26 // tri3 + ), + gsSPNTriangles_5b(25, 5, 4, // tri0 + 27, 28, 29, // tri1 + 29, 30, 27, // tri2 + 20, 19, 27 // tri3 + ), + gsSPNTriangles_5b(27, 30, 20, // tri0 + 26, 29, 5, // tri1 + 23, 22, 26, // tri2 + 23, 26, 25 // tri3 + ), + gsSPNTriangles_5b(1, 24, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wip_1_v[86], 32, 0), + gsSPNTrianglesInit_5b(25, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 9, 0, // tri0 + 10, 5, 4, // tri1 + 4, 1, 10, // tri2 + 5, 11, 3 // tri3 + ), + gsSPNTriangles_5b(6, 12, 7, // tri0 + 7, 12, 13, // tri1 + 0, 8, 14, // tri2 + 15, 16, 13 // tri3 + ), + gsSPNTriangles_5b(17, 18, 9, // tri0 + 19, 20, 21, // tri1 + 21, 22, 19, // tri2 + 8, 18, 6 // tri3 + ), + gsSPNTriangles_5b(7, 14, 8, // tri0 + 20, 23, 21, // tri1 + 24, 25, 14, // tri2 + 26, 19, 5 // tri3 + ), + gsSPNTriangles_5b(27, 28, 6, // tri0 + 21, 29, 30, // tri1 + 6, 18, 27, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b(21, 23, 29, // tri0 + 2, 31, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wip_1_v[118], 30, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 3 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 11, 12, 13, // tri1 + 13, 12, 14, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x1C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(18, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 21, 22, 23 // tri2 + ), + gsSPNTriangles_5b(23, 24, 21, // tri0 + 21, 17, 18, // tri1 + 18, 25, 21, // tri2 + 26, 15, 24 // tri3 + ), + gsSPNTriangles_5b(27, 22, 25, // tri0 + 21, 24, 17, // tri1 + 18, 28, 19, // tri2 + 16, 29, 17 // tri3 + ), + gsSPNTriangles_5b(21, 25, 22, // tri0 + 25, 20, 27, // tri1 + 17, 24, 15, // tri2 + 24, 23, 26 // tri3 + ), + gsSPNTriangles_5b(20, 25, 18, // tri0 + 17, 29, 28, // tri1 + 17, 28, 18, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wip_1_v[148], 20, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 10, 1, // tri0 + 11, 10, 12, // tri1 + 13, 14, 11, // tri2 + 2, 3, 15 // tri3 + ), + gsSPNTriangles_5b(16, 14, 17, // tri0 + 8, 16, 18, // tri1 + 4, 7, 19, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_wip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[202], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[206], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 1, 10, // tri0 + 1, 3, 11, // tri1 + 0, 12, 13, // tri2 + 2, 0, 14 // tri3 + ), + gsSPNTriangles_5b(3, 2, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 19, 18, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_wip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[222], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[225], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(2, 1, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_wip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[168], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[172], 16, 4), + gsSPNTrianglesInit_5b(8, // tri count + 0, 4, 5, // tri0 + 3, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 0, 10, // tri0 + 3, 1, 11, // tri1 + 0, 12, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 3, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 16, 17, 18, // tri0 + 17, 16, 19, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_wip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[188], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[191], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 2, 5, 4, // tri1 + 1, 7, 6 // tri2 + ), + gsSPNTriangles_5b(1, 2, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 2, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_wip_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[236], 8, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[244], 24, 8), + gsSPNTrianglesInit_5b(16, // tri count + 0, 8, 9, // tri0 + 0, 10, 11, // tri1 + 4, 2, 12 // tri2 + ), + gsSPNTriangles_5b(3, 13, 14, // tri0 + 7, 15, 16, // tri1 + 3, 6, 17, // tri2 + 7, 18, 19 // tri3 + ), + gsSPNTriangles_5b(2, 1, 20, // tri0 + 1, 0, 21, // tri1 + 3, 22, 23, // tri2 + 7, 4, 24 // tri3 + ), + gsSPNTriangles_5b(2, 25, 26, // tri0 + 0, 5, 27, // tri1 + 5, 3, 28, // tri2 + 6, 7, 29 // tri3 + ), + gsSPNTriangles_5b(2, 30, 31, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wip_1_v[268], 15, 0), + gsSPNTrianglesInit_5b(18, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 5, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 6, 8, // tri0 + 3, 5, 2, // tri1 + 9, 10, 11, // tri2 + 12, 13, 0 // tri3 + ), + gsSPNTriangles_5b(13, 9, 11, // tri0 + 11, 10, 14, // tri1 + 14, 10, 8, // tri2 + 4, 1, 0 // tri3 + ), + gsSPNTriangles_5b(8, 10, 7, // tri0 + 4, 8, 3, // tri1 + 0, 11, 4, // tri2 + 4, 11, 14 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 1, 3, // tri1 + 14, 8, 4, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x3C0, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[283], 19, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 5, 6 // tri2 + ), + gsSPNTriangles_5b(7, 8, 9, // tri0 + 7, 9, 10, // tri1 + 2, 1, 11, // tri2 + 4, 0, 2 // tri3 + ), + gsSPNTriangles_5b(12, 13, 0, // tri0 + 11, 1, 14, // tri1 + 15, 16, 13, // tri2 + 9, 14, 16 // tri3 + ), + gsSPNTriangles_5b(14, 1, 16, // tri0 + 8, 11, 14, // tri1 + 17, 15, 12, // tri2 + 17, 12, 18 // tri3 + ), + gsSPNTriangles_5b(16, 1, 13, // tri0 + 10, 9, 15, // tri1 + 10, 15, 17, // tri2 + 18, 12, 4 // tri3 + ), + gsSPNTriangles_5b(18, 4, 3, // tri0 + 13, 1, 0, // tri1 + 5, 2, 11, // tri2 + 11, 8, 5 // tri3 + ), + gsSPNTriangles_5b(14, 9, 8, // tri0 + 16, 15, 9, // tri1 + 13, 12, 15, // tri2 + 0, 4, 12 // tri3 + ), + gsSPNTriangles_5b(2, 5, 4, // tri0 + 6, 5, 8, // tri1 + 6, 8, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_wip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[327], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[331], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 0, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(0, 1, 9, // tri0 + 1, 2, 10, // tri1 + 2, 3, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 17, 15, 14, // tri1 + 17, 16, 15 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_wip_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[345], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 2, 1, 4, // tri1 + 2, 6, 0, // tri2 + 3, 2, 4 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_wip_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[302], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wip_1_v[306], 14, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 6, 5, // tri1 + 2, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 2, 1, 10, // tri1 + 3, 2, 11, // tri2 + 1, 12, 13 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 15, 14, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_wip_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[320], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(6, 2, 3, // tri0 + 4, 1, 0, // tri1 + 2, 6, 0, // tri2 + 4, 0, 5 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_wip_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wip_1_v[352], 16, 0), + gsSPNTrianglesInit_5b(22, // tri count + 0, 1, 2, // tri0 + 1, 3, 2, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 4, 8, 9, // tri1 + 10, 11, 12, // tri2 + 4, 9, 5 // tri3 + ), + gsSPNTriangles_5b(9, 8, 13, // tri0 + 11, 6, 0, // tri1 + 11, 0, 12, // tri2 + 1, 5, 9 // tri3 + ), + gsSPNTriangles_5b(3, 1, 9, // tri0 + 9, 13, 3, // tri1 + 0, 6, 5, // tri2 + 0, 5, 1 // tri3 + ), + gsSPNTriangles_5b(8, 4, 14, // tri0 + 14, 4, 7, // tri1 + 7, 15, 14, // tri2 + 11, 10, 15 // tri3 + ), + gsSPNTriangles_5b(11, 15, 7, // tri0 + 11, 7, 6, // tri1 + 2, 12, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_wip_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,800,0 }, + /* joint 1 */ { base_wip_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 355,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 343,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 355,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 343,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 300,0,-500 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_wip_model, 3, cKF_JOINT_FLAG_DISP_OPA, 497,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 400,-500,0 }, + /* joint 15 */ { Larm1_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_wip_model, 0, cKF_JOINT_FLAG_DISP_OPA, 399,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 400,500,0 }, + /* joint 18 */ { Rarm1_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 401,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 398,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 803,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,0,1150 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_wip_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1582,0,11 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_wip_1 = { 26, 11, cKF_je_r_wip_1_tbl }; diff --git a/src/data/npc/model/mdl/wls_1.c b/src/data/npc/model/mdl/wls_1.c new file mode 100644 index 00000000..b7f5c606 --- /dev/null +++ b/src/data/npc/model/mdl/wls_1.c @@ -0,0 +1,761 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx wls_1_v[] = { +#include "assets/npc/mdl/wls_1_v.inc" +}; + +static Gfx head_wls_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[10], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[20], 20, 10), + gsSPNTrianglesInit_5b(13, // tri count + 1, 10, 11, // tri0 + 4, 12, 6, // tri1 + 8, 13, 14 // tri2 + ), + gsSPNTriangles_5b(9, 15, 16, // tri0 + 7, 17, 5, // tri1 + 0, 18, 19, // tri2 + 0, 1, 20 // tri3 + ), + gsSPNTriangles_5b(0, 21, 22, // tri0 + 4, 23, 24, // tri1 + 5, 25, 3, // tri2 + 3, 26, 4 // tri3 + ), + gsSPNTriangles_5b(5, 27, 28, // tri0 + 1, 8, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wls_1_v[40], 11, 10), + gsSPNTrianglesInit_5b(3, // tri count + 9, 0, 10, // tri0 + 7, 9, 11, // tri1 + 8, 6, 12 // tri2 + ), + gsSPNTrianglesInit_5b(4, // tri count + 2, 14, 13, // tri0 + 2, 16, 15, // tri1 + 2, 18, 17 // tri2 + ), + gsSPNTriangles_5b(2, 20, 19, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wls_1_v[51], 31, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 3, 2, 4 // tri2 + ), + gsSPNTriangles_5b(5, 4, 2, // tri0 + 6, 0, 3, // tri1 + 6, 3, 7, // tri2 + 7, 3, 4 // tri3 + ), + gsSPNTriangles_5b(1, 8, 5, // tri0 + 1, 5, 2, // tri1 + 8, 9, 10, // tri2 + 8, 10, 5 // tri3 + ), + gsSPNTriangles_5b(5, 10, 4, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(12, // tri count + 11, 12, 13, // tri0 + 11, 13, 14, // tri1 + 15, 12, 11 // tri2 + ), + gsSPNTriangles_5b(12, 15, 16, // tri0 + 17, 11, 14, // tri1 + 17, 14, 18, // tri2 + 15, 11, 17 // tri3 + ), + gsSPNTriangles_5b(12, 16, 19, // tri0 + 12, 19, 13, // tri1 + 16, 20, 21, // tri2 + 16, 21, 19 // tri3 + ), + gsSPNTriangles_5b(15, 20, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(9, // tri count + 22, 23, 24, // tri0 + 25, 26, 27, // tri1 + 28, 29, 26 // tri2 + ), + gsSPNTriangles_5b(28, 26, 25, // tri0 + 26, 29, 22, // tri1 + 24, 27, 26, // tri2 + 24, 26, 22 // tri3 + ), + gsSPNTriangles_5b(23, 22, 30, // tri0 + 30, 22, 29, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wls_1_v[82], 21, 0), + gsSPNTrianglesInit_5b(30, // tri count + 0, 1, 2, // tri0 + 2, 3, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 10, // tri0 + 6, 11, 1, // tri1 + 0, 12, 7, // tri2 + 13, 14, 5 // tri3 + ), + gsSPNTriangles_5b(5, 14, 6, // tri0 + 10, 15, 16, // tri1 + 9, 15, 10, // tri2 + 3, 8, 4 // tri3 + ), + gsSPNTriangles_5b(0, 7, 1, // tri0 + 15, 9, 17, // tri1 + 11, 6, 14, // tri2 + 9, 8, 3 // tri3 + ), + gsSPNTriangles_5b(2, 1, 11, // tri0 + 16, 18, 10, // tri1 + 13, 12, 0, // tri2 + 5, 12, 13 // tri3 + ), + gsSPNTriangles_5b(2, 19, 0, // tri0 + 1, 7, 6, // tri1 + 10, 18, 8, // tri2 + 8, 18, 4 // tri3 + ), + gsSPNTriangles_5b(7, 12, 5, // tri0 + 4, 18, 16, // tri1 + 4, 19, 2, // tri2 + 17, 3, 2 // tri3 + ), + gsSPNTriangles_5b(3, 17, 9, // tri0 + 20, 2, 11, // tri1 + 17, 2, 20, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wls_1_v[103], 11, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 3, 6 // tri2 + ), + gsSPNTriangles_5b(7, 5, 4, // tri0 + 0, 6, 1, // tri1 + 8, 4, 3, // tri2 + 9, 7, 4 // tri3 + ), + gsSPNTriangles_5b(8, 3, 0, // tri0 + 6, 3, 10, // tri1 + 10, 3, 5, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_wls_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[0], 10, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 1, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 3, 6, // tri0 + 1, 7, 2, // tri1 + 2, 7, 8, // tri2 + 2, 8, 6 // tri3 + ), + gsSPNTriangles_5b(9, 5, 6, // tri0 + 7, 1, 4, // tri1 + 7, 4, 8, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_wls_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[149], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[154], 24, 5), + gsSPNTrianglesInit_5b(8, // tri count + 3, 0, 5, // tri0 + 3, 6, 7, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(1, 10, 0, // tri0 + 4, 3, 11, // tri1 + 2, 4, 12, // tri2 + 4, 13, 14 // tri3 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPNTrianglesInit_5b(2, // tri count + 21, 22, 23, // tri0 + 21, 23, 24, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 25, 26, 27, // tri0 + 25, 27, 28, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wls_1_v[178], 16, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 6, 7, // tri0 + 8, 9, 10, // tri1 + 8, 10, 11, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(12, 14, 15, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_wls_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[194], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[197], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 2, 0, 3, // tri0 + 0, 4, 5, // tri1 + 0, 1, 6 // tri2 + ), + gsSPNTriangles_5b(1, 7, 8, // tri0 + 1, 2, 9, // tri1 + 2, 10, 11, // tri2 + 0, 12, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_wls_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[114], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[119], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 3, 5, // tri0 + 3, 6, 7, // tri1 + 0, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 10, 1, // tri0 + 3, 4, 11, // tri1 + 4, 2, 12, // tri2 + 4, 13, 14 // tri3 + ), + gsSPNTriangles_5b(4, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_wls_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[135], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[138], 11, 3), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 6, // tri1 + 1, 0, 7 // tri2 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 2, 1, 10, // tri1 + 2, 11, 12, // tri2 + 0, 2, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_wls_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[208], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[215], 21, 7), + gsSPNTrianglesInit_5b(14, // tri count + 6, 4, 7, // tri0 + 0, 8, 9, // tri1 + 4, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 6, 12, // tri0 + 6, 14, 13, // tri1 + 3, 5, 15, // tri2 + 0, 16, 17 // tri3 + ), + gsSPNTriangles_5b(4, 18, 19, // tri0 + 3, 20, 21, // tri1 + 0, 2, 22, // tri2 + 4, 1, 23 // tri3 + ), + gsSPNTriangles_5b(1, 3, 24, // tri0 + 3, 25, 26, // tri1 + 5, 0, 27, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[236], 26, 0), + gsSPNTrianglesInit_5b(2, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 0, 0 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x340, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPNTrianglesInit_5b(24, // tri count + 4, 5, 6, // tri0 + 4, 6, 7, // tri1 + 8, 9, 10 // tri2 + ), + gsSPNTriangles_5b(8, 10, 11, // tri0 + 12, 13, 10, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b(18, 17, 16, // tri0 + 18, 19, 9, // tri1 + 11, 10, 20, // tri2 + 5, 21, 22 // tri3 + ), + gsSPNTriangles_5b(5, 22, 23, // tri0 + 21, 5, 4, // tri1 + 6, 15, 14, // tri2 + 9, 19, 13 // tri3 + ), + gsSPNTriangles_5b(7, 6, 14, // tri0 + 6, 24, 23, // tri1 + 18, 9, 8, // tri2 + 13, 25, 20 // tri3 + ), + gsSPNTriangles_5b(13, 20, 10, // tri0 + 5, 23, 24, // tri1 + 16, 19, 18, // tri2 + 23, 15, 6 // tri3 + ), + gsSPNTriangles_5b(13, 12, 9, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x440, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wls_1_v[262], 31, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(1, 5, 6, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x4C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(4, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 8, 7 // tri2 + ), + gsSPNTriangles_5b(9, 8, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 14, 15, 16, // tri0 + 16, 15, 17, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x540, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(12, // tri count + 18, 19, 20, // tri0 + 21, 22, 19, // tri1 + 23, 24, 22 // tri2 + ), + gsSPNTriangles_5b(25, 26, 24, // tri0 + 20, 19, 22, // tri1 + 20, 22, 27, // tri2 + 28, 21, 18 // tri3 + ), + gsSPNTriangles_5b(19, 18, 21, // tri0 + 22, 21, 23, // tri1 + 24, 23, 25, // tri2 + 26, 25, 29 // tri3 + ), + gsSPNTriangles_5b(18, 30, 28, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wls_1_v[293], 29, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 2, 1, // tri1 + 8, 1, 9, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x580, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(22, // tri count + 10, 11, 12, // tri0 + 10, 12, 13, // tri1 + 13, 12, 14 // tri2 + ), + gsSPNTriangles_5b(14, 12, 15, // tri0 + 16, 11, 10, // tri1 + 17, 18, 19, // tri2 + 20, 12, 21 // tri3 + ), + gsSPNTriangles_5b(22, 21, 11, // tri0 + 21, 12, 11, // tri1 + 19, 18, 23, // tri2 + 21, 24, 20 // tri3 + ), + gsSPNTriangles_5b(25, 24, 26, // tri0 + 26, 23, 25, // tri1 + 21, 22, 19, // tri2 + 11, 27, 22 // tri3 + ), + gsSPNTriangles_5b(25, 20, 24, // tri0 + 22, 27, 17, // tri1 + 19, 26, 24, // tri2 + 19, 24, 21 // tri3 + ), + gsSPNTriangles_5b(23, 26, 19, // tri0 + 19, 22, 17, // tri1 + 14, 15, 28, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot3_wls_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[364], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[367], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 2, 1, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(0, 2, 8, // tri0 + 1, 0, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 15, 16, 12, // tri1 + 12, 14, 15 // tri2 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_wls_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[385], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[389], 10, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 4, 5, // tri0 + 2, 3, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 9, // tri0 + 3, 10, 11, // tri1 + 3, 0, 12, // tri2 + 0, 1, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_wls_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[399], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(5, 0, 6, // tri0 + 2, 1, 4, // tri1 + 2, 6, 0, // tri2 + 3, 2, 4 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot3_wls_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[322], 3, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[325], 18, 3), + gsSPNTrianglesInit_5b(6, // tri count + 0, 3, 4, // tri0 + 1, 5, 6, // tri1 + 1, 2, 7 // tri2 + ), + gsSPNTriangles_5b(2, 0, 8, // tri0 + 0, 1, 9, // tri1 + 0, 10, 11, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(5, // tri count + 12, 13, 14, // tri0 + 14, 15, 16, // tri1 + 16, 12, 14 // tri2 + ), + gsSPNTriangles_5b(17, 18, 19, // tri0 + 17, 19, 20, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_wls_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[343], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wls_1_v[347], 10, 4), + gsSPNTrianglesInit_5b(7, // tri count + 2, 4, 5, // tri0 + 3, 2, 6, // tri1 + 0, 7, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 9, // tri0 + 3, 10, 11, // tri1 + 0, 3, 12, // tri2 + 1, 0, 13 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_wls_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x0C0, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[357], 7, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 6, 3 // tri2 + ), + gsSPNTriangles_5b(6, 2, 3, // tri0 + 4, 1, 0, // tri1 + 2, 6, 0, // tri2 + 4, 0, 5 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_wls_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x2C0, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wls_1_v[406], 15, 0), + gsSPNTrianglesInit_5b(21, // tri count + 0, 1, 2, // tri0 + 1, 0, 3, // tri1 + 1, 3, 4 // tri2 + ), + gsSPNTriangles_5b(5, 0, 2, // tri0 + 6, 3, 0, // tri1 + 6, 0, 5, // tri2 + 5, 2, 7 // tri3 + ), + gsSPNTriangles_5b(1, 8, 9, // tri0 + 10, 11, 12, // tri1 + 10, 6, 13, // tri2 + 9, 7, 2 // tri3 + ), + gsSPNTriangles_5b(8, 1, 4, // tri0 + 9, 2, 1, // tri1 + 7, 14, 5, // tri2 + 6, 5, 14 // tri3 + ), + gsSPNTriangles_5b(10, 4, 3, // tri0 + 10, 3, 6, // tri1 + 12, 4, 10, // tri2 + 13, 11, 10 // tri3 + ), + gsSPNTriangles_5b(4, 12, 8, // tri0 + 14, 13, 6, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_wls_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_wls_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { Lfoot3_wls_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { Rfoot3_wls_model, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-700 }, + /* joint 11 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_wls_model, 3, cKF_JOINT_FLAG_DISP_OPA, 600,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1300,-1100,0 }, + /* joint 15 */ { Larm1_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_wls_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 1300,1100,0 }, + /* joint 18 */ { Rarm1_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 1400,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,700 }, + /* joint 23 */ { mouth_wls_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_wls_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 800,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_wls_1 = { 26, 14, cKF_je_r_wls_1_tbl }; diff --git a/src/data/npc/model/mdl/wol_1.c b/src/data/npc/model/mdl/wol_1.c new file mode 100644 index 00000000..e2e76613 --- /dev/null +++ b/src/data/npc/model/mdl/wol_1.c @@ -0,0 +1,614 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx wol_1_v[] = { +#include "assets/npc/mdl/wol_1_v.inc" +}; + +static Gfx head_wol_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x080, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[24], 32, 0), + gsSPNTrianglesInit_5b(31, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 1, 10, // tri0 + 11, 12, 8, // tri1 + 13, 14, 15, // tri2 + 8, 13, 16 // tri3 + ), + gsSPNTriangles_5b(8, 16, 6, // tri0 + 8, 12, 17, // tri1 + 5, 18, 7, // tri2 + 7, 3, 5 // tri3 + ), + gsSPNTriangles_5b(15, 19, 20, // tri0 + 15, 20, 13, // tri1 + 21, 22, 23, // tri2 + 24, 2, 25 // tri3 + ), + gsSPNTriangles_5b(22, 21, 10, // tri0 + 22, 10, 26, // tri1 + 26, 0, 27, // tri2 + 1, 0, 10 // tri3 + ), + gsSPNTriangles_5b(27, 0, 24, // tri0 + 23, 9, 21, // tri1 + 25, 27, 24, // tri2 + 11, 8, 7 // tri3 + ), + gsSPNTriangles_5b(13, 8, 17, // tri0 + 7, 18, 11, // tri1 + 17, 14, 13, // tri2 + 26, 28, 22 // tri3 + ), + gsSPNTriangles_5b(27, 28, 26, // tri0 + 11, 18, 29, // tri1 + 5, 4, 30, // tri2 + 17, 31, 14 // tri3 + ), + gsSPVertex(&wol_1_v[56], 25, 0), + gsSPNTrianglesInit_5b(4, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 4 // tri2 + ), + gsSPNTriangles_5b(8, 9, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(15, // tri count + 10, 11, 12, // tri0 + 13, 10, 14, // tri1 + 15, 16, 17 // tri2 + ), + gsSPNTriangles_5b(12, 14, 10, // tri0 + 18, 19, 16, // tri1 + 14, 20, 13, // tri2 + 10, 13, 21 // tri3 + ), + gsSPNTriangles_5b(21, 17, 16, // tri0 + 16, 10, 21, // tri1 + 17, 22, 15, // tri2 + 16, 19, 11 // tri3 + ), + gsSPNTriangles_5b(16, 11, 10, // tri0 + 16, 15, 18, // tri1 + 23, 22, 17, // tri2 + 24, 13, 20 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&wol_1_v[81], 29, 0), + gsSPNTrianglesInit_5b(11, // tri count + 0, 1, 2, // tri0 + 3, 4, 1, // tri1 + 1, 5, 2 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 4, 3, // tri1 + 5, 1, 4, // tri2 + 4, 7, 5 // tri3 + ), + gsSPNTriangles_5b(4, 8, 7, // tri0 + 9, 8, 3, // tri1 + 6, 8, 9, // tri2 + 10, 1, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(2, // tri count + 11, 12, 13, // tri0 + 11, 14, 12, // tri1 + 0, 0, 0 // tri2 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(8, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 16, 21, 22 // tri2 + ), + gsSPNTriangles_5b(23, 24, 20, // tri0 + 25, 24, 26, // tri1 + 17, 27, 15, // tri2 + 28, 27, 22 // tri3 + ), + gsSPNTriangles_5b(26, 18, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx mouth_wol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*13, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[0], 10, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[10], 14, 10), + gsSPNTrianglesInit_5b(10, // tri count + 4, 0, 10, // tri0 + 6, 2, 3, // tri1 + 2, 6, 11 // tri2 + ), + gsSPNTriangles_5b(8, 4, 12, // tri0 + 5, 4, 8, // tri1 + 2, 13, 14, // tri2 + 4, 15, 16 // tri3 + ), + gsSPNTriangles_5b(1, 2, 17, // tri0 + 9, 18, 19, // tri1 + 9, 20, 7, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 21, 22, 23, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_wol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[146], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[151], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_wol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[167], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[171], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_wol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[110], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[115], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_wol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[131], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[135], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_wol_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[182], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[189], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 0, 2, 7, // tri0 + 6, 8, 9, // tri1 + 0, 10, 11 // tri2 + ), + gsSPNTriangles_5b(1, 12, 5, // tri0 + 1, 13, 14, // tri1 + 2, 16, 15, // tri2 + 5, 17, 18 // tri3 + ), + gsSPNTriangles_5b(5, 19, 20, // tri0 + 2, 21, 22, // tri1 + 6, 0, 23, // tri2 + 1, 6, 24 // tri3 + ), + gsSPNTriangles_5b(3, 5, 25, // tri0 + 4, 26, 2, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wol_1_v[209], 10, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 0, 6, 7 // tri2 + ), + gsSPNTriangles_5b(5, 4, 8, // tri0 + 2, 6, 0, // tri1 + 1, 9, 2, // tri2 + 7, 4, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_wol_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[255], 9, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(2, 6, 3, // tri0 + 7, 3, 6, // tri1 + 8, 5, 4, // tri2 + 3, 4, 0 // tri3 + ), + gsSPNTriangles_5b(5, 1, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_wol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[219], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[224], 12, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 3, 5, // tri0 + 4, 6, 7, // tri1 + 2, 8, 9 // tri2 + ), + gsSPNTriangles_5b(0, 10, 11, // tri0 + 3, 12, 13, // tri1 + 3, 4, 14, // tri2 + 4, 1, 15 // tri3 + ), + gsSPNTriangles_5b(0, 2, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&wol_1_v[236], 19, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 3, 2, 1, // tri1 + 4, 5, 6 // tri2 + ), + gsSPNTriangles_5b(5, 7, 6, // tri0 + 8, 9, 10, // tri1 + 11, 10, 9, // tri2 + 12, 13, 14 // tri3 + ), + gsSPNTriangles_5b(13, 15, 14, // tri0 + 10, 7, 5, // tri1 + 2, 15, 13, // tri2 + 10, 5, 4 // tri3 + ), + gsSPNTriangles_5b(4, 8, 10, // tri0 + 6, 1, 0, // tri1 + 0, 4, 6, // tri2 + 2, 13, 12 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 14, 16, 17, // tri1 + 14, 17, 12, // tri2 + 16, 14, 18 // tri3 + ), + gsSPNTriangles_5b(1, 6, 3, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_wol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[304], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[309], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 2, 3, 5, // tri0 + 0, 2, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 4, 1, 11, // tri1 + 2, 12, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 17, 18, 19, // tri1 + 15, 20, 16 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_wol_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[325], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[331], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 0, 6, 7, // tri0 + 2, 5, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 1, 11, // tri0 + 0, 3, 12, // tri1 + 4, 2, 13, // tri2 + 3, 4, 14 // tri3 + ), + gsSPNTriangles_5b(3, 15, 16, // tri0 + 2, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_wol_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[264], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[269], 16, 5), + gsSPNTrianglesInit_5b(7, // tri count + 3, 2, 5, // tri0 + 2, 0, 6, // tri1 + 3, 8, 7 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 1, 4, 11, // tri1 + 2, 12, 13, // tri2 + 4, 3, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 15, // tri1 + 16, 20, 17 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_wol_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[285], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&wol_1_v[291], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 4, 6, 7, // tri0 + 3, 1, 8, // tri1 + 3, 9, 10 // tri2 + ), + gsSPNTriangles_5b(5, 3, 11, // tri0 + 2, 4, 12, // tri1 + 1, 0, 13, // tri2 + 0, 2, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 1, 17, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_wol_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&wol_1_v[344], 30, 0), + gsSPNTrianglesInit_5b(3, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 1, 6 // tri2 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPLoadTextureBlock_4b_Dolphin(anime_3_txt, G_IM_FMT_CI, 32, 32, 14, GX_REPEAT, GX_REPEAT, 0, 0), + gsSPNTrianglesInit_5b(14, // tri count + 7, 8, 9, // tri0 + 10, 11, 12, // tri1 + 13, 14, 15 // tri2 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 9, 19, 7, // tri1 + 20, 11, 21, // tri2 + 20, 21, 17 // tri3 + ), + gsSPNTriangles_5b(12, 15, 14, // tri0 + 11, 20, 12, // tri1 + 8, 7, 13, // tri2 + 13, 15, 8 // tri3 + ), + gsSPNTriangles_5b(21, 18, 17, // tri0 + 14, 10, 12, // tri1 + 18, 22, 16, // tri2 + 0, 0, 0 // tri3 + ), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(3, // tri count + 23, 24, 25, // tri0 + 26, 27, 28, // tri1 + 29, 24, 23 // tri2 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_wol_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_wol_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 75,0,-475 }, + /* joint 11 */ { tail1_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_wol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_wol_model, 3, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,-400,0 }, + /* joint 15 */ { Larm1_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_wol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 552,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 600,400,0 }, + /* joint 18 */ { Rarm1_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 550,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 801,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 800,0,50 }, + /* joint 23 */ { mouth_wol_model, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_wol_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1099,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_wol_1 = { 26, 14, cKF_je_r_wol_1_tbl }; diff --git a/src/data/npc/model/mdl/xct_1.c b/src/data/npc/model/mdl/xct_1.c new file mode 100644 index 00000000..961c2668 --- /dev/null +++ b/src/data/npc/model/mdl/xct_1.c @@ -0,0 +1,568 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx xct_1_v[] = { +#include "assets/npc/mdl/xct_1_v.inc" +}; + +static Gfx head_xct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[0], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*12, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[6], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 1, 0, 6, // tri0 + 1, 7, 8, // tri1 + 3, 1, 9 // tri2 + ), + gsSPNTriangles_5b(4, 11, 10, // tri0 + 5, 4, 12, // tri1 + 5, 13, 0, // tri2 + 0, 15, 14 // tri3 + ), + gsSPNTriangles_5b(5, 16, 17, // tri0 + 4, 2, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x000, G_IM_FMT_CI, 16, 32, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsSPVertex(&xct_1_v[19], 22, 0), + gsSPNTrianglesInit_5b(29, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 2, 4, 8, // tri1 + 3, 2, 9, // tri2 + 9, 8, 10 // tri3 + ), + gsSPNTriangles_5b(2, 8, 9, // tri0 + 4, 1, 11, // tri1 + 4, 11, 12, // tri2 + 13, 8, 4 // tri3 + ), + gsSPNTriangles_5b(4, 12, 13, // tri0 + 5, 10, 14, // tri1 + 8, 14, 10, // tri2 + 10, 7, 9 // tri3 + ), + gsSPNTriangles_5b(7, 10, 5, // tri0 + 9, 15, 16, // tri1 + 7, 6, 15, // tri2 + 16, 3, 9 // tri3 + ), + gsSPNTriangles_5b(17, 0, 18, // tri0 + 19, 3, 16, // tri1 + 18, 3, 19, // tri2 + 18, 0, 3 // tri3 + ), + gsSPNTriangles_5b(20, 0, 17, // tri0 + 1, 21, 11, // tri1 + 20, 1, 0, // tri2 + 20, 21, 1 // tri3 + ), + gsSPNTriangles_5b(8, 13, 14, // tri0 + 7, 15, 9, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 60), + gsSPVertex(&xct_1_v[41], 21, 0), + gsSPNTrianglesInit_5b(10, // tri count + 0, 1, 2, // tri0 + 3, 4, 2, // tri1 + 5, 2, 4 // tri2 + ), + gsSPNTriangles_5b(2, 1, 3, // tri0 + 6, 7, 5, // tri1 + 0, 8, 1, // tri2 + 6, 5, 4 // tri3 + ), + gsSPNTriangles_5b(6, 9, 7, // tri0 + 8, 10, 11, // tri1 + 8, 0, 10, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x100, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 60), + gsSPNTrianglesInit_5b(7, // tri count + 12, 13, 14, // tri0 + 15, 13, 12, // tri1 + 13, 16, 14 // tri2 + ), + gsSPNTriangles_5b(16, 17, 18, // tri0 + 13, 17, 16, // tri1 + 19, 18, 17, // tri2 + 17, 20, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 60), + gsSPVertex(&xct_1_v[62], 15, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 5, 4, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 2, // tri0 + 4, 2, 7, // tri1 + 8, 3, 5, // tri2 + 4, 9, 6 // tri3 + ), + gsSPNTriangles_5b(4, 7, 9, // tri0 + 6, 10, 5, // tri1 + 7, 2, 1, // tri2 + 10, 11, 5 // tri3 + ), + gsSPNTriangles_5b(10, 12, 11, // tri0 + 0, 13, 1, // tri1 + 5, 11, 8, // tri2 + 14, 0, 2 // tri3 + ), + gsSPNTriangles_5b(2, 3, 14, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_xct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[113], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[119], 13, 6), + gsSPNTrianglesInit_5b(9, // tri count + 3, 6, 4, // tri0 + 1, 5, 7, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(1, 10, 9, // tri0 + 2, 0, 1, // tri1 + 2, 11, 12, // tri2 + 3, 13, 14 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 3, 2, 15, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(1, // tri count + 16, 17, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_xct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[132], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[136], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 2, 4, // tri0 + 0, 5, 6, // tri1 + 1, 8, 7 // tri2 + ), + gsSPNTriangles_5b(2, 9, 10, // tri0 + 3, 1, 11, // tri1 + 1, 0, 12, // tri2 + 1, 13, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_xct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[77], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[82], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_xct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[98], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[102], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 2, 6, 7, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(1, 0, 9, // tri0 + 1, 11, 10, // tri1 + 0, 13, 12, // tri2 + 0, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_xct_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[147], 9, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x200, G_IM_FMT_CI, 32, 24, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 252, 92), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[156], 22, 9), + gsSPNTrianglesInit_5b(14, // tri count + 2, 10, 9, // tri0 + 5, 11, 12, // tri1 + 6, 13, 14 // tri2 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 8, 17, 18, // tri1 + 2, 19, 20, // tri2 + 7, 21, 22 // tri3 + ), + gsSPNTriangles_5b(3, 8, 23, // tri0 + 7, 0, 24, // tri1 + 5, 3, 25, // tri2 + 8, 4, 26 // tri3 + ), + gsSPNTriangles_5b(1, 7, 27, // tri0 + 2, 28, 4, // tri1 + 8, 29, 30, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&xct_1_v[178], 18, 9), + gsSPNTrianglesInit_5b(3, // tri count + 1, 9, 2, // tri0 + 7, 10, 11, // tri1 + 0, 6, 12 // tri2 + ), + gsSPNTrianglesInit_5b(6, // tri count + 13, 14, 15, // tri0 + 16, 17, 18, // tri1 + 18, 19, 20 // tri2 + ), + gsSPNTriangles_5b(21, 15, 22, // tri0 + 23, 24, 16, // tri1 + 25, 14, 26, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_xct_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[220], 8, 0), + gsSPNTrianglesInit_5b(6, // tri count + 0, 1, 2, // tri0 + 3, 0, 4, // tri1 + 2, 1, 5 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 5, 7, 2, // tri1 + 2, 4, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_xct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[196], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x400, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[200], 20, 4), + gsSPNTrianglesInit_5b(6, // tri count + 0, 4, 5, // tri0 + 1, 6, 7, // tri1 + 3, 8, 9 // tri2 + ), + gsSPNTriangles_5b(3, 2, 10, // tri0 + 2, 1, 11, // tri1 + 0, 3, 12, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(9, // tri count + 13, 14, 15, // tri0 + 16, 14, 17, // tri1 + 18, 17, 19 // tri2 + ), + gsSPNTriangles_5b(17, 14, 13, // tri0 + 13, 19, 17, // tri1 + 17, 18, 20, // tri2 + 21, 15, 14 // tri3 + ), + gsSPNTriangles_5b(15, 22, 13, // tri0 + 19, 23, 18, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_xct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[262], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[267], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 2, 6, 5, // tri0 + 0, 8, 7, // tri1 + 3, 2, 9 // tri2 + ), + gsSPNTriangles_5b(0, 4, 10, // tri0 + 0, 11, 12, // tri1 + 1, 0, 13, // tri2 + 2, 1, 14 // tri3 + ), + gsSPNTriangles_5b(2, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 22, // tri1 + 18, 23, 21 // tri2 + ), + gsSPNTriangles_5b(21, 24, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_xct_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[287], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 5, 6, 7 // tri2 + ), + gsSPNTriangles_5b(4, 6, 3, // tri0 + 4, 7, 6, // tri1 + 7, 8, 5, // tri2 + 2, 3, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_xct_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[228], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xct_1_v[233], 20, 5), + gsSPNTrianglesInit_5b(8, // tri count + 1, 0, 5, // tri0 + 2, 7, 6, // tri1 + 2, 1, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 10, 11, // tri1 + 0, 13, 12, // tri2 + 0, 4, 14 // tri3 + ), + gsSPNTriangles_5b(0, 15, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(4, // tri count + 17, 18, 19, // tri0 + 20, 21, 18, // tri1 + 20, 22, 23 // tri2 + ), + gsSPNTriangles_5b(18, 24, 20, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_xct_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x380, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[253], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 3, 0, 2, // tri1 + 2, 4, 3 // tri2 + ), + gsSPNTriangles_5b(5, 6, 1, // tri0 + 4, 7, 3, // tri1 + 1, 0, 5, // tri2 + 4, 8, 7 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_xct_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 16, 15, GX_MIRROR, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 60), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xct_1_v[296], 19, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 3, 2 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 8, 9, 6, // tri1 + 10, 11, 12, // tri2 + 10, 13, 11 // tri3 + ), + gsSPNTriangles_5b(4, 2, 6, // tri0 + 12, 11, 14, // tri1 + 9, 7, 6, // tri2 + 15, 12, 16 // tri3 + ), + gsSPNTriangles_5b(16, 17, 15, // tri0 + 7, 9, 17, // tri1 + 1, 6, 2, // tri2 + 5, 16, 12 // tri3 + ), + gsSPNTriangles_5b(18, 10, 12, // tri0 + 6, 1, 8, // tri1 + 17, 16, 7, // tri2 + 12, 15, 18 // tri3 + ), + gsSPNTriangles_5b(7, 16, 5, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_xct_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_xct_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-250,0 }, + /* joint 3 */ { Lfoot1_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,250,0 }, + /* joint 7 */ { Rfoot1_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,-475 }, + /* joint 11 */ { tail1_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_xct_model, 0, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 13 */ { chest_xct_model, 3, cKF_JOINT_FLAG_DISP_OPA, 325,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-450,0 }, + /* joint 15 */ { Larm1_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_xct_model, 0, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,450,0 }, + /* joint 18 */ { Rarm1_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 450,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 675,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_xct_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1200,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_xct_1 = { 26, 13, cKF_je_r_xct_1_tbl }; diff --git a/src/data/npc/model/mdl/xsq_1.c b/src/data/npc/model/mdl/xsq_1.c new file mode 100644 index 00000000..986f3de1 --- /dev/null +++ b/src/data/npc/model/mdl/xsq_1.c @@ -0,0 +1,667 @@ +#include "c_keyframe.h" +#include "libforest/gbi_extensions.h" + +static Vtx xsq_1_v[] = { +#include "assets/npc/mdl/xsq_1_v.inc" +}; + +static Gfx head_xsq_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[0], 12, 0), + gsSPNTrianglesInit_5b(8, // tri count + 0, 1, 2, // tri0 + 3, 2, 4, // tri1 + 3, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 6, 9, // tri2 + 10, 9, 11 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x040, G_IM_FMT_CI, 32, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&xsq_1_v[12], 25, 0), + gsSPNTrianglesInit_5b(32, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 2, 1, 4 // tri2 + ), + gsSPNTriangles_5b(5, 6, 7, // tri0 + 4, 1, 8, // tri1 + 4, 8, 9, // tri2 + 10, 4, 9 // tri3 + ), + gsSPNTriangles_5b(11, 0, 12, // tri0 + 12, 3, 13, // tri1 + 12, 0, 3, // tri2 + 11, 8, 1 // tri3 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 14, 2, 4, // tri1 + 15, 3, 2, // tri2 + 16, 15, 2 // tri3 + ), + gsSPNTriangles_5b(10, 17, 18, // tri0 + 7, 13, 3, // tri1 + 14, 4, 10, // tri2 + 3, 15, 7 // tri3 + ), + gsSPNTriangles_5b(19, 5, 15, // tri0 + 20, 21, 19, // tri1 + 18, 14, 10, // tri2 + 7, 15, 5 // tri3 + ), + gsSPNTriangles_5b(14, 18, 22, // tri0 + 23, 16, 14, // tri1 + 2, 14, 16, // tri2 + 15, 16, 23 // tri3 + ), + gsSPNTriangles_5b(22, 24, 20, // tri0 + 14, 22, 23, // tri1 + 23, 19, 15, // tri2 + 19, 23, 20 // tri3 + ), + gsSPNTriangles_5b(20, 23, 22, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_1_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&xsq_1_v[37], 20, 0), + gsSPNTrianglesInit_5b(24, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 2, 6, 7 // tri2 + ), + gsSPNTriangles_5b(8, 9, 3, // tri0 + 10, 8, 3, // tri1 + 11, 0, 2, // tri2 + 12, 13, 11 // tri3 + ), + gsSPNTriangles_5b(10, 13, 12, // tri0 + 7, 14, 15, // tri1 + 6, 14, 7, // tri2 + 10, 5, 16 // tri3 + ), + gsSPNTriangles_5b(2, 7, 11, // tri0 + 17, 0, 11, // tri1 + 9, 8, 18, // tri2 + 3, 5, 10 // tri3 + ), + gsSPNTriangles_5b(12, 8, 10, // tri0 + 16, 19, 13, // tri1 + 13, 10, 16, // tri2 + 11, 7, 12 // tri3 + ), + gsSPNTriangles_5b(13, 17, 11, // tri0 + 8, 12, 15, // tri1 + 15, 12, 7, // tri2 + 15, 18, 8 // tri3 + ), + gsSPNTriangles_5b(13, 19, 17, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_2_txt, G_IM_FMT_CI, 32, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&xsq_1_v[57], 14, 0), + gsSPNTrianglesInit_5b(16, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 3, 6, 4 // tri2 + ), + gsSPNTriangles_5b(1, 7, 2, // tri0 + 2, 7, 8, // tri1 + 7, 1, 5, // tri2 + 7, 5, 9 // tri3 + ), + gsSPNTriangles_5b(7, 10, 8, // tri0 + 7, 9, 10, // tri1 + 8, 11, 2, // tri2 + 9, 5, 4 // tri3 + ), + gsSPNTriangles_5b(11, 12, 2, // tri0 + 11, 13, 12, // tri1 + 0, 3, 5, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x240, G_IM_FMT_CI, 16, 8, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPVertex(&xsq_1_v[71], 20, 0), + gsSPNTrianglesInit_5b(20, // tri count + 0, 1, 2, // tri0 + 0, 2, 3, // tri1 + 4, 0, 3 // tri2 + ), + gsSPNTriangles_5b(4, 3, 5, // tri0 + 6, 7, 8, // tri1 + 0, 4, 9, // tri2 + 10, 8, 11 // tri3 + ), + gsSPNTriangles_5b(4, 5, 12, // tri0 + 4, 12, 13, // tri1 + 14, 15, 16, // tri2 + 14, 16, 17 // tri3 + ), + gsSPNTriangles_5b(10, 14, 17, // tri0 + 10, 17, 6, // tri1 + 9, 1, 0, // tri2 + 6, 8, 10 // tri3 + ), + gsSPNTriangles_5b(18, 9, 4, // tri0 + 14, 11, 19, // tri1 + 11, 14, 10, // tri2 + 19, 15, 14 // tri3 + ), + gsSPNTriangles_5b(4, 13, 18, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm2_xsq_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[127], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*11, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[132], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(0, 1, 11, // tri0 + 2, 4, 12, // tri1 + 0, 13, 14, // tri2 + 3, 0, 15 // tri3 + ), + gsSPNTriangles_5b(4, 3, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 20, 19, 18, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rarm1_xsq_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[148], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*10, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[152], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 2, 0, 8 // tri2 + ), + gsSPNTriangles_5b(3, 2, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 1, 3, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm2_xsq_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[91], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*9, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[96], 16, 5), + gsSPNTrianglesInit_5b(8, // tri count + 0, 5, 6, // tri0 + 4, 7, 8, // tri1 + 4, 9, 10 // tri2 + ), + gsSPNTriangles_5b(1, 0, 11, // tri0 + 4, 2, 12, // tri1 + 0, 13, 14, // tri2 + 0, 3, 15 // tri3 + ), + gsSPNTriangles_5b(3, 4, 16, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPNTrianglesInit_5b(2, // tri count + 17, 18, 19, // tri0 + 18, 17, 20, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Larm1_xsq_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[112], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*8, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[116], 11, 4), + gsSPNTrianglesInit_5b(7, // tri count + 3, 4, 5, // tri0 + 0, 6, 7, // tri1 + 0, 2, 8 // tri2 + ), + gsSPNTriangles_5b(2, 3, 9, // tri0 + 2, 11, 10, // tri1 + 3, 13, 12, // tri2 + 3, 1, 14 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx chest_xsq_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[163], 7, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*7, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[170], 20, 7), + gsSPNTrianglesInit_5b(13, // tri count + 3, 1, 7, // tri0 + 6, 8, 9, // tri1 + 3, 10, 11 // tri2 + ), + gsSPNTriangles_5b(2, 12, 0, // tri0 + 2, 13, 14, // tri1 + 1, 16, 15, // tri2 + 0, 17, 18 // tri3 + ), + gsSPNTriangles_5b(0, 19, 20, // tri0 + 1, 21, 22, // tri1 + 6, 3, 23, // tri2 + 2, 6, 24 // tri3 + ), + gsSPNTriangles_5b(4, 0, 25, // tri0 + 5, 26, 1, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPVertex(&xsq_1_v[190], 9, 0), + gsSPNTrianglesInit_5b(7, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 5, 6 // tri2 + ), + gsSPNTriangles_5b(4, 3, 7, // tri0 + 2, 5, 0, // tri1 + 1, 8, 2, // tri2 + 6, 3, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail1_xsq_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[242], 13, 0), + gsSPNTrianglesInit_5b(17, // tri count + 0, 1, 2, // tri0 + 0, 3, 1, // tri1 + 4, 3, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 8, 9, 6, // tri1 + 10, 9, 11, // tri2 + 6, 3, 4 // tri3 + ), + gsSPNTriangles_5b(4, 7, 6, // tri0 + 9, 2, 6, // tri1 + 5, 3, 10, // tri2 + 2, 9, 0 // tri3 + ), + gsSPNTriangles_5b(0, 10, 3, // tri0 + 9, 10, 0, // tri1 + 11, 9, 8, // tri2 + 11, 12, 10 // tri3 + ), + gsSPNTriangles_5b(10, 12, 5, // tri0 + 6, 1, 3, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx tail2_xsq_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*5, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[199], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*6, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x500, G_IM_FMT_CI, 16, 32, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[205], 16, 6), + gsSPNTrianglesInit_5b(11, // tri count + 3, 6, 7, // tri0 + 5, 1, 8, // tri1 + 5, 9, 10 // tri2 + ), + gsSPNTriangles_5b(2, 0, 11, // tri0 + 0, 3, 12, // tri1 + 0, 13, 14, // tri2 + 2, 15, 16 // tri3 + ), + gsSPNTriangles_5b(2, 17, 1, // tri0 + 4, 18, 3, // tri1 + 4, 5, 19, // tri2 + 5, 20, 21 // tri3 + ), + gsSPVertex(&xsq_1_v[221], 21, 0), + gsSPNTrianglesInit_5b(35, // tri count + 0, 1, 2, // tri0 + 0, 3, 4, // tri1 + 0, 4, 5 // tri2 + ), + gsSPNTriangles_5b(6, 7, 8, // tri0 + 9, 10, 11, // tri1 + 9, 11, 5, // tri2 + 6, 12, 7 // tri3 + ), + gsSPNTriangles_5b(13, 10, 14, // tri0 + 9, 7, 12, // tri1 + 5, 4, 7, // tri2 + 5, 7, 9 // tri3 + ), + gsSPNTriangles_5b(8, 7, 4, // tri0 + 13, 15, 16, // tri1 + 17, 18, 19, // tri2 + 17, 19, 15 // tri3 + ), + gsSPNTriangles_5b(13, 17, 15, // tri0 + 19, 18, 8, // tri1 + 11, 10, 13, // tri2 + 20, 2, 16 // tri3 + ), + gsSPNTriangles_5b(11, 13, 1, // tri0 + 10, 12, 14, // tri1 + 12, 10, 9, // tri2 + 14, 17, 13 // tri3 + ), + gsSPNTriangles_5b(8, 18, 6, // tri0 + 19, 20, 16, // tri1 + 19, 16, 15, // tri2 + 20, 19, 8 // tri3 + ), + gsSPNTriangles_5b(2, 3, 0, // tri0 + 3, 8, 4, // tri1 + 5, 11, 1, // tri2 + 5, 1, 0 // tri3 + ), + gsSPNTriangles_5b(1, 13, 16, // tri0 + 20, 8, 3, // tri1 + 1, 16, 2, // tri2 + 2, 20, 3 // tri3 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot2_xsq_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[305], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*4, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[310], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(1, 2, 10, // tri0 + 2, 3, 11, // tri1 + 3, 4, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 18, 21, 19 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Rfoot1_xsq_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[327], 4, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*3, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[331], 22, 4), + gsSPNTrianglesInit_5b(7, // tri count + 0, 3, 4, // tri0 + 0, 5, 1, // tri1 + 1, 6, 7 // tri2 + ), + gsSPNTriangles_5b(3, 2, 8, // tri0 + 2, 9, 10, // tri1 + 2, 1, 11, // tri2 + 0, 13, 12 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 14, 15, 16, // tri0 + 14, 16, 17, // tri1 + 17, 18, 14 // tri2 + ), + gsSPNTriangles_5b(19, 20, 21, // tri0 + 21, 20, 18, // tri1 + 21, 22, 19, // tri2 + 17, 21, 18 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 23, 24, 25, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot2_xsq_model[] = { + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[255], 5, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*2, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[260], 17, 5), + gsSPNTrianglesInit_5b(7, // tri count + 0, 4, 5, // tri0 + 0, 7, 6, // tri1 + 3, 9, 8 // tri2 + ), + gsSPNTriangles_5b(2, 1, 10, // tri0 + 3, 2, 11, // tri1 + 4, 3, 12, // tri2 + 2, 13, 14 // tri3 + ), + gsSPNTrianglesInit_5b(3, // tri count + 15, 16, 17, // tri0 + 18, 19, 20, // tri1 + 19, 21, 20 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx Lfoot1_xsq_model[] = { + gsSPMatrix(anime_6_model, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[277], 6, 0), + gsSPMatrix(anime_6_model+sizeof(Mtx)*1, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW), + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPVertex(&xsq_1_v[283], 22, 6), + gsSPNTrianglesInit_5b(7, // tri count + 4, 0, 6, // tri0 + 1, 7, 0, // tri1 + 1, 8, 9 // tri2 + ), + gsSPNTriangles_5b(2, 5, 10, // tri0 + 2, 11, 12, // tri1 + 1, 3, 13, // tri2 + 0, 15, 14 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x280, G_IM_FMT_CI, 16, 16, 15, GX_CLAMP, GX_CLAMP, 0, 0), + gsSPNTrianglesInit_5b(7, // tri count + 16, 17, 18, // tri0 + 19, 16, 18, // tri1 + 18, 20, 19 // tri2 + ), + gsSPNTriangles_5b(21, 22, 23, // tri0 + 20, 22, 21, // tri1 + 23, 24, 21, // tri2 + 20, 21, 19 // tri3 + ), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsSPNTrianglesInit_5b(1, // tri count + 25, 26, 27, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0 // tri2 + ), + gsSPEndDisplayList(), +}; + +static Gfx base_xsq_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTextureBlock_4b_Dolphin(anime_4_txt + 0x300, G_IM_FMT_CI, 32, 32, 15, GX_REPEAT, GX_CLAMP, 0, 0), + gsDPSetTileSize(0, 0, 0, 508, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&xsq_1_v[353], 14, 0), + gsSPNTrianglesInit_5b(12, // tri count + 0, 1, 2, // tri0 + 3, 4, 5, // tri1 + 6, 7, 8 // tri2 + ), + gsSPNTriangles_5b(9, 5, 4, // tri0 + 10, 4, 0, // tri1 + 10, 9, 4, // tri2 + 7, 11, 12 // tri3 + ), + gsSPNTriangles_5b(8, 7, 13, // tri0 + 2, 10, 0, // tri1 + 2, 1, 6, // tri2 + 6, 8, 2 // tri3 + ), + gsSPNTriangles_5b(7, 12, 13, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; + +// clang-format off +static cKF_Joint_R_c cKF_je_r_xsq_1_tbl[] = { + /* joint 0 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,1000,0 }, + /* joint 1 */ { base_xsq_model, 4, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 2 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,-350,0 }, + /* joint 3 */ { Lfoot1_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 4 */ { Lfoot2_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 5 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 6 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 0,350,0 }, + /* joint 7 */ { Rfoot1_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 8 */ { Rfoot2_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,0 }, + /* joint 9 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 400,0,0 }, + /* joint 10 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 100,0,-700 }, + /* joint 11 */ { tail1_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 12 */ { tail2_xsq_model, 0, cKF_JOINT_FLAG_DISP_OPA, 1099,0,0 }, + /* joint 13 */ { chest_xsq_model, 3, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 14 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,-650,0 }, + /* joint 15 */ { Larm1_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 16 */ { Larm2_xsq_model, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 17 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 425,650,0 }, + /* joint 18 */ { Rarm1_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 19 */ { Rarm2_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 20 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 350,0,0 }, + /* joint 21 */ { NULL, 2, cKF_JOINT_FLAG_DISP_OPA, 650,0,0 }, + /* joint 22 */ { NULL, 1, cKF_JOINT_FLAG_DISP_OPA, 500,0,600 }, + /* joint 23 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 24 */ { head_xsq_model, 1, cKF_JOINT_FLAG_DISP_OPA, 0,0,0 }, + /* joint 25 */ { NULL, 0, cKF_JOINT_FLAG_DISP_OPA, 1600,0,0 }, +}; +// clang-format on + +extern cKF_Skeleton_R_c cKF_bs_r_xsq_1 = { 26, 13, cKF_je_r_xsq_1_tbl }; diff --git a/src/data/npc/model/tex/ant_1.c b/src/data/npc/model/tex/ant_1.c new file mode 100644 index 00000000..34d159e5 --- /dev/null +++ b/src/data/npc/model/tex/ant_1.c @@ -0,0 +1,40 @@ +extern unsigned short ant_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_pal.inc" +}; + +extern unsigned char ant_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ant_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ant_2.c b/src/data/npc/model/tex/ant_2.c new file mode 100644 index 00000000..c6ca3e2b --- /dev/null +++ b/src/data/npc/model/tex/ant_2.c @@ -0,0 +1,40 @@ +extern unsigned short ant_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_pal.inc" +}; + +extern unsigned char ant_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ant_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ant_3.c b/src/data/npc/model/tex/ant_3.c new file mode 100644 index 00000000..b43d5288 --- /dev/null +++ b/src/data/npc/model/tex/ant_3.c @@ -0,0 +1,40 @@ +extern unsigned short ant_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_pal.inc" +}; + +extern unsigned char ant_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ant_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ant_4.c b/src/data/npc/model/tex/ant_4.c new file mode 100644 index 00000000..5637442d --- /dev/null +++ b/src/data/npc/model/tex/ant_4.c @@ -0,0 +1,40 @@ +extern unsigned short ant_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_pal.inc" +}; + +extern unsigned char ant_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ant_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ant_5.c b/src/data/npc/model/tex/ant_5.c new file mode 100644 index 00000000..2d50e867 --- /dev/null +++ b/src/data/npc/model/tex/ant_5.c @@ -0,0 +1,40 @@ +extern unsigned short ant_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_pal.inc" +}; + +extern unsigned char ant_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ant_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ant_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_1.c b/src/data/npc/model/tex/bea_1.c new file mode 100644 index 00000000..b198d50a --- /dev/null +++ b/src/data/npc/model/tex/bea_1.c @@ -0,0 +1,64 @@ +extern unsigned short bea_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_pal.inc" +}; + +extern unsigned char bea_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_10.c b/src/data/npc/model/tex/bea_10.c new file mode 100644 index 00000000..42b44c6d --- /dev/null +++ b/src/data/npc/model/tex/bea_10.c @@ -0,0 +1,64 @@ +extern unsigned short bea_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_pal.inc" +}; + +extern unsigned char bea_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_2.c b/src/data/npc/model/tex/bea_2.c new file mode 100644 index 00000000..e3abcf4a --- /dev/null +++ b/src/data/npc/model/tex/bea_2.c @@ -0,0 +1,64 @@ +extern unsigned short bea_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_pal.inc" +}; + +extern unsigned char bea_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_3.c b/src/data/npc/model/tex/bea_3.c new file mode 100644 index 00000000..d6507581 --- /dev/null +++ b/src/data/npc/model/tex/bea_3.c @@ -0,0 +1,64 @@ +extern unsigned short bea_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_pal.inc" +}; + +extern unsigned char bea_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_5.c b/src/data/npc/model/tex/bea_5.c new file mode 100644 index 00000000..ae26892d --- /dev/null +++ b/src/data/npc/model/tex/bea_5.c @@ -0,0 +1,64 @@ +extern unsigned short bea_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_pal.inc" +}; + +extern unsigned char bea_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_6.c b/src/data/npc/model/tex/bea_6.c new file mode 100644 index 00000000..83ae5d7a --- /dev/null +++ b/src/data/npc/model/tex/bea_6.c @@ -0,0 +1,64 @@ +extern unsigned short bea_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_pal.inc" +}; + +extern unsigned char bea_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_7.c b/src/data/npc/model/tex/bea_7.c new file mode 100644 index 00000000..cb4ddb28 --- /dev/null +++ b/src/data/npc/model/tex/bea_7.c @@ -0,0 +1,64 @@ +extern unsigned short bea_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_pal.inc" +}; + +extern unsigned char bea_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_8.c b/src/data/npc/model/tex/bea_8.c new file mode 100644 index 00000000..29baf633 --- /dev/null +++ b/src/data/npc/model/tex/bea_8.c @@ -0,0 +1,64 @@ +extern unsigned short bea_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_pal.inc" +}; + +extern unsigned char bea_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bea_9.c b/src/data/npc/model/tex/bea_9.c new file mode 100644 index 00000000..a25f1f26 --- /dev/null +++ b/src/data/npc/model/tex/bea_9.c @@ -0,0 +1,64 @@ +extern unsigned short bea_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_pal.inc" +}; + +extern unsigned char bea_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bea_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bea_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bev_1.c b/src/data/npc/model/tex/bev_1.c new file mode 100644 index 00000000..0e6097b5 --- /dev/null +++ b/src/data/npc/model/tex/bev_1.c @@ -0,0 +1,40 @@ +extern unsigned short bev_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_pal.inc" +}; + +extern unsigned char bev_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bev_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bev_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/boa_1.c b/src/data/npc/model/tex/boa_1.c new file mode 100644 index 00000000..30e9c253 --- /dev/null +++ b/src/data/npc/model/tex/boa_1.c @@ -0,0 +1,40 @@ +extern unsigned short boa_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_pal.inc" +}; + +extern unsigned char boa_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char boa_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/boa_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bpt_1.c b/src/data/npc/model/tex/bpt_1.c new file mode 100644 index 00000000..b08a1dbc --- /dev/null +++ b/src/data/npc/model/tex/bpt_1.c @@ -0,0 +1,40 @@ +extern unsigned short bpt_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_pal.inc" +}; + +extern unsigned char bpt_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bpt_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bpt_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_1.c b/src/data/npc/model/tex/brd_1.c new file mode 100644 index 00000000..c19aeb77 --- /dev/null +++ b/src/data/npc/model/tex/brd_1.c @@ -0,0 +1,40 @@ +extern unsigned short brd_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_pal.inc" +}; + +extern unsigned char brd_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_10.c b/src/data/npc/model/tex/brd_10.c new file mode 100644 index 00000000..03573785 --- /dev/null +++ b/src/data/npc/model/tex/brd_10.c @@ -0,0 +1,40 @@ +extern unsigned short brd_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_pal.inc" +}; + +extern unsigned char brd_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_11.c b/src/data/npc/model/tex/brd_11.c new file mode 100644 index 00000000..56bad975 --- /dev/null +++ b/src/data/npc/model/tex/brd_11.c @@ -0,0 +1,40 @@ +extern unsigned short brd_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_pal.inc" +}; + +extern unsigned char brd_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_2.c b/src/data/npc/model/tex/brd_2.c new file mode 100644 index 00000000..8598a548 --- /dev/null +++ b/src/data/npc/model/tex/brd_2.c @@ -0,0 +1,40 @@ +extern unsigned short brd_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_pal.inc" +}; + +extern unsigned char brd_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_3.c b/src/data/npc/model/tex/brd_3.c new file mode 100644 index 00000000..4b7fb968 --- /dev/null +++ b/src/data/npc/model/tex/brd_3.c @@ -0,0 +1,40 @@ +extern unsigned short brd_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_pal.inc" +}; + +extern unsigned char brd_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_4.c b/src/data/npc/model/tex/brd_4.c new file mode 100644 index 00000000..1484b378 --- /dev/null +++ b/src/data/npc/model/tex/brd_4.c @@ -0,0 +1,40 @@ +extern unsigned short brd_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_pal.inc" +}; + +extern unsigned char brd_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_5.c b/src/data/npc/model/tex/brd_5.c new file mode 100644 index 00000000..ee01744e --- /dev/null +++ b/src/data/npc/model/tex/brd_5.c @@ -0,0 +1,40 @@ +extern unsigned short brd_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_pal.inc" +}; + +extern unsigned char brd_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_6.c b/src/data/npc/model/tex/brd_6.c new file mode 100644 index 00000000..6d0ee930 --- /dev/null +++ b/src/data/npc/model/tex/brd_6.c @@ -0,0 +1,40 @@ +extern unsigned short brd_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_pal.inc" +}; + +extern unsigned char brd_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_7.c b/src/data/npc/model/tex/brd_7.c new file mode 100644 index 00000000..3189ef13 --- /dev/null +++ b/src/data/npc/model/tex/brd_7.c @@ -0,0 +1,40 @@ +extern unsigned short brd_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_pal.inc" +}; + +extern unsigned char brd_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_8.c b/src/data/npc/model/tex/brd_8.c new file mode 100644 index 00000000..21b6ef4e --- /dev/null +++ b/src/data/npc/model/tex/brd_8.c @@ -0,0 +1,40 @@ +extern unsigned short brd_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_pal.inc" +}; + +extern unsigned char brd_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/brd_9.c b/src/data/npc/model/tex/brd_9.c new file mode 100644 index 00000000..b2ed76fc --- /dev/null +++ b/src/data/npc/model/tex/brd_9.c @@ -0,0 +1,40 @@ +extern unsigned short brd_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_pal.inc" +}; + +extern unsigned char brd_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char brd_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/brd_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bul_1.c b/src/data/npc/model/tex/bul_1.c new file mode 100644 index 00000000..f79ded58 --- /dev/null +++ b/src/data/npc/model/tex/bul_1.c @@ -0,0 +1,64 @@ +extern unsigned short bul_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_pal.inc" +}; + +extern unsigned char bul_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bul_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bul_2.c b/src/data/npc/model/tex/bul_2.c new file mode 100644 index 00000000..02d8b44c --- /dev/null +++ b/src/data/npc/model/tex/bul_2.c @@ -0,0 +1,64 @@ +extern unsigned short bul_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_pal.inc" +}; + +extern unsigned char bul_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bul_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bul_3.c b/src/data/npc/model/tex/bul_3.c new file mode 100644 index 00000000..0ebf8464 --- /dev/null +++ b/src/data/npc/model/tex/bul_3.c @@ -0,0 +1,64 @@ +extern unsigned short bul_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_pal.inc" +}; + +extern unsigned char bul_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bul_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/bul_4.c b/src/data/npc/model/tex/bul_4.c new file mode 100644 index 00000000..7a217a7c --- /dev/null +++ b/src/data/npc/model/tex/bul_4.c @@ -0,0 +1,64 @@ +extern unsigned short bul_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_pal.inc" +}; + +extern unsigned char bul_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char bul_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/bul_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_1.c b/src/data/npc/model/tex/cat_1.c new file mode 100644 index 00000000..da36b8b1 --- /dev/null +++ b/src/data/npc/model/tex/cat_1.c @@ -0,0 +1,64 @@ +extern unsigned short cat_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_pal.inc" +}; + +extern unsigned char cat_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_10.c b/src/data/npc/model/tex/cat_10.c new file mode 100644 index 00000000..83266e89 --- /dev/null +++ b/src/data/npc/model/tex/cat_10.c @@ -0,0 +1,64 @@ +extern unsigned short cat_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_pal.inc" +}; + +extern unsigned char cat_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_11.c b/src/data/npc/model/tex/cat_11.c new file mode 100644 index 00000000..863cee33 --- /dev/null +++ b/src/data/npc/model/tex/cat_11.c @@ -0,0 +1,64 @@ +extern unsigned short cat_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_pal.inc" +}; + +extern unsigned char cat_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_12.c b/src/data/npc/model/tex/cat_12.c new file mode 100644 index 00000000..4abb0c08 --- /dev/null +++ b/src/data/npc/model/tex/cat_12.c @@ -0,0 +1,64 @@ +extern unsigned short cat_12_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_pal.inc" +}; + +extern unsigned char cat_12_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_12_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_12_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_13.c b/src/data/npc/model/tex/cat_13.c new file mode 100644 index 00000000..27c04899 --- /dev/null +++ b/src/data/npc/model/tex/cat_13.c @@ -0,0 +1,64 @@ +extern unsigned short cat_13_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_pal.inc" +}; + +extern unsigned char cat_13_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_13_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_13_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_14.c b/src/data/npc/model/tex/cat_14.c new file mode 100644 index 00000000..1d66b063 --- /dev/null +++ b/src/data/npc/model/tex/cat_14.c @@ -0,0 +1,64 @@ +extern unsigned short cat_14_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_pal.inc" +}; + +extern unsigned char cat_14_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_14_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_14_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_15.c b/src/data/npc/model/tex/cat_15.c new file mode 100644 index 00000000..6d6be1e8 --- /dev/null +++ b/src/data/npc/model/tex/cat_15.c @@ -0,0 +1,64 @@ +extern unsigned short cat_15_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_pal.inc" +}; + +extern unsigned char cat_15_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_15_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_15_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_2.c b/src/data/npc/model/tex/cat_2.c new file mode 100644 index 00000000..7416a187 --- /dev/null +++ b/src/data/npc/model/tex/cat_2.c @@ -0,0 +1,64 @@ +extern unsigned short cat_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_pal.inc" +}; + +extern unsigned char cat_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_3.c b/src/data/npc/model/tex/cat_3.c new file mode 100644 index 00000000..de414ecf --- /dev/null +++ b/src/data/npc/model/tex/cat_3.c @@ -0,0 +1,64 @@ +extern unsigned short cat_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_pal.inc" +}; + +extern unsigned char cat_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_4.c b/src/data/npc/model/tex/cat_4.c new file mode 100644 index 00000000..17be706d --- /dev/null +++ b/src/data/npc/model/tex/cat_4.c @@ -0,0 +1,64 @@ +extern unsigned short cat_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_pal.inc" +}; + +extern unsigned char cat_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_5.c b/src/data/npc/model/tex/cat_5.c new file mode 100644 index 00000000..9530e460 --- /dev/null +++ b/src/data/npc/model/tex/cat_5.c @@ -0,0 +1,64 @@ +extern unsigned short cat_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_pal.inc" +}; + +extern unsigned char cat_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_6.c b/src/data/npc/model/tex/cat_6.c new file mode 100644 index 00000000..71c7a094 --- /dev/null +++ b/src/data/npc/model/tex/cat_6.c @@ -0,0 +1,64 @@ +extern unsigned short cat_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_pal.inc" +}; + +extern unsigned char cat_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_7.c b/src/data/npc/model/tex/cat_7.c new file mode 100644 index 00000000..63809369 --- /dev/null +++ b/src/data/npc/model/tex/cat_7.c @@ -0,0 +1,64 @@ +extern unsigned short cat_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_pal.inc" +}; + +extern unsigned char cat_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_8.c b/src/data/npc/model/tex/cat_8.c new file mode 100644 index 00000000..52e8cba3 --- /dev/null +++ b/src/data/npc/model/tex/cat_8.c @@ -0,0 +1,64 @@ +extern unsigned short cat_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_pal.inc" +}; + +extern unsigned char cat_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cat_9.c b/src/data/npc/model/tex/cat_9.c new file mode 100644 index 00000000..42c3cfb0 --- /dev/null +++ b/src/data/npc/model/tex/cat_9.c @@ -0,0 +1,64 @@ +extern unsigned short cat_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_pal.inc" +}; + +extern unsigned char cat_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cat_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cat_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_1.c b/src/data/npc/model/tex/cbr_1.c new file mode 100644 index 00000000..1696b7d8 --- /dev/null +++ b/src/data/npc/model/tex/cbr_1.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_pal.inc" +}; + +extern unsigned char cbr_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_10.c b/src/data/npc/model/tex/cbr_10.c new file mode 100644 index 00000000..facadbd7 --- /dev/null +++ b/src/data/npc/model/tex/cbr_10.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_pal.inc" +}; + +extern unsigned char cbr_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_11.c b/src/data/npc/model/tex/cbr_11.c new file mode 100644 index 00000000..be3c9716 --- /dev/null +++ b/src/data/npc/model/tex/cbr_11.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_pal.inc" +}; + +extern unsigned char cbr_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_2.c b/src/data/npc/model/tex/cbr_2.c new file mode 100644 index 00000000..3f8525e2 --- /dev/null +++ b/src/data/npc/model/tex/cbr_2.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_pal.inc" +}; + +extern unsigned char cbr_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_3.c b/src/data/npc/model/tex/cbr_3.c new file mode 100644 index 00000000..211bee38 --- /dev/null +++ b/src/data/npc/model/tex/cbr_3.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_pal.inc" +}; + +extern unsigned char cbr_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_4.c b/src/data/npc/model/tex/cbr_4.c new file mode 100644 index 00000000..b517c8f9 --- /dev/null +++ b/src/data/npc/model/tex/cbr_4.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_pal.inc" +}; + +extern unsigned char cbr_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_5.c b/src/data/npc/model/tex/cbr_5.c new file mode 100644 index 00000000..177f6bdc --- /dev/null +++ b/src/data/npc/model/tex/cbr_5.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_pal.inc" +}; + +extern unsigned char cbr_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_6.c b/src/data/npc/model/tex/cbr_6.c new file mode 100644 index 00000000..03a834de --- /dev/null +++ b/src/data/npc/model/tex/cbr_6.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_pal.inc" +}; + +extern unsigned char cbr_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_7.c b/src/data/npc/model/tex/cbr_7.c new file mode 100644 index 00000000..c7fef282 --- /dev/null +++ b/src/data/npc/model/tex/cbr_7.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_pal.inc" +}; + +extern unsigned char cbr_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_8.c b/src/data/npc/model/tex/cbr_8.c new file mode 100644 index 00000000..683e3198 --- /dev/null +++ b/src/data/npc/model/tex/cbr_8.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_pal.inc" +}; + +extern unsigned char cbr_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cbr_9.c b/src/data/npc/model/tex/cbr_9.c new file mode 100644 index 00000000..0a7a240e --- /dev/null +++ b/src/data/npc/model/tex/cbr_9.c @@ -0,0 +1,64 @@ +extern unsigned short cbr_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_pal.inc" +}; + +extern unsigned char cbr_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cbr_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cbr_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_1.c b/src/data/npc/model/tex/chn_1.c new file mode 100644 index 00000000..e87185d7 --- /dev/null +++ b/src/data/npc/model/tex/chn_1.c @@ -0,0 +1,40 @@ +extern unsigned short chn_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_pal.inc" +}; + +extern unsigned char chn_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_2.c b/src/data/npc/model/tex/chn_2.c new file mode 100644 index 00000000..3dc228e0 --- /dev/null +++ b/src/data/npc/model/tex/chn_2.c @@ -0,0 +1,40 @@ +extern unsigned short chn_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_pal.inc" +}; + +extern unsigned char chn_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_3.c b/src/data/npc/model/tex/chn_3.c new file mode 100644 index 00000000..2cfb7a45 --- /dev/null +++ b/src/data/npc/model/tex/chn_3.c @@ -0,0 +1,40 @@ +extern unsigned short chn_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_pal.inc" +}; + +extern unsigned char chn_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_4.c b/src/data/npc/model/tex/chn_4.c new file mode 100644 index 00000000..248f8d0f --- /dev/null +++ b/src/data/npc/model/tex/chn_4.c @@ -0,0 +1,40 @@ +extern unsigned short chn_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_pal.inc" +}; + +extern unsigned char chn_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_5.c b/src/data/npc/model/tex/chn_5.c new file mode 100644 index 00000000..2543c017 --- /dev/null +++ b/src/data/npc/model/tex/chn_5.c @@ -0,0 +1,40 @@ +extern unsigned short chn_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_pal.inc" +}; + +extern unsigned char chn_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_6.c b/src/data/npc/model/tex/chn_6.c new file mode 100644 index 00000000..8d30ef77 --- /dev/null +++ b/src/data/npc/model/tex/chn_6.c @@ -0,0 +1,40 @@ +extern unsigned short chn_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_pal.inc" +}; + +extern unsigned char chn_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_7.c b/src/data/npc/model/tex/chn_7.c new file mode 100644 index 00000000..48a9ec28 --- /dev/null +++ b/src/data/npc/model/tex/chn_7.c @@ -0,0 +1,40 @@ +extern unsigned short chn_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_pal.inc" +}; + +extern unsigned char chn_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_8.c b/src/data/npc/model/tex/chn_8.c new file mode 100644 index 00000000..f9ed0078 --- /dev/null +++ b/src/data/npc/model/tex/chn_8.c @@ -0,0 +1,40 @@ +extern unsigned short chn_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_pal.inc" +}; + +extern unsigned char chn_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/chn_9.c b/src/data/npc/model/tex/chn_9.c new file mode 100644 index 00000000..d507a0e7 --- /dev/null +++ b/src/data/npc/model/tex/chn_9.c @@ -0,0 +1,40 @@ +extern unsigned short chn_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_pal.inc" +}; + +extern unsigned char chn_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char chn_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/chn_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cml_1.c b/src/data/npc/model/tex/cml_1.c new file mode 100644 index 00000000..6e42898b --- /dev/null +++ b/src/data/npc/model/tex/cml_1.c @@ -0,0 +1,40 @@ +extern unsigned short cml_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_pal.inc" +}; + +extern unsigned char cml_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cml_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cml_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cow_1.c b/src/data/npc/model/tex/cow_1.c new file mode 100644 index 00000000..9996beaf --- /dev/null +++ b/src/data/npc/model/tex/cow_1.c @@ -0,0 +1,64 @@ +extern unsigned short cow_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_pal.inc" +}; + +extern unsigned char cow_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cow_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cow_2.c b/src/data/npc/model/tex/cow_2.c new file mode 100644 index 00000000..084eb6a0 --- /dev/null +++ b/src/data/npc/model/tex/cow_2.c @@ -0,0 +1,64 @@ +extern unsigned short cow_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_pal.inc" +}; + +extern unsigned char cow_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cow_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cow_3.c b/src/data/npc/model/tex/cow_3.c new file mode 100644 index 00000000..f4f8d401 --- /dev/null +++ b/src/data/npc/model/tex/cow_3.c @@ -0,0 +1,64 @@ +extern unsigned short cow_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_pal.inc" +}; + +extern unsigned char cow_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cow_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/cow_4.c b/src/data/npc/model/tex/cow_4.c new file mode 100644 index 00000000..4bea351f --- /dev/null +++ b/src/data/npc/model/tex/cow_4.c @@ -0,0 +1,64 @@ +extern unsigned short cow_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_pal.inc" +}; + +extern unsigned char cow_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char cow_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/cow_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/crd_1.c b/src/data/npc/model/tex/crd_1.c new file mode 100644 index 00000000..35034ec4 --- /dev/null +++ b/src/data/npc/model/tex/crd_1.c @@ -0,0 +1,40 @@ +extern unsigned short crd_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_pal.inc" +}; + +extern unsigned char crd_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char crd_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/crd_2.c b/src/data/npc/model/tex/crd_2.c new file mode 100644 index 00000000..e513e0a4 --- /dev/null +++ b/src/data/npc/model/tex/crd_2.c @@ -0,0 +1,40 @@ +extern unsigned short crd_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_pal.inc" +}; + +extern unsigned char crd_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char crd_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/crd_3.c b/src/data/npc/model/tex/crd_3.c new file mode 100644 index 00000000..50213986 --- /dev/null +++ b/src/data/npc/model/tex/crd_3.c @@ -0,0 +1,40 @@ +extern unsigned short crd_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_pal.inc" +}; + +extern unsigned char crd_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char crd_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/crd_4.c b/src/data/npc/model/tex/crd_4.c new file mode 100644 index 00000000..52c33fa6 --- /dev/null +++ b/src/data/npc/model/tex/crd_4.c @@ -0,0 +1,40 @@ +extern unsigned short crd_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_pal.inc" +}; + +extern unsigned char crd_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char crd_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/crd_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_1.c b/src/data/npc/model/tex/dog_1.c new file mode 100644 index 00000000..79ac8c56 --- /dev/null +++ b/src/data/npc/model/tex/dog_1.c @@ -0,0 +1,64 @@ +extern unsigned short dog_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_pal.inc" +}; + +extern unsigned char dog_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_10.c b/src/data/npc/model/tex/dog_10.c new file mode 100644 index 00000000..641eaef9 --- /dev/null +++ b/src/data/npc/model/tex/dog_10.c @@ -0,0 +1,64 @@ +extern unsigned short dog_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_pal.inc" +}; + +extern unsigned char dog_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_2.c b/src/data/npc/model/tex/dog_2.c new file mode 100644 index 00000000..fdcbd993 --- /dev/null +++ b/src/data/npc/model/tex/dog_2.c @@ -0,0 +1,64 @@ +extern unsigned short dog_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_pal.inc" +}; + +extern unsigned char dog_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_3.c b/src/data/npc/model/tex/dog_3.c new file mode 100644 index 00000000..ba78b698 --- /dev/null +++ b/src/data/npc/model/tex/dog_3.c @@ -0,0 +1,64 @@ +extern unsigned short dog_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_pal.inc" +}; + +extern unsigned char dog_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_4.c b/src/data/npc/model/tex/dog_4.c new file mode 100644 index 00000000..f358f2c5 --- /dev/null +++ b/src/data/npc/model/tex/dog_4.c @@ -0,0 +1,64 @@ +extern unsigned short dog_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_pal.inc" +}; + +extern unsigned char dog_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_5.c b/src/data/npc/model/tex/dog_5.c new file mode 100644 index 00000000..e44d0ceb --- /dev/null +++ b/src/data/npc/model/tex/dog_5.c @@ -0,0 +1,64 @@ +extern unsigned short dog_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_pal.inc" +}; + +extern unsigned char dog_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_6.c b/src/data/npc/model/tex/dog_6.c new file mode 100644 index 00000000..cd696da6 --- /dev/null +++ b/src/data/npc/model/tex/dog_6.c @@ -0,0 +1,64 @@ +extern unsigned short dog_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_pal.inc" +}; + +extern unsigned char dog_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_7.c b/src/data/npc/model/tex/dog_7.c new file mode 100644 index 00000000..2c12f0dd --- /dev/null +++ b/src/data/npc/model/tex/dog_7.c @@ -0,0 +1,64 @@ +extern unsigned short dog_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_pal.inc" +}; + +extern unsigned char dog_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_8.c b/src/data/npc/model/tex/dog_8.c new file mode 100644 index 00000000..ff36cbaf --- /dev/null +++ b/src/data/npc/model/tex/dog_8.c @@ -0,0 +1,64 @@ +extern unsigned short dog_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_pal.inc" +}; + +extern unsigned char dog_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/dog_9.c b/src/data/npc/model/tex/dog_9.c new file mode 100644 index 00000000..4d92dd23 --- /dev/null +++ b/src/data/npc/model/tex/dog_9.c @@ -0,0 +1,64 @@ +extern unsigned short dog_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_pal.inc" +}; + +extern unsigned char dog_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char dog_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/dog_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_1.c b/src/data/npc/model/tex/duk_1.c new file mode 100644 index 00000000..7198348b --- /dev/null +++ b/src/data/npc/model/tex/duk_1.c @@ -0,0 +1,64 @@ +extern unsigned short duk_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_pal.inc" +}; + +extern unsigned char duk_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_10.c b/src/data/npc/model/tex/duk_10.c new file mode 100644 index 00000000..4d0243d3 --- /dev/null +++ b/src/data/npc/model/tex/duk_10.c @@ -0,0 +1,64 @@ +extern unsigned short duk_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_pal.inc" +}; + +extern unsigned char duk_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_11.c b/src/data/npc/model/tex/duk_11.c new file mode 100644 index 00000000..10c50f9d --- /dev/null +++ b/src/data/npc/model/tex/duk_11.c @@ -0,0 +1,64 @@ +extern unsigned short duk_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_pal.inc" +}; + +extern unsigned char duk_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_2.c b/src/data/npc/model/tex/duk_2.c new file mode 100644 index 00000000..1d93de18 --- /dev/null +++ b/src/data/npc/model/tex/duk_2.c @@ -0,0 +1,64 @@ +extern unsigned short duk_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_pal.inc" +}; + +extern unsigned char duk_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_3.c b/src/data/npc/model/tex/duk_3.c new file mode 100644 index 00000000..9cac7434 --- /dev/null +++ b/src/data/npc/model/tex/duk_3.c @@ -0,0 +1,64 @@ +extern unsigned short duk_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_pal.inc" +}; + +extern unsigned char duk_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_4.c b/src/data/npc/model/tex/duk_4.c new file mode 100644 index 00000000..a54bf3e9 --- /dev/null +++ b/src/data/npc/model/tex/duk_4.c @@ -0,0 +1,64 @@ +extern unsigned short duk_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_pal.inc" +}; + +extern unsigned char duk_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_5.c b/src/data/npc/model/tex/duk_5.c new file mode 100644 index 00000000..bb92b5ba --- /dev/null +++ b/src/data/npc/model/tex/duk_5.c @@ -0,0 +1,64 @@ +extern unsigned short duk_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_pal.inc" +}; + +extern unsigned char duk_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_6.c b/src/data/npc/model/tex/duk_6.c new file mode 100644 index 00000000..d1abda9e --- /dev/null +++ b/src/data/npc/model/tex/duk_6.c @@ -0,0 +1,64 @@ +extern unsigned short duk_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_pal.inc" +}; + +extern unsigned char duk_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_7.c b/src/data/npc/model/tex/duk_7.c new file mode 100644 index 00000000..90962380 --- /dev/null +++ b/src/data/npc/model/tex/duk_7.c @@ -0,0 +1,64 @@ +extern unsigned short duk_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_pal.inc" +}; + +extern unsigned char duk_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_8.c b/src/data/npc/model/tex/duk_8.c new file mode 100644 index 00000000..b72220f5 --- /dev/null +++ b/src/data/npc/model/tex/duk_8.c @@ -0,0 +1,64 @@ +extern unsigned short duk_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_pal.inc" +}; + +extern unsigned char duk_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/duk_9.c b/src/data/npc/model/tex/duk_9.c new file mode 100644 index 00000000..9ade2775 --- /dev/null +++ b/src/data/npc/model/tex/duk_9.c @@ -0,0 +1,64 @@ +extern unsigned short duk_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_pal.inc" +}; + +extern unsigned char duk_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char duk_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/duk_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_1.c b/src/data/npc/model/tex/elp_1.c new file mode 100644 index 00000000..e5684c34 --- /dev/null +++ b/src/data/npc/model/tex/elp_1.c @@ -0,0 +1,64 @@ +extern unsigned short elp_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_pal.inc" +}; + +extern unsigned char elp_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_2.c b/src/data/npc/model/tex/elp_2.c new file mode 100644 index 00000000..d5321115 --- /dev/null +++ b/src/data/npc/model/tex/elp_2.c @@ -0,0 +1,64 @@ +extern unsigned short elp_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_pal.inc" +}; + +extern unsigned char elp_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_3.c b/src/data/npc/model/tex/elp_3.c new file mode 100644 index 00000000..c6ff3d4b --- /dev/null +++ b/src/data/npc/model/tex/elp_3.c @@ -0,0 +1,64 @@ +extern unsigned short elp_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_pal.inc" +}; + +extern unsigned char elp_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_4.c b/src/data/npc/model/tex/elp_4.c new file mode 100644 index 00000000..0c5f70ab --- /dev/null +++ b/src/data/npc/model/tex/elp_4.c @@ -0,0 +1,64 @@ +extern unsigned short elp_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_pal.inc" +}; + +extern unsigned char elp_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_5.c b/src/data/npc/model/tex/elp_5.c new file mode 100644 index 00000000..c289b493 --- /dev/null +++ b/src/data/npc/model/tex/elp_5.c @@ -0,0 +1,64 @@ +extern unsigned short elp_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_pal.inc" +}; + +extern unsigned char elp_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_6.c b/src/data/npc/model/tex/elp_6.c new file mode 100644 index 00000000..6ac85a4e --- /dev/null +++ b/src/data/npc/model/tex/elp_6.c @@ -0,0 +1,64 @@ +extern unsigned short elp_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_pal.inc" +}; + +extern unsigned char elp_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/elp_7.c b/src/data/npc/model/tex/elp_7.c new file mode 100644 index 00000000..f34cc23b --- /dev/null +++ b/src/data/npc/model/tex/elp_7.c @@ -0,0 +1,64 @@ +extern unsigned short elp_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_pal.inc" +}; + +extern unsigned char elp_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char elp_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/elp_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/end_1.c b/src/data/npc/model/tex/end_1.c new file mode 100644 index 00000000..759a11c5 --- /dev/null +++ b/src/data/npc/model/tex/end_1.c @@ -0,0 +1,64 @@ +extern unsigned short end_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_pal.inc" +}; + +extern unsigned char end_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char end_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char end_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char end_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/end_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_1.c b/src/data/npc/model/tex/flg_1.c new file mode 100644 index 00000000..1ce9d34a --- /dev/null +++ b/src/data/npc/model/tex/flg_1.c @@ -0,0 +1,64 @@ +extern unsigned short flg_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_pal.inc" +}; + +extern unsigned char flg_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_10.c b/src/data/npc/model/tex/flg_10.c new file mode 100644 index 00000000..a8321489 --- /dev/null +++ b/src/data/npc/model/tex/flg_10.c @@ -0,0 +1,64 @@ +extern unsigned short flg_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_pal.inc" +}; + +extern unsigned char flg_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_11.c b/src/data/npc/model/tex/flg_11.c new file mode 100644 index 00000000..5cf5810b --- /dev/null +++ b/src/data/npc/model/tex/flg_11.c @@ -0,0 +1,64 @@ +extern unsigned short flg_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_pal.inc" +}; + +extern unsigned char flg_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_12.c b/src/data/npc/model/tex/flg_12.c new file mode 100644 index 00000000..238b58f6 --- /dev/null +++ b/src/data/npc/model/tex/flg_12.c @@ -0,0 +1,64 @@ +extern unsigned short flg_12_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_pal.inc" +}; + +extern unsigned char flg_12_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_12_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_12_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_13.c b/src/data/npc/model/tex/flg_13.c new file mode 100644 index 00000000..128a8f11 --- /dev/null +++ b/src/data/npc/model/tex/flg_13.c @@ -0,0 +1,64 @@ +extern unsigned short flg_13_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_pal.inc" +}; + +extern unsigned char flg_13_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_13_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_13_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_2.c b/src/data/npc/model/tex/flg_2.c new file mode 100644 index 00000000..1d6d26d6 --- /dev/null +++ b/src/data/npc/model/tex/flg_2.c @@ -0,0 +1,64 @@ +extern unsigned short flg_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_pal.inc" +}; + +extern unsigned char flg_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_3.c b/src/data/npc/model/tex/flg_3.c new file mode 100644 index 00000000..26f2219f --- /dev/null +++ b/src/data/npc/model/tex/flg_3.c @@ -0,0 +1,64 @@ +extern unsigned short flg_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_pal.inc" +}; + +extern unsigned char flg_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_4.c b/src/data/npc/model/tex/flg_4.c new file mode 100644 index 00000000..9bba2101 --- /dev/null +++ b/src/data/npc/model/tex/flg_4.c @@ -0,0 +1,64 @@ +extern unsigned short flg_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_pal.inc" +}; + +extern unsigned char flg_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_5.c b/src/data/npc/model/tex/flg_5.c new file mode 100644 index 00000000..cc0d3770 --- /dev/null +++ b/src/data/npc/model/tex/flg_5.c @@ -0,0 +1,64 @@ +extern unsigned short flg_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_pal.inc" +}; + +extern unsigned char flg_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_6.c b/src/data/npc/model/tex/flg_6.c new file mode 100644 index 00000000..afff9c8b --- /dev/null +++ b/src/data/npc/model/tex/flg_6.c @@ -0,0 +1,64 @@ +extern unsigned short flg_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_pal.inc" +}; + +extern unsigned char flg_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_7.c b/src/data/npc/model/tex/flg_7.c new file mode 100644 index 00000000..e2cd0306 --- /dev/null +++ b/src/data/npc/model/tex/flg_7.c @@ -0,0 +1,64 @@ +extern unsigned short flg_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_pal.inc" +}; + +extern unsigned char flg_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_8.c b/src/data/npc/model/tex/flg_8.c new file mode 100644 index 00000000..399a96d1 --- /dev/null +++ b/src/data/npc/model/tex/flg_8.c @@ -0,0 +1,64 @@ +extern unsigned short flg_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_pal.inc" +}; + +extern unsigned char flg_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/flg_9.c b/src/data/npc/model/tex/flg_9.c new file mode 100644 index 00000000..2a30dcbc --- /dev/null +++ b/src/data/npc/model/tex/flg_9.c @@ -0,0 +1,64 @@ +extern unsigned short flg_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_pal.inc" +}; + +extern unsigned char flg_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char flg_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/flg_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/fob_1.c b/src/data/npc/model/tex/fob_1.c new file mode 100644 index 00000000..d0c795b8 --- /dev/null +++ b/src/data/npc/model/tex/fob_1.c @@ -0,0 +1,40 @@ +extern unsigned short fob_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_pal.inc" +}; + +extern unsigned char fob_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char fob_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fob_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/fox_1.c b/src/data/npc/model/tex/fox_1.c new file mode 100644 index 00000000..0867e8ae --- /dev/null +++ b/src/data/npc/model/tex/fox_1.c @@ -0,0 +1,40 @@ +extern unsigned short fox_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_pal.inc" +}; + +extern unsigned char fox_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char fox_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/fox_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_1.c b/src/data/npc/model/tex/goa_1.c new file mode 100644 index 00000000..d9aba2c7 --- /dev/null +++ b/src/data/npc/model/tex/goa_1.c @@ -0,0 +1,64 @@ +extern unsigned short goa_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_pal.inc" +}; + +extern unsigned char goa_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_2.c b/src/data/npc/model/tex/goa_2.c new file mode 100644 index 00000000..a0061d04 --- /dev/null +++ b/src/data/npc/model/tex/goa_2.c @@ -0,0 +1,64 @@ +extern unsigned short goa_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_pal.inc" +}; + +extern unsigned char goa_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_3.c b/src/data/npc/model/tex/goa_3.c new file mode 100644 index 00000000..52440869 --- /dev/null +++ b/src/data/npc/model/tex/goa_3.c @@ -0,0 +1,64 @@ +extern unsigned short goa_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_pal.inc" +}; + +extern unsigned char goa_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_4.c b/src/data/npc/model/tex/goa_4.c new file mode 100644 index 00000000..9fd0b28c --- /dev/null +++ b/src/data/npc/model/tex/goa_4.c @@ -0,0 +1,64 @@ +extern unsigned short goa_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_pal.inc" +}; + +extern unsigned char goa_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_5.c b/src/data/npc/model/tex/goa_5.c new file mode 100644 index 00000000..4ae9d3f5 --- /dev/null +++ b/src/data/npc/model/tex/goa_5.c @@ -0,0 +1,64 @@ +extern unsigned short goa_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_pal.inc" +}; + +extern unsigned char goa_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/goa_6.c b/src/data/npc/model/tex/goa_6.c new file mode 100644 index 00000000..e71dfde2 --- /dev/null +++ b/src/data/npc/model/tex/goa_6.c @@ -0,0 +1,64 @@ +extern unsigned short goa_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_pal.inc" +}; + +extern unsigned char goa_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char goa_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/goa_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gor_1.c b/src/data/npc/model/tex/gor_1.c new file mode 100644 index 00000000..18aee765 --- /dev/null +++ b/src/data/npc/model/tex/gor_1.c @@ -0,0 +1,64 @@ +extern unsigned short gor_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_pal.inc" +}; + +extern unsigned char gor_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gor_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gor_2.c b/src/data/npc/model/tex/gor_2.c new file mode 100644 index 00000000..cf53fe49 --- /dev/null +++ b/src/data/npc/model/tex/gor_2.c @@ -0,0 +1,64 @@ +extern unsigned short gor_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_pal.inc" +}; + +extern unsigned char gor_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gor_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gor_3.c b/src/data/npc/model/tex/gor_3.c new file mode 100644 index 00000000..091cd9c5 --- /dev/null +++ b/src/data/npc/model/tex/gor_3.c @@ -0,0 +1,64 @@ +extern unsigned short gor_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_pal.inc" +}; + +extern unsigned char gor_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gor_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gor_4.c b/src/data/npc/model/tex/gor_4.c new file mode 100644 index 00000000..0c22eef8 --- /dev/null +++ b/src/data/npc/model/tex/gor_4.c @@ -0,0 +1,64 @@ +extern unsigned short gor_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_pal.inc" +}; + +extern unsigned char gor_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gor_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gor_5.c b/src/data/npc/model/tex/gor_5.c new file mode 100644 index 00000000..a9cc4319 --- /dev/null +++ b/src/data/npc/model/tex/gor_5.c @@ -0,0 +1,64 @@ +extern unsigned short gor_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_pal.inc" +}; + +extern unsigned char gor_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gor_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gor_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/grf_1.c b/src/data/npc/model/tex/grf_1.c new file mode 100644 index 00000000..d32fbb03 --- /dev/null +++ b/src/data/npc/model/tex/grf_1.c @@ -0,0 +1,40 @@ +extern unsigned short grf_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_pal.inc" +}; + +extern unsigned char grf_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char grf_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/grf_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/gst_1.c b/src/data/npc/model/tex/gst_1.c new file mode 100644 index 00000000..94fc9fe3 --- /dev/null +++ b/src/data/npc/model/tex/gst_1.c @@ -0,0 +1,64 @@ +extern unsigned short gst_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_pal.inc" +}; + +extern unsigned char gst_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char gst_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/gst_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hem_1.c b/src/data/npc/model/tex/hem_1.c new file mode 100644 index 00000000..9503b3c7 --- /dev/null +++ b/src/data/npc/model/tex/hem_1.c @@ -0,0 +1,8 @@ +extern unsigned short hem_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hem_1_pal.inc" +}; + +extern unsigned char hem_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hem_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hgh_1.c b/src/data/npc/model/tex/hgh_1.c new file mode 100644 index 00000000..3688cb68 --- /dev/null +++ b/src/data/npc/model/tex/hgh_1.c @@ -0,0 +1,40 @@ +extern unsigned short hgh_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_pal.inc" +}; + +extern unsigned char hgh_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hgh_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgh_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hgs_1.c b/src/data/npc/model/tex/hgs_1.c new file mode 100644 index 00000000..21e88421 --- /dev/null +++ b/src/data/npc/model/tex/hgs_1.c @@ -0,0 +1,40 @@ +extern unsigned short hgs_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_pal.inc" +}; + +extern unsigned char hgs_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hgs_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hgs_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_1.c b/src/data/npc/model/tex/hip_1.c new file mode 100644 index 00000000..47ad3760 --- /dev/null +++ b/src/data/npc/model/tex/hip_1.c @@ -0,0 +1,40 @@ +extern unsigned short hip_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_pal.inc" +}; + +extern unsigned char hip_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_2.c b/src/data/npc/model/tex/hip_2.c new file mode 100644 index 00000000..c920384b --- /dev/null +++ b/src/data/npc/model/tex/hip_2.c @@ -0,0 +1,40 @@ +extern unsigned short hip_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_pal.inc" +}; + +extern unsigned char hip_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_3.c b/src/data/npc/model/tex/hip_3.c new file mode 100644 index 00000000..395c15ef --- /dev/null +++ b/src/data/npc/model/tex/hip_3.c @@ -0,0 +1,40 @@ +extern unsigned short hip_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_pal.inc" +}; + +extern unsigned char hip_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_4.c b/src/data/npc/model/tex/hip_4.c new file mode 100644 index 00000000..588f0dc7 --- /dev/null +++ b/src/data/npc/model/tex/hip_4.c @@ -0,0 +1,40 @@ +extern unsigned short hip_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_pal.inc" +}; + +extern unsigned char hip_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_5.c b/src/data/npc/model/tex/hip_5.c new file mode 100644 index 00000000..2c6a386d --- /dev/null +++ b/src/data/npc/model/tex/hip_5.c @@ -0,0 +1,40 @@ +extern unsigned short hip_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_pal.inc" +}; + +extern unsigned char hip_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_6.c b/src/data/npc/model/tex/hip_6.c new file mode 100644 index 00000000..c00f0c1a --- /dev/null +++ b/src/data/npc/model/tex/hip_6.c @@ -0,0 +1,40 @@ +extern unsigned short hip_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_pal.inc" +}; + +extern unsigned char hip_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hip_7.c b/src/data/npc/model/tex/hip_7.c new file mode 100644 index 00000000..73b7d3c5 --- /dev/null +++ b/src/data/npc/model/tex/hip_7.c @@ -0,0 +1,40 @@ +extern unsigned short hip_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_pal.inc" +}; + +extern unsigned char hip_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hip_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hip_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_1.c b/src/data/npc/model/tex/hrs_1.c new file mode 100644 index 00000000..ac5136d4 --- /dev/null +++ b/src/data/npc/model/tex/hrs_1.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_pal.inc" +}; + +extern unsigned char hrs_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_2.c b/src/data/npc/model/tex/hrs_2.c new file mode 100644 index 00000000..ca7e074a --- /dev/null +++ b/src/data/npc/model/tex/hrs_2.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_pal.inc" +}; + +extern unsigned char hrs_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_3.c b/src/data/npc/model/tex/hrs_3.c new file mode 100644 index 00000000..12f58244 --- /dev/null +++ b/src/data/npc/model/tex/hrs_3.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_pal.inc" +}; + +extern unsigned char hrs_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_4.c b/src/data/npc/model/tex/hrs_4.c new file mode 100644 index 00000000..6e9fac86 --- /dev/null +++ b/src/data/npc/model/tex/hrs_4.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_pal.inc" +}; + +extern unsigned char hrs_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_5.c b/src/data/npc/model/tex/hrs_5.c new file mode 100644 index 00000000..1744111f --- /dev/null +++ b/src/data/npc/model/tex/hrs_5.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_pal.inc" +}; + +extern unsigned char hrs_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_6.c b/src/data/npc/model/tex/hrs_6.c new file mode 100644 index 00000000..956c0dc6 --- /dev/null +++ b/src/data/npc/model/tex/hrs_6.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_pal.inc" +}; + +extern unsigned char hrs_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_7.c b/src/data/npc/model/tex/hrs_7.c new file mode 100644 index 00000000..e6fbd042 --- /dev/null +++ b/src/data/npc/model/tex/hrs_7.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_pal.inc" +}; + +extern unsigned char hrs_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/hrs_8.c b/src/data/npc/model/tex/hrs_8.c new file mode 100644 index 00000000..b164b9b1 --- /dev/null +++ b/src/data/npc/model/tex/hrs_8.c @@ -0,0 +1,40 @@ +extern unsigned short hrs_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_pal.inc" +}; + +extern unsigned char hrs_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char hrs_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/hrs_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kab_1.c b/src/data/npc/model/tex/kab_1.c new file mode 100644 index 00000000..577b9fbb --- /dev/null +++ b/src/data/npc/model/tex/kab_1.c @@ -0,0 +1,40 @@ +extern unsigned short kab_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_pal.inc" +}; + +extern unsigned char kab_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kab_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kab_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_1.c b/src/data/npc/model/tex/kal_1.c new file mode 100644 index 00000000..3bf59536 --- /dev/null +++ b/src/data/npc/model/tex/kal_1.c @@ -0,0 +1,64 @@ +extern unsigned short kal_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_pal.inc" +}; + +extern unsigned char kal_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_2.c b/src/data/npc/model/tex/kal_2.c new file mode 100644 index 00000000..674f8cda --- /dev/null +++ b/src/data/npc/model/tex/kal_2.c @@ -0,0 +1,64 @@ +extern unsigned short kal_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_pal.inc" +}; + +extern unsigned char kal_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_3.c b/src/data/npc/model/tex/kal_3.c new file mode 100644 index 00000000..338bec9d --- /dev/null +++ b/src/data/npc/model/tex/kal_3.c @@ -0,0 +1,64 @@ +extern unsigned short kal_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_pal.inc" +}; + +extern unsigned char kal_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_4.c b/src/data/npc/model/tex/kal_4.c new file mode 100644 index 00000000..4fbefa4f --- /dev/null +++ b/src/data/npc/model/tex/kal_4.c @@ -0,0 +1,64 @@ +extern unsigned short kal_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_pal.inc" +}; + +extern unsigned char kal_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_5.c b/src/data/npc/model/tex/kal_5.c new file mode 100644 index 00000000..9f2fe15d --- /dev/null +++ b/src/data/npc/model/tex/kal_5.c @@ -0,0 +1,64 @@ +extern unsigned short kal_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_pal.inc" +}; + +extern unsigned char kal_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kal_6.c b/src/data/npc/model/tex/kal_6.c new file mode 100644 index 00000000..705f6977 --- /dev/null +++ b/src/data/npc/model/tex/kal_6.c @@ -0,0 +1,64 @@ +extern unsigned short kal_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_pal.inc" +}; + +extern unsigned char kal_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char kal_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kal_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_1.c b/src/data/npc/model/tex/kgr_1.c new file mode 100644 index 00000000..25f2b512 --- /dev/null +++ b/src/data/npc/model/tex/kgr_1.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_pal.inc" +}; + +extern unsigned char kgr_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_2.c b/src/data/npc/model/tex/kgr_2.c new file mode 100644 index 00000000..b2a0178c --- /dev/null +++ b/src/data/npc/model/tex/kgr_2.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_pal.inc" +}; + +extern unsigned char kgr_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_3.c b/src/data/npc/model/tex/kgr_3.c new file mode 100644 index 00000000..9b7efe1b --- /dev/null +++ b/src/data/npc/model/tex/kgr_3.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_pal.inc" +}; + +extern unsigned char kgr_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_4.c b/src/data/npc/model/tex/kgr_4.c new file mode 100644 index 00000000..ff0a3dff --- /dev/null +++ b/src/data/npc/model/tex/kgr_4.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_pal.inc" +}; + +extern unsigned char kgr_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_5.c b/src/data/npc/model/tex/kgr_5.c new file mode 100644 index 00000000..05812a8a --- /dev/null +++ b/src/data/npc/model/tex/kgr_5.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_pal.inc" +}; + +extern unsigned char kgr_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/kgr_6.c b/src/data/npc/model/tex/kgr_6.c new file mode 100644 index 00000000..8f302d96 --- /dev/null +++ b/src/data/npc/model/tex/kgr_6.c @@ -0,0 +1,40 @@ +extern unsigned short kgr_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_pal.inc" +}; + +extern unsigned char kgr_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char kgr_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/kgr_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/lon_1.c b/src/data/npc/model/tex/lon_1.c new file mode 100644 index 00000000..f5cd7654 --- /dev/null +++ b/src/data/npc/model/tex/lon_1.c @@ -0,0 +1,64 @@ +extern unsigned short lon_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_pal.inc" +}; + +extern unsigned char lon_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char lon_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/lon_2.c b/src/data/npc/model/tex/lon_2.c new file mode 100644 index 00000000..0a03d1ac --- /dev/null +++ b/src/data/npc/model/tex/lon_2.c @@ -0,0 +1,64 @@ +extern unsigned short lon_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_pal.inc" +}; + +extern unsigned char lon_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char lon_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/lon_3.c b/src/data/npc/model/tex/lon_3.c new file mode 100644 index 00000000..ba41ce30 --- /dev/null +++ b/src/data/npc/model/tex/lon_3.c @@ -0,0 +1,64 @@ +extern unsigned short lon_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_pal.inc" +}; + +extern unsigned char lon_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char lon_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/lon_4.c b/src/data/npc/model/tex/lon_4.c new file mode 100644 index 00000000..271eae8d --- /dev/null +++ b/src/data/npc/model/tex/lon_4.c @@ -0,0 +1,64 @@ +extern unsigned short lon_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_pal.inc" +}; + +extern unsigned char lon_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char lon_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lon_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/lrc_1.c b/src/data/npc/model/tex/lrc_1.c new file mode 100644 index 00000000..3bf5a860 --- /dev/null +++ b/src/data/npc/model/tex/lrc_1.c @@ -0,0 +1,40 @@ +extern unsigned short lrc_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_pal.inc" +}; + +extern unsigned char lrc_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char lrc_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/lrc_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mka_1.c b/src/data/npc/model/tex/mka_1.c new file mode 100644 index 00000000..10c25793 --- /dev/null +++ b/src/data/npc/model/tex/mka_1.c @@ -0,0 +1,8 @@ +extern unsigned short mka_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mka_1_pal.inc" +}; + +extern unsigned char mka_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mka_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mnk_1.c b/src/data/npc/model/tex/mnk_1.c new file mode 100644 index 00000000..083254a6 --- /dev/null +++ b/src/data/npc/model/tex/mnk_1.c @@ -0,0 +1,64 @@ +extern unsigned short mnk_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_pal.inc" +}; + +extern unsigned char mnk_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mnk_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mnk_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mob_1.c b/src/data/npc/model/tex/mob_1.c new file mode 100644 index 00000000..1cd4a314 --- /dev/null +++ b/src/data/npc/model/tex/mob_1.c @@ -0,0 +1,64 @@ +extern unsigned short mob_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_pal.inc" +}; + +extern unsigned char mob_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mob_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mob_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mol_1.c b/src/data/npc/model/tex/mol_1.c new file mode 100644 index 00000000..06ce506a --- /dev/null +++ b/src/data/npc/model/tex/mol_1.c @@ -0,0 +1,64 @@ +extern unsigned short mol_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_pal.inc" +}; + +extern unsigned char mol_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mol_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mol_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mos_1.c b/src/data/npc/model/tex/mos_1.c new file mode 100644 index 00000000..55235821 --- /dev/null +++ b/src/data/npc/model/tex/mos_1.c @@ -0,0 +1,64 @@ +extern unsigned short mos_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_pal.inc" +}; + +extern unsigned char mos_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mos_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mos_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_1.c b/src/data/npc/model/tex/mus_1.c new file mode 100644 index 00000000..9d008399 --- /dev/null +++ b/src/data/npc/model/tex/mus_1.c @@ -0,0 +1,64 @@ +extern unsigned short mus_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_pal.inc" +}; + +extern unsigned char mus_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_10.c b/src/data/npc/model/tex/mus_10.c new file mode 100644 index 00000000..b51f6b7a --- /dev/null +++ b/src/data/npc/model/tex/mus_10.c @@ -0,0 +1,64 @@ +extern unsigned short mus_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_pal.inc" +}; + +extern unsigned char mus_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_2.c b/src/data/npc/model/tex/mus_2.c new file mode 100644 index 00000000..bb0d004b --- /dev/null +++ b/src/data/npc/model/tex/mus_2.c @@ -0,0 +1,64 @@ +extern unsigned short mus_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_pal.inc" +}; + +extern unsigned char mus_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_3.c b/src/data/npc/model/tex/mus_3.c new file mode 100644 index 00000000..0f0730f0 --- /dev/null +++ b/src/data/npc/model/tex/mus_3.c @@ -0,0 +1,64 @@ +extern unsigned short mus_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_pal.inc" +}; + +extern unsigned char mus_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_4.c b/src/data/npc/model/tex/mus_4.c new file mode 100644 index 00000000..0118d7e0 --- /dev/null +++ b/src/data/npc/model/tex/mus_4.c @@ -0,0 +1,64 @@ +extern unsigned short mus_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_pal.inc" +}; + +extern unsigned char mus_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_5.c b/src/data/npc/model/tex/mus_5.c new file mode 100644 index 00000000..151a7330 --- /dev/null +++ b/src/data/npc/model/tex/mus_5.c @@ -0,0 +1,64 @@ +extern unsigned short mus_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_pal.inc" +}; + +extern unsigned char mus_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_6.c b/src/data/npc/model/tex/mus_6.c new file mode 100644 index 00000000..4a903b2f --- /dev/null +++ b/src/data/npc/model/tex/mus_6.c @@ -0,0 +1,64 @@ +extern unsigned short mus_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_pal.inc" +}; + +extern unsigned char mus_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_7.c b/src/data/npc/model/tex/mus_7.c new file mode 100644 index 00000000..020c9908 --- /dev/null +++ b/src/data/npc/model/tex/mus_7.c @@ -0,0 +1,64 @@ +extern unsigned short mus_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_pal.inc" +}; + +extern unsigned char mus_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_8.c b/src/data/npc/model/tex/mus_8.c new file mode 100644 index 00000000..a5a06b15 --- /dev/null +++ b/src/data/npc/model/tex/mus_8.c @@ -0,0 +1,64 @@ +extern unsigned short mus_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_pal.inc" +}; + +extern unsigned char mus_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/mus_9.c b/src/data/npc/model/tex/mus_9.c new file mode 100644 index 00000000..be95a84a --- /dev/null +++ b/src/data/npc/model/tex/mus_9.c @@ -0,0 +1,64 @@ +extern unsigned short mus_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_pal.inc" +}; + +extern unsigned char mus_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char mus_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/mus_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/oct_1.c b/src/data/npc/model/tex/oct_1.c new file mode 100644 index 00000000..fb391f9a --- /dev/null +++ b/src/data/npc/model/tex/oct_1.c @@ -0,0 +1,40 @@ +extern unsigned short oct_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_pal.inc" +}; + +extern unsigned char oct_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char oct_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/oct_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ost_1.c b/src/data/npc/model/tex/ost_1.c new file mode 100644 index 00000000..9a3d86a3 --- /dev/null +++ b/src/data/npc/model/tex/ost_1.c @@ -0,0 +1,40 @@ +extern unsigned short ost_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_pal.inc" +}; + +extern unsigned char ost_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ost_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ost_2.c b/src/data/npc/model/tex/ost_2.c new file mode 100644 index 00000000..c712c220 --- /dev/null +++ b/src/data/npc/model/tex/ost_2.c @@ -0,0 +1,40 @@ +extern unsigned short ost_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_pal.inc" +}; + +extern unsigned char ost_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ost_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ost_3.c b/src/data/npc/model/tex/ost_3.c new file mode 100644 index 00000000..78404c09 --- /dev/null +++ b/src/data/npc/model/tex/ost_3.c @@ -0,0 +1,40 @@ +extern unsigned short ost_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_pal.inc" +}; + +extern unsigned char ost_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ost_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ost_4.c b/src/data/npc/model/tex/ost_4.c new file mode 100644 index 00000000..6747cc6d --- /dev/null +++ b/src/data/npc/model/tex/ost_4.c @@ -0,0 +1,40 @@ +extern unsigned short ost_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_pal.inc" +}; + +extern unsigned char ost_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ost_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ost_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/owl_1.c b/src/data/npc/model/tex/owl_1.c new file mode 100644 index 00000000..f30d66e0 --- /dev/null +++ b/src/data/npc/model/tex/owl_1.c @@ -0,0 +1,40 @@ +extern unsigned short owl_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_pal.inc" +}; + +extern unsigned char owl_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char owl_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/owl_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pbr_1.c b/src/data/npc/model/tex/pbr_1.c new file mode 100644 index 00000000..c8a5e6c0 --- /dev/null +++ b/src/data/npc/model/tex/pbr_1.c @@ -0,0 +1,40 @@ +extern unsigned short pbr_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_pal.inc" +}; + +extern unsigned char pbr_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pbr_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pbr_2.c b/src/data/npc/model/tex/pbr_2.c new file mode 100644 index 00000000..a49546d2 --- /dev/null +++ b/src/data/npc/model/tex/pbr_2.c @@ -0,0 +1,40 @@ +extern unsigned short pbr_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_pal.inc" +}; + +extern unsigned char pbr_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pbr_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pbr_3.c b/src/data/npc/model/tex/pbr_3.c new file mode 100644 index 00000000..9b9cdaf6 --- /dev/null +++ b/src/data/npc/model/tex/pbr_3.c @@ -0,0 +1,40 @@ +extern unsigned short pbr_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_pal.inc" +}; + +extern unsigned char pbr_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pbr_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pbr_4.c b/src/data/npc/model/tex/pbr_4.c new file mode 100644 index 00000000..5f3c8ff1 --- /dev/null +++ b/src/data/npc/model/tex/pbr_4.c @@ -0,0 +1,40 @@ +extern unsigned short pbr_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_pal.inc" +}; + +extern unsigned char pbr_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pbr_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pbr_5.c b/src/data/npc/model/tex/pbr_5.c new file mode 100644 index 00000000..eb73b8b5 --- /dev/null +++ b/src/data/npc/model/tex/pbr_5.c @@ -0,0 +1,40 @@ +extern unsigned short pbr_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_pal.inc" +}; + +extern unsigned char pbr_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pbr_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pbr_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pga_1.c b/src/data/npc/model/tex/pga_1.c new file mode 100644 index 00000000..b662fe27 --- /dev/null +++ b/src/data/npc/model/tex/pga_1.c @@ -0,0 +1,40 @@ +extern unsigned short pga_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_pal.inc" +}; + +extern unsigned char pga_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pga_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pga_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgb_1.c b/src/data/npc/model/tex/pgb_1.c new file mode 100644 index 00000000..0fa9e855 --- /dev/null +++ b/src/data/npc/model/tex/pgb_1.c @@ -0,0 +1,40 @@ +extern unsigned short pgb_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_pal.inc" +}; + +extern unsigned char pgb_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgb_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgb_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_1.c b/src/data/npc/model/tex/pgn_1.c new file mode 100644 index 00000000..4a958baf --- /dev/null +++ b/src/data/npc/model/tex/pgn_1.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_pal.inc" +}; + +extern unsigned char pgn_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_2.c b/src/data/npc/model/tex/pgn_2.c new file mode 100644 index 00000000..49ce025c --- /dev/null +++ b/src/data/npc/model/tex/pgn_2.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_pal.inc" +}; + +extern unsigned char pgn_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_3.c b/src/data/npc/model/tex/pgn_3.c new file mode 100644 index 00000000..a05d7e19 --- /dev/null +++ b/src/data/npc/model/tex/pgn_3.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_pal.inc" +}; + +extern unsigned char pgn_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_4.c b/src/data/npc/model/tex/pgn_4.c new file mode 100644 index 00000000..2fde2edc --- /dev/null +++ b/src/data/npc/model/tex/pgn_4.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_pal.inc" +}; + +extern unsigned char pgn_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_5.c b/src/data/npc/model/tex/pgn_5.c new file mode 100644 index 00000000..f6c40604 --- /dev/null +++ b/src/data/npc/model/tex/pgn_5.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_pal.inc" +}; + +extern unsigned char pgn_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_6.c b/src/data/npc/model/tex/pgn_6.c new file mode 100644 index 00000000..9a885170 --- /dev/null +++ b/src/data/npc/model/tex/pgn_6.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_pal.inc" +}; + +extern unsigned char pgn_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_7.c b/src/data/npc/model/tex/pgn_7.c new file mode 100644 index 00000000..6edec57f --- /dev/null +++ b/src/data/npc/model/tex/pgn_7.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_pal.inc" +}; + +extern unsigned char pgn_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pgn_8.c b/src/data/npc/model/tex/pgn_8.c new file mode 100644 index 00000000..410bd0fc --- /dev/null +++ b/src/data/npc/model/tex/pgn_8.c @@ -0,0 +1,40 @@ +extern unsigned short pgn_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_pal.inc" +}; + +extern unsigned char pgn_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pgn_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pgn_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_1.c b/src/data/npc/model/tex/pig_1.c new file mode 100644 index 00000000..3884ebad --- /dev/null +++ b/src/data/npc/model/tex/pig_1.c @@ -0,0 +1,64 @@ +extern unsigned short pig_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_pal.inc" +}; + +extern unsigned char pig_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_10.c b/src/data/npc/model/tex/pig_10.c new file mode 100644 index 00000000..5d3c834b --- /dev/null +++ b/src/data/npc/model/tex/pig_10.c @@ -0,0 +1,64 @@ +extern unsigned short pig_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_pal.inc" +}; + +extern unsigned char pig_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_11.c b/src/data/npc/model/tex/pig_11.c new file mode 100644 index 00000000..847dcb05 --- /dev/null +++ b/src/data/npc/model/tex/pig_11.c @@ -0,0 +1,64 @@ +extern unsigned short pig_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_pal.inc" +}; + +extern unsigned char pig_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_2.c b/src/data/npc/model/tex/pig_2.c new file mode 100644 index 00000000..782ff577 --- /dev/null +++ b/src/data/npc/model/tex/pig_2.c @@ -0,0 +1,64 @@ +extern unsigned short pig_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_pal.inc" +}; + +extern unsigned char pig_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_3.c b/src/data/npc/model/tex/pig_3.c new file mode 100644 index 00000000..cd199df9 --- /dev/null +++ b/src/data/npc/model/tex/pig_3.c @@ -0,0 +1,64 @@ +extern unsigned short pig_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_pal.inc" +}; + +extern unsigned char pig_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_4.c b/src/data/npc/model/tex/pig_4.c new file mode 100644 index 00000000..b8108ec0 --- /dev/null +++ b/src/data/npc/model/tex/pig_4.c @@ -0,0 +1,64 @@ +extern unsigned short pig_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_pal.inc" +}; + +extern unsigned char pig_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_5.c b/src/data/npc/model/tex/pig_5.c new file mode 100644 index 00000000..23d4e4cd --- /dev/null +++ b/src/data/npc/model/tex/pig_5.c @@ -0,0 +1,64 @@ +extern unsigned short pig_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_pal.inc" +}; + +extern unsigned char pig_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_6.c b/src/data/npc/model/tex/pig_6.c new file mode 100644 index 00000000..748482e3 --- /dev/null +++ b/src/data/npc/model/tex/pig_6.c @@ -0,0 +1,64 @@ +extern unsigned short pig_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_pal.inc" +}; + +extern unsigned char pig_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_7.c b/src/data/npc/model/tex/pig_7.c new file mode 100644 index 00000000..90f1294a --- /dev/null +++ b/src/data/npc/model/tex/pig_7.c @@ -0,0 +1,64 @@ +extern unsigned short pig_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_pal.inc" +}; + +extern unsigned char pig_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_8.c b/src/data/npc/model/tex/pig_8.c new file mode 100644 index 00000000..57d9d9c3 --- /dev/null +++ b/src/data/npc/model/tex/pig_8.c @@ -0,0 +1,64 @@ +extern unsigned short pig_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_pal.inc" +}; + +extern unsigned char pig_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pig_9.c b/src/data/npc/model/tex/pig_9.c new file mode 100644 index 00000000..5f4cf2fd --- /dev/null +++ b/src/data/npc/model/tex/pig_9.c @@ -0,0 +1,64 @@ +extern unsigned short pig_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_pal.inc" +}; + +extern unsigned char pig_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pig_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pig_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pkn_1.c b/src/data/npc/model/tex/pkn_1.c new file mode 100644 index 00000000..bcd0f353 --- /dev/null +++ b/src/data/npc/model/tex/pkn_1.c @@ -0,0 +1,8 @@ +extern unsigned short pkn_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pkn_1_pal.inc" +}; + +extern unsigned char pkn_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pkn_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/pla_1.c b/src/data/npc/model/tex/pla_1.c new file mode 100644 index 00000000..bb9be3c0 --- /dev/null +++ b/src/data/npc/model/tex/pla_1.c @@ -0,0 +1,64 @@ +extern unsigned short pla_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_pal.inc" +}; + +extern unsigned char pla_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char pla_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/pla_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/plb_1.c b/src/data/npc/model/tex/plb_1.c new file mode 100644 index 00000000..9589ae01 --- /dev/null +++ b/src/data/npc/model/tex/plb_1.c @@ -0,0 +1,40 @@ +extern unsigned short plb_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_pal.inc" +}; + +extern unsigned char plb_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char plb_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plb_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/plc_1.c b/src/data/npc/model/tex/plc_1.c new file mode 100644 index 00000000..b920324e --- /dev/null +++ b/src/data/npc/model/tex/plc_1.c @@ -0,0 +1,64 @@ +extern unsigned short plc_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_pal.inc" +}; + +extern unsigned char plc_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char plc_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plc_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/plj_1.c b/src/data/npc/model/tex/plj_1.c new file mode 100644 index 00000000..3fe4ccb6 --- /dev/null +++ b/src/data/npc/model/tex/plj_1.c @@ -0,0 +1,64 @@ +extern unsigned short plj_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_pal.inc" +}; + +extern unsigned char plj_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char plj_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/plj_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_1.c b/src/data/npc/model/tex/rbt_1.c new file mode 100644 index 00000000..7a3b7223 --- /dev/null +++ b/src/data/npc/model/tex/rbt_1.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_pal.inc" +}; + +extern unsigned char rbt_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_10.c b/src/data/npc/model/tex/rbt_10.c new file mode 100644 index 00000000..a93ec51a --- /dev/null +++ b/src/data/npc/model/tex/rbt_10.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_pal.inc" +}; + +extern unsigned char rbt_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_11.c b/src/data/npc/model/tex/rbt_11.c new file mode 100644 index 00000000..9d49e580 --- /dev/null +++ b/src/data/npc/model/tex/rbt_11.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_pal.inc" +}; + +extern unsigned char rbt_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_2.c b/src/data/npc/model/tex/rbt_2.c new file mode 100644 index 00000000..3418cbca --- /dev/null +++ b/src/data/npc/model/tex/rbt_2.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_pal.inc" +}; + +extern unsigned char rbt_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_3.c b/src/data/npc/model/tex/rbt_3.c new file mode 100644 index 00000000..46aa417c --- /dev/null +++ b/src/data/npc/model/tex/rbt_3.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_pal.inc" +}; + +extern unsigned char rbt_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_4.c b/src/data/npc/model/tex/rbt_4.c new file mode 100644 index 00000000..79c801c4 --- /dev/null +++ b/src/data/npc/model/tex/rbt_4.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_pal.inc" +}; + +extern unsigned char rbt_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_5.c b/src/data/npc/model/tex/rbt_5.c new file mode 100644 index 00000000..701842f6 --- /dev/null +++ b/src/data/npc/model/tex/rbt_5.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_pal.inc" +}; + +extern unsigned char rbt_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_6.c b/src/data/npc/model/tex/rbt_6.c new file mode 100644 index 00000000..3d14b5b3 --- /dev/null +++ b/src/data/npc/model/tex/rbt_6.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_pal.inc" +}; + +extern unsigned char rbt_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_7.c b/src/data/npc/model/tex/rbt_7.c new file mode 100644 index 00000000..26e8ab65 --- /dev/null +++ b/src/data/npc/model/tex/rbt_7.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_pal.inc" +}; + +extern unsigned char rbt_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_8.c b/src/data/npc/model/tex/rbt_8.c new file mode 100644 index 00000000..bd7ec6ae --- /dev/null +++ b/src/data/npc/model/tex/rbt_8.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_pal.inc" +}; + +extern unsigned char rbt_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rbt_9.c b/src/data/npc/model/tex/rbt_9.c new file mode 100644 index 00000000..a90607b6 --- /dev/null +++ b/src/data/npc/model/tex/rbt_9.c @@ -0,0 +1,64 @@ +extern unsigned short rbt_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_pal.inc" +}; + +extern unsigned char rbt_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rbt_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rbt_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rcc_1.c b/src/data/npc/model/tex/rcc_1.c new file mode 100644 index 00000000..2a30862b --- /dev/null +++ b/src/data/npc/model/tex/rcc_1.c @@ -0,0 +1,40 @@ +extern unsigned short rcc_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_pal.inc" +}; + +extern unsigned char rcc_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rcc_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcc_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rcd_1.c b/src/data/npc/model/tex/rcd_1.c new file mode 100644 index 00000000..b76a9134 --- /dev/null +++ b/src/data/npc/model/tex/rcd_1.c @@ -0,0 +1,40 @@ +extern unsigned short rcd_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_pal.inc" +}; + +extern unsigned char rcd_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rcd_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcd_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rcf_1.c b/src/data/npc/model/tex/rcf_1.c new file mode 100644 index 00000000..f2664b6c --- /dev/null +++ b/src/data/npc/model/tex/rcf_1.c @@ -0,0 +1,40 @@ +extern unsigned short rcf_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_pal.inc" +}; + +extern unsigned char rcf_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rcf_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcf_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rcn_1.c b/src/data/npc/model/tex/rcn_1.c new file mode 100644 index 00000000..6199b7e8 --- /dev/null +++ b/src/data/npc/model/tex/rcn_1.c @@ -0,0 +1,40 @@ +extern unsigned short rcn_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_pal.inc" +}; + +extern unsigned char rcn_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rcn_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcn_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rcs_1.c b/src/data/npc/model/tex/rcs_1.c new file mode 100644 index 00000000..8950a82b --- /dev/null +++ b/src/data/npc/model/tex/rcs_1.c @@ -0,0 +1,40 @@ +extern unsigned short rcs_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_pal.inc" +}; + +extern unsigned char rcs_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rcs_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rcs_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rhn_1.c b/src/data/npc/model/tex/rhn_1.c new file mode 100644 index 00000000..ffc93fee --- /dev/null +++ b/src/data/npc/model/tex/rhn_1.c @@ -0,0 +1,64 @@ +extern unsigned short rhn_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_pal.inc" +}; + +extern unsigned char rhn_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rhn_2.c b/src/data/npc/model/tex/rhn_2.c new file mode 100644 index 00000000..6f2b8bc1 --- /dev/null +++ b/src/data/npc/model/tex/rhn_2.c @@ -0,0 +1,64 @@ +extern unsigned short rhn_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_pal.inc" +}; + +extern unsigned char rhn_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rhn_3.c b/src/data/npc/model/tex/rhn_3.c new file mode 100644 index 00000000..660f9de0 --- /dev/null +++ b/src/data/npc/model/tex/rhn_3.c @@ -0,0 +1,64 @@ +extern unsigned short rhn_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_pal.inc" +}; + +extern unsigned char rhn_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/rhn_4.c b/src/data/npc/model/tex/rhn_4.c new file mode 100644 index 00000000..e30f6eb9 --- /dev/null +++ b/src/data/npc/model/tex/rhn_4.c @@ -0,0 +1,64 @@ +extern unsigned short rhn_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_pal.inc" +}; + +extern unsigned char rhn_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char rhn_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/rhn_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/seg_1.c b/src/data/npc/model/tex/seg_1.c new file mode 100644 index 00000000..0c9f8c26 --- /dev/null +++ b/src/data/npc/model/tex/seg_1.c @@ -0,0 +1,40 @@ +extern unsigned short seg_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_pal.inc" +}; + +extern unsigned char seg_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char seg_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/seg_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_1.c b/src/data/npc/model/tex/shp_1.c new file mode 100644 index 00000000..691add0b --- /dev/null +++ b/src/data/npc/model/tex/shp_1.c @@ -0,0 +1,64 @@ +extern unsigned short shp_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_pal.inc" +}; + +extern unsigned char shp_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_2.c b/src/data/npc/model/tex/shp_2.c new file mode 100644 index 00000000..5258cbdb --- /dev/null +++ b/src/data/npc/model/tex/shp_2.c @@ -0,0 +1,64 @@ +extern unsigned short shp_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_pal.inc" +}; + +extern unsigned char shp_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_3.c b/src/data/npc/model/tex/shp_3.c new file mode 100644 index 00000000..517c99bf --- /dev/null +++ b/src/data/npc/model/tex/shp_3.c @@ -0,0 +1,64 @@ +extern unsigned short shp_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_pal.inc" +}; + +extern unsigned char shp_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_4.c b/src/data/npc/model/tex/shp_4.c new file mode 100644 index 00000000..dd84cfef --- /dev/null +++ b/src/data/npc/model/tex/shp_4.c @@ -0,0 +1,64 @@ +extern unsigned short shp_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_pal.inc" +}; + +extern unsigned char shp_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_5.c b/src/data/npc/model/tex/shp_5.c new file mode 100644 index 00000000..1dc98385 --- /dev/null +++ b/src/data/npc/model/tex/shp_5.c @@ -0,0 +1,64 @@ +extern unsigned short shp_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_pal.inc" +}; + +extern unsigned char shp_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/shp_6.c b/src/data/npc/model/tex/shp_6.c new file mode 100644 index 00000000..c51f1dba --- /dev/null +++ b/src/data/npc/model/tex/shp_6.c @@ -0,0 +1,64 @@ +extern unsigned short shp_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_pal.inc" +}; + +extern unsigned char shp_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char shp_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/shp_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/snt_1.c b/src/data/npc/model/tex/snt_1.c new file mode 100644 index 00000000..596b819e --- /dev/null +++ b/src/data/npc/model/tex/snt_1.c @@ -0,0 +1,64 @@ +extern unsigned short snt_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_pal.inc" +}; + +extern unsigned char snt_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char snt_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/snt_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_1.c b/src/data/npc/model/tex/squ_1.c new file mode 100644 index 00000000..ce4783ed --- /dev/null +++ b/src/data/npc/model/tex/squ_1.c @@ -0,0 +1,64 @@ +extern unsigned short squ_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_pal.inc" +}; + +extern unsigned char squ_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_10.c b/src/data/npc/model/tex/squ_10.c new file mode 100644 index 00000000..f1883b28 --- /dev/null +++ b/src/data/npc/model/tex/squ_10.c @@ -0,0 +1,64 @@ +extern unsigned short squ_10_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_pal.inc" +}; + +extern unsigned char squ_10_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_10_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_10_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_11.c b/src/data/npc/model/tex/squ_11.c new file mode 100644 index 00000000..20d7ad0b --- /dev/null +++ b/src/data/npc/model/tex/squ_11.c @@ -0,0 +1,64 @@ +extern unsigned short squ_11_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_pal.inc" +}; + +extern unsigned char squ_11_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_11_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_11_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_2.c b/src/data/npc/model/tex/squ_2.c new file mode 100644 index 00000000..d0d802aa --- /dev/null +++ b/src/data/npc/model/tex/squ_2.c @@ -0,0 +1,64 @@ +extern unsigned short squ_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_pal.inc" +}; + +extern unsigned char squ_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_3.c b/src/data/npc/model/tex/squ_3.c new file mode 100644 index 00000000..0f318ebf --- /dev/null +++ b/src/data/npc/model/tex/squ_3.c @@ -0,0 +1,64 @@ +extern unsigned short squ_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_pal.inc" +}; + +extern unsigned char squ_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_4.c b/src/data/npc/model/tex/squ_4.c new file mode 100644 index 00000000..cc60cee8 --- /dev/null +++ b/src/data/npc/model/tex/squ_4.c @@ -0,0 +1,64 @@ +extern unsigned short squ_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_pal.inc" +}; + +extern unsigned char squ_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_5.c b/src/data/npc/model/tex/squ_5.c new file mode 100644 index 00000000..9fc7098f --- /dev/null +++ b/src/data/npc/model/tex/squ_5.c @@ -0,0 +1,64 @@ +extern unsigned short squ_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_pal.inc" +}; + +extern unsigned char squ_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_6.c b/src/data/npc/model/tex/squ_6.c new file mode 100644 index 00000000..77d7e937 --- /dev/null +++ b/src/data/npc/model/tex/squ_6.c @@ -0,0 +1,64 @@ +extern unsigned short squ_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_pal.inc" +}; + +extern unsigned char squ_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_7.c b/src/data/npc/model/tex/squ_7.c new file mode 100644 index 00000000..903a7087 --- /dev/null +++ b/src/data/npc/model/tex/squ_7.c @@ -0,0 +1,64 @@ +extern unsigned short squ_7_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_pal.inc" +}; + +extern unsigned char squ_7_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_7_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_7_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_8.c b/src/data/npc/model/tex/squ_8.c new file mode 100644 index 00000000..2d63ac91 --- /dev/null +++ b/src/data/npc/model/tex/squ_8.c @@ -0,0 +1,64 @@ +extern unsigned short squ_8_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_pal.inc" +}; + +extern unsigned char squ_8_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_8_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_8_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/squ_9.c b/src/data/npc/model/tex/squ_9.c new file mode 100644 index 00000000..fed7addb --- /dev/null +++ b/src/data/npc/model/tex/squ_9.c @@ -0,0 +1,64 @@ +extern unsigned short squ_9_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_pal.inc" +}; + +extern unsigned char squ_9_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye1_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye2_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye3_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye4_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye5_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye6_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye7_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_eye8_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char squ_9_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/squ_9_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/tig_1.c b/src/data/npc/model/tex/tig_1.c new file mode 100644 index 00000000..6d7d7acd --- /dev/null +++ b/src/data/npc/model/tex/tig_1.c @@ -0,0 +1,40 @@ +extern unsigned short tig_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_pal.inc" +}; + +extern unsigned char tig_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char tig_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/tig_2.c b/src/data/npc/model/tex/tig_2.c new file mode 100644 index 00000000..e9ac283e --- /dev/null +++ b/src/data/npc/model/tex/tig_2.c @@ -0,0 +1,40 @@ +extern unsigned short tig_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_pal.inc" +}; + +extern unsigned char tig_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char tig_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/tig_3.c b/src/data/npc/model/tex/tig_3.c new file mode 100644 index 00000000..a08b3375 --- /dev/null +++ b/src/data/npc/model/tex/tig_3.c @@ -0,0 +1,40 @@ +extern unsigned short tig_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_pal.inc" +}; + +extern unsigned char tig_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char tig_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/tig_4.c b/src/data/npc/model/tex/tig_4.c new file mode 100644 index 00000000..226ff941 --- /dev/null +++ b/src/data/npc/model/tex/tig_4.c @@ -0,0 +1,40 @@ +extern unsigned short tig_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_pal.inc" +}; + +extern unsigned char tig_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char tig_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tig_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/ttl_1.c b/src/data/npc/model/tex/ttl_1.c new file mode 100644 index 00000000..af635d14 --- /dev/null +++ b/src/data/npc/model/tex/ttl_1.c @@ -0,0 +1,40 @@ +extern unsigned short ttl_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_pal.inc" +}; + +extern unsigned char ttl_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char ttl_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/ttl_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/tuk_1.c b/src/data/npc/model/tex/tuk_1.c new file mode 100644 index 00000000..81645e1b --- /dev/null +++ b/src/data/npc/model/tex/tuk_1.c @@ -0,0 +1,40 @@ +extern unsigned short tuk_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_pal.inc" +}; + +extern unsigned char tuk_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char tuk_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/tuk_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wip_1.c b/src/data/npc/model/tex/wip_1.c new file mode 100644 index 00000000..15ca7c87 --- /dev/null +++ b/src/data/npc/model/tex/wip_1.c @@ -0,0 +1,64 @@ +extern unsigned short wip_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_pal.inc" +}; + +extern unsigned char wip_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char wip_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wip_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wls_1.c b/src/data/npc/model/tex/wls_1.c new file mode 100644 index 00000000..6524282b --- /dev/null +++ b/src/data/npc/model/tex/wls_1.c @@ -0,0 +1,40 @@ +extern unsigned short wls_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_pal.inc" +}; + +extern unsigned char wls_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wls_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wls_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_1.c b/src/data/npc/model/tex/wol_1.c new file mode 100644 index 00000000..66002fc4 --- /dev/null +++ b/src/data/npc/model/tex/wol_1.c @@ -0,0 +1,40 @@ +extern unsigned short wol_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_pal.inc" +}; + +extern unsigned char wol_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_2.c b/src/data/npc/model/tex/wol_2.c new file mode 100644 index 00000000..fcc88c43 --- /dev/null +++ b/src/data/npc/model/tex/wol_2.c @@ -0,0 +1,40 @@ +extern unsigned short wol_2_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_pal.inc" +}; + +extern unsigned char wol_2_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_2_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_2_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_3.c b/src/data/npc/model/tex/wol_3.c new file mode 100644 index 00000000..620a54d0 --- /dev/null +++ b/src/data/npc/model/tex/wol_3.c @@ -0,0 +1,40 @@ +extern unsigned short wol_3_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_pal.inc" +}; + +extern unsigned char wol_3_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_3_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_3_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_4.c b/src/data/npc/model/tex/wol_4.c new file mode 100644 index 00000000..c77b05b1 --- /dev/null +++ b/src/data/npc/model/tex/wol_4.c @@ -0,0 +1,40 @@ +extern unsigned short wol_4_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_pal.inc" +}; + +extern unsigned char wol_4_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_4_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_4_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_5.c b/src/data/npc/model/tex/wol_5.c new file mode 100644 index 00000000..34b96cc1 --- /dev/null +++ b/src/data/npc/model/tex/wol_5.c @@ -0,0 +1,40 @@ +extern unsigned short wol_5_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_pal.inc" +}; + +extern unsigned char wol_5_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_5_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_5_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/wol_6.c b/src/data/npc/model/tex/wol_6.c new file mode 100644 index 00000000..b8f99f76 --- /dev/null +++ b/src/data/npc/model/tex/wol_6.c @@ -0,0 +1,40 @@ +extern unsigned short wol_6_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_pal.inc" +}; + +extern unsigned char wol_6_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye1_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye2_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye3_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye4_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye5_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye6_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye7_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_eye8_TA_tex_txt.inc" +}; + +extern unsigned char wol_6_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/wol_6_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/xct_1.c b/src/data/npc/model/tex/xct_1.c new file mode 100644 index 00000000..d4eadb74 --- /dev/null +++ b/src/data/npc/model/tex/xct_1.c @@ -0,0 +1,64 @@ +extern unsigned short xct_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_pal.inc" +}; + +extern unsigned char xct_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char xct_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xct_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/model/tex/xsq_1.c b/src/data/npc/model/tex/xsq_1.c new file mode 100644 index 00000000..729f64be --- /dev/null +++ b/src/data/npc/model/tex/xsq_1.c @@ -0,0 +1,64 @@ +extern unsigned short xsq_1_pal[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_pal.inc" +}; + +extern unsigned char xsq_1_eye1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye1_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye2_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye3_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye4_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye5_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye6_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye7_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye7_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_eye8_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_eye8_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth1_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth1_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth2_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth2_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth3_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth3_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth4_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth4_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth5_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth5_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_mouth6_TA_tex_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_mouth6_TA_tex_txt.inc" +}; + +extern unsigned char xsq_1_tmem_txt[] __attribute__((aligned(32))) = { +#include "assets/npc/tex/xsq_1_tmem_txt.inc" +}; + diff --git a/src/data/npc/npc_draw_data.c b/src/data/npc/npc_draw_data.c new file mode 100644 index 00000000..332ab5b0 --- /dev/null +++ b/src/data/npc/npc_draw_data.c @@ -0,0 +1,21349 @@ +#include "ac_npc.h" + +extern cKF_Skeleton_R_c cKF_bs_r_cat_1; +extern unsigned short cat_1_pal[]; +extern unsigned char cat_1_eye1_TA_tex_txt[]; +extern unsigned char cat_1_eye2_TA_tex_txt[]; +extern unsigned char cat_1_eye3_TA_tex_txt[]; +extern unsigned char cat_1_eye4_TA_tex_txt[]; +extern unsigned char cat_1_eye5_TA_tex_txt[]; +extern unsigned char cat_1_eye6_TA_tex_txt[]; +extern unsigned char cat_1_eye7_TA_tex_txt[]; +extern unsigned char cat_1_eye8_TA_tex_txt[]; +extern unsigned char cat_1_mouth1_TA_tex_txt[]; +extern unsigned char cat_1_mouth2_TA_tex_txt[]; +extern unsigned char cat_1_mouth3_TA_tex_txt[]; +extern unsigned char cat_1_mouth4_TA_tex_txt[]; +extern unsigned char cat_1_mouth5_TA_tex_txt[]; +extern unsigned char cat_1_mouth6_TA_tex_txt[]; +extern unsigned char cat_1_tmem_txt[]; +extern unsigned short cat_2_pal[]; +extern unsigned char cat_2_eye1_TA_tex_txt[]; +extern unsigned char cat_2_eye2_TA_tex_txt[]; +extern unsigned char cat_2_eye3_TA_tex_txt[]; +extern unsigned char cat_2_eye4_TA_tex_txt[]; +extern unsigned char cat_2_eye5_TA_tex_txt[]; +extern unsigned char cat_2_eye6_TA_tex_txt[]; +extern unsigned char cat_2_eye7_TA_tex_txt[]; +extern unsigned char cat_2_eye8_TA_tex_txt[]; +extern unsigned char cat_2_mouth1_TA_tex_txt[]; +extern unsigned char cat_2_mouth2_TA_tex_txt[]; +extern unsigned char cat_2_mouth3_TA_tex_txt[]; +extern unsigned char cat_2_mouth4_TA_tex_txt[]; +extern unsigned char cat_2_mouth5_TA_tex_txt[]; +extern unsigned char cat_2_mouth6_TA_tex_txt[]; +extern unsigned char cat_2_tmem_txt[]; +extern unsigned short cat_3_pal[]; +extern unsigned char cat_3_eye1_TA_tex_txt[]; +extern unsigned char cat_3_eye2_TA_tex_txt[]; +extern unsigned char cat_3_eye3_TA_tex_txt[]; +extern unsigned char cat_3_eye4_TA_tex_txt[]; +extern unsigned char cat_3_eye5_TA_tex_txt[]; +extern unsigned char cat_3_eye6_TA_tex_txt[]; +extern unsigned char cat_3_eye7_TA_tex_txt[]; +extern unsigned char cat_3_eye8_TA_tex_txt[]; +extern unsigned char cat_3_mouth1_TA_tex_txt[]; +extern unsigned char cat_3_mouth2_TA_tex_txt[]; +extern unsigned char cat_3_mouth3_TA_tex_txt[]; +extern unsigned char cat_3_mouth4_TA_tex_txt[]; +extern unsigned char cat_3_mouth5_TA_tex_txt[]; +extern unsigned char cat_3_mouth6_TA_tex_txt[]; +extern unsigned char cat_3_tmem_txt[]; +extern unsigned short cat_4_pal[]; +extern unsigned char cat_4_eye1_TA_tex_txt[]; +extern unsigned char cat_4_eye2_TA_tex_txt[]; +extern unsigned char cat_4_eye3_TA_tex_txt[]; +extern unsigned char cat_4_eye4_TA_tex_txt[]; +extern unsigned char cat_4_eye5_TA_tex_txt[]; +extern unsigned char cat_4_eye6_TA_tex_txt[]; +extern unsigned char cat_4_eye7_TA_tex_txt[]; +extern unsigned char cat_4_eye8_TA_tex_txt[]; +extern unsigned char cat_4_mouth1_TA_tex_txt[]; +extern unsigned char cat_4_mouth2_TA_tex_txt[]; +extern unsigned char cat_4_mouth3_TA_tex_txt[]; +extern unsigned char cat_4_mouth4_TA_tex_txt[]; +extern unsigned char cat_4_mouth5_TA_tex_txt[]; +extern unsigned char cat_4_mouth6_TA_tex_txt[]; +extern unsigned char cat_4_tmem_txt[]; +extern unsigned short cat_5_pal[]; +extern unsigned char cat_5_eye1_TA_tex_txt[]; +extern unsigned char cat_5_eye2_TA_tex_txt[]; +extern unsigned char cat_5_eye3_TA_tex_txt[]; +extern unsigned char cat_5_eye4_TA_tex_txt[]; +extern unsigned char cat_5_eye5_TA_tex_txt[]; +extern unsigned char cat_5_eye6_TA_tex_txt[]; +extern unsigned char cat_5_eye7_TA_tex_txt[]; +extern unsigned char cat_5_eye8_TA_tex_txt[]; +extern unsigned char cat_5_mouth1_TA_tex_txt[]; +extern unsigned char cat_5_mouth2_TA_tex_txt[]; +extern unsigned char cat_5_mouth3_TA_tex_txt[]; +extern unsigned char cat_5_mouth4_TA_tex_txt[]; +extern unsigned char cat_5_mouth5_TA_tex_txt[]; +extern unsigned char cat_5_mouth6_TA_tex_txt[]; +extern unsigned char cat_5_tmem_txt[]; +extern unsigned short cat_6_pal[]; +extern unsigned char cat_6_eye1_TA_tex_txt[]; +extern unsigned char cat_6_eye2_TA_tex_txt[]; +extern unsigned char cat_6_eye3_TA_tex_txt[]; +extern unsigned char cat_6_eye4_TA_tex_txt[]; +extern unsigned char cat_6_eye5_TA_tex_txt[]; +extern unsigned char cat_6_eye6_TA_tex_txt[]; +extern unsigned char cat_6_eye7_TA_tex_txt[]; +extern unsigned char cat_6_eye8_TA_tex_txt[]; +extern unsigned char cat_6_mouth1_TA_tex_txt[]; +extern unsigned char cat_6_mouth2_TA_tex_txt[]; +extern unsigned char cat_6_mouth3_TA_tex_txt[]; +extern unsigned char cat_6_mouth4_TA_tex_txt[]; +extern unsigned char cat_6_mouth5_TA_tex_txt[]; +extern unsigned char cat_6_mouth6_TA_tex_txt[]; +extern unsigned char cat_6_tmem_txt[]; +extern unsigned short cat_7_pal[]; +extern unsigned char cat_7_eye1_TA_tex_txt[]; +extern unsigned char cat_7_eye2_TA_tex_txt[]; +extern unsigned char cat_7_eye3_TA_tex_txt[]; +extern unsigned char cat_7_eye4_TA_tex_txt[]; +extern unsigned char cat_7_eye5_TA_tex_txt[]; +extern unsigned char cat_7_eye6_TA_tex_txt[]; +extern unsigned char cat_7_eye7_TA_tex_txt[]; +extern unsigned char cat_7_eye8_TA_tex_txt[]; +extern unsigned char cat_7_mouth1_TA_tex_txt[]; +extern unsigned char cat_7_mouth2_TA_tex_txt[]; +extern unsigned char cat_7_mouth3_TA_tex_txt[]; +extern unsigned char cat_7_mouth4_TA_tex_txt[]; +extern unsigned char cat_7_mouth5_TA_tex_txt[]; +extern unsigned char cat_7_mouth6_TA_tex_txt[]; +extern unsigned char cat_7_tmem_txt[]; +extern unsigned short cat_8_pal[]; +extern unsigned char cat_8_eye1_TA_tex_txt[]; +extern unsigned char cat_8_eye2_TA_tex_txt[]; +extern unsigned char cat_8_eye3_TA_tex_txt[]; +extern unsigned char cat_8_eye4_TA_tex_txt[]; +extern unsigned char cat_8_eye5_TA_tex_txt[]; +extern unsigned char cat_8_eye6_TA_tex_txt[]; +extern unsigned char cat_8_eye7_TA_tex_txt[]; +extern unsigned char cat_8_eye8_TA_tex_txt[]; +extern unsigned char cat_8_mouth1_TA_tex_txt[]; +extern unsigned char cat_8_mouth2_TA_tex_txt[]; +extern unsigned char cat_8_mouth3_TA_tex_txt[]; +extern unsigned char cat_8_mouth4_TA_tex_txt[]; +extern unsigned char cat_8_mouth5_TA_tex_txt[]; +extern unsigned char cat_8_mouth6_TA_tex_txt[]; +extern unsigned char cat_8_tmem_txt[]; +extern unsigned short cat_9_pal[]; +extern unsigned char cat_9_eye1_TA_tex_txt[]; +extern unsigned char cat_9_eye2_TA_tex_txt[]; +extern unsigned char cat_9_eye3_TA_tex_txt[]; +extern unsigned char cat_9_eye4_TA_tex_txt[]; +extern unsigned char cat_9_eye5_TA_tex_txt[]; +extern unsigned char cat_9_eye6_TA_tex_txt[]; +extern unsigned char cat_9_eye7_TA_tex_txt[]; +extern unsigned char cat_9_eye8_TA_tex_txt[]; +extern unsigned char cat_9_mouth1_TA_tex_txt[]; +extern unsigned char cat_9_mouth2_TA_tex_txt[]; +extern unsigned char cat_9_mouth3_TA_tex_txt[]; +extern unsigned char cat_9_mouth4_TA_tex_txt[]; +extern unsigned char cat_9_mouth5_TA_tex_txt[]; +extern unsigned char cat_9_mouth6_TA_tex_txt[]; +extern unsigned char cat_9_tmem_txt[]; +extern unsigned short cat_10_pal[]; +extern unsigned char cat_10_eye1_TA_tex_txt[]; +extern unsigned char cat_10_eye2_TA_tex_txt[]; +extern unsigned char cat_10_eye3_TA_tex_txt[]; +extern unsigned char cat_10_eye4_TA_tex_txt[]; +extern unsigned char cat_10_eye5_TA_tex_txt[]; +extern unsigned char cat_10_eye6_TA_tex_txt[]; +extern unsigned char cat_10_eye7_TA_tex_txt[]; +extern unsigned char cat_10_eye8_TA_tex_txt[]; +extern unsigned char cat_10_mouth1_TA_tex_txt[]; +extern unsigned char cat_10_mouth2_TA_tex_txt[]; +extern unsigned char cat_10_mouth3_TA_tex_txt[]; +extern unsigned char cat_10_mouth4_TA_tex_txt[]; +extern unsigned char cat_10_mouth5_TA_tex_txt[]; +extern unsigned char cat_10_mouth6_TA_tex_txt[]; +extern unsigned char cat_10_tmem_txt[]; +extern unsigned short cat_11_pal[]; +extern unsigned char cat_11_eye1_TA_tex_txt[]; +extern unsigned char cat_11_eye2_TA_tex_txt[]; +extern unsigned char cat_11_eye3_TA_tex_txt[]; +extern unsigned char cat_11_eye4_TA_tex_txt[]; +extern unsigned char cat_11_eye5_TA_tex_txt[]; +extern unsigned char cat_11_eye6_TA_tex_txt[]; +extern unsigned char cat_11_eye7_TA_tex_txt[]; +extern unsigned char cat_11_eye8_TA_tex_txt[]; +extern unsigned char cat_11_mouth1_TA_tex_txt[]; +extern unsigned char cat_11_mouth2_TA_tex_txt[]; +extern unsigned char cat_11_mouth3_TA_tex_txt[]; +extern unsigned char cat_11_mouth4_TA_tex_txt[]; +extern unsigned char cat_11_mouth5_TA_tex_txt[]; +extern unsigned char cat_11_mouth6_TA_tex_txt[]; +extern unsigned char cat_11_tmem_txt[]; +extern unsigned short cat_12_pal[]; +extern unsigned char cat_12_eye1_TA_tex_txt[]; +extern unsigned char cat_12_eye2_TA_tex_txt[]; +extern unsigned char cat_12_eye3_TA_tex_txt[]; +extern unsigned char cat_12_eye4_TA_tex_txt[]; +extern unsigned char cat_12_eye5_TA_tex_txt[]; +extern unsigned char cat_12_eye6_TA_tex_txt[]; +extern unsigned char cat_12_eye7_TA_tex_txt[]; +extern unsigned char cat_12_eye8_TA_tex_txt[]; +extern unsigned char cat_12_mouth1_TA_tex_txt[]; +extern unsigned char cat_12_mouth2_TA_tex_txt[]; +extern unsigned char cat_12_mouth3_TA_tex_txt[]; +extern unsigned char cat_12_mouth4_TA_tex_txt[]; +extern unsigned char cat_12_mouth5_TA_tex_txt[]; +extern unsigned char cat_12_mouth6_TA_tex_txt[]; +extern unsigned char cat_12_tmem_txt[]; +extern unsigned short cat_13_pal[]; +extern unsigned char cat_13_eye1_TA_tex_txt[]; +extern unsigned char cat_13_eye2_TA_tex_txt[]; +extern unsigned char cat_13_eye3_TA_tex_txt[]; +extern unsigned char cat_13_eye4_TA_tex_txt[]; +extern unsigned char cat_13_eye5_TA_tex_txt[]; +extern unsigned char cat_13_eye6_TA_tex_txt[]; +extern unsigned char cat_13_eye7_TA_tex_txt[]; +extern unsigned char cat_13_eye8_TA_tex_txt[]; +extern unsigned char cat_13_mouth1_TA_tex_txt[]; +extern unsigned char cat_13_mouth2_TA_tex_txt[]; +extern unsigned char cat_13_mouth3_TA_tex_txt[]; +extern unsigned char cat_13_mouth4_TA_tex_txt[]; +extern unsigned char cat_13_mouth5_TA_tex_txt[]; +extern unsigned char cat_13_mouth6_TA_tex_txt[]; +extern unsigned char cat_13_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_ant_1; +extern unsigned short ant_1_pal[]; +extern unsigned char ant_1_eye1_TA_tex_txt[]; +extern unsigned char ant_1_eye2_TA_tex_txt[]; +extern unsigned char ant_1_eye3_TA_tex_txt[]; +extern unsigned char ant_1_eye4_TA_tex_txt[]; +extern unsigned char ant_1_eye5_TA_tex_txt[]; +extern unsigned char ant_1_eye6_TA_tex_txt[]; +extern unsigned char ant_1_eye7_TA_tex_txt[]; +extern unsigned char ant_1_eye8_TA_tex_txt[]; +extern unsigned char ant_1_tmem_txt[]; +extern unsigned short ant_2_pal[]; +extern unsigned char ant_2_eye1_TA_tex_txt[]; +extern unsigned char ant_2_eye2_TA_tex_txt[]; +extern unsigned char ant_2_eye3_TA_tex_txt[]; +extern unsigned char ant_2_eye4_TA_tex_txt[]; +extern unsigned char ant_2_eye5_TA_tex_txt[]; +extern unsigned char ant_2_eye6_TA_tex_txt[]; +extern unsigned char ant_2_eye7_TA_tex_txt[]; +extern unsigned char ant_2_eye8_TA_tex_txt[]; +extern unsigned char ant_2_tmem_txt[]; +extern unsigned short ant_3_pal[]; +extern unsigned char ant_3_eye1_TA_tex_txt[]; +extern unsigned char ant_3_eye2_TA_tex_txt[]; +extern unsigned char ant_3_eye3_TA_tex_txt[]; +extern unsigned char ant_3_eye4_TA_tex_txt[]; +extern unsigned char ant_3_eye5_TA_tex_txt[]; +extern unsigned char ant_3_eye6_TA_tex_txt[]; +extern unsigned char ant_3_eye7_TA_tex_txt[]; +extern unsigned char ant_3_eye8_TA_tex_txt[]; +extern unsigned char ant_3_tmem_txt[]; +extern unsigned short ant_4_pal[]; +extern unsigned char ant_4_eye1_TA_tex_txt[]; +extern unsigned char ant_4_eye2_TA_tex_txt[]; +extern unsigned char ant_4_eye3_TA_tex_txt[]; +extern unsigned char ant_4_eye4_TA_tex_txt[]; +extern unsigned char ant_4_eye5_TA_tex_txt[]; +extern unsigned char ant_4_eye6_TA_tex_txt[]; +extern unsigned char ant_4_eye7_TA_tex_txt[]; +extern unsigned char ant_4_eye8_TA_tex_txt[]; +extern unsigned char ant_4_tmem_txt[]; +extern unsigned short ant_5_pal[]; +extern unsigned char ant_5_eye1_TA_tex_txt[]; +extern unsigned char ant_5_eye2_TA_tex_txt[]; +extern unsigned char ant_5_eye3_TA_tex_txt[]; +extern unsigned char ant_5_eye4_TA_tex_txt[]; +extern unsigned char ant_5_eye5_TA_tex_txt[]; +extern unsigned char ant_5_eye6_TA_tex_txt[]; +extern unsigned char ant_5_eye7_TA_tex_txt[]; +extern unsigned char ant_5_eye8_TA_tex_txt[]; +extern unsigned char ant_5_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_bea_1; +extern unsigned short bea_1_pal[]; +extern unsigned char bea_1_eye1_TA_tex_txt[]; +extern unsigned char bea_1_eye2_TA_tex_txt[]; +extern unsigned char bea_1_eye3_TA_tex_txt[]; +extern unsigned char bea_1_eye4_TA_tex_txt[]; +extern unsigned char bea_1_eye5_TA_tex_txt[]; +extern unsigned char bea_1_eye6_TA_tex_txt[]; +extern unsigned char bea_1_eye7_TA_tex_txt[]; +extern unsigned char bea_1_eye8_TA_tex_txt[]; +extern unsigned char bea_1_mouth1_TA_tex_txt[]; +extern unsigned char bea_1_mouth2_TA_tex_txt[]; +extern unsigned char bea_1_mouth3_TA_tex_txt[]; +extern unsigned char bea_1_mouth4_TA_tex_txt[]; +extern unsigned char bea_1_mouth5_TA_tex_txt[]; +extern unsigned char bea_1_mouth6_TA_tex_txt[]; +extern unsigned char bea_1_tmem_txt[]; +extern unsigned short bea_2_pal[]; +extern unsigned char bea_2_eye1_TA_tex_txt[]; +extern unsigned char bea_2_eye2_TA_tex_txt[]; +extern unsigned char bea_2_eye3_TA_tex_txt[]; +extern unsigned char bea_2_eye4_TA_tex_txt[]; +extern unsigned char bea_2_eye5_TA_tex_txt[]; +extern unsigned char bea_2_eye6_TA_tex_txt[]; +extern unsigned char bea_2_eye7_TA_tex_txt[]; +extern unsigned char bea_2_eye8_TA_tex_txt[]; +extern unsigned char bea_2_mouth1_TA_tex_txt[]; +extern unsigned char bea_2_mouth2_TA_tex_txt[]; +extern unsigned char bea_2_mouth3_TA_tex_txt[]; +extern unsigned char bea_2_mouth4_TA_tex_txt[]; +extern unsigned char bea_2_mouth5_TA_tex_txt[]; +extern unsigned char bea_2_mouth6_TA_tex_txt[]; +extern unsigned char bea_2_tmem_txt[]; +extern unsigned short bea_3_pal[]; +extern unsigned char bea_3_eye1_TA_tex_txt[]; +extern unsigned char bea_3_eye2_TA_tex_txt[]; +extern unsigned char bea_3_eye3_TA_tex_txt[]; +extern unsigned char bea_3_eye4_TA_tex_txt[]; +extern unsigned char bea_3_eye5_TA_tex_txt[]; +extern unsigned char bea_3_eye6_TA_tex_txt[]; +extern unsigned char bea_3_eye7_TA_tex_txt[]; +extern unsigned char bea_3_eye8_TA_tex_txt[]; +extern unsigned char bea_3_mouth1_TA_tex_txt[]; +extern unsigned char bea_3_mouth2_TA_tex_txt[]; +extern unsigned char bea_3_mouth3_TA_tex_txt[]; +extern unsigned char bea_3_mouth4_TA_tex_txt[]; +extern unsigned char bea_3_mouth5_TA_tex_txt[]; +extern unsigned char bea_3_mouth6_TA_tex_txt[]; +extern unsigned char bea_3_tmem_txt[]; +extern unsigned short bea_5_pal[]; +extern unsigned char bea_5_eye1_TA_tex_txt[]; +extern unsigned char bea_5_eye2_TA_tex_txt[]; +extern unsigned char bea_5_eye3_TA_tex_txt[]; +extern unsigned char bea_5_eye4_TA_tex_txt[]; +extern unsigned char bea_5_eye5_TA_tex_txt[]; +extern unsigned char bea_5_eye6_TA_tex_txt[]; +extern unsigned char bea_5_eye7_TA_tex_txt[]; +extern unsigned char bea_5_eye8_TA_tex_txt[]; +extern unsigned char bea_5_mouth1_TA_tex_txt[]; +extern unsigned char bea_5_mouth2_TA_tex_txt[]; +extern unsigned char bea_5_mouth3_TA_tex_txt[]; +extern unsigned char bea_5_mouth4_TA_tex_txt[]; +extern unsigned char bea_5_mouth5_TA_tex_txt[]; +extern unsigned char bea_5_mouth6_TA_tex_txt[]; +extern unsigned char bea_5_tmem_txt[]; +extern unsigned short bea_6_pal[]; +extern unsigned char bea_6_eye1_TA_tex_txt[]; +extern unsigned char bea_6_eye2_TA_tex_txt[]; +extern unsigned char bea_6_eye3_TA_tex_txt[]; +extern unsigned char bea_6_eye4_TA_tex_txt[]; +extern unsigned char bea_6_eye5_TA_tex_txt[]; +extern unsigned char bea_6_eye6_TA_tex_txt[]; +extern unsigned char bea_6_eye7_TA_tex_txt[]; +extern unsigned char bea_6_eye8_TA_tex_txt[]; +extern unsigned char bea_6_mouth1_TA_tex_txt[]; +extern unsigned char bea_6_mouth2_TA_tex_txt[]; +extern unsigned char bea_6_mouth3_TA_tex_txt[]; +extern unsigned char bea_6_mouth4_TA_tex_txt[]; +extern unsigned char bea_6_mouth5_TA_tex_txt[]; +extern unsigned char bea_6_mouth6_TA_tex_txt[]; +extern unsigned char bea_6_tmem_txt[]; +extern unsigned short bea_7_pal[]; +extern unsigned char bea_7_eye1_TA_tex_txt[]; +extern unsigned char bea_7_eye2_TA_tex_txt[]; +extern unsigned char bea_7_eye3_TA_tex_txt[]; +extern unsigned char bea_7_eye4_TA_tex_txt[]; +extern unsigned char bea_7_eye5_TA_tex_txt[]; +extern unsigned char bea_7_eye6_TA_tex_txt[]; +extern unsigned char bea_7_eye7_TA_tex_txt[]; +extern unsigned char bea_7_eye8_TA_tex_txt[]; +extern unsigned char bea_7_mouth1_TA_tex_txt[]; +extern unsigned char bea_7_mouth2_TA_tex_txt[]; +extern unsigned char bea_7_mouth3_TA_tex_txt[]; +extern unsigned char bea_7_mouth4_TA_tex_txt[]; +extern unsigned char bea_7_mouth5_TA_tex_txt[]; +extern unsigned char bea_7_mouth6_TA_tex_txt[]; +extern unsigned char bea_7_tmem_txt[]; +extern unsigned short bea_8_pal[]; +extern unsigned char bea_8_eye1_TA_tex_txt[]; +extern unsigned char bea_8_eye2_TA_tex_txt[]; +extern unsigned char bea_8_eye3_TA_tex_txt[]; +extern unsigned char bea_8_eye4_TA_tex_txt[]; +extern unsigned char bea_8_eye5_TA_tex_txt[]; +extern unsigned char bea_8_eye6_TA_tex_txt[]; +extern unsigned char bea_8_eye7_TA_tex_txt[]; +extern unsigned char bea_8_eye8_TA_tex_txt[]; +extern unsigned char bea_8_mouth1_TA_tex_txt[]; +extern unsigned char bea_8_mouth2_TA_tex_txt[]; +extern unsigned char bea_8_mouth3_TA_tex_txt[]; +extern unsigned char bea_8_mouth4_TA_tex_txt[]; +extern unsigned char bea_8_mouth5_TA_tex_txt[]; +extern unsigned char bea_8_mouth6_TA_tex_txt[]; +extern unsigned char bea_8_tmem_txt[]; +extern unsigned short bea_9_pal[]; +extern unsigned char bea_9_eye1_TA_tex_txt[]; +extern unsigned char bea_9_eye2_TA_tex_txt[]; +extern unsigned char bea_9_eye3_TA_tex_txt[]; +extern unsigned char bea_9_eye4_TA_tex_txt[]; +extern unsigned char bea_9_eye5_TA_tex_txt[]; +extern unsigned char bea_9_eye6_TA_tex_txt[]; +extern unsigned char bea_9_eye7_TA_tex_txt[]; +extern unsigned char bea_9_eye8_TA_tex_txt[]; +extern unsigned char bea_9_mouth1_TA_tex_txt[]; +extern unsigned char bea_9_mouth2_TA_tex_txt[]; +extern unsigned char bea_9_mouth3_TA_tex_txt[]; +extern unsigned char bea_9_mouth4_TA_tex_txt[]; +extern unsigned char bea_9_mouth5_TA_tex_txt[]; +extern unsigned char bea_9_mouth6_TA_tex_txt[]; +extern unsigned char bea_9_tmem_txt[]; +extern unsigned short bea_10_pal[]; +extern unsigned char bea_10_eye1_TA_tex_txt[]; +extern unsigned char bea_10_eye2_TA_tex_txt[]; +extern unsigned char bea_10_eye3_TA_tex_txt[]; +extern unsigned char bea_10_eye4_TA_tex_txt[]; +extern unsigned char bea_10_eye5_TA_tex_txt[]; +extern unsigned char bea_10_eye6_TA_tex_txt[]; +extern unsigned char bea_10_eye7_TA_tex_txt[]; +extern unsigned char bea_10_eye8_TA_tex_txt[]; +extern unsigned char bea_10_mouth1_TA_tex_txt[]; +extern unsigned char bea_10_mouth2_TA_tex_txt[]; +extern unsigned char bea_10_mouth3_TA_tex_txt[]; +extern unsigned char bea_10_mouth4_TA_tex_txt[]; +extern unsigned char bea_10_mouth5_TA_tex_txt[]; +extern unsigned char bea_10_mouth6_TA_tex_txt[]; +extern unsigned char bea_10_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_brd_1; +extern unsigned short brd_1_pal[]; +extern unsigned char brd_1_eye1_TA_tex_txt[]; +extern unsigned char brd_1_eye2_TA_tex_txt[]; +extern unsigned char brd_1_eye3_TA_tex_txt[]; +extern unsigned char brd_1_eye4_TA_tex_txt[]; +extern unsigned char brd_1_eye5_TA_tex_txt[]; +extern unsigned char brd_1_eye6_TA_tex_txt[]; +extern unsigned char brd_1_eye7_TA_tex_txt[]; +extern unsigned char brd_1_eye8_TA_tex_txt[]; +extern unsigned char brd_1_tmem_txt[]; +extern unsigned short brd_2_pal[]; +extern unsigned char brd_2_eye1_TA_tex_txt[]; +extern unsigned char brd_2_eye2_TA_tex_txt[]; +extern unsigned char brd_2_eye3_TA_tex_txt[]; +extern unsigned char brd_2_eye4_TA_tex_txt[]; +extern unsigned char brd_2_eye5_TA_tex_txt[]; +extern unsigned char brd_2_eye6_TA_tex_txt[]; +extern unsigned char brd_2_eye7_TA_tex_txt[]; +extern unsigned char brd_2_eye8_TA_tex_txt[]; +extern unsigned char brd_2_tmem_txt[]; +extern unsigned short brd_3_pal[]; +extern unsigned char brd_3_eye1_TA_tex_txt[]; +extern unsigned char brd_3_eye2_TA_tex_txt[]; +extern unsigned char brd_3_eye3_TA_tex_txt[]; +extern unsigned char brd_3_eye4_TA_tex_txt[]; +extern unsigned char brd_3_eye5_TA_tex_txt[]; +extern unsigned char brd_3_eye6_TA_tex_txt[]; +extern unsigned char brd_3_eye7_TA_tex_txt[]; +extern unsigned char brd_3_eye8_TA_tex_txt[]; +extern unsigned char brd_3_tmem_txt[]; +extern unsigned short brd_4_pal[]; +extern unsigned char brd_4_eye1_TA_tex_txt[]; +extern unsigned char brd_4_eye2_TA_tex_txt[]; +extern unsigned char brd_4_eye3_TA_tex_txt[]; +extern unsigned char brd_4_eye4_TA_tex_txt[]; +extern unsigned char brd_4_eye5_TA_tex_txt[]; +extern unsigned char brd_4_eye6_TA_tex_txt[]; +extern unsigned char brd_4_eye7_TA_tex_txt[]; +extern unsigned char brd_4_eye8_TA_tex_txt[]; +extern unsigned char brd_4_tmem_txt[]; +extern unsigned short brd_5_pal[]; +extern unsigned char brd_5_eye1_TA_tex_txt[]; +extern unsigned char brd_5_eye2_TA_tex_txt[]; +extern unsigned char brd_5_eye3_TA_tex_txt[]; +extern unsigned char brd_5_eye4_TA_tex_txt[]; +extern unsigned char brd_5_eye5_TA_tex_txt[]; +extern unsigned char brd_5_eye6_TA_tex_txt[]; +extern unsigned char brd_5_eye7_TA_tex_txt[]; +extern unsigned char brd_5_eye8_TA_tex_txt[]; +extern unsigned char brd_5_tmem_txt[]; +extern unsigned short brd_6_pal[]; +extern unsigned char brd_6_eye1_TA_tex_txt[]; +extern unsigned char brd_6_eye2_TA_tex_txt[]; +extern unsigned char brd_6_eye3_TA_tex_txt[]; +extern unsigned char brd_6_eye4_TA_tex_txt[]; +extern unsigned char brd_6_eye5_TA_tex_txt[]; +extern unsigned char brd_6_eye6_TA_tex_txt[]; +extern unsigned char brd_6_eye7_TA_tex_txt[]; +extern unsigned char brd_6_eye8_TA_tex_txt[]; +extern unsigned char brd_6_tmem_txt[]; +extern unsigned short brd_7_pal[]; +extern unsigned char brd_7_eye1_TA_tex_txt[]; +extern unsigned char brd_7_eye2_TA_tex_txt[]; +extern unsigned char brd_7_eye3_TA_tex_txt[]; +extern unsigned char brd_7_eye4_TA_tex_txt[]; +extern unsigned char brd_7_eye5_TA_tex_txt[]; +extern unsigned char brd_7_eye6_TA_tex_txt[]; +extern unsigned char brd_7_eye7_TA_tex_txt[]; +extern unsigned char brd_7_eye8_TA_tex_txt[]; +extern unsigned char brd_7_tmem_txt[]; +extern unsigned short brd_8_pal[]; +extern unsigned char brd_8_eye1_TA_tex_txt[]; +extern unsigned char brd_8_eye2_TA_tex_txt[]; +extern unsigned char brd_8_eye3_TA_tex_txt[]; +extern unsigned char brd_8_eye4_TA_tex_txt[]; +extern unsigned char brd_8_eye5_TA_tex_txt[]; +extern unsigned char brd_8_eye6_TA_tex_txt[]; +extern unsigned char brd_8_eye7_TA_tex_txt[]; +extern unsigned char brd_8_eye8_TA_tex_txt[]; +extern unsigned char brd_8_tmem_txt[]; +extern unsigned short brd_9_pal[]; +extern unsigned char brd_9_eye1_TA_tex_txt[]; +extern unsigned char brd_9_eye2_TA_tex_txt[]; +extern unsigned char brd_9_eye3_TA_tex_txt[]; +extern unsigned char brd_9_eye4_TA_tex_txt[]; +extern unsigned char brd_9_eye5_TA_tex_txt[]; +extern unsigned char brd_9_eye6_TA_tex_txt[]; +extern unsigned char brd_9_eye7_TA_tex_txt[]; +extern unsigned char brd_9_eye8_TA_tex_txt[]; +extern unsigned char brd_9_tmem_txt[]; +extern unsigned short brd_10_pal[]; +extern unsigned char brd_10_eye1_TA_tex_txt[]; +extern unsigned char brd_10_eye2_TA_tex_txt[]; +extern unsigned char brd_10_eye3_TA_tex_txt[]; +extern unsigned char brd_10_eye4_TA_tex_txt[]; +extern unsigned char brd_10_eye5_TA_tex_txt[]; +extern unsigned char brd_10_eye6_TA_tex_txt[]; +extern unsigned char brd_10_eye7_TA_tex_txt[]; +extern unsigned char brd_10_eye8_TA_tex_txt[]; +extern unsigned char brd_10_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_bul_1; +extern unsigned short bul_1_pal[]; +extern unsigned char bul_1_eye1_TA_tex_txt[]; +extern unsigned char bul_1_eye2_TA_tex_txt[]; +extern unsigned char bul_1_eye3_TA_tex_txt[]; +extern unsigned char bul_1_eye4_TA_tex_txt[]; +extern unsigned char bul_1_eye5_TA_tex_txt[]; +extern unsigned char bul_1_eye6_TA_tex_txt[]; +extern unsigned char bul_1_eye7_TA_tex_txt[]; +extern unsigned char bul_1_eye8_TA_tex_txt[]; +extern unsigned char bul_1_mouth1_TA_tex_txt[]; +extern unsigned char bul_1_mouth2_TA_tex_txt[]; +extern unsigned char bul_1_mouth3_TA_tex_txt[]; +extern unsigned char bul_1_mouth4_TA_tex_txt[]; +extern unsigned char bul_1_mouth5_TA_tex_txt[]; +extern unsigned char bul_1_mouth6_TA_tex_txt[]; +extern unsigned char bul_1_tmem_txt[]; +extern unsigned short bul_2_pal[]; +extern unsigned char bul_2_eye1_TA_tex_txt[]; +extern unsigned char bul_2_eye2_TA_tex_txt[]; +extern unsigned char bul_2_eye3_TA_tex_txt[]; +extern unsigned char bul_2_eye4_TA_tex_txt[]; +extern unsigned char bul_2_eye5_TA_tex_txt[]; +extern unsigned char bul_2_eye6_TA_tex_txt[]; +extern unsigned char bul_2_eye7_TA_tex_txt[]; +extern unsigned char bul_2_eye8_TA_tex_txt[]; +extern unsigned char bul_2_mouth1_TA_tex_txt[]; +extern unsigned char bul_2_mouth2_TA_tex_txt[]; +extern unsigned char bul_2_mouth3_TA_tex_txt[]; +extern unsigned char bul_2_mouth4_TA_tex_txt[]; +extern unsigned char bul_2_mouth5_TA_tex_txt[]; +extern unsigned char bul_2_mouth6_TA_tex_txt[]; +extern unsigned char bul_2_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_chn_1; +extern unsigned short chn_1_pal[]; +extern unsigned char chn_1_eye1_TA_tex_txt[]; +extern unsigned char chn_1_eye2_TA_tex_txt[]; +extern unsigned char chn_1_eye3_TA_tex_txt[]; +extern unsigned char chn_1_eye4_TA_tex_txt[]; +extern unsigned char chn_1_eye5_TA_tex_txt[]; +extern unsigned char chn_1_eye6_TA_tex_txt[]; +extern unsigned char chn_1_eye7_TA_tex_txt[]; +extern unsigned char chn_1_eye8_TA_tex_txt[]; +extern unsigned char chn_1_tmem_txt[]; +extern unsigned short chn_2_pal[]; +extern unsigned char chn_2_eye1_TA_tex_txt[]; +extern unsigned char chn_2_eye2_TA_tex_txt[]; +extern unsigned char chn_2_eye3_TA_tex_txt[]; +extern unsigned char chn_2_eye4_TA_tex_txt[]; +extern unsigned char chn_2_eye5_TA_tex_txt[]; +extern unsigned char chn_2_eye6_TA_tex_txt[]; +extern unsigned char chn_2_eye7_TA_tex_txt[]; +extern unsigned char chn_2_eye8_TA_tex_txt[]; +extern unsigned char chn_2_tmem_txt[]; +extern unsigned short chn_3_pal[]; +extern unsigned char chn_3_eye1_TA_tex_txt[]; +extern unsigned char chn_3_eye2_TA_tex_txt[]; +extern unsigned char chn_3_eye3_TA_tex_txt[]; +extern unsigned char chn_3_eye4_TA_tex_txt[]; +extern unsigned char chn_3_eye5_TA_tex_txt[]; +extern unsigned char chn_3_eye6_TA_tex_txt[]; +extern unsigned char chn_3_eye7_TA_tex_txt[]; +extern unsigned char chn_3_eye8_TA_tex_txt[]; +extern unsigned char chn_3_tmem_txt[]; +extern unsigned short chn_4_pal[]; +extern unsigned char chn_4_eye1_TA_tex_txt[]; +extern unsigned char chn_4_eye2_TA_tex_txt[]; +extern unsigned char chn_4_eye3_TA_tex_txt[]; +extern unsigned char chn_4_eye4_TA_tex_txt[]; +extern unsigned char chn_4_eye5_TA_tex_txt[]; +extern unsigned char chn_4_eye6_TA_tex_txt[]; +extern unsigned char chn_4_eye7_TA_tex_txt[]; +extern unsigned char chn_4_eye8_TA_tex_txt[]; +extern unsigned char chn_4_tmem_txt[]; +extern unsigned short chn_5_pal[]; +extern unsigned char chn_5_eye1_TA_tex_txt[]; +extern unsigned char chn_5_eye2_TA_tex_txt[]; +extern unsigned char chn_5_eye3_TA_tex_txt[]; +extern unsigned char chn_5_eye4_TA_tex_txt[]; +extern unsigned char chn_5_eye5_TA_tex_txt[]; +extern unsigned char chn_5_eye6_TA_tex_txt[]; +extern unsigned char chn_5_eye7_TA_tex_txt[]; +extern unsigned char chn_5_eye8_TA_tex_txt[]; +extern unsigned char chn_5_tmem_txt[]; +extern unsigned short chn_6_pal[]; +extern unsigned char chn_6_eye1_TA_tex_txt[]; +extern unsigned char chn_6_eye2_TA_tex_txt[]; +extern unsigned char chn_6_eye3_TA_tex_txt[]; +extern unsigned char chn_6_eye4_TA_tex_txt[]; +extern unsigned char chn_6_eye5_TA_tex_txt[]; +extern unsigned char chn_6_eye6_TA_tex_txt[]; +extern unsigned char chn_6_eye7_TA_tex_txt[]; +extern unsigned char chn_6_eye8_TA_tex_txt[]; +extern unsigned char chn_6_tmem_txt[]; +extern unsigned short chn_7_pal[]; +extern unsigned char chn_7_eye1_TA_tex_txt[]; +extern unsigned char chn_7_eye2_TA_tex_txt[]; +extern unsigned char chn_7_eye3_TA_tex_txt[]; +extern unsigned char chn_7_eye4_TA_tex_txt[]; +extern unsigned char chn_7_eye5_TA_tex_txt[]; +extern unsigned char chn_7_eye6_TA_tex_txt[]; +extern unsigned char chn_7_eye7_TA_tex_txt[]; +extern unsigned char chn_7_eye8_TA_tex_txt[]; +extern unsigned char chn_7_tmem_txt[]; +extern unsigned short chn_8_pal[]; +extern unsigned char chn_8_eye1_TA_tex_txt[]; +extern unsigned char chn_8_eye2_TA_tex_txt[]; +extern unsigned char chn_8_eye3_TA_tex_txt[]; +extern unsigned char chn_8_eye4_TA_tex_txt[]; +extern unsigned char chn_8_eye5_TA_tex_txt[]; +extern unsigned char chn_8_eye6_TA_tex_txt[]; +extern unsigned char chn_8_eye7_TA_tex_txt[]; +extern unsigned char chn_8_eye8_TA_tex_txt[]; +extern unsigned char chn_8_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_cbr_1; +extern unsigned short cbr_1_pal[]; +extern unsigned char cbr_1_eye1_TA_tex_txt[]; +extern unsigned char cbr_1_eye2_TA_tex_txt[]; +extern unsigned char cbr_1_eye3_TA_tex_txt[]; +extern unsigned char cbr_1_eye4_TA_tex_txt[]; +extern unsigned char cbr_1_eye5_TA_tex_txt[]; +extern unsigned char cbr_1_eye6_TA_tex_txt[]; +extern unsigned char cbr_1_eye7_TA_tex_txt[]; +extern unsigned char cbr_1_eye8_TA_tex_txt[]; +extern unsigned char cbr_1_mouth1_TA_tex_txt[]; +extern unsigned char cbr_1_mouth2_TA_tex_txt[]; +extern unsigned char cbr_1_mouth3_TA_tex_txt[]; +extern unsigned char cbr_1_mouth4_TA_tex_txt[]; +extern unsigned char cbr_1_mouth5_TA_tex_txt[]; +extern unsigned char cbr_1_mouth6_TA_tex_txt[]; +extern unsigned char cbr_1_tmem_txt[]; +extern unsigned short cbr_2_pal[]; +extern unsigned char cbr_2_eye1_TA_tex_txt[]; +extern unsigned char cbr_2_eye2_TA_tex_txt[]; +extern unsigned char cbr_2_eye3_TA_tex_txt[]; +extern unsigned char cbr_2_eye4_TA_tex_txt[]; +extern unsigned char cbr_2_eye5_TA_tex_txt[]; +extern unsigned char cbr_2_eye6_TA_tex_txt[]; +extern unsigned char cbr_2_eye7_TA_tex_txt[]; +extern unsigned char cbr_2_eye8_TA_tex_txt[]; +extern unsigned char cbr_2_mouth1_TA_tex_txt[]; +extern unsigned char cbr_2_mouth2_TA_tex_txt[]; +extern unsigned char cbr_2_mouth3_TA_tex_txt[]; +extern unsigned char cbr_2_mouth4_TA_tex_txt[]; +extern unsigned char cbr_2_mouth5_TA_tex_txt[]; +extern unsigned char cbr_2_mouth6_TA_tex_txt[]; +extern unsigned char cbr_2_tmem_txt[]; +extern unsigned short cbr_3_pal[]; +extern unsigned char cbr_3_eye1_TA_tex_txt[]; +extern unsigned char cbr_3_eye2_TA_tex_txt[]; +extern unsigned char cbr_3_eye3_TA_tex_txt[]; +extern unsigned char cbr_3_eye4_TA_tex_txt[]; +extern unsigned char cbr_3_eye5_TA_tex_txt[]; +extern unsigned char cbr_3_eye6_TA_tex_txt[]; +extern unsigned char cbr_3_eye7_TA_tex_txt[]; +extern unsigned char cbr_3_eye8_TA_tex_txt[]; +extern unsigned char cbr_3_mouth1_TA_tex_txt[]; +extern unsigned char cbr_3_mouth2_TA_tex_txt[]; +extern unsigned char cbr_3_mouth3_TA_tex_txt[]; +extern unsigned char cbr_3_mouth4_TA_tex_txt[]; +extern unsigned char cbr_3_mouth5_TA_tex_txt[]; +extern unsigned char cbr_3_mouth6_TA_tex_txt[]; +extern unsigned char cbr_3_tmem_txt[]; +extern unsigned short cbr_4_pal[]; +extern unsigned char cbr_4_eye1_TA_tex_txt[]; +extern unsigned char cbr_4_eye2_TA_tex_txt[]; +extern unsigned char cbr_4_eye3_TA_tex_txt[]; +extern unsigned char cbr_4_eye4_TA_tex_txt[]; +extern unsigned char cbr_4_eye5_TA_tex_txt[]; +extern unsigned char cbr_4_eye6_TA_tex_txt[]; +extern unsigned char cbr_4_eye7_TA_tex_txt[]; +extern unsigned char cbr_4_eye8_TA_tex_txt[]; +extern unsigned char cbr_4_mouth1_TA_tex_txt[]; +extern unsigned char cbr_4_mouth2_TA_tex_txt[]; +extern unsigned char cbr_4_mouth3_TA_tex_txt[]; +extern unsigned char cbr_4_mouth4_TA_tex_txt[]; +extern unsigned char cbr_4_mouth5_TA_tex_txt[]; +extern unsigned char cbr_4_mouth6_TA_tex_txt[]; +extern unsigned char cbr_4_tmem_txt[]; +extern unsigned short cbr_5_pal[]; +extern unsigned char cbr_5_eye1_TA_tex_txt[]; +extern unsigned char cbr_5_eye2_TA_tex_txt[]; +extern unsigned char cbr_5_eye3_TA_tex_txt[]; +extern unsigned char cbr_5_eye4_TA_tex_txt[]; +extern unsigned char cbr_5_eye5_TA_tex_txt[]; +extern unsigned char cbr_5_eye6_TA_tex_txt[]; +extern unsigned char cbr_5_eye7_TA_tex_txt[]; +extern unsigned char cbr_5_eye8_TA_tex_txt[]; +extern unsigned char cbr_5_mouth1_TA_tex_txt[]; +extern unsigned char cbr_5_mouth2_TA_tex_txt[]; +extern unsigned char cbr_5_mouth3_TA_tex_txt[]; +extern unsigned char cbr_5_mouth4_TA_tex_txt[]; +extern unsigned char cbr_5_mouth5_TA_tex_txt[]; +extern unsigned char cbr_5_mouth6_TA_tex_txt[]; +extern unsigned char cbr_5_tmem_txt[]; +extern unsigned short cbr_6_pal[]; +extern unsigned char cbr_6_eye1_TA_tex_txt[]; +extern unsigned char cbr_6_eye2_TA_tex_txt[]; +extern unsigned char cbr_6_eye3_TA_tex_txt[]; +extern unsigned char cbr_6_eye4_TA_tex_txt[]; +extern unsigned char cbr_6_eye5_TA_tex_txt[]; +extern unsigned char cbr_6_eye6_TA_tex_txt[]; +extern unsigned char cbr_6_eye7_TA_tex_txt[]; +extern unsigned char cbr_6_eye8_TA_tex_txt[]; +extern unsigned char cbr_6_mouth1_TA_tex_txt[]; +extern unsigned char cbr_6_mouth2_TA_tex_txt[]; +extern unsigned char cbr_6_mouth3_TA_tex_txt[]; +extern unsigned char cbr_6_mouth4_TA_tex_txt[]; +extern unsigned char cbr_6_mouth5_TA_tex_txt[]; +extern unsigned char cbr_6_mouth6_TA_tex_txt[]; +extern unsigned char cbr_6_tmem_txt[]; +extern unsigned short cbr_7_pal[]; +extern unsigned char cbr_7_eye1_TA_tex_txt[]; +extern unsigned char cbr_7_eye2_TA_tex_txt[]; +extern unsigned char cbr_7_eye3_TA_tex_txt[]; +extern unsigned char cbr_7_eye4_TA_tex_txt[]; +extern unsigned char cbr_7_eye5_TA_tex_txt[]; +extern unsigned char cbr_7_eye6_TA_tex_txt[]; +extern unsigned char cbr_7_eye7_TA_tex_txt[]; +extern unsigned char cbr_7_eye8_TA_tex_txt[]; +extern unsigned char cbr_7_mouth1_TA_tex_txt[]; +extern unsigned char cbr_7_mouth2_TA_tex_txt[]; +extern unsigned char cbr_7_mouth3_TA_tex_txt[]; +extern unsigned char cbr_7_mouth4_TA_tex_txt[]; +extern unsigned char cbr_7_mouth5_TA_tex_txt[]; +extern unsigned char cbr_7_mouth6_TA_tex_txt[]; +extern unsigned char cbr_7_tmem_txt[]; +extern unsigned short cbr_8_pal[]; +extern unsigned char cbr_8_eye1_TA_tex_txt[]; +extern unsigned char cbr_8_eye2_TA_tex_txt[]; +extern unsigned char cbr_8_eye3_TA_tex_txt[]; +extern unsigned char cbr_8_eye4_TA_tex_txt[]; +extern unsigned char cbr_8_eye5_TA_tex_txt[]; +extern unsigned char cbr_8_eye6_TA_tex_txt[]; +extern unsigned char cbr_8_eye7_TA_tex_txt[]; +extern unsigned char cbr_8_eye8_TA_tex_txt[]; +extern unsigned char cbr_8_mouth1_TA_tex_txt[]; +extern unsigned char cbr_8_mouth2_TA_tex_txt[]; +extern unsigned char cbr_8_mouth3_TA_tex_txt[]; +extern unsigned char cbr_8_mouth4_TA_tex_txt[]; +extern unsigned char cbr_8_mouth5_TA_tex_txt[]; +extern unsigned char cbr_8_mouth6_TA_tex_txt[]; +extern unsigned char cbr_8_tmem_txt[]; +extern unsigned short cbr_9_pal[]; +extern unsigned char cbr_9_eye1_TA_tex_txt[]; +extern unsigned char cbr_9_eye2_TA_tex_txt[]; +extern unsigned char cbr_9_eye3_TA_tex_txt[]; +extern unsigned char cbr_9_eye4_TA_tex_txt[]; +extern unsigned char cbr_9_eye5_TA_tex_txt[]; +extern unsigned char cbr_9_eye6_TA_tex_txt[]; +extern unsigned char cbr_9_eye7_TA_tex_txt[]; +extern unsigned char cbr_9_eye8_TA_tex_txt[]; +extern unsigned char cbr_9_mouth1_TA_tex_txt[]; +extern unsigned char cbr_9_mouth2_TA_tex_txt[]; +extern unsigned char cbr_9_mouth3_TA_tex_txt[]; +extern unsigned char cbr_9_mouth4_TA_tex_txt[]; +extern unsigned char cbr_9_mouth5_TA_tex_txt[]; +extern unsigned char cbr_9_mouth6_TA_tex_txt[]; +extern unsigned char cbr_9_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_cow_1; +extern unsigned short cow_1_pal[]; +extern unsigned char cow_1_eye1_TA_tex_txt[]; +extern unsigned char cow_1_eye2_TA_tex_txt[]; +extern unsigned char cow_1_eye3_TA_tex_txt[]; +extern unsigned char cow_1_eye4_TA_tex_txt[]; +extern unsigned char cow_1_eye5_TA_tex_txt[]; +extern unsigned char cow_1_eye6_TA_tex_txt[]; +extern unsigned char cow_1_eye7_TA_tex_txt[]; +extern unsigned char cow_1_eye8_TA_tex_txt[]; +extern unsigned char cow_1_mouth1_TA_tex_txt[]; +extern unsigned char cow_1_mouth2_TA_tex_txt[]; +extern unsigned char cow_1_mouth3_TA_tex_txt[]; +extern unsigned char cow_1_mouth4_TA_tex_txt[]; +extern unsigned char cow_1_mouth5_TA_tex_txt[]; +extern unsigned char cow_1_mouth6_TA_tex_txt[]; +extern unsigned char cow_1_tmem_txt[]; +extern unsigned short cow_2_pal[]; +extern unsigned char cow_2_eye1_TA_tex_txt[]; +extern unsigned char cow_2_eye2_TA_tex_txt[]; +extern unsigned char cow_2_eye3_TA_tex_txt[]; +extern unsigned char cow_2_eye4_TA_tex_txt[]; +extern unsigned char cow_2_eye5_TA_tex_txt[]; +extern unsigned char cow_2_eye6_TA_tex_txt[]; +extern unsigned char cow_2_eye7_TA_tex_txt[]; +extern unsigned char cow_2_eye8_TA_tex_txt[]; +extern unsigned char cow_2_mouth1_TA_tex_txt[]; +extern unsigned char cow_2_mouth2_TA_tex_txt[]; +extern unsigned char cow_2_mouth3_TA_tex_txt[]; +extern unsigned char cow_2_mouth4_TA_tex_txt[]; +extern unsigned char cow_2_mouth5_TA_tex_txt[]; +extern unsigned char cow_2_mouth6_TA_tex_txt[]; +extern unsigned char cow_2_tmem_txt[]; +extern unsigned short cow_3_pal[]; +extern unsigned char cow_3_eye1_TA_tex_txt[]; +extern unsigned char cow_3_eye2_TA_tex_txt[]; +extern unsigned char cow_3_eye3_TA_tex_txt[]; +extern unsigned char cow_3_eye4_TA_tex_txt[]; +extern unsigned char cow_3_eye5_TA_tex_txt[]; +extern unsigned char cow_3_eye6_TA_tex_txt[]; +extern unsigned char cow_3_eye7_TA_tex_txt[]; +extern unsigned char cow_3_eye8_TA_tex_txt[]; +extern unsigned char cow_3_mouth1_TA_tex_txt[]; +extern unsigned char cow_3_mouth2_TA_tex_txt[]; +extern unsigned char cow_3_mouth3_TA_tex_txt[]; +extern unsigned char cow_3_mouth4_TA_tex_txt[]; +extern unsigned char cow_3_mouth5_TA_tex_txt[]; +extern unsigned char cow_3_mouth6_TA_tex_txt[]; +extern unsigned char cow_3_tmem_txt[]; +extern unsigned short cow_4_pal[]; +extern unsigned char cow_4_eye1_TA_tex_txt[]; +extern unsigned char cow_4_eye2_TA_tex_txt[]; +extern unsigned char cow_4_eye3_TA_tex_txt[]; +extern unsigned char cow_4_eye4_TA_tex_txt[]; +extern unsigned char cow_4_eye5_TA_tex_txt[]; +extern unsigned char cow_4_eye6_TA_tex_txt[]; +extern unsigned char cow_4_eye7_TA_tex_txt[]; +extern unsigned char cow_4_eye8_TA_tex_txt[]; +extern unsigned char cow_4_mouth1_TA_tex_txt[]; +extern unsigned char cow_4_mouth2_TA_tex_txt[]; +extern unsigned char cow_4_mouth3_TA_tex_txt[]; +extern unsigned char cow_4_mouth4_TA_tex_txt[]; +extern unsigned char cow_4_mouth5_TA_tex_txt[]; +extern unsigned char cow_4_mouth6_TA_tex_txt[]; +extern unsigned char cow_4_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_crd_1; +extern unsigned short crd_1_pal[]; +extern unsigned char crd_1_eye1_TA_tex_txt[]; +extern unsigned char crd_1_eye2_TA_tex_txt[]; +extern unsigned char crd_1_eye3_TA_tex_txt[]; +extern unsigned char crd_1_eye4_TA_tex_txt[]; +extern unsigned char crd_1_eye5_TA_tex_txt[]; +extern unsigned char crd_1_eye6_TA_tex_txt[]; +extern unsigned char crd_1_eye7_TA_tex_txt[]; +extern unsigned char crd_1_eye8_TA_tex_txt[]; +extern unsigned char crd_1_tmem_txt[]; +extern unsigned short crd_2_pal[]; +extern unsigned char crd_2_eye1_TA_tex_txt[]; +extern unsigned char crd_2_eye2_TA_tex_txt[]; +extern unsigned char crd_2_eye3_TA_tex_txt[]; +extern unsigned char crd_2_eye4_TA_tex_txt[]; +extern unsigned char crd_2_eye5_TA_tex_txt[]; +extern unsigned char crd_2_eye6_TA_tex_txt[]; +extern unsigned char crd_2_eye7_TA_tex_txt[]; +extern unsigned char crd_2_eye8_TA_tex_txt[]; +extern unsigned char crd_2_tmem_txt[]; +extern unsigned short crd_3_pal[]; +extern unsigned char crd_3_eye1_TA_tex_txt[]; +extern unsigned char crd_3_eye2_TA_tex_txt[]; +extern unsigned char crd_3_eye3_TA_tex_txt[]; +extern unsigned char crd_3_eye4_TA_tex_txt[]; +extern unsigned char crd_3_eye5_TA_tex_txt[]; +extern unsigned char crd_3_eye6_TA_tex_txt[]; +extern unsigned char crd_3_eye7_TA_tex_txt[]; +extern unsigned char crd_3_eye8_TA_tex_txt[]; +extern unsigned char crd_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_dog_1; +extern unsigned short dog_1_pal[]; +extern unsigned char dog_1_eye1_TA_tex_txt[]; +extern unsigned char dog_1_eye2_TA_tex_txt[]; +extern unsigned char dog_1_eye3_TA_tex_txt[]; +extern unsigned char dog_1_eye4_TA_tex_txt[]; +extern unsigned char dog_1_eye5_TA_tex_txt[]; +extern unsigned char dog_1_eye6_TA_tex_txt[]; +extern unsigned char dog_1_eye7_TA_tex_txt[]; +extern unsigned char dog_1_eye8_TA_tex_txt[]; +extern unsigned char dog_1_mouth1_TA_tex_txt[]; +extern unsigned char dog_1_mouth2_TA_tex_txt[]; +extern unsigned char dog_1_mouth3_TA_tex_txt[]; +extern unsigned char dog_1_mouth4_TA_tex_txt[]; +extern unsigned char dog_1_mouth5_TA_tex_txt[]; +extern unsigned char dog_1_mouth6_TA_tex_txt[]; +extern unsigned char dog_1_tmem_txt[]; +extern unsigned short dog_2_pal[]; +extern unsigned char dog_2_eye1_TA_tex_txt[]; +extern unsigned char dog_2_eye2_TA_tex_txt[]; +extern unsigned char dog_2_eye3_TA_tex_txt[]; +extern unsigned char dog_2_eye4_TA_tex_txt[]; +extern unsigned char dog_2_eye5_TA_tex_txt[]; +extern unsigned char dog_2_eye6_TA_tex_txt[]; +extern unsigned char dog_2_eye7_TA_tex_txt[]; +extern unsigned char dog_2_eye8_TA_tex_txt[]; +extern unsigned char dog_2_mouth1_TA_tex_txt[]; +extern unsigned char dog_2_mouth2_TA_tex_txt[]; +extern unsigned char dog_2_mouth3_TA_tex_txt[]; +extern unsigned char dog_2_mouth4_TA_tex_txt[]; +extern unsigned char dog_2_mouth5_TA_tex_txt[]; +extern unsigned char dog_2_mouth6_TA_tex_txt[]; +extern unsigned char dog_2_tmem_txt[]; +extern unsigned short dog_3_pal[]; +extern unsigned char dog_3_eye1_TA_tex_txt[]; +extern unsigned char dog_3_eye2_TA_tex_txt[]; +extern unsigned char dog_3_eye3_TA_tex_txt[]; +extern unsigned char dog_3_eye4_TA_tex_txt[]; +extern unsigned char dog_3_eye5_TA_tex_txt[]; +extern unsigned char dog_3_eye6_TA_tex_txt[]; +extern unsigned char dog_3_eye7_TA_tex_txt[]; +extern unsigned char dog_3_eye8_TA_tex_txt[]; +extern unsigned char dog_3_mouth1_TA_tex_txt[]; +extern unsigned char dog_3_mouth2_TA_tex_txt[]; +extern unsigned char dog_3_mouth3_TA_tex_txt[]; +extern unsigned char dog_3_mouth4_TA_tex_txt[]; +extern unsigned char dog_3_mouth5_TA_tex_txt[]; +extern unsigned char dog_3_mouth6_TA_tex_txt[]; +extern unsigned char dog_3_tmem_txt[]; +extern unsigned short dog_4_pal[]; +extern unsigned char dog_4_eye1_TA_tex_txt[]; +extern unsigned char dog_4_eye2_TA_tex_txt[]; +extern unsigned char dog_4_eye3_TA_tex_txt[]; +extern unsigned char dog_4_eye4_TA_tex_txt[]; +extern unsigned char dog_4_eye5_TA_tex_txt[]; +extern unsigned char dog_4_eye6_TA_tex_txt[]; +extern unsigned char dog_4_eye7_TA_tex_txt[]; +extern unsigned char dog_4_eye8_TA_tex_txt[]; +extern unsigned char dog_4_mouth1_TA_tex_txt[]; +extern unsigned char dog_4_mouth2_TA_tex_txt[]; +extern unsigned char dog_4_mouth3_TA_tex_txt[]; +extern unsigned char dog_4_mouth4_TA_tex_txt[]; +extern unsigned char dog_4_mouth5_TA_tex_txt[]; +extern unsigned char dog_4_mouth6_TA_tex_txt[]; +extern unsigned char dog_4_tmem_txt[]; +extern unsigned short dog_5_pal[]; +extern unsigned char dog_5_eye1_TA_tex_txt[]; +extern unsigned char dog_5_eye2_TA_tex_txt[]; +extern unsigned char dog_5_eye3_TA_tex_txt[]; +extern unsigned char dog_5_eye4_TA_tex_txt[]; +extern unsigned char dog_5_eye5_TA_tex_txt[]; +extern unsigned char dog_5_eye6_TA_tex_txt[]; +extern unsigned char dog_5_eye7_TA_tex_txt[]; +extern unsigned char dog_5_eye8_TA_tex_txt[]; +extern unsigned char dog_5_mouth1_TA_tex_txt[]; +extern unsigned char dog_5_mouth2_TA_tex_txt[]; +extern unsigned char dog_5_mouth3_TA_tex_txt[]; +extern unsigned char dog_5_mouth4_TA_tex_txt[]; +extern unsigned char dog_5_mouth5_TA_tex_txt[]; +extern unsigned char dog_5_mouth6_TA_tex_txt[]; +extern unsigned char dog_5_tmem_txt[]; +extern unsigned short dog_6_pal[]; +extern unsigned char dog_6_eye1_TA_tex_txt[]; +extern unsigned char dog_6_eye2_TA_tex_txt[]; +extern unsigned char dog_6_eye3_TA_tex_txt[]; +extern unsigned char dog_6_eye4_TA_tex_txt[]; +extern unsigned char dog_6_eye5_TA_tex_txt[]; +extern unsigned char dog_6_eye6_TA_tex_txt[]; +extern unsigned char dog_6_eye7_TA_tex_txt[]; +extern unsigned char dog_6_eye8_TA_tex_txt[]; +extern unsigned char dog_6_mouth1_TA_tex_txt[]; +extern unsigned char dog_6_mouth2_TA_tex_txt[]; +extern unsigned char dog_6_mouth3_TA_tex_txt[]; +extern unsigned char dog_6_mouth4_TA_tex_txt[]; +extern unsigned char dog_6_mouth5_TA_tex_txt[]; +extern unsigned char dog_6_mouth6_TA_tex_txt[]; +extern unsigned char dog_6_tmem_txt[]; +extern unsigned short dog_8_pal[]; +extern unsigned char dog_8_eye1_TA_tex_txt[]; +extern unsigned char dog_8_eye2_TA_tex_txt[]; +extern unsigned char dog_8_eye3_TA_tex_txt[]; +extern unsigned char dog_8_eye4_TA_tex_txt[]; +extern unsigned char dog_8_eye5_TA_tex_txt[]; +extern unsigned char dog_8_eye6_TA_tex_txt[]; +extern unsigned char dog_8_eye7_TA_tex_txt[]; +extern unsigned char dog_8_eye8_TA_tex_txt[]; +extern unsigned char dog_8_mouth1_TA_tex_txt[]; +extern unsigned char dog_8_mouth2_TA_tex_txt[]; +extern unsigned char dog_8_mouth3_TA_tex_txt[]; +extern unsigned char dog_8_mouth4_TA_tex_txt[]; +extern unsigned char dog_8_mouth5_TA_tex_txt[]; +extern unsigned char dog_8_mouth6_TA_tex_txt[]; +extern unsigned char dog_8_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_duk_1; +extern unsigned short duk_1_pal[]; +extern unsigned char duk_1_eye1_TA_tex_txt[]; +extern unsigned char duk_1_eye2_TA_tex_txt[]; +extern unsigned char duk_1_eye3_TA_tex_txt[]; +extern unsigned char duk_1_eye4_TA_tex_txt[]; +extern unsigned char duk_1_eye5_TA_tex_txt[]; +extern unsigned char duk_1_eye6_TA_tex_txt[]; +extern unsigned char duk_1_eye7_TA_tex_txt[]; +extern unsigned char duk_1_eye8_TA_tex_txt[]; +extern unsigned char duk_1_mouth1_TA_tex_txt[]; +extern unsigned char duk_1_mouth2_TA_tex_txt[]; +extern unsigned char duk_1_mouth3_TA_tex_txt[]; +extern unsigned char duk_1_mouth4_TA_tex_txt[]; +extern unsigned char duk_1_mouth5_TA_tex_txt[]; +extern unsigned char duk_1_mouth6_TA_tex_txt[]; +extern unsigned char duk_1_tmem_txt[]; +extern unsigned short duk_2_pal[]; +extern unsigned char duk_2_eye1_TA_tex_txt[]; +extern unsigned char duk_2_eye2_TA_tex_txt[]; +extern unsigned char duk_2_eye3_TA_tex_txt[]; +extern unsigned char duk_2_eye4_TA_tex_txt[]; +extern unsigned char duk_2_eye5_TA_tex_txt[]; +extern unsigned char duk_2_eye6_TA_tex_txt[]; +extern unsigned char duk_2_eye7_TA_tex_txt[]; +extern unsigned char duk_2_eye8_TA_tex_txt[]; +extern unsigned char duk_2_mouth1_TA_tex_txt[]; +extern unsigned char duk_2_mouth2_TA_tex_txt[]; +extern unsigned char duk_2_mouth3_TA_tex_txt[]; +extern unsigned char duk_2_mouth4_TA_tex_txt[]; +extern unsigned char duk_2_mouth5_TA_tex_txt[]; +extern unsigned char duk_2_mouth6_TA_tex_txt[]; +extern unsigned char duk_2_tmem_txt[]; +extern unsigned short duk_3_pal[]; +extern unsigned char duk_3_eye1_TA_tex_txt[]; +extern unsigned char duk_3_eye2_TA_tex_txt[]; +extern unsigned char duk_3_eye3_TA_tex_txt[]; +extern unsigned char duk_3_eye4_TA_tex_txt[]; +extern unsigned char duk_3_eye5_TA_tex_txt[]; +extern unsigned char duk_3_eye6_TA_tex_txt[]; +extern unsigned char duk_3_eye7_TA_tex_txt[]; +extern unsigned char duk_3_eye8_TA_tex_txt[]; +extern unsigned char duk_3_mouth1_TA_tex_txt[]; +extern unsigned char duk_3_mouth2_TA_tex_txt[]; +extern unsigned char duk_3_mouth3_TA_tex_txt[]; +extern unsigned char duk_3_mouth4_TA_tex_txt[]; +extern unsigned char duk_3_mouth5_TA_tex_txt[]; +extern unsigned char duk_3_mouth6_TA_tex_txt[]; +extern unsigned char duk_3_tmem_txt[]; +extern unsigned short duk_4_pal[]; +extern unsigned char duk_4_eye1_TA_tex_txt[]; +extern unsigned char duk_4_eye2_TA_tex_txt[]; +extern unsigned char duk_4_eye3_TA_tex_txt[]; +extern unsigned char duk_4_eye4_TA_tex_txt[]; +extern unsigned char duk_4_eye5_TA_tex_txt[]; +extern unsigned char duk_4_eye6_TA_tex_txt[]; +extern unsigned char duk_4_eye7_TA_tex_txt[]; +extern unsigned char duk_4_eye8_TA_tex_txt[]; +extern unsigned char duk_4_mouth1_TA_tex_txt[]; +extern unsigned char duk_4_mouth2_TA_tex_txt[]; +extern unsigned char duk_4_mouth3_TA_tex_txt[]; +extern unsigned char duk_4_mouth4_TA_tex_txt[]; +extern unsigned char duk_4_mouth5_TA_tex_txt[]; +extern unsigned char duk_4_mouth6_TA_tex_txt[]; +extern unsigned char duk_4_tmem_txt[]; +extern unsigned short duk_5_pal[]; +extern unsigned char duk_5_eye1_TA_tex_txt[]; +extern unsigned char duk_5_eye2_TA_tex_txt[]; +extern unsigned char duk_5_eye3_TA_tex_txt[]; +extern unsigned char duk_5_eye4_TA_tex_txt[]; +extern unsigned char duk_5_eye5_TA_tex_txt[]; +extern unsigned char duk_5_eye6_TA_tex_txt[]; +extern unsigned char duk_5_eye7_TA_tex_txt[]; +extern unsigned char duk_5_eye8_TA_tex_txt[]; +extern unsigned char duk_5_mouth1_TA_tex_txt[]; +extern unsigned char duk_5_mouth2_TA_tex_txt[]; +extern unsigned char duk_5_mouth3_TA_tex_txt[]; +extern unsigned char duk_5_mouth4_TA_tex_txt[]; +extern unsigned char duk_5_mouth5_TA_tex_txt[]; +extern unsigned char duk_5_mouth6_TA_tex_txt[]; +extern unsigned char duk_5_tmem_txt[]; +extern unsigned short duk_6_pal[]; +extern unsigned char duk_6_eye1_TA_tex_txt[]; +extern unsigned char duk_6_eye2_TA_tex_txt[]; +extern unsigned char duk_6_eye3_TA_tex_txt[]; +extern unsigned char duk_6_eye4_TA_tex_txt[]; +extern unsigned char duk_6_eye5_TA_tex_txt[]; +extern unsigned char duk_6_eye6_TA_tex_txt[]; +extern unsigned char duk_6_eye7_TA_tex_txt[]; +extern unsigned char duk_6_eye8_TA_tex_txt[]; +extern unsigned char duk_6_mouth1_TA_tex_txt[]; +extern unsigned char duk_6_mouth2_TA_tex_txt[]; +extern unsigned char duk_6_mouth3_TA_tex_txt[]; +extern unsigned char duk_6_mouth4_TA_tex_txt[]; +extern unsigned char duk_6_mouth5_TA_tex_txt[]; +extern unsigned char duk_6_mouth6_TA_tex_txt[]; +extern unsigned char duk_6_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_elp_1; +extern unsigned short elp_1_pal[]; +extern unsigned char elp_1_eye1_TA_tex_txt[]; +extern unsigned char elp_1_eye2_TA_tex_txt[]; +extern unsigned char elp_1_eye3_TA_tex_txt[]; +extern unsigned char elp_1_eye4_TA_tex_txt[]; +extern unsigned char elp_1_eye5_TA_tex_txt[]; +extern unsigned char elp_1_eye6_TA_tex_txt[]; +extern unsigned char elp_1_eye7_TA_tex_txt[]; +extern unsigned char elp_1_eye8_TA_tex_txt[]; +extern unsigned char elp_1_mouth1_TA_tex_txt[]; +extern unsigned char elp_1_mouth2_TA_tex_txt[]; +extern unsigned char elp_1_mouth3_TA_tex_txt[]; +extern unsigned char elp_1_mouth4_TA_tex_txt[]; +extern unsigned char elp_1_mouth5_TA_tex_txt[]; +extern unsigned char elp_1_mouth6_TA_tex_txt[]; +extern unsigned char elp_1_tmem_txt[]; +extern unsigned short elp_2_pal[]; +extern unsigned char elp_2_eye1_TA_tex_txt[]; +extern unsigned char elp_2_eye2_TA_tex_txt[]; +extern unsigned char elp_2_eye3_TA_tex_txt[]; +extern unsigned char elp_2_eye4_TA_tex_txt[]; +extern unsigned char elp_2_eye5_TA_tex_txt[]; +extern unsigned char elp_2_eye6_TA_tex_txt[]; +extern unsigned char elp_2_eye7_TA_tex_txt[]; +extern unsigned char elp_2_eye8_TA_tex_txt[]; +extern unsigned char elp_2_mouth1_TA_tex_txt[]; +extern unsigned char elp_2_mouth2_TA_tex_txt[]; +extern unsigned char elp_2_mouth3_TA_tex_txt[]; +extern unsigned char elp_2_mouth4_TA_tex_txt[]; +extern unsigned char elp_2_mouth5_TA_tex_txt[]; +extern unsigned char elp_2_mouth6_TA_tex_txt[]; +extern unsigned char elp_2_tmem_txt[]; +extern unsigned short elp_3_pal[]; +extern unsigned char elp_3_eye1_TA_tex_txt[]; +extern unsigned char elp_3_eye2_TA_tex_txt[]; +extern unsigned char elp_3_eye3_TA_tex_txt[]; +extern unsigned char elp_3_eye4_TA_tex_txt[]; +extern unsigned char elp_3_eye5_TA_tex_txt[]; +extern unsigned char elp_3_eye6_TA_tex_txt[]; +extern unsigned char elp_3_eye7_TA_tex_txt[]; +extern unsigned char elp_3_eye8_TA_tex_txt[]; +extern unsigned char elp_3_mouth1_TA_tex_txt[]; +extern unsigned char elp_3_mouth2_TA_tex_txt[]; +extern unsigned char elp_3_mouth3_TA_tex_txt[]; +extern unsigned char elp_3_mouth4_TA_tex_txt[]; +extern unsigned char elp_3_mouth5_TA_tex_txt[]; +extern unsigned char elp_3_mouth6_TA_tex_txt[]; +extern unsigned char elp_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_flg_1; +extern unsigned short flg_1_pal[]; +extern unsigned char flg_1_eye1_TA_tex_txt[]; +extern unsigned char flg_1_eye2_TA_tex_txt[]; +extern unsigned char flg_1_eye3_TA_tex_txt[]; +extern unsigned char flg_1_eye4_TA_tex_txt[]; +extern unsigned char flg_1_eye5_TA_tex_txt[]; +extern unsigned char flg_1_eye6_TA_tex_txt[]; +extern unsigned char flg_1_eye7_TA_tex_txt[]; +extern unsigned char flg_1_eye8_TA_tex_txt[]; +extern unsigned char flg_1_mouth1_TA_tex_txt[]; +extern unsigned char flg_1_mouth2_TA_tex_txt[]; +extern unsigned char flg_1_mouth3_TA_tex_txt[]; +extern unsigned char flg_1_mouth4_TA_tex_txt[]; +extern unsigned char flg_1_mouth5_TA_tex_txt[]; +extern unsigned char flg_1_mouth6_TA_tex_txt[]; +extern unsigned char flg_1_tmem_txt[]; +extern unsigned short flg_2_pal[]; +extern unsigned char flg_2_eye1_TA_tex_txt[]; +extern unsigned char flg_2_eye2_TA_tex_txt[]; +extern unsigned char flg_2_eye3_TA_tex_txt[]; +extern unsigned char flg_2_eye4_TA_tex_txt[]; +extern unsigned char flg_2_eye5_TA_tex_txt[]; +extern unsigned char flg_2_eye6_TA_tex_txt[]; +extern unsigned char flg_2_eye7_TA_tex_txt[]; +extern unsigned char flg_2_eye8_TA_tex_txt[]; +extern unsigned char flg_2_mouth1_TA_tex_txt[]; +extern unsigned char flg_2_mouth2_TA_tex_txt[]; +extern unsigned char flg_2_mouth3_TA_tex_txt[]; +extern unsigned char flg_2_mouth4_TA_tex_txt[]; +extern unsigned char flg_2_mouth5_TA_tex_txt[]; +extern unsigned char flg_2_mouth6_TA_tex_txt[]; +extern unsigned char flg_2_tmem_txt[]; +extern unsigned short flg_3_pal[]; +extern unsigned char flg_3_eye1_TA_tex_txt[]; +extern unsigned char flg_3_eye2_TA_tex_txt[]; +extern unsigned char flg_3_eye3_TA_tex_txt[]; +extern unsigned char flg_3_eye4_TA_tex_txt[]; +extern unsigned char flg_3_eye5_TA_tex_txt[]; +extern unsigned char flg_3_eye6_TA_tex_txt[]; +extern unsigned char flg_3_eye7_TA_tex_txt[]; +extern unsigned char flg_3_eye8_TA_tex_txt[]; +extern unsigned char flg_3_mouth1_TA_tex_txt[]; +extern unsigned char flg_3_mouth2_TA_tex_txt[]; +extern unsigned char flg_3_mouth3_TA_tex_txt[]; +extern unsigned char flg_3_mouth4_TA_tex_txt[]; +extern unsigned char flg_3_mouth5_TA_tex_txt[]; +extern unsigned char flg_3_mouth6_TA_tex_txt[]; +extern unsigned char flg_3_tmem_txt[]; +extern unsigned short flg_4_pal[]; +extern unsigned char flg_4_eye1_TA_tex_txt[]; +extern unsigned char flg_4_eye2_TA_tex_txt[]; +extern unsigned char flg_4_eye3_TA_tex_txt[]; +extern unsigned char flg_4_eye4_TA_tex_txt[]; +extern unsigned char flg_4_eye5_TA_tex_txt[]; +extern unsigned char flg_4_eye6_TA_tex_txt[]; +extern unsigned char flg_4_eye7_TA_tex_txt[]; +extern unsigned char flg_4_eye8_TA_tex_txt[]; +extern unsigned char flg_4_mouth1_TA_tex_txt[]; +extern unsigned char flg_4_mouth2_TA_tex_txt[]; +extern unsigned char flg_4_mouth3_TA_tex_txt[]; +extern unsigned char flg_4_mouth4_TA_tex_txt[]; +extern unsigned char flg_4_mouth5_TA_tex_txt[]; +extern unsigned char flg_4_mouth6_TA_tex_txt[]; +extern unsigned char flg_4_tmem_txt[]; +extern unsigned short flg_5_pal[]; +extern unsigned char flg_5_eye1_TA_tex_txt[]; +extern unsigned char flg_5_eye2_TA_tex_txt[]; +extern unsigned char flg_5_eye3_TA_tex_txt[]; +extern unsigned char flg_5_eye4_TA_tex_txt[]; +extern unsigned char flg_5_eye5_TA_tex_txt[]; +extern unsigned char flg_5_eye6_TA_tex_txt[]; +extern unsigned char flg_5_eye7_TA_tex_txt[]; +extern unsigned char flg_5_eye8_TA_tex_txt[]; +extern unsigned char flg_5_mouth1_TA_tex_txt[]; +extern unsigned char flg_5_mouth2_TA_tex_txt[]; +extern unsigned char flg_5_mouth3_TA_tex_txt[]; +extern unsigned char flg_5_mouth4_TA_tex_txt[]; +extern unsigned char flg_5_mouth5_TA_tex_txt[]; +extern unsigned char flg_5_mouth6_TA_tex_txt[]; +extern unsigned char flg_5_tmem_txt[]; +extern unsigned short flg_6_pal[]; +extern unsigned char flg_6_eye1_TA_tex_txt[]; +extern unsigned char flg_6_eye2_TA_tex_txt[]; +extern unsigned char flg_6_eye3_TA_tex_txt[]; +extern unsigned char flg_6_eye4_TA_tex_txt[]; +extern unsigned char flg_6_eye5_TA_tex_txt[]; +extern unsigned char flg_6_eye6_TA_tex_txt[]; +extern unsigned char flg_6_eye7_TA_tex_txt[]; +extern unsigned char flg_6_eye8_TA_tex_txt[]; +extern unsigned char flg_6_mouth1_TA_tex_txt[]; +extern unsigned char flg_6_mouth2_TA_tex_txt[]; +extern unsigned char flg_6_mouth3_TA_tex_txt[]; +extern unsigned char flg_6_mouth4_TA_tex_txt[]; +extern unsigned char flg_6_mouth5_TA_tex_txt[]; +extern unsigned char flg_6_mouth6_TA_tex_txt[]; +extern unsigned char flg_6_tmem_txt[]; +extern unsigned short flg_7_pal[]; +extern unsigned char flg_7_eye1_TA_tex_txt[]; +extern unsigned char flg_7_eye2_TA_tex_txt[]; +extern unsigned char flg_7_eye3_TA_tex_txt[]; +extern unsigned char flg_7_eye4_TA_tex_txt[]; +extern unsigned char flg_7_eye5_TA_tex_txt[]; +extern unsigned char flg_7_eye6_TA_tex_txt[]; +extern unsigned char flg_7_eye7_TA_tex_txt[]; +extern unsigned char flg_7_eye8_TA_tex_txt[]; +extern unsigned char flg_7_mouth1_TA_tex_txt[]; +extern unsigned char flg_7_mouth2_TA_tex_txt[]; +extern unsigned char flg_7_mouth3_TA_tex_txt[]; +extern unsigned char flg_7_mouth4_TA_tex_txt[]; +extern unsigned char flg_7_mouth5_TA_tex_txt[]; +extern unsigned char flg_7_mouth6_TA_tex_txt[]; +extern unsigned char flg_7_tmem_txt[]; +extern unsigned short flg_8_pal[]; +extern unsigned char flg_8_eye1_TA_tex_txt[]; +extern unsigned char flg_8_eye2_TA_tex_txt[]; +extern unsigned char flg_8_eye3_TA_tex_txt[]; +extern unsigned char flg_8_eye4_TA_tex_txt[]; +extern unsigned char flg_8_eye5_TA_tex_txt[]; +extern unsigned char flg_8_eye6_TA_tex_txt[]; +extern unsigned char flg_8_eye7_TA_tex_txt[]; +extern unsigned char flg_8_eye8_TA_tex_txt[]; +extern unsigned char flg_8_mouth1_TA_tex_txt[]; +extern unsigned char flg_8_mouth2_TA_tex_txt[]; +extern unsigned char flg_8_mouth3_TA_tex_txt[]; +extern unsigned char flg_8_mouth4_TA_tex_txt[]; +extern unsigned char flg_8_mouth5_TA_tex_txt[]; +extern unsigned char flg_8_mouth6_TA_tex_txt[]; +extern unsigned char flg_8_tmem_txt[]; +extern unsigned short flg_9_pal[]; +extern unsigned char flg_9_eye1_TA_tex_txt[]; +extern unsigned char flg_9_eye2_TA_tex_txt[]; +extern unsigned char flg_9_eye3_TA_tex_txt[]; +extern unsigned char flg_9_eye4_TA_tex_txt[]; +extern unsigned char flg_9_eye5_TA_tex_txt[]; +extern unsigned char flg_9_eye6_TA_tex_txt[]; +extern unsigned char flg_9_eye7_TA_tex_txt[]; +extern unsigned char flg_9_eye8_TA_tex_txt[]; +extern unsigned char flg_9_mouth1_TA_tex_txt[]; +extern unsigned char flg_9_mouth2_TA_tex_txt[]; +extern unsigned char flg_9_mouth3_TA_tex_txt[]; +extern unsigned char flg_9_mouth4_TA_tex_txt[]; +extern unsigned char flg_9_mouth5_TA_tex_txt[]; +extern unsigned char flg_9_mouth6_TA_tex_txt[]; +extern unsigned char flg_9_tmem_txt[]; +extern unsigned short flg_10_pal[]; +extern unsigned char flg_10_eye1_TA_tex_txt[]; +extern unsigned char flg_10_eye2_TA_tex_txt[]; +extern unsigned char flg_10_eye3_TA_tex_txt[]; +extern unsigned char flg_10_eye4_TA_tex_txt[]; +extern unsigned char flg_10_eye5_TA_tex_txt[]; +extern unsigned char flg_10_eye6_TA_tex_txt[]; +extern unsigned char flg_10_eye7_TA_tex_txt[]; +extern unsigned char flg_10_eye8_TA_tex_txt[]; +extern unsigned char flg_10_mouth1_TA_tex_txt[]; +extern unsigned char flg_10_mouth2_TA_tex_txt[]; +extern unsigned char flg_10_mouth3_TA_tex_txt[]; +extern unsigned char flg_10_mouth4_TA_tex_txt[]; +extern unsigned char flg_10_mouth5_TA_tex_txt[]; +extern unsigned char flg_10_mouth6_TA_tex_txt[]; +extern unsigned char flg_10_tmem_txt[]; +extern unsigned short flg_11_pal[]; +extern unsigned char flg_11_eye1_TA_tex_txt[]; +extern unsigned char flg_11_eye2_TA_tex_txt[]; +extern unsigned char flg_11_eye3_TA_tex_txt[]; +extern unsigned char flg_11_eye4_TA_tex_txt[]; +extern unsigned char flg_11_eye5_TA_tex_txt[]; +extern unsigned char flg_11_eye6_TA_tex_txt[]; +extern unsigned char flg_11_eye7_TA_tex_txt[]; +extern unsigned char flg_11_eye8_TA_tex_txt[]; +extern unsigned char flg_11_mouth1_TA_tex_txt[]; +extern unsigned char flg_11_mouth2_TA_tex_txt[]; +extern unsigned char flg_11_mouth3_TA_tex_txt[]; +extern unsigned char flg_11_mouth4_TA_tex_txt[]; +extern unsigned char flg_11_mouth5_TA_tex_txt[]; +extern unsigned char flg_11_mouth6_TA_tex_txt[]; +extern unsigned char flg_11_tmem_txt[]; +extern unsigned short flg_12_pal[]; +extern unsigned char flg_12_eye1_TA_tex_txt[]; +extern unsigned char flg_12_eye2_TA_tex_txt[]; +extern unsigned char flg_12_eye3_TA_tex_txt[]; +extern unsigned char flg_12_eye4_TA_tex_txt[]; +extern unsigned char flg_12_eye5_TA_tex_txt[]; +extern unsigned char flg_12_eye6_TA_tex_txt[]; +extern unsigned char flg_12_eye7_TA_tex_txt[]; +extern unsigned char flg_12_eye8_TA_tex_txt[]; +extern unsigned char flg_12_mouth1_TA_tex_txt[]; +extern unsigned char flg_12_mouth2_TA_tex_txt[]; +extern unsigned char flg_12_mouth3_TA_tex_txt[]; +extern unsigned char flg_12_mouth4_TA_tex_txt[]; +extern unsigned char flg_12_mouth5_TA_tex_txt[]; +extern unsigned char flg_12_mouth6_TA_tex_txt[]; +extern unsigned char flg_12_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_goa_1; +extern unsigned short goa_1_pal[]; +extern unsigned char goa_1_eye1_TA_tex_txt[]; +extern unsigned char goa_1_eye2_TA_tex_txt[]; +extern unsigned char goa_1_eye3_TA_tex_txt[]; +extern unsigned char goa_1_eye4_TA_tex_txt[]; +extern unsigned char goa_1_eye5_TA_tex_txt[]; +extern unsigned char goa_1_eye6_TA_tex_txt[]; +extern unsigned char goa_1_eye7_TA_tex_txt[]; +extern unsigned char goa_1_eye8_TA_tex_txt[]; +extern unsigned char goa_1_mouth1_TA_tex_txt[]; +extern unsigned char goa_1_mouth2_TA_tex_txt[]; +extern unsigned char goa_1_mouth3_TA_tex_txt[]; +extern unsigned char goa_1_mouth4_TA_tex_txt[]; +extern unsigned char goa_1_mouth5_TA_tex_txt[]; +extern unsigned char goa_1_mouth6_TA_tex_txt[]; +extern unsigned char goa_1_tmem_txt[]; +extern unsigned short goa_2_pal[]; +extern unsigned char goa_2_eye1_TA_tex_txt[]; +extern unsigned char goa_2_eye2_TA_tex_txt[]; +extern unsigned char goa_2_eye3_TA_tex_txt[]; +extern unsigned char goa_2_eye4_TA_tex_txt[]; +extern unsigned char goa_2_eye5_TA_tex_txt[]; +extern unsigned char goa_2_eye6_TA_tex_txt[]; +extern unsigned char goa_2_eye7_TA_tex_txt[]; +extern unsigned char goa_2_eye8_TA_tex_txt[]; +extern unsigned char goa_2_mouth1_TA_tex_txt[]; +extern unsigned char goa_2_mouth2_TA_tex_txt[]; +extern unsigned char goa_2_mouth3_TA_tex_txt[]; +extern unsigned char goa_2_mouth4_TA_tex_txt[]; +extern unsigned char goa_2_mouth5_TA_tex_txt[]; +extern unsigned char goa_2_mouth6_TA_tex_txt[]; +extern unsigned char goa_2_tmem_txt[]; +extern unsigned short goa_3_pal[]; +extern unsigned char goa_3_eye1_TA_tex_txt[]; +extern unsigned char goa_3_eye2_TA_tex_txt[]; +extern unsigned char goa_3_eye3_TA_tex_txt[]; +extern unsigned char goa_3_eye4_TA_tex_txt[]; +extern unsigned char goa_3_eye5_TA_tex_txt[]; +extern unsigned char goa_3_eye6_TA_tex_txt[]; +extern unsigned char goa_3_eye7_TA_tex_txt[]; +extern unsigned char goa_3_eye8_TA_tex_txt[]; +extern unsigned char goa_3_mouth1_TA_tex_txt[]; +extern unsigned char goa_3_mouth2_TA_tex_txt[]; +extern unsigned char goa_3_mouth3_TA_tex_txt[]; +extern unsigned char goa_3_mouth4_TA_tex_txt[]; +extern unsigned char goa_3_mouth5_TA_tex_txt[]; +extern unsigned char goa_3_mouth6_TA_tex_txt[]; +extern unsigned char goa_3_tmem_txt[]; +extern unsigned short goa_4_pal[]; +extern unsigned char goa_4_eye1_TA_tex_txt[]; +extern unsigned char goa_4_eye2_TA_tex_txt[]; +extern unsigned char goa_4_eye3_TA_tex_txt[]; +extern unsigned char goa_4_eye4_TA_tex_txt[]; +extern unsigned char goa_4_eye5_TA_tex_txt[]; +extern unsigned char goa_4_eye6_TA_tex_txt[]; +extern unsigned char goa_4_eye7_TA_tex_txt[]; +extern unsigned char goa_4_eye8_TA_tex_txt[]; +extern unsigned char goa_4_mouth1_TA_tex_txt[]; +extern unsigned char goa_4_mouth2_TA_tex_txt[]; +extern unsigned char goa_4_mouth3_TA_tex_txt[]; +extern unsigned char goa_4_mouth4_TA_tex_txt[]; +extern unsigned char goa_4_mouth5_TA_tex_txt[]; +extern unsigned char goa_4_mouth6_TA_tex_txt[]; +extern unsigned char goa_4_tmem_txt[]; +extern unsigned short goa_5_pal[]; +extern unsigned char goa_5_eye1_TA_tex_txt[]; +extern unsigned char goa_5_eye2_TA_tex_txt[]; +extern unsigned char goa_5_eye3_TA_tex_txt[]; +extern unsigned char goa_5_eye4_TA_tex_txt[]; +extern unsigned char goa_5_eye5_TA_tex_txt[]; +extern unsigned char goa_5_eye6_TA_tex_txt[]; +extern unsigned char goa_5_eye7_TA_tex_txt[]; +extern unsigned char goa_5_eye8_TA_tex_txt[]; +extern unsigned char goa_5_mouth1_TA_tex_txt[]; +extern unsigned char goa_5_mouth2_TA_tex_txt[]; +extern unsigned char goa_5_mouth3_TA_tex_txt[]; +extern unsigned char goa_5_mouth4_TA_tex_txt[]; +extern unsigned char goa_5_mouth5_TA_tex_txt[]; +extern unsigned char goa_5_mouth6_TA_tex_txt[]; +extern unsigned char goa_5_tmem_txt[]; +extern unsigned short goa_6_pal[]; +extern unsigned char goa_6_eye1_TA_tex_txt[]; +extern unsigned char goa_6_eye2_TA_tex_txt[]; +extern unsigned char goa_6_eye3_TA_tex_txt[]; +extern unsigned char goa_6_eye4_TA_tex_txt[]; +extern unsigned char goa_6_eye5_TA_tex_txt[]; +extern unsigned char goa_6_eye6_TA_tex_txt[]; +extern unsigned char goa_6_eye7_TA_tex_txt[]; +extern unsigned char goa_6_eye8_TA_tex_txt[]; +extern unsigned char goa_6_mouth1_TA_tex_txt[]; +extern unsigned char goa_6_mouth2_TA_tex_txt[]; +extern unsigned char goa_6_mouth3_TA_tex_txt[]; +extern unsigned char goa_6_mouth4_TA_tex_txt[]; +extern unsigned char goa_6_mouth5_TA_tex_txt[]; +extern unsigned char goa_6_mouth6_TA_tex_txt[]; +extern unsigned char goa_6_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_gor_1; +extern unsigned short gor_1_pal[]; +extern unsigned char gor_1_eye1_TA_tex_txt[]; +extern unsigned char gor_1_eye2_TA_tex_txt[]; +extern unsigned char gor_1_eye3_TA_tex_txt[]; +extern unsigned char gor_1_eye4_TA_tex_txt[]; +extern unsigned char gor_1_eye5_TA_tex_txt[]; +extern unsigned char gor_1_eye6_TA_tex_txt[]; +extern unsigned char gor_1_eye7_TA_tex_txt[]; +extern unsigned char gor_1_eye8_TA_tex_txt[]; +extern unsigned char gor_1_mouth1_TA_tex_txt[]; +extern unsigned char gor_1_mouth2_TA_tex_txt[]; +extern unsigned char gor_1_mouth3_TA_tex_txt[]; +extern unsigned char gor_1_mouth4_TA_tex_txt[]; +extern unsigned char gor_1_mouth5_TA_tex_txt[]; +extern unsigned char gor_1_mouth6_TA_tex_txt[]; +extern unsigned char gor_1_tmem_txt[]; +extern unsigned short gor_2_pal[]; +extern unsigned char gor_2_eye1_TA_tex_txt[]; +extern unsigned char gor_2_eye2_TA_tex_txt[]; +extern unsigned char gor_2_eye3_TA_tex_txt[]; +extern unsigned char gor_2_eye4_TA_tex_txt[]; +extern unsigned char gor_2_eye5_TA_tex_txt[]; +extern unsigned char gor_2_eye6_TA_tex_txt[]; +extern unsigned char gor_2_eye7_TA_tex_txt[]; +extern unsigned char gor_2_eye8_TA_tex_txt[]; +extern unsigned char gor_2_mouth1_TA_tex_txt[]; +extern unsigned char gor_2_mouth2_TA_tex_txt[]; +extern unsigned char gor_2_mouth3_TA_tex_txt[]; +extern unsigned char gor_2_mouth4_TA_tex_txt[]; +extern unsigned char gor_2_mouth5_TA_tex_txt[]; +extern unsigned char gor_2_mouth6_TA_tex_txt[]; +extern unsigned char gor_2_tmem_txt[]; +extern unsigned short gor_3_pal[]; +extern unsigned char gor_3_eye1_TA_tex_txt[]; +extern unsigned char gor_3_eye2_TA_tex_txt[]; +extern unsigned char gor_3_eye3_TA_tex_txt[]; +extern unsigned char gor_3_eye4_TA_tex_txt[]; +extern unsigned char gor_3_eye5_TA_tex_txt[]; +extern unsigned char gor_3_eye6_TA_tex_txt[]; +extern unsigned char gor_3_eye7_TA_tex_txt[]; +extern unsigned char gor_3_eye8_TA_tex_txt[]; +extern unsigned char gor_3_mouth1_TA_tex_txt[]; +extern unsigned char gor_3_mouth2_TA_tex_txt[]; +extern unsigned char gor_3_mouth3_TA_tex_txt[]; +extern unsigned char gor_3_mouth4_TA_tex_txt[]; +extern unsigned char gor_3_mouth5_TA_tex_txt[]; +extern unsigned char gor_3_mouth6_TA_tex_txt[]; +extern unsigned char gor_3_tmem_txt[]; +extern unsigned short gor_4_pal[]; +extern unsigned char gor_4_eye1_TA_tex_txt[]; +extern unsigned char gor_4_eye2_TA_tex_txt[]; +extern unsigned char gor_4_eye3_TA_tex_txt[]; +extern unsigned char gor_4_eye4_TA_tex_txt[]; +extern unsigned char gor_4_eye5_TA_tex_txt[]; +extern unsigned char gor_4_eye6_TA_tex_txt[]; +extern unsigned char gor_4_eye7_TA_tex_txt[]; +extern unsigned char gor_4_eye8_TA_tex_txt[]; +extern unsigned char gor_4_mouth1_TA_tex_txt[]; +extern unsigned char gor_4_mouth2_TA_tex_txt[]; +extern unsigned char gor_4_mouth3_TA_tex_txt[]; +extern unsigned char gor_4_mouth4_TA_tex_txt[]; +extern unsigned char gor_4_mouth5_TA_tex_txt[]; +extern unsigned char gor_4_mouth6_TA_tex_txt[]; +extern unsigned char gor_4_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_hip_1; +extern unsigned short hip_1_pal[]; +extern unsigned char hip_1_eye1_TA_tex_txt[]; +extern unsigned char hip_1_eye2_TA_tex_txt[]; +extern unsigned char hip_1_eye3_TA_tex_txt[]; +extern unsigned char hip_1_eye4_TA_tex_txt[]; +extern unsigned char hip_1_eye5_TA_tex_txt[]; +extern unsigned char hip_1_eye6_TA_tex_txt[]; +extern unsigned char hip_1_eye7_TA_tex_txt[]; +extern unsigned char hip_1_eye8_TA_tex_txt[]; +extern unsigned char hip_1_tmem_txt[]; +extern unsigned short hip_2_pal[]; +extern unsigned char hip_2_eye1_TA_tex_txt[]; +extern unsigned char hip_2_eye2_TA_tex_txt[]; +extern unsigned char hip_2_eye3_TA_tex_txt[]; +extern unsigned char hip_2_eye4_TA_tex_txt[]; +extern unsigned char hip_2_eye5_TA_tex_txt[]; +extern unsigned char hip_2_eye6_TA_tex_txt[]; +extern unsigned char hip_2_eye7_TA_tex_txt[]; +extern unsigned char hip_2_eye8_TA_tex_txt[]; +extern unsigned char hip_2_tmem_txt[]; +extern unsigned short hip_3_pal[]; +extern unsigned char hip_3_eye1_TA_tex_txt[]; +extern unsigned char hip_3_eye2_TA_tex_txt[]; +extern unsigned char hip_3_eye3_TA_tex_txt[]; +extern unsigned char hip_3_eye4_TA_tex_txt[]; +extern unsigned char hip_3_eye5_TA_tex_txt[]; +extern unsigned char hip_3_eye6_TA_tex_txt[]; +extern unsigned char hip_3_eye7_TA_tex_txt[]; +extern unsigned char hip_3_eye8_TA_tex_txt[]; +extern unsigned char hip_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_hrs_1; +extern unsigned short hrs_1_pal[]; +extern unsigned char hrs_1_eye1_TA_tex_txt[]; +extern unsigned char hrs_1_eye2_TA_tex_txt[]; +extern unsigned char hrs_1_eye3_TA_tex_txt[]; +extern unsigned char hrs_1_eye4_TA_tex_txt[]; +extern unsigned char hrs_1_eye5_TA_tex_txt[]; +extern unsigned char hrs_1_eye6_TA_tex_txt[]; +extern unsigned char hrs_1_eye7_TA_tex_txt[]; +extern unsigned char hrs_1_eye8_TA_tex_txt[]; +extern unsigned char hrs_1_tmem_txt[]; +extern unsigned short hrs_2_pal[]; +extern unsigned char hrs_2_eye1_TA_tex_txt[]; +extern unsigned char hrs_2_eye2_TA_tex_txt[]; +extern unsigned char hrs_2_eye3_TA_tex_txt[]; +extern unsigned char hrs_2_eye4_TA_tex_txt[]; +extern unsigned char hrs_2_eye5_TA_tex_txt[]; +extern unsigned char hrs_2_eye6_TA_tex_txt[]; +extern unsigned char hrs_2_eye7_TA_tex_txt[]; +extern unsigned char hrs_2_eye8_TA_tex_txt[]; +extern unsigned char hrs_2_tmem_txt[]; +extern unsigned short hrs_3_pal[]; +extern unsigned char hrs_3_eye1_TA_tex_txt[]; +extern unsigned char hrs_3_eye2_TA_tex_txt[]; +extern unsigned char hrs_3_eye3_TA_tex_txt[]; +extern unsigned char hrs_3_eye4_TA_tex_txt[]; +extern unsigned char hrs_3_eye5_TA_tex_txt[]; +extern unsigned char hrs_3_eye6_TA_tex_txt[]; +extern unsigned char hrs_3_eye7_TA_tex_txt[]; +extern unsigned char hrs_3_eye8_TA_tex_txt[]; +extern unsigned char hrs_3_tmem_txt[]; +extern unsigned short hrs_4_pal[]; +extern unsigned char hrs_4_eye1_TA_tex_txt[]; +extern unsigned char hrs_4_eye2_TA_tex_txt[]; +extern unsigned char hrs_4_eye3_TA_tex_txt[]; +extern unsigned char hrs_4_eye4_TA_tex_txt[]; +extern unsigned char hrs_4_eye5_TA_tex_txt[]; +extern unsigned char hrs_4_eye6_TA_tex_txt[]; +extern unsigned char hrs_4_eye7_TA_tex_txt[]; +extern unsigned char hrs_4_eye8_TA_tex_txt[]; +extern unsigned char hrs_4_tmem_txt[]; +extern unsigned short hrs_5_pal[]; +extern unsigned char hrs_5_eye1_TA_tex_txt[]; +extern unsigned char hrs_5_eye2_TA_tex_txt[]; +extern unsigned char hrs_5_eye3_TA_tex_txt[]; +extern unsigned char hrs_5_eye4_TA_tex_txt[]; +extern unsigned char hrs_5_eye5_TA_tex_txt[]; +extern unsigned char hrs_5_eye6_TA_tex_txt[]; +extern unsigned char hrs_5_eye7_TA_tex_txt[]; +extern unsigned char hrs_5_eye8_TA_tex_txt[]; +extern unsigned char hrs_5_tmem_txt[]; +extern unsigned short hrs_6_pal[]; +extern unsigned char hrs_6_eye1_TA_tex_txt[]; +extern unsigned char hrs_6_eye2_TA_tex_txt[]; +extern unsigned char hrs_6_eye3_TA_tex_txt[]; +extern unsigned char hrs_6_eye4_TA_tex_txt[]; +extern unsigned char hrs_6_eye5_TA_tex_txt[]; +extern unsigned char hrs_6_eye6_TA_tex_txt[]; +extern unsigned char hrs_6_eye7_TA_tex_txt[]; +extern unsigned char hrs_6_eye8_TA_tex_txt[]; +extern unsigned char hrs_6_tmem_txt[]; +extern unsigned short hrs_7_pal[]; +extern unsigned char hrs_7_eye1_TA_tex_txt[]; +extern unsigned char hrs_7_eye2_TA_tex_txt[]; +extern unsigned char hrs_7_eye3_TA_tex_txt[]; +extern unsigned char hrs_7_eye4_TA_tex_txt[]; +extern unsigned char hrs_7_eye5_TA_tex_txt[]; +extern unsigned char hrs_7_eye6_TA_tex_txt[]; +extern unsigned char hrs_7_eye7_TA_tex_txt[]; +extern unsigned char hrs_7_eye8_TA_tex_txt[]; +extern unsigned char hrs_7_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_kgr_1; +extern unsigned short kgr_1_pal[]; +extern unsigned char kgr_1_eye1_TA_tex_txt[]; +extern unsigned char kgr_1_eye2_TA_tex_txt[]; +extern unsigned char kgr_1_eye3_TA_tex_txt[]; +extern unsigned char kgr_1_eye4_TA_tex_txt[]; +extern unsigned char kgr_1_eye5_TA_tex_txt[]; +extern unsigned char kgr_1_eye6_TA_tex_txt[]; +extern unsigned char kgr_1_eye7_TA_tex_txt[]; +extern unsigned char kgr_1_eye8_TA_tex_txt[]; +extern unsigned char kgr_1_tmem_txt[]; +extern unsigned short kgr_2_pal[]; +extern unsigned char kgr_2_eye1_TA_tex_txt[]; +extern unsigned char kgr_2_eye2_TA_tex_txt[]; +extern unsigned char kgr_2_eye3_TA_tex_txt[]; +extern unsigned char kgr_2_eye4_TA_tex_txt[]; +extern unsigned char kgr_2_eye5_TA_tex_txt[]; +extern unsigned char kgr_2_eye6_TA_tex_txt[]; +extern unsigned char kgr_2_eye7_TA_tex_txt[]; +extern unsigned char kgr_2_eye8_TA_tex_txt[]; +extern unsigned char kgr_2_tmem_txt[]; +extern unsigned short kgr_3_pal[]; +extern unsigned char kgr_3_eye1_TA_tex_txt[]; +extern unsigned char kgr_3_eye2_TA_tex_txt[]; +extern unsigned char kgr_3_eye3_TA_tex_txt[]; +extern unsigned char kgr_3_eye4_TA_tex_txt[]; +extern unsigned char kgr_3_eye5_TA_tex_txt[]; +extern unsigned char kgr_3_eye6_TA_tex_txt[]; +extern unsigned char kgr_3_eye7_TA_tex_txt[]; +extern unsigned char kgr_3_eye8_TA_tex_txt[]; +extern unsigned char kgr_3_tmem_txt[]; +extern unsigned short kgr_4_pal[]; +extern unsigned char kgr_4_eye1_TA_tex_txt[]; +extern unsigned char kgr_4_eye2_TA_tex_txt[]; +extern unsigned char kgr_4_eye3_TA_tex_txt[]; +extern unsigned char kgr_4_eye4_TA_tex_txt[]; +extern unsigned char kgr_4_eye5_TA_tex_txt[]; +extern unsigned char kgr_4_eye6_TA_tex_txt[]; +extern unsigned char kgr_4_eye7_TA_tex_txt[]; +extern unsigned char kgr_4_eye8_TA_tex_txt[]; +extern unsigned char kgr_4_tmem_txt[]; +extern unsigned short kgr_5_pal[]; +extern unsigned char kgr_5_eye1_TA_tex_txt[]; +extern unsigned char kgr_5_eye2_TA_tex_txt[]; +extern unsigned char kgr_5_eye3_TA_tex_txt[]; +extern unsigned char kgr_5_eye4_TA_tex_txt[]; +extern unsigned char kgr_5_eye5_TA_tex_txt[]; +extern unsigned char kgr_5_eye6_TA_tex_txt[]; +extern unsigned char kgr_5_eye7_TA_tex_txt[]; +extern unsigned char kgr_5_eye8_TA_tex_txt[]; +extern unsigned char kgr_5_tmem_txt[]; +extern unsigned short kgr_6_pal[]; +extern unsigned char kgr_6_eye1_TA_tex_txt[]; +extern unsigned char kgr_6_eye2_TA_tex_txt[]; +extern unsigned char kgr_6_eye3_TA_tex_txt[]; +extern unsigned char kgr_6_eye4_TA_tex_txt[]; +extern unsigned char kgr_6_eye5_TA_tex_txt[]; +extern unsigned char kgr_6_eye6_TA_tex_txt[]; +extern unsigned char kgr_6_eye7_TA_tex_txt[]; +extern unsigned char kgr_6_eye8_TA_tex_txt[]; +extern unsigned char kgr_6_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_kal_1; +extern unsigned short kal_1_pal[]; +extern unsigned char kal_1_eye1_TA_tex_txt[]; +extern unsigned char kal_1_eye2_TA_tex_txt[]; +extern unsigned char kal_1_eye3_TA_tex_txt[]; +extern unsigned char kal_1_eye4_TA_tex_txt[]; +extern unsigned char kal_1_eye5_TA_tex_txt[]; +extern unsigned char kal_1_eye6_TA_tex_txt[]; +extern unsigned char kal_1_eye7_TA_tex_txt[]; +extern unsigned char kal_1_eye8_TA_tex_txt[]; +extern unsigned char kal_1_mouth1_TA_tex_txt[]; +extern unsigned char kal_1_mouth2_TA_tex_txt[]; +extern unsigned char kal_1_mouth3_TA_tex_txt[]; +extern unsigned char kal_1_mouth4_TA_tex_txt[]; +extern unsigned char kal_1_mouth5_TA_tex_txt[]; +extern unsigned char kal_1_mouth6_TA_tex_txt[]; +extern unsigned char kal_1_tmem_txt[]; +extern unsigned short kal_2_pal[]; +extern unsigned char kal_2_eye1_TA_tex_txt[]; +extern unsigned char kal_2_eye2_TA_tex_txt[]; +extern unsigned char kal_2_eye3_TA_tex_txt[]; +extern unsigned char kal_2_eye4_TA_tex_txt[]; +extern unsigned char kal_2_eye5_TA_tex_txt[]; +extern unsigned char kal_2_eye6_TA_tex_txt[]; +extern unsigned char kal_2_eye7_TA_tex_txt[]; +extern unsigned char kal_2_eye8_TA_tex_txt[]; +extern unsigned char kal_2_mouth1_TA_tex_txt[]; +extern unsigned char kal_2_mouth2_TA_tex_txt[]; +extern unsigned char kal_2_mouth3_TA_tex_txt[]; +extern unsigned char kal_2_mouth4_TA_tex_txt[]; +extern unsigned char kal_2_mouth5_TA_tex_txt[]; +extern unsigned char kal_2_mouth6_TA_tex_txt[]; +extern unsigned char kal_2_tmem_txt[]; +extern unsigned short kal_3_pal[]; +extern unsigned char kal_3_eye1_TA_tex_txt[]; +extern unsigned char kal_3_eye2_TA_tex_txt[]; +extern unsigned char kal_3_eye3_TA_tex_txt[]; +extern unsigned char kal_3_eye4_TA_tex_txt[]; +extern unsigned char kal_3_eye5_TA_tex_txt[]; +extern unsigned char kal_3_eye6_TA_tex_txt[]; +extern unsigned char kal_3_eye7_TA_tex_txt[]; +extern unsigned char kal_3_eye8_TA_tex_txt[]; +extern unsigned char kal_3_mouth1_TA_tex_txt[]; +extern unsigned char kal_3_mouth2_TA_tex_txt[]; +extern unsigned char kal_3_mouth3_TA_tex_txt[]; +extern unsigned char kal_3_mouth4_TA_tex_txt[]; +extern unsigned char kal_3_mouth5_TA_tex_txt[]; +extern unsigned char kal_3_mouth6_TA_tex_txt[]; +extern unsigned char kal_3_tmem_txt[]; +extern unsigned short kal_4_pal[]; +extern unsigned char kal_4_eye1_TA_tex_txt[]; +extern unsigned char kal_4_eye2_TA_tex_txt[]; +extern unsigned char kal_4_eye3_TA_tex_txt[]; +extern unsigned char kal_4_eye4_TA_tex_txt[]; +extern unsigned char kal_4_eye5_TA_tex_txt[]; +extern unsigned char kal_4_eye6_TA_tex_txt[]; +extern unsigned char kal_4_eye7_TA_tex_txt[]; +extern unsigned char kal_4_eye8_TA_tex_txt[]; +extern unsigned char kal_4_mouth1_TA_tex_txt[]; +extern unsigned char kal_4_mouth2_TA_tex_txt[]; +extern unsigned char kal_4_mouth3_TA_tex_txt[]; +extern unsigned char kal_4_mouth4_TA_tex_txt[]; +extern unsigned char kal_4_mouth5_TA_tex_txt[]; +extern unsigned char kal_4_mouth6_TA_tex_txt[]; +extern unsigned char kal_4_tmem_txt[]; +extern unsigned short kal_5_pal[]; +extern unsigned char kal_5_eye1_TA_tex_txt[]; +extern unsigned char kal_5_eye2_TA_tex_txt[]; +extern unsigned char kal_5_eye3_TA_tex_txt[]; +extern unsigned char kal_5_eye4_TA_tex_txt[]; +extern unsigned char kal_5_eye5_TA_tex_txt[]; +extern unsigned char kal_5_eye6_TA_tex_txt[]; +extern unsigned char kal_5_eye7_TA_tex_txt[]; +extern unsigned char kal_5_eye8_TA_tex_txt[]; +extern unsigned char kal_5_mouth1_TA_tex_txt[]; +extern unsigned char kal_5_mouth2_TA_tex_txt[]; +extern unsigned char kal_5_mouth3_TA_tex_txt[]; +extern unsigned char kal_5_mouth4_TA_tex_txt[]; +extern unsigned char kal_5_mouth5_TA_tex_txt[]; +extern unsigned char kal_5_mouth6_TA_tex_txt[]; +extern unsigned char kal_5_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_lon_1; +extern unsigned short lon_1_pal[]; +extern unsigned char lon_1_eye1_TA_tex_txt[]; +extern unsigned char lon_1_eye2_TA_tex_txt[]; +extern unsigned char lon_1_eye3_TA_tex_txt[]; +extern unsigned char lon_1_eye4_TA_tex_txt[]; +extern unsigned char lon_1_eye5_TA_tex_txt[]; +extern unsigned char lon_1_eye6_TA_tex_txt[]; +extern unsigned char lon_1_eye7_TA_tex_txt[]; +extern unsigned char lon_1_eye8_TA_tex_txt[]; +extern unsigned char lon_1_mouth1_TA_tex_txt[]; +extern unsigned char lon_1_mouth2_TA_tex_txt[]; +extern unsigned char lon_1_mouth3_TA_tex_txt[]; +extern unsigned char lon_1_mouth4_TA_tex_txt[]; +extern unsigned char lon_1_mouth5_TA_tex_txt[]; +extern unsigned char lon_1_mouth6_TA_tex_txt[]; +extern unsigned char lon_1_tmem_txt[]; +extern unsigned short lon_2_pal[]; +extern unsigned char lon_2_eye1_TA_tex_txt[]; +extern unsigned char lon_2_eye2_TA_tex_txt[]; +extern unsigned char lon_2_eye3_TA_tex_txt[]; +extern unsigned char lon_2_eye4_TA_tex_txt[]; +extern unsigned char lon_2_eye5_TA_tex_txt[]; +extern unsigned char lon_2_eye6_TA_tex_txt[]; +extern unsigned char lon_2_eye7_TA_tex_txt[]; +extern unsigned char lon_2_eye8_TA_tex_txt[]; +extern unsigned char lon_2_mouth1_TA_tex_txt[]; +extern unsigned char lon_2_mouth2_TA_tex_txt[]; +extern unsigned char lon_2_mouth3_TA_tex_txt[]; +extern unsigned char lon_2_mouth4_TA_tex_txt[]; +extern unsigned char lon_2_mouth5_TA_tex_txt[]; +extern unsigned char lon_2_mouth6_TA_tex_txt[]; +extern unsigned char lon_2_tmem_txt[]; +extern unsigned short lon_3_pal[]; +extern unsigned char lon_3_eye1_TA_tex_txt[]; +extern unsigned char lon_3_eye2_TA_tex_txt[]; +extern unsigned char lon_3_eye3_TA_tex_txt[]; +extern unsigned char lon_3_eye4_TA_tex_txt[]; +extern unsigned char lon_3_eye5_TA_tex_txt[]; +extern unsigned char lon_3_eye6_TA_tex_txt[]; +extern unsigned char lon_3_eye7_TA_tex_txt[]; +extern unsigned char lon_3_eye8_TA_tex_txt[]; +extern unsigned char lon_3_mouth1_TA_tex_txt[]; +extern unsigned char lon_3_mouth2_TA_tex_txt[]; +extern unsigned char lon_3_mouth3_TA_tex_txt[]; +extern unsigned char lon_3_mouth4_TA_tex_txt[]; +extern unsigned char lon_3_mouth5_TA_tex_txt[]; +extern unsigned char lon_3_mouth6_TA_tex_txt[]; +extern unsigned char lon_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mus_1; +extern unsigned short mus_1_pal[]; +extern unsigned char mus_1_eye1_TA_tex_txt[]; +extern unsigned char mus_1_eye2_TA_tex_txt[]; +extern unsigned char mus_1_eye3_TA_tex_txt[]; +extern unsigned char mus_1_eye4_TA_tex_txt[]; +extern unsigned char mus_1_eye5_TA_tex_txt[]; +extern unsigned char mus_1_eye6_TA_tex_txt[]; +extern unsigned char mus_1_eye7_TA_tex_txt[]; +extern unsigned char mus_1_eye8_TA_tex_txt[]; +extern unsigned char mus_1_mouth1_TA_tex_txt[]; +extern unsigned char mus_1_mouth2_TA_tex_txt[]; +extern unsigned char mus_1_mouth3_TA_tex_txt[]; +extern unsigned char mus_1_mouth4_TA_tex_txt[]; +extern unsigned char mus_1_mouth5_TA_tex_txt[]; +extern unsigned char mus_1_mouth6_TA_tex_txt[]; +extern unsigned char mus_1_tmem_txt[]; +extern unsigned short mus_2_pal[]; +extern unsigned char mus_2_eye1_TA_tex_txt[]; +extern unsigned char mus_2_eye2_TA_tex_txt[]; +extern unsigned char mus_2_eye3_TA_tex_txt[]; +extern unsigned char mus_2_eye4_TA_tex_txt[]; +extern unsigned char mus_2_eye5_TA_tex_txt[]; +extern unsigned char mus_2_eye6_TA_tex_txt[]; +extern unsigned char mus_2_eye7_TA_tex_txt[]; +extern unsigned char mus_2_eye8_TA_tex_txt[]; +extern unsigned char mus_2_mouth1_TA_tex_txt[]; +extern unsigned char mus_2_mouth2_TA_tex_txt[]; +extern unsigned char mus_2_mouth3_TA_tex_txt[]; +extern unsigned char mus_2_mouth4_TA_tex_txt[]; +extern unsigned char mus_2_mouth5_TA_tex_txt[]; +extern unsigned char mus_2_mouth6_TA_tex_txt[]; +extern unsigned char mus_2_tmem_txt[]; +extern unsigned short mus_3_pal[]; +extern unsigned char mus_3_eye1_TA_tex_txt[]; +extern unsigned char mus_3_eye2_TA_tex_txt[]; +extern unsigned char mus_3_eye3_TA_tex_txt[]; +extern unsigned char mus_3_eye4_TA_tex_txt[]; +extern unsigned char mus_3_eye5_TA_tex_txt[]; +extern unsigned char mus_3_eye6_TA_tex_txt[]; +extern unsigned char mus_3_eye7_TA_tex_txt[]; +extern unsigned char mus_3_eye8_TA_tex_txt[]; +extern unsigned char mus_3_mouth1_TA_tex_txt[]; +extern unsigned char mus_3_mouth2_TA_tex_txt[]; +extern unsigned char mus_3_mouth3_TA_tex_txt[]; +extern unsigned char mus_3_mouth4_TA_tex_txt[]; +extern unsigned char mus_3_mouth5_TA_tex_txt[]; +extern unsigned char mus_3_mouth6_TA_tex_txt[]; +extern unsigned char mus_3_tmem_txt[]; +extern unsigned short mus_4_pal[]; +extern unsigned char mus_4_eye1_TA_tex_txt[]; +extern unsigned char mus_4_eye2_TA_tex_txt[]; +extern unsigned char mus_4_eye3_TA_tex_txt[]; +extern unsigned char mus_4_eye4_TA_tex_txt[]; +extern unsigned char mus_4_eye5_TA_tex_txt[]; +extern unsigned char mus_4_eye6_TA_tex_txt[]; +extern unsigned char mus_4_eye7_TA_tex_txt[]; +extern unsigned char mus_4_eye8_TA_tex_txt[]; +extern unsigned char mus_4_mouth1_TA_tex_txt[]; +extern unsigned char mus_4_mouth2_TA_tex_txt[]; +extern unsigned char mus_4_mouth3_TA_tex_txt[]; +extern unsigned char mus_4_mouth4_TA_tex_txt[]; +extern unsigned char mus_4_mouth5_TA_tex_txt[]; +extern unsigned char mus_4_mouth6_TA_tex_txt[]; +extern unsigned char mus_4_tmem_txt[]; +extern unsigned short mus_5_pal[]; +extern unsigned char mus_5_eye1_TA_tex_txt[]; +extern unsigned char mus_5_eye2_TA_tex_txt[]; +extern unsigned char mus_5_eye3_TA_tex_txt[]; +extern unsigned char mus_5_eye4_TA_tex_txt[]; +extern unsigned char mus_5_eye5_TA_tex_txt[]; +extern unsigned char mus_5_eye6_TA_tex_txt[]; +extern unsigned char mus_5_eye7_TA_tex_txt[]; +extern unsigned char mus_5_eye8_TA_tex_txt[]; +extern unsigned char mus_5_mouth1_TA_tex_txt[]; +extern unsigned char mus_5_mouth2_TA_tex_txt[]; +extern unsigned char mus_5_mouth3_TA_tex_txt[]; +extern unsigned char mus_5_mouth4_TA_tex_txt[]; +extern unsigned char mus_5_mouth5_TA_tex_txt[]; +extern unsigned char mus_5_mouth6_TA_tex_txt[]; +extern unsigned char mus_5_tmem_txt[]; +extern unsigned short mus_6_pal[]; +extern unsigned char mus_6_eye1_TA_tex_txt[]; +extern unsigned char mus_6_eye2_TA_tex_txt[]; +extern unsigned char mus_6_eye3_TA_tex_txt[]; +extern unsigned char mus_6_eye4_TA_tex_txt[]; +extern unsigned char mus_6_eye5_TA_tex_txt[]; +extern unsigned char mus_6_eye6_TA_tex_txt[]; +extern unsigned char mus_6_eye7_TA_tex_txt[]; +extern unsigned char mus_6_eye8_TA_tex_txt[]; +extern unsigned char mus_6_mouth1_TA_tex_txt[]; +extern unsigned char mus_6_mouth2_TA_tex_txt[]; +extern unsigned char mus_6_mouth3_TA_tex_txt[]; +extern unsigned char mus_6_mouth4_TA_tex_txt[]; +extern unsigned char mus_6_mouth5_TA_tex_txt[]; +extern unsigned char mus_6_mouth6_TA_tex_txt[]; +extern unsigned char mus_6_tmem_txt[]; +extern unsigned short mus_7_pal[]; +extern unsigned char mus_7_eye1_TA_tex_txt[]; +extern unsigned char mus_7_eye2_TA_tex_txt[]; +extern unsigned char mus_7_eye3_TA_tex_txt[]; +extern unsigned char mus_7_eye4_TA_tex_txt[]; +extern unsigned char mus_7_eye5_TA_tex_txt[]; +extern unsigned char mus_7_eye6_TA_tex_txt[]; +extern unsigned char mus_7_eye7_TA_tex_txt[]; +extern unsigned char mus_7_eye8_TA_tex_txt[]; +extern unsigned char mus_7_mouth1_TA_tex_txt[]; +extern unsigned char mus_7_mouth2_TA_tex_txt[]; +extern unsigned char mus_7_mouth3_TA_tex_txt[]; +extern unsigned char mus_7_mouth4_TA_tex_txt[]; +extern unsigned char mus_7_mouth5_TA_tex_txt[]; +extern unsigned char mus_7_mouth6_TA_tex_txt[]; +extern unsigned char mus_7_tmem_txt[]; +extern unsigned short mus_8_pal[]; +extern unsigned char mus_8_eye1_TA_tex_txt[]; +extern unsigned char mus_8_eye2_TA_tex_txt[]; +extern unsigned char mus_8_eye3_TA_tex_txt[]; +extern unsigned char mus_8_eye4_TA_tex_txt[]; +extern unsigned char mus_8_eye5_TA_tex_txt[]; +extern unsigned char mus_8_eye6_TA_tex_txt[]; +extern unsigned char mus_8_eye7_TA_tex_txt[]; +extern unsigned char mus_8_eye8_TA_tex_txt[]; +extern unsigned char mus_8_mouth1_TA_tex_txt[]; +extern unsigned char mus_8_mouth2_TA_tex_txt[]; +extern unsigned char mus_8_mouth3_TA_tex_txt[]; +extern unsigned char mus_8_mouth4_TA_tex_txt[]; +extern unsigned char mus_8_mouth5_TA_tex_txt[]; +extern unsigned char mus_8_mouth6_TA_tex_txt[]; +extern unsigned char mus_8_tmem_txt[]; +extern unsigned short mus_9_pal[]; +extern unsigned char mus_9_eye1_TA_tex_txt[]; +extern unsigned char mus_9_eye2_TA_tex_txt[]; +extern unsigned char mus_9_eye3_TA_tex_txt[]; +extern unsigned char mus_9_eye4_TA_tex_txt[]; +extern unsigned char mus_9_eye5_TA_tex_txt[]; +extern unsigned char mus_9_eye6_TA_tex_txt[]; +extern unsigned char mus_9_eye7_TA_tex_txt[]; +extern unsigned char mus_9_eye8_TA_tex_txt[]; +extern unsigned char mus_9_mouth1_TA_tex_txt[]; +extern unsigned char mus_9_mouth2_TA_tex_txt[]; +extern unsigned char mus_9_mouth3_TA_tex_txt[]; +extern unsigned char mus_9_mouth4_TA_tex_txt[]; +extern unsigned char mus_9_mouth5_TA_tex_txt[]; +extern unsigned char mus_9_mouth6_TA_tex_txt[]; +extern unsigned char mus_9_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_oct_1; +extern unsigned short oct_1_pal[]; +extern unsigned char oct_1_eye1_TA_tex_txt[]; +extern unsigned char oct_1_eye2_TA_tex_txt[]; +extern unsigned char oct_1_eye3_TA_tex_txt[]; +extern unsigned char oct_1_eye4_TA_tex_txt[]; +extern unsigned char oct_1_eye5_TA_tex_txt[]; +extern unsigned char oct_1_eye6_TA_tex_txt[]; +extern unsigned char oct_1_eye7_TA_tex_txt[]; +extern unsigned char oct_1_eye8_TA_tex_txt[]; +extern unsigned char oct_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_ost_1; +extern unsigned short ost_1_pal[]; +extern unsigned char ost_1_eye1_TA_tex_txt[]; +extern unsigned char ost_1_eye2_TA_tex_txt[]; +extern unsigned char ost_1_eye3_TA_tex_txt[]; +extern unsigned char ost_1_eye4_TA_tex_txt[]; +extern unsigned char ost_1_eye5_TA_tex_txt[]; +extern unsigned char ost_1_eye6_TA_tex_txt[]; +extern unsigned char ost_1_eye7_TA_tex_txt[]; +extern unsigned char ost_1_eye8_TA_tex_txt[]; +extern unsigned char ost_1_tmem_txt[]; +extern unsigned short ost_2_pal[]; +extern unsigned char ost_2_eye1_TA_tex_txt[]; +extern unsigned char ost_2_eye2_TA_tex_txt[]; +extern unsigned char ost_2_eye3_TA_tex_txt[]; +extern unsigned char ost_2_eye4_TA_tex_txt[]; +extern unsigned char ost_2_eye5_TA_tex_txt[]; +extern unsigned char ost_2_eye6_TA_tex_txt[]; +extern unsigned char ost_2_eye7_TA_tex_txt[]; +extern unsigned char ost_2_eye8_TA_tex_txt[]; +extern unsigned char ost_2_tmem_txt[]; +extern unsigned short ost_3_pal[]; +extern unsigned char ost_3_eye1_TA_tex_txt[]; +extern unsigned char ost_3_eye2_TA_tex_txt[]; +extern unsigned char ost_3_eye3_TA_tex_txt[]; +extern unsigned char ost_3_eye4_TA_tex_txt[]; +extern unsigned char ost_3_eye5_TA_tex_txt[]; +extern unsigned char ost_3_eye6_TA_tex_txt[]; +extern unsigned char ost_3_eye7_TA_tex_txt[]; +extern unsigned char ost_3_eye8_TA_tex_txt[]; +extern unsigned char ost_3_tmem_txt[]; +extern unsigned short ost_4_pal[]; +extern unsigned char ost_4_eye1_TA_tex_txt[]; +extern unsigned char ost_4_eye2_TA_tex_txt[]; +extern unsigned char ost_4_eye3_TA_tex_txt[]; +extern unsigned char ost_4_eye4_TA_tex_txt[]; +extern unsigned char ost_4_eye5_TA_tex_txt[]; +extern unsigned char ost_4_eye6_TA_tex_txt[]; +extern unsigned char ost_4_eye7_TA_tex_txt[]; +extern unsigned char ost_4_eye8_TA_tex_txt[]; +extern unsigned char ost_4_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pbr_1; +extern unsigned short pbr_1_pal[]; +extern unsigned char pbr_1_eye1_TA_tex_txt[]; +extern unsigned char pbr_1_eye2_TA_tex_txt[]; +extern unsigned char pbr_1_eye3_TA_tex_txt[]; +extern unsigned char pbr_1_eye4_TA_tex_txt[]; +extern unsigned char pbr_1_eye5_TA_tex_txt[]; +extern unsigned char pbr_1_eye6_TA_tex_txt[]; +extern unsigned char pbr_1_eye7_TA_tex_txt[]; +extern unsigned char pbr_1_eye8_TA_tex_txt[]; +extern unsigned char pbr_1_tmem_txt[]; +extern unsigned short pbr_2_pal[]; +extern unsigned char pbr_2_eye1_TA_tex_txt[]; +extern unsigned char pbr_2_eye2_TA_tex_txt[]; +extern unsigned char pbr_2_eye3_TA_tex_txt[]; +extern unsigned char pbr_2_eye4_TA_tex_txt[]; +extern unsigned char pbr_2_eye5_TA_tex_txt[]; +extern unsigned char pbr_2_eye6_TA_tex_txt[]; +extern unsigned char pbr_2_eye7_TA_tex_txt[]; +extern unsigned char pbr_2_eye8_TA_tex_txt[]; +extern unsigned char pbr_2_tmem_txt[]; +extern unsigned short pbr_3_pal[]; +extern unsigned char pbr_3_eye1_TA_tex_txt[]; +extern unsigned char pbr_3_eye2_TA_tex_txt[]; +extern unsigned char pbr_3_eye3_TA_tex_txt[]; +extern unsigned char pbr_3_eye4_TA_tex_txt[]; +extern unsigned char pbr_3_eye5_TA_tex_txt[]; +extern unsigned char pbr_3_eye6_TA_tex_txt[]; +extern unsigned char pbr_3_eye7_TA_tex_txt[]; +extern unsigned char pbr_3_eye8_TA_tex_txt[]; +extern unsigned char pbr_3_tmem_txt[]; +extern unsigned short pbr_4_pal[]; +extern unsigned char pbr_4_eye1_TA_tex_txt[]; +extern unsigned char pbr_4_eye2_TA_tex_txt[]; +extern unsigned char pbr_4_eye3_TA_tex_txt[]; +extern unsigned char pbr_4_eye4_TA_tex_txt[]; +extern unsigned char pbr_4_eye5_TA_tex_txt[]; +extern unsigned char pbr_4_eye6_TA_tex_txt[]; +extern unsigned char pbr_4_eye7_TA_tex_txt[]; +extern unsigned char pbr_4_eye8_TA_tex_txt[]; +extern unsigned char pbr_4_tmem_txt[]; +extern unsigned short pbr_5_pal[]; +extern unsigned char pbr_5_eye1_TA_tex_txt[]; +extern unsigned char pbr_5_eye2_TA_tex_txt[]; +extern unsigned char pbr_5_eye3_TA_tex_txt[]; +extern unsigned char pbr_5_eye4_TA_tex_txt[]; +extern unsigned char pbr_5_eye5_TA_tex_txt[]; +extern unsigned char pbr_5_eye6_TA_tex_txt[]; +extern unsigned char pbr_5_eye7_TA_tex_txt[]; +extern unsigned char pbr_5_eye8_TA_tex_txt[]; +extern unsigned char pbr_5_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pgn_1; +extern unsigned short pgn_1_pal[]; +extern unsigned char pgn_1_eye1_TA_tex_txt[]; +extern unsigned char pgn_1_eye2_TA_tex_txt[]; +extern unsigned char pgn_1_eye3_TA_tex_txt[]; +extern unsigned char pgn_1_eye4_TA_tex_txt[]; +extern unsigned char pgn_1_eye5_TA_tex_txt[]; +extern unsigned char pgn_1_eye6_TA_tex_txt[]; +extern unsigned char pgn_1_eye7_TA_tex_txt[]; +extern unsigned char pgn_1_eye8_TA_tex_txt[]; +extern unsigned char pgn_1_tmem_txt[]; +extern unsigned short pgn_2_pal[]; +extern unsigned char pgn_2_eye1_TA_tex_txt[]; +extern unsigned char pgn_2_eye2_TA_tex_txt[]; +extern unsigned char pgn_2_eye3_TA_tex_txt[]; +extern unsigned char pgn_2_eye4_TA_tex_txt[]; +extern unsigned char pgn_2_eye5_TA_tex_txt[]; +extern unsigned char pgn_2_eye6_TA_tex_txt[]; +extern unsigned char pgn_2_eye7_TA_tex_txt[]; +extern unsigned char pgn_2_eye8_TA_tex_txt[]; +extern unsigned char pgn_2_tmem_txt[]; +extern unsigned short pgn_3_pal[]; +extern unsigned char pgn_3_eye1_TA_tex_txt[]; +extern unsigned char pgn_3_eye2_TA_tex_txt[]; +extern unsigned char pgn_3_eye3_TA_tex_txt[]; +extern unsigned char pgn_3_eye4_TA_tex_txt[]; +extern unsigned char pgn_3_eye5_TA_tex_txt[]; +extern unsigned char pgn_3_eye6_TA_tex_txt[]; +extern unsigned char pgn_3_eye7_TA_tex_txt[]; +extern unsigned char pgn_3_eye8_TA_tex_txt[]; +extern unsigned char pgn_3_tmem_txt[]; +extern unsigned short pgn_4_pal[]; +extern unsigned char pgn_4_eye1_TA_tex_txt[]; +extern unsigned char pgn_4_eye2_TA_tex_txt[]; +extern unsigned char pgn_4_eye3_TA_tex_txt[]; +extern unsigned char pgn_4_eye4_TA_tex_txt[]; +extern unsigned char pgn_4_eye5_TA_tex_txt[]; +extern unsigned char pgn_4_eye6_TA_tex_txt[]; +extern unsigned char pgn_4_eye7_TA_tex_txt[]; +extern unsigned char pgn_4_eye8_TA_tex_txt[]; +extern unsigned char pgn_4_tmem_txt[]; +extern unsigned short pgn_5_pal[]; +extern unsigned char pgn_5_eye1_TA_tex_txt[]; +extern unsigned char pgn_5_eye2_TA_tex_txt[]; +extern unsigned char pgn_5_eye3_TA_tex_txt[]; +extern unsigned char pgn_5_eye4_TA_tex_txt[]; +extern unsigned char pgn_5_eye5_TA_tex_txt[]; +extern unsigned char pgn_5_eye6_TA_tex_txt[]; +extern unsigned char pgn_5_eye7_TA_tex_txt[]; +extern unsigned char pgn_5_eye8_TA_tex_txt[]; +extern unsigned char pgn_5_tmem_txt[]; +extern unsigned short pgn_6_pal[]; +extern unsigned char pgn_6_eye1_TA_tex_txt[]; +extern unsigned char pgn_6_eye2_TA_tex_txt[]; +extern unsigned char pgn_6_eye3_TA_tex_txt[]; +extern unsigned char pgn_6_eye4_TA_tex_txt[]; +extern unsigned char pgn_6_eye5_TA_tex_txt[]; +extern unsigned char pgn_6_eye6_TA_tex_txt[]; +extern unsigned char pgn_6_eye7_TA_tex_txt[]; +extern unsigned char pgn_6_eye8_TA_tex_txt[]; +extern unsigned char pgn_6_tmem_txt[]; +extern unsigned short pgn_7_pal[]; +extern unsigned char pgn_7_eye1_TA_tex_txt[]; +extern unsigned char pgn_7_eye2_TA_tex_txt[]; +extern unsigned char pgn_7_eye3_TA_tex_txt[]; +extern unsigned char pgn_7_eye4_TA_tex_txt[]; +extern unsigned char pgn_7_eye5_TA_tex_txt[]; +extern unsigned char pgn_7_eye6_TA_tex_txt[]; +extern unsigned char pgn_7_eye7_TA_tex_txt[]; +extern unsigned char pgn_7_eye8_TA_tex_txt[]; +extern unsigned char pgn_7_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pig_1; +extern unsigned short pig_1_pal[]; +extern unsigned char pig_1_eye1_TA_tex_txt[]; +extern unsigned char pig_1_eye2_TA_tex_txt[]; +extern unsigned char pig_1_eye3_TA_tex_txt[]; +extern unsigned char pig_1_eye4_TA_tex_txt[]; +extern unsigned char pig_1_eye5_TA_tex_txt[]; +extern unsigned char pig_1_eye6_TA_tex_txt[]; +extern unsigned char pig_1_eye7_TA_tex_txt[]; +extern unsigned char pig_1_eye8_TA_tex_txt[]; +extern unsigned char pig_1_mouth1_TA_tex_txt[]; +extern unsigned char pig_1_mouth2_TA_tex_txt[]; +extern unsigned char pig_1_mouth3_TA_tex_txt[]; +extern unsigned char pig_1_mouth4_TA_tex_txt[]; +extern unsigned char pig_1_mouth5_TA_tex_txt[]; +extern unsigned char pig_1_mouth6_TA_tex_txt[]; +extern unsigned char pig_1_tmem_txt[]; +extern unsigned short pig_2_pal[]; +extern unsigned char pig_2_eye1_TA_tex_txt[]; +extern unsigned char pig_2_eye2_TA_tex_txt[]; +extern unsigned char pig_2_eye3_TA_tex_txt[]; +extern unsigned char pig_2_eye4_TA_tex_txt[]; +extern unsigned char pig_2_eye5_TA_tex_txt[]; +extern unsigned char pig_2_eye6_TA_tex_txt[]; +extern unsigned char pig_2_eye7_TA_tex_txt[]; +extern unsigned char pig_2_eye8_TA_tex_txt[]; +extern unsigned char pig_2_mouth1_TA_tex_txt[]; +extern unsigned char pig_2_mouth2_TA_tex_txt[]; +extern unsigned char pig_2_mouth3_TA_tex_txt[]; +extern unsigned char pig_2_mouth4_TA_tex_txt[]; +extern unsigned char pig_2_mouth5_TA_tex_txt[]; +extern unsigned char pig_2_mouth6_TA_tex_txt[]; +extern unsigned char pig_2_tmem_txt[]; +extern unsigned short pig_3_pal[]; +extern unsigned char pig_3_eye1_TA_tex_txt[]; +extern unsigned char pig_3_eye2_TA_tex_txt[]; +extern unsigned char pig_3_eye3_TA_tex_txt[]; +extern unsigned char pig_3_eye4_TA_tex_txt[]; +extern unsigned char pig_3_eye5_TA_tex_txt[]; +extern unsigned char pig_3_eye6_TA_tex_txt[]; +extern unsigned char pig_3_eye7_TA_tex_txt[]; +extern unsigned char pig_3_eye8_TA_tex_txt[]; +extern unsigned char pig_3_mouth1_TA_tex_txt[]; +extern unsigned char pig_3_mouth2_TA_tex_txt[]; +extern unsigned char pig_3_mouth3_TA_tex_txt[]; +extern unsigned char pig_3_mouth4_TA_tex_txt[]; +extern unsigned char pig_3_mouth5_TA_tex_txt[]; +extern unsigned char pig_3_mouth6_TA_tex_txt[]; +extern unsigned char pig_3_tmem_txt[]; +extern unsigned short pig_4_pal[]; +extern unsigned char pig_4_eye1_TA_tex_txt[]; +extern unsigned char pig_4_eye2_TA_tex_txt[]; +extern unsigned char pig_4_eye3_TA_tex_txt[]; +extern unsigned char pig_4_eye4_TA_tex_txt[]; +extern unsigned char pig_4_eye5_TA_tex_txt[]; +extern unsigned char pig_4_eye6_TA_tex_txt[]; +extern unsigned char pig_4_eye7_TA_tex_txt[]; +extern unsigned char pig_4_eye8_TA_tex_txt[]; +extern unsigned char pig_4_mouth1_TA_tex_txt[]; +extern unsigned char pig_4_mouth2_TA_tex_txt[]; +extern unsigned char pig_4_mouth3_TA_tex_txt[]; +extern unsigned char pig_4_mouth4_TA_tex_txt[]; +extern unsigned char pig_4_mouth5_TA_tex_txt[]; +extern unsigned char pig_4_mouth6_TA_tex_txt[]; +extern unsigned char pig_4_tmem_txt[]; +extern unsigned short pig_5_pal[]; +extern unsigned char pig_5_eye1_TA_tex_txt[]; +extern unsigned char pig_5_eye2_TA_tex_txt[]; +extern unsigned char pig_5_eye3_TA_tex_txt[]; +extern unsigned char pig_5_eye4_TA_tex_txt[]; +extern unsigned char pig_5_eye5_TA_tex_txt[]; +extern unsigned char pig_5_eye6_TA_tex_txt[]; +extern unsigned char pig_5_eye7_TA_tex_txt[]; +extern unsigned char pig_5_eye8_TA_tex_txt[]; +extern unsigned char pig_5_mouth1_TA_tex_txt[]; +extern unsigned char pig_5_mouth2_TA_tex_txt[]; +extern unsigned char pig_5_mouth3_TA_tex_txt[]; +extern unsigned char pig_5_mouth4_TA_tex_txt[]; +extern unsigned char pig_5_mouth5_TA_tex_txt[]; +extern unsigned char pig_5_mouth6_TA_tex_txt[]; +extern unsigned char pig_5_tmem_txt[]; +extern unsigned short pig_6_pal[]; +extern unsigned char pig_6_eye1_TA_tex_txt[]; +extern unsigned char pig_6_eye2_TA_tex_txt[]; +extern unsigned char pig_6_eye3_TA_tex_txt[]; +extern unsigned char pig_6_eye4_TA_tex_txt[]; +extern unsigned char pig_6_eye5_TA_tex_txt[]; +extern unsigned char pig_6_eye6_TA_tex_txt[]; +extern unsigned char pig_6_eye7_TA_tex_txt[]; +extern unsigned char pig_6_eye8_TA_tex_txt[]; +extern unsigned char pig_6_mouth1_TA_tex_txt[]; +extern unsigned char pig_6_mouth2_TA_tex_txt[]; +extern unsigned char pig_6_mouth3_TA_tex_txt[]; +extern unsigned char pig_6_mouth4_TA_tex_txt[]; +extern unsigned char pig_6_mouth5_TA_tex_txt[]; +extern unsigned char pig_6_mouth6_TA_tex_txt[]; +extern unsigned char pig_6_tmem_txt[]; +extern unsigned short pig_7_pal[]; +extern unsigned char pig_7_eye1_TA_tex_txt[]; +extern unsigned char pig_7_eye2_TA_tex_txt[]; +extern unsigned char pig_7_eye3_TA_tex_txt[]; +extern unsigned char pig_7_eye4_TA_tex_txt[]; +extern unsigned char pig_7_eye5_TA_tex_txt[]; +extern unsigned char pig_7_eye6_TA_tex_txt[]; +extern unsigned char pig_7_eye7_TA_tex_txt[]; +extern unsigned char pig_7_eye8_TA_tex_txt[]; +extern unsigned char pig_7_mouth1_TA_tex_txt[]; +extern unsigned char pig_7_mouth2_TA_tex_txt[]; +extern unsigned char pig_7_mouth3_TA_tex_txt[]; +extern unsigned char pig_7_mouth4_TA_tex_txt[]; +extern unsigned char pig_7_mouth5_TA_tex_txt[]; +extern unsigned char pig_7_mouth6_TA_tex_txt[]; +extern unsigned char pig_7_tmem_txt[]; +extern unsigned short pig_8_pal[]; +extern unsigned char pig_8_eye1_TA_tex_txt[]; +extern unsigned char pig_8_eye2_TA_tex_txt[]; +extern unsigned char pig_8_eye3_TA_tex_txt[]; +extern unsigned char pig_8_eye4_TA_tex_txt[]; +extern unsigned char pig_8_eye5_TA_tex_txt[]; +extern unsigned char pig_8_eye6_TA_tex_txt[]; +extern unsigned char pig_8_eye7_TA_tex_txt[]; +extern unsigned char pig_8_eye8_TA_tex_txt[]; +extern unsigned char pig_8_mouth1_TA_tex_txt[]; +extern unsigned char pig_8_mouth2_TA_tex_txt[]; +extern unsigned char pig_8_mouth3_TA_tex_txt[]; +extern unsigned char pig_8_mouth4_TA_tex_txt[]; +extern unsigned char pig_8_mouth5_TA_tex_txt[]; +extern unsigned char pig_8_mouth6_TA_tex_txt[]; +extern unsigned char pig_8_tmem_txt[]; +extern unsigned short pig_9_pal[]; +extern unsigned char pig_9_eye1_TA_tex_txt[]; +extern unsigned char pig_9_eye2_TA_tex_txt[]; +extern unsigned char pig_9_eye3_TA_tex_txt[]; +extern unsigned char pig_9_eye4_TA_tex_txt[]; +extern unsigned char pig_9_eye5_TA_tex_txt[]; +extern unsigned char pig_9_eye6_TA_tex_txt[]; +extern unsigned char pig_9_eye7_TA_tex_txt[]; +extern unsigned char pig_9_eye8_TA_tex_txt[]; +extern unsigned char pig_9_mouth1_TA_tex_txt[]; +extern unsigned char pig_9_mouth2_TA_tex_txt[]; +extern unsigned char pig_9_mouth3_TA_tex_txt[]; +extern unsigned char pig_9_mouth4_TA_tex_txt[]; +extern unsigned char pig_9_mouth5_TA_tex_txt[]; +extern unsigned char pig_9_mouth6_TA_tex_txt[]; +extern unsigned char pig_9_tmem_txt[]; +extern unsigned short pig_10_pal[]; +extern unsigned char pig_10_eye1_TA_tex_txt[]; +extern unsigned char pig_10_eye2_TA_tex_txt[]; +extern unsigned char pig_10_eye3_TA_tex_txt[]; +extern unsigned char pig_10_eye4_TA_tex_txt[]; +extern unsigned char pig_10_eye5_TA_tex_txt[]; +extern unsigned char pig_10_eye6_TA_tex_txt[]; +extern unsigned char pig_10_eye7_TA_tex_txt[]; +extern unsigned char pig_10_eye8_TA_tex_txt[]; +extern unsigned char pig_10_mouth1_TA_tex_txt[]; +extern unsigned char pig_10_mouth2_TA_tex_txt[]; +extern unsigned char pig_10_mouth3_TA_tex_txt[]; +extern unsigned char pig_10_mouth4_TA_tex_txt[]; +extern unsigned char pig_10_mouth5_TA_tex_txt[]; +extern unsigned char pig_10_mouth6_TA_tex_txt[]; +extern unsigned char pig_10_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rbt_1; +extern unsigned short rbt_1_pal[]; +extern unsigned char rbt_1_eye1_TA_tex_txt[]; +extern unsigned char rbt_1_eye2_TA_tex_txt[]; +extern unsigned char rbt_1_eye3_TA_tex_txt[]; +extern unsigned char rbt_1_eye4_TA_tex_txt[]; +extern unsigned char rbt_1_eye5_TA_tex_txt[]; +extern unsigned char rbt_1_eye6_TA_tex_txt[]; +extern unsigned char rbt_1_eye7_TA_tex_txt[]; +extern unsigned char rbt_1_eye8_TA_tex_txt[]; +extern unsigned char rbt_1_mouth1_TA_tex_txt[]; +extern unsigned char rbt_1_mouth2_TA_tex_txt[]; +extern unsigned char rbt_1_mouth3_TA_tex_txt[]; +extern unsigned char rbt_1_mouth4_TA_tex_txt[]; +extern unsigned char rbt_1_mouth5_TA_tex_txt[]; +extern unsigned char rbt_1_mouth6_TA_tex_txt[]; +extern unsigned char rbt_1_tmem_txt[]; +extern unsigned short rbt_2_pal[]; +extern unsigned char rbt_2_eye1_TA_tex_txt[]; +extern unsigned char rbt_2_eye2_TA_tex_txt[]; +extern unsigned char rbt_2_eye3_TA_tex_txt[]; +extern unsigned char rbt_2_eye4_TA_tex_txt[]; +extern unsigned char rbt_2_eye5_TA_tex_txt[]; +extern unsigned char rbt_2_eye6_TA_tex_txt[]; +extern unsigned char rbt_2_eye7_TA_tex_txt[]; +extern unsigned char rbt_2_eye8_TA_tex_txt[]; +extern unsigned char rbt_2_mouth1_TA_tex_txt[]; +extern unsigned char rbt_2_mouth2_TA_tex_txt[]; +extern unsigned char rbt_2_mouth3_TA_tex_txt[]; +extern unsigned char rbt_2_mouth4_TA_tex_txt[]; +extern unsigned char rbt_2_mouth5_TA_tex_txt[]; +extern unsigned char rbt_2_mouth6_TA_tex_txt[]; +extern unsigned char rbt_2_tmem_txt[]; +extern unsigned short rbt_3_pal[]; +extern unsigned char rbt_3_eye1_TA_tex_txt[]; +extern unsigned char rbt_3_eye2_TA_tex_txt[]; +extern unsigned char rbt_3_eye3_TA_tex_txt[]; +extern unsigned char rbt_3_eye4_TA_tex_txt[]; +extern unsigned char rbt_3_eye5_TA_tex_txt[]; +extern unsigned char rbt_3_eye6_TA_tex_txt[]; +extern unsigned char rbt_3_eye7_TA_tex_txt[]; +extern unsigned char rbt_3_eye8_TA_tex_txt[]; +extern unsigned char rbt_3_mouth1_TA_tex_txt[]; +extern unsigned char rbt_3_mouth2_TA_tex_txt[]; +extern unsigned char rbt_3_mouth3_TA_tex_txt[]; +extern unsigned char rbt_3_mouth4_TA_tex_txt[]; +extern unsigned char rbt_3_mouth5_TA_tex_txt[]; +extern unsigned char rbt_3_mouth6_TA_tex_txt[]; +extern unsigned char rbt_3_tmem_txt[]; +extern unsigned short rbt_4_pal[]; +extern unsigned char rbt_4_eye1_TA_tex_txt[]; +extern unsigned char rbt_4_eye2_TA_tex_txt[]; +extern unsigned char rbt_4_eye3_TA_tex_txt[]; +extern unsigned char rbt_4_eye4_TA_tex_txt[]; +extern unsigned char rbt_4_eye5_TA_tex_txt[]; +extern unsigned char rbt_4_eye6_TA_tex_txt[]; +extern unsigned char rbt_4_eye7_TA_tex_txt[]; +extern unsigned char rbt_4_eye8_TA_tex_txt[]; +extern unsigned char rbt_4_mouth1_TA_tex_txt[]; +extern unsigned char rbt_4_mouth2_TA_tex_txt[]; +extern unsigned char rbt_4_mouth3_TA_tex_txt[]; +extern unsigned char rbt_4_mouth4_TA_tex_txt[]; +extern unsigned char rbt_4_mouth5_TA_tex_txt[]; +extern unsigned char rbt_4_mouth6_TA_tex_txt[]; +extern unsigned char rbt_4_tmem_txt[]; +extern unsigned short rbt_5_pal[]; +extern unsigned char rbt_5_eye1_TA_tex_txt[]; +extern unsigned char rbt_5_eye2_TA_tex_txt[]; +extern unsigned char rbt_5_eye3_TA_tex_txt[]; +extern unsigned char rbt_5_eye4_TA_tex_txt[]; +extern unsigned char rbt_5_eye5_TA_tex_txt[]; +extern unsigned char rbt_5_eye6_TA_tex_txt[]; +extern unsigned char rbt_5_eye7_TA_tex_txt[]; +extern unsigned char rbt_5_eye8_TA_tex_txt[]; +extern unsigned char rbt_5_mouth1_TA_tex_txt[]; +extern unsigned char rbt_5_mouth2_TA_tex_txt[]; +extern unsigned char rbt_5_mouth3_TA_tex_txt[]; +extern unsigned char rbt_5_mouth4_TA_tex_txt[]; +extern unsigned char rbt_5_mouth5_TA_tex_txt[]; +extern unsigned char rbt_5_mouth6_TA_tex_txt[]; +extern unsigned char rbt_5_tmem_txt[]; +extern unsigned short rbt_6_pal[]; +extern unsigned char rbt_6_eye1_TA_tex_txt[]; +extern unsigned char rbt_6_eye2_TA_tex_txt[]; +extern unsigned char rbt_6_eye3_TA_tex_txt[]; +extern unsigned char rbt_6_eye4_TA_tex_txt[]; +extern unsigned char rbt_6_eye5_TA_tex_txt[]; +extern unsigned char rbt_6_eye6_TA_tex_txt[]; +extern unsigned char rbt_6_eye7_TA_tex_txt[]; +extern unsigned char rbt_6_eye8_TA_tex_txt[]; +extern unsigned char rbt_6_mouth1_TA_tex_txt[]; +extern unsigned char rbt_6_mouth2_TA_tex_txt[]; +extern unsigned char rbt_6_mouth3_TA_tex_txt[]; +extern unsigned char rbt_6_mouth4_TA_tex_txt[]; +extern unsigned char rbt_6_mouth5_TA_tex_txt[]; +extern unsigned char rbt_6_mouth6_TA_tex_txt[]; +extern unsigned char rbt_6_tmem_txt[]; +extern unsigned short rbt_7_pal[]; +extern unsigned char rbt_7_eye1_TA_tex_txt[]; +extern unsigned char rbt_7_eye2_TA_tex_txt[]; +extern unsigned char rbt_7_eye3_TA_tex_txt[]; +extern unsigned char rbt_7_eye4_TA_tex_txt[]; +extern unsigned char rbt_7_eye5_TA_tex_txt[]; +extern unsigned char rbt_7_eye6_TA_tex_txt[]; +extern unsigned char rbt_7_eye7_TA_tex_txt[]; +extern unsigned char rbt_7_eye8_TA_tex_txt[]; +extern unsigned char rbt_7_mouth1_TA_tex_txt[]; +extern unsigned char rbt_7_mouth2_TA_tex_txt[]; +extern unsigned char rbt_7_mouth3_TA_tex_txt[]; +extern unsigned char rbt_7_mouth4_TA_tex_txt[]; +extern unsigned char rbt_7_mouth5_TA_tex_txt[]; +extern unsigned char rbt_7_mouth6_TA_tex_txt[]; +extern unsigned char rbt_7_tmem_txt[]; +extern unsigned short rbt_8_pal[]; +extern unsigned char rbt_8_eye1_TA_tex_txt[]; +extern unsigned char rbt_8_eye2_TA_tex_txt[]; +extern unsigned char rbt_8_eye3_TA_tex_txt[]; +extern unsigned char rbt_8_eye4_TA_tex_txt[]; +extern unsigned char rbt_8_eye5_TA_tex_txt[]; +extern unsigned char rbt_8_eye6_TA_tex_txt[]; +extern unsigned char rbt_8_eye7_TA_tex_txt[]; +extern unsigned char rbt_8_eye8_TA_tex_txt[]; +extern unsigned char rbt_8_mouth1_TA_tex_txt[]; +extern unsigned char rbt_8_mouth2_TA_tex_txt[]; +extern unsigned char rbt_8_mouth3_TA_tex_txt[]; +extern unsigned char rbt_8_mouth4_TA_tex_txt[]; +extern unsigned char rbt_8_mouth5_TA_tex_txt[]; +extern unsigned char rbt_8_mouth6_TA_tex_txt[]; +extern unsigned char rbt_8_tmem_txt[]; +extern unsigned short rbt_9_pal[]; +extern unsigned char rbt_9_eye1_TA_tex_txt[]; +extern unsigned char rbt_9_eye2_TA_tex_txt[]; +extern unsigned char rbt_9_eye3_TA_tex_txt[]; +extern unsigned char rbt_9_eye4_TA_tex_txt[]; +extern unsigned char rbt_9_eye5_TA_tex_txt[]; +extern unsigned char rbt_9_eye6_TA_tex_txt[]; +extern unsigned char rbt_9_eye7_TA_tex_txt[]; +extern unsigned char rbt_9_eye8_TA_tex_txt[]; +extern unsigned char rbt_9_mouth1_TA_tex_txt[]; +extern unsigned char rbt_9_mouth2_TA_tex_txt[]; +extern unsigned char rbt_9_mouth3_TA_tex_txt[]; +extern unsigned char rbt_9_mouth4_TA_tex_txt[]; +extern unsigned char rbt_9_mouth5_TA_tex_txt[]; +extern unsigned char rbt_9_mouth6_TA_tex_txt[]; +extern unsigned char rbt_9_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rhn_1; +extern unsigned short rhn_1_pal[]; +extern unsigned char rhn_1_eye1_TA_tex_txt[]; +extern unsigned char rhn_1_eye2_TA_tex_txt[]; +extern unsigned char rhn_1_eye3_TA_tex_txt[]; +extern unsigned char rhn_1_eye4_TA_tex_txt[]; +extern unsigned char rhn_1_eye5_TA_tex_txt[]; +extern unsigned char rhn_1_eye6_TA_tex_txt[]; +extern unsigned char rhn_1_eye7_TA_tex_txt[]; +extern unsigned char rhn_1_eye8_TA_tex_txt[]; +extern unsigned char rhn_1_mouth1_TA_tex_txt[]; +extern unsigned char rhn_1_mouth2_TA_tex_txt[]; +extern unsigned char rhn_1_mouth3_TA_tex_txt[]; +extern unsigned char rhn_1_mouth4_TA_tex_txt[]; +extern unsigned char rhn_1_mouth5_TA_tex_txt[]; +extern unsigned char rhn_1_mouth6_TA_tex_txt[]; +extern unsigned char rhn_1_tmem_txt[]; +extern unsigned short rhn_2_pal[]; +extern unsigned char rhn_2_eye1_TA_tex_txt[]; +extern unsigned char rhn_2_eye2_TA_tex_txt[]; +extern unsigned char rhn_2_eye3_TA_tex_txt[]; +extern unsigned char rhn_2_eye4_TA_tex_txt[]; +extern unsigned char rhn_2_eye5_TA_tex_txt[]; +extern unsigned char rhn_2_eye6_TA_tex_txt[]; +extern unsigned char rhn_2_eye7_TA_tex_txt[]; +extern unsigned char rhn_2_eye8_TA_tex_txt[]; +extern unsigned char rhn_2_mouth1_TA_tex_txt[]; +extern unsigned char rhn_2_mouth2_TA_tex_txt[]; +extern unsigned char rhn_2_mouth3_TA_tex_txt[]; +extern unsigned char rhn_2_mouth4_TA_tex_txt[]; +extern unsigned char rhn_2_mouth5_TA_tex_txt[]; +extern unsigned char rhn_2_mouth6_TA_tex_txt[]; +extern unsigned char rhn_2_tmem_txt[]; +extern unsigned short rhn_3_pal[]; +extern unsigned char rhn_3_eye1_TA_tex_txt[]; +extern unsigned char rhn_3_eye2_TA_tex_txt[]; +extern unsigned char rhn_3_eye3_TA_tex_txt[]; +extern unsigned char rhn_3_eye4_TA_tex_txt[]; +extern unsigned char rhn_3_eye5_TA_tex_txt[]; +extern unsigned char rhn_3_eye6_TA_tex_txt[]; +extern unsigned char rhn_3_eye7_TA_tex_txt[]; +extern unsigned char rhn_3_eye8_TA_tex_txt[]; +extern unsigned char rhn_3_mouth1_TA_tex_txt[]; +extern unsigned char rhn_3_mouth2_TA_tex_txt[]; +extern unsigned char rhn_3_mouth3_TA_tex_txt[]; +extern unsigned char rhn_3_mouth4_TA_tex_txt[]; +extern unsigned char rhn_3_mouth5_TA_tex_txt[]; +extern unsigned char rhn_3_mouth6_TA_tex_txt[]; +extern unsigned char rhn_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_shp_1; +extern unsigned short shp_1_pal[]; +extern unsigned char shp_1_eye1_TA_tex_txt[]; +extern unsigned char shp_1_eye2_TA_tex_txt[]; +extern unsigned char shp_1_eye3_TA_tex_txt[]; +extern unsigned char shp_1_eye4_TA_tex_txt[]; +extern unsigned char shp_1_eye5_TA_tex_txt[]; +extern unsigned char shp_1_eye6_TA_tex_txt[]; +extern unsigned char shp_1_eye7_TA_tex_txt[]; +extern unsigned char shp_1_eye8_TA_tex_txt[]; +extern unsigned char shp_1_mouth1_TA_tex_txt[]; +extern unsigned char shp_1_mouth2_TA_tex_txt[]; +extern unsigned char shp_1_mouth3_TA_tex_txt[]; +extern unsigned char shp_1_mouth4_TA_tex_txt[]; +extern unsigned char shp_1_mouth5_TA_tex_txt[]; +extern unsigned char shp_1_mouth6_TA_tex_txt[]; +extern unsigned char shp_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_squ_1; +extern unsigned short squ_1_pal[]; +extern unsigned char squ_1_eye1_TA_tex_txt[]; +extern unsigned char squ_1_eye2_TA_tex_txt[]; +extern unsigned char squ_1_eye3_TA_tex_txt[]; +extern unsigned char squ_1_eye4_TA_tex_txt[]; +extern unsigned char squ_1_eye5_TA_tex_txt[]; +extern unsigned char squ_1_eye6_TA_tex_txt[]; +extern unsigned char squ_1_eye7_TA_tex_txt[]; +extern unsigned char squ_1_eye8_TA_tex_txt[]; +extern unsigned char squ_1_mouth1_TA_tex_txt[]; +extern unsigned char squ_1_mouth2_TA_tex_txt[]; +extern unsigned char squ_1_mouth3_TA_tex_txt[]; +extern unsigned char squ_1_mouth4_TA_tex_txt[]; +extern unsigned char squ_1_mouth5_TA_tex_txt[]; +extern unsigned char squ_1_mouth6_TA_tex_txt[]; +extern unsigned char squ_1_tmem_txt[]; +extern unsigned short squ_2_pal[]; +extern unsigned char squ_2_eye1_TA_tex_txt[]; +extern unsigned char squ_2_eye2_TA_tex_txt[]; +extern unsigned char squ_2_eye3_TA_tex_txt[]; +extern unsigned char squ_2_eye4_TA_tex_txt[]; +extern unsigned char squ_2_eye5_TA_tex_txt[]; +extern unsigned char squ_2_eye6_TA_tex_txt[]; +extern unsigned char squ_2_eye7_TA_tex_txt[]; +extern unsigned char squ_2_eye8_TA_tex_txt[]; +extern unsigned char squ_2_mouth1_TA_tex_txt[]; +extern unsigned char squ_2_mouth2_TA_tex_txt[]; +extern unsigned char squ_2_mouth3_TA_tex_txt[]; +extern unsigned char squ_2_mouth4_TA_tex_txt[]; +extern unsigned char squ_2_mouth5_TA_tex_txt[]; +extern unsigned char squ_2_mouth6_TA_tex_txt[]; +extern unsigned char squ_2_tmem_txt[]; +extern unsigned short squ_3_pal[]; +extern unsigned char squ_3_eye1_TA_tex_txt[]; +extern unsigned char squ_3_eye2_TA_tex_txt[]; +extern unsigned char squ_3_eye3_TA_tex_txt[]; +extern unsigned char squ_3_eye4_TA_tex_txt[]; +extern unsigned char squ_3_eye5_TA_tex_txt[]; +extern unsigned char squ_3_eye6_TA_tex_txt[]; +extern unsigned char squ_3_eye7_TA_tex_txt[]; +extern unsigned char squ_3_eye8_TA_tex_txt[]; +extern unsigned char squ_3_mouth1_TA_tex_txt[]; +extern unsigned char squ_3_mouth2_TA_tex_txt[]; +extern unsigned char squ_3_mouth3_TA_tex_txt[]; +extern unsigned char squ_3_mouth4_TA_tex_txt[]; +extern unsigned char squ_3_mouth5_TA_tex_txt[]; +extern unsigned char squ_3_mouth6_TA_tex_txt[]; +extern unsigned char squ_3_tmem_txt[]; +extern unsigned short squ_4_pal[]; +extern unsigned char squ_4_eye1_TA_tex_txt[]; +extern unsigned char squ_4_eye2_TA_tex_txt[]; +extern unsigned char squ_4_eye3_TA_tex_txt[]; +extern unsigned char squ_4_eye4_TA_tex_txt[]; +extern unsigned char squ_4_eye5_TA_tex_txt[]; +extern unsigned char squ_4_eye6_TA_tex_txt[]; +extern unsigned char squ_4_eye7_TA_tex_txt[]; +extern unsigned char squ_4_eye8_TA_tex_txt[]; +extern unsigned char squ_4_mouth1_TA_tex_txt[]; +extern unsigned char squ_4_mouth2_TA_tex_txt[]; +extern unsigned char squ_4_mouth3_TA_tex_txt[]; +extern unsigned char squ_4_mouth4_TA_tex_txt[]; +extern unsigned char squ_4_mouth5_TA_tex_txt[]; +extern unsigned char squ_4_mouth6_TA_tex_txt[]; +extern unsigned char squ_4_tmem_txt[]; +extern unsigned short squ_5_pal[]; +extern unsigned char squ_5_eye1_TA_tex_txt[]; +extern unsigned char squ_5_eye2_TA_tex_txt[]; +extern unsigned char squ_5_eye3_TA_tex_txt[]; +extern unsigned char squ_5_eye4_TA_tex_txt[]; +extern unsigned char squ_5_eye5_TA_tex_txt[]; +extern unsigned char squ_5_eye6_TA_tex_txt[]; +extern unsigned char squ_5_eye7_TA_tex_txt[]; +extern unsigned char squ_5_eye8_TA_tex_txt[]; +extern unsigned char squ_5_mouth1_TA_tex_txt[]; +extern unsigned char squ_5_mouth2_TA_tex_txt[]; +extern unsigned char squ_5_mouth3_TA_tex_txt[]; +extern unsigned char squ_5_mouth4_TA_tex_txt[]; +extern unsigned char squ_5_mouth5_TA_tex_txt[]; +extern unsigned char squ_5_mouth6_TA_tex_txt[]; +extern unsigned char squ_5_tmem_txt[]; +extern unsigned short squ_6_pal[]; +extern unsigned char squ_6_eye1_TA_tex_txt[]; +extern unsigned char squ_6_eye2_TA_tex_txt[]; +extern unsigned char squ_6_eye3_TA_tex_txt[]; +extern unsigned char squ_6_eye4_TA_tex_txt[]; +extern unsigned char squ_6_eye5_TA_tex_txt[]; +extern unsigned char squ_6_eye6_TA_tex_txt[]; +extern unsigned char squ_6_eye7_TA_tex_txt[]; +extern unsigned char squ_6_eye8_TA_tex_txt[]; +extern unsigned char squ_6_mouth1_TA_tex_txt[]; +extern unsigned char squ_6_mouth2_TA_tex_txt[]; +extern unsigned char squ_6_mouth3_TA_tex_txt[]; +extern unsigned char squ_6_mouth4_TA_tex_txt[]; +extern unsigned char squ_6_mouth5_TA_tex_txt[]; +extern unsigned char squ_6_mouth6_TA_tex_txt[]; +extern unsigned char squ_6_tmem_txt[]; +extern unsigned short squ_7_pal[]; +extern unsigned char squ_7_eye1_TA_tex_txt[]; +extern unsigned char squ_7_eye2_TA_tex_txt[]; +extern unsigned char squ_7_eye3_TA_tex_txt[]; +extern unsigned char squ_7_eye4_TA_tex_txt[]; +extern unsigned char squ_7_eye5_TA_tex_txt[]; +extern unsigned char squ_7_eye6_TA_tex_txt[]; +extern unsigned char squ_7_eye7_TA_tex_txt[]; +extern unsigned char squ_7_eye8_TA_tex_txt[]; +extern unsigned char squ_7_mouth1_TA_tex_txt[]; +extern unsigned char squ_7_mouth2_TA_tex_txt[]; +extern unsigned char squ_7_mouth3_TA_tex_txt[]; +extern unsigned char squ_7_mouth4_TA_tex_txt[]; +extern unsigned char squ_7_mouth5_TA_tex_txt[]; +extern unsigned char squ_7_mouth6_TA_tex_txt[]; +extern unsigned char squ_7_tmem_txt[]; +extern unsigned short squ_8_pal[]; +extern unsigned char squ_8_eye1_TA_tex_txt[]; +extern unsigned char squ_8_eye2_TA_tex_txt[]; +extern unsigned char squ_8_eye3_TA_tex_txt[]; +extern unsigned char squ_8_eye4_TA_tex_txt[]; +extern unsigned char squ_8_eye5_TA_tex_txt[]; +extern unsigned char squ_8_eye6_TA_tex_txt[]; +extern unsigned char squ_8_eye7_TA_tex_txt[]; +extern unsigned char squ_8_eye8_TA_tex_txt[]; +extern unsigned char squ_8_mouth1_TA_tex_txt[]; +extern unsigned char squ_8_mouth2_TA_tex_txt[]; +extern unsigned char squ_8_mouth3_TA_tex_txt[]; +extern unsigned char squ_8_mouth4_TA_tex_txt[]; +extern unsigned char squ_8_mouth5_TA_tex_txt[]; +extern unsigned char squ_8_mouth6_TA_tex_txt[]; +extern unsigned char squ_8_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_tig_1; +extern unsigned short tig_1_pal[]; +extern unsigned char tig_1_eye1_TA_tex_txt[]; +extern unsigned char tig_1_eye2_TA_tex_txt[]; +extern unsigned char tig_1_eye3_TA_tex_txt[]; +extern unsigned char tig_1_eye4_TA_tex_txt[]; +extern unsigned char tig_1_eye5_TA_tex_txt[]; +extern unsigned char tig_1_eye6_TA_tex_txt[]; +extern unsigned char tig_1_eye7_TA_tex_txt[]; +extern unsigned char tig_1_eye8_TA_tex_txt[]; +extern unsigned char tig_1_tmem_txt[]; +extern unsigned short tig_2_pal[]; +extern unsigned char tig_2_eye1_TA_tex_txt[]; +extern unsigned char tig_2_eye2_TA_tex_txt[]; +extern unsigned char tig_2_eye3_TA_tex_txt[]; +extern unsigned char tig_2_eye4_TA_tex_txt[]; +extern unsigned char tig_2_eye5_TA_tex_txt[]; +extern unsigned char tig_2_eye6_TA_tex_txt[]; +extern unsigned char tig_2_eye7_TA_tex_txt[]; +extern unsigned char tig_2_eye8_TA_tex_txt[]; +extern unsigned char tig_2_tmem_txt[]; +extern unsigned short tig_3_pal[]; +extern unsigned char tig_3_eye1_TA_tex_txt[]; +extern unsigned char tig_3_eye2_TA_tex_txt[]; +extern unsigned char tig_3_eye3_TA_tex_txt[]; +extern unsigned char tig_3_eye4_TA_tex_txt[]; +extern unsigned char tig_3_eye5_TA_tex_txt[]; +extern unsigned char tig_3_eye6_TA_tex_txt[]; +extern unsigned char tig_3_eye7_TA_tex_txt[]; +extern unsigned char tig_3_eye8_TA_tex_txt[]; +extern unsigned char tig_3_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_wol_1; +extern unsigned short wol_1_pal[]; +extern unsigned char wol_1_eye1_TA_tex_txt[]; +extern unsigned char wol_1_eye2_TA_tex_txt[]; +extern unsigned char wol_1_eye3_TA_tex_txt[]; +extern unsigned char wol_1_eye4_TA_tex_txt[]; +extern unsigned char wol_1_eye5_TA_tex_txt[]; +extern unsigned char wol_1_eye6_TA_tex_txt[]; +extern unsigned char wol_1_eye7_TA_tex_txt[]; +extern unsigned char wol_1_eye8_TA_tex_txt[]; +extern unsigned char wol_1_tmem_txt[]; +extern unsigned short wol_2_pal[]; +extern unsigned char wol_2_eye1_TA_tex_txt[]; +extern unsigned char wol_2_eye2_TA_tex_txt[]; +extern unsigned char wol_2_eye3_TA_tex_txt[]; +extern unsigned char wol_2_eye4_TA_tex_txt[]; +extern unsigned char wol_2_eye5_TA_tex_txt[]; +extern unsigned char wol_2_eye6_TA_tex_txt[]; +extern unsigned char wol_2_eye7_TA_tex_txt[]; +extern unsigned char wol_2_eye8_TA_tex_txt[]; +extern unsigned char wol_2_tmem_txt[]; +extern unsigned short wol_3_pal[]; +extern unsigned char wol_3_eye1_TA_tex_txt[]; +extern unsigned char wol_3_eye2_TA_tex_txt[]; +extern unsigned char wol_3_eye3_TA_tex_txt[]; +extern unsigned char wol_3_eye4_TA_tex_txt[]; +extern unsigned char wol_3_eye5_TA_tex_txt[]; +extern unsigned char wol_3_eye6_TA_tex_txt[]; +extern unsigned char wol_3_eye7_TA_tex_txt[]; +extern unsigned char wol_3_eye8_TA_tex_txt[]; +extern unsigned char wol_3_tmem_txt[]; +extern unsigned short duk_7_pal[]; +extern unsigned char duk_7_eye1_TA_tex_txt[]; +extern unsigned char duk_7_eye2_TA_tex_txt[]; +extern unsigned char duk_7_eye3_TA_tex_txt[]; +extern unsigned char duk_7_eye4_TA_tex_txt[]; +extern unsigned char duk_7_eye5_TA_tex_txt[]; +extern unsigned char duk_7_eye6_TA_tex_txt[]; +extern unsigned char duk_7_eye7_TA_tex_txt[]; +extern unsigned char duk_7_eye8_TA_tex_txt[]; +extern unsigned char duk_7_mouth1_TA_tex_txt[]; +extern unsigned char duk_7_mouth2_TA_tex_txt[]; +extern unsigned char duk_7_mouth3_TA_tex_txt[]; +extern unsigned char duk_7_mouth4_TA_tex_txt[]; +extern unsigned char duk_7_mouth5_TA_tex_txt[]; +extern unsigned char duk_7_mouth6_TA_tex_txt[]; +extern unsigned char duk_7_tmem_txt[]; +extern unsigned short duk_8_pal[]; +extern unsigned char duk_8_eye1_TA_tex_txt[]; +extern unsigned char duk_8_eye2_TA_tex_txt[]; +extern unsigned char duk_8_eye3_TA_tex_txt[]; +extern unsigned char duk_8_eye4_TA_tex_txt[]; +extern unsigned char duk_8_eye5_TA_tex_txt[]; +extern unsigned char duk_8_eye6_TA_tex_txt[]; +extern unsigned char duk_8_eye7_TA_tex_txt[]; +extern unsigned char duk_8_eye8_TA_tex_txt[]; +extern unsigned char duk_8_mouth1_TA_tex_txt[]; +extern unsigned char duk_8_mouth2_TA_tex_txt[]; +extern unsigned char duk_8_mouth3_TA_tex_txt[]; +extern unsigned char duk_8_mouth4_TA_tex_txt[]; +extern unsigned char duk_8_mouth5_TA_tex_txt[]; +extern unsigned char duk_8_mouth6_TA_tex_txt[]; +extern unsigned char duk_8_tmem_txt[]; +extern unsigned short wol_4_pal[]; +extern unsigned char wol_4_eye1_TA_tex_txt[]; +extern unsigned char wol_4_eye2_TA_tex_txt[]; +extern unsigned char wol_4_eye3_TA_tex_txt[]; +extern unsigned char wol_4_eye4_TA_tex_txt[]; +extern unsigned char wol_4_eye5_TA_tex_txt[]; +extern unsigned char wol_4_eye6_TA_tex_txt[]; +extern unsigned char wol_4_eye7_TA_tex_txt[]; +extern unsigned char wol_4_eye8_TA_tex_txt[]; +extern unsigned char wol_4_tmem_txt[]; +extern unsigned short rhn_4_pal[]; +extern unsigned char rhn_4_eye1_TA_tex_txt[]; +extern unsigned char rhn_4_eye2_TA_tex_txt[]; +extern unsigned char rhn_4_eye3_TA_tex_txt[]; +extern unsigned char rhn_4_eye4_TA_tex_txt[]; +extern unsigned char rhn_4_eye5_TA_tex_txt[]; +extern unsigned char rhn_4_eye6_TA_tex_txt[]; +extern unsigned char rhn_4_eye7_TA_tex_txt[]; +extern unsigned char rhn_4_eye8_TA_tex_txt[]; +extern unsigned char rhn_4_mouth1_TA_tex_txt[]; +extern unsigned char rhn_4_mouth2_TA_tex_txt[]; +extern unsigned char rhn_4_mouth3_TA_tex_txt[]; +extern unsigned char rhn_4_mouth4_TA_tex_txt[]; +extern unsigned char rhn_4_mouth5_TA_tex_txt[]; +extern unsigned char rhn_4_mouth6_TA_tex_txt[]; +extern unsigned char rhn_4_tmem_txt[]; +extern unsigned short bul_3_pal[]; +extern unsigned char bul_3_eye1_TA_tex_txt[]; +extern unsigned char bul_3_eye2_TA_tex_txt[]; +extern unsigned char bul_3_eye3_TA_tex_txt[]; +extern unsigned char bul_3_eye4_TA_tex_txt[]; +extern unsigned char bul_3_eye5_TA_tex_txt[]; +extern unsigned char bul_3_eye6_TA_tex_txt[]; +extern unsigned char bul_3_eye7_TA_tex_txt[]; +extern unsigned char bul_3_eye8_TA_tex_txt[]; +extern unsigned char bul_3_mouth1_TA_tex_txt[]; +extern unsigned char bul_3_mouth2_TA_tex_txt[]; +extern unsigned char bul_3_mouth3_TA_tex_txt[]; +extern unsigned char bul_3_mouth4_TA_tex_txt[]; +extern unsigned char bul_3_mouth5_TA_tex_txt[]; +extern unsigned char bul_3_mouth6_TA_tex_txt[]; +extern unsigned char bul_3_tmem_txt[]; +extern unsigned short bul_4_pal[]; +extern unsigned char bul_4_eye1_TA_tex_txt[]; +extern unsigned char bul_4_eye2_TA_tex_txt[]; +extern unsigned char bul_4_eye3_TA_tex_txt[]; +extern unsigned char bul_4_eye4_TA_tex_txt[]; +extern unsigned char bul_4_eye5_TA_tex_txt[]; +extern unsigned char bul_4_eye6_TA_tex_txt[]; +extern unsigned char bul_4_eye7_TA_tex_txt[]; +extern unsigned char bul_4_eye8_TA_tex_txt[]; +extern unsigned char bul_4_mouth1_TA_tex_txt[]; +extern unsigned char bul_4_mouth2_TA_tex_txt[]; +extern unsigned char bul_4_mouth3_TA_tex_txt[]; +extern unsigned char bul_4_mouth4_TA_tex_txt[]; +extern unsigned char bul_4_mouth5_TA_tex_txt[]; +extern unsigned char bul_4_mouth6_TA_tex_txt[]; +extern unsigned char bul_4_tmem_txt[]; +extern unsigned short hip_4_pal[]; +extern unsigned char hip_4_eye1_TA_tex_txt[]; +extern unsigned char hip_4_eye2_TA_tex_txt[]; +extern unsigned char hip_4_eye3_TA_tex_txt[]; +extern unsigned char hip_4_eye4_TA_tex_txt[]; +extern unsigned char hip_4_eye5_TA_tex_txt[]; +extern unsigned char hip_4_eye6_TA_tex_txt[]; +extern unsigned char hip_4_eye7_TA_tex_txt[]; +extern unsigned char hip_4_eye8_TA_tex_txt[]; +extern unsigned char hip_4_tmem_txt[]; +extern unsigned short elp_4_pal[]; +extern unsigned char elp_4_eye1_TA_tex_txt[]; +extern unsigned char elp_4_eye2_TA_tex_txt[]; +extern unsigned char elp_4_eye3_TA_tex_txt[]; +extern unsigned char elp_4_eye4_TA_tex_txt[]; +extern unsigned char elp_4_eye5_TA_tex_txt[]; +extern unsigned char elp_4_eye6_TA_tex_txt[]; +extern unsigned char elp_4_eye7_TA_tex_txt[]; +extern unsigned char elp_4_eye8_TA_tex_txt[]; +extern unsigned char elp_4_mouth1_TA_tex_txt[]; +extern unsigned char elp_4_mouth2_TA_tex_txt[]; +extern unsigned char elp_4_mouth3_TA_tex_txt[]; +extern unsigned char elp_4_mouth4_TA_tex_txt[]; +extern unsigned char elp_4_mouth5_TA_tex_txt[]; +extern unsigned char elp_4_mouth6_TA_tex_txt[]; +extern unsigned char elp_4_tmem_txt[]; +extern unsigned short dog_9_pal[]; +extern unsigned char dog_9_eye1_TA_tex_txt[]; +extern unsigned char dog_9_eye2_TA_tex_txt[]; +extern unsigned char dog_9_eye3_TA_tex_txt[]; +extern unsigned char dog_9_eye4_TA_tex_txt[]; +extern unsigned char dog_9_eye5_TA_tex_txt[]; +extern unsigned char dog_9_eye6_TA_tex_txt[]; +extern unsigned char dog_9_eye7_TA_tex_txt[]; +extern unsigned char dog_9_eye8_TA_tex_txt[]; +extern unsigned char dog_9_mouth1_TA_tex_txt[]; +extern unsigned char dog_9_mouth2_TA_tex_txt[]; +extern unsigned char dog_9_mouth3_TA_tex_txt[]; +extern unsigned char dog_9_mouth4_TA_tex_txt[]; +extern unsigned char dog_9_mouth5_TA_tex_txt[]; +extern unsigned char dog_9_mouth6_TA_tex_txt[]; +extern unsigned char dog_9_tmem_txt[]; +extern unsigned short dog_10_pal[]; +extern unsigned char dog_10_eye1_TA_tex_txt[]; +extern unsigned char dog_10_eye2_TA_tex_txt[]; +extern unsigned char dog_10_eye3_TA_tex_txt[]; +extern unsigned char dog_10_eye4_TA_tex_txt[]; +extern unsigned char dog_10_eye5_TA_tex_txt[]; +extern unsigned char dog_10_eye6_TA_tex_txt[]; +extern unsigned char dog_10_eye7_TA_tex_txt[]; +extern unsigned char dog_10_eye8_TA_tex_txt[]; +extern unsigned char dog_10_mouth1_TA_tex_txt[]; +extern unsigned char dog_10_mouth2_TA_tex_txt[]; +extern unsigned char dog_10_mouth3_TA_tex_txt[]; +extern unsigned char dog_10_mouth4_TA_tex_txt[]; +extern unsigned char dog_10_mouth5_TA_tex_txt[]; +extern unsigned char dog_10_mouth6_TA_tex_txt[]; +extern unsigned char dog_10_tmem_txt[]; +extern unsigned short hip_5_pal[]; +extern unsigned char hip_5_eye1_TA_tex_txt[]; +extern unsigned char hip_5_eye2_TA_tex_txt[]; +extern unsigned char hip_5_eye3_TA_tex_txt[]; +extern unsigned char hip_5_eye4_TA_tex_txt[]; +extern unsigned char hip_5_eye5_TA_tex_txt[]; +extern unsigned char hip_5_eye6_TA_tex_txt[]; +extern unsigned char hip_5_eye7_TA_tex_txt[]; +extern unsigned char hip_5_eye8_TA_tex_txt[]; +extern unsigned char hip_5_tmem_txt[]; +extern unsigned short hip_6_pal[]; +extern unsigned char hip_6_eye1_TA_tex_txt[]; +extern unsigned char hip_6_eye2_TA_tex_txt[]; +extern unsigned char hip_6_eye3_TA_tex_txt[]; +extern unsigned char hip_6_eye4_TA_tex_txt[]; +extern unsigned char hip_6_eye5_TA_tex_txt[]; +extern unsigned char hip_6_eye6_TA_tex_txt[]; +extern unsigned char hip_6_eye7_TA_tex_txt[]; +extern unsigned char hip_6_eye8_TA_tex_txt[]; +extern unsigned char hip_6_tmem_txt[]; +extern unsigned short hip_7_pal[]; +extern unsigned char hip_7_eye1_TA_tex_txt[]; +extern unsigned char hip_7_eye2_TA_tex_txt[]; +extern unsigned char hip_7_eye3_TA_tex_txt[]; +extern unsigned char hip_7_eye4_TA_tex_txt[]; +extern unsigned char hip_7_eye5_TA_tex_txt[]; +extern unsigned char hip_7_eye6_TA_tex_txt[]; +extern unsigned char hip_7_eye7_TA_tex_txt[]; +extern unsigned char hip_7_eye8_TA_tex_txt[]; +extern unsigned char hip_7_tmem_txt[]; +extern unsigned short squ_9_pal[]; +extern unsigned char squ_9_eye1_TA_tex_txt[]; +extern unsigned char squ_9_eye2_TA_tex_txt[]; +extern unsigned char squ_9_eye3_TA_tex_txt[]; +extern unsigned char squ_9_eye4_TA_tex_txt[]; +extern unsigned char squ_9_eye5_TA_tex_txt[]; +extern unsigned char squ_9_eye6_TA_tex_txt[]; +extern unsigned char squ_9_eye7_TA_tex_txt[]; +extern unsigned char squ_9_eye8_TA_tex_txt[]; +extern unsigned char squ_9_mouth1_TA_tex_txt[]; +extern unsigned char squ_9_mouth2_TA_tex_txt[]; +extern unsigned char squ_9_mouth3_TA_tex_txt[]; +extern unsigned char squ_9_mouth4_TA_tex_txt[]; +extern unsigned char squ_9_mouth5_TA_tex_txt[]; +extern unsigned char squ_9_mouth6_TA_tex_txt[]; +extern unsigned char squ_9_tmem_txt[]; +extern unsigned short squ_10_pal[]; +extern unsigned char squ_10_eye1_TA_tex_txt[]; +extern unsigned char squ_10_eye2_TA_tex_txt[]; +extern unsigned char squ_10_eye3_TA_tex_txt[]; +extern unsigned char squ_10_eye4_TA_tex_txt[]; +extern unsigned char squ_10_eye5_TA_tex_txt[]; +extern unsigned char squ_10_eye6_TA_tex_txt[]; +extern unsigned char squ_10_eye7_TA_tex_txt[]; +extern unsigned char squ_10_eye8_TA_tex_txt[]; +extern unsigned char squ_10_mouth1_TA_tex_txt[]; +extern unsigned char squ_10_mouth2_TA_tex_txt[]; +extern unsigned char squ_10_mouth3_TA_tex_txt[]; +extern unsigned char squ_10_mouth4_TA_tex_txt[]; +extern unsigned char squ_10_mouth5_TA_tex_txt[]; +extern unsigned char squ_10_mouth6_TA_tex_txt[]; +extern unsigned char squ_10_tmem_txt[]; +extern unsigned short elp_5_pal[]; +extern unsigned char elp_5_eye1_TA_tex_txt[]; +extern unsigned char elp_5_eye2_TA_tex_txt[]; +extern unsigned char elp_5_eye3_TA_tex_txt[]; +extern unsigned char elp_5_eye4_TA_tex_txt[]; +extern unsigned char elp_5_eye5_TA_tex_txt[]; +extern unsigned char elp_5_eye6_TA_tex_txt[]; +extern unsigned char elp_5_eye7_TA_tex_txt[]; +extern unsigned char elp_5_eye8_TA_tex_txt[]; +extern unsigned char elp_5_mouth1_TA_tex_txt[]; +extern unsigned char elp_5_mouth2_TA_tex_txt[]; +extern unsigned char elp_5_mouth3_TA_tex_txt[]; +extern unsigned char elp_5_mouth4_TA_tex_txt[]; +extern unsigned char elp_5_mouth5_TA_tex_txt[]; +extern unsigned char elp_5_mouth6_TA_tex_txt[]; +extern unsigned char elp_5_tmem_txt[]; +extern unsigned short elp_6_pal[]; +extern unsigned char elp_6_eye1_TA_tex_txt[]; +extern unsigned char elp_6_eye2_TA_tex_txt[]; +extern unsigned char elp_6_eye3_TA_tex_txt[]; +extern unsigned char elp_6_eye4_TA_tex_txt[]; +extern unsigned char elp_6_eye5_TA_tex_txt[]; +extern unsigned char elp_6_eye6_TA_tex_txt[]; +extern unsigned char elp_6_eye7_TA_tex_txt[]; +extern unsigned char elp_6_eye8_TA_tex_txt[]; +extern unsigned char elp_6_mouth1_TA_tex_txt[]; +extern unsigned char elp_6_mouth2_TA_tex_txt[]; +extern unsigned char elp_6_mouth3_TA_tex_txt[]; +extern unsigned char elp_6_mouth4_TA_tex_txt[]; +extern unsigned char elp_6_mouth5_TA_tex_txt[]; +extern unsigned char elp_6_mouth6_TA_tex_txt[]; +extern unsigned char elp_6_tmem_txt[]; +extern unsigned short crd_4_pal[]; +extern unsigned char crd_4_eye1_TA_tex_txt[]; +extern unsigned char crd_4_eye2_TA_tex_txt[]; +extern unsigned char crd_4_eye3_TA_tex_txt[]; +extern unsigned char crd_4_eye4_TA_tex_txt[]; +extern unsigned char crd_4_eye5_TA_tex_txt[]; +extern unsigned char crd_4_eye6_TA_tex_txt[]; +extern unsigned char crd_4_eye7_TA_tex_txt[]; +extern unsigned char crd_4_eye8_TA_tex_txt[]; +extern unsigned char crd_4_tmem_txt[]; +extern unsigned short rbt_10_pal[]; +extern unsigned char rbt_10_eye1_TA_tex_txt[]; +extern unsigned char rbt_10_eye2_TA_tex_txt[]; +extern unsigned char rbt_10_eye3_TA_tex_txt[]; +extern unsigned char rbt_10_eye4_TA_tex_txt[]; +extern unsigned char rbt_10_eye5_TA_tex_txt[]; +extern unsigned char rbt_10_eye6_TA_tex_txt[]; +extern unsigned char rbt_10_eye7_TA_tex_txt[]; +extern unsigned char rbt_10_eye8_TA_tex_txt[]; +extern unsigned char rbt_10_mouth1_TA_tex_txt[]; +extern unsigned char rbt_10_mouth2_TA_tex_txt[]; +extern unsigned char rbt_10_mouth3_TA_tex_txt[]; +extern unsigned char rbt_10_mouth4_TA_tex_txt[]; +extern unsigned char rbt_10_mouth5_TA_tex_txt[]; +extern unsigned char rbt_10_mouth6_TA_tex_txt[]; +extern unsigned char rbt_10_tmem_txt[]; +extern unsigned short shp_2_pal[]; +extern unsigned char shp_2_eye1_TA_tex_txt[]; +extern unsigned char shp_2_eye2_TA_tex_txt[]; +extern unsigned char shp_2_eye3_TA_tex_txt[]; +extern unsigned char shp_2_eye4_TA_tex_txt[]; +extern unsigned char shp_2_eye5_TA_tex_txt[]; +extern unsigned char shp_2_eye6_TA_tex_txt[]; +extern unsigned char shp_2_eye7_TA_tex_txt[]; +extern unsigned char shp_2_eye8_TA_tex_txt[]; +extern unsigned char shp_2_mouth1_TA_tex_txt[]; +extern unsigned char shp_2_mouth2_TA_tex_txt[]; +extern unsigned char shp_2_mouth3_TA_tex_txt[]; +extern unsigned char shp_2_mouth4_TA_tex_txt[]; +extern unsigned char shp_2_mouth5_TA_tex_txt[]; +extern unsigned char shp_2_mouth6_TA_tex_txt[]; +extern unsigned char shp_2_tmem_txt[]; +extern unsigned short shp_3_pal[]; +extern unsigned char shp_3_eye1_TA_tex_txt[]; +extern unsigned char shp_3_eye2_TA_tex_txt[]; +extern unsigned char shp_3_eye3_TA_tex_txt[]; +extern unsigned char shp_3_eye4_TA_tex_txt[]; +extern unsigned char shp_3_eye5_TA_tex_txt[]; +extern unsigned char shp_3_eye6_TA_tex_txt[]; +extern unsigned char shp_3_eye7_TA_tex_txt[]; +extern unsigned char shp_3_eye8_TA_tex_txt[]; +extern unsigned char shp_3_mouth1_TA_tex_txt[]; +extern unsigned char shp_3_mouth2_TA_tex_txt[]; +extern unsigned char shp_3_mouth3_TA_tex_txt[]; +extern unsigned char shp_3_mouth4_TA_tex_txt[]; +extern unsigned char shp_3_mouth5_TA_tex_txt[]; +extern unsigned char shp_3_mouth6_TA_tex_txt[]; +extern unsigned char shp_3_tmem_txt[]; +extern unsigned short wol_5_pal[]; +extern unsigned char wol_5_eye1_TA_tex_txt[]; +extern unsigned char wol_5_eye2_TA_tex_txt[]; +extern unsigned char wol_5_eye3_TA_tex_txt[]; +extern unsigned char wol_5_eye4_TA_tex_txt[]; +extern unsigned char wol_5_eye5_TA_tex_txt[]; +extern unsigned char wol_5_eye6_TA_tex_txt[]; +extern unsigned char wol_5_eye7_TA_tex_txt[]; +extern unsigned char wol_5_eye8_TA_tex_txt[]; +extern unsigned char wol_5_tmem_txt[]; +extern unsigned short duk_9_pal[]; +extern unsigned char duk_9_eye1_TA_tex_txt[]; +extern unsigned char duk_9_eye2_TA_tex_txt[]; +extern unsigned char duk_9_eye3_TA_tex_txt[]; +extern unsigned char duk_9_eye4_TA_tex_txt[]; +extern unsigned char duk_9_eye5_TA_tex_txt[]; +extern unsigned char duk_9_eye6_TA_tex_txt[]; +extern unsigned char duk_9_eye7_TA_tex_txt[]; +extern unsigned char duk_9_eye8_TA_tex_txt[]; +extern unsigned char duk_9_mouth1_TA_tex_txt[]; +extern unsigned char duk_9_mouth2_TA_tex_txt[]; +extern unsigned char duk_9_mouth3_TA_tex_txt[]; +extern unsigned char duk_9_mouth4_TA_tex_txt[]; +extern unsigned char duk_9_mouth5_TA_tex_txt[]; +extern unsigned char duk_9_mouth6_TA_tex_txt[]; +extern unsigned char duk_9_tmem_txt[]; +extern unsigned short duk_10_pal[]; +extern unsigned char duk_10_eye1_TA_tex_txt[]; +extern unsigned char duk_10_eye2_TA_tex_txt[]; +extern unsigned char duk_10_eye3_TA_tex_txt[]; +extern unsigned char duk_10_eye4_TA_tex_txt[]; +extern unsigned char duk_10_eye5_TA_tex_txt[]; +extern unsigned char duk_10_eye6_TA_tex_txt[]; +extern unsigned char duk_10_eye7_TA_tex_txt[]; +extern unsigned char duk_10_eye8_TA_tex_txt[]; +extern unsigned char duk_10_mouth1_TA_tex_txt[]; +extern unsigned char duk_10_mouth2_TA_tex_txt[]; +extern unsigned char duk_10_mouth3_TA_tex_txt[]; +extern unsigned char duk_10_mouth4_TA_tex_txt[]; +extern unsigned char duk_10_mouth5_TA_tex_txt[]; +extern unsigned char duk_10_mouth6_TA_tex_txt[]; +extern unsigned char duk_10_tmem_txt[]; +extern unsigned short shp_4_pal[]; +extern unsigned char shp_4_eye1_TA_tex_txt[]; +extern unsigned char shp_4_eye2_TA_tex_txt[]; +extern unsigned char shp_4_eye3_TA_tex_txt[]; +extern unsigned char shp_4_eye4_TA_tex_txt[]; +extern unsigned char shp_4_eye5_TA_tex_txt[]; +extern unsigned char shp_4_eye6_TA_tex_txt[]; +extern unsigned char shp_4_eye7_TA_tex_txt[]; +extern unsigned char shp_4_eye8_TA_tex_txt[]; +extern unsigned char shp_4_mouth1_TA_tex_txt[]; +extern unsigned char shp_4_mouth2_TA_tex_txt[]; +extern unsigned char shp_4_mouth3_TA_tex_txt[]; +extern unsigned char shp_4_mouth4_TA_tex_txt[]; +extern unsigned char shp_4_mouth5_TA_tex_txt[]; +extern unsigned char shp_4_mouth6_TA_tex_txt[]; +extern unsigned char shp_4_tmem_txt[]; +extern unsigned short shp_5_pal[]; +extern unsigned char shp_5_eye1_TA_tex_txt[]; +extern unsigned char shp_5_eye2_TA_tex_txt[]; +extern unsigned char shp_5_eye3_TA_tex_txt[]; +extern unsigned char shp_5_eye4_TA_tex_txt[]; +extern unsigned char shp_5_eye5_TA_tex_txt[]; +extern unsigned char shp_5_eye6_TA_tex_txt[]; +extern unsigned char shp_5_eye7_TA_tex_txt[]; +extern unsigned char shp_5_eye8_TA_tex_txt[]; +extern unsigned char shp_5_mouth1_TA_tex_txt[]; +extern unsigned char shp_5_mouth2_TA_tex_txt[]; +extern unsigned char shp_5_mouth3_TA_tex_txt[]; +extern unsigned char shp_5_mouth4_TA_tex_txt[]; +extern unsigned char shp_5_mouth5_TA_tex_txt[]; +extern unsigned char shp_5_mouth6_TA_tex_txt[]; +extern unsigned char shp_5_tmem_txt[]; +extern unsigned short shp_6_pal[]; +extern unsigned char shp_6_eye1_TA_tex_txt[]; +extern unsigned char shp_6_eye2_TA_tex_txt[]; +extern unsigned char shp_6_eye3_TA_tex_txt[]; +extern unsigned char shp_6_eye4_TA_tex_txt[]; +extern unsigned char shp_6_eye5_TA_tex_txt[]; +extern unsigned char shp_6_eye6_TA_tex_txt[]; +extern unsigned char shp_6_eye7_TA_tex_txt[]; +extern unsigned char shp_6_eye8_TA_tex_txt[]; +extern unsigned char shp_6_mouth1_TA_tex_txt[]; +extern unsigned char shp_6_mouth2_TA_tex_txt[]; +extern unsigned char shp_6_mouth3_TA_tex_txt[]; +extern unsigned char shp_6_mouth4_TA_tex_txt[]; +extern unsigned char shp_6_mouth5_TA_tex_txt[]; +extern unsigned char shp_6_mouth6_TA_tex_txt[]; +extern unsigned char shp_6_tmem_txt[]; +extern unsigned short dog_7_pal[]; +extern unsigned char dog_7_eye1_TA_tex_txt[]; +extern unsigned char dog_7_eye2_TA_tex_txt[]; +extern unsigned char dog_7_eye3_TA_tex_txt[]; +extern unsigned char dog_7_eye4_TA_tex_txt[]; +extern unsigned char dog_7_eye5_TA_tex_txt[]; +extern unsigned char dog_7_eye6_TA_tex_txt[]; +extern unsigned char dog_7_eye7_TA_tex_txt[]; +extern unsigned char dog_7_eye8_TA_tex_txt[]; +extern unsigned char dog_7_mouth1_TA_tex_txt[]; +extern unsigned char dog_7_mouth2_TA_tex_txt[]; +extern unsigned char dog_7_mouth3_TA_tex_txt[]; +extern unsigned char dog_7_mouth4_TA_tex_txt[]; +extern unsigned char dog_7_mouth5_TA_tex_txt[]; +extern unsigned char dog_7_mouth6_TA_tex_txt[]; +extern unsigned char dog_7_tmem_txt[]; +extern unsigned short duk_11_pal[]; +extern unsigned char duk_11_eye1_TA_tex_txt[]; +extern unsigned char duk_11_eye2_TA_tex_txt[]; +extern unsigned char duk_11_eye3_TA_tex_txt[]; +extern unsigned char duk_11_eye4_TA_tex_txt[]; +extern unsigned char duk_11_eye5_TA_tex_txt[]; +extern unsigned char duk_11_eye6_TA_tex_txt[]; +extern unsigned char duk_11_eye7_TA_tex_txt[]; +extern unsigned char duk_11_eye8_TA_tex_txt[]; +extern unsigned char duk_11_mouth1_TA_tex_txt[]; +extern unsigned char duk_11_mouth2_TA_tex_txt[]; +extern unsigned char duk_11_mouth3_TA_tex_txt[]; +extern unsigned char duk_11_mouth4_TA_tex_txt[]; +extern unsigned char duk_11_mouth5_TA_tex_txt[]; +extern unsigned char duk_11_mouth6_TA_tex_txt[]; +extern unsigned char duk_11_tmem_txt[]; +extern unsigned short rbt_11_pal[]; +extern unsigned char rbt_11_eye1_TA_tex_txt[]; +extern unsigned char rbt_11_eye2_TA_tex_txt[]; +extern unsigned char rbt_11_eye3_TA_tex_txt[]; +extern unsigned char rbt_11_eye4_TA_tex_txt[]; +extern unsigned char rbt_11_eye5_TA_tex_txt[]; +extern unsigned char rbt_11_eye6_TA_tex_txt[]; +extern unsigned char rbt_11_eye7_TA_tex_txt[]; +extern unsigned char rbt_11_eye8_TA_tex_txt[]; +extern unsigned char rbt_11_mouth1_TA_tex_txt[]; +extern unsigned char rbt_11_mouth2_TA_tex_txt[]; +extern unsigned char rbt_11_mouth3_TA_tex_txt[]; +extern unsigned char rbt_11_mouth4_TA_tex_txt[]; +extern unsigned char rbt_11_mouth5_TA_tex_txt[]; +extern unsigned char rbt_11_mouth6_TA_tex_txt[]; +extern unsigned char rbt_11_tmem_txt[]; +extern unsigned short squ_11_pal[]; +extern unsigned char squ_11_eye1_TA_tex_txt[]; +extern unsigned char squ_11_eye2_TA_tex_txt[]; +extern unsigned char squ_11_eye3_TA_tex_txt[]; +extern unsigned char squ_11_eye4_TA_tex_txt[]; +extern unsigned char squ_11_eye5_TA_tex_txt[]; +extern unsigned char squ_11_eye6_TA_tex_txt[]; +extern unsigned char squ_11_eye7_TA_tex_txt[]; +extern unsigned char squ_11_eye8_TA_tex_txt[]; +extern unsigned char squ_11_mouth1_TA_tex_txt[]; +extern unsigned char squ_11_mouth2_TA_tex_txt[]; +extern unsigned char squ_11_mouth3_TA_tex_txt[]; +extern unsigned char squ_11_mouth4_TA_tex_txt[]; +extern unsigned char squ_11_mouth5_TA_tex_txt[]; +extern unsigned char squ_11_mouth6_TA_tex_txt[]; +extern unsigned char squ_11_tmem_txt[]; +extern unsigned short flg_13_pal[]; +extern unsigned char flg_13_eye1_TA_tex_txt[]; +extern unsigned char flg_13_eye2_TA_tex_txt[]; +extern unsigned char flg_13_eye3_TA_tex_txt[]; +extern unsigned char flg_13_eye4_TA_tex_txt[]; +extern unsigned char flg_13_eye5_TA_tex_txt[]; +extern unsigned char flg_13_eye6_TA_tex_txt[]; +extern unsigned char flg_13_eye7_TA_tex_txt[]; +extern unsigned char flg_13_eye8_TA_tex_txt[]; +extern unsigned char flg_13_mouth1_TA_tex_txt[]; +extern unsigned char flg_13_mouth2_TA_tex_txt[]; +extern unsigned char flg_13_mouth3_TA_tex_txt[]; +extern unsigned char flg_13_mouth4_TA_tex_txt[]; +extern unsigned char flg_13_mouth5_TA_tex_txt[]; +extern unsigned char flg_13_mouth6_TA_tex_txt[]; +extern unsigned char flg_13_tmem_txt[]; +extern unsigned short lon_4_pal[]; +extern unsigned char lon_4_eye1_TA_tex_txt[]; +extern unsigned char lon_4_eye2_TA_tex_txt[]; +extern unsigned char lon_4_eye3_TA_tex_txt[]; +extern unsigned char lon_4_eye4_TA_tex_txt[]; +extern unsigned char lon_4_eye5_TA_tex_txt[]; +extern unsigned char lon_4_eye6_TA_tex_txt[]; +extern unsigned char lon_4_eye7_TA_tex_txt[]; +extern unsigned char lon_4_eye8_TA_tex_txt[]; +extern unsigned char lon_4_mouth1_TA_tex_txt[]; +extern unsigned char lon_4_mouth2_TA_tex_txt[]; +extern unsigned char lon_4_mouth3_TA_tex_txt[]; +extern unsigned char lon_4_mouth4_TA_tex_txt[]; +extern unsigned char lon_4_mouth5_TA_tex_txt[]; +extern unsigned char lon_4_mouth6_TA_tex_txt[]; +extern unsigned char lon_4_tmem_txt[]; +extern unsigned short pgn_8_pal[]; +extern unsigned char pgn_8_eye1_TA_tex_txt[]; +extern unsigned char pgn_8_eye2_TA_tex_txt[]; +extern unsigned char pgn_8_eye3_TA_tex_txt[]; +extern unsigned char pgn_8_eye4_TA_tex_txt[]; +extern unsigned char pgn_8_eye5_TA_tex_txt[]; +extern unsigned char pgn_8_eye6_TA_tex_txt[]; +extern unsigned char pgn_8_eye7_TA_tex_txt[]; +extern unsigned char pgn_8_eye8_TA_tex_txt[]; +extern unsigned char pgn_8_tmem_txt[]; +extern unsigned short elp_7_pal[]; +extern unsigned char elp_7_eye1_TA_tex_txt[]; +extern unsigned char elp_7_eye2_TA_tex_txt[]; +extern unsigned char elp_7_eye3_TA_tex_txt[]; +extern unsigned char elp_7_eye4_TA_tex_txt[]; +extern unsigned char elp_7_eye5_TA_tex_txt[]; +extern unsigned char elp_7_eye6_TA_tex_txt[]; +extern unsigned char elp_7_eye7_TA_tex_txt[]; +extern unsigned char elp_7_eye8_TA_tex_txt[]; +extern unsigned char elp_7_mouth1_TA_tex_txt[]; +extern unsigned char elp_7_mouth2_TA_tex_txt[]; +extern unsigned char elp_7_mouth3_TA_tex_txt[]; +extern unsigned char elp_7_mouth4_TA_tex_txt[]; +extern unsigned char elp_7_mouth5_TA_tex_txt[]; +extern unsigned char elp_7_mouth6_TA_tex_txt[]; +extern unsigned char elp_7_tmem_txt[]; +extern unsigned short brd_11_pal[]; +extern unsigned char brd_11_eye1_TA_tex_txt[]; +extern unsigned char brd_11_eye2_TA_tex_txt[]; +extern unsigned char brd_11_eye3_TA_tex_txt[]; +extern unsigned char brd_11_eye4_TA_tex_txt[]; +extern unsigned char brd_11_eye5_TA_tex_txt[]; +extern unsigned char brd_11_eye6_TA_tex_txt[]; +extern unsigned char brd_11_eye7_TA_tex_txt[]; +extern unsigned char brd_11_eye8_TA_tex_txt[]; +extern unsigned char brd_11_tmem_txt[]; +extern unsigned short wol_6_pal[]; +extern unsigned char wol_6_eye1_TA_tex_txt[]; +extern unsigned char wol_6_eye2_TA_tex_txt[]; +extern unsigned char wol_6_eye3_TA_tex_txt[]; +extern unsigned char wol_6_eye4_TA_tex_txt[]; +extern unsigned char wol_6_eye5_TA_tex_txt[]; +extern unsigned char wol_6_eye6_TA_tex_txt[]; +extern unsigned char wol_6_eye7_TA_tex_txt[]; +extern unsigned char wol_6_eye8_TA_tex_txt[]; +extern unsigned char wol_6_tmem_txt[]; +extern unsigned short mus_10_pal[]; +extern unsigned char mus_10_eye1_TA_tex_txt[]; +extern unsigned char mus_10_eye2_TA_tex_txt[]; +extern unsigned char mus_10_eye3_TA_tex_txt[]; +extern unsigned char mus_10_eye4_TA_tex_txt[]; +extern unsigned char mus_10_eye5_TA_tex_txt[]; +extern unsigned char mus_10_eye6_TA_tex_txt[]; +extern unsigned char mus_10_eye7_TA_tex_txt[]; +extern unsigned char mus_10_eye8_TA_tex_txt[]; +extern unsigned char mus_10_mouth1_TA_tex_txt[]; +extern unsigned char mus_10_mouth2_TA_tex_txt[]; +extern unsigned char mus_10_mouth3_TA_tex_txt[]; +extern unsigned char mus_10_mouth4_TA_tex_txt[]; +extern unsigned char mus_10_mouth5_TA_tex_txt[]; +extern unsigned char mus_10_mouth6_TA_tex_txt[]; +extern unsigned char mus_10_tmem_txt[]; +extern unsigned short hrs_8_pal[]; +extern unsigned char hrs_8_eye1_TA_tex_txt[]; +extern unsigned char hrs_8_eye2_TA_tex_txt[]; +extern unsigned char hrs_8_eye3_TA_tex_txt[]; +extern unsigned char hrs_8_eye4_TA_tex_txt[]; +extern unsigned char hrs_8_eye5_TA_tex_txt[]; +extern unsigned char hrs_8_eye6_TA_tex_txt[]; +extern unsigned char hrs_8_eye7_TA_tex_txt[]; +extern unsigned char hrs_8_eye8_TA_tex_txt[]; +extern unsigned char hrs_8_tmem_txt[]; +extern unsigned short chn_9_pal[]; +extern unsigned char chn_9_eye1_TA_tex_txt[]; +extern unsigned char chn_9_eye2_TA_tex_txt[]; +extern unsigned char chn_9_eye3_TA_tex_txt[]; +extern unsigned char chn_9_eye4_TA_tex_txt[]; +extern unsigned char chn_9_eye5_TA_tex_txt[]; +extern unsigned char chn_9_eye6_TA_tex_txt[]; +extern unsigned char chn_9_eye7_TA_tex_txt[]; +extern unsigned char chn_9_eye8_TA_tex_txt[]; +extern unsigned char chn_9_tmem_txt[]; +extern unsigned short kal_6_pal[]; +extern unsigned char kal_6_eye1_TA_tex_txt[]; +extern unsigned char kal_6_eye2_TA_tex_txt[]; +extern unsigned char kal_6_eye3_TA_tex_txt[]; +extern unsigned char kal_6_eye4_TA_tex_txt[]; +extern unsigned char kal_6_eye5_TA_tex_txt[]; +extern unsigned char kal_6_eye6_TA_tex_txt[]; +extern unsigned char kal_6_eye7_TA_tex_txt[]; +extern unsigned char kal_6_eye8_TA_tex_txt[]; +extern unsigned char kal_6_mouth1_TA_tex_txt[]; +extern unsigned char kal_6_mouth2_TA_tex_txt[]; +extern unsigned char kal_6_mouth3_TA_tex_txt[]; +extern unsigned char kal_6_mouth4_TA_tex_txt[]; +extern unsigned char kal_6_mouth5_TA_tex_txt[]; +extern unsigned char kal_6_mouth6_TA_tex_txt[]; +extern unsigned char kal_6_tmem_txt[]; +extern unsigned short gor_5_pal[]; +extern unsigned char gor_5_eye1_TA_tex_txt[]; +extern unsigned char gor_5_eye2_TA_tex_txt[]; +extern unsigned char gor_5_eye3_TA_tex_txt[]; +extern unsigned char gor_5_eye4_TA_tex_txt[]; +extern unsigned char gor_5_eye5_TA_tex_txt[]; +extern unsigned char gor_5_eye6_TA_tex_txt[]; +extern unsigned char gor_5_eye7_TA_tex_txt[]; +extern unsigned char gor_5_eye8_TA_tex_txt[]; +extern unsigned char gor_5_mouth1_TA_tex_txt[]; +extern unsigned char gor_5_mouth2_TA_tex_txt[]; +extern unsigned char gor_5_mouth3_TA_tex_txt[]; +extern unsigned char gor_5_mouth4_TA_tex_txt[]; +extern unsigned char gor_5_mouth5_TA_tex_txt[]; +extern unsigned char gor_5_mouth6_TA_tex_txt[]; +extern unsigned char gor_5_tmem_txt[]; +extern unsigned short tig_4_pal[]; +extern unsigned char tig_4_eye1_TA_tex_txt[]; +extern unsigned char tig_4_eye2_TA_tex_txt[]; +extern unsigned char tig_4_eye3_TA_tex_txt[]; +extern unsigned char tig_4_eye4_TA_tex_txt[]; +extern unsigned char tig_4_eye5_TA_tex_txt[]; +extern unsigned char tig_4_eye6_TA_tex_txt[]; +extern unsigned char tig_4_eye7_TA_tex_txt[]; +extern unsigned char tig_4_eye8_TA_tex_txt[]; +extern unsigned char tig_4_tmem_txt[]; +extern unsigned short cbr_10_pal[]; +extern unsigned char cbr_10_eye1_TA_tex_txt[]; +extern unsigned char cbr_10_eye2_TA_tex_txt[]; +extern unsigned char cbr_10_eye3_TA_tex_txt[]; +extern unsigned char cbr_10_eye4_TA_tex_txt[]; +extern unsigned char cbr_10_eye5_TA_tex_txt[]; +extern unsigned char cbr_10_eye6_TA_tex_txt[]; +extern unsigned char cbr_10_eye7_TA_tex_txt[]; +extern unsigned char cbr_10_eye8_TA_tex_txt[]; +extern unsigned char cbr_10_mouth1_TA_tex_txt[]; +extern unsigned char cbr_10_mouth2_TA_tex_txt[]; +extern unsigned char cbr_10_mouth3_TA_tex_txt[]; +extern unsigned char cbr_10_mouth4_TA_tex_txt[]; +extern unsigned char cbr_10_mouth5_TA_tex_txt[]; +extern unsigned char cbr_10_mouth6_TA_tex_txt[]; +extern unsigned char cbr_10_tmem_txt[]; +extern unsigned short cbr_11_pal[]; +extern unsigned char cbr_11_eye1_TA_tex_txt[]; +extern unsigned char cbr_11_eye2_TA_tex_txt[]; +extern unsigned char cbr_11_eye3_TA_tex_txt[]; +extern unsigned char cbr_11_eye4_TA_tex_txt[]; +extern unsigned char cbr_11_eye5_TA_tex_txt[]; +extern unsigned char cbr_11_eye6_TA_tex_txt[]; +extern unsigned char cbr_11_eye7_TA_tex_txt[]; +extern unsigned char cbr_11_eye8_TA_tex_txt[]; +extern unsigned char cbr_11_mouth1_TA_tex_txt[]; +extern unsigned char cbr_11_mouth2_TA_tex_txt[]; +extern unsigned char cbr_11_mouth3_TA_tex_txt[]; +extern unsigned char cbr_11_mouth4_TA_tex_txt[]; +extern unsigned char cbr_11_mouth5_TA_tex_txt[]; +extern unsigned char cbr_11_mouth6_TA_tex_txt[]; +extern unsigned char cbr_11_tmem_txt[]; +extern unsigned short pig_11_pal[]; +extern unsigned char pig_11_eye1_TA_tex_txt[]; +extern unsigned char pig_11_eye2_TA_tex_txt[]; +extern unsigned char pig_11_eye3_TA_tex_txt[]; +extern unsigned char pig_11_eye4_TA_tex_txt[]; +extern unsigned char pig_11_eye5_TA_tex_txt[]; +extern unsigned char pig_11_eye6_TA_tex_txt[]; +extern unsigned char pig_11_eye7_TA_tex_txt[]; +extern unsigned char pig_11_eye8_TA_tex_txt[]; +extern unsigned char pig_11_mouth1_TA_tex_txt[]; +extern unsigned char pig_11_mouth2_TA_tex_txt[]; +extern unsigned char pig_11_mouth3_TA_tex_txt[]; +extern unsigned char pig_11_mouth4_TA_tex_txt[]; +extern unsigned char pig_11_mouth5_TA_tex_txt[]; +extern unsigned char pig_11_mouth6_TA_tex_txt[]; +extern unsigned char pig_11_tmem_txt[]; +extern unsigned short cat_14_pal[]; +extern unsigned char cat_14_eye1_TA_tex_txt[]; +extern unsigned char cat_14_eye2_TA_tex_txt[]; +extern unsigned char cat_14_eye3_TA_tex_txt[]; +extern unsigned char cat_14_eye4_TA_tex_txt[]; +extern unsigned char cat_14_eye5_TA_tex_txt[]; +extern unsigned char cat_14_eye6_TA_tex_txt[]; +extern unsigned char cat_14_eye7_TA_tex_txt[]; +extern unsigned char cat_14_eye8_TA_tex_txt[]; +extern unsigned char cat_14_mouth1_TA_tex_txt[]; +extern unsigned char cat_14_mouth2_TA_tex_txt[]; +extern unsigned char cat_14_mouth3_TA_tex_txt[]; +extern unsigned char cat_14_mouth4_TA_tex_txt[]; +extern unsigned char cat_14_mouth5_TA_tex_txt[]; +extern unsigned char cat_14_mouth6_TA_tex_txt[]; +extern unsigned char cat_14_tmem_txt[]; +extern unsigned short cat_15_pal[]; +extern unsigned char cat_15_eye1_TA_tex_txt[]; +extern unsigned char cat_15_eye2_TA_tex_txt[]; +extern unsigned char cat_15_eye3_TA_tex_txt[]; +extern unsigned char cat_15_eye4_TA_tex_txt[]; +extern unsigned char cat_15_eye5_TA_tex_txt[]; +extern unsigned char cat_15_eye6_TA_tex_txt[]; +extern unsigned char cat_15_eye7_TA_tex_txt[]; +extern unsigned char cat_15_eye8_TA_tex_txt[]; +extern unsigned char cat_15_mouth1_TA_tex_txt[]; +extern unsigned char cat_15_mouth2_TA_tex_txt[]; +extern unsigned char cat_15_mouth3_TA_tex_txt[]; +extern unsigned char cat_15_mouth4_TA_tex_txt[]; +extern unsigned char cat_15_mouth5_TA_tex_txt[]; +extern unsigned char cat_15_mouth6_TA_tex_txt[]; +extern unsigned char cat_15_tmem_txt[]; +extern unsigned short chn_1_pal[]; +extern unsigned char chn_1_eye1_TA_tex_txt[]; +extern unsigned char chn_1_eye2_TA_tex_txt[]; +extern unsigned char chn_1_eye3_TA_tex_txt[]; +extern unsigned char chn_1_eye4_TA_tex_txt[]; +extern unsigned char chn_1_eye5_TA_tex_txt[]; +extern unsigned char chn_1_eye6_TA_tex_txt[]; +extern unsigned char chn_1_eye7_TA_tex_txt[]; +extern unsigned char chn_1_eye8_TA_tex_txt[]; +extern unsigned char chn_1_tmem_txt[]; +extern unsigned short chn_1_pal[]; +extern unsigned char chn_1_eye1_TA_tex_txt[]; +extern unsigned char chn_1_eye2_TA_tex_txt[]; +extern unsigned char chn_1_eye3_TA_tex_txt[]; +extern unsigned char chn_1_eye4_TA_tex_txt[]; +extern unsigned char chn_1_eye5_TA_tex_txt[]; +extern unsigned char chn_1_eye6_TA_tex_txt[]; +extern unsigned char chn_1_eye7_TA_tex_txt[]; +extern unsigned char chn_1_eye8_TA_tex_txt[]; +extern unsigned char chn_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_wls_1; +extern unsigned short wls_1_pal[]; +extern unsigned char wls_1_eye1_TA_tex_txt[]; +extern unsigned char wls_1_eye2_TA_tex_txt[]; +extern unsigned char wls_1_eye3_TA_tex_txt[]; +extern unsigned char wls_1_eye4_TA_tex_txt[]; +extern unsigned char wls_1_eye5_TA_tex_txt[]; +extern unsigned char wls_1_eye6_TA_tex_txt[]; +extern unsigned char wls_1_eye7_TA_tex_txt[]; +extern unsigned char wls_1_eye8_TA_tex_txt[]; +extern unsigned char wls_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_fox_1; +extern unsigned short fox_1_pal[]; +extern unsigned char fox_1_eye1_TA_tex_txt[]; +extern unsigned char fox_1_eye2_TA_tex_txt[]; +extern unsigned char fox_1_eye3_TA_tex_txt[]; +extern unsigned char fox_1_eye4_TA_tex_txt[]; +extern unsigned char fox_1_eye5_TA_tex_txt[]; +extern unsigned char fox_1_eye6_TA_tex_txt[]; +extern unsigned char fox_1_eye7_TA_tex_txt[]; +extern unsigned char fox_1_eye8_TA_tex_txt[]; +extern unsigned char fox_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_grf_1; +extern unsigned short grf_1_pal[]; +extern unsigned char grf_1_eye1_TA_tex_txt[]; +extern unsigned char grf_1_eye2_TA_tex_txt[]; +extern unsigned char grf_1_eye3_TA_tex_txt[]; +extern unsigned char grf_1_eye4_TA_tex_txt[]; +extern unsigned char grf_1_eye5_TA_tex_txt[]; +extern unsigned char grf_1_eye6_TA_tex_txt[]; +extern unsigned char grf_1_eye7_TA_tex_txt[]; +extern unsigned char grf_1_eye8_TA_tex_txt[]; +extern unsigned char grf_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pga_1; +extern unsigned short pga_1_pal[]; +extern unsigned char pga_1_eye1_TA_tex_txt[]; +extern unsigned char pga_1_eye2_TA_tex_txt[]; +extern unsigned char pga_1_eye3_TA_tex_txt[]; +extern unsigned char pga_1_eye4_TA_tex_txt[]; +extern unsigned char pga_1_eye5_TA_tex_txt[]; +extern unsigned char pga_1_eye6_TA_tex_txt[]; +extern unsigned char pga_1_eye7_TA_tex_txt[]; +extern unsigned char pga_1_eye8_TA_tex_txt[]; +extern unsigned char pga_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_xct_1; +extern unsigned short xct_1_pal[]; +extern unsigned char xct_1_eye1_TA_tex_txt[]; +extern unsigned char xct_1_eye2_TA_tex_txt[]; +extern unsigned char xct_1_eye3_TA_tex_txt[]; +extern unsigned char xct_1_eye4_TA_tex_txt[]; +extern unsigned char xct_1_eye5_TA_tex_txt[]; +extern unsigned char xct_1_eye6_TA_tex_txt[]; +extern unsigned char xct_1_eye7_TA_tex_txt[]; +extern unsigned char xct_1_eye8_TA_tex_txt[]; +extern unsigned char xct_1_mouth1_TA_tex_txt[]; +extern unsigned char xct_1_mouth2_TA_tex_txt[]; +extern unsigned char xct_1_mouth3_TA_tex_txt[]; +extern unsigned char xct_1_mouth4_TA_tex_txt[]; +extern unsigned char xct_1_mouth5_TA_tex_txt[]; +extern unsigned char xct_1_mouth6_TA_tex_txt[]; +extern unsigned char xct_1_tmem_txt[]; +extern unsigned short xct_1_pal[]; +extern unsigned char xct_1_eye1_TA_tex_txt[]; +extern unsigned char xct_1_eye2_TA_tex_txt[]; +extern unsigned char xct_1_eye3_TA_tex_txt[]; +extern unsigned char xct_1_eye4_TA_tex_txt[]; +extern unsigned char xct_1_eye5_TA_tex_txt[]; +extern unsigned char xct_1_eye6_TA_tex_txt[]; +extern unsigned char xct_1_eye7_TA_tex_txt[]; +extern unsigned char xct_1_eye8_TA_tex_txt[]; +extern unsigned char xct_1_mouth1_TA_tex_txt[]; +extern unsigned char xct_1_mouth2_TA_tex_txt[]; +extern unsigned char xct_1_mouth3_TA_tex_txt[]; +extern unsigned char xct_1_mouth4_TA_tex_txt[]; +extern unsigned char xct_1_mouth5_TA_tex_txt[]; +extern unsigned char xct_1_mouth6_TA_tex_txt[]; +extern unsigned char xct_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_cml_1; +extern unsigned short cml_1_pal[]; +extern unsigned char cml_1_eye1_TA_tex_txt[]; +extern unsigned char cml_1_eye2_TA_tex_txt[]; +extern unsigned char cml_1_eye3_TA_tex_txt[]; +extern unsigned char cml_1_eye4_TA_tex_txt[]; +extern unsigned char cml_1_eye5_TA_tex_txt[]; +extern unsigned char cml_1_eye6_TA_tex_txt[]; +extern unsigned char cml_1_eye7_TA_tex_txt[]; +extern unsigned char cml_1_eye8_TA_tex_txt[]; +extern unsigned char cml_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_boa_1; +extern unsigned short boa_1_pal[]; +extern unsigned char boa_1_eye1_TA_tex_txt[]; +extern unsigned char boa_1_eye2_TA_tex_txt[]; +extern unsigned char boa_1_eye3_TA_tex_txt[]; +extern unsigned char boa_1_eye4_TA_tex_txt[]; +extern unsigned char boa_1_eye5_TA_tex_txt[]; +extern unsigned char boa_1_eye6_TA_tex_txt[]; +extern unsigned char boa_1_eye7_TA_tex_txt[]; +extern unsigned char boa_1_eye8_TA_tex_txt[]; +extern unsigned char boa_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rcn_1; +extern unsigned short rcn_1_pal[]; +extern unsigned char rcn_1_eye1_TA_tex_txt[]; +extern unsigned char rcn_1_eye2_TA_tex_txt[]; +extern unsigned char rcn_1_eye3_TA_tex_txt[]; +extern unsigned char rcn_1_eye4_TA_tex_txt[]; +extern unsigned char rcn_1_eye5_TA_tex_txt[]; +extern unsigned char rcn_1_eye6_TA_tex_txt[]; +extern unsigned char rcn_1_eye7_TA_tex_txt[]; +extern unsigned char rcn_1_eye8_TA_tex_txt[]; +extern unsigned char rcn_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rcc_1; +extern unsigned short rcc_1_pal[]; +extern unsigned char rcc_1_eye1_TA_tex_txt[]; +extern unsigned char rcc_1_eye2_TA_tex_txt[]; +extern unsigned char rcc_1_eye3_TA_tex_txt[]; +extern unsigned char rcc_1_eye4_TA_tex_txt[]; +extern unsigned char rcc_1_eye5_TA_tex_txt[]; +extern unsigned char rcc_1_eye6_TA_tex_txt[]; +extern unsigned char rcc_1_eye7_TA_tex_txt[]; +extern unsigned char rcc_1_eye8_TA_tex_txt[]; +extern unsigned char rcc_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rcs_1; +extern unsigned short rcs_1_pal[]; +extern unsigned char rcs_1_eye1_TA_tex_txt[]; +extern unsigned char rcs_1_eye2_TA_tex_txt[]; +extern unsigned char rcs_1_eye3_TA_tex_txt[]; +extern unsigned char rcs_1_eye4_TA_tex_txt[]; +extern unsigned char rcs_1_eye5_TA_tex_txt[]; +extern unsigned char rcs_1_eye6_TA_tex_txt[]; +extern unsigned char rcs_1_eye7_TA_tex_txt[]; +extern unsigned char rcs_1_eye8_TA_tex_txt[]; +extern unsigned char rcs_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rcd_1; +extern unsigned short rcd_1_pal[]; +extern unsigned char rcd_1_eye1_TA_tex_txt[]; +extern unsigned char rcd_1_eye2_TA_tex_txt[]; +extern unsigned char rcd_1_eye3_TA_tex_txt[]; +extern unsigned char rcd_1_eye4_TA_tex_txt[]; +extern unsigned char rcd_1_eye5_TA_tex_txt[]; +extern unsigned char rcd_1_eye6_TA_tex_txt[]; +extern unsigned char rcd_1_eye7_TA_tex_txt[]; +extern unsigned char rcd_1_eye8_TA_tex_txt[]; +extern unsigned char rcd_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_bpt_1; +extern unsigned short bpt_1_pal[]; +extern unsigned char bpt_1_eye1_TA_tex_txt[]; +extern unsigned char bpt_1_eye2_TA_tex_txt[]; +extern unsigned char bpt_1_eye3_TA_tex_txt[]; +extern unsigned char bpt_1_eye4_TA_tex_txt[]; +extern unsigned char bpt_1_eye5_TA_tex_txt[]; +extern unsigned char bpt_1_eye6_TA_tex_txt[]; +extern unsigned char bpt_1_eye7_TA_tex_txt[]; +extern unsigned char bpt_1_eye8_TA_tex_txt[]; +extern unsigned char bpt_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_plc_1; +extern unsigned short plc_1_pal[]; +extern unsigned char plc_1_eye1_TA_tex_txt[]; +extern unsigned char plc_1_eye2_TA_tex_txt[]; +extern unsigned char plc_1_eye3_TA_tex_txt[]; +extern unsigned char plc_1_eye4_TA_tex_txt[]; +extern unsigned char plc_1_eye5_TA_tex_txt[]; +extern unsigned char plc_1_eye6_TA_tex_txt[]; +extern unsigned char plc_1_eye7_TA_tex_txt[]; +extern unsigned char plc_1_eye8_TA_tex_txt[]; +extern unsigned char plc_1_mouth1_TA_tex_txt[]; +extern unsigned char plc_1_mouth2_TA_tex_txt[]; +extern unsigned char plc_1_mouth3_TA_tex_txt[]; +extern unsigned char plc_1_mouth4_TA_tex_txt[]; +extern unsigned char plc_1_mouth5_TA_tex_txt[]; +extern unsigned char plc_1_mouth6_TA_tex_txt[]; +extern unsigned char plc_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mnk_1; +extern unsigned short mnk_1_pal[]; +extern unsigned char mnk_1_eye1_TA_tex_txt[]; +extern unsigned char mnk_1_eye2_TA_tex_txt[]; +extern unsigned char mnk_1_eye3_TA_tex_txt[]; +extern unsigned char mnk_1_eye4_TA_tex_txt[]; +extern unsigned char mnk_1_eye5_TA_tex_txt[]; +extern unsigned char mnk_1_eye6_TA_tex_txt[]; +extern unsigned char mnk_1_eye7_TA_tex_txt[]; +extern unsigned char mnk_1_eye8_TA_tex_txt[]; +extern unsigned char mnk_1_mouth1_TA_tex_txt[]; +extern unsigned char mnk_1_mouth2_TA_tex_txt[]; +extern unsigned char mnk_1_mouth3_TA_tex_txt[]; +extern unsigned char mnk_1_mouth4_TA_tex_txt[]; +extern unsigned char mnk_1_mouth5_TA_tex_txt[]; +extern unsigned char mnk_1_mouth6_TA_tex_txt[]; +extern unsigned char mnk_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_snt_1; +extern unsigned short snt_1_pal[]; +extern unsigned char snt_1_eye1_TA_tex_txt[]; +extern unsigned char snt_1_eye2_TA_tex_txt[]; +extern unsigned char snt_1_eye3_TA_tex_txt[]; +extern unsigned char snt_1_eye4_TA_tex_txt[]; +extern unsigned char snt_1_eye5_TA_tex_txt[]; +extern unsigned char snt_1_eye6_TA_tex_txt[]; +extern unsigned char snt_1_eye7_TA_tex_txt[]; +extern unsigned char snt_1_eye8_TA_tex_txt[]; +extern unsigned char snt_1_mouth1_TA_tex_txt[]; +extern unsigned char snt_1_mouth2_TA_tex_txt[]; +extern unsigned char snt_1_mouth3_TA_tex_txt[]; +extern unsigned char snt_1_mouth4_TA_tex_txt[]; +extern unsigned char snt_1_mouth5_TA_tex_txt[]; +extern unsigned char snt_1_mouth6_TA_tex_txt[]; +extern unsigned char snt_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pla_1; +extern unsigned short pla_1_pal[]; +extern unsigned char pla_1_eye1_TA_tex_txt[]; +extern unsigned char pla_1_eye2_TA_tex_txt[]; +extern unsigned char pla_1_eye3_TA_tex_txt[]; +extern unsigned char pla_1_eye4_TA_tex_txt[]; +extern unsigned char pla_1_eye5_TA_tex_txt[]; +extern unsigned char pla_1_eye6_TA_tex_txt[]; +extern unsigned char pla_1_eye7_TA_tex_txt[]; +extern unsigned char pla_1_eye8_TA_tex_txt[]; +extern unsigned char pla_1_mouth1_TA_tex_txt[]; +extern unsigned char pla_1_mouth2_TA_tex_txt[]; +extern unsigned char pla_1_mouth3_TA_tex_txt[]; +extern unsigned char pla_1_mouth4_TA_tex_txt[]; +extern unsigned char pla_1_mouth5_TA_tex_txt[]; +extern unsigned char pla_1_mouth6_TA_tex_txt[]; +extern unsigned char pla_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_plb_1; +extern unsigned short plb_1_pal[]; +extern unsigned char plb_1_eye1_TA_tex_txt[]; +extern unsigned char plb_1_eye2_TA_tex_txt[]; +extern unsigned char plb_1_eye3_TA_tex_txt[]; +extern unsigned char plb_1_eye4_TA_tex_txt[]; +extern unsigned char plb_1_eye5_TA_tex_txt[]; +extern unsigned char plb_1_eye6_TA_tex_txt[]; +extern unsigned char plb_1_eye7_TA_tex_txt[]; +extern unsigned char plb_1_eye8_TA_tex_txt[]; +extern unsigned char plb_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pgb_1; +extern unsigned short pgb_1_pal[]; +extern unsigned char pgb_1_eye1_TA_tex_txt[]; +extern unsigned char pgb_1_eye2_TA_tex_txt[]; +extern unsigned char pgb_1_eye3_TA_tex_txt[]; +extern unsigned char pgb_1_eye4_TA_tex_txt[]; +extern unsigned char pgb_1_eye5_TA_tex_txt[]; +extern unsigned char pgb_1_eye6_TA_tex_txt[]; +extern unsigned char pgb_1_eye7_TA_tex_txt[]; +extern unsigned char pgb_1_eye8_TA_tex_txt[]; +extern unsigned char pgb_1_tmem_txt[]; +extern unsigned short fox_1_pal[]; +extern unsigned char fox_1_eye1_TA_tex_txt[]; +extern unsigned char fox_1_eye2_TA_tex_txt[]; +extern unsigned char fox_1_eye3_TA_tex_txt[]; +extern unsigned char fox_1_eye4_TA_tex_txt[]; +extern unsigned char fox_1_eye5_TA_tex_txt[]; +extern unsigned char fox_1_eye6_TA_tex_txt[]; +extern unsigned char fox_1_eye7_TA_tex_txt[]; +extern unsigned char fox_1_eye8_TA_tex_txt[]; +extern unsigned char fox_1_tmem_txt[]; +extern unsigned short rcn_1_pal[]; +extern unsigned char rcn_1_eye1_TA_tex_txt[]; +extern unsigned char rcn_1_eye2_TA_tex_txt[]; +extern unsigned char rcn_1_eye3_TA_tex_txt[]; +extern unsigned char rcn_1_eye4_TA_tex_txt[]; +extern unsigned char rcn_1_eye5_TA_tex_txt[]; +extern unsigned char rcn_1_eye6_TA_tex_txt[]; +extern unsigned char rcn_1_eye7_TA_tex_txt[]; +extern unsigned char rcn_1_eye8_TA_tex_txt[]; +extern unsigned char rcn_1_tmem_txt[]; +extern unsigned short rcc_1_pal[]; +extern unsigned char rcc_1_eye1_TA_tex_txt[]; +extern unsigned char rcc_1_eye2_TA_tex_txt[]; +extern unsigned char rcc_1_eye3_TA_tex_txt[]; +extern unsigned char rcc_1_eye4_TA_tex_txt[]; +extern unsigned char rcc_1_eye5_TA_tex_txt[]; +extern unsigned char rcc_1_eye6_TA_tex_txt[]; +extern unsigned char rcc_1_eye7_TA_tex_txt[]; +extern unsigned char rcc_1_eye8_TA_tex_txt[]; +extern unsigned char rcc_1_tmem_txt[]; +extern unsigned short rcs_1_pal[]; +extern unsigned char rcs_1_eye1_TA_tex_txt[]; +extern unsigned char rcs_1_eye2_TA_tex_txt[]; +extern unsigned char rcs_1_eye3_TA_tex_txt[]; +extern unsigned char rcs_1_eye4_TA_tex_txt[]; +extern unsigned char rcs_1_eye5_TA_tex_txt[]; +extern unsigned char rcs_1_eye6_TA_tex_txt[]; +extern unsigned char rcs_1_eye7_TA_tex_txt[]; +extern unsigned char rcs_1_eye8_TA_tex_txt[]; +extern unsigned char rcs_1_tmem_txt[]; +extern unsigned short rcd_1_pal[]; +extern unsigned char rcd_1_eye1_TA_tex_txt[]; +extern unsigned char rcd_1_eye2_TA_tex_txt[]; +extern unsigned char rcd_1_eye3_TA_tex_txt[]; +extern unsigned char rcd_1_eye4_TA_tex_txt[]; +extern unsigned char rcd_1_eye5_TA_tex_txt[]; +extern unsigned char rcd_1_eye6_TA_tex_txt[]; +extern unsigned char rcd_1_eye7_TA_tex_txt[]; +extern unsigned char rcd_1_eye8_TA_tex_txt[]; +extern unsigned char rcd_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_end_1; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short rcn_1_pal[]; +extern unsigned char rcn_1_eye1_TA_tex_txt[]; +extern unsigned char rcn_1_eye2_TA_tex_txt[]; +extern unsigned char rcn_1_eye3_TA_tex_txt[]; +extern unsigned char rcn_1_eye4_TA_tex_txt[]; +extern unsigned char rcn_1_eye5_TA_tex_txt[]; +extern unsigned char rcn_1_eye6_TA_tex_txt[]; +extern unsigned char rcn_1_eye7_TA_tex_txt[]; +extern unsigned char rcn_1_eye8_TA_tex_txt[]; +extern unsigned char rcn_1_tmem_txt[]; +extern unsigned short rcc_1_pal[]; +extern unsigned char rcc_1_eye1_TA_tex_txt[]; +extern unsigned char rcc_1_eye2_TA_tex_txt[]; +extern unsigned char rcc_1_eye3_TA_tex_txt[]; +extern unsigned char rcc_1_eye4_TA_tex_txt[]; +extern unsigned char rcc_1_eye5_TA_tex_txt[]; +extern unsigned char rcc_1_eye6_TA_tex_txt[]; +extern unsigned char rcc_1_eye7_TA_tex_txt[]; +extern unsigned char rcc_1_eye8_TA_tex_txt[]; +extern unsigned char rcc_1_tmem_txt[]; +extern unsigned short rcs_1_pal[]; +extern unsigned char rcs_1_eye1_TA_tex_txt[]; +extern unsigned char rcs_1_eye2_TA_tex_txt[]; +extern unsigned char rcs_1_eye3_TA_tex_txt[]; +extern unsigned char rcs_1_eye4_TA_tex_txt[]; +extern unsigned char rcs_1_eye5_TA_tex_txt[]; +extern unsigned char rcs_1_eye6_TA_tex_txt[]; +extern unsigned char rcs_1_eye7_TA_tex_txt[]; +extern unsigned char rcs_1_eye8_TA_tex_txt[]; +extern unsigned char rcs_1_tmem_txt[]; +extern unsigned short rcd_1_pal[]; +extern unsigned char rcd_1_eye1_TA_tex_txt[]; +extern unsigned char rcd_1_eye2_TA_tex_txt[]; +extern unsigned char rcd_1_eye3_TA_tex_txt[]; +extern unsigned char rcd_1_eye4_TA_tex_txt[]; +extern unsigned char rcd_1_eye5_TA_tex_txt[]; +extern unsigned char rcd_1_eye6_TA_tex_txt[]; +extern unsigned char rcd_1_eye7_TA_tex_txt[]; +extern unsigned char rcd_1_eye8_TA_tex_txt[]; +extern unsigned char rcd_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_bev_1; +extern unsigned short bev_1_pal[]; +extern unsigned char bev_1_eye1_TA_tex_txt[]; +extern unsigned char bev_1_eye2_TA_tex_txt[]; +extern unsigned char bev_1_eye3_TA_tex_txt[]; +extern unsigned char bev_1_eye4_TA_tex_txt[]; +extern unsigned char bev_1_eye5_TA_tex_txt[]; +extern unsigned char bev_1_eye6_TA_tex_txt[]; +extern unsigned char bev_1_eye7_TA_tex_txt[]; +extern unsigned char bev_1_eye8_TA_tex_txt[]; +extern unsigned char bev_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_rcf_1; +extern unsigned short rcf_1_pal[]; +extern unsigned char rcf_1_eye1_TA_tex_txt[]; +extern unsigned char rcf_1_eye2_TA_tex_txt[]; +extern unsigned char rcf_1_eye3_TA_tex_txt[]; +extern unsigned char rcf_1_eye4_TA_tex_txt[]; +extern unsigned char rcf_1_eye5_TA_tex_txt[]; +extern unsigned char rcf_1_eye6_TA_tex_txt[]; +extern unsigned char rcf_1_eye7_TA_tex_txt[]; +extern unsigned char rcf_1_eye8_TA_tex_txt[]; +extern unsigned char rcf_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_pkn_1; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_lrc_1; +extern unsigned short lrc_1_pal[]; +extern unsigned char lrc_1_eye1_TA_tex_txt[]; +extern unsigned char lrc_1_eye2_TA_tex_txt[]; +extern unsigned char lrc_1_eye3_TA_tex_txt[]; +extern unsigned char lrc_1_eye4_TA_tex_txt[]; +extern unsigned char lrc_1_eye5_TA_tex_txt[]; +extern unsigned char lrc_1_eye6_TA_tex_txt[]; +extern unsigned char lrc_1_eye7_TA_tex_txt[]; +extern unsigned char lrc_1_eye8_TA_tex_txt[]; +extern unsigned char lrc_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_fob_1; +extern unsigned short fob_1_pal[]; +extern unsigned char fob_1_eye1_TA_tex_txt[]; +extern unsigned char fob_1_eye2_TA_tex_txt[]; +extern unsigned char fob_1_eye3_TA_tex_txt[]; +extern unsigned char fob_1_eye4_TA_tex_txt[]; +extern unsigned char fob_1_eye5_TA_tex_txt[]; +extern unsigned char fob_1_eye6_TA_tex_txt[]; +extern unsigned char fob_1_eye7_TA_tex_txt[]; +extern unsigned char fob_1_eye8_TA_tex_txt[]; +extern unsigned char fob_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short lrc_1_pal[]; +extern unsigned char lrc_1_eye1_TA_tex_txt[]; +extern unsigned char lrc_1_eye2_TA_tex_txt[]; +extern unsigned char lrc_1_eye3_TA_tex_txt[]; +extern unsigned char lrc_1_eye4_TA_tex_txt[]; +extern unsigned char lrc_1_eye5_TA_tex_txt[]; +extern unsigned char lrc_1_eye6_TA_tex_txt[]; +extern unsigned char lrc_1_eye7_TA_tex_txt[]; +extern unsigned char lrc_1_eye8_TA_tex_txt[]; +extern unsigned char lrc_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_kab_1; +extern unsigned short kab_1_pal[]; +extern unsigned char kab_1_eye1_TA_tex_txt[]; +extern unsigned char kab_1_eye2_TA_tex_txt[]; +extern unsigned char kab_1_eye3_TA_tex_txt[]; +extern unsigned char kab_1_eye4_TA_tex_txt[]; +extern unsigned char kab_1_eye5_TA_tex_txt[]; +extern unsigned char kab_1_eye6_TA_tex_txt[]; +extern unsigned char kab_1_eye7_TA_tex_txt[]; +extern unsigned char kab_1_eye8_TA_tex_txt[]; +extern unsigned char kab_1_tmem_txt[]; +extern unsigned short fob_1_pal[]; +extern unsigned char fob_1_eye1_TA_tex_txt[]; +extern unsigned char fob_1_eye2_TA_tex_txt[]; +extern unsigned char fob_1_eye3_TA_tex_txt[]; +extern unsigned char fob_1_eye4_TA_tex_txt[]; +extern unsigned char fob_1_eye5_TA_tex_txt[]; +extern unsigned char fob_1_eye6_TA_tex_txt[]; +extern unsigned char fob_1_eye7_TA_tex_txt[]; +extern unsigned char fob_1_eye8_TA_tex_txt[]; +extern unsigned char fob_1_tmem_txt[]; +extern unsigned short rcf_1_pal[]; +extern unsigned char rcf_1_eye1_TA_tex_txt[]; +extern unsigned char rcf_1_eye2_TA_tex_txt[]; +extern unsigned char rcf_1_eye3_TA_tex_txt[]; +extern unsigned char rcf_1_eye4_TA_tex_txt[]; +extern unsigned char rcf_1_eye5_TA_tex_txt[]; +extern unsigned char rcf_1_eye6_TA_tex_txt[]; +extern unsigned char rcf_1_eye7_TA_tex_txt[]; +extern unsigned char rcf_1_eye8_TA_tex_txt[]; +extern unsigned char rcf_1_tmem_txt[]; +extern unsigned short rcf_1_pal[]; +extern unsigned char rcf_1_eye1_TA_tex_txt[]; +extern unsigned char rcf_1_eye2_TA_tex_txt[]; +extern unsigned char rcf_1_eye3_TA_tex_txt[]; +extern unsigned char rcf_1_eye4_TA_tex_txt[]; +extern unsigned char rcf_1_eye5_TA_tex_txt[]; +extern unsigned char rcf_1_eye6_TA_tex_txt[]; +extern unsigned char rcf_1_eye7_TA_tex_txt[]; +extern unsigned char rcf_1_eye8_TA_tex_txt[]; +extern unsigned char rcf_1_tmem_txt[]; +extern unsigned short rcf_1_pal[]; +extern unsigned char rcf_1_eye1_TA_tex_txt[]; +extern unsigned char rcf_1_eye2_TA_tex_txt[]; +extern unsigned char rcf_1_eye3_TA_tex_txt[]; +extern unsigned char rcf_1_eye4_TA_tex_txt[]; +extern unsigned char rcf_1_eye5_TA_tex_txt[]; +extern unsigned char rcf_1_eye6_TA_tex_txt[]; +extern unsigned char rcf_1_eye7_TA_tex_txt[]; +extern unsigned char rcf_1_eye8_TA_tex_txt[]; +extern unsigned char rcf_1_tmem_txt[]; +extern unsigned short bpt_1_pal[]; +extern unsigned char bpt_1_eye1_TA_tex_txt[]; +extern unsigned char bpt_1_eye2_TA_tex_txt[]; +extern unsigned char bpt_1_eye3_TA_tex_txt[]; +extern unsigned char bpt_1_eye4_TA_tex_txt[]; +extern unsigned char bpt_1_eye5_TA_tex_txt[]; +extern unsigned char bpt_1_eye6_TA_tex_txt[]; +extern unsigned char bpt_1_eye7_TA_tex_txt[]; +extern unsigned char bpt_1_eye8_TA_tex_txt[]; +extern unsigned char bpt_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mol_1; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_plj_1; +extern unsigned short plj_1_pal[]; +extern unsigned char plj_1_eye1_TA_tex_txt[]; +extern unsigned char plj_1_eye2_TA_tex_txt[]; +extern unsigned char plj_1_eye3_TA_tex_txt[]; +extern unsigned char plj_1_eye4_TA_tex_txt[]; +extern unsigned char plj_1_eye5_TA_tex_txt[]; +extern unsigned char plj_1_eye6_TA_tex_txt[]; +extern unsigned char plj_1_eye7_TA_tex_txt[]; +extern unsigned char plj_1_eye8_TA_tex_txt[]; +extern unsigned char plj_1_mouth1_TA_tex_txt[]; +extern unsigned char plj_1_mouth2_TA_tex_txt[]; +extern unsigned char plj_1_mouth3_TA_tex_txt[]; +extern unsigned char plj_1_mouth4_TA_tex_txt[]; +extern unsigned char plj_1_mouth5_TA_tex_txt[]; +extern unsigned char plj_1_mouth6_TA_tex_txt[]; +extern unsigned char plj_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_seg_1; +extern unsigned short seg_1_pal[]; +extern unsigned char seg_1_eye1_TA_tex_txt[]; +extern unsigned char seg_1_eye2_TA_tex_txt[]; +extern unsigned char seg_1_eye3_TA_tex_txt[]; +extern unsigned char seg_1_eye4_TA_tex_txt[]; +extern unsigned char seg_1_eye5_TA_tex_txt[]; +extern unsigned char seg_1_eye6_TA_tex_txt[]; +extern unsigned char seg_1_eye7_TA_tex_txt[]; +extern unsigned char seg_1_eye8_TA_tex_txt[]; +extern unsigned char seg_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short mnk_1_pal[]; +extern unsigned char mnk_1_eye1_TA_tex_txt[]; +extern unsigned char mnk_1_eye2_TA_tex_txt[]; +extern unsigned char mnk_1_eye3_TA_tex_txt[]; +extern unsigned char mnk_1_eye4_TA_tex_txt[]; +extern unsigned char mnk_1_eye5_TA_tex_txt[]; +extern unsigned char mnk_1_eye6_TA_tex_txt[]; +extern unsigned char mnk_1_eye7_TA_tex_txt[]; +extern unsigned char mnk_1_eye8_TA_tex_txt[]; +extern unsigned char mnk_1_mouth1_TA_tex_txt[]; +extern unsigned char mnk_1_mouth2_TA_tex_txt[]; +extern unsigned char mnk_1_mouth3_TA_tex_txt[]; +extern unsigned char mnk_1_mouth4_TA_tex_txt[]; +extern unsigned char mnk_1_mouth5_TA_tex_txt[]; +extern unsigned char mnk_1_mouth6_TA_tex_txt[]; +extern unsigned char mnk_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_xsq_1; +extern unsigned short xsq_1_pal[]; +extern unsigned char xsq_1_eye1_TA_tex_txt[]; +extern unsigned char xsq_1_eye2_TA_tex_txt[]; +extern unsigned char xsq_1_eye3_TA_tex_txt[]; +extern unsigned char xsq_1_eye4_TA_tex_txt[]; +extern unsigned char xsq_1_eye5_TA_tex_txt[]; +extern unsigned char xsq_1_eye6_TA_tex_txt[]; +extern unsigned char xsq_1_eye7_TA_tex_txt[]; +extern unsigned char xsq_1_eye8_TA_tex_txt[]; +extern unsigned char xsq_1_mouth1_TA_tex_txt[]; +extern unsigned char xsq_1_mouth2_TA_tex_txt[]; +extern unsigned char xsq_1_mouth3_TA_tex_txt[]; +extern unsigned char xsq_1_mouth4_TA_tex_txt[]; +extern unsigned char xsq_1_mouth5_TA_tex_txt[]; +extern unsigned char xsq_1_mouth6_TA_tex_txt[]; +extern unsigned char xsq_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_owl_1; +extern unsigned short owl_1_pal[]; +extern unsigned char owl_1_eye1_TA_tex_txt[]; +extern unsigned char owl_1_eye2_TA_tex_txt[]; +extern unsigned char owl_1_eye3_TA_tex_txt[]; +extern unsigned char owl_1_eye4_TA_tex_txt[]; +extern unsigned char owl_1_eye5_TA_tex_txt[]; +extern unsigned char owl_1_eye6_TA_tex_txt[]; +extern unsigned char owl_1_eye7_TA_tex_txt[]; +extern unsigned char owl_1_eye8_TA_tex_txt[]; +extern unsigned char owl_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_ttl_1; +extern unsigned short ttl_1_pal[]; +extern unsigned char ttl_1_eye1_TA_tex_txt[]; +extern unsigned char ttl_1_eye2_TA_tex_txt[]; +extern unsigned char ttl_1_eye3_TA_tex_txt[]; +extern unsigned char ttl_1_eye4_TA_tex_txt[]; +extern unsigned char ttl_1_eye5_TA_tex_txt[]; +extern unsigned char ttl_1_eye6_TA_tex_txt[]; +extern unsigned char ttl_1_eye7_TA_tex_txt[]; +extern unsigned char ttl_1_eye8_TA_tex_txt[]; +extern unsigned char ttl_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_gst_1; +extern unsigned short gst_1_pal[]; +extern unsigned char gst_1_eye1_TA_tex_txt[]; +extern unsigned char gst_1_eye2_TA_tex_txt[]; +extern unsigned char gst_1_eye3_TA_tex_txt[]; +extern unsigned char gst_1_eye4_TA_tex_txt[]; +extern unsigned char gst_1_eye5_TA_tex_txt[]; +extern unsigned char gst_1_eye6_TA_tex_txt[]; +extern unsigned char gst_1_eye7_TA_tex_txt[]; +extern unsigned char gst_1_eye8_TA_tex_txt[]; +extern unsigned char gst_1_mouth1_TA_tex_txt[]; +extern unsigned char gst_1_mouth2_TA_tex_txt[]; +extern unsigned char gst_1_mouth3_TA_tex_txt[]; +extern unsigned char gst_1_mouth4_TA_tex_txt[]; +extern unsigned char gst_1_mouth5_TA_tex_txt[]; +extern unsigned char gst_1_mouth6_TA_tex_txt[]; +extern unsigned char gst_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_hgh_1; +extern unsigned short hgh_1_pal[]; +extern unsigned char hgh_1_eye1_TA_tex_txt[]; +extern unsigned char hgh_1_eye2_TA_tex_txt[]; +extern unsigned char hgh_1_eye3_TA_tex_txt[]; +extern unsigned char hgh_1_eye4_TA_tex_txt[]; +extern unsigned char hgh_1_eye5_TA_tex_txt[]; +extern unsigned char hgh_1_eye6_TA_tex_txt[]; +extern unsigned char hgh_1_eye7_TA_tex_txt[]; +extern unsigned char hgh_1_eye8_TA_tex_txt[]; +extern unsigned char hgh_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_hgs_1; +extern unsigned short hgs_1_pal[]; +extern unsigned char hgs_1_eye1_TA_tex_txt[]; +extern unsigned char hgs_1_eye2_TA_tex_txt[]; +extern unsigned char hgs_1_eye3_TA_tex_txt[]; +extern unsigned char hgs_1_eye4_TA_tex_txt[]; +extern unsigned char hgs_1_eye5_TA_tex_txt[]; +extern unsigned char hgs_1_eye6_TA_tex_txt[]; +extern unsigned char hgs_1_eye7_TA_tex_txt[]; +extern unsigned char hgs_1_eye8_TA_tex_txt[]; +extern unsigned char hgs_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_wip_1; +extern unsigned short wip_1_pal[]; +extern unsigned char wip_1_eye1_TA_tex_txt[]; +extern unsigned char wip_1_eye2_TA_tex_txt[]; +extern unsigned char wip_1_eye3_TA_tex_txt[]; +extern unsigned char wip_1_eye4_TA_tex_txt[]; +extern unsigned char wip_1_eye5_TA_tex_txt[]; +extern unsigned char wip_1_eye6_TA_tex_txt[]; +extern unsigned char wip_1_eye7_TA_tex_txt[]; +extern unsigned char wip_1_eye8_TA_tex_txt[]; +extern unsigned char wip_1_mouth1_TA_tex_txt[]; +extern unsigned char wip_1_mouth2_TA_tex_txt[]; +extern unsigned char wip_1_mouth3_TA_tex_txt[]; +extern unsigned char wip_1_mouth4_TA_tex_txt[]; +extern unsigned char wip_1_mouth5_TA_tex_txt[]; +extern unsigned char wip_1_mouth6_TA_tex_txt[]; +extern unsigned char wip_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short ttl_1_pal[]; +extern unsigned char ttl_1_eye1_TA_tex_txt[]; +extern unsigned char ttl_1_eye2_TA_tex_txt[]; +extern unsigned char ttl_1_eye3_TA_tex_txt[]; +extern unsigned char ttl_1_eye4_TA_tex_txt[]; +extern unsigned char ttl_1_eye5_TA_tex_txt[]; +extern unsigned char ttl_1_eye6_TA_tex_txt[]; +extern unsigned char ttl_1_eye7_TA_tex_txt[]; +extern unsigned char ttl_1_eye8_TA_tex_txt[]; +extern unsigned char ttl_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mka_1; +extern unsigned short mka_1_pal[]; +extern unsigned char mka_1_tmem_txt[]; +extern unsigned short mka_1_pal[]; +extern unsigned char mka_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short ttl_1_pal[]; +extern unsigned char ttl_1_eye1_TA_tex_txt[]; +extern unsigned char ttl_1_eye2_TA_tex_txt[]; +extern unsigned char ttl_1_eye3_TA_tex_txt[]; +extern unsigned char ttl_1_eye4_TA_tex_txt[]; +extern unsigned char ttl_1_eye5_TA_tex_txt[]; +extern unsigned char ttl_1_eye6_TA_tex_txt[]; +extern unsigned char ttl_1_eye7_TA_tex_txt[]; +extern unsigned char ttl_1_eye8_TA_tex_txt[]; +extern unsigned char ttl_1_tmem_txt[]; +extern unsigned short pkn_1_pal[]; +extern unsigned char pkn_1_tmem_txt[]; +extern unsigned short mnk_1_pal[]; +extern unsigned char mnk_1_eye1_TA_tex_txt[]; +extern unsigned char mnk_1_eye2_TA_tex_txt[]; +extern unsigned char mnk_1_eye3_TA_tex_txt[]; +extern unsigned char mnk_1_eye4_TA_tex_txt[]; +extern unsigned char mnk_1_eye5_TA_tex_txt[]; +extern unsigned char mnk_1_eye6_TA_tex_txt[]; +extern unsigned char mnk_1_eye7_TA_tex_txt[]; +extern unsigned char mnk_1_eye8_TA_tex_txt[]; +extern unsigned char mnk_1_mouth1_TA_tex_txt[]; +extern unsigned char mnk_1_mouth2_TA_tex_txt[]; +extern unsigned char mnk_1_mouth3_TA_tex_txt[]; +extern unsigned char mnk_1_mouth4_TA_tex_txt[]; +extern unsigned char mnk_1_mouth5_TA_tex_txt[]; +extern unsigned char mnk_1_mouth6_TA_tex_txt[]; +extern unsigned char mnk_1_tmem_txt[]; +extern unsigned short seg_1_pal[]; +extern unsigned char seg_1_eye1_TA_tex_txt[]; +extern unsigned char seg_1_eye2_TA_tex_txt[]; +extern unsigned char seg_1_eye3_TA_tex_txt[]; +extern unsigned char seg_1_eye4_TA_tex_txt[]; +extern unsigned char seg_1_eye5_TA_tex_txt[]; +extern unsigned char seg_1_eye6_TA_tex_txt[]; +extern unsigned char seg_1_eye7_TA_tex_txt[]; +extern unsigned char seg_1_eye8_TA_tex_txt[]; +extern unsigned char seg_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mob_1; +extern unsigned short mob_1_pal[]; +extern unsigned char mob_1_eye1_TA_tex_txt[]; +extern unsigned char mob_1_eye2_TA_tex_txt[]; +extern unsigned char mob_1_eye3_TA_tex_txt[]; +extern unsigned char mob_1_eye4_TA_tex_txt[]; +extern unsigned char mob_1_eye5_TA_tex_txt[]; +extern unsigned char mob_1_eye6_TA_tex_txt[]; +extern unsigned char mob_1_eye7_TA_tex_txt[]; +extern unsigned char mob_1_eye8_TA_tex_txt[]; +extern unsigned char mob_1_mouth1_TA_tex_txt[]; +extern unsigned char mob_1_mouth2_TA_tex_txt[]; +extern unsigned char mob_1_mouth3_TA_tex_txt[]; +extern unsigned char mob_1_mouth4_TA_tex_txt[]; +extern unsigned char mob_1_mouth5_TA_tex_txt[]; +extern unsigned char mob_1_mouth6_TA_tex_txt[]; +extern unsigned char mob_1_tmem_txt[]; +extern unsigned short ttl_1_pal[]; +extern unsigned char ttl_1_eye1_TA_tex_txt[]; +extern unsigned char ttl_1_eye2_TA_tex_txt[]; +extern unsigned char ttl_1_eye3_TA_tex_txt[]; +extern unsigned char ttl_1_eye4_TA_tex_txt[]; +extern unsigned char ttl_1_eye5_TA_tex_txt[]; +extern unsigned char ttl_1_eye6_TA_tex_txt[]; +extern unsigned char ttl_1_eye7_TA_tex_txt[]; +extern unsigned char ttl_1_eye8_TA_tex_txt[]; +extern unsigned char ttl_1_tmem_txt[]; +extern unsigned short mol_1_pal[]; +extern unsigned char mol_1_eye1_TA_tex_txt[]; +extern unsigned char mol_1_eye2_TA_tex_txt[]; +extern unsigned char mol_1_eye3_TA_tex_txt[]; +extern unsigned char mol_1_eye4_TA_tex_txt[]; +extern unsigned char mol_1_eye5_TA_tex_txt[]; +extern unsigned char mol_1_eye6_TA_tex_txt[]; +extern unsigned char mol_1_eye7_TA_tex_txt[]; +extern unsigned char mol_1_eye8_TA_tex_txt[]; +extern unsigned char mol_1_mouth1_TA_tex_txt[]; +extern unsigned char mol_1_mouth2_TA_tex_txt[]; +extern unsigned char mol_1_mouth3_TA_tex_txt[]; +extern unsigned char mol_1_mouth4_TA_tex_txt[]; +extern unsigned char mol_1_mouth5_TA_tex_txt[]; +extern unsigned char mol_1_mouth6_TA_tex_txt[]; +extern unsigned char mol_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_mos_1; +extern unsigned short mos_1_pal[]; +extern unsigned char mos_1_eye1_TA_tex_txt[]; +extern unsigned char mos_1_eye2_TA_tex_txt[]; +extern unsigned char mos_1_eye3_TA_tex_txt[]; +extern unsigned char mos_1_eye4_TA_tex_txt[]; +extern unsigned char mos_1_eye5_TA_tex_txt[]; +extern unsigned char mos_1_eye6_TA_tex_txt[]; +extern unsigned char mos_1_eye7_TA_tex_txt[]; +extern unsigned char mos_1_eye8_TA_tex_txt[]; +extern unsigned char mos_1_mouth1_TA_tex_txt[]; +extern unsigned char mos_1_mouth2_TA_tex_txt[]; +extern unsigned char mos_1_mouth3_TA_tex_txt[]; +extern unsigned char mos_1_mouth4_TA_tex_txt[]; +extern unsigned char mos_1_mouth5_TA_tex_txt[]; +extern unsigned char mos_1_mouth6_TA_tex_txt[]; +extern unsigned char mos_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short ttl_1_pal[]; +extern unsigned char ttl_1_eye1_TA_tex_txt[]; +extern unsigned char ttl_1_eye2_TA_tex_txt[]; +extern unsigned char ttl_1_eye3_TA_tex_txt[]; +extern unsigned char ttl_1_eye4_TA_tex_txt[]; +extern unsigned char ttl_1_eye5_TA_tex_txt[]; +extern unsigned char ttl_1_eye6_TA_tex_txt[]; +extern unsigned char ttl_1_eye7_TA_tex_txt[]; +extern unsigned char ttl_1_eye8_TA_tex_txt[]; +extern unsigned char ttl_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_tuk_1; +extern unsigned short tuk_1_pal[]; +extern unsigned char tuk_1_eye1_TA_tex_txt[]; +extern unsigned char tuk_1_eye2_TA_tex_txt[]; +extern unsigned char tuk_1_eye3_TA_tex_txt[]; +extern unsigned char tuk_1_eye4_TA_tex_txt[]; +extern unsigned char tuk_1_eye5_TA_tex_txt[]; +extern unsigned char tuk_1_eye6_TA_tex_txt[]; +extern unsigned char tuk_1_eye7_TA_tex_txt[]; +extern unsigned char tuk_1_eye8_TA_tex_txt[]; +extern unsigned char tuk_1_tmem_txt[]; +extern cKF_Skeleton_R_c cKF_bs_r_hem_1; +extern unsigned short hem_1_pal[]; +extern unsigned char hem_1_tmem_txt[]; +extern unsigned short end_1_pal[]; +extern unsigned char end_1_eye1_TA_tex_txt[]; +extern unsigned char end_1_eye2_TA_tex_txt[]; +extern unsigned char end_1_eye3_TA_tex_txt[]; +extern unsigned char end_1_eye4_TA_tex_txt[]; +extern unsigned char end_1_eye5_TA_tex_txt[]; +extern unsigned char end_1_eye6_TA_tex_txt[]; +extern unsigned char end_1_eye7_TA_tex_txt[]; +extern unsigned char end_1_eye8_TA_tex_txt[]; +extern unsigned char end_1_mouth1_TA_tex_txt[]; +extern unsigned char end_1_mouth2_TA_tex_txt[]; +extern unsigned char end_1_mouth3_TA_tex_txt[]; +extern unsigned char end_1_mouth4_TA_tex_txt[]; +extern unsigned char end_1_mouth5_TA_tex_txt[]; +extern unsigned char end_1_mouth6_TA_tex_txt[]; +extern unsigned char end_1_tmem_txt[]; + +extern aNPC_draw_data_c npc_draw_data_tbl[] = { + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_134, + &cKF_bs_r_cat_1, + { + cat_1_tmem_txt, + cat_1_pal, + { + cat_1_eye1_TA_tex_txt, + cat_1_eye2_TA_tex_txt, + cat_1_eye3_TA_tex_txt, + cat_1_eye4_TA_tex_txt, + cat_1_eye5_TA_tex_txt, + cat_1_eye6_TA_tex_txt, + cat_1_eye7_TA_tex_txt, + cat_1_eye8_TA_tex_txt, + }, + { + cat_1_mouth1_TA_tex_txt, + cat_1_mouth2_TA_tex_txt, + cat_1_mouth3_TA_tex_txt, + cat_1_mouth4_TA_tex_txt, + cat_1_mouth5_TA_tex_txt, + cat_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 0, + 0, + 33, + 0, + 0, + 1, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_135, + &cKF_bs_r_cat_1, + { + cat_2_tmem_txt, + cat_2_pal, + { + cat_2_eye1_TA_tex_txt, + cat_2_eye2_TA_tex_txt, + cat_2_eye3_TA_tex_txt, + cat_2_eye4_TA_tex_txt, + cat_2_eye5_TA_tex_txt, + cat_2_eye6_TA_tex_txt, + cat_2_eye7_TA_tex_txt, + cat_2_eye8_TA_tex_txt, + }, + { + cat_2_mouth1_TA_tex_txt, + cat_2_mouth2_TA_tex_txt, + cat_2_mouth3_TA_tex_txt, + cat_2_mouth4_TA_tex_txt, + cat_2_mouth5_TA_tex_txt, + cat_2_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 1, + 10, + 33, + 0, + 0, + 2, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_136, + &cKF_bs_r_cat_1, + { + cat_3_tmem_txt, + cat_3_pal, + { + cat_3_eye1_TA_tex_txt, + cat_3_eye2_TA_tex_txt, + cat_3_eye3_TA_tex_txt, + cat_3_eye4_TA_tex_txt, + cat_3_eye5_TA_tex_txt, + cat_3_eye6_TA_tex_txt, + cat_3_eye7_TA_tex_txt, + cat_3_eye8_TA_tex_txt, + }, + { + cat_3_mouth1_TA_tex_txt, + cat_3_mouth2_TA_tex_txt, + cat_3_mouth3_TA_tex_txt, + cat_3_mouth4_TA_tex_txt, + cat_3_mouth5_TA_tex_txt, + cat_3_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 2, + 12, + 33, + 0, + 0, + 3, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_137, + &cKF_bs_r_cat_1, + { + cat_4_tmem_txt, + cat_4_pal, + { + cat_4_eye1_TA_tex_txt, + cat_4_eye2_TA_tex_txt, + cat_4_eye3_TA_tex_txt, + cat_4_eye4_TA_tex_txt, + cat_4_eye5_TA_tex_txt, + cat_4_eye6_TA_tex_txt, + cat_4_eye7_TA_tex_txt, + cat_4_eye8_TA_tex_txt, + }, + { + cat_4_mouth1_TA_tex_txt, + cat_4_mouth2_TA_tex_txt, + cat_4_mouth3_TA_tex_txt, + cat_4_mouth4_TA_tex_txt, + cat_4_mouth5_TA_tex_txt, + cat_4_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 3, + 6, + 33, + 0, + 0, + 4, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_138, + &cKF_bs_r_cat_1, + { + cat_5_tmem_txt, + cat_5_pal, + { + cat_5_eye1_TA_tex_txt, + cat_5_eye2_TA_tex_txt, + cat_5_eye3_TA_tex_txt, + cat_5_eye4_TA_tex_txt, + cat_5_eye5_TA_tex_txt, + cat_5_eye6_TA_tex_txt, + cat_5_eye7_TA_tex_txt, + cat_5_eye8_TA_tex_txt, + }, + { + cat_5_mouth1_TA_tex_txt, + cat_5_mouth2_TA_tex_txt, + cat_5_mouth3_TA_tex_txt, + cat_5_mouth4_TA_tex_txt, + cat_5_mouth5_TA_tex_txt, + cat_5_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 4, + 3, + 33, + 0, + 0, + 5, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_139, + &cKF_bs_r_cat_1, + { + cat_6_tmem_txt, + cat_6_pal, + { + cat_6_eye1_TA_tex_txt, + cat_6_eye2_TA_tex_txt, + cat_6_eye3_TA_tex_txt, + cat_6_eye4_TA_tex_txt, + cat_6_eye5_TA_tex_txt, + cat_6_eye6_TA_tex_txt, + cat_6_eye7_TA_tex_txt, + cat_6_eye8_TA_tex_txt, + }, + { + cat_6_mouth1_TA_tex_txt, + cat_6_mouth2_TA_tex_txt, + cat_6_mouth3_TA_tex_txt, + cat_6_mouth4_TA_tex_txt, + cat_6_mouth5_TA_tex_txt, + cat_6_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 5, + 26, + 33, + 0, + 0, + 6, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_140, + &cKF_bs_r_cat_1, + { + cat_7_tmem_txt, + cat_7_pal, + { + cat_7_eye1_TA_tex_txt, + cat_7_eye2_TA_tex_txt, + cat_7_eye3_TA_tex_txt, + cat_7_eye4_TA_tex_txt, + cat_7_eye5_TA_tex_txt, + cat_7_eye6_TA_tex_txt, + cat_7_eye7_TA_tex_txt, + cat_7_eye8_TA_tex_txt, + }, + { + cat_7_mouth1_TA_tex_txt, + cat_7_mouth2_TA_tex_txt, + cat_7_mouth3_TA_tex_txt, + cat_7_mouth4_TA_tex_txt, + cat_7_mouth5_TA_tex_txt, + cat_7_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 6, + 13, + 33, + 0, + 0, + 7, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_141, + &cKF_bs_r_cat_1, + { + cat_8_tmem_txt, + cat_8_pal, + { + cat_8_eye1_TA_tex_txt, + cat_8_eye2_TA_tex_txt, + cat_8_eye3_TA_tex_txt, + cat_8_eye4_TA_tex_txt, + cat_8_eye5_TA_tex_txt, + cat_8_eye6_TA_tex_txt, + cat_8_eye7_TA_tex_txt, + cat_8_eye8_TA_tex_txt, + }, + { + cat_8_mouth1_TA_tex_txt, + cat_8_mouth2_TA_tex_txt, + cat_8_mouth3_TA_tex_txt, + cat_8_mouth4_TA_tex_txt, + cat_8_mouth5_TA_tex_txt, + cat_8_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 7, + 6, + 33, + 0, + 0, + 8, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_142, + &cKF_bs_r_cat_1, + { + cat_9_tmem_txt, + cat_9_pal, + { + cat_9_eye1_TA_tex_txt, + cat_9_eye2_TA_tex_txt, + cat_9_eye3_TA_tex_txt, + cat_9_eye4_TA_tex_txt, + cat_9_eye5_TA_tex_txt, + cat_9_eye6_TA_tex_txt, + cat_9_eye7_TA_tex_txt, + cat_9_eye8_TA_tex_txt, + }, + { + cat_9_mouth1_TA_tex_txt, + cat_9_mouth2_TA_tex_txt, + cat_9_mouth3_TA_tex_txt, + cat_9_mouth4_TA_tex_txt, + cat_9_mouth5_TA_tex_txt, + cat_9_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 8, + 31, + 33, + 0, + 0, + 9, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_143, + &cKF_bs_r_cat_1, + { + cat_10_tmem_txt, + cat_10_pal, + { + cat_10_eye1_TA_tex_txt, + cat_10_eye2_TA_tex_txt, + cat_10_eye3_TA_tex_txt, + cat_10_eye4_TA_tex_txt, + cat_10_eye5_TA_tex_txt, + cat_10_eye6_TA_tex_txt, + cat_10_eye7_TA_tex_txt, + cat_10_eye8_TA_tex_txt, + }, + { + cat_10_mouth1_TA_tex_txt, + cat_10_mouth2_TA_tex_txt, + cat_10_mouth3_TA_tex_txt, + cat_10_mouth4_TA_tex_txt, + cat_10_mouth5_TA_tex_txt, + cat_10_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 9, + 22, + 33, + 0, + 0, + 10, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_144, + &cKF_bs_r_cat_1, + { + cat_11_tmem_txt, + cat_11_pal, + { + cat_11_eye1_TA_tex_txt, + cat_11_eye2_TA_tex_txt, + cat_11_eye3_TA_tex_txt, + cat_11_eye4_TA_tex_txt, + cat_11_eye5_TA_tex_txt, + cat_11_eye6_TA_tex_txt, + cat_11_eye7_TA_tex_txt, + cat_11_eye8_TA_tex_txt, + }, + { + cat_11_mouth1_TA_tex_txt, + cat_11_mouth2_TA_tex_txt, + cat_11_mouth3_TA_tex_txt, + cat_11_mouth4_TA_tex_txt, + cat_11_mouth5_TA_tex_txt, + cat_11_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 10, + 9, + 33, + 0, + 0, + 11, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_145, + &cKF_bs_r_cat_1, + { + cat_12_tmem_txt, + cat_12_pal, + { + cat_12_eye1_TA_tex_txt, + cat_12_eye2_TA_tex_txt, + cat_12_eye3_TA_tex_txt, + cat_12_eye4_TA_tex_txt, + cat_12_eye5_TA_tex_txt, + cat_12_eye6_TA_tex_txt, + cat_12_eye7_TA_tex_txt, + cat_12_eye8_TA_tex_txt, + }, + { + cat_12_mouth1_TA_tex_txt, + cat_12_mouth2_TA_tex_txt, + cat_12_mouth3_TA_tex_txt, + cat_12_mouth4_TA_tex_txt, + cat_12_mouth5_TA_tex_txt, + cat_12_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 11, + 31, + 33, + 0, + 0, + 12, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_146, + &cKF_bs_r_cat_1, + { + cat_13_tmem_txt, + cat_13_pal, + { + cat_13_eye1_TA_tex_txt, + cat_13_eye2_TA_tex_txt, + cat_13_eye3_TA_tex_txt, + cat_13_eye4_TA_tex_txt, + cat_13_eye5_TA_tex_txt, + cat_13_eye6_TA_tex_txt, + cat_13_eye7_TA_tex_txt, + cat_13_eye8_TA_tex_txt, + }, + { + cat_13_mouth1_TA_tex_txt, + cat_13_mouth2_TA_tex_txt, + cat_13_mouth3_TA_tex_txt, + cat_13_mouth4_TA_tex_txt, + cat_13_mouth5_TA_tex_txt, + cat_13_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 12, + 1, + 33, + 0, + 0, + 13, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_88, + ACTOR_OBJ_BANK_89, + &cKF_bs_r_ant_1, + { + ant_1_tmem_txt, + ant_1_pal, + { + ant_1_eye1_TA_tex_txt, + ant_1_eye2_TA_tex_txt, + ant_1_eye3_TA_tex_txt, + ant_1_eye4_TA_tex_txt, + ant_1_eye5_TA_tex_txt, + ant_1_eye6_TA_tex_txt, + ant_1_eye7_TA_tex_txt, + ant_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 152, + }, + 0.010700000450015068, + 1, + 0, + 27, + 41, + 0, + 0, + 159, + 25, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_88, + ACTOR_OBJ_BANK_90, + &cKF_bs_r_ant_1, + { + ant_2_tmem_txt, + ant_2_pal, + { + ant_2_eye1_TA_tex_txt, + ant_2_eye2_TA_tex_txt, + ant_2_eye3_TA_tex_txt, + ant_2_eye4_TA_tex_txt, + ant_2_eye5_TA_tex_txt, + ant_2_eye6_TA_tex_txt, + ant_2_eye7_TA_tex_txt, + ant_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 152, + }, + 0.010700000450015068, + 1, + 1, + 8, + 41, + 0, + 0, + 160, + 25, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_88, + ACTOR_OBJ_BANK_91, + &cKF_bs_r_ant_1, + { + ant_3_tmem_txt, + ant_3_pal, + { + ant_3_eye1_TA_tex_txt, + ant_3_eye2_TA_tex_txt, + ant_3_eye3_TA_tex_txt, + ant_3_eye4_TA_tex_txt, + ant_3_eye5_TA_tex_txt, + ant_3_eye6_TA_tex_txt, + ant_3_eye7_TA_tex_txt, + ant_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 152, + }, + 0.010700000450015068, + 1, + 2, + 17, + 41, + 0, + 0, + 161, + 25, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_88, + ACTOR_OBJ_BANK_92, + &cKF_bs_r_ant_1, + { + ant_4_tmem_txt, + ant_4_pal, + { + ant_4_eye1_TA_tex_txt, + ant_4_eye2_TA_tex_txt, + ant_4_eye3_TA_tex_txt, + ant_4_eye4_TA_tex_txt, + ant_4_eye5_TA_tex_txt, + ant_4_eye6_TA_tex_txt, + ant_4_eye7_TA_tex_txt, + ant_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 152, + }, + 0.010700000450015068, + 1, + 3, + 21, + 41, + 0, + 0, + 162, + 25, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_88, + ACTOR_OBJ_BANK_93, + &cKF_bs_r_ant_1, + { + ant_5_tmem_txt, + ant_5_pal, + { + ant_5_eye1_TA_tex_txt, + ant_5_eye2_TA_tex_txt, + ant_5_eye3_TA_tex_txt, + ant_5_eye4_TA_tex_txt, + ant_5_eye5_TA_tex_txt, + ant_5_eye6_TA_tex_txt, + ant_5_eye7_TA_tex_txt, + ant_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 152, + }, + 0.010700000450015068, + 1, + 4, + 26, + 41, + 0, + 0, + 163, + 25, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_97, + &cKF_bs_r_bea_1, + { + bea_1_tmem_txt, + bea_1_pal, + { + bea_1_eye1_TA_tex_txt, + bea_1_eye2_TA_tex_txt, + bea_1_eye3_TA_tex_txt, + bea_1_eye4_TA_tex_txt, + bea_1_eye5_TA_tex_txt, + bea_1_eye6_TA_tex_txt, + bea_1_eye7_TA_tex_txt, + bea_1_eye8_TA_tex_txt, + }, + { + bea_1_mouth1_TA_tex_txt, + bea_1_mouth2_TA_tex_txt, + bea_1_mouth3_TA_tex_txt, + bea_1_mouth4_TA_tex_txt, + bea_1_mouth5_TA_tex_txt, + bea_1_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 0, + 21, + 47, + 0, + 0, + 27, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_98, + &cKF_bs_r_bea_1, + { + bea_2_tmem_txt, + bea_2_pal, + { + bea_2_eye1_TA_tex_txt, + bea_2_eye2_TA_tex_txt, + bea_2_eye3_TA_tex_txt, + bea_2_eye4_TA_tex_txt, + bea_2_eye5_TA_tex_txt, + bea_2_eye6_TA_tex_txt, + bea_2_eye7_TA_tex_txt, + bea_2_eye8_TA_tex_txt, + }, + { + bea_2_mouth1_TA_tex_txt, + bea_2_mouth2_TA_tex_txt, + bea_2_mouth3_TA_tex_txt, + bea_2_mouth4_TA_tex_txt, + bea_2_mouth5_TA_tex_txt, + bea_2_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 1, + 25, + 47, + 0, + 0, + 28, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_99, + &cKF_bs_r_bea_1, + { + bea_3_tmem_txt, + bea_3_pal, + { + bea_3_eye1_TA_tex_txt, + bea_3_eye2_TA_tex_txt, + bea_3_eye3_TA_tex_txt, + bea_3_eye4_TA_tex_txt, + bea_3_eye5_TA_tex_txt, + bea_3_eye6_TA_tex_txt, + bea_3_eye7_TA_tex_txt, + bea_3_eye8_TA_tex_txt, + }, + { + bea_3_mouth1_TA_tex_txt, + bea_3_mouth2_TA_tex_txt, + bea_3_mouth3_TA_tex_txt, + bea_3_mouth4_TA_tex_txt, + bea_3_mouth5_TA_tex_txt, + bea_3_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 2, + 18, + 47, + 0, + 0, + 29, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_101, + &cKF_bs_r_bea_1, + { + bea_5_tmem_txt, + bea_5_pal, + { + bea_5_eye1_TA_tex_txt, + bea_5_eye2_TA_tex_txt, + bea_5_eye3_TA_tex_txt, + bea_5_eye4_TA_tex_txt, + bea_5_eye5_TA_tex_txt, + bea_5_eye6_TA_tex_txt, + bea_5_eye7_TA_tex_txt, + bea_5_eye8_TA_tex_txt, + }, + { + bea_5_mouth1_TA_tex_txt, + bea_5_mouth2_TA_tex_txt, + bea_5_mouth3_TA_tex_txt, + bea_5_mouth4_TA_tex_txt, + bea_5_mouth5_TA_tex_txt, + bea_5_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 4, + 3, + 47, + 0, + 0, + 31, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_102, + &cKF_bs_r_bea_1, + { + bea_6_tmem_txt, + bea_6_pal, + { + bea_6_eye1_TA_tex_txt, + bea_6_eye2_TA_tex_txt, + bea_6_eye3_TA_tex_txt, + bea_6_eye4_TA_tex_txt, + bea_6_eye5_TA_tex_txt, + bea_6_eye6_TA_tex_txt, + bea_6_eye7_TA_tex_txt, + bea_6_eye8_TA_tex_txt, + }, + { + bea_6_mouth1_TA_tex_txt, + bea_6_mouth2_TA_tex_txt, + bea_6_mouth3_TA_tex_txt, + bea_6_mouth4_TA_tex_txt, + bea_6_mouth5_TA_tex_txt, + bea_6_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 5, + 24, + 47, + 0, + 0, + 32, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_103, + &cKF_bs_r_bea_1, + { + bea_7_tmem_txt, + bea_7_pal, + { + bea_7_eye1_TA_tex_txt, + bea_7_eye2_TA_tex_txt, + bea_7_eye3_TA_tex_txt, + bea_7_eye4_TA_tex_txt, + bea_7_eye5_TA_tex_txt, + bea_7_eye6_TA_tex_txt, + bea_7_eye7_TA_tex_txt, + bea_7_eye8_TA_tex_txt, + }, + { + bea_7_mouth1_TA_tex_txt, + bea_7_mouth2_TA_tex_txt, + bea_7_mouth3_TA_tex_txt, + bea_7_mouth4_TA_tex_txt, + bea_7_mouth5_TA_tex_txt, + bea_7_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 6, + 27, + 47, + 0, + 0, + 33, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_104, + &cKF_bs_r_bea_1, + { + bea_8_tmem_txt, + bea_8_pal, + { + bea_8_eye1_TA_tex_txt, + bea_8_eye2_TA_tex_txt, + bea_8_eye3_TA_tex_txt, + bea_8_eye4_TA_tex_txt, + bea_8_eye5_TA_tex_txt, + bea_8_eye6_TA_tex_txt, + bea_8_eye7_TA_tex_txt, + bea_8_eye8_TA_tex_txt, + }, + { + bea_8_mouth1_TA_tex_txt, + bea_8_mouth2_TA_tex_txt, + bea_8_mouth3_TA_tex_txt, + bea_8_mouth4_TA_tex_txt, + bea_8_mouth5_TA_tex_txt, + bea_8_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 7, + 2, + 47, + 0, + 0, + 34, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_105, + &cKF_bs_r_bea_1, + { + bea_9_tmem_txt, + bea_9_pal, + { + bea_9_eye1_TA_tex_txt, + bea_9_eye2_TA_tex_txt, + bea_9_eye3_TA_tex_txt, + bea_9_eye4_TA_tex_txt, + bea_9_eye5_TA_tex_txt, + bea_9_eye6_TA_tex_txt, + bea_9_eye7_TA_tex_txt, + bea_9_eye8_TA_tex_txt, + }, + { + bea_9_mouth1_TA_tex_txt, + bea_9_mouth2_TA_tex_txt, + bea_9_mouth3_TA_tex_txt, + bea_9_mouth4_TA_tex_txt, + bea_9_mouth5_TA_tex_txt, + bea_9_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 8, + 26, + 47, + 0, + 0, + 35, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_96, + ACTOR_OBJ_BANK_106, + &cKF_bs_r_bea_1, + { + bea_10_tmem_txt, + bea_10_pal, + { + bea_10_eye1_TA_tex_txt, + bea_10_eye2_TA_tex_txt, + bea_10_eye3_TA_tex_txt, + bea_10_eye4_TA_tex_txt, + bea_10_eye5_TA_tex_txt, + bea_10_eye6_TA_tex_txt, + bea_10_eye7_TA_tex_txt, + bea_10_eye8_TA_tex_txt, + }, + { + bea_10_mouth1_TA_tex_txt, + bea_10_mouth2_TA_tex_txt, + bea_10_mouth3_TA_tex_txt, + bea_10_mouth4_TA_tex_txt, + bea_10_mouth5_TA_tex_txt, + bea_10_mouth6_TA_tex_txt, + }, + 64, + 96, + 176, + }, + 0.008999999612569809, + 0, + 9, + 2, + 47, + 0, + 0, + 36, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_114, + &cKF_bs_r_brd_1, + { + brd_1_tmem_txt, + brd_1_pal, + { + brd_1_eye1_TA_tex_txt, + brd_1_eye2_TA_tex_txt, + brd_1_eye3_TA_tex_txt, + brd_1_eye4_TA_tex_txt, + brd_1_eye5_TA_tex_txt, + brd_1_eye6_TA_tex_txt, + brd_1_eye7_TA_tex_txt, + brd_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 0, + 18, + 35, + 0, + 0, + 124, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_115, + &cKF_bs_r_brd_1, + { + brd_2_tmem_txt, + brd_2_pal, + { + brd_2_eye1_TA_tex_txt, + brd_2_eye2_TA_tex_txt, + brd_2_eye3_TA_tex_txt, + brd_2_eye4_TA_tex_txt, + brd_2_eye5_TA_tex_txt, + brd_2_eye6_TA_tex_txt, + brd_2_eye7_TA_tex_txt, + brd_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 1, + 0, + 35, + 0, + 0, + 125, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_116, + &cKF_bs_r_brd_1, + { + brd_3_tmem_txt, + brd_3_pal, + { + brd_3_eye1_TA_tex_txt, + brd_3_eye2_TA_tex_txt, + brd_3_eye3_TA_tex_txt, + brd_3_eye4_TA_tex_txt, + brd_3_eye5_TA_tex_txt, + brd_3_eye6_TA_tex_txt, + brd_3_eye7_TA_tex_txt, + brd_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 2, + 3, + 35, + 0, + 0, + 126, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_117, + &cKF_bs_r_brd_1, + { + brd_4_tmem_txt, + brd_4_pal, + { + brd_4_eye1_TA_tex_txt, + brd_4_eye2_TA_tex_txt, + brd_4_eye3_TA_tex_txt, + brd_4_eye4_TA_tex_txt, + brd_4_eye5_TA_tex_txt, + brd_4_eye6_TA_tex_txt, + brd_4_eye7_TA_tex_txt, + brd_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 3, + 1, + 35, + 0, + 0, + 127, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_118, + &cKF_bs_r_brd_1, + { + brd_5_tmem_txt, + brd_5_pal, + { + brd_5_eye1_TA_tex_txt, + brd_5_eye2_TA_tex_txt, + brd_5_eye3_TA_tex_txt, + brd_5_eye4_TA_tex_txt, + brd_5_eye5_TA_tex_txt, + brd_5_eye6_TA_tex_txt, + brd_5_eye7_TA_tex_txt, + brd_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 4, + 21, + 35, + 0, + 0, + 128, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_119, + &cKF_bs_r_brd_1, + { + brd_6_tmem_txt, + brd_6_pal, + { + brd_6_eye1_TA_tex_txt, + brd_6_eye2_TA_tex_txt, + brd_6_eye3_TA_tex_txt, + brd_6_eye4_TA_tex_txt, + brd_6_eye5_TA_tex_txt, + brd_6_eye6_TA_tex_txt, + brd_6_eye7_TA_tex_txt, + brd_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 5, + 24, + 35, + 0, + 0, + 129, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_120, + &cKF_bs_r_brd_1, + { + brd_7_tmem_txt, + brd_7_pal, + { + brd_7_eye1_TA_tex_txt, + brd_7_eye2_TA_tex_txt, + brd_7_eye3_TA_tex_txt, + brd_7_eye4_TA_tex_txt, + brd_7_eye5_TA_tex_txt, + brd_7_eye6_TA_tex_txt, + brd_7_eye7_TA_tex_txt, + brd_7_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 6, + 30, + 35, + 0, + 0, + 130, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_121, + &cKF_bs_r_brd_1, + { + brd_8_tmem_txt, + brd_8_pal, + { + brd_8_eye1_TA_tex_txt, + brd_8_eye2_TA_tex_txt, + brd_8_eye3_TA_tex_txt, + brd_8_eye4_TA_tex_txt, + brd_8_eye5_TA_tex_txt, + brd_8_eye6_TA_tex_txt, + brd_8_eye7_TA_tex_txt, + brd_8_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 7, + 20, + 35, + 0, + 0, + 131, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_122, + &cKF_bs_r_brd_1, + { + brd_9_tmem_txt, + brd_9_pal, + { + brd_9_eye1_TA_tex_txt, + brd_9_eye2_TA_tex_txt, + brd_9_eye3_TA_tex_txt, + brd_9_eye4_TA_tex_txt, + brd_9_eye5_TA_tex_txt, + brd_9_eye6_TA_tex_txt, + brd_9_eye7_TA_tex_txt, + brd_9_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 8, + 23, + 35, + 0, + 0, + 132, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_123, + &cKF_bs_r_brd_1, + { + brd_10_tmem_txt, + brd_10_pal, + { + brd_10_eye1_TA_tex_txt, + brd_10_eye2_TA_tex_txt, + brd_10_eye3_TA_tex_txt, + brd_10_eye4_TA_tex_txt, + brd_10_eye5_TA_tex_txt, + brd_10_eye6_TA_tex_txt, + brd_10_eye7_TA_tex_txt, + brd_10_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 9, + 31, + 35, + 0, + 0, + 133, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_126, + ACTOR_OBJ_BANK_127, + &cKF_bs_r_bul_1, + { + bul_1_tmem_txt, + bul_1_pal, + { + bul_1_eye1_TA_tex_txt, + bul_1_eye2_TA_tex_txt, + bul_1_eye3_TA_tex_txt, + bul_1_eye4_TA_tex_txt, + bul_1_eye5_TA_tex_txt, + bul_1_eye6_TA_tex_txt, + bul_1_eye7_TA_tex_txt, + bul_1_eye8_TA_tex_txt, + }, + { + bul_1_mouth1_TA_tex_txt, + bul_1_mouth2_TA_tex_txt, + bul_1_mouth3_TA_tex_txt, + bul_1_mouth4_TA_tex_txt, + bul_1_mouth5_TA_tex_txt, + bul_1_mouth6_TA_tex_txt, + }, + 128, + 32, + 176, + }, + 0.012500000186264515, + 0, + 0, + 13, + 45, + 0, + 0, + 116, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_126, + ACTOR_OBJ_BANK_128, + &cKF_bs_r_bul_1, + { + bul_2_tmem_txt, + bul_2_pal, + { + bul_2_eye1_TA_tex_txt, + bul_2_eye2_TA_tex_txt, + bul_2_eye3_TA_tex_txt, + bul_2_eye4_TA_tex_txt, + bul_2_eye5_TA_tex_txt, + bul_2_eye6_TA_tex_txt, + bul_2_eye7_TA_tex_txt, + bul_2_eye8_TA_tex_txt, + }, + { + bul_2_mouth1_TA_tex_txt, + bul_2_mouth2_TA_tex_txt, + bul_2_mouth3_TA_tex_txt, + bul_2_mouth4_TA_tex_txt, + bul_2_mouth5_TA_tex_txt, + bul_2_mouth6_TA_tex_txt, + }, + 128, + 32, + 176, + }, + 0.012500000186264515, + 0, + 1, + 8, + 45, + 0, + 0, + 117, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_149, + &cKF_bs_r_chn_1, + { + chn_1_tmem_txt, + chn_1_pal, + { + chn_1_eye1_TA_tex_txt, + chn_1_eye2_TA_tex_txt, + chn_1_eye3_TA_tex_txt, + chn_1_eye4_TA_tex_txt, + chn_1_eye5_TA_tex_txt, + chn_1_eye6_TA_tex_txt, + chn_1_eye7_TA_tex_txt, + chn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 0, + 21, + 35, + 0, + 0, + 108, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_150, + &cKF_bs_r_chn_1, + { + chn_2_tmem_txt, + chn_2_pal, + { + chn_2_eye1_TA_tex_txt, + chn_2_eye2_TA_tex_txt, + chn_2_eye3_TA_tex_txt, + chn_2_eye4_TA_tex_txt, + chn_2_eye5_TA_tex_txt, + chn_2_eye6_TA_tex_txt, + chn_2_eye7_TA_tex_txt, + chn_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 1, + 12, + 35, + 0, + 0, + 109, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_151, + &cKF_bs_r_chn_1, + { + chn_3_tmem_txt, + chn_3_pal, + { + chn_3_eye1_TA_tex_txt, + chn_3_eye2_TA_tex_txt, + chn_3_eye3_TA_tex_txt, + chn_3_eye4_TA_tex_txt, + chn_3_eye5_TA_tex_txt, + chn_3_eye6_TA_tex_txt, + chn_3_eye7_TA_tex_txt, + chn_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 2, + 14, + 35, + 0, + 0, + 110, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_152, + &cKF_bs_r_chn_1, + { + chn_4_tmem_txt, + chn_4_pal, + { + chn_4_eye1_TA_tex_txt, + chn_4_eye2_TA_tex_txt, + chn_4_eye3_TA_tex_txt, + chn_4_eye4_TA_tex_txt, + chn_4_eye5_TA_tex_txt, + chn_4_eye6_TA_tex_txt, + chn_4_eye7_TA_tex_txt, + chn_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 3, + 30, + 35, + 0, + 0, + 111, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_153, + &cKF_bs_r_chn_1, + { + chn_5_tmem_txt, + chn_5_pal, + { + chn_5_eye1_TA_tex_txt, + chn_5_eye2_TA_tex_txt, + chn_5_eye3_TA_tex_txt, + chn_5_eye4_TA_tex_txt, + chn_5_eye5_TA_tex_txt, + chn_5_eye6_TA_tex_txt, + chn_5_eye7_TA_tex_txt, + chn_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 4, + 22, + 35, + 0, + 0, + 112, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_154, + &cKF_bs_r_chn_1, + { + chn_6_tmem_txt, + chn_6_pal, + { + chn_6_eye1_TA_tex_txt, + chn_6_eye2_TA_tex_txt, + chn_6_eye3_TA_tex_txt, + chn_6_eye4_TA_tex_txt, + chn_6_eye5_TA_tex_txt, + chn_6_eye6_TA_tex_txt, + chn_6_eye7_TA_tex_txt, + chn_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 5, + 28, + 35, + 0, + 0, + 113, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_155, + &cKF_bs_r_chn_1, + { + chn_7_tmem_txt, + chn_7_pal, + { + chn_7_eye1_TA_tex_txt, + chn_7_eye2_TA_tex_txt, + chn_7_eye3_TA_tex_txt, + chn_7_eye4_TA_tex_txt, + chn_7_eye5_TA_tex_txt, + chn_7_eye6_TA_tex_txt, + chn_7_eye7_TA_tex_txt, + chn_7_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 6, + 18, + 35, + 0, + 0, + 114, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_156, + &cKF_bs_r_chn_1, + { + chn_8_tmem_txt, + chn_8_pal, + { + chn_8_eye1_TA_tex_txt, + chn_8_eye2_TA_tex_txt, + chn_8_eye3_TA_tex_txt, + chn_8_eye4_TA_tex_txt, + chn_8_eye5_TA_tex_txt, + chn_8_eye6_TA_tex_txt, + chn_8_eye7_TA_tex_txt, + chn_8_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 7, + 1, + 35, + 0, + 0, + 115, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_158, + &cKF_bs_r_cbr_1, + { + cbr_1_tmem_txt, + cbr_1_pal, + { + cbr_1_eye1_TA_tex_txt, + cbr_1_eye2_TA_tex_txt, + cbr_1_eye3_TA_tex_txt, + cbr_1_eye4_TA_tex_txt, + cbr_1_eye5_TA_tex_txt, + cbr_1_eye6_TA_tex_txt, + cbr_1_eye7_TA_tex_txt, + cbr_1_eye8_TA_tex_txt, + }, + { + cbr_1_mouth1_TA_tex_txt, + cbr_1_mouth2_TA_tex_txt, + cbr_1_mouth3_TA_tex_txt, + cbr_1_mouth4_TA_tex_txt, + cbr_1_mouth5_TA_tex_txt, + cbr_1_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 0, + 31, + 33, + 0, + 0, + 180, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_159, + &cKF_bs_r_cbr_1, + { + cbr_2_tmem_txt, + cbr_2_pal, + { + cbr_2_eye1_TA_tex_txt, + cbr_2_eye2_TA_tex_txt, + cbr_2_eye3_TA_tex_txt, + cbr_2_eye4_TA_tex_txt, + cbr_2_eye5_TA_tex_txt, + cbr_2_eye6_TA_tex_txt, + cbr_2_eye7_TA_tex_txt, + cbr_2_eye8_TA_tex_txt, + }, + { + cbr_2_mouth1_TA_tex_txt, + cbr_2_mouth2_TA_tex_txt, + cbr_2_mouth3_TA_tex_txt, + cbr_2_mouth4_TA_tex_txt, + cbr_2_mouth5_TA_tex_txt, + cbr_2_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 1, + 28, + 33, + 0, + 0, + 181, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_160, + &cKF_bs_r_cbr_1, + { + cbr_3_tmem_txt, + cbr_3_pal, + { + cbr_3_eye1_TA_tex_txt, + cbr_3_eye2_TA_tex_txt, + cbr_3_eye3_TA_tex_txt, + cbr_3_eye4_TA_tex_txt, + cbr_3_eye5_TA_tex_txt, + cbr_3_eye6_TA_tex_txt, + cbr_3_eye7_TA_tex_txt, + cbr_3_eye8_TA_tex_txt, + }, + { + cbr_3_mouth1_TA_tex_txt, + cbr_3_mouth2_TA_tex_txt, + cbr_3_mouth3_TA_tex_txt, + cbr_3_mouth4_TA_tex_txt, + cbr_3_mouth5_TA_tex_txt, + cbr_3_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 2, + 6, + 33, + 0, + 0, + 182, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_161, + &cKF_bs_r_cbr_1, + { + cbr_4_tmem_txt, + cbr_4_pal, + { + cbr_4_eye1_TA_tex_txt, + cbr_4_eye2_TA_tex_txt, + cbr_4_eye3_TA_tex_txt, + cbr_4_eye4_TA_tex_txt, + cbr_4_eye5_TA_tex_txt, + cbr_4_eye6_TA_tex_txt, + cbr_4_eye7_TA_tex_txt, + cbr_4_eye8_TA_tex_txt, + }, + { + cbr_4_mouth1_TA_tex_txt, + cbr_4_mouth2_TA_tex_txt, + cbr_4_mouth3_TA_tex_txt, + cbr_4_mouth4_TA_tex_txt, + cbr_4_mouth5_TA_tex_txt, + cbr_4_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 3, + 15, + 33, + 0, + 0, + 183, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_162, + &cKF_bs_r_cbr_1, + { + cbr_5_tmem_txt, + cbr_5_pal, + { + cbr_5_eye1_TA_tex_txt, + cbr_5_eye2_TA_tex_txt, + cbr_5_eye3_TA_tex_txt, + cbr_5_eye4_TA_tex_txt, + cbr_5_eye5_TA_tex_txt, + cbr_5_eye6_TA_tex_txt, + cbr_5_eye7_TA_tex_txt, + cbr_5_eye8_TA_tex_txt, + }, + { + cbr_5_mouth1_TA_tex_txt, + cbr_5_mouth2_TA_tex_txt, + cbr_5_mouth3_TA_tex_txt, + cbr_5_mouth4_TA_tex_txt, + cbr_5_mouth5_TA_tex_txt, + cbr_5_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 4, + 20, + 33, + 0, + 0, + 184, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_163, + &cKF_bs_r_cbr_1, + { + cbr_6_tmem_txt, + cbr_6_pal, + { + cbr_6_eye1_TA_tex_txt, + cbr_6_eye2_TA_tex_txt, + cbr_6_eye3_TA_tex_txt, + cbr_6_eye4_TA_tex_txt, + cbr_6_eye5_TA_tex_txt, + cbr_6_eye6_TA_tex_txt, + cbr_6_eye7_TA_tex_txt, + cbr_6_eye8_TA_tex_txt, + }, + { + cbr_6_mouth1_TA_tex_txt, + cbr_6_mouth2_TA_tex_txt, + cbr_6_mouth3_TA_tex_txt, + cbr_6_mouth4_TA_tex_txt, + cbr_6_mouth5_TA_tex_txt, + cbr_6_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 5, + 25, + 33, + 0, + 0, + 185, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_164, + &cKF_bs_r_cbr_1, + { + cbr_7_tmem_txt, + cbr_7_pal, + { + cbr_7_eye1_TA_tex_txt, + cbr_7_eye2_TA_tex_txt, + cbr_7_eye3_TA_tex_txt, + cbr_7_eye4_TA_tex_txt, + cbr_7_eye5_TA_tex_txt, + cbr_7_eye6_TA_tex_txt, + cbr_7_eye7_TA_tex_txt, + cbr_7_eye8_TA_tex_txt, + }, + { + cbr_7_mouth1_TA_tex_txt, + cbr_7_mouth2_TA_tex_txt, + cbr_7_mouth3_TA_tex_txt, + cbr_7_mouth4_TA_tex_txt, + cbr_7_mouth5_TA_tex_txt, + cbr_7_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 6, + 7, + 33, + 0, + 0, + 186, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_165, + &cKF_bs_r_cbr_1, + { + cbr_8_tmem_txt, + cbr_8_pal, + { + cbr_8_eye1_TA_tex_txt, + cbr_8_eye2_TA_tex_txt, + cbr_8_eye3_TA_tex_txt, + cbr_8_eye4_TA_tex_txt, + cbr_8_eye5_TA_tex_txt, + cbr_8_eye6_TA_tex_txt, + cbr_8_eye7_TA_tex_txt, + cbr_8_eye8_TA_tex_txt, + }, + { + cbr_8_mouth1_TA_tex_txt, + cbr_8_mouth2_TA_tex_txt, + cbr_8_mouth3_TA_tex_txt, + cbr_8_mouth4_TA_tex_txt, + cbr_8_mouth5_TA_tex_txt, + cbr_8_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 7, + 8, + 33, + 0, + 0, + 187, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_166, + &cKF_bs_r_cbr_1, + { + cbr_9_tmem_txt, + cbr_9_pal, + { + cbr_9_eye1_TA_tex_txt, + cbr_9_eye2_TA_tex_txt, + cbr_9_eye3_TA_tex_txt, + cbr_9_eye4_TA_tex_txt, + cbr_9_eye5_TA_tex_txt, + cbr_9_eye6_TA_tex_txt, + cbr_9_eye7_TA_tex_txt, + cbr_9_eye8_TA_tex_txt, + }, + { + cbr_9_mouth1_TA_tex_txt, + cbr_9_mouth2_TA_tex_txt, + cbr_9_mouth3_TA_tex_txt, + cbr_9_mouth4_TA_tex_txt, + cbr_9_mouth5_TA_tex_txt, + cbr_9_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 8, + 29, + 33, + 0, + 0, + 188, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_169, + ACTOR_OBJ_BANK_170, + &cKF_bs_r_cow_1, + { + cow_1_tmem_txt, + cow_1_pal, + { + cow_1_eye1_TA_tex_txt, + cow_1_eye2_TA_tex_txt, + cow_1_eye3_TA_tex_txt, + cow_1_eye4_TA_tex_txt, + cow_1_eye5_TA_tex_txt, + cow_1_eye6_TA_tex_txt, + cow_1_eye7_TA_tex_txt, + cow_1_eye8_TA_tex_txt, + }, + { + cow_1_mouth1_TA_tex_txt, + cow_1_mouth2_TA_tex_txt, + cow_1_mouth3_TA_tex_txt, + cow_1_mouth4_TA_tex_txt, + cow_1_mouth5_TA_tex_txt, + cow_1_mouth6_TA_tex_txt, + }, + 56, + 104, + 176, + }, + 0.011300000362098217, + 0, + 0, + 0, + 42, + 0, + 0, + 120, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_169, + ACTOR_OBJ_BANK_171, + &cKF_bs_r_cow_1, + { + cow_2_tmem_txt, + cow_2_pal, + { + cow_2_eye1_TA_tex_txt, + cow_2_eye2_TA_tex_txt, + cow_2_eye3_TA_tex_txt, + cow_2_eye4_TA_tex_txt, + cow_2_eye5_TA_tex_txt, + cow_2_eye6_TA_tex_txt, + cow_2_eye7_TA_tex_txt, + cow_2_eye8_TA_tex_txt, + }, + { + cow_2_mouth1_TA_tex_txt, + cow_2_mouth2_TA_tex_txt, + cow_2_mouth3_TA_tex_txt, + cow_2_mouth4_TA_tex_txt, + cow_2_mouth5_TA_tex_txt, + cow_2_mouth6_TA_tex_txt, + }, + 56, + 104, + 176, + }, + 0.011300000362098217, + 0, + 1, + 17, + 42, + 0, + 0, + 121, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_169, + ACTOR_OBJ_BANK_172, + &cKF_bs_r_cow_1, + { + cow_3_tmem_txt, + cow_3_pal, + { + cow_3_eye1_TA_tex_txt, + cow_3_eye2_TA_tex_txt, + cow_3_eye3_TA_tex_txt, + cow_3_eye4_TA_tex_txt, + cow_3_eye5_TA_tex_txt, + cow_3_eye6_TA_tex_txt, + cow_3_eye7_TA_tex_txt, + cow_3_eye8_TA_tex_txt, + }, + { + cow_3_mouth1_TA_tex_txt, + cow_3_mouth2_TA_tex_txt, + cow_3_mouth3_TA_tex_txt, + cow_3_mouth4_TA_tex_txt, + cow_3_mouth5_TA_tex_txt, + cow_3_mouth6_TA_tex_txt, + }, + 56, + 104, + 176, + }, + 0.011300000362098217, + 0, + 2, + 8, + 42, + 0, + 0, + 122, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_169, + ACTOR_OBJ_BANK_173, + &cKF_bs_r_cow_1, + { + cow_4_tmem_txt, + cow_4_pal, + { + cow_4_eye1_TA_tex_txt, + cow_4_eye2_TA_tex_txt, + cow_4_eye3_TA_tex_txt, + cow_4_eye4_TA_tex_txt, + cow_4_eye5_TA_tex_txt, + cow_4_eye6_TA_tex_txt, + cow_4_eye7_TA_tex_txt, + cow_4_eye8_TA_tex_txt, + }, + { + cow_4_mouth1_TA_tex_txt, + cow_4_mouth2_TA_tex_txt, + cow_4_mouth3_TA_tex_txt, + cow_4_mouth4_TA_tex_txt, + cow_4_mouth5_TA_tex_txt, + cow_4_mouth6_TA_tex_txt, + }, + 56, + 104, + 176, + }, + 0.011300000362098217, + 0, + 3, + 5, + 42, + 0, + 0, + 123, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_174, + ACTOR_OBJ_BANK_175, + &cKF_bs_r_crd_1, + { + crd_1_tmem_txt, + crd_1_pal, + { + crd_1_eye1_TA_tex_txt, + crd_1_eye2_TA_tex_txt, + crd_1_eye3_TA_tex_txt, + crd_1_eye4_TA_tex_txt, + crd_1_eye5_TA_tex_txt, + crd_1_eye6_TA_tex_txt, + crd_1_eye7_TA_tex_txt, + crd_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 96, + 0, + 168, + }, + 0.010499999858438969, + 1, + 0, + 4, + 48, + 0, + 0, + 146, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_174, + ACTOR_OBJ_BANK_176, + &cKF_bs_r_crd_1, + { + crd_2_tmem_txt, + crd_2_pal, + { + crd_2_eye1_TA_tex_txt, + crd_2_eye2_TA_tex_txt, + crd_2_eye3_TA_tex_txt, + crd_2_eye4_TA_tex_txt, + crd_2_eye5_TA_tex_txt, + crd_2_eye6_TA_tex_txt, + crd_2_eye7_TA_tex_txt, + crd_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 96, + 0, + 168, + }, + 0.010499999858438969, + 1, + 1, + 11, + 48, + 0, + 0, + 147, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_174, + ACTOR_OBJ_BANK_177, + &cKF_bs_r_crd_1, + { + crd_3_tmem_txt, + crd_3_pal, + { + crd_3_eye1_TA_tex_txt, + crd_3_eye2_TA_tex_txt, + crd_3_eye3_TA_tex_txt, + crd_3_eye4_TA_tex_txt, + crd_3_eye5_TA_tex_txt, + crd_3_eye6_TA_tex_txt, + crd_3_eye7_TA_tex_txt, + crd_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 96, + 0, + 168, + }, + 0.010499999858438969, + 1, + 2, + 2, + 48, + 0, + 0, + 148, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_183, + &cKF_bs_r_dog_1, + { + dog_1_tmem_txt, + dog_1_pal, + { + dog_1_eye1_TA_tex_txt, + dog_1_eye2_TA_tex_txt, + dog_1_eye3_TA_tex_txt, + dog_1_eye4_TA_tex_txt, + dog_1_eye5_TA_tex_txt, + dog_1_eye6_TA_tex_txt, + dog_1_eye7_TA_tex_txt, + dog_1_eye8_TA_tex_txt, + }, + { + dog_1_mouth1_TA_tex_txt, + dog_1_mouth2_TA_tex_txt, + dog_1_mouth3_TA_tex_txt, + dog_1_mouth4_TA_tex_txt, + dog_1_mouth5_TA_tex_txt, + dog_1_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 0, + 15, + 37, + 0, + 0, + 37, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_184, + &cKF_bs_r_dog_1, + { + dog_2_tmem_txt, + dog_2_pal, + { + dog_2_eye1_TA_tex_txt, + dog_2_eye2_TA_tex_txt, + dog_2_eye3_TA_tex_txt, + dog_2_eye4_TA_tex_txt, + dog_2_eye5_TA_tex_txt, + dog_2_eye6_TA_tex_txt, + dog_2_eye7_TA_tex_txt, + dog_2_eye8_TA_tex_txt, + }, + { + dog_2_mouth1_TA_tex_txt, + dog_2_mouth2_TA_tex_txt, + dog_2_mouth3_TA_tex_txt, + dog_2_mouth4_TA_tex_txt, + dog_2_mouth5_TA_tex_txt, + dog_2_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 1, + 22, + 37, + 0, + 0, + 38, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_185, + &cKF_bs_r_dog_1, + { + dog_3_tmem_txt, + dog_3_pal, + { + dog_3_eye1_TA_tex_txt, + dog_3_eye2_TA_tex_txt, + dog_3_eye3_TA_tex_txt, + dog_3_eye4_TA_tex_txt, + dog_3_eye5_TA_tex_txt, + dog_3_eye6_TA_tex_txt, + dog_3_eye7_TA_tex_txt, + dog_3_eye8_TA_tex_txt, + }, + { + dog_3_mouth1_TA_tex_txt, + dog_3_mouth2_TA_tex_txt, + dog_3_mouth3_TA_tex_txt, + dog_3_mouth4_TA_tex_txt, + dog_3_mouth5_TA_tex_txt, + dog_3_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 2, + 0, + 37, + 0, + 0, + 39, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_186, + &cKF_bs_r_dog_1, + { + dog_4_tmem_txt, + dog_4_pal, + { + dog_4_eye1_TA_tex_txt, + dog_4_eye2_TA_tex_txt, + dog_4_eye3_TA_tex_txt, + dog_4_eye4_TA_tex_txt, + dog_4_eye5_TA_tex_txt, + dog_4_eye6_TA_tex_txt, + dog_4_eye7_TA_tex_txt, + dog_4_eye8_TA_tex_txt, + }, + { + dog_4_mouth1_TA_tex_txt, + dog_4_mouth2_TA_tex_txt, + dog_4_mouth3_TA_tex_txt, + dog_4_mouth4_TA_tex_txt, + dog_4_mouth5_TA_tex_txt, + dog_4_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 3, + 16, + 37, + 0, + 0, + 40, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_187, + &cKF_bs_r_dog_1, + { + dog_5_tmem_txt, + dog_5_pal, + { + dog_5_eye1_TA_tex_txt, + dog_5_eye2_TA_tex_txt, + dog_5_eye3_TA_tex_txt, + dog_5_eye4_TA_tex_txt, + dog_5_eye5_TA_tex_txt, + dog_5_eye6_TA_tex_txt, + dog_5_eye7_TA_tex_txt, + dog_5_eye8_TA_tex_txt, + }, + { + dog_5_mouth1_TA_tex_txt, + dog_5_mouth2_TA_tex_txt, + dog_5_mouth3_TA_tex_txt, + dog_5_mouth4_TA_tex_txt, + dog_5_mouth5_TA_tex_txt, + dog_5_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 4, + 10, + 37, + 0, + 0, + 41, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_188, + &cKF_bs_r_dog_1, + { + dog_6_tmem_txt, + dog_6_pal, + { + dog_6_eye1_TA_tex_txt, + dog_6_eye2_TA_tex_txt, + dog_6_eye3_TA_tex_txt, + dog_6_eye4_TA_tex_txt, + dog_6_eye5_TA_tex_txt, + dog_6_eye6_TA_tex_txt, + dog_6_eye7_TA_tex_txt, + dog_6_eye8_TA_tex_txt, + }, + { + dog_6_mouth1_TA_tex_txt, + dog_6_mouth2_TA_tex_txt, + dog_6_mouth3_TA_tex_txt, + dog_6_mouth4_TA_tex_txt, + dog_6_mouth5_TA_tex_txt, + dog_6_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 5, + 27, + 37, + 0, + 0, + 42, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_190, + &cKF_bs_r_dog_1, + { + dog_8_tmem_txt, + dog_8_pal, + { + dog_8_eye1_TA_tex_txt, + dog_8_eye2_TA_tex_txt, + dog_8_eye3_TA_tex_txt, + dog_8_eye4_TA_tex_txt, + dog_8_eye5_TA_tex_txt, + dog_8_eye6_TA_tex_txt, + dog_8_eye7_TA_tex_txt, + dog_8_eye8_TA_tex_txt, + }, + { + dog_8_mouth1_TA_tex_txt, + dog_8_mouth2_TA_tex_txt, + dog_8_mouth3_TA_tex_txt, + dog_8_mouth4_TA_tex_txt, + dog_8_mouth5_TA_tex_txt, + dog_8_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 7, + 12, + 37, + 0, + 0, + 44, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_192, + &cKF_bs_r_duk_1, + { + duk_1_tmem_txt, + duk_1_pal, + { + duk_1_eye1_TA_tex_txt, + duk_1_eye2_TA_tex_txt, + duk_1_eye3_TA_tex_txt, + duk_1_eye4_TA_tex_txt, + duk_1_eye5_TA_tex_txt, + duk_1_eye6_TA_tex_txt, + duk_1_eye7_TA_tex_txt, + duk_1_eye8_TA_tex_txt, + }, + { + duk_1_mouth1_TA_tex_txt, + duk_1_mouth2_TA_tex_txt, + duk_1_mouth3_TA_tex_txt, + duk_1_mouth4_TA_tex_txt, + duk_1_mouth5_TA_tex_txt, + duk_1_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 0, + 11, + 31, + 0, + 0, + 67, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_193, + &cKF_bs_r_duk_1, + { + duk_2_tmem_txt, + duk_2_pal, + { + duk_2_eye1_TA_tex_txt, + duk_2_eye2_TA_tex_txt, + duk_2_eye3_TA_tex_txt, + duk_2_eye4_TA_tex_txt, + duk_2_eye5_TA_tex_txt, + duk_2_eye6_TA_tex_txt, + duk_2_eye7_TA_tex_txt, + duk_2_eye8_TA_tex_txt, + }, + { + duk_2_mouth1_TA_tex_txt, + duk_2_mouth2_TA_tex_txt, + duk_2_mouth3_TA_tex_txt, + duk_2_mouth4_TA_tex_txt, + duk_2_mouth5_TA_tex_txt, + duk_2_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 1, + 2, + 31, + 0, + 0, + 68, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_194, + &cKF_bs_r_duk_1, + { + duk_3_tmem_txt, + duk_3_pal, + { + duk_3_eye1_TA_tex_txt, + duk_3_eye2_TA_tex_txt, + duk_3_eye3_TA_tex_txt, + duk_3_eye4_TA_tex_txt, + duk_3_eye5_TA_tex_txt, + duk_3_eye6_TA_tex_txt, + duk_3_eye7_TA_tex_txt, + duk_3_eye8_TA_tex_txt, + }, + { + duk_3_mouth1_TA_tex_txt, + duk_3_mouth2_TA_tex_txt, + duk_3_mouth3_TA_tex_txt, + duk_3_mouth4_TA_tex_txt, + duk_3_mouth5_TA_tex_txt, + duk_3_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 2, + 19, + 31, + 0, + 0, + 69, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_195, + &cKF_bs_r_duk_1, + { + duk_4_tmem_txt, + duk_4_pal, + { + duk_4_eye1_TA_tex_txt, + duk_4_eye2_TA_tex_txt, + duk_4_eye3_TA_tex_txt, + duk_4_eye4_TA_tex_txt, + duk_4_eye5_TA_tex_txt, + duk_4_eye6_TA_tex_txt, + duk_4_eye7_TA_tex_txt, + duk_4_eye8_TA_tex_txt, + }, + { + duk_4_mouth1_TA_tex_txt, + duk_4_mouth2_TA_tex_txt, + duk_4_mouth3_TA_tex_txt, + duk_4_mouth4_TA_tex_txt, + duk_4_mouth5_TA_tex_txt, + duk_4_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 3, + 31, + 31, + 0, + 0, + 70, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_196, + &cKF_bs_r_duk_1, + { + duk_5_tmem_txt, + duk_5_pal, + { + duk_5_eye1_TA_tex_txt, + duk_5_eye2_TA_tex_txt, + duk_5_eye3_TA_tex_txt, + duk_5_eye4_TA_tex_txt, + duk_5_eye5_TA_tex_txt, + duk_5_eye6_TA_tex_txt, + duk_5_eye7_TA_tex_txt, + duk_5_eye8_TA_tex_txt, + }, + { + duk_5_mouth1_TA_tex_txt, + duk_5_mouth2_TA_tex_txt, + duk_5_mouth3_TA_tex_txt, + duk_5_mouth4_TA_tex_txt, + duk_5_mouth5_TA_tex_txt, + duk_5_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 4, + 3, + 31, + 0, + 0, + 71, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_197, + &cKF_bs_r_duk_1, + { + duk_6_tmem_txt, + duk_6_pal, + { + duk_6_eye1_TA_tex_txt, + duk_6_eye2_TA_tex_txt, + duk_6_eye3_TA_tex_txt, + duk_6_eye4_TA_tex_txt, + duk_6_eye5_TA_tex_txt, + duk_6_eye6_TA_tex_txt, + duk_6_eye7_TA_tex_txt, + duk_6_eye8_TA_tex_txt, + }, + { + duk_6_mouth1_TA_tex_txt, + duk_6_mouth2_TA_tex_txt, + duk_6_mouth3_TA_tex_txt, + duk_6_mouth4_TA_tex_txt, + duk_6_mouth5_TA_tex_txt, + duk_6_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 5, + 4, + 31, + 0, + 0, + 72, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_201, + &cKF_bs_r_elp_1, + { + elp_1_tmem_txt, + elp_1_pal, + { + elp_1_eye1_TA_tex_txt, + elp_1_eye2_TA_tex_txt, + elp_1_eye3_TA_tex_txt, + elp_1_eye4_TA_tex_txt, + elp_1_eye5_TA_tex_txt, + elp_1_eye6_TA_tex_txt, + elp_1_eye7_TA_tex_txt, + elp_1_eye8_TA_tex_txt, + }, + { + elp_1_mouth1_TA_tex_txt, + elp_1_mouth2_TA_tex_txt, + elp_1_mouth3_TA_tex_txt, + elp_1_mouth4_TA_tex_txt, + elp_1_mouth5_TA_tex_txt, + elp_1_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 0, + 4, + 40, + 0, + 0, + 15, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_202, + &cKF_bs_r_elp_1, + { + elp_2_tmem_txt, + elp_2_pal, + { + elp_2_eye1_TA_tex_txt, + elp_2_eye2_TA_tex_txt, + elp_2_eye3_TA_tex_txt, + elp_2_eye4_TA_tex_txt, + elp_2_eye5_TA_tex_txt, + elp_2_eye6_TA_tex_txt, + elp_2_eye7_TA_tex_txt, + elp_2_eye8_TA_tex_txt, + }, + { + elp_2_mouth1_TA_tex_txt, + elp_2_mouth2_TA_tex_txt, + elp_2_mouth3_TA_tex_txt, + elp_2_mouth4_TA_tex_txt, + elp_2_mouth5_TA_tex_txt, + elp_2_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 1, + 0, + 40, + 0, + 0, + 16, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_203, + &cKF_bs_r_elp_1, + { + elp_3_tmem_txt, + elp_3_pal, + { + elp_3_eye1_TA_tex_txt, + elp_3_eye2_TA_tex_txt, + elp_3_eye3_TA_tex_txt, + elp_3_eye4_TA_tex_txt, + elp_3_eye5_TA_tex_txt, + elp_3_eye6_TA_tex_txt, + elp_3_eye7_TA_tex_txt, + elp_3_eye8_TA_tex_txt, + }, + { + elp_3_mouth1_TA_tex_txt, + elp_3_mouth2_TA_tex_txt, + elp_3_mouth3_TA_tex_txt, + elp_3_mouth4_TA_tex_txt, + elp_3_mouth5_TA_tex_txt, + elp_3_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 2, + 28, + 40, + 0, + 0, + 17, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_206, + &cKF_bs_r_flg_1, + { + flg_1_tmem_txt, + flg_1_pal, + { + flg_1_eye1_TA_tex_txt, + flg_1_eye2_TA_tex_txt, + flg_1_eye3_TA_tex_txt, + flg_1_eye4_TA_tex_txt, + flg_1_eye5_TA_tex_txt, + flg_1_eye6_TA_tex_txt, + flg_1_eye7_TA_tex_txt, + flg_1_eye8_TA_tex_txt, + }, + { + flg_1_mouth1_TA_tex_txt, + flg_1_mouth2_TA_tex_txt, + flg_1_mouth3_TA_tex_txt, + flg_1_mouth4_TA_tex_txt, + flg_1_mouth5_TA_tex_txt, + flg_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 0, + 20, + 38, + 0, + 0, + 134, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_207, + &cKF_bs_r_flg_1, + { + flg_2_tmem_txt, + flg_2_pal, + { + flg_2_eye1_TA_tex_txt, + flg_2_eye2_TA_tex_txt, + flg_2_eye3_TA_tex_txt, + flg_2_eye4_TA_tex_txt, + flg_2_eye5_TA_tex_txt, + flg_2_eye6_TA_tex_txt, + flg_2_eye7_TA_tex_txt, + flg_2_eye8_TA_tex_txt, + }, + { + flg_2_mouth1_TA_tex_txt, + flg_2_mouth2_TA_tex_txt, + flg_2_mouth3_TA_tex_txt, + flg_2_mouth4_TA_tex_txt, + flg_2_mouth5_TA_tex_txt, + flg_2_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 1, + 23, + 38, + 0, + 0, + 135, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_208, + &cKF_bs_r_flg_1, + { + flg_3_tmem_txt, + flg_3_pal, + { + flg_3_eye1_TA_tex_txt, + flg_3_eye2_TA_tex_txt, + flg_3_eye3_TA_tex_txt, + flg_3_eye4_TA_tex_txt, + flg_3_eye5_TA_tex_txt, + flg_3_eye6_TA_tex_txt, + flg_3_eye7_TA_tex_txt, + flg_3_eye8_TA_tex_txt, + }, + { + flg_3_mouth1_TA_tex_txt, + flg_3_mouth2_TA_tex_txt, + flg_3_mouth3_TA_tex_txt, + flg_3_mouth4_TA_tex_txt, + flg_3_mouth5_TA_tex_txt, + flg_3_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 2, + 19, + 38, + 0, + 0, + 136, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_209, + &cKF_bs_r_flg_1, + { + flg_4_tmem_txt, + flg_4_pal, + { + flg_4_eye1_TA_tex_txt, + flg_4_eye2_TA_tex_txt, + flg_4_eye3_TA_tex_txt, + flg_4_eye4_TA_tex_txt, + flg_4_eye5_TA_tex_txt, + flg_4_eye6_TA_tex_txt, + flg_4_eye7_TA_tex_txt, + flg_4_eye8_TA_tex_txt, + }, + { + flg_4_mouth1_TA_tex_txt, + flg_4_mouth2_TA_tex_txt, + flg_4_mouth3_TA_tex_txt, + flg_4_mouth4_TA_tex_txt, + flg_4_mouth5_TA_tex_txt, + flg_4_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 3, + 25, + 38, + 0, + 0, + 137, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_210, + &cKF_bs_r_flg_1, + { + flg_5_tmem_txt, + flg_5_pal, + { + flg_5_eye1_TA_tex_txt, + flg_5_eye2_TA_tex_txt, + flg_5_eye3_TA_tex_txt, + flg_5_eye4_TA_tex_txt, + flg_5_eye5_TA_tex_txt, + flg_5_eye6_TA_tex_txt, + flg_5_eye7_TA_tex_txt, + flg_5_eye8_TA_tex_txt, + }, + { + flg_5_mouth1_TA_tex_txt, + flg_5_mouth2_TA_tex_txt, + flg_5_mouth3_TA_tex_txt, + flg_5_mouth4_TA_tex_txt, + flg_5_mouth5_TA_tex_txt, + flg_5_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 4, + 2, + 38, + 0, + 0, + 138, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_211, + &cKF_bs_r_flg_1, + { + flg_6_tmem_txt, + flg_6_pal, + { + flg_6_eye1_TA_tex_txt, + flg_6_eye2_TA_tex_txt, + flg_6_eye3_TA_tex_txt, + flg_6_eye4_TA_tex_txt, + flg_6_eye5_TA_tex_txt, + flg_6_eye6_TA_tex_txt, + flg_6_eye7_TA_tex_txt, + flg_6_eye8_TA_tex_txt, + }, + { + flg_6_mouth1_TA_tex_txt, + flg_6_mouth2_TA_tex_txt, + flg_6_mouth3_TA_tex_txt, + flg_6_mouth4_TA_tex_txt, + flg_6_mouth5_TA_tex_txt, + flg_6_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 5, + 5, + 38, + 0, + 0, + 139, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_212, + &cKF_bs_r_flg_1, + { + flg_7_tmem_txt, + flg_7_pal, + { + flg_7_eye1_TA_tex_txt, + flg_7_eye2_TA_tex_txt, + flg_7_eye3_TA_tex_txt, + flg_7_eye4_TA_tex_txt, + flg_7_eye5_TA_tex_txt, + flg_7_eye6_TA_tex_txt, + flg_7_eye7_TA_tex_txt, + flg_7_eye8_TA_tex_txt, + }, + { + flg_7_mouth1_TA_tex_txt, + flg_7_mouth2_TA_tex_txt, + flg_7_mouth3_TA_tex_txt, + flg_7_mouth4_TA_tex_txt, + flg_7_mouth5_TA_tex_txt, + flg_7_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 6, + 13, + 38, + 0, + 0, + 140, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_213, + &cKF_bs_r_flg_1, + { + flg_8_tmem_txt, + flg_8_pal, + { + flg_8_eye1_TA_tex_txt, + flg_8_eye2_TA_tex_txt, + flg_8_eye3_TA_tex_txt, + flg_8_eye4_TA_tex_txt, + flg_8_eye5_TA_tex_txt, + flg_8_eye6_TA_tex_txt, + flg_8_eye7_TA_tex_txt, + flg_8_eye8_TA_tex_txt, + }, + { + flg_8_mouth1_TA_tex_txt, + flg_8_mouth2_TA_tex_txt, + flg_8_mouth3_TA_tex_txt, + flg_8_mouth4_TA_tex_txt, + flg_8_mouth5_TA_tex_txt, + flg_8_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 7, + 15, + 38, + 0, + 0, + 141, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_214, + &cKF_bs_r_flg_1, + { + flg_9_tmem_txt, + flg_9_pal, + { + flg_9_eye1_TA_tex_txt, + flg_9_eye2_TA_tex_txt, + flg_9_eye3_TA_tex_txt, + flg_9_eye4_TA_tex_txt, + flg_9_eye5_TA_tex_txt, + flg_9_eye6_TA_tex_txt, + flg_9_eye7_TA_tex_txt, + flg_9_eye8_TA_tex_txt, + }, + { + flg_9_mouth1_TA_tex_txt, + flg_9_mouth2_TA_tex_txt, + flg_9_mouth3_TA_tex_txt, + flg_9_mouth4_TA_tex_txt, + flg_9_mouth5_TA_tex_txt, + flg_9_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 8, + 16, + 38, + 0, + 0, + 142, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_215, + &cKF_bs_r_flg_1, + { + flg_10_tmem_txt, + flg_10_pal, + { + flg_10_eye1_TA_tex_txt, + flg_10_eye2_TA_tex_txt, + flg_10_eye3_TA_tex_txt, + flg_10_eye4_TA_tex_txt, + flg_10_eye5_TA_tex_txt, + flg_10_eye6_TA_tex_txt, + flg_10_eye7_TA_tex_txt, + flg_10_eye8_TA_tex_txt, + }, + { + flg_10_mouth1_TA_tex_txt, + flg_10_mouth2_TA_tex_txt, + flg_10_mouth3_TA_tex_txt, + flg_10_mouth4_TA_tex_txt, + flg_10_mouth5_TA_tex_txt, + flg_10_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 9, + 30, + 38, + 0, + 0, + 143, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_216, + &cKF_bs_r_flg_1, + { + flg_11_tmem_txt, + flg_11_pal, + { + flg_11_eye1_TA_tex_txt, + flg_11_eye2_TA_tex_txt, + flg_11_eye3_TA_tex_txt, + flg_11_eye4_TA_tex_txt, + flg_11_eye5_TA_tex_txt, + flg_11_eye6_TA_tex_txt, + flg_11_eye7_TA_tex_txt, + flg_11_eye8_TA_tex_txt, + }, + { + flg_11_mouth1_TA_tex_txt, + flg_11_mouth2_TA_tex_txt, + flg_11_mouth3_TA_tex_txt, + flg_11_mouth4_TA_tex_txt, + flg_11_mouth5_TA_tex_txt, + flg_11_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 10, + 19, + 38, + 0, + 0, + 144, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_217, + &cKF_bs_r_flg_1, + { + flg_12_tmem_txt, + flg_12_pal, + { + flg_12_eye1_TA_tex_txt, + flg_12_eye2_TA_tex_txt, + flg_12_eye3_TA_tex_txt, + flg_12_eye4_TA_tex_txt, + flg_12_eye5_TA_tex_txt, + flg_12_eye6_TA_tex_txt, + flg_12_eye7_TA_tex_txt, + flg_12_eye8_TA_tex_txt, + }, + { + flg_12_mouth1_TA_tex_txt, + flg_12_mouth2_TA_tex_txt, + flg_12_mouth3_TA_tex_txt, + flg_12_mouth4_TA_tex_txt, + flg_12_mouth5_TA_tex_txt, + flg_12_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 11, + 6, + 38, + 0, + 0, + 145, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_221, + &cKF_bs_r_goa_1, + { + goa_1_tmem_txt, + goa_1_pal, + { + goa_1_eye1_TA_tex_txt, + goa_1_eye2_TA_tex_txt, + goa_1_eye3_TA_tex_txt, + goa_1_eye4_TA_tex_txt, + goa_1_eye5_TA_tex_txt, + goa_1_eye6_TA_tex_txt, + goa_1_eye7_TA_tex_txt, + goa_1_eye8_TA_tex_txt, + }, + { + goa_1_mouth1_TA_tex_txt, + goa_1_mouth2_TA_tex_txt, + goa_1_mouth3_TA_tex_txt, + goa_1_mouth4_TA_tex_txt, + goa_1_mouth5_TA_tex_txt, + goa_1_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 0, + 12, + 35, + 0, + 0, + 150, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_222, + &cKF_bs_r_goa_1, + { + goa_2_tmem_txt, + goa_2_pal, + { + goa_2_eye1_TA_tex_txt, + goa_2_eye2_TA_tex_txt, + goa_2_eye3_TA_tex_txt, + goa_2_eye4_TA_tex_txt, + goa_2_eye5_TA_tex_txt, + goa_2_eye6_TA_tex_txt, + goa_2_eye7_TA_tex_txt, + goa_2_eye8_TA_tex_txt, + }, + { + goa_2_mouth1_TA_tex_txt, + goa_2_mouth2_TA_tex_txt, + goa_2_mouth3_TA_tex_txt, + goa_2_mouth4_TA_tex_txt, + goa_2_mouth5_TA_tex_txt, + goa_2_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 1, + 7, + 35, + 0, + 0, + 151, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_223, + &cKF_bs_r_goa_1, + { + goa_3_tmem_txt, + goa_3_pal, + { + goa_3_eye1_TA_tex_txt, + goa_3_eye2_TA_tex_txt, + goa_3_eye3_TA_tex_txt, + goa_3_eye4_TA_tex_txt, + goa_3_eye5_TA_tex_txt, + goa_3_eye6_TA_tex_txt, + goa_3_eye7_TA_tex_txt, + goa_3_eye8_TA_tex_txt, + }, + { + goa_3_mouth1_TA_tex_txt, + goa_3_mouth2_TA_tex_txt, + goa_3_mouth3_TA_tex_txt, + goa_3_mouth4_TA_tex_txt, + goa_3_mouth5_TA_tex_txt, + goa_3_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 2, + 23, + 35, + 0, + 0, + 152, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_224, + &cKF_bs_r_goa_1, + { + goa_4_tmem_txt, + goa_4_pal, + { + goa_4_eye1_TA_tex_txt, + goa_4_eye2_TA_tex_txt, + goa_4_eye3_TA_tex_txt, + goa_4_eye4_TA_tex_txt, + goa_4_eye5_TA_tex_txt, + goa_4_eye6_TA_tex_txt, + goa_4_eye7_TA_tex_txt, + goa_4_eye8_TA_tex_txt, + }, + { + goa_4_mouth1_TA_tex_txt, + goa_4_mouth2_TA_tex_txt, + goa_4_mouth3_TA_tex_txt, + goa_4_mouth4_TA_tex_txt, + goa_4_mouth5_TA_tex_txt, + goa_4_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 3, + 31, + 35, + 0, + 0, + 153, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_225, + &cKF_bs_r_goa_1, + { + goa_5_tmem_txt, + goa_5_pal, + { + goa_5_eye1_TA_tex_txt, + goa_5_eye2_TA_tex_txt, + goa_5_eye3_TA_tex_txt, + goa_5_eye4_TA_tex_txt, + goa_5_eye5_TA_tex_txt, + goa_5_eye6_TA_tex_txt, + goa_5_eye7_TA_tex_txt, + goa_5_eye8_TA_tex_txt, + }, + { + goa_5_mouth1_TA_tex_txt, + goa_5_mouth2_TA_tex_txt, + goa_5_mouth3_TA_tex_txt, + goa_5_mouth4_TA_tex_txt, + goa_5_mouth5_TA_tex_txt, + goa_5_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 4, + 21, + 35, + 0, + 0, + 154, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_220, + ACTOR_OBJ_BANK_226, + &cKF_bs_r_goa_1, + { + goa_6_tmem_txt, + goa_6_pal, + { + goa_6_eye1_TA_tex_txt, + goa_6_eye2_TA_tex_txt, + goa_6_eye3_TA_tex_txt, + goa_6_eye4_TA_tex_txt, + goa_6_eye5_TA_tex_txt, + goa_6_eye6_TA_tex_txt, + goa_6_eye7_TA_tex_txt, + goa_6_eye8_TA_tex_txt, + }, + { + goa_6_mouth1_TA_tex_txt, + goa_6_mouth2_TA_tex_txt, + goa_6_mouth3_TA_tex_txt, + goa_6_mouth4_TA_tex_txt, + goa_6_mouth5_TA_tex_txt, + goa_6_mouth6_TA_tex_txt, + }, + 136, + 88, + 192, + }, + 0.010499999858438969, + 0, + 5, + 4, + 35, + 0, + 0, + 155, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_227, + ACTOR_OBJ_BANK_228, + &cKF_bs_r_gor_1, + { + gor_1_tmem_txt, + gor_1_pal, + { + gor_1_eye1_TA_tex_txt, + gor_1_eye2_TA_tex_txt, + gor_1_eye3_TA_tex_txt, + gor_1_eye4_TA_tex_txt, + gor_1_eye5_TA_tex_txt, + gor_1_eye6_TA_tex_txt, + gor_1_eye7_TA_tex_txt, + gor_1_eye8_TA_tex_txt, + }, + { + gor_1_mouth1_TA_tex_txt, + gor_1_mouth2_TA_tex_txt, + gor_1_mouth3_TA_tex_txt, + gor_1_mouth4_TA_tex_txt, + gor_1_mouth5_TA_tex_txt, + gor_1_mouth6_TA_tex_txt, + }, + 80, + 112, + 152, + }, + 0.009999999776482582, + 1, + 0, + 15, + 42, + 0, + 0, + 193, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_227, + ACTOR_OBJ_BANK_229, + &cKF_bs_r_gor_1, + { + gor_2_tmem_txt, + gor_2_pal, + { + gor_2_eye1_TA_tex_txt, + gor_2_eye2_TA_tex_txt, + gor_2_eye3_TA_tex_txt, + gor_2_eye4_TA_tex_txt, + gor_2_eye5_TA_tex_txt, + gor_2_eye6_TA_tex_txt, + gor_2_eye7_TA_tex_txt, + gor_2_eye8_TA_tex_txt, + }, + { + gor_2_mouth1_TA_tex_txt, + gor_2_mouth2_TA_tex_txt, + gor_2_mouth3_TA_tex_txt, + gor_2_mouth4_TA_tex_txt, + gor_2_mouth5_TA_tex_txt, + gor_2_mouth6_TA_tex_txt, + }, + 80, + 112, + 152, + }, + 0.009999999776482582, + 1, + 1, + 14, + 42, + 0, + 0, + 194, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_227, + ACTOR_OBJ_BANK_230, + &cKF_bs_r_gor_1, + { + gor_3_tmem_txt, + gor_3_pal, + { + gor_3_eye1_TA_tex_txt, + gor_3_eye2_TA_tex_txt, + gor_3_eye3_TA_tex_txt, + gor_3_eye4_TA_tex_txt, + gor_3_eye5_TA_tex_txt, + gor_3_eye6_TA_tex_txt, + gor_3_eye7_TA_tex_txt, + gor_3_eye8_TA_tex_txt, + }, + { + gor_3_mouth1_TA_tex_txt, + gor_3_mouth2_TA_tex_txt, + gor_3_mouth3_TA_tex_txt, + gor_3_mouth4_TA_tex_txt, + gor_3_mouth5_TA_tex_txt, + gor_3_mouth6_TA_tex_txt, + }, + 80, + 112, + 152, + }, + 0.009999999776482582, + 1, + 2, + 5, + 42, + 0, + 0, + 195, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_227, + ACTOR_OBJ_BANK_231, + &cKF_bs_r_gor_1, + { + gor_4_tmem_txt, + gor_4_pal, + { + gor_4_eye1_TA_tex_txt, + gor_4_eye2_TA_tex_txt, + gor_4_eye3_TA_tex_txt, + gor_4_eye4_TA_tex_txt, + gor_4_eye5_TA_tex_txt, + gor_4_eye6_TA_tex_txt, + gor_4_eye7_TA_tex_txt, + gor_4_eye8_TA_tex_txt, + }, + { + gor_4_mouth1_TA_tex_txt, + gor_4_mouth2_TA_tex_txt, + gor_4_mouth3_TA_tex_txt, + gor_4_mouth4_TA_tex_txt, + gor_4_mouth5_TA_tex_txt, + gor_4_mouth6_TA_tex_txt, + }, + 80, + 112, + 152, + }, + 0.009999999776482582, + 1, + 3, + 19, + 42, + 0, + 0, + 196, + 20, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_239, + &cKF_bs_r_hip_1, + { + hip_1_tmem_txt, + hip_1_pal, + { + hip_1_eye1_TA_tex_txt, + hip_1_eye2_TA_tex_txt, + hip_1_eye3_TA_tex_txt, + hip_1_eye4_TA_tex_txt, + hip_1_eye5_TA_tex_txt, + hip_1_eye6_TA_tex_txt, + hip_1_eye7_TA_tex_txt, + hip_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 0, + 11, + 43, + 0, + 0, + 77, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_240, + &cKF_bs_r_hip_1, + { + hip_2_tmem_txt, + hip_2_pal, + { + hip_2_eye1_TA_tex_txt, + hip_2_eye2_TA_tex_txt, + hip_2_eye3_TA_tex_txt, + hip_2_eye4_TA_tex_txt, + hip_2_eye5_TA_tex_txt, + hip_2_eye6_TA_tex_txt, + hip_2_eye7_TA_tex_txt, + hip_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 1, + 8, + 43, + 0, + 0, + 78, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_241, + &cKF_bs_r_hip_1, + { + hip_3_tmem_txt, + hip_3_pal, + { + hip_3_eye1_TA_tex_txt, + hip_3_eye2_TA_tex_txt, + hip_3_eye3_TA_tex_txt, + hip_3_eye4_TA_tex_txt, + hip_3_eye5_TA_tex_txt, + hip_3_eye6_TA_tex_txt, + hip_3_eye7_TA_tex_txt, + hip_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 2, + 7, + 43, + 0, + 0, + 79, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_244, + &cKF_bs_r_hrs_1, + { + hrs_1_tmem_txt, + hrs_1_pal, + { + hrs_1_eye1_TA_tex_txt, + hrs_1_eye2_TA_tex_txt, + hrs_1_eye3_TA_tex_txt, + hrs_1_eye4_TA_tex_txt, + hrs_1_eye5_TA_tex_txt, + hrs_1_eye6_TA_tex_txt, + hrs_1_eye7_TA_tex_txt, + hrs_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 0, + 0, + 43, + 0, + 0, + 169, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_245, + &cKF_bs_r_hrs_1, + { + hrs_2_tmem_txt, + hrs_2_pal, + { + hrs_2_eye1_TA_tex_txt, + hrs_2_eye2_TA_tex_txt, + hrs_2_eye3_TA_tex_txt, + hrs_2_eye4_TA_tex_txt, + hrs_2_eye5_TA_tex_txt, + hrs_2_eye6_TA_tex_txt, + hrs_2_eye7_TA_tex_txt, + hrs_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 1, + 7, + 43, + 0, + 0, + 170, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_246, + &cKF_bs_r_hrs_1, + { + hrs_3_tmem_txt, + hrs_3_pal, + { + hrs_3_eye1_TA_tex_txt, + hrs_3_eye2_TA_tex_txt, + hrs_3_eye3_TA_tex_txt, + hrs_3_eye4_TA_tex_txt, + hrs_3_eye5_TA_tex_txt, + hrs_3_eye6_TA_tex_txt, + hrs_3_eye7_TA_tex_txt, + hrs_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 2, + 29, + 43, + 0, + 0, + 171, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_247, + &cKF_bs_r_hrs_1, + { + hrs_4_tmem_txt, + hrs_4_pal, + { + hrs_4_eye1_TA_tex_txt, + hrs_4_eye2_TA_tex_txt, + hrs_4_eye3_TA_tex_txt, + hrs_4_eye4_TA_tex_txt, + hrs_4_eye5_TA_tex_txt, + hrs_4_eye6_TA_tex_txt, + hrs_4_eye7_TA_tex_txt, + hrs_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 3, + 17, + 43, + 0, + 0, + 172, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_248, + &cKF_bs_r_hrs_1, + { + hrs_5_tmem_txt, + hrs_5_pal, + { + hrs_5_eye1_TA_tex_txt, + hrs_5_eye2_TA_tex_txt, + hrs_5_eye3_TA_tex_txt, + hrs_5_eye4_TA_tex_txt, + hrs_5_eye5_TA_tex_txt, + hrs_5_eye6_TA_tex_txt, + hrs_5_eye7_TA_tex_txt, + hrs_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 4, + 29, + 43, + 0, + 0, + 173, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_249, + &cKF_bs_r_hrs_1, + { + hrs_6_tmem_txt, + hrs_6_pal, + { + hrs_6_eye1_TA_tex_txt, + hrs_6_eye2_TA_tex_txt, + hrs_6_eye3_TA_tex_txt, + hrs_6_eye4_TA_tex_txt, + hrs_6_eye5_TA_tex_txt, + hrs_6_eye6_TA_tex_txt, + hrs_6_eye7_TA_tex_txt, + hrs_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 5, + 2, + 43, + 0, + 0, + 174, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_250, + &cKF_bs_r_hrs_1, + { + hrs_7_tmem_txt, + hrs_7_pal, + { + hrs_7_eye1_TA_tex_txt, + hrs_7_eye2_TA_tex_txt, + hrs_7_eye3_TA_tex_txt, + hrs_7_eye4_TA_tex_txt, + hrs_7_eye5_TA_tex_txt, + hrs_7_eye6_TA_tex_txt, + hrs_7_eye7_TA_tex_txt, + hrs_7_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 6, + 23, + 43, + 0, + 0, + 175, + 23, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_254, + &cKF_bs_r_kgr_1, + { + kgr_1_tmem_txt, + kgr_1_pal, + { + kgr_1_eye1_TA_tex_txt, + kgr_1_eye2_TA_tex_txt, + kgr_1_eye3_TA_tex_txt, + kgr_1_eye4_TA_tex_txt, + kgr_1_eye5_TA_tex_txt, + kgr_1_eye6_TA_tex_txt, + kgr_1_eye7_TA_tex_txt, + kgr_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 0, + 7, + 41, + 0, + 0, + 201, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_255, + &cKF_bs_r_kgr_1, + { + kgr_2_tmem_txt, + kgr_2_pal, + { + kgr_2_eye1_TA_tex_txt, + kgr_2_eye2_TA_tex_txt, + kgr_2_eye3_TA_tex_txt, + kgr_2_eye4_TA_tex_txt, + kgr_2_eye5_TA_tex_txt, + kgr_2_eye6_TA_tex_txt, + kgr_2_eye7_TA_tex_txt, + kgr_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 1, + 10, + 41, + 0, + 0, + 202, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_256, + &cKF_bs_r_kgr_1, + { + kgr_3_tmem_txt, + kgr_3_pal, + { + kgr_3_eye1_TA_tex_txt, + kgr_3_eye2_TA_tex_txt, + kgr_3_eye3_TA_tex_txt, + kgr_3_eye4_TA_tex_txt, + kgr_3_eye5_TA_tex_txt, + kgr_3_eye6_TA_tex_txt, + kgr_3_eye7_TA_tex_txt, + kgr_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 2, + 22, + 41, + 0, + 0, + 203, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_257, + &cKF_bs_r_kgr_1, + { + kgr_4_tmem_txt, + kgr_4_pal, + { + kgr_4_eye1_TA_tex_txt, + kgr_4_eye2_TA_tex_txt, + kgr_4_eye3_TA_tex_txt, + kgr_4_eye4_TA_tex_txt, + kgr_4_eye5_TA_tex_txt, + kgr_4_eye6_TA_tex_txt, + kgr_4_eye7_TA_tex_txt, + kgr_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 3, + 3, + 41, + 0, + 0, + 204, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_258, + &cKF_bs_r_kgr_1, + { + kgr_5_tmem_txt, + kgr_5_pal, + { + kgr_5_eye1_TA_tex_txt, + kgr_5_eye2_TA_tex_txt, + kgr_5_eye3_TA_tex_txt, + kgr_5_eye4_TA_tex_txt, + kgr_5_eye5_TA_tex_txt, + kgr_5_eye6_TA_tex_txt, + kgr_5_eye7_TA_tex_txt, + kgr_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 4, + 27, + 41, + 0, + 0, + 205, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_253, + ACTOR_OBJ_BANK_259, + &cKF_bs_r_kgr_1, + { + kgr_6_tmem_txt, + kgr_6_pal, + { + kgr_6_eye1_TA_tex_txt, + kgr_6_eye2_TA_tex_txt, + kgr_6_eye3_TA_tex_txt, + kgr_6_eye4_TA_tex_txt, + kgr_6_eye5_TA_tex_txt, + kgr_6_eye6_TA_tex_txt, + kgr_6_eye7_TA_tex_txt, + kgr_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 128, + }, + 0.010499999858438969, + 1, + 5, + 31, + 41, + 0, + 0, + 206, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_263, + &cKF_bs_r_kal_1, + { + kal_1_tmem_txt, + kal_1_pal, + { + kal_1_eye1_TA_tex_txt, + kal_1_eye2_TA_tex_txt, + kal_1_eye3_TA_tex_txt, + kal_1_eye4_TA_tex_txt, + kal_1_eye5_TA_tex_txt, + kal_1_eye6_TA_tex_txt, + kal_1_eye7_TA_tex_txt, + kal_1_eye8_TA_tex_txt, + }, + { + kal_1_mouth1_TA_tex_txt, + kal_1_mouth2_TA_tex_txt, + kal_1_mouth3_TA_tex_txt, + kal_1_mouth4_TA_tex_txt, + kal_1_mouth5_TA_tex_txt, + kal_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 0, + 22, + 34, + 0, + 0, + 164, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_264, + &cKF_bs_r_kal_1, + { + kal_2_tmem_txt, + kal_2_pal, + { + kal_2_eye1_TA_tex_txt, + kal_2_eye2_TA_tex_txt, + kal_2_eye3_TA_tex_txt, + kal_2_eye4_TA_tex_txt, + kal_2_eye5_TA_tex_txt, + kal_2_eye6_TA_tex_txt, + kal_2_eye7_TA_tex_txt, + kal_2_eye8_TA_tex_txt, + }, + { + kal_2_mouth1_TA_tex_txt, + kal_2_mouth2_TA_tex_txt, + kal_2_mouth3_TA_tex_txt, + kal_2_mouth4_TA_tex_txt, + kal_2_mouth5_TA_tex_txt, + kal_2_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 1, + 16, + 34, + 0, + 0, + 165, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_265, + &cKF_bs_r_kal_1, + { + kal_3_tmem_txt, + kal_3_pal, + { + kal_3_eye1_TA_tex_txt, + kal_3_eye2_TA_tex_txt, + kal_3_eye3_TA_tex_txt, + kal_3_eye4_TA_tex_txt, + kal_3_eye5_TA_tex_txt, + kal_3_eye6_TA_tex_txt, + kal_3_eye7_TA_tex_txt, + kal_3_eye8_TA_tex_txt, + }, + { + kal_3_mouth1_TA_tex_txt, + kal_3_mouth2_TA_tex_txt, + kal_3_mouth3_TA_tex_txt, + kal_3_mouth4_TA_tex_txt, + kal_3_mouth5_TA_tex_txt, + kal_3_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 2, + 19, + 34, + 0, + 0, + 166, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_266, + &cKF_bs_r_kal_1, + { + kal_4_tmem_txt, + kal_4_pal, + { + kal_4_eye1_TA_tex_txt, + kal_4_eye2_TA_tex_txt, + kal_4_eye3_TA_tex_txt, + kal_4_eye4_TA_tex_txt, + kal_4_eye5_TA_tex_txt, + kal_4_eye6_TA_tex_txt, + kal_4_eye7_TA_tex_txt, + kal_4_eye8_TA_tex_txt, + }, + { + kal_4_mouth1_TA_tex_txt, + kal_4_mouth2_TA_tex_txt, + kal_4_mouth3_TA_tex_txt, + kal_4_mouth4_TA_tex_txt, + kal_4_mouth5_TA_tex_txt, + kal_4_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 3, + 1, + 34, + 0, + 0, + 167, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_267, + &cKF_bs_r_kal_1, + { + kal_5_tmem_txt, + kal_5_pal, + { + kal_5_eye1_TA_tex_txt, + kal_5_eye2_TA_tex_txt, + kal_5_eye3_TA_tex_txt, + kal_5_eye4_TA_tex_txt, + kal_5_eye5_TA_tex_txt, + kal_5_eye6_TA_tex_txt, + kal_5_eye7_TA_tex_txt, + kal_5_eye8_TA_tex_txt, + }, + { + kal_5_mouth1_TA_tex_txt, + kal_5_mouth2_TA_tex_txt, + kal_5_mouth3_TA_tex_txt, + kal_5_mouth4_TA_tex_txt, + kal_5_mouth5_TA_tex_txt, + kal_5_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 4, + 6, + 34, + 0, + 0, + 168, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_268, + ACTOR_OBJ_BANK_269, + &cKF_bs_r_lon_1, + { + lon_1_tmem_txt, + lon_1_pal, + { + lon_1_eye1_TA_tex_txt, + lon_1_eye2_TA_tex_txt, + lon_1_eye3_TA_tex_txt, + lon_1_eye4_TA_tex_txt, + lon_1_eye5_TA_tex_txt, + lon_1_eye6_TA_tex_txt, + lon_1_eye7_TA_tex_txt, + lon_1_eye8_TA_tex_txt, + }, + { + lon_1_mouth1_TA_tex_txt, + lon_1_mouth2_TA_tex_txt, + lon_1_mouth3_TA_tex_txt, + lon_1_mouth4_TA_tex_txt, + lon_1_mouth5_TA_tex_txt, + lon_1_mouth6_TA_tex_txt, + }, + 128, + 96, + 184, + }, + 0.01140000019222498, + 0, + 0, + 22, + 43, + 0, + 0, + 177, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_268, + ACTOR_OBJ_BANK_270, + &cKF_bs_r_lon_1, + { + lon_2_tmem_txt, + lon_2_pal, + { + lon_2_eye1_TA_tex_txt, + lon_2_eye2_TA_tex_txt, + lon_2_eye3_TA_tex_txt, + lon_2_eye4_TA_tex_txt, + lon_2_eye5_TA_tex_txt, + lon_2_eye6_TA_tex_txt, + lon_2_eye7_TA_tex_txt, + lon_2_eye8_TA_tex_txt, + }, + { + lon_2_mouth1_TA_tex_txt, + lon_2_mouth2_TA_tex_txt, + lon_2_mouth3_TA_tex_txt, + lon_2_mouth4_TA_tex_txt, + lon_2_mouth5_TA_tex_txt, + lon_2_mouth6_TA_tex_txt, + }, + 128, + 96, + 184, + }, + 0.01140000019222498, + 0, + 1, + 24, + 43, + 0, + 0, + 178, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_268, + ACTOR_OBJ_BANK_271, + &cKF_bs_r_lon_1, + { + lon_3_tmem_txt, + lon_3_pal, + { + lon_3_eye1_TA_tex_txt, + lon_3_eye2_TA_tex_txt, + lon_3_eye3_TA_tex_txt, + lon_3_eye4_TA_tex_txt, + lon_3_eye5_TA_tex_txt, + lon_3_eye6_TA_tex_txt, + lon_3_eye7_TA_tex_txt, + lon_3_eye8_TA_tex_txt, + }, + { + lon_3_mouth1_TA_tex_txt, + lon_3_mouth2_TA_tex_txt, + lon_3_mouth3_TA_tex_txt, + lon_3_mouth4_TA_tex_txt, + lon_3_mouth5_TA_tex_txt, + lon_3_mouth6_TA_tex_txt, + }, + 128, + 96, + 184, + }, + 0.01140000019222498, + 0, + 2, + 12, + 43, + 0, + 0, + 179, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_275, + &cKF_bs_r_mus_1, + { + mus_1_tmem_txt, + mus_1_pal, + { + mus_1_eye1_TA_tex_txt, + mus_1_eye2_TA_tex_txt, + mus_1_eye3_TA_tex_txt, + mus_1_eye4_TA_tex_txt, + mus_1_eye5_TA_tex_txt, + mus_1_eye6_TA_tex_txt, + mus_1_eye7_TA_tex_txt, + mus_1_eye8_TA_tex_txt, + }, + { + mus_1_mouth1_TA_tex_txt, + mus_1_mouth2_TA_tex_txt, + mus_1_mouth3_TA_tex_txt, + mus_1_mouth4_TA_tex_txt, + mus_1_mouth5_TA_tex_txt, + mus_1_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 0, + 3, + 30, + 0, + 0, + 89, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_276, + &cKF_bs_r_mus_1, + { + mus_2_tmem_txt, + mus_2_pal, + { + mus_2_eye1_TA_tex_txt, + mus_2_eye2_TA_tex_txt, + mus_2_eye3_TA_tex_txt, + mus_2_eye4_TA_tex_txt, + mus_2_eye5_TA_tex_txt, + mus_2_eye6_TA_tex_txt, + mus_2_eye7_TA_tex_txt, + mus_2_eye8_TA_tex_txt, + }, + { + mus_2_mouth1_TA_tex_txt, + mus_2_mouth2_TA_tex_txt, + mus_2_mouth3_TA_tex_txt, + mus_2_mouth4_TA_tex_txt, + mus_2_mouth5_TA_tex_txt, + mus_2_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 1, + 19, + 30, + 0, + 0, + 90, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_277, + &cKF_bs_r_mus_1, + { + mus_3_tmem_txt, + mus_3_pal, + { + mus_3_eye1_TA_tex_txt, + mus_3_eye2_TA_tex_txt, + mus_3_eye3_TA_tex_txt, + mus_3_eye4_TA_tex_txt, + mus_3_eye5_TA_tex_txt, + mus_3_eye6_TA_tex_txt, + mus_3_eye7_TA_tex_txt, + mus_3_eye8_TA_tex_txt, + }, + { + mus_3_mouth1_TA_tex_txt, + mus_3_mouth2_TA_tex_txt, + mus_3_mouth3_TA_tex_txt, + mus_3_mouth4_TA_tex_txt, + mus_3_mouth5_TA_tex_txt, + mus_3_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 2, + 23, + 30, + 0, + 0, + 91, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_278, + &cKF_bs_r_mus_1, + { + mus_4_tmem_txt, + mus_4_pal, + { + mus_4_eye1_TA_tex_txt, + mus_4_eye2_TA_tex_txt, + mus_4_eye3_TA_tex_txt, + mus_4_eye4_TA_tex_txt, + mus_4_eye5_TA_tex_txt, + mus_4_eye6_TA_tex_txt, + mus_4_eye7_TA_tex_txt, + mus_4_eye8_TA_tex_txt, + }, + { + mus_4_mouth1_TA_tex_txt, + mus_4_mouth2_TA_tex_txt, + mus_4_mouth3_TA_tex_txt, + mus_4_mouth4_TA_tex_txt, + mus_4_mouth5_TA_tex_txt, + mus_4_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 3, + 13, + 30, + 0, + 0, + 92, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_279, + &cKF_bs_r_mus_1, + { + mus_5_tmem_txt, + mus_5_pal, + { + mus_5_eye1_TA_tex_txt, + mus_5_eye2_TA_tex_txt, + mus_5_eye3_TA_tex_txt, + mus_5_eye4_TA_tex_txt, + mus_5_eye5_TA_tex_txt, + mus_5_eye6_TA_tex_txt, + mus_5_eye7_TA_tex_txt, + mus_5_eye8_TA_tex_txt, + }, + { + mus_5_mouth1_TA_tex_txt, + mus_5_mouth2_TA_tex_txt, + mus_5_mouth3_TA_tex_txt, + mus_5_mouth4_TA_tex_txt, + mus_5_mouth5_TA_tex_txt, + mus_5_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 4, + 5, + 30, + 0, + 0, + 93, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_280, + &cKF_bs_r_mus_1, + { + mus_6_tmem_txt, + mus_6_pal, + { + mus_6_eye1_TA_tex_txt, + mus_6_eye2_TA_tex_txt, + mus_6_eye3_TA_tex_txt, + mus_6_eye4_TA_tex_txt, + mus_6_eye5_TA_tex_txt, + mus_6_eye6_TA_tex_txt, + mus_6_eye7_TA_tex_txt, + mus_6_eye8_TA_tex_txt, + }, + { + mus_6_mouth1_TA_tex_txt, + mus_6_mouth2_TA_tex_txt, + mus_6_mouth3_TA_tex_txt, + mus_6_mouth4_TA_tex_txt, + mus_6_mouth5_TA_tex_txt, + mus_6_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 5, + 26, + 30, + 0, + 0, + 94, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_281, + &cKF_bs_r_mus_1, + { + mus_7_tmem_txt, + mus_7_pal, + { + mus_7_eye1_TA_tex_txt, + mus_7_eye2_TA_tex_txt, + mus_7_eye3_TA_tex_txt, + mus_7_eye4_TA_tex_txt, + mus_7_eye5_TA_tex_txt, + mus_7_eye6_TA_tex_txt, + mus_7_eye7_TA_tex_txt, + mus_7_eye8_TA_tex_txt, + }, + { + mus_7_mouth1_TA_tex_txt, + mus_7_mouth2_TA_tex_txt, + mus_7_mouth3_TA_tex_txt, + mus_7_mouth4_TA_tex_txt, + mus_7_mouth5_TA_tex_txt, + mus_7_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 6, + 2, + 30, + 0, + 0, + 95, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_282, + &cKF_bs_r_mus_1, + { + mus_8_tmem_txt, + mus_8_pal, + { + mus_8_eye1_TA_tex_txt, + mus_8_eye2_TA_tex_txt, + mus_8_eye3_TA_tex_txt, + mus_8_eye4_TA_tex_txt, + mus_8_eye5_TA_tex_txt, + mus_8_eye6_TA_tex_txt, + mus_8_eye7_TA_tex_txt, + mus_8_eye8_TA_tex_txt, + }, + { + mus_8_mouth1_TA_tex_txt, + mus_8_mouth2_TA_tex_txt, + mus_8_mouth3_TA_tex_txt, + mus_8_mouth4_TA_tex_txt, + mus_8_mouth5_TA_tex_txt, + mus_8_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 7, + 24, + 30, + 0, + 0, + 96, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_283, + &cKF_bs_r_mus_1, + { + mus_9_tmem_txt, + mus_9_pal, + { + mus_9_eye1_TA_tex_txt, + mus_9_eye2_TA_tex_txt, + mus_9_eye3_TA_tex_txt, + mus_9_eye4_TA_tex_txt, + mus_9_eye5_TA_tex_txt, + mus_9_eye6_TA_tex_txt, + mus_9_eye7_TA_tex_txt, + mus_9_eye8_TA_tex_txt, + }, + { + mus_9_mouth1_TA_tex_txt, + mus_9_mouth2_TA_tex_txt, + mus_9_mouth3_TA_tex_txt, + mus_9_mouth4_TA_tex_txt, + mus_9_mouth5_TA_tex_txt, + mus_9_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 8, + 5, + 30, + 0, + 0, + 97, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_284, + ACTOR_OBJ_BANK_285, + &cKF_bs_r_oct_1, + { + oct_1_tmem_txt, + oct_1_pal, + { + oct_1_eye1_TA_tex_txt, + oct_1_eye2_TA_tex_txt, + oct_1_eye3_TA_tex_txt, + oct_1_eye4_TA_tex_txt, + oct_1_eye5_TA_tex_txt, + oct_1_eye6_TA_tex_txt, + oct_1_eye7_TA_tex_txt, + oct_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 80, + }, + 0.00930000003427267, + 1, + 0, + 26, + 35, + 0, + 0, + 176, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_286, + ACTOR_OBJ_BANK_287, + &cKF_bs_r_ost_1, + { + ost_1_tmem_txt, + ost_1_pal, + { + ost_1_eye1_TA_tex_txt, + ost_1_eye2_TA_tex_txt, + ost_1_eye3_TA_tex_txt, + ost_1_eye4_TA_tex_txt, + ost_1_eye5_TA_tex_txt, + ost_1_eye6_TA_tex_txt, + ost_1_eye7_TA_tex_txt, + ost_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 56, + 0, + 160, + }, + 0.011500000022351742, + 1, + 0, + 0, + 44, + 0, + 0, + 197, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_286, + ACTOR_OBJ_BANK_288, + &cKF_bs_r_ost_1, + { + ost_2_tmem_txt, + ost_2_pal, + { + ost_2_eye1_TA_tex_txt, + ost_2_eye2_TA_tex_txt, + ost_2_eye3_TA_tex_txt, + ost_2_eye4_TA_tex_txt, + ost_2_eye5_TA_tex_txt, + ost_2_eye6_TA_tex_txt, + ost_2_eye7_TA_tex_txt, + ost_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 56, + 0, + 160, + }, + 0.011500000022351742, + 1, + 1, + 31, + 44, + 0, + 0, + 198, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_286, + ACTOR_OBJ_BANK_289, + &cKF_bs_r_ost_1, + { + ost_3_tmem_txt, + ost_3_pal, + { + ost_3_eye1_TA_tex_txt, + ost_3_eye2_TA_tex_txt, + ost_3_eye3_TA_tex_txt, + ost_3_eye4_TA_tex_txt, + ost_3_eye5_TA_tex_txt, + ost_3_eye6_TA_tex_txt, + ost_3_eye7_TA_tex_txt, + ost_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 56, + 0, + 160, + }, + 0.011500000022351742, + 1, + 2, + 11, + 44, + 0, + 0, + 199, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_286, + ACTOR_OBJ_BANK_290, + &cKF_bs_r_ost_1, + { + ost_4_tmem_txt, + ost_4_pal, + { + ost_4_eye1_TA_tex_txt, + ost_4_eye2_TA_tex_txt, + ost_4_eye3_TA_tex_txt, + ost_4_eye4_TA_tex_txt, + ost_4_eye5_TA_tex_txt, + ost_4_eye6_TA_tex_txt, + ost_4_eye7_TA_tex_txt, + ost_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 56, + 0, + 160, + }, + 0.011500000022351742, + 1, + 3, + 9, + 44, + 0, + 0, + 200, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_107, + ACTOR_OBJ_BANK_108, + &cKF_bs_r_pbr_1, + { + pbr_1_tmem_txt, + pbr_1_pal, + { + pbr_1_eye1_TA_tex_txt, + pbr_1_eye2_TA_tex_txt, + pbr_1_eye3_TA_tex_txt, + pbr_1_eye4_TA_tex_txt, + pbr_1_eye5_TA_tex_txt, + pbr_1_eye6_TA_tex_txt, + pbr_1_eye7_TA_tex_txt, + pbr_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 144, + }, + 0.013000000268220901, + 1, + 0, + 21, + 46, + 0, + 0, + 207, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_107, + ACTOR_OBJ_BANK_109, + &cKF_bs_r_pbr_1, + { + pbr_2_tmem_txt, + pbr_2_pal, + { + pbr_2_eye1_TA_tex_txt, + pbr_2_eye2_TA_tex_txt, + pbr_2_eye3_TA_tex_txt, + pbr_2_eye4_TA_tex_txt, + pbr_2_eye5_TA_tex_txt, + pbr_2_eye6_TA_tex_txt, + pbr_2_eye7_TA_tex_txt, + pbr_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 144, + }, + 0.013000000268220901, + 1, + 1, + 24, + 46, + 0, + 0, + 208, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_107, + ACTOR_OBJ_BANK_110, + &cKF_bs_r_pbr_1, + { + pbr_3_tmem_txt, + pbr_3_pal, + { + pbr_3_eye1_TA_tex_txt, + pbr_3_eye2_TA_tex_txt, + pbr_3_eye3_TA_tex_txt, + pbr_3_eye4_TA_tex_txt, + pbr_3_eye5_TA_tex_txt, + pbr_3_eye6_TA_tex_txt, + pbr_3_eye7_TA_tex_txt, + pbr_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 144, + }, + 0.013000000268220901, + 1, + 2, + 18, + 46, + 0, + 0, + 209, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_107, + ACTOR_OBJ_BANK_111, + &cKF_bs_r_pbr_1, + { + pbr_4_tmem_txt, + pbr_4_pal, + { + pbr_4_eye1_TA_tex_txt, + pbr_4_eye2_TA_tex_txt, + pbr_4_eye3_TA_tex_txt, + pbr_4_eye4_TA_tex_txt, + pbr_4_eye5_TA_tex_txt, + pbr_4_eye6_TA_tex_txt, + pbr_4_eye7_TA_tex_txt, + pbr_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 144, + }, + 0.013000000268220901, + 1, + 3, + 1, + 46, + 0, + 0, + 210, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_107, + ACTOR_OBJ_BANK_112, + &cKF_bs_r_pbr_1, + { + pbr_5_tmem_txt, + pbr_5_pal, + { + pbr_5_eye1_TA_tex_txt, + pbr_5_eye2_TA_tex_txt, + pbr_5_eye3_TA_tex_txt, + pbr_5_eye4_TA_tex_txt, + pbr_5_eye5_TA_tex_txt, + pbr_5_eye6_TA_tex_txt, + pbr_5_eye7_TA_tex_txt, + pbr_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 144, + }, + 0.013000000268220901, + 1, + 4, + 28, + 46, + 0, + 0, + 211, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_292, + &cKF_bs_r_pgn_1, + { + pgn_1_tmem_txt, + pgn_1_pal, + { + pgn_1_eye1_TA_tex_txt, + pgn_1_eye2_TA_tex_txt, + pgn_1_eye3_TA_tex_txt, + pgn_1_eye4_TA_tex_txt, + pgn_1_eye5_TA_tex_txt, + pgn_1_eye6_TA_tex_txt, + pgn_1_eye7_TA_tex_txt, + pgn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 0, + 1, + 31, + 0, + 0, + 212, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_293, + &cKF_bs_r_pgn_1, + { + pgn_2_tmem_txt, + pgn_2_pal, + { + pgn_2_eye1_TA_tex_txt, + pgn_2_eye2_TA_tex_txt, + pgn_2_eye3_TA_tex_txt, + pgn_2_eye4_TA_tex_txt, + pgn_2_eye5_TA_tex_txt, + pgn_2_eye6_TA_tex_txt, + pgn_2_eye7_TA_tex_txt, + pgn_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 1, + 3, + 31, + 0, + 0, + 213, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_294, + &cKF_bs_r_pgn_1, + { + pgn_3_tmem_txt, + pgn_3_pal, + { + pgn_3_eye1_TA_tex_txt, + pgn_3_eye2_TA_tex_txt, + pgn_3_eye3_TA_tex_txt, + pgn_3_eye4_TA_tex_txt, + pgn_3_eye5_TA_tex_txt, + pgn_3_eye6_TA_tex_txt, + pgn_3_eye7_TA_tex_txt, + pgn_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 2, + 31, + 31, + 0, + 0, + 214, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_295, + &cKF_bs_r_pgn_1, + { + pgn_4_tmem_txt, + pgn_4_pal, + { + pgn_4_eye1_TA_tex_txt, + pgn_4_eye2_TA_tex_txt, + pgn_4_eye3_TA_tex_txt, + pgn_4_eye4_TA_tex_txt, + pgn_4_eye5_TA_tex_txt, + pgn_4_eye6_TA_tex_txt, + pgn_4_eye7_TA_tex_txt, + pgn_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 3, + 5, + 31, + 0, + 0, + 215, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_296, + &cKF_bs_r_pgn_1, + { + pgn_5_tmem_txt, + pgn_5_pal, + { + pgn_5_eye1_TA_tex_txt, + pgn_5_eye2_TA_tex_txt, + pgn_5_eye3_TA_tex_txt, + pgn_5_eye4_TA_tex_txt, + pgn_5_eye5_TA_tex_txt, + pgn_5_eye6_TA_tex_txt, + pgn_5_eye7_TA_tex_txt, + pgn_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 4, + 30, + 31, + 0, + 0, + 216, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_297, + &cKF_bs_r_pgn_1, + { + pgn_6_tmem_txt, + pgn_6_pal, + { + pgn_6_eye1_TA_tex_txt, + pgn_6_eye2_TA_tex_txt, + pgn_6_eye3_TA_tex_txt, + pgn_6_eye4_TA_tex_txt, + pgn_6_eye5_TA_tex_txt, + pgn_6_eye6_TA_tex_txt, + pgn_6_eye7_TA_tex_txt, + pgn_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 5, + 9, + 31, + 0, + 0, + 217, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_298, + &cKF_bs_r_pgn_1, + { + pgn_7_tmem_txt, + pgn_7_pal, + { + pgn_7_eye1_TA_tex_txt, + pgn_7_eye2_TA_tex_txt, + pgn_7_eye3_TA_tex_txt, + pgn_7_eye4_TA_tex_txt, + pgn_7_eye5_TA_tex_txt, + pgn_7_eye6_TA_tex_txt, + pgn_7_eye7_TA_tex_txt, + pgn_7_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 6, + 9, + 31, + 0, + 0, + 218, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_300, + &cKF_bs_r_pig_1, + { + pig_1_tmem_txt, + pig_1_pal, + { + pig_1_eye1_TA_tex_txt, + pig_1_eye2_TA_tex_txt, + pig_1_eye3_TA_tex_txt, + pig_1_eye4_TA_tex_txt, + pig_1_eye5_TA_tex_txt, + pig_1_eye6_TA_tex_txt, + pig_1_eye7_TA_tex_txt, + pig_1_eye8_TA_tex_txt, + }, + { + pig_1_mouth1_TA_tex_txt, + pig_1_mouth2_TA_tex_txt, + pig_1_mouth3_TA_tex_txt, + pig_1_mouth4_TA_tex_txt, + pig_1_mouth5_TA_tex_txt, + pig_1_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 0, + 0, + 36, + 0, + 0, + 98, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_301, + &cKF_bs_r_pig_1, + { + pig_2_tmem_txt, + pig_2_pal, + { + pig_2_eye1_TA_tex_txt, + pig_2_eye2_TA_tex_txt, + pig_2_eye3_TA_tex_txt, + pig_2_eye4_TA_tex_txt, + pig_2_eye5_TA_tex_txt, + pig_2_eye6_TA_tex_txt, + pig_2_eye7_TA_tex_txt, + pig_2_eye8_TA_tex_txt, + }, + { + pig_2_mouth1_TA_tex_txt, + pig_2_mouth2_TA_tex_txt, + pig_2_mouth3_TA_tex_txt, + pig_2_mouth4_TA_tex_txt, + pig_2_mouth5_TA_tex_txt, + pig_2_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 1, + 22, + 36, + 0, + 0, + 99, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_302, + &cKF_bs_r_pig_1, + { + pig_3_tmem_txt, + pig_3_pal, + { + pig_3_eye1_TA_tex_txt, + pig_3_eye2_TA_tex_txt, + pig_3_eye3_TA_tex_txt, + pig_3_eye4_TA_tex_txt, + pig_3_eye5_TA_tex_txt, + pig_3_eye6_TA_tex_txt, + pig_3_eye7_TA_tex_txt, + pig_3_eye8_TA_tex_txt, + }, + { + pig_3_mouth1_TA_tex_txt, + pig_3_mouth2_TA_tex_txt, + pig_3_mouth3_TA_tex_txt, + pig_3_mouth4_TA_tex_txt, + pig_3_mouth5_TA_tex_txt, + pig_3_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 2, + 18, + 36, + 0, + 0, + 100, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_303, + &cKF_bs_r_pig_1, + { + pig_4_tmem_txt, + pig_4_pal, + { + pig_4_eye1_TA_tex_txt, + pig_4_eye2_TA_tex_txt, + pig_4_eye3_TA_tex_txt, + pig_4_eye4_TA_tex_txt, + pig_4_eye5_TA_tex_txt, + pig_4_eye6_TA_tex_txt, + pig_4_eye7_TA_tex_txt, + pig_4_eye8_TA_tex_txt, + }, + { + pig_4_mouth1_TA_tex_txt, + pig_4_mouth2_TA_tex_txt, + pig_4_mouth3_TA_tex_txt, + pig_4_mouth4_TA_tex_txt, + pig_4_mouth5_TA_tex_txt, + pig_4_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 3, + 3, + 36, + 0, + 0, + 101, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_304, + &cKF_bs_r_pig_1, + { + pig_5_tmem_txt, + pig_5_pal, + { + pig_5_eye1_TA_tex_txt, + pig_5_eye2_TA_tex_txt, + pig_5_eye3_TA_tex_txt, + pig_5_eye4_TA_tex_txt, + pig_5_eye5_TA_tex_txt, + pig_5_eye6_TA_tex_txt, + pig_5_eye7_TA_tex_txt, + pig_5_eye8_TA_tex_txt, + }, + { + pig_5_mouth1_TA_tex_txt, + pig_5_mouth2_TA_tex_txt, + pig_5_mouth3_TA_tex_txt, + pig_5_mouth4_TA_tex_txt, + pig_5_mouth5_TA_tex_txt, + pig_5_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 4, + 13, + 36, + 0, + 0, + 102, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_305, + &cKF_bs_r_pig_1, + { + pig_6_tmem_txt, + pig_6_pal, + { + pig_6_eye1_TA_tex_txt, + pig_6_eye2_TA_tex_txt, + pig_6_eye3_TA_tex_txt, + pig_6_eye4_TA_tex_txt, + pig_6_eye5_TA_tex_txt, + pig_6_eye6_TA_tex_txt, + pig_6_eye7_TA_tex_txt, + pig_6_eye8_TA_tex_txt, + }, + { + pig_6_mouth1_TA_tex_txt, + pig_6_mouth2_TA_tex_txt, + pig_6_mouth3_TA_tex_txt, + pig_6_mouth4_TA_tex_txt, + pig_6_mouth5_TA_tex_txt, + pig_6_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 5, + 10, + 36, + 0, + 0, + 103, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_306, + &cKF_bs_r_pig_1, + { + pig_7_tmem_txt, + pig_7_pal, + { + pig_7_eye1_TA_tex_txt, + pig_7_eye2_TA_tex_txt, + pig_7_eye3_TA_tex_txt, + pig_7_eye4_TA_tex_txt, + pig_7_eye5_TA_tex_txt, + pig_7_eye6_TA_tex_txt, + pig_7_eye7_TA_tex_txt, + pig_7_eye8_TA_tex_txt, + }, + { + pig_7_mouth1_TA_tex_txt, + pig_7_mouth2_TA_tex_txt, + pig_7_mouth3_TA_tex_txt, + pig_7_mouth4_TA_tex_txt, + pig_7_mouth5_TA_tex_txt, + pig_7_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 6, + 14, + 36, + 0, + 0, + 104, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_307, + &cKF_bs_r_pig_1, + { + pig_8_tmem_txt, + pig_8_pal, + { + pig_8_eye1_TA_tex_txt, + pig_8_eye2_TA_tex_txt, + pig_8_eye3_TA_tex_txt, + pig_8_eye4_TA_tex_txt, + pig_8_eye5_TA_tex_txt, + pig_8_eye6_TA_tex_txt, + pig_8_eye7_TA_tex_txt, + pig_8_eye8_TA_tex_txt, + }, + { + pig_8_mouth1_TA_tex_txt, + pig_8_mouth2_TA_tex_txt, + pig_8_mouth3_TA_tex_txt, + pig_8_mouth4_TA_tex_txt, + pig_8_mouth5_TA_tex_txt, + pig_8_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 7, + 7, + 36, + 0, + 0, + 105, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_308, + &cKF_bs_r_pig_1, + { + pig_9_tmem_txt, + pig_9_pal, + { + pig_9_eye1_TA_tex_txt, + pig_9_eye2_TA_tex_txt, + pig_9_eye3_TA_tex_txt, + pig_9_eye4_TA_tex_txt, + pig_9_eye5_TA_tex_txt, + pig_9_eye6_TA_tex_txt, + pig_9_eye7_TA_tex_txt, + pig_9_eye8_TA_tex_txt, + }, + { + pig_9_mouth1_TA_tex_txt, + pig_9_mouth2_TA_tex_txt, + pig_9_mouth3_TA_tex_txt, + pig_9_mouth4_TA_tex_txt, + pig_9_mouth5_TA_tex_txt, + pig_9_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 8, + 14, + 36, + 0, + 0, + 106, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_309, + &cKF_bs_r_pig_1, + { + pig_10_tmem_txt, + pig_10_pal, + { + pig_10_eye1_TA_tex_txt, + pig_10_eye2_TA_tex_txt, + pig_10_eye3_TA_tex_txt, + pig_10_eye4_TA_tex_txt, + pig_10_eye5_TA_tex_txt, + pig_10_eye6_TA_tex_txt, + pig_10_eye7_TA_tex_txt, + pig_10_eye8_TA_tex_txt, + }, + { + pig_10_mouth1_TA_tex_txt, + pig_10_mouth2_TA_tex_txt, + pig_10_mouth3_TA_tex_txt, + pig_10_mouth4_TA_tex_txt, + pig_10_mouth5_TA_tex_txt, + pig_10_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 9, + 25, + 36, + 0, + 0, + 107, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_321, + &cKF_bs_r_rbt_1, + { + rbt_1_tmem_txt, + rbt_1_pal, + { + rbt_1_eye1_TA_tex_txt, + rbt_1_eye2_TA_tex_txt, + rbt_1_eye3_TA_tex_txt, + rbt_1_eye4_TA_tex_txt, + rbt_1_eye5_TA_tex_txt, + rbt_1_eye6_TA_tex_txt, + rbt_1_eye7_TA_tex_txt, + rbt_1_eye8_TA_tex_txt, + }, + { + rbt_1_mouth1_TA_tex_txt, + rbt_1_mouth2_TA_tex_txt, + rbt_1_mouth3_TA_tex_txt, + rbt_1_mouth4_TA_tex_txt, + rbt_1_mouth5_TA_tex_txt, + rbt_1_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 0, + 1, + 34, + 0, + 0, + 57, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_322, + &cKF_bs_r_rbt_1, + { + rbt_2_tmem_txt, + rbt_2_pal, + { + rbt_2_eye1_TA_tex_txt, + rbt_2_eye2_TA_tex_txt, + rbt_2_eye3_TA_tex_txt, + rbt_2_eye4_TA_tex_txt, + rbt_2_eye5_TA_tex_txt, + rbt_2_eye6_TA_tex_txt, + rbt_2_eye7_TA_tex_txt, + rbt_2_eye8_TA_tex_txt, + }, + { + rbt_2_mouth1_TA_tex_txt, + rbt_2_mouth2_TA_tex_txt, + rbt_2_mouth3_TA_tex_txt, + rbt_2_mouth4_TA_tex_txt, + rbt_2_mouth5_TA_tex_txt, + rbt_2_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 1, + 14, + 34, + 0, + 0, + 58, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_323, + &cKF_bs_r_rbt_1, + { + rbt_3_tmem_txt, + rbt_3_pal, + { + rbt_3_eye1_TA_tex_txt, + rbt_3_eye2_TA_tex_txt, + rbt_3_eye3_TA_tex_txt, + rbt_3_eye4_TA_tex_txt, + rbt_3_eye5_TA_tex_txt, + rbt_3_eye6_TA_tex_txt, + rbt_3_eye7_TA_tex_txt, + rbt_3_eye8_TA_tex_txt, + }, + { + rbt_3_mouth1_TA_tex_txt, + rbt_3_mouth2_TA_tex_txt, + rbt_3_mouth3_TA_tex_txt, + rbt_3_mouth4_TA_tex_txt, + rbt_3_mouth5_TA_tex_txt, + rbt_3_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 2, + 13, + 34, + 0, + 0, + 59, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_324, + &cKF_bs_r_rbt_1, + { + rbt_4_tmem_txt, + rbt_4_pal, + { + rbt_4_eye1_TA_tex_txt, + rbt_4_eye2_TA_tex_txt, + rbt_4_eye3_TA_tex_txt, + rbt_4_eye4_TA_tex_txt, + rbt_4_eye5_TA_tex_txt, + rbt_4_eye6_TA_tex_txt, + rbt_4_eye7_TA_tex_txt, + rbt_4_eye8_TA_tex_txt, + }, + { + rbt_4_mouth1_TA_tex_txt, + rbt_4_mouth2_TA_tex_txt, + rbt_4_mouth3_TA_tex_txt, + rbt_4_mouth4_TA_tex_txt, + rbt_4_mouth5_TA_tex_txt, + rbt_4_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 3, + 19, + 34, + 0, + 0, + 60, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_325, + &cKF_bs_r_rbt_1, + { + rbt_5_tmem_txt, + rbt_5_pal, + { + rbt_5_eye1_TA_tex_txt, + rbt_5_eye2_TA_tex_txt, + rbt_5_eye3_TA_tex_txt, + rbt_5_eye4_TA_tex_txt, + rbt_5_eye5_TA_tex_txt, + rbt_5_eye6_TA_tex_txt, + rbt_5_eye7_TA_tex_txt, + rbt_5_eye8_TA_tex_txt, + }, + { + rbt_5_mouth1_TA_tex_txt, + rbt_5_mouth2_TA_tex_txt, + rbt_5_mouth3_TA_tex_txt, + rbt_5_mouth4_TA_tex_txt, + rbt_5_mouth5_TA_tex_txt, + rbt_5_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 4, + 2, + 34, + 0, + 0, + 61, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_326, + &cKF_bs_r_rbt_1, + { + rbt_6_tmem_txt, + rbt_6_pal, + { + rbt_6_eye1_TA_tex_txt, + rbt_6_eye2_TA_tex_txt, + rbt_6_eye3_TA_tex_txt, + rbt_6_eye4_TA_tex_txt, + rbt_6_eye5_TA_tex_txt, + rbt_6_eye6_TA_tex_txt, + rbt_6_eye7_TA_tex_txt, + rbt_6_eye8_TA_tex_txt, + }, + { + rbt_6_mouth1_TA_tex_txt, + rbt_6_mouth2_TA_tex_txt, + rbt_6_mouth3_TA_tex_txt, + rbt_6_mouth4_TA_tex_txt, + rbt_6_mouth5_TA_tex_txt, + rbt_6_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 5, + 18, + 34, + 0, + 0, + 62, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_327, + &cKF_bs_r_rbt_1, + { + rbt_7_tmem_txt, + rbt_7_pal, + { + rbt_7_eye1_TA_tex_txt, + rbt_7_eye2_TA_tex_txt, + rbt_7_eye3_TA_tex_txt, + rbt_7_eye4_TA_tex_txt, + rbt_7_eye5_TA_tex_txt, + rbt_7_eye6_TA_tex_txt, + rbt_7_eye7_TA_tex_txt, + rbt_7_eye8_TA_tex_txt, + }, + { + rbt_7_mouth1_TA_tex_txt, + rbt_7_mouth2_TA_tex_txt, + rbt_7_mouth3_TA_tex_txt, + rbt_7_mouth4_TA_tex_txt, + rbt_7_mouth5_TA_tex_txt, + rbt_7_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 6, + 21, + 34, + 0, + 0, + 63, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_328, + &cKF_bs_r_rbt_1, + { + rbt_8_tmem_txt, + rbt_8_pal, + { + rbt_8_eye1_TA_tex_txt, + rbt_8_eye2_TA_tex_txt, + rbt_8_eye3_TA_tex_txt, + rbt_8_eye4_TA_tex_txt, + rbt_8_eye5_TA_tex_txt, + rbt_8_eye6_TA_tex_txt, + rbt_8_eye7_TA_tex_txt, + rbt_8_eye8_TA_tex_txt, + }, + { + rbt_8_mouth1_TA_tex_txt, + rbt_8_mouth2_TA_tex_txt, + rbt_8_mouth3_TA_tex_txt, + rbt_8_mouth4_TA_tex_txt, + rbt_8_mouth5_TA_tex_txt, + rbt_8_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 7, + 24, + 34, + 0, + 0, + 64, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_329, + &cKF_bs_r_rbt_1, + { + rbt_9_tmem_txt, + rbt_9_pal, + { + rbt_9_eye1_TA_tex_txt, + rbt_9_eye2_TA_tex_txt, + rbt_9_eye3_TA_tex_txt, + rbt_9_eye4_TA_tex_txt, + rbt_9_eye5_TA_tex_txt, + rbt_9_eye6_TA_tex_txt, + rbt_9_eye7_TA_tex_txt, + rbt_9_eye8_TA_tex_txt, + }, + { + rbt_9_mouth1_TA_tex_txt, + rbt_9_mouth2_TA_tex_txt, + rbt_9_mouth3_TA_tex_txt, + rbt_9_mouth4_TA_tex_txt, + rbt_9_mouth5_TA_tex_txt, + rbt_9_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 8, + 30, + 34, + 0, + 0, + 65, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_330, + ACTOR_OBJ_BANK_331, + &cKF_bs_r_rhn_1, + { + rhn_1_tmem_txt, + rhn_1_pal, + { + rhn_1_eye1_TA_tex_txt, + rhn_1_eye2_TA_tex_txt, + rhn_1_eye3_TA_tex_txt, + rhn_1_eye4_TA_tex_txt, + rhn_1_eye5_TA_tex_txt, + rhn_1_eye6_TA_tex_txt, + rhn_1_eye7_TA_tex_txt, + rhn_1_eye8_TA_tex_txt, + }, + { + rhn_1_mouth1_TA_tex_txt, + rhn_1_mouth2_TA_tex_txt, + rhn_1_mouth3_TA_tex_txt, + rhn_1_mouth4_TA_tex_txt, + rhn_1_mouth5_TA_tex_txt, + rhn_1_mouth6_TA_tex_txt, + }, + 72, + 120, + 168, + }, + 0.010999999940395355, + 1, + 0, + 0, + 37, + 0, + 0, + 189, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_330, + ACTOR_OBJ_BANK_332, + &cKF_bs_r_rhn_1, + { + rhn_2_tmem_txt, + rhn_2_pal, + { + rhn_2_eye1_TA_tex_txt, + rhn_2_eye2_TA_tex_txt, + rhn_2_eye3_TA_tex_txt, + rhn_2_eye4_TA_tex_txt, + rhn_2_eye5_TA_tex_txt, + rhn_2_eye6_TA_tex_txt, + rhn_2_eye7_TA_tex_txt, + rhn_2_eye8_TA_tex_txt, + }, + { + rhn_2_mouth1_TA_tex_txt, + rhn_2_mouth2_TA_tex_txt, + rhn_2_mouth3_TA_tex_txt, + rhn_2_mouth4_TA_tex_txt, + rhn_2_mouth5_TA_tex_txt, + rhn_2_mouth6_TA_tex_txt, + }, + 72, + 120, + 168, + }, + 0.010999999940395355, + 1, + 1, + 21, + 37, + 0, + 0, + 190, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_330, + ACTOR_OBJ_BANK_333, + &cKF_bs_r_rhn_1, + { + rhn_3_tmem_txt, + rhn_3_pal, + { + rhn_3_eye1_TA_tex_txt, + rhn_3_eye2_TA_tex_txt, + rhn_3_eye3_TA_tex_txt, + rhn_3_eye4_TA_tex_txt, + rhn_3_eye5_TA_tex_txt, + rhn_3_eye6_TA_tex_txt, + rhn_3_eye7_TA_tex_txt, + rhn_3_eye8_TA_tex_txt, + }, + { + rhn_3_mouth1_TA_tex_txt, + rhn_3_mouth2_TA_tex_txt, + rhn_3_mouth3_TA_tex_txt, + rhn_3_mouth4_TA_tex_txt, + rhn_3_mouth5_TA_tex_txt, + rhn_3_mouth6_TA_tex_txt, + }, + 72, + 120, + 168, + }, + 0.010999999940395355, + 1, + 2, + 15, + 37, + 0, + 0, + 191, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_338, + &cKF_bs_r_shp_1, + { + shp_1_tmem_txt, + shp_1_pal, + { + shp_1_eye1_TA_tex_txt, + shp_1_eye2_TA_tex_txt, + shp_1_eye3_TA_tex_txt, + shp_1_eye4_TA_tex_txt, + shp_1_eye5_TA_tex_txt, + shp_1_eye6_TA_tex_txt, + shp_1_eye7_TA_tex_txt, + shp_1_eye8_TA_tex_txt, + }, + { + shp_1_mouth1_TA_tex_txt, + shp_1_mouth2_TA_tex_txt, + shp_1_mouth3_TA_tex_txt, + shp_1_mouth4_TA_tex_txt, + shp_1_mouth5_TA_tex_txt, + shp_1_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 0, + 10, + 40, + 0, + 0, + 21, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_344, + &cKF_bs_r_squ_1, + { + squ_1_tmem_txt, + squ_1_pal, + { + squ_1_eye1_TA_tex_txt, + squ_1_eye2_TA_tex_txt, + squ_1_eye3_TA_tex_txt, + squ_1_eye4_TA_tex_txt, + squ_1_eye5_TA_tex_txt, + squ_1_eye6_TA_tex_txt, + squ_1_eye7_TA_tex_txt, + squ_1_eye8_TA_tex_txt, + }, + { + squ_1_mouth1_TA_tex_txt, + squ_1_mouth2_TA_tex_txt, + squ_1_mouth3_TA_tex_txt, + squ_1_mouth4_TA_tex_txt, + squ_1_mouth5_TA_tex_txt, + squ_1_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 0, + 4, + 26, + 0, + 0, + 47, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_345, + &cKF_bs_r_squ_1, + { + squ_2_tmem_txt, + squ_2_pal, + { + squ_2_eye1_TA_tex_txt, + squ_2_eye2_TA_tex_txt, + squ_2_eye3_TA_tex_txt, + squ_2_eye4_TA_tex_txt, + squ_2_eye5_TA_tex_txt, + squ_2_eye6_TA_tex_txt, + squ_2_eye7_TA_tex_txt, + squ_2_eye8_TA_tex_txt, + }, + { + squ_2_mouth1_TA_tex_txt, + squ_2_mouth2_TA_tex_txt, + squ_2_mouth3_TA_tex_txt, + squ_2_mouth4_TA_tex_txt, + squ_2_mouth5_TA_tex_txt, + squ_2_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 1, + 5, + 26, + 0, + 0, + 48, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_346, + &cKF_bs_r_squ_1, + { + squ_3_tmem_txt, + squ_3_pal, + { + squ_3_eye1_TA_tex_txt, + squ_3_eye2_TA_tex_txt, + squ_3_eye3_TA_tex_txt, + squ_3_eye4_TA_tex_txt, + squ_3_eye5_TA_tex_txt, + squ_3_eye6_TA_tex_txt, + squ_3_eye7_TA_tex_txt, + squ_3_eye8_TA_tex_txt, + }, + { + squ_3_mouth1_TA_tex_txt, + squ_3_mouth2_TA_tex_txt, + squ_3_mouth3_TA_tex_txt, + squ_3_mouth4_TA_tex_txt, + squ_3_mouth5_TA_tex_txt, + squ_3_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 2, + 6, + 26, + 0, + 0, + 49, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_347, + &cKF_bs_r_squ_1, + { + squ_4_tmem_txt, + squ_4_pal, + { + squ_4_eye1_TA_tex_txt, + squ_4_eye2_TA_tex_txt, + squ_4_eye3_TA_tex_txt, + squ_4_eye4_TA_tex_txt, + squ_4_eye5_TA_tex_txt, + squ_4_eye6_TA_tex_txt, + squ_4_eye7_TA_tex_txt, + squ_4_eye8_TA_tex_txt, + }, + { + squ_4_mouth1_TA_tex_txt, + squ_4_mouth2_TA_tex_txt, + squ_4_mouth3_TA_tex_txt, + squ_4_mouth4_TA_tex_txt, + squ_4_mouth5_TA_tex_txt, + squ_4_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 3, + 17, + 26, + 0, + 0, + 50, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_348, + &cKF_bs_r_squ_1, + { + squ_5_tmem_txt, + squ_5_pal, + { + squ_5_eye1_TA_tex_txt, + squ_5_eye2_TA_tex_txt, + squ_5_eye3_TA_tex_txt, + squ_5_eye4_TA_tex_txt, + squ_5_eye5_TA_tex_txt, + squ_5_eye6_TA_tex_txt, + squ_5_eye7_TA_tex_txt, + squ_5_eye8_TA_tex_txt, + }, + { + squ_5_mouth1_TA_tex_txt, + squ_5_mouth2_TA_tex_txt, + squ_5_mouth3_TA_tex_txt, + squ_5_mouth4_TA_tex_txt, + squ_5_mouth5_TA_tex_txt, + squ_5_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 4, + 16, + 26, + 0, + 0, + 51, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_349, + &cKF_bs_r_squ_1, + { + squ_6_tmem_txt, + squ_6_pal, + { + squ_6_eye1_TA_tex_txt, + squ_6_eye2_TA_tex_txt, + squ_6_eye3_TA_tex_txt, + squ_6_eye4_TA_tex_txt, + squ_6_eye5_TA_tex_txt, + squ_6_eye6_TA_tex_txt, + squ_6_eye7_TA_tex_txt, + squ_6_eye8_TA_tex_txt, + }, + { + squ_6_mouth1_TA_tex_txt, + squ_6_mouth2_TA_tex_txt, + squ_6_mouth3_TA_tex_txt, + squ_6_mouth4_TA_tex_txt, + squ_6_mouth5_TA_tex_txt, + squ_6_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 5, + 18, + 26, + 0, + 0, + 52, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_350, + &cKF_bs_r_squ_1, + { + squ_7_tmem_txt, + squ_7_pal, + { + squ_7_eye1_TA_tex_txt, + squ_7_eye2_TA_tex_txt, + squ_7_eye3_TA_tex_txt, + squ_7_eye4_TA_tex_txt, + squ_7_eye5_TA_tex_txt, + squ_7_eye6_TA_tex_txt, + squ_7_eye7_TA_tex_txt, + squ_7_eye8_TA_tex_txt, + }, + { + squ_7_mouth1_TA_tex_txt, + squ_7_mouth2_TA_tex_txt, + squ_7_mouth3_TA_tex_txt, + squ_7_mouth4_TA_tex_txt, + squ_7_mouth5_TA_tex_txt, + squ_7_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 6, + 9, + 26, + 0, + 0, + 53, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_351, + &cKF_bs_r_squ_1, + { + squ_8_tmem_txt, + squ_8_pal, + { + squ_8_eye1_TA_tex_txt, + squ_8_eye2_TA_tex_txt, + squ_8_eye3_TA_tex_txt, + squ_8_eye4_TA_tex_txt, + squ_8_eye5_TA_tex_txt, + squ_8_eye6_TA_tex_txt, + squ_8_eye7_TA_tex_txt, + squ_8_eye8_TA_tex_txt, + }, + { + squ_8_mouth1_TA_tex_txt, + squ_8_mouth2_TA_tex_txt, + squ_8_mouth3_TA_tex_txt, + squ_8_mouth4_TA_tex_txt, + squ_8_mouth5_TA_tex_txt, + squ_8_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 7, + 11, + 26, + 0, + 0, + 54, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_356, + ACTOR_OBJ_BANK_357, + &cKF_bs_r_tig_1, + { + tig_1_tmem_txt, + tig_1_pal, + { + tig_1_eye1_TA_tex_txt, + tig_1_eye2_TA_tex_txt, + tig_1_eye3_TA_tex_txt, + tig_1_eye4_TA_tex_txt, + tig_1_eye5_TA_tex_txt, + tig_1_eye6_TA_tex_txt, + tig_1_eye7_TA_tex_txt, + tig_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 176, + }, + 0.011300000362098217, + 1, + 0, + 30, + 41, + 0, + 0, + 156, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_356, + ACTOR_OBJ_BANK_358, + &cKF_bs_r_tig_1, + { + tig_2_tmem_txt, + tig_2_pal, + { + tig_2_eye1_TA_tex_txt, + tig_2_eye2_TA_tex_txt, + tig_2_eye3_TA_tex_txt, + tig_2_eye4_TA_tex_txt, + tig_2_eye5_TA_tex_txt, + tig_2_eye6_TA_tex_txt, + tig_2_eye7_TA_tex_txt, + tig_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 176, + }, + 0.011300000362098217, + 1, + 1, + 11, + 41, + 0, + 0, + 157, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_356, + ACTOR_OBJ_BANK_359, + &cKF_bs_r_tig_1, + { + tig_3_tmem_txt, + tig_3_pal, + { + tig_3_eye1_TA_tex_txt, + tig_3_eye2_TA_tex_txt, + tig_3_eye3_TA_tex_txt, + tig_3_eye4_TA_tex_txt, + tig_3_eye5_TA_tex_txt, + tig_3_eye6_TA_tex_txt, + tig_3_eye7_TA_tex_txt, + tig_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 176, + }, + 0.011300000362098217, + 1, + 2, + 1, + 41, + 0, + 0, + 158, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_363, + &cKF_bs_r_wol_1, + { + wol_1_tmem_txt, + wol_1_pal, + { + wol_1_eye1_TA_tex_txt, + wol_1_eye2_TA_tex_txt, + wol_1_eye3_TA_tex_txt, + wol_1_eye4_TA_tex_txt, + wol_1_eye5_TA_tex_txt, + wol_1_eye6_TA_tex_txt, + wol_1_eye7_TA_tex_txt, + wol_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 0, + 21, + 37, + 0, + 0, + 84, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_364, + &cKF_bs_r_wol_1, + { + wol_2_tmem_txt, + wol_2_pal, + { + wol_2_eye1_TA_tex_txt, + wol_2_eye2_TA_tex_txt, + wol_2_eye3_TA_tex_txt, + wol_2_eye4_TA_tex_txt, + wol_2_eye5_TA_tex_txt, + wol_2_eye6_TA_tex_txt, + wol_2_eye7_TA_tex_txt, + wol_2_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 1, + 10, + 37, + 0, + 0, + 85, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_365, + &cKF_bs_r_wol_1, + { + wol_3_tmem_txt, + wol_3_pal, + { + wol_3_eye1_TA_tex_txt, + wol_3_eye2_TA_tex_txt, + wol_3_eye3_TA_tex_txt, + wol_3_eye4_TA_tex_txt, + wol_3_eye5_TA_tex_txt, + wol_3_eye6_TA_tex_txt, + wol_3_eye7_TA_tex_txt, + wol_3_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 2, + 17, + 37, + 0, + 0, + 86, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_198, + &cKF_bs_r_duk_1, + { + duk_7_tmem_txt, + duk_7_pal, + { + duk_7_eye1_TA_tex_txt, + duk_7_eye2_TA_tex_txt, + duk_7_eye3_TA_tex_txt, + duk_7_eye4_TA_tex_txt, + duk_7_eye5_TA_tex_txt, + duk_7_eye6_TA_tex_txt, + duk_7_eye7_TA_tex_txt, + duk_7_eye8_TA_tex_txt, + }, + { + duk_7_mouth1_TA_tex_txt, + duk_7_mouth2_TA_tex_txt, + duk_7_mouth3_TA_tex_txt, + duk_7_mouth4_TA_tex_txt, + duk_7_mouth5_TA_tex_txt, + duk_7_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 6, + 11, + 31, + 0, + 0, + 73, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_199, + &cKF_bs_r_duk_1, + { + duk_8_tmem_txt, + duk_8_pal, + { + duk_8_eye1_TA_tex_txt, + duk_8_eye2_TA_tex_txt, + duk_8_eye3_TA_tex_txt, + duk_8_eye4_TA_tex_txt, + duk_8_eye5_TA_tex_txt, + duk_8_eye6_TA_tex_txt, + duk_8_eye7_TA_tex_txt, + duk_8_eye8_TA_tex_txt, + }, + { + duk_8_mouth1_TA_tex_txt, + duk_8_mouth2_TA_tex_txt, + duk_8_mouth3_TA_tex_txt, + duk_8_mouth4_TA_tex_txt, + duk_8_mouth5_TA_tex_txt, + duk_8_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 7, + 15, + 31, + 0, + 0, + 74, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_366, + &cKF_bs_r_wol_1, + { + wol_4_tmem_txt, + wol_4_pal, + { + wol_4_eye1_TA_tex_txt, + wol_4_eye2_TA_tex_txt, + wol_4_eye3_TA_tex_txt, + wol_4_eye4_TA_tex_txt, + wol_4_eye5_TA_tex_txt, + wol_4_eye6_TA_tex_txt, + wol_4_eye7_TA_tex_txt, + wol_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 3, + 16, + 37, + 0, + 0, + 87, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_330, + ACTOR_OBJ_BANK_334, + &cKF_bs_r_rhn_1, + { + rhn_4_tmem_txt, + rhn_4_pal, + { + rhn_4_eye1_TA_tex_txt, + rhn_4_eye2_TA_tex_txt, + rhn_4_eye3_TA_tex_txt, + rhn_4_eye4_TA_tex_txt, + rhn_4_eye5_TA_tex_txt, + rhn_4_eye6_TA_tex_txt, + rhn_4_eye7_TA_tex_txt, + rhn_4_eye8_TA_tex_txt, + }, + { + rhn_4_mouth1_TA_tex_txt, + rhn_4_mouth2_TA_tex_txt, + rhn_4_mouth3_TA_tex_txt, + rhn_4_mouth4_TA_tex_txt, + rhn_4_mouth5_TA_tex_txt, + rhn_4_mouth6_TA_tex_txt, + }, + 72, + 120, + 168, + }, + 0.010999999940395355, + 1, + 3, + 22, + 37, + 0, + 0, + 192, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_126, + ACTOR_OBJ_BANK_129, + &cKF_bs_r_bul_1, + { + bul_3_tmem_txt, + bul_3_pal, + { + bul_3_eye1_TA_tex_txt, + bul_3_eye2_TA_tex_txt, + bul_3_eye3_TA_tex_txt, + bul_3_eye4_TA_tex_txt, + bul_3_eye5_TA_tex_txt, + bul_3_eye6_TA_tex_txt, + bul_3_eye7_TA_tex_txt, + bul_3_eye8_TA_tex_txt, + }, + { + bul_3_mouth1_TA_tex_txt, + bul_3_mouth2_TA_tex_txt, + bul_3_mouth3_TA_tex_txt, + bul_3_mouth4_TA_tex_txt, + bul_3_mouth5_TA_tex_txt, + bul_3_mouth6_TA_tex_txt, + }, + 128, + 32, + 176, + }, + 0.012500000186264515, + 0, + 2, + 24, + 45, + 0, + 0, + 118, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_126, + ACTOR_OBJ_BANK_130, + &cKF_bs_r_bul_1, + { + bul_4_tmem_txt, + bul_4_pal, + { + bul_4_eye1_TA_tex_txt, + bul_4_eye2_TA_tex_txt, + bul_4_eye3_TA_tex_txt, + bul_4_eye4_TA_tex_txt, + bul_4_eye5_TA_tex_txt, + bul_4_eye6_TA_tex_txt, + bul_4_eye7_TA_tex_txt, + bul_4_eye8_TA_tex_txt, + }, + { + bul_4_mouth1_TA_tex_txt, + bul_4_mouth2_TA_tex_txt, + bul_4_mouth3_TA_tex_txt, + bul_4_mouth4_TA_tex_txt, + bul_4_mouth5_TA_tex_txt, + bul_4_mouth6_TA_tex_txt, + }, + 128, + 32, + 176, + }, + 0.012500000186264515, + 0, + 3, + 23, + 45, + 0, + 0, + 119, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_242, + &cKF_bs_r_hip_1, + { + hip_4_tmem_txt, + hip_4_pal, + { + hip_4_eye1_TA_tex_txt, + hip_4_eye2_TA_tex_txt, + hip_4_eye3_TA_tex_txt, + hip_4_eye4_TA_tex_txt, + hip_4_eye5_TA_tex_txt, + hip_4_eye6_TA_tex_txt, + hip_4_eye7_TA_tex_txt, + hip_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 3, + 4, + 43, + 0, + 0, + 80, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_204, + &cKF_bs_r_elp_1, + { + elp_4_tmem_txt, + elp_4_pal, + { + elp_4_eye1_TA_tex_txt, + elp_4_eye2_TA_tex_txt, + elp_4_eye3_TA_tex_txt, + elp_4_eye4_TA_tex_txt, + elp_4_eye5_TA_tex_txt, + elp_4_eye6_TA_tex_txt, + elp_4_eye7_TA_tex_txt, + elp_4_eye8_TA_tex_txt, + }, + { + elp_4_mouth1_TA_tex_txt, + elp_4_mouth2_TA_tex_txt, + elp_4_mouth3_TA_tex_txt, + elp_4_mouth4_TA_tex_txt, + elp_4_mouth5_TA_tex_txt, + elp_4_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 3, + 17, + 40, + 0, + 0, + 18, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_372, + &cKF_bs_r_dog_1, + { + dog_9_tmem_txt, + dog_9_pal, + { + dog_9_eye1_TA_tex_txt, + dog_9_eye2_TA_tex_txt, + dog_9_eye3_TA_tex_txt, + dog_9_eye4_TA_tex_txt, + dog_9_eye5_TA_tex_txt, + dog_9_eye6_TA_tex_txt, + dog_9_eye7_TA_tex_txt, + dog_9_eye8_TA_tex_txt, + }, + { + dog_9_mouth1_TA_tex_txt, + dog_9_mouth2_TA_tex_txt, + dog_9_mouth3_TA_tex_txt, + dog_9_mouth4_TA_tex_txt, + dog_9_mouth5_TA_tex_txt, + dog_9_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 8, + 19, + 37, + 0, + 0, + 45, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_373, + &cKF_bs_r_dog_1, + { + dog_10_tmem_txt, + dog_10_pal, + { + dog_10_eye1_TA_tex_txt, + dog_10_eye2_TA_tex_txt, + dog_10_eye3_TA_tex_txt, + dog_10_eye4_TA_tex_txt, + dog_10_eye5_TA_tex_txt, + dog_10_eye6_TA_tex_txt, + dog_10_eye7_TA_tex_txt, + dog_10_eye8_TA_tex_txt, + }, + { + dog_10_mouth1_TA_tex_txt, + dog_10_mouth2_TA_tex_txt, + dog_10_mouth3_TA_tex_txt, + dog_10_mouth4_TA_tex_txt, + dog_10_mouth5_TA_tex_txt, + dog_10_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 9, + 3, + 37, + 0, + 0, + 46, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_374, + &cKF_bs_r_hip_1, + { + hip_5_tmem_txt, + hip_5_pal, + { + hip_5_eye1_TA_tex_txt, + hip_5_eye2_TA_tex_txt, + hip_5_eye3_TA_tex_txt, + hip_5_eye4_TA_tex_txt, + hip_5_eye5_TA_tex_txt, + hip_5_eye6_TA_tex_txt, + hip_5_eye7_TA_tex_txt, + hip_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 4, + 6, + 43, + 0, + 0, + 81, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_375, + &cKF_bs_r_hip_1, + { + hip_6_tmem_txt, + hip_6_pal, + { + hip_6_eye1_TA_tex_txt, + hip_6_eye2_TA_tex_txt, + hip_6_eye3_TA_tex_txt, + hip_6_eye4_TA_tex_txt, + hip_6_eye5_TA_tex_txt, + hip_6_eye6_TA_tex_txt, + hip_6_eye7_TA_tex_txt, + hip_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 5, + 21, + 43, + 0, + 0, + 82, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_238, + ACTOR_OBJ_BANK_376, + &cKF_bs_r_hip_1, + { + hip_7_tmem_txt, + hip_7_pal, + { + hip_7_eye1_TA_tex_txt, + hip_7_eye2_TA_tex_txt, + hip_7_eye3_TA_tex_txt, + hip_7_eye4_TA_tex_txt, + hip_7_eye5_TA_tex_txt, + hip_7_eye6_TA_tex_txt, + hip_7_eye7_TA_tex_txt, + hip_7_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 136, + 0, + 32, + }, + 0.007300000172108412, + 1, + 6, + 3, + 43, + 0, + 0, + 83, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_377, + &cKF_bs_r_squ_1, + { + squ_9_tmem_txt, + squ_9_pal, + { + squ_9_eye1_TA_tex_txt, + squ_9_eye2_TA_tex_txt, + squ_9_eye3_TA_tex_txt, + squ_9_eye4_TA_tex_txt, + squ_9_eye5_TA_tex_txt, + squ_9_eye6_TA_tex_txt, + squ_9_eye7_TA_tex_txt, + squ_9_eye8_TA_tex_txt, + }, + { + squ_9_mouth1_TA_tex_txt, + squ_9_mouth2_TA_tex_txt, + squ_9_mouth3_TA_tex_txt, + squ_9_mouth4_TA_tex_txt, + squ_9_mouth5_TA_tex_txt, + squ_9_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 8, + 7, + 26, + 0, + 0, + 55, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_378, + &cKF_bs_r_squ_1, + { + squ_10_tmem_txt, + squ_10_pal, + { + squ_10_eye1_TA_tex_txt, + squ_10_eye2_TA_tex_txt, + squ_10_eye3_TA_tex_txt, + squ_10_eye4_TA_tex_txt, + squ_10_eye5_TA_tex_txt, + squ_10_eye6_TA_tex_txt, + squ_10_eye7_TA_tex_txt, + squ_10_eye8_TA_tex_txt, + }, + { + squ_10_mouth1_TA_tex_txt, + squ_10_mouth2_TA_tex_txt, + squ_10_mouth3_TA_tex_txt, + squ_10_mouth4_TA_tex_txt, + squ_10_mouth5_TA_tex_txt, + squ_10_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 9, + 2, + 26, + 0, + 0, + 56, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_379, + &cKF_bs_r_elp_1, + { + elp_5_tmem_txt, + elp_5_pal, + { + elp_5_eye1_TA_tex_txt, + elp_5_eye2_TA_tex_txt, + elp_5_eye3_TA_tex_txt, + elp_5_eye4_TA_tex_txt, + elp_5_eye5_TA_tex_txt, + elp_5_eye6_TA_tex_txt, + elp_5_eye7_TA_tex_txt, + elp_5_eye8_TA_tex_txt, + }, + { + elp_5_mouth1_TA_tex_txt, + elp_5_mouth2_TA_tex_txt, + elp_5_mouth3_TA_tex_txt, + elp_5_mouth4_TA_tex_txt, + elp_5_mouth5_TA_tex_txt, + elp_5_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 4, + 22, + 40, + 0, + 0, + 19, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_380, + &cKF_bs_r_elp_1, + { + elp_6_tmem_txt, + elp_6_pal, + { + elp_6_eye1_TA_tex_txt, + elp_6_eye2_TA_tex_txt, + elp_6_eye3_TA_tex_txt, + elp_6_eye4_TA_tex_txt, + elp_6_eye5_TA_tex_txt, + elp_6_eye6_TA_tex_txt, + elp_6_eye7_TA_tex_txt, + elp_6_eye8_TA_tex_txt, + }, + { + elp_6_mouth1_TA_tex_txt, + elp_6_mouth2_TA_tex_txt, + elp_6_mouth3_TA_tex_txt, + elp_6_mouth4_TA_tex_txt, + elp_6_mouth5_TA_tex_txt, + elp_6_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 5, + 11, + 40, + 0, + 0, + 20, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_174, + ACTOR_OBJ_BANK_381, + &cKF_bs_r_crd_1, + { + crd_4_tmem_txt, + crd_4_pal, + { + crd_4_eye1_TA_tex_txt, + crd_4_eye2_TA_tex_txt, + crd_4_eye3_TA_tex_txt, + crd_4_eye4_TA_tex_txt, + crd_4_eye5_TA_tex_txt, + crd_4_eye6_TA_tex_txt, + crd_4_eye7_TA_tex_txt, + crd_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 96, + 0, + 168, + }, + 0.010499999858438969, + 1, + 3, + 15, + 48, + 0, + 0, + 149, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_385, + &cKF_bs_r_rbt_1, + { + rbt_10_tmem_txt, + rbt_10_pal, + { + rbt_10_eye1_TA_tex_txt, + rbt_10_eye2_TA_tex_txt, + rbt_10_eye3_TA_tex_txt, + rbt_10_eye4_TA_tex_txt, + rbt_10_eye5_TA_tex_txt, + rbt_10_eye6_TA_tex_txt, + rbt_10_eye7_TA_tex_txt, + rbt_10_eye8_TA_tex_txt, + }, + { + rbt_10_mouth1_TA_tex_txt, + rbt_10_mouth2_TA_tex_txt, + rbt_10_mouth3_TA_tex_txt, + rbt_10_mouth4_TA_tex_txt, + rbt_10_mouth5_TA_tex_txt, + rbt_10_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 9, + 12, + 34, + 0, + 0, + 66, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_382, + &cKF_bs_r_shp_1, + { + shp_2_tmem_txt, + shp_2_pal, + { + shp_2_eye1_TA_tex_txt, + shp_2_eye2_TA_tex_txt, + shp_2_eye3_TA_tex_txt, + shp_2_eye4_TA_tex_txt, + shp_2_eye5_TA_tex_txt, + shp_2_eye6_TA_tex_txt, + shp_2_eye7_TA_tex_txt, + shp_2_eye8_TA_tex_txt, + }, + { + shp_2_mouth1_TA_tex_txt, + shp_2_mouth2_TA_tex_txt, + shp_2_mouth3_TA_tex_txt, + shp_2_mouth4_TA_tex_txt, + shp_2_mouth5_TA_tex_txt, + shp_2_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 1, + 8, + 40, + 0, + 0, + 22, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_383, + &cKF_bs_r_shp_1, + { + shp_3_tmem_txt, + shp_3_pal, + { + shp_3_eye1_TA_tex_txt, + shp_3_eye2_TA_tex_txt, + shp_3_eye3_TA_tex_txt, + shp_3_eye4_TA_tex_txt, + shp_3_eye5_TA_tex_txt, + shp_3_eye6_TA_tex_txt, + shp_3_eye7_TA_tex_txt, + shp_3_eye8_TA_tex_txt, + }, + { + shp_3_mouth1_TA_tex_txt, + shp_3_mouth2_TA_tex_txt, + shp_3_mouth3_TA_tex_txt, + shp_3_mouth4_TA_tex_txt, + shp_3_mouth5_TA_tex_txt, + shp_3_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 2, + 6, + 40, + 0, + 0, + 23, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_384, + &cKF_bs_r_wol_1, + { + wol_5_tmem_txt, + wol_5_pal, + { + wol_5_eye1_TA_tex_txt, + wol_5_eye2_TA_tex_txt, + wol_5_eye3_TA_tex_txt, + wol_5_eye4_TA_tex_txt, + wol_5_eye5_TA_tex_txt, + wol_5_eye6_TA_tex_txt, + wol_5_eye7_TA_tex_txt, + wol_5_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 4, + 29, + 37, + 0, + 0, + 88, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_386, + &cKF_bs_r_duk_1, + { + duk_9_tmem_txt, + duk_9_pal, + { + duk_9_eye1_TA_tex_txt, + duk_9_eye2_TA_tex_txt, + duk_9_eye3_TA_tex_txt, + duk_9_eye4_TA_tex_txt, + duk_9_eye5_TA_tex_txt, + duk_9_eye6_TA_tex_txt, + duk_9_eye7_TA_tex_txt, + duk_9_eye8_TA_tex_txt, + }, + { + duk_9_mouth1_TA_tex_txt, + duk_9_mouth2_TA_tex_txt, + duk_9_mouth3_TA_tex_txt, + duk_9_mouth4_TA_tex_txt, + duk_9_mouth5_TA_tex_txt, + duk_9_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 8, + 7, + 31, + 0, + 0, + 75, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_387, + &cKF_bs_r_duk_1, + { + duk_10_tmem_txt, + duk_10_pal, + { + duk_10_eye1_TA_tex_txt, + duk_10_eye2_TA_tex_txt, + duk_10_eye3_TA_tex_txt, + duk_10_eye4_TA_tex_txt, + duk_10_eye5_TA_tex_txt, + duk_10_eye6_TA_tex_txt, + duk_10_eye7_TA_tex_txt, + duk_10_eye8_TA_tex_txt, + }, + { + duk_10_mouth1_TA_tex_txt, + duk_10_mouth2_TA_tex_txt, + duk_10_mouth3_TA_tex_txt, + duk_10_mouth4_TA_tex_txt, + duk_10_mouth5_TA_tex_txt, + duk_10_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 9, + 8, + 31, + 0, + 0, + 76, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_388, + &cKF_bs_r_shp_1, + { + shp_4_tmem_txt, + shp_4_pal, + { + shp_4_eye1_TA_tex_txt, + shp_4_eye2_TA_tex_txt, + shp_4_eye3_TA_tex_txt, + shp_4_eye4_TA_tex_txt, + shp_4_eye5_TA_tex_txt, + shp_4_eye6_TA_tex_txt, + shp_4_eye7_TA_tex_txt, + shp_4_eye8_TA_tex_txt, + }, + { + shp_4_mouth1_TA_tex_txt, + shp_4_mouth2_TA_tex_txt, + shp_4_mouth3_TA_tex_txt, + shp_4_mouth4_TA_tex_txt, + shp_4_mouth5_TA_tex_txt, + shp_4_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 3, + 7, + 40, + 0, + 0, + 24, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_389, + &cKF_bs_r_shp_1, + { + shp_5_tmem_txt, + shp_5_pal, + { + shp_5_eye1_TA_tex_txt, + shp_5_eye2_TA_tex_txt, + shp_5_eye3_TA_tex_txt, + shp_5_eye4_TA_tex_txt, + shp_5_eye5_TA_tex_txt, + shp_5_eye6_TA_tex_txt, + shp_5_eye7_TA_tex_txt, + shp_5_eye8_TA_tex_txt, + }, + { + shp_5_mouth1_TA_tex_txt, + shp_5_mouth2_TA_tex_txt, + shp_5_mouth3_TA_tex_txt, + shp_5_mouth4_TA_tex_txt, + shp_5_mouth5_TA_tex_txt, + shp_5_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 4, + 17, + 40, + 0, + 0, + 25, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_337, + ACTOR_OBJ_BANK_390, + &cKF_bs_r_shp_1, + { + shp_6_tmem_txt, + shp_6_pal, + { + shp_6_eye1_TA_tex_txt, + shp_6_eye2_TA_tex_txt, + shp_6_eye3_TA_tex_txt, + shp_6_eye4_TA_tex_txt, + shp_6_eye5_TA_tex_txt, + shp_6_eye6_TA_tex_txt, + shp_6_eye7_TA_tex_txt, + shp_6_eye8_TA_tex_txt, + }, + { + shp_6_mouth1_TA_tex_txt, + shp_6_mouth2_TA_tex_txt, + shp_6_mouth3_TA_tex_txt, + shp_6_mouth4_TA_tex_txt, + shp_6_mouth5_TA_tex_txt, + shp_6_mouth6_TA_tex_txt, + }, + 96, + 128, + 192, + }, + 0.009999999776482582, + 0, + 5, + 22, + 40, + 0, + 0, + 26, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_182, + ACTOR_OBJ_BANK_189, + &cKF_bs_r_dog_1, + { + dog_7_tmem_txt, + dog_7_pal, + { + dog_7_eye1_TA_tex_txt, + dog_7_eye2_TA_tex_txt, + dog_7_eye3_TA_tex_txt, + dog_7_eye4_TA_tex_txt, + dog_7_eye5_TA_tex_txt, + dog_7_eye6_TA_tex_txt, + dog_7_eye7_TA_tex_txt, + dog_7_eye8_TA_tex_txt, + }, + { + dog_7_mouth1_TA_tex_txt, + dog_7_mouth2_TA_tex_txt, + dog_7_mouth3_TA_tex_txt, + dog_7_mouth4_TA_tex_txt, + dog_7_mouth5_TA_tex_txt, + dog_7_mouth6_TA_tex_txt, + }, + 48, + 0, + 80, + }, + 0.009499999694526196, + 0, + 6, + 20, + 37, + 0, + 0, + 43, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_191, + ACTOR_OBJ_BANK_426, + &cKF_bs_r_duk_1, + { + duk_11_tmem_txt, + duk_11_pal, + { + duk_11_eye1_TA_tex_txt, + duk_11_eye2_TA_tex_txt, + duk_11_eye3_TA_tex_txt, + duk_11_eye4_TA_tex_txt, + duk_11_eye5_TA_tex_txt, + duk_11_eye6_TA_tex_txt, + duk_11_eye7_TA_tex_txt, + duk_11_eye8_TA_tex_txt, + }, + { + duk_11_mouth1_TA_tex_txt, + duk_11_mouth2_TA_tex_txt, + duk_11_mouth3_TA_tex_txt, + duk_11_mouth4_TA_tex_txt, + duk_11_mouth5_TA_tex_txt, + duk_11_mouth6_TA_tex_txt, + }, + 112, + 72, + 160, + }, + 0.009999999776482582, + 1, + 10, + 10, + 31, + 0, + 0, + 263, + 20, + 45, + 56, + 25, + }, + { + ACTOR_OBJ_BANK_320, + ACTOR_OBJ_BANK_427, + &cKF_bs_r_rbt_1, + { + rbt_11_tmem_txt, + rbt_11_pal, + { + rbt_11_eye1_TA_tex_txt, + rbt_11_eye2_TA_tex_txt, + rbt_11_eye3_TA_tex_txt, + rbt_11_eye4_TA_tex_txt, + rbt_11_eye5_TA_tex_txt, + rbt_11_eye6_TA_tex_txt, + rbt_11_eye7_TA_tex_txt, + rbt_11_eye8_TA_tex_txt, + }, + { + rbt_11_mouth1_TA_tex_txt, + rbt_11_mouth2_TA_tex_txt, + rbt_11_mouth3_TA_tex_txt, + rbt_11_mouth4_TA_tex_txt, + rbt_11_mouth5_TA_tex_txt, + rbt_11_mouth6_TA_tex_txt, + }, + 80, + 112, + 176, + }, + 0.009999999776482582, + 0, + 10, + 0, + 34, + 0, + 0, + 272, + 20, + 40, + 61, + 25, + }, + { + ACTOR_OBJ_BANK_343, + ACTOR_OBJ_BANK_421, + &cKF_bs_r_squ_1, + { + squ_11_tmem_txt, + squ_11_pal, + { + squ_11_eye1_TA_tex_txt, + squ_11_eye2_TA_tex_txt, + squ_11_eye3_TA_tex_txt, + squ_11_eye4_TA_tex_txt, + squ_11_eye5_TA_tex_txt, + squ_11_eye6_TA_tex_txt, + squ_11_eye7_TA_tex_txt, + squ_11_eye8_TA_tex_txt, + }, + { + squ_11_mouth1_TA_tex_txt, + squ_11_mouth2_TA_tex_txt, + squ_11_mouth3_TA_tex_txt, + squ_11_mouth4_TA_tex_txt, + squ_11_mouth5_TA_tex_txt, + squ_11_mouth6_TA_tex_txt, + }, + 72, + 104, + 160, + }, + 0.006800000090152025, + 0, + 10, + 15, + 26, + 0, + 0, + 275, + 20, + 35, + 58, + 25, + }, + { + ACTOR_OBJ_BANK_205, + ACTOR_OBJ_BANK_428, + &cKF_bs_r_flg_1, + { + flg_13_tmem_txt, + flg_13_pal, + { + flg_13_eye1_TA_tex_txt, + flg_13_eye2_TA_tex_txt, + flg_13_eye3_TA_tex_txt, + flg_13_eye4_TA_tex_txt, + flg_13_eye5_TA_tex_txt, + flg_13_eye6_TA_tex_txt, + flg_13_eye7_TA_tex_txt, + flg_13_eye8_TA_tex_txt, + }, + { + flg_13_mouth1_TA_tex_txt, + flg_13_mouth2_TA_tex_txt, + flg_13_mouth3_TA_tex_txt, + flg_13_mouth4_TA_tex_txt, + flg_13_mouth5_TA_tex_txt, + flg_13_mouth6_TA_tex_txt, + }, + 0, + 32, + 176, + }, + 0.00800000037997961, + 0, + 12, + 28, + 38, + 0, + 0, + 265, + 20, + 35, + 63, + 13, + }, + { + ACTOR_OBJ_BANK_268, + ACTOR_OBJ_BANK_429, + &cKF_bs_r_lon_1, + { + lon_4_tmem_txt, + lon_4_pal, + { + lon_4_eye1_TA_tex_txt, + lon_4_eye2_TA_tex_txt, + lon_4_eye3_TA_tex_txt, + lon_4_eye4_TA_tex_txt, + lon_4_eye5_TA_tex_txt, + lon_4_eye6_TA_tex_txt, + lon_4_eye7_TA_tex_txt, + lon_4_eye8_TA_tex_txt, + }, + { + lon_4_mouth1_TA_tex_txt, + lon_4_mouth2_TA_tex_txt, + lon_4_mouth3_TA_tex_txt, + lon_4_mouth4_TA_tex_txt, + lon_4_mouth5_TA_tex_txt, + lon_4_mouth6_TA_tex_txt, + }, + 128, + 96, + 184, + }, + 0.01140000019222498, + 0, + 3, + 26, + 43, + 0, + 0, + 269, + 20, + 50, + 64, + 13, + }, + { + ACTOR_OBJ_BANK_291, + ACTOR_OBJ_BANK_430, + &cKF_bs_r_pgn_1, + { + pgn_8_tmem_txt, + pgn_8_pal, + { + pgn_8_eye1_TA_tex_txt, + pgn_8_eye2_TA_tex_txt, + pgn_8_eye3_TA_tex_txt, + pgn_8_eye4_TA_tex_txt, + pgn_8_eye5_TA_tex_txt, + pgn_8_eye6_TA_tex_txt, + pgn_8_eye7_TA_tex_txt, + pgn_8_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 144, + }, + 0.007499999832361937, + 1, + 7, + 24, + 31, + 0, + 0, + 271, + 20, + 40, + 54, + 13, + }, + { + ACTOR_OBJ_BANK_200, + ACTOR_OBJ_BANK_431, + &cKF_bs_r_elp_1, + { + elp_7_tmem_txt, + elp_7_pal, + { + elp_7_eye1_TA_tex_txt, + elp_7_eye2_TA_tex_txt, + elp_7_eye3_TA_tex_txt, + elp_7_eye4_TA_tex_txt, + elp_7_eye5_TA_tex_txt, + elp_7_eye6_TA_tex_txt, + elp_7_eye7_TA_tex_txt, + elp_7_eye8_TA_tex_txt, + }, + { + elp_7_mouth1_TA_tex_txt, + elp_7_mouth2_TA_tex_txt, + elp_7_mouth3_TA_tex_txt, + elp_7_mouth4_TA_tex_txt, + elp_7_mouth5_TA_tex_txt, + elp_7_mouth6_TA_tex_txt, + }, + 48, + 176, + 80, + }, + 0.009999999776482582, + 1, + 6, + 20, + 40, + 0, + 0, + 264, + 25, + 55, + 59, + 25, + }, + { + ACTOR_OBJ_BANK_113, + ACTOR_OBJ_BANK_432, + &cKF_bs_r_brd_1, + { + brd_11_tmem_txt, + brd_11_pal, + { + brd_11_eye1_TA_tex_txt, + brd_11_eye2_TA_tex_txt, + brd_11_eye3_TA_tex_txt, + brd_11_eye4_TA_tex_txt, + brd_11_eye5_TA_tex_txt, + brd_11_eye6_TA_tex_txt, + brd_11_eye7_TA_tex_txt, + brd_11_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 144, + }, + 0.009499999694526196, + 1, + 10, + 14, + 35, + 0, + 0, + 260, + 20, + 45, + 62, + 25, + }, + { + ACTOR_OBJ_BANK_362, + ACTOR_OBJ_BANK_433, + &cKF_bs_r_wol_1, + { + wol_6_tmem_txt, + wol_6_pal, + { + wol_6_eye1_TA_tex_txt, + wol_6_eye2_TA_tex_txt, + wol_6_eye3_TA_tex_txt, + wol_6_eye4_TA_tex_txt, + wol_6_eye5_TA_tex_txt, + wol_6_eye6_TA_tex_txt, + wol_6_eye7_TA_tex_txt, + wol_6_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 160, + }, + 0.009999999776482582, + 1, + 5, + 21, + 37, + 0, + 0, + 274, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_274, + ACTOR_OBJ_BANK_434, + &cKF_bs_r_mus_1, + { + mus_10_tmem_txt, + mus_10_pal, + { + mus_10_eye1_TA_tex_txt, + mus_10_eye2_TA_tex_txt, + mus_10_eye3_TA_tex_txt, + mus_10_eye4_TA_tex_txt, + mus_10_eye5_TA_tex_txt, + mus_10_eye6_TA_tex_txt, + mus_10_eye7_TA_tex_txt, + mus_10_eye8_TA_tex_txt, + }, + { + mus_10_mouth1_TA_tex_txt, + mus_10_mouth2_TA_tex_txt, + mus_10_mouth3_TA_tex_txt, + mus_10_mouth4_TA_tex_txt, + mus_10_mouth5_TA_tex_txt, + mus_10_mouth6_TA_tex_txt, + }, + 96, + 128, + 184, + }, + 0.005499999970197678, + 0, + 9, + 27, + 30, + 0, + 0, + 270, + 20, + 40, + 66, + 25, + }, + { + ACTOR_OBJ_BANK_243, + ACTOR_OBJ_BANK_435, + &cKF_bs_r_hrs_1, + { + hrs_8_tmem_txt, + hrs_8_pal, + { + hrs_8_eye1_TA_tex_txt, + hrs_8_eye2_TA_tex_txt, + hrs_8_eye3_TA_tex_txt, + hrs_8_eye4_TA_tex_txt, + hrs_8_eye5_TA_tex_txt, + hrs_8_eye6_TA_tex_txt, + hrs_8_eye7_TA_tex_txt, + hrs_8_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 184, + }, + 0.011500000022351742, + 1, + 7, + 9, + 43, + 0, + 0, + 267, + 23, + 50, + 65, + 25, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_436, + &cKF_bs_r_chn_1, + { + chn_9_tmem_txt, + chn_9_pal, + { + chn_9_eye1_TA_tex_txt, + chn_9_eye2_TA_tex_txt, + chn_9_eye3_TA_tex_txt, + chn_9_eye4_TA_tex_txt, + chn_9_eye5_TA_tex_txt, + chn_9_eye6_TA_tex_txt, + chn_9_eye7_TA_tex_txt, + chn_9_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 152, + }, + 0.009999999776482582, + 1, + 8, + 19, + 35, + 0, + 0, + 262, + 20, + 45, + 52, + 25, + }, + { + ACTOR_OBJ_BANK_262, + ACTOR_OBJ_BANK_437, + &cKF_bs_r_kal_1, + { + kal_6_tmem_txt, + kal_6_pal, + { + kal_6_eye1_TA_tex_txt, + kal_6_eye2_TA_tex_txt, + kal_6_eye3_TA_tex_txt, + kal_6_eye4_TA_tex_txt, + kal_6_eye5_TA_tex_txt, + kal_6_eye6_TA_tex_txt, + kal_6_eye7_TA_tex_txt, + kal_6_eye8_TA_tex_txt, + }, + { + kal_6_mouth1_TA_tex_txt, + kal_6_mouth2_TA_tex_txt, + kal_6_mouth3_TA_tex_txt, + kal_6_mouth4_TA_tex_txt, + kal_6_mouth5_TA_tex_txt, + kal_6_mouth6_TA_tex_txt, + }, + 0, + 32, + 192, + }, + 0.008500000461935997, + 0, + 5, + 18, + 34, + 0, + 0, + 268, + 20, + 40, + 57, + 25, + }, + { + ACTOR_OBJ_BANK_227, + ACTOR_OBJ_BANK_438, + &cKF_bs_r_gor_1, + { + gor_5_tmem_txt, + gor_5_pal, + { + gor_5_eye1_TA_tex_txt, + gor_5_eye2_TA_tex_txt, + gor_5_eye3_TA_tex_txt, + gor_5_eye4_TA_tex_txt, + gor_5_eye5_TA_tex_txt, + gor_5_eye6_TA_tex_txt, + gor_5_eye7_TA_tex_txt, + gor_5_eye8_TA_tex_txt, + }, + { + gor_5_mouth1_TA_tex_txt, + gor_5_mouth2_TA_tex_txt, + gor_5_mouth3_TA_tex_txt, + gor_5_mouth4_TA_tex_txt, + gor_5_mouth5_TA_tex_txt, + gor_5_mouth6_TA_tex_txt, + }, + 80, + 112, + 152, + }, + 0.009999999776482582, + 1, + 4, + 16, + 42, + 0, + 0, + 266, + 20, + 55, + 53, + 13, + }, + { + ACTOR_OBJ_BANK_356, + ACTOR_OBJ_BANK_439, + &cKF_bs_r_tig_1, + { + tig_4_tmem_txt, + tig_4_pal, + { + tig_4_eye1_TA_tex_txt, + tig_4_eye2_TA_tex_txt, + tig_4_eye3_TA_tex_txt, + tig_4_eye4_TA_tex_txt, + tig_4_eye5_TA_tex_txt, + tig_4_eye6_TA_tex_txt, + tig_4_eye7_TA_tex_txt, + tig_4_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 8, + 0, + 176, + }, + 0.011300000362098217, + 1, + 3, + 13, + 41, + 0, + 0, + 273, + 20, + 50, + 60, + 25, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_440, + &cKF_bs_r_cbr_1, + { + cbr_10_tmem_txt, + cbr_10_pal, + { + cbr_10_eye1_TA_tex_txt, + cbr_10_eye2_TA_tex_txt, + cbr_10_eye3_TA_tex_txt, + cbr_10_eye4_TA_tex_txt, + cbr_10_eye5_TA_tex_txt, + cbr_10_eye6_TA_tex_txt, + cbr_10_eye7_TA_tex_txt, + cbr_10_eye8_TA_tex_txt, + }, + { + cbr_10_mouth1_TA_tex_txt, + cbr_10_mouth2_TA_tex_txt, + cbr_10_mouth3_TA_tex_txt, + cbr_10_mouth4_TA_tex_txt, + cbr_10_mouth5_TA_tex_txt, + cbr_10_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 9, + 5, + 33, + 0, + 0, + 261, + 20, + 45, + 55, + 25, + }, + { + ACTOR_OBJ_BANK_157, + ACTOR_OBJ_BANK_441, + &cKF_bs_r_cbr_1, + { + cbr_11_tmem_txt, + cbr_11_pal, + { + cbr_11_eye1_TA_tex_txt, + cbr_11_eye2_TA_tex_txt, + cbr_11_eye3_TA_tex_txt, + cbr_11_eye4_TA_tex_txt, + cbr_11_eye5_TA_tex_txt, + cbr_11_eye6_TA_tex_txt, + cbr_11_eye7_TA_tex_txt, + cbr_11_eye8_TA_tex_txt, + }, + { + cbr_11_mouth1_TA_tex_txt, + cbr_11_mouth2_TA_tex_txt, + cbr_11_mouth3_TA_tex_txt, + cbr_11_mouth4_TA_tex_txt, + cbr_11_mouth5_TA_tex_txt, + cbr_11_mouth6_TA_tex_txt, + }, + 128, + 8, + 176, + }, + 0.006500000134110451, + 0, + 10, + 3, + 33, + 0, + 0, + 285, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_299, + ACTOR_OBJ_BANK_442, + &cKF_bs_r_pig_1, + { + pig_11_tmem_txt, + pig_11_pal, + { + pig_11_eye1_TA_tex_txt, + pig_11_eye2_TA_tex_txt, + pig_11_eye3_TA_tex_txt, + pig_11_eye4_TA_tex_txt, + pig_11_eye5_TA_tex_txt, + pig_11_eye6_TA_tex_txt, + pig_11_eye7_TA_tex_txt, + pig_11_eye8_TA_tex_txt, + }, + { + pig_11_mouth1_TA_tex_txt, + pig_11_mouth2_TA_tex_txt, + pig_11_mouth3_TA_tex_txt, + pig_11_mouth4_TA_tex_txt, + pig_11_mouth5_TA_tex_txt, + pig_11_mouth6_TA_tex_txt, + }, + 64, + 112, + 160, + }, + 0.009999999776482582, + 0, + 10, + 31, + 36, + 0, + 0, + 276, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_147, + &cKF_bs_r_cat_1, + { + cat_14_tmem_txt, + cat_14_pal, + { + cat_14_eye1_TA_tex_txt, + cat_14_eye2_TA_tex_txt, + cat_14_eye3_TA_tex_txt, + cat_14_eye4_TA_tex_txt, + cat_14_eye5_TA_tex_txt, + cat_14_eye6_TA_tex_txt, + cat_14_eye7_TA_tex_txt, + cat_14_eye8_TA_tex_txt, + }, + { + cat_14_mouth1_TA_tex_txt, + cat_14_mouth2_TA_tex_txt, + cat_14_mouth3_TA_tex_txt, + cat_14_mouth4_TA_tex_txt, + cat_14_mouth5_TA_tex_txt, + cat_14_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 13, + 17, + 33, + 0, + 0, + 277, + 20, + 40, + 67, + 25, + }, + { + ACTOR_OBJ_BANK_133, + ACTOR_OBJ_BANK_459, + &cKF_bs_r_cat_1, + { + cat_15_tmem_txt, + cat_15_pal, + { + cat_15_eye1_TA_tex_txt, + cat_15_eye2_TA_tex_txt, + cat_15_eye3_TA_tex_txt, + cat_15_eye4_TA_tex_txt, + cat_15_eye5_TA_tex_txt, + cat_15_eye6_TA_tex_txt, + cat_15_eye7_TA_tex_txt, + cat_15_eye8_TA_tex_txt, + }, + { + cat_15_mouth1_TA_tex_txt, + cat_15_mouth2_TA_tex_txt, + cat_15_mouth3_TA_tex_txt, + cat_15_mouth4_TA_tex_txt, + cat_15_mouth5_TA_tex_txt, + cat_15_mouth6_TA_tex_txt, + }, + 0, + 32, + 128, + }, + 0.008999999612569809, + 0, + 14, + 13, + 33, + 0, + 0, + 286, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_153, + &cKF_bs_r_chn_1, + { + chn_1_tmem_txt, + chn_1_pal, + { + chn_1_eye1_TA_tex_txt, + chn_1_eye2_TA_tex_txt, + chn_1_eye3_TA_tex_txt, + chn_1_eye4_TA_tex_txt, + chn_1_eye5_TA_tex_txt, + chn_1_eye6_TA_tex_txt, + chn_1_eye7_TA_tex_txt, + chn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 4, + 1, + 35, + 0, + 0, + 1, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_148, + ACTOR_OBJ_BANK_153, + &cKF_bs_r_chn_1, + { + chn_1_tmem_txt, + chn_1_pal, + { + chn_1_eye1_TA_tex_txt, + chn_1_eye2_TA_tex_txt, + chn_1_eye3_TA_tex_txt, + chn_1_eye4_TA_tex_txt, + chn_1_eye5_TA_tex_txt, + chn_1_eye6_TA_tex_txt, + chn_1_eye7_TA_tex_txt, + chn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.008999999612569809, + 1, + 4, + 0, + 40, + 0, + 0, + 1, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_94, + ACTOR_OBJ_BANK_95, + &cKF_bs_r_wls_1, + { + wls_1_tmem_txt, + wls_1_pal, + { + wls_1_eye1_TA_tex_txt, + wls_1_eye2_TA_tex_txt, + wls_1_eye3_TA_tex_txt, + wls_1_eye4_TA_tex_txt, + wls_1_eye5_TA_tex_txt, + wls_1_eye6_TA_tex_txt, + wls_1_eye7_TA_tex_txt, + wls_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 20, + 0, + 0, + }, + 0.012500000186264515, + 1, + 0, + 0, + 51, + 0, + 0, + 224, + 23, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_124, + ACTOR_OBJ_BANK_125, + &cKF_bs_r_fox_1, + { + fox_1_tmem_txt, + fox_1_pal, + { + fox_1_eye1_TA_tex_txt, + fox_1_eye2_TA_tex_txt, + fox_1_eye3_TA_tex_txt, + fox_1_eye4_TA_tex_txt, + fox_1_eye5_TA_tex_txt, + fox_1_eye6_TA_tex_txt, + fox_1_eye7_TA_tex_txt, + fox_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 36, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 36, + 0, + 0, + 223, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_180, + ACTOR_OBJ_BANK_181, + &cKF_bs_r_grf_1, + { + grf_1_tmem_txt, + grf_1_pal, + { + grf_1_eye1_TA_tex_txt, + grf_1_eye2_TA_tex_txt, + grf_1_eye3_TA_tex_txt, + grf_1_eye4_TA_tex_txt, + grf_1_eye5_TA_tex_txt, + grf_1_eye6_TA_tex_txt, + grf_1_eye7_TA_tex_txt, + grf_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 68, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 226, + 20, + 65, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_314, + ACTOR_OBJ_BANK_315, + &cKF_bs_r_pga_1, + { + pga_1_tmem_txt, + pga_1_pal, + { + pga_1_eye1_TA_tex_txt, + pga_1_eye2_TA_tex_txt, + pga_1_eye3_TA_tex_txt, + pga_1_eye4_TA_tex_txt, + pga_1_eye5_TA_tex_txt, + pga_1_eye6_TA_tex_txt, + pga_1_eye7_TA_tex_txt, + pga_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 80, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 36, + 0, + 0, + 234, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_232, + ACTOR_OBJ_BANK_233, + &cKF_bs_r_xct_1, + { + xct_1_tmem_txt, + xct_1_pal, + { + xct_1_eye1_TA_tex_txt, + xct_1_eye2_TA_tex_txt, + xct_1_eye3_TA_tex_txt, + xct_1_eye4_TA_tex_txt, + xct_1_eye5_TA_tex_txt, + xct_1_eye6_TA_tex_txt, + xct_1_eye7_TA_tex_txt, + xct_1_eye8_TA_tex_txt, + }, + { + xct_1_mouth1_TA_tex_txt, + xct_1_mouth2_TA_tex_txt, + xct_1_mouth3_TA_tex_txt, + xct_1_mouth4_TA_tex_txt, + xct_1_mouth5_TA_tex_txt, + xct_1_mouth6_TA_tex_txt, + }, + 32, + 96, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_232, + ACTOR_OBJ_BANK_233, + &cKF_bs_r_xct_1, + { + xct_1_tmem_txt, + xct_1_pal, + { + xct_1_eye1_TA_tex_txt, + xct_1_eye2_TA_tex_txt, + xct_1_eye3_TA_tex_txt, + xct_1_eye4_TA_tex_txt, + xct_1_eye5_TA_tex_txt, + xct_1_eye6_TA_tex_txt, + xct_1_eye7_TA_tex_txt, + xct_1_eye8_TA_tex_txt, + }, + { + xct_1_mouth1_TA_tex_txt, + xct_1_mouth2_TA_tex_txt, + xct_1_mouth3_TA_tex_txt, + xct_1_mouth4_TA_tex_txt, + xct_1_mouth5_TA_tex_txt, + xct_1_mouth6_TA_tex_txt, + }, + 32, + 96, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 31, + 0, + 0, + 0, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_131, + ACTOR_OBJ_BANK_132, + &cKF_bs_r_cml_1, + { + cml_1_tmem_txt, + cml_1_pal, + { + cml_1_eye1_TA_tex_txt, + cml_1_eye2_TA_tex_txt, + cml_1_eye3_TA_tex_txt, + cml_1_eye4_TA_tex_txt, + cml_1_eye5_TA_tex_txt, + cml_1_eye6_TA_tex_txt, + cml_1_eye7_TA_tex_txt, + cml_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 0, + }, + 0.01600000075995922, + 1, + 0, + 0, + 53, + 0, + 0, + 225, + 23, + 60, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_251, + ACTOR_OBJ_BANK_252, + &cKF_bs_r_boa_1, + { + boa_1_tmem_txt, + boa_1_pal, + { + boa_1_eye1_TA_tex_txt, + boa_1_eye2_TA_tex_txt, + boa_1_eye3_TA_tex_txt, + boa_1_eye4_TA_tex_txt, + boa_1_eye5_TA_tex_txt, + boa_1_eye6_TA_tex_txt, + boa_1_eye7_TA_tex_txt, + boa_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 46, + 0, + 0, + 227, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_339, + ACTOR_OBJ_BANK_340, + &cKF_bs_r_rcn_1, + { + rcn_1_tmem_txt, + rcn_1_pal, + { + rcn_1_eye1_TA_tex_txt, + rcn_1_eye2_TA_tex_txt, + rcn_1_eye3_TA_tex_txt, + rcn_1_eye4_TA_tex_txt, + rcn_1_eye5_TA_tex_txt, + rcn_1_eye6_TA_tex_txt, + rcn_1_eye7_TA_tex_txt, + rcn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 219, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_167, + ACTOR_OBJ_BANK_168, + &cKF_bs_r_rcc_1, + { + rcc_1_tmem_txt, + rcc_1_pal, + { + rcc_1_eye1_TA_tex_txt, + rcc_1_eye2_TA_tex_txt, + rcc_1_eye3_TA_tex_txt, + rcc_1_eye4_TA_tex_txt, + rcc_1_eye5_TA_tex_txt, + rcc_1_eye6_TA_tex_txt, + rcc_1_eye7_TA_tex_txt, + rcc_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 220, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_354, + ACTOR_OBJ_BANK_355, + &cKF_bs_r_rcs_1, + { + rcs_1_tmem_txt, + rcs_1_pal, + { + rcs_1_eye1_TA_tex_txt, + rcs_1_eye2_TA_tex_txt, + rcs_1_eye3_TA_tex_txt, + rcs_1_eye4_TA_tex_txt, + rcs_1_eye5_TA_tex_txt, + rcs_1_eye6_TA_tex_txt, + rcs_1_eye7_TA_tex_txt, + rcs_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 221, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_178, + ACTOR_OBJ_BANK_179, + &cKF_bs_r_rcd_1, + { + rcd_1_tmem_txt, + rcd_1_pal, + { + rcd_1_eye1_TA_tex_txt, + rcd_1_eye2_TA_tex_txt, + rcd_1_eye3_TA_tex_txt, + rcd_1_eye4_TA_tex_txt, + rcd_1_eye5_TA_tex_txt, + rcd_1_eye6_TA_tex_txt, + rcd_1_eye7_TA_tex_txt, + rcd_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 222, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_234, + ACTOR_OBJ_BANK_235, + &cKF_bs_r_bpt_1, + { + bpt_1_tmem_txt, + bpt_1_pal, + { + bpt_1_eye1_TA_tex_txt, + bpt_1_eye2_TA_tex_txt, + bpt_1_eye3_TA_tex_txt, + bpt_1_eye4_TA_tex_txt, + bpt_1_eye5_TA_tex_txt, + bpt_1_eye6_TA_tex_txt, + bpt_1_eye7_TA_tex_txt, + bpt_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 12, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 40, + 0, + 0, + 228, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_310, + ACTOR_OBJ_BANK_311, + &cKF_bs_r_plc_1, + { + plc_1_tmem_txt, + plc_1_pal, + { + plc_1_eye1_TA_tex_txt, + plc_1_eye2_TA_tex_txt, + plc_1_eye3_TA_tex_txt, + plc_1_eye4_TA_tex_txt, + plc_1_eye5_TA_tex_txt, + plc_1_eye6_TA_tex_txt, + plc_1_eye7_TA_tex_txt, + plc_1_eye8_TA_tex_txt, + }, + { + plc_1_mouth1_TA_tex_txt, + plc_1_mouth2_TA_tex_txt, + plc_1_mouth3_TA_tex_txt, + plc_1_mouth4_TA_tex_txt, + plc_1_mouth5_TA_tex_txt, + plc_1_mouth6_TA_tex_txt, + }, + 104, + 72, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 46, + 0, + 0, + 229, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_352, + ACTOR_OBJ_BANK_353, + &cKF_bs_r_mnk_1, + { + mnk_1_tmem_txt, + mnk_1_pal, + { + mnk_1_eye1_TA_tex_txt, + mnk_1_eye2_TA_tex_txt, + mnk_1_eye3_TA_tex_txt, + mnk_1_eye4_TA_tex_txt, + mnk_1_eye5_TA_tex_txt, + mnk_1_eye6_TA_tex_txt, + mnk_1_eye7_TA_tex_txt, + mnk_1_eye8_TA_tex_txt, + }, + { + mnk_1_mouth1_TA_tex_txt, + mnk_1_mouth2_TA_tex_txt, + mnk_1_mouth3_TA_tex_txt, + mnk_1_mouth4_TA_tex_txt, + mnk_1_mouth5_TA_tex_txt, + mnk_1_mouth6_TA_tex_txt, + }, + 40, + 0, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 35, + 0, + 0, + 230, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_335, + ACTOR_OBJ_BANK_336, + &cKF_bs_r_snt_1, + { + snt_1_tmem_txt, + snt_1_pal, + { + snt_1_eye1_TA_tex_txt, + snt_1_eye2_TA_tex_txt, + snt_1_eye3_TA_tex_txt, + snt_1_eye4_TA_tex_txt, + snt_1_eye5_TA_tex_txt, + snt_1_eye6_TA_tex_txt, + snt_1_eye7_TA_tex_txt, + snt_1_eye8_TA_tex_txt, + }, + { + snt_1_mouth1_TA_tex_txt, + snt_1_mouth2_TA_tex_txt, + snt_1_mouth3_TA_tex_txt, + snt_1_mouth4_TA_tex_txt, + snt_1_mouth5_TA_tex_txt, + snt_1_mouth6_TA_tex_txt, + }, + 8, + 44, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 46, + 0, + 0, + 232, + 25, + 55, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_312, + ACTOR_OBJ_BANK_313, + &cKF_bs_r_pla_1, + { + pla_1_tmem_txt, + pla_1_pal, + { + pla_1_eye1_TA_tex_txt, + pla_1_eye2_TA_tex_txt, + pla_1_eye3_TA_tex_txt, + pla_1_eye4_TA_tex_txt, + pla_1_eye5_TA_tex_txt, + pla_1_eye6_TA_tex_txt, + pla_1_eye7_TA_tex_txt, + pla_1_eye8_TA_tex_txt, + }, + { + pla_1_mouth1_TA_tex_txt, + pla_1_mouth2_TA_tex_txt, + pla_1_mouth3_TA_tex_txt, + pla_1_mouth4_TA_tex_txt, + pla_1_mouth5_TA_tex_txt, + pla_1_mouth6_TA_tex_txt, + }, + 104, + 44, + 0, + }, + 0.009499999694526196, + 0, + 0, + 0, + 43, + 0, + 0, + 239, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_318, + ACTOR_OBJ_BANK_319, + &cKF_bs_r_plb_1, + { + plb_1_tmem_txt, + plb_1_pal, + { + plb_1_eye1_TA_tex_txt, + plb_1_eye2_TA_tex_txt, + plb_1_eye3_TA_tex_txt, + plb_1_eye4_TA_tex_txt, + plb_1_eye5_TA_tex_txt, + plb_1_eye6_TA_tex_txt, + plb_1_eye7_TA_tex_txt, + plb_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 84, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 38, + 0, + 0, + 233, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_316, + ACTOR_OBJ_BANK_317, + &cKF_bs_r_pgb_1, + { + pgb_1_tmem_txt, + pgb_1_pal, + { + pgb_1_eye1_TA_tex_txt, + pgb_1_eye2_TA_tex_txt, + pgb_1_eye3_TA_tex_txt, + pgb_1_eye4_TA_tex_txt, + pgb_1_eye5_TA_tex_txt, + pgb_1_eye6_TA_tex_txt, + pgb_1_eye7_TA_tex_txt, + pgb_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 100, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 36, + 0, + 0, + 235, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_124, + ACTOR_OBJ_BANK_125, + &cKF_bs_r_fox_1, + { + fox_1_tmem_txt, + fox_1_pal, + { + fox_1_eye1_TA_tex_txt, + fox_1_eye2_TA_tex_txt, + fox_1_eye3_TA_tex_txt, + fox_1_eye4_TA_tex_txt, + fox_1_eye5_TA_tex_txt, + fox_1_eye6_TA_tex_txt, + fox_1_eye7_TA_tex_txt, + fox_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 36, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 36, + 0, + 0, + 223, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_339, + ACTOR_OBJ_BANK_340, + &cKF_bs_r_rcn_1, + { + rcn_1_tmem_txt, + rcn_1_pal, + { + rcn_1_eye1_TA_tex_txt, + rcn_1_eye2_TA_tex_txt, + rcn_1_eye3_TA_tex_txt, + rcn_1_eye4_TA_tex_txt, + rcn_1_eye5_TA_tex_txt, + rcn_1_eye6_TA_tex_txt, + rcn_1_eye7_TA_tex_txt, + rcn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 219, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_167, + ACTOR_OBJ_BANK_168, + &cKF_bs_r_rcc_1, + { + rcc_1_tmem_txt, + rcc_1_pal, + { + rcc_1_eye1_TA_tex_txt, + rcc_1_eye2_TA_tex_txt, + rcc_1_eye3_TA_tex_txt, + rcc_1_eye4_TA_tex_txt, + rcc_1_eye5_TA_tex_txt, + rcc_1_eye6_TA_tex_txt, + rcc_1_eye7_TA_tex_txt, + rcc_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 220, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_354, + ACTOR_OBJ_BANK_355, + &cKF_bs_r_rcs_1, + { + rcs_1_tmem_txt, + rcs_1_pal, + { + rcs_1_eye1_TA_tex_txt, + rcs_1_eye2_TA_tex_txt, + rcs_1_eye3_TA_tex_txt, + rcs_1_eye4_TA_tex_txt, + rcs_1_eye5_TA_tex_txt, + rcs_1_eye6_TA_tex_txt, + rcs_1_eye7_TA_tex_txt, + rcs_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 221, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_178, + ACTOR_OBJ_BANK_179, + &cKF_bs_r_rcd_1, + { + rcd_1_tmem_txt, + rcd_1_pal, + { + rcd_1_eye1_TA_tex_txt, + rcd_1_eye2_TA_tex_txt, + rcd_1_eye3_TA_tex_txt, + rcd_1_eye4_TA_tex_txt, + rcd_1_eye5_TA_tex_txt, + rcd_1_eye6_TA_tex_txt, + rcd_1_eye7_TA_tex_txt, + rcd_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 222, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 36, + 0, + 0, + 0, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_339, + ACTOR_OBJ_BANK_340, + &cKF_bs_r_rcn_1, + { + rcn_1_tmem_txt, + rcn_1_pal, + { + rcn_1_eye1_TA_tex_txt, + rcn_1_eye2_TA_tex_txt, + rcn_1_eye3_TA_tex_txt, + rcn_1_eye4_TA_tex_txt, + rcn_1_eye5_TA_tex_txt, + rcn_1_eye6_TA_tex_txt, + rcn_1_eye7_TA_tex_txt, + rcn_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 219, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_167, + ACTOR_OBJ_BANK_168, + &cKF_bs_r_rcc_1, + { + rcc_1_tmem_txt, + rcc_1_pal, + { + rcc_1_eye1_TA_tex_txt, + rcc_1_eye2_TA_tex_txt, + rcc_1_eye3_TA_tex_txt, + rcc_1_eye4_TA_tex_txt, + rcc_1_eye5_TA_tex_txt, + rcc_1_eye6_TA_tex_txt, + rcc_1_eye7_TA_tex_txt, + rcc_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 220, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_354, + ACTOR_OBJ_BANK_355, + &cKF_bs_r_rcs_1, + { + rcs_1_tmem_txt, + rcs_1_pal, + { + rcs_1_eye1_TA_tex_txt, + rcs_1_eye2_TA_tex_txt, + rcs_1_eye3_TA_tex_txt, + rcs_1_eye4_TA_tex_txt, + rcs_1_eye5_TA_tex_txt, + rcs_1_eye6_TA_tex_txt, + rcs_1_eye7_TA_tex_txt, + rcs_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 221, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_178, + ACTOR_OBJ_BANK_179, + &cKF_bs_r_rcd_1, + { + rcd_1_tmem_txt, + rcd_1_pal, + { + rcd_1_eye1_TA_tex_txt, + rcd_1_eye2_TA_tex_txt, + rcd_1_eye3_TA_tex_txt, + rcd_1_eye4_TA_tex_txt, + rcd_1_eye5_TA_tex_txt, + rcd_1_eye6_TA_tex_txt, + rcd_1_eye7_TA_tex_txt, + rcd_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 222, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_86, + ACTOR_OBJ_BANK_87, + &cKF_bs_r_bev_1, + { + bev_1_tmem_txt, + bev_1_pal, + { + bev_1_eye1_TA_tex_txt, + bev_1_eye2_TA_tex_txt, + bev_1_eye3_TA_tex_txt, + bev_1_eye4_TA_tex_txt, + bev_1_eye5_TA_tex_txt, + bev_1_eye6_TA_tex_txt, + bev_1_eye7_TA_tex_txt, + bev_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.008999999612569809, + 1, + 0, + 0, + 39, + 0, + 0, + 238, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_218, + ACTOR_OBJ_BANK_219, + &cKF_bs_r_rcf_1, + { + rcf_1_tmem_txt, + rcf_1_pal, + { + rcf_1_eye1_TA_tex_txt, + rcf_1_eye2_TA_tex_txt, + rcf_1_eye3_TA_tex_txt, + rcf_1_eye4_TA_tex_txt, + rcf_1_eye5_TA_tex_txt, + rcf_1_eye6_TA_tex_txt, + rcf_1_eye7_TA_tex_txt, + rcf_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 241, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 0, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 35, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_272, + ACTOR_OBJ_BANK_273, + &cKF_bs_r_lrc_1, + { + lrc_1_tmem_txt, + lrc_1_pal, + { + lrc_1_eye1_TA_tex_txt, + lrc_1_eye2_TA_tex_txt, + lrc_1_eye3_TA_tex_txt, + lrc_1_eye4_TA_tex_txt, + lrc_1_eye5_TA_tex_txt, + lrc_1_eye6_TA_tex_txt, + lrc_1_eye7_TA_tex_txt, + lrc_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 30, + 0, + 0, + 240, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_260, + ACTOR_OBJ_BANK_261, + &cKF_bs_r_fob_1, + { + fob_1_tmem_txt, + fob_1_pal, + { + fob_1_eye1_TA_tex_txt, + fob_1_eye2_TA_tex_txt, + fob_1_eye3_TA_tex_txt, + fob_1_eye4_TA_tex_txt, + fob_1_eye5_TA_tex_txt, + fob_1_eye6_TA_tex_txt, + fob_1_eye7_TA_tex_txt, + fob_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 24, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 36, + 0, + 0, + 242, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_272, + ACTOR_OBJ_BANK_273, + &cKF_bs_r_lrc_1, + { + lrc_1_tmem_txt, + lrc_1_pal, + { + lrc_1_eye1_TA_tex_txt, + lrc_1_eye2_TA_tex_txt, + lrc_1_eye3_TA_tex_txt, + lrc_1_eye4_TA_tex_txt, + lrc_1_eye5_TA_tex_txt, + lrc_1_eye6_TA_tex_txt, + lrc_1_eye7_TA_tex_txt, + lrc_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 30, + 0, + 0, + 0, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_341, + ACTOR_OBJ_BANK_342, + &cKF_bs_r_kab_1, + { + kab_1_tmem_txt, + kab_1_pal, + { + kab_1_eye1_TA_tex_txt, + kab_1_eye2_TA_tex_txt, + kab_1_eye3_TA_tex_txt, + kab_1_eye4_TA_tex_txt, + kab_1_eye5_TA_tex_txt, + kab_1_eye6_TA_tex_txt, + kab_1_eye7_TA_tex_txt, + kab_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 32, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 43, + 0, + 0, + 227, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_260, + ACTOR_OBJ_BANK_261, + &cKF_bs_r_fob_1, + { + fob_1_tmem_txt, + fob_1_pal, + { + fob_1_eye1_TA_tex_txt, + fob_1_eye2_TA_tex_txt, + fob_1_eye3_TA_tex_txt, + fob_1_eye4_TA_tex_txt, + fob_1_eye5_TA_tex_txt, + fob_1_eye6_TA_tex_txt, + fob_1_eye7_TA_tex_txt, + fob_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 24, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 36, + 0, + 0, + 242, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_218, + ACTOR_OBJ_BANK_219, + &cKF_bs_r_rcf_1, + { + rcf_1_tmem_txt, + rcf_1_pal, + { + rcf_1_eye1_TA_tex_txt, + rcf_1_eye2_TA_tex_txt, + rcf_1_eye3_TA_tex_txt, + rcf_1_eye4_TA_tex_txt, + rcf_1_eye5_TA_tex_txt, + rcf_1_eye6_TA_tex_txt, + rcf_1_eye7_TA_tex_txt, + rcf_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 241, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_218, + ACTOR_OBJ_BANK_219, + &cKF_bs_r_rcf_1, + { + rcf_1_tmem_txt, + rcf_1_pal, + { + rcf_1_eye1_TA_tex_txt, + rcf_1_eye2_TA_tex_txt, + rcf_1_eye3_TA_tex_txt, + rcf_1_eye4_TA_tex_txt, + rcf_1_eye5_TA_tex_txt, + rcf_1_eye6_TA_tex_txt, + rcf_1_eye7_TA_tex_txt, + rcf_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 241, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_218, + ACTOR_OBJ_BANK_219, + &cKF_bs_r_rcf_1, + { + rcf_1_tmem_txt, + rcf_1_pal, + { + rcf_1_eye1_TA_tex_txt, + rcf_1_eye2_TA_tex_txt, + rcf_1_eye3_TA_tex_txt, + rcf_1_eye4_TA_tex_txt, + rcf_1_eye5_TA_tex_txt, + rcf_1_eye6_TA_tex_txt, + rcf_1_eye7_TA_tex_txt, + rcf_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 16, + 0, + 0, + }, + 0.010999999940395355, + 1, + 0, + 0, + 35, + 0, + 0, + 241, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_234, + ACTOR_OBJ_BANK_235, + &cKF_bs_r_bpt_1, + { + bpt_1_tmem_txt, + bpt_1_pal, + { + bpt_1_eye1_TA_tex_txt, + bpt_1_eye2_TA_tex_txt, + bpt_1_eye3_TA_tex_txt, + bpt_1_eye4_TA_tex_txt, + bpt_1_eye5_TA_tex_txt, + bpt_1_eye6_TA_tex_txt, + bpt_1_eye7_TA_tex_txt, + bpt_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 12, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 40, + 0, + 0, + 243, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_398, + ACTOR_OBJ_BANK_399, + &cKF_bs_r_plj_1, + { + plj_1_tmem_txt, + plj_1_pal, + { + plj_1_eye1_TA_tex_txt, + plj_1_eye2_TA_tex_txt, + plj_1_eye3_TA_tex_txt, + plj_1_eye4_TA_tex_txt, + plj_1_eye5_TA_tex_txt, + plj_1_eye6_TA_tex_txt, + plj_1_eye7_TA_tex_txt, + plj_1_eye8_TA_tex_txt, + }, + { + plj_1_mouth1_TA_tex_txt, + plj_1_mouth2_TA_tex_txt, + plj_1_mouth3_TA_tex_txt, + plj_1_mouth4_TA_tex_txt, + plj_1_mouth5_TA_tex_txt, + plj_1_mouth6_TA_tex_txt, + }, + 84, + 52, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 46, + 0, + 0, + 246, + 25, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 36, + 0, + 0, + 237, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_396, + ACTOR_OBJ_BANK_397, + &cKF_bs_r_seg_1, + { + seg_1_tmem_txt, + seg_1_pal, + { + seg_1_eye1_TA_tex_txt, + seg_1_eye2_TA_tex_txt, + seg_1_eye3_TA_tex_txt, + seg_1_eye4_TA_tex_txt, + seg_1_eye5_TA_tex_txt, + seg_1_eye6_TA_tex_txt, + seg_1_eye7_TA_tex_txt, + seg_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 39, + 0, + 0, + 247, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 245, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 36, + 0, + 0, + 0, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_352, + ACTOR_OBJ_BANK_353, + &cKF_bs_r_mnk_1, + { + mnk_1_tmem_txt, + mnk_1_pal, + { + mnk_1_eye1_TA_tex_txt, + mnk_1_eye2_TA_tex_txt, + mnk_1_eye3_TA_tex_txt, + mnk_1_eye4_TA_tex_txt, + mnk_1_eye5_TA_tex_txt, + mnk_1_eye6_TA_tex_txt, + mnk_1_eye7_TA_tex_txt, + mnk_1_eye8_TA_tex_txt, + }, + { + mnk_1_mouth1_TA_tex_txt, + mnk_1_mouth2_TA_tex_txt, + mnk_1_mouth3_TA_tex_txt, + mnk_1_mouth4_TA_tex_txt, + mnk_1_mouth5_TA_tex_txt, + mnk_1_mouth6_TA_tex_txt, + }, + 40, + 0, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 35, + 0, + 0, + 230, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 245, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 245, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 0, + 20, + 40, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 245, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_422, + ACTOR_OBJ_BANK_423, + &cKF_bs_r_xsq_1, + { + xsq_1_tmem_txt, + xsq_1_pal, + { + xsq_1_eye1_TA_tex_txt, + xsq_1_eye2_TA_tex_txt, + xsq_1_eye3_TA_tex_txt, + xsq_1_eye4_TA_tex_txt, + xsq_1_eye5_TA_tex_txt, + xsq_1_eye6_TA_tex_txt, + xsq_1_eye7_TA_tex_txt, + xsq_1_eye8_TA_tex_txt, + }, + { + xsq_1_mouth1_TA_tex_txt, + xsq_1_mouth2_TA_tex_txt, + xsq_1_mouth3_TA_tex_txt, + xsq_1_mouth4_TA_tex_txt, + xsq_1_mouth5_TA_tex_txt, + xsq_1_mouth6_TA_tex_txt, + }, + 72, + 104, + 0, + }, + 0.006800000090152025, + 0, + 0, + 0, + 26, + 0, + 0, + 49, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_401, + ACTOR_OBJ_BANK_402, + &cKF_bs_r_owl_1, + { + owl_1_tmem_txt, + owl_1_pal, + { + owl_1_eye1_TA_tex_txt, + owl_1_eye2_TA_tex_txt, + owl_1_eye3_TA_tex_txt, + owl_1_eye4_TA_tex_txt, + owl_1_eye5_TA_tex_txt, + owl_1_eye6_TA_tex_txt, + owl_1_eye7_TA_tex_txt, + owl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 40, + 0, + 0, + }, + 0.009499999694526196, + 1, + 0, + 0, + 40, + 0, + 0, + 280, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + &cKF_bs_r_ttl_1, + { + ttl_1_tmem_txt, + ttl_1_pal, + { + ttl_1_eye1_TA_tex_txt, + ttl_1_eye2_TA_tex_txt, + ttl_1_eye3_TA_tex_txt, + ttl_1_eye4_TA_tex_txt, + ttl_1_eye5_TA_tex_txt, + ttl_1_eye6_TA_tex_txt, + ttl_1_eye7_TA_tex_txt, + ttl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 281, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_10, + ACTOR_OBJ_BANK_393, + &cKF_bs_r_gst_1, + { + gst_1_tmem_txt, + gst_1_pal, + { + gst_1_eye1_TA_tex_txt, + gst_1_eye2_TA_tex_txt, + gst_1_eye3_TA_tex_txt, + gst_1_eye4_TA_tex_txt, + gst_1_eye5_TA_tex_txt, + gst_1_eye6_TA_tex_txt, + gst_1_eye7_TA_tex_txt, + gst_1_eye8_TA_tex_txt, + }, + { + gst_1_mouth1_TA_tex_txt, + gst_1_mouth2_TA_tex_txt, + gst_1_mouth3_TA_tex_txt, + gst_1_mouth4_TA_tex_txt, + gst_1_mouth5_TA_tex_txt, + gst_1_mouth6_TA_tex_txt, + }, + 32, + 0, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 40, + 0, + 0, + 249, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_416, + ACTOR_OBJ_BANK_417, + &cKF_bs_r_hgh_1, + { + hgh_1_tmem_txt, + hgh_1_pal, + { + hgh_1_eye1_TA_tex_txt, + hgh_1_eye2_TA_tex_txt, + hgh_1_eye3_TA_tex_txt, + hgh_1_eye4_TA_tex_txt, + hgh_1_eye5_TA_tex_txt, + hgh_1_eye6_TA_tex_txt, + hgh_1_eye7_TA_tex_txt, + hgh_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 278, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_418, + ACTOR_OBJ_BANK_419, + &cKF_bs_r_hgs_1, + { + hgs_1_tmem_txt, + hgs_1_pal, + { + hgs_1_eye1_TA_tex_txt, + hgs_1_eye2_TA_tex_txt, + hgs_1_eye3_TA_tex_txt, + hgs_1_eye4_TA_tex_txt, + hgs_1_eye5_TA_tex_txt, + hgs_1_eye6_TA_tex_txt, + hgs_1_eye7_TA_tex_txt, + hgs_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 279, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_414, + ACTOR_OBJ_BANK_415, + &cKF_bs_r_wip_1, + { + wip_1_tmem_txt, + wip_1_pal, + { + wip_1_eye1_TA_tex_txt, + wip_1_eye2_TA_tex_txt, + wip_1_eye3_TA_tex_txt, + wip_1_eye4_TA_tex_txt, + wip_1_eye5_TA_tex_txt, + wip_1_eye6_TA_tex_txt, + wip_1_eye7_TA_tex_txt, + wip_1_eye8_TA_tex_txt, + }, + { + wip_1_mouth1_TA_tex_txt, + wip_1_mouth2_TA_tex_txt, + wip_1_mouth3_TA_tex_txt, + wip_1_mouth4_TA_tex_txt, + wip_1_mouth5_TA_tex_txt, + wip_1_mouth6_TA_tex_txt, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 40, + 0, + 0, + 282, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + &cKF_bs_r_ttl_1, + { + ttl_1_tmem_txt, + ttl_1_pal, + { + ttl_1_eye1_TA_tex_txt, + ttl_1_eye2_TA_tex_txt, + ttl_1_eye3_TA_tex_txt, + ttl_1_eye4_TA_tex_txt, + ttl_1_eye5_TA_tex_txt, + ttl_1_eye6_TA_tex_txt, + ttl_1_eye7_TA_tex_txt, + ttl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 281, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_424, + ACTOR_OBJ_BANK_425, + &cKF_bs_r_mka_1, + { + mka_1_tmem_txt, + mka_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 40, + 0, + 0, + 284, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_424, + ACTOR_OBJ_BANK_425, + &cKF_bs_r_mka_1, + { + mka_1_tmem_txt, + mka_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 40, + 0, + 0, + 284, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + &cKF_bs_r_ttl_1, + { + ttl_1_tmem_txt, + ttl_1_pal, + { + ttl_1_eye1_TA_tex_txt, + ttl_1_eye2_TA_tex_txt, + ttl_1_eye3_TA_tex_txt, + ttl_1_eye4_TA_tex_txt, + ttl_1_eye5_TA_tex_txt, + ttl_1_eye6_TA_tex_txt, + ttl_1_eye7_TA_tex_txt, + ttl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 281, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_236, + ACTOR_OBJ_BANK_237, + &cKF_bs_r_pkn_1, + { + pkn_1_tmem_txt, + pkn_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 0, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 231, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_352, + ACTOR_OBJ_BANK_353, + &cKF_bs_r_mnk_1, + { + mnk_1_tmem_txt, + mnk_1_pal, + { + mnk_1_eye1_TA_tex_txt, + mnk_1_eye2_TA_tex_txt, + mnk_1_eye3_TA_tex_txt, + mnk_1_eye4_TA_tex_txt, + mnk_1_eye5_TA_tex_txt, + mnk_1_eye6_TA_tex_txt, + mnk_1_eye7_TA_tex_txt, + mnk_1_eye8_TA_tex_txt, + }, + { + mnk_1_mouth1_TA_tex_txt, + mnk_1_mouth2_TA_tex_txt, + mnk_1_mouth3_TA_tex_txt, + mnk_1_mouth4_TA_tex_txt, + mnk_1_mouth5_TA_tex_txt, + mnk_1_mouth6_TA_tex_txt, + }, + 40, + 0, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 35, + 0, + 0, + 230, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_396, + ACTOR_OBJ_BANK_397, + &cKF_bs_r_seg_1, + { + seg_1_tmem_txt, + seg_1_pal, + { + seg_1_eye1_TA_tex_txt, + seg_1_eye2_TA_tex_txt, + seg_1_eye3_TA_tex_txt, + seg_1_eye4_TA_tex_txt, + seg_1_eye5_TA_tex_txt, + seg_1_eye6_TA_tex_txt, + seg_1_eye7_TA_tex_txt, + seg_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 48, + 0, + 0, + }, + 0.00800000037997961, + 1, + 0, + 0, + 39, + 0, + 0, + 247, + 23, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_460, + ACTOR_OBJ_BANK_461, + &cKF_bs_r_mob_1, + { + mob_1_tmem_txt, + mob_1_pal, + { + mob_1_eye1_TA_tex_txt, + mob_1_eye2_TA_tex_txt, + mob_1_eye3_TA_tex_txt, + mob_1_eye4_TA_tex_txt, + mob_1_eye5_TA_tex_txt, + mob_1_eye6_TA_tex_txt, + mob_1_eye7_TA_tex_txt, + mob_1_eye8_TA_tex_txt, + }, + { + mob_1_mouth1_TA_tex_txt, + mob_1_mouth2_TA_tex_txt, + mob_1_mouth3_TA_tex_txt, + mob_1_mouth4_TA_tex_txt, + mob_1_mouth5_TA_tex_txt, + mob_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + &cKF_bs_r_ttl_1, + { + ttl_1_tmem_txt, + ttl_1_pal, + { + ttl_1_eye1_TA_tex_txt, + ttl_1_eye2_TA_tex_txt, + ttl_1_eye3_TA_tex_txt, + ttl_1_eye4_TA_tex_txt, + ttl_1_eye5_TA_tex_txt, + ttl_1_eye6_TA_tex_txt, + ttl_1_eye7_TA_tex_txt, + ttl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 281, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_49, + ACTOR_OBJ_BANK_50, + &cKF_bs_r_mol_1, + { + mol_1_tmem_txt, + mol_1_pal, + { + mol_1_eye1_TA_tex_txt, + mol_1_eye2_TA_tex_txt, + mol_1_eye3_TA_tex_txt, + mol_1_eye4_TA_tex_txt, + mol_1_eye5_TA_tex_txt, + mol_1_eye6_TA_tex_txt, + mol_1_eye7_TA_tex_txt, + mol_1_eye8_TA_tex_txt, + }, + { + mol_1_mouth1_TA_tex_txt, + mol_1_mouth2_TA_tex_txt, + mol_1_mouth3_TA_tex_txt, + mol_1_mouth4_TA_tex_txt, + mol_1_mouth5_TA_tex_txt, + mol_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.008999999612569809, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_462, + ACTOR_OBJ_BANK_463, + &cKF_bs_r_mos_1, + { + mos_1_tmem_txt, + mos_1_pal, + { + mos_1_eye1_TA_tex_txt, + mos_1_eye2_TA_tex_txt, + mos_1_eye3_TA_tex_txt, + mos_1_eye4_TA_tex_txt, + mos_1_eye5_TA_tex_txt, + mos_1_eye6_TA_tex_txt, + mos_1_eye7_TA_tex_txt, + mos_1_eye8_TA_tex_txt, + }, + { + mos_1_mouth1_TA_tex_txt, + mos_1_mouth2_TA_tex_txt, + mos_1_mouth3_TA_tex_txt, + mos_1_mouth4_TA_tex_txt, + mos_1_mouth5_TA_tex_txt, + mos_1_mouth6_TA_tex_txt, + }, + 64, + 104, + 0, + }, + 0.009999999776482582, + 0, + 0, + 0, + 34, + 0, + 0, + 244, + 20, + 35, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_403, + ACTOR_OBJ_BANK_404, + &cKF_bs_r_ttl_1, + { + ttl_1_tmem_txt, + ttl_1_pal, + { + ttl_1_eye1_TA_tex_txt, + ttl_1_eye2_TA_tex_txt, + ttl_1_eye3_TA_tex_txt, + ttl_1_eye4_TA_tex_txt, + ttl_1_eye5_TA_tex_txt, + ttl_1_eye6_TA_tex_txt, + ttl_1_eye7_TA_tex_txt, + ttl_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.009999999776482582, + 1, + 0, + 0, + 40, + 0, + 0, + 281, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_464, + ACTOR_OBJ_BANK_465, + &cKF_bs_r_tuk_1, + { + tuk_1_tmem_txt, + tuk_1_pal, + { + tuk_1_eye1_TA_tex_txt, + tuk_1_eye2_TA_tex_txt, + tuk_1_eye3_TA_tex_txt, + tuk_1_eye4_TA_tex_txt, + tuk_1_eye5_TA_tex_txt, + tuk_1_eye6_TA_tex_txt, + tuk_1_eye7_TA_tex_txt, + tuk_1_eye8_TA_tex_txt, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 84, + 0, + 0, + }, + 0.012000000104308128, + 1, + 0, + 0, + 38, + 0, + 0, + 233, + 20, + 45, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_466, + ACTOR_OBJ_BANK_467, + &cKF_bs_r_hem_1, + { + hem_1_tmem_txt, + hem_1_pal, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }, + 88, + 0, + 0, + }, + 0.007000000216066837, + 0, + 0, + 0, + 40, + 0, + 0, + 284, + 20, + 50, + -1, + -1, + }, + { + ACTOR_OBJ_BANK_360, + ACTOR_OBJ_BANK_361, + &cKF_bs_r_end_1, + { + end_1_tmem_txt, + end_1_pal, + { + end_1_eye1_TA_tex_txt, + end_1_eye2_TA_tex_txt, + end_1_eye3_TA_tex_txt, + end_1_eye4_TA_tex_txt, + end_1_eye5_TA_tex_txt, + end_1_eye6_TA_tex_txt, + end_1_eye7_TA_tex_txt, + end_1_eye8_TA_tex_txt, + }, + { + end_1_mouth1_TA_tex_txt, + end_1_mouth2_TA_tex_txt, + end_1_mouth3_TA_tex_txt, + end_1_mouth4_TA_tex_txt, + end_1_mouth5_TA_tex_txt, + end_1_mouth6_TA_tex_txt, + }, + 0, + 32, + 0, + }, + 0.010999999940395355, + 0, + 0, + 0, + 40, + 0, + 0, + 237, + 20, + 30, + -1, + -1, + }, +}; diff --git a/src/data/player/BOY_part_data.c b/src/data/player/BOY_part_data.c new file mode 100644 index 00000000..ca9af8ad --- /dev/null +++ b/src/data/player/BOY_part_data.c @@ -0,0 +1,164 @@ +#include "types.h" +#include "m_player.h" + +/* + * These tables dictate which animation will play for a given joint. + * The player has two main animation states. 0 uses PLAYER_ACTOR::keyframe0, + * and 1 uses PLAYER_ACTOR::keyframe1. This is essentially a barebones + * animation overlay system. + */ + +// clang-format off +s8 BOY_part_data[][mPlayer_JOINT_NUM + 1] = { + /* Normal */ + { + 0, /* Base translation */ + 0, /* mPlayer_JOINT_ROOT */ + 0, /* mPlayer_JOINT_BASE */ + 0, /* mPlayer_JOINT_LFOOT_BASE */ + 0, /* mPlayer_JOINT_LFOOT1 */ + 0, /* mPlayer_JOINT_LFOOT2 */ + 0, /* mPlayer_JOINT_LFOOT3 */ + 0, /* mPlayer_JOINT_RFOOT_BASE */ + 0, /* mPlayer_JOINT_RFOOT1 */ + 0, /* mPlayer_JOINT_RFOOT2 */ + 0, /* mPlayer_JOINT_RFOOT3 */ + 0, /* mPlayer_JOINT_TAIL_BASE */ + 0, /* mPlayer_JOINT_TAIL1 */ + 0, /* mPlayer_JOINT_TAIL2 */ + 0, /* mPlayer_JOINT_CHEST */ + 0, /* mPlayer_JOINT_LARM_BASE */ + 0, /* mPlayer_JOINT_LARM1 */ + 0, /* mPlayer_JOINT_LARM2 */ + 0, /* mPlayer_JOINT_RARM_BASE */ + 0, /* mPlayer_JOINT_RARM1 */ + 0, /* mPlayer_JOINT_RARM2 */ + 0, /* mPlayer_JOINT_HAND */ + 0, /* mPlayer_JOINT_HEAD_BASE */ + 0, /* mPlayer_JOINT_MOUTH_BASE */ + 0, /* mPlayer_JOINT_MOUTH */ + 0, /* mPlayer_JOINT_HEAD */ + 0, /* mPlayer_JOINT_FEEL */ + }, + /* Axe */ + { + 0, /* Base translation */ + 0, /* mPlayer_JOINT_ROOT */ + 0, /* mPlayer_JOINT_BASE */ + 0, /* mPlayer_JOINT_LFOOT_BASE */ + 0, /* mPlayer_JOINT_LFOOT1 */ + 0, /* mPlayer_JOINT_LFOOT2 */ + 0, /* mPlayer_JOINT_LFOOT3 */ + 0, /* mPlayer_JOINT_RFOOT_BASE */ + 0, /* mPlayer_JOINT_RFOOT1 */ + 0, /* mPlayer_JOINT_RFOOT2 */ + 0, /* mPlayer_JOINT_RFOOT3 */ + 0, /* mPlayer_JOINT_TAIL_BASE */ + 0, /* mPlayer_JOINT_TAIL1 */ + 0, /* mPlayer_JOINT_TAIL2 */ + 0, /* mPlayer_JOINT_CHEST */ + 1, /* mPlayer_JOINT_LARM_BASE */ + 1, /* mPlayer_JOINT_LARM1 */ + 1, /* mPlayer_JOINT_LARM2 */ + 1, /* mPlayer_JOINT_RARM_BASE */ + 1, /* mPlayer_JOINT_RARM1 */ + 1, /* mPlayer_JOINT_RARM2 */ + 1, /* mPlayer_JOINT_HAND */ + 0, /* mPlayer_JOINT_HEAD_BASE */ + 0, /* mPlayer_JOINT_MOUTH_BASE */ + 0, /* mPlayer_JOINT_MOUTH */ + 0, /* mPlayer_JOINT_HEAD */ + 0, /* mPlayer_JOINT_FEEL */ + }, + /* Pickup */ + { + 0, /* Base translation */ + 0, /* mPlayer_JOINT_ROOT */ + 0, /* mPlayer_JOINT_BASE */ + 0, /* mPlayer_JOINT_LFOOT_BASE */ + 0, /* mPlayer_JOINT_LFOOT1 */ + 0, /* mPlayer_JOINT_LFOOT2 */ + 0, /* mPlayer_JOINT_LFOOT3 */ + 0, /* mPlayer_JOINT_RFOOT_BASE */ + 0, /* mPlayer_JOINT_RFOOT1 */ + 0, /* mPlayer_JOINT_RFOOT2 */ + 0, /* mPlayer_JOINT_RFOOT3 */ + 0, /* mPlayer_JOINT_TAIL_BASE */ + 0, /* mPlayer_JOINT_TAIL1 */ + 0, /* mPlayer_JOINT_TAIL2 */ + 0, /* mPlayer_JOINT_CHEST */ + 0, /* mPlayer_JOINT_LARM_BASE */ + 0, /* mPlayer_JOINT_LARM1 */ + 0, /* mPlayer_JOINT_LARM2 */ + 1, /* mPlayer_JOINT_RARM_BASE */ + 1, /* mPlayer_JOINT_RARM1 */ + 1, /* mPlayer_JOINT_RARM2 */ + 1, /* mPlayer_JOINT_HAND */ + 0, /* mPlayer_JOINT_HEAD_BASE */ + 0, /* mPlayer_JOINT_MOUTH_BASE */ + 0, /* mPlayer_JOINT_MOUTH */ + 0, /* mPlayer_JOINT_HEAD */ + 0, /* mPlayer_JOINT_FEEL */ + }, + /* Net */ + { + 0, /* Base translation */ + 0, /* mPlayer_JOINT_ROOT */ + 0, /* mPlayer_JOINT_BASE */ + 0, /* mPlayer_JOINT_LFOOT_BASE */ + 0, /* mPlayer_JOINT_LFOOT1 */ + 0, /* mPlayer_JOINT_LFOOT2 */ + 0, /* mPlayer_JOINT_LFOOT3 */ + 0, /* mPlayer_JOINT_RFOOT_BASE */ + 0, /* mPlayer_JOINT_RFOOT1 */ + 0, /* mPlayer_JOINT_RFOOT2 */ + 0, /* mPlayer_JOINT_RFOOT3 */ + 0, /* mPlayer_JOINT_TAIL_BASE */ + 0, /* mPlayer_JOINT_TAIL1 */ + 0, /* mPlayer_JOINT_TAIL2 */ + 0, /* mPlayer_JOINT_CHEST */ + 0, /* mPlayer_JOINT_LARM_BASE */ + 0, /* mPlayer_JOINT_LARM1 */ + 0, /* mPlayer_JOINT_LARM2 */ + 1, /* mPlayer_JOINT_RARM_BASE */ + 1, /* mPlayer_JOINT_RARM1 */ + 1, /* mPlayer_JOINT_RARM2 */ + 1, /* mPlayer_JOINT_HAND */ + 0, /* mPlayer_JOINT_HEAD_BASE */ + 0, /* mPlayer_JOINT_MOUTH_BASE */ + 0, /* mPlayer_JOINT_MOUTH */ + 0, /* mPlayer_JOINT_HEAD */ + 0, /* mPlayer_JOINT_FEEL */ + }, + /* Fan */ + { + 1, /* Base translation */ + 1, /* mPlayer_JOINT_ROOT */ + 1, /* mPlayer_JOINT_BASE */ + 1, /* mPlayer_JOINT_LFOOT_BASE */ + 1, /* mPlayer_JOINT_LFOOT1 */ + 1, /* mPlayer_JOINT_LFOOT2 */ + 1, /* mPlayer_JOINT_LFOOT3 */ + 1, /* mPlayer_JOINT_RFOOT_BASE */ + 1, /* mPlayer_JOINT_RFOOT1 */ + 1, /* mPlayer_JOINT_RFOOT2 */ + 1, /* mPlayer_JOINT_RFOOT3 */ + 1, /* mPlayer_JOINT_TAIL_BASE */ + 1, /* mPlayer_JOINT_TAIL1 */ + 1, /* mPlayer_JOINT_TAIL2 */ + 1, /* mPlayer_JOINT_CHEST */ + 1, /* mPlayer_JOINT_LARM_BASE */ + 1, /* mPlayer_JOINT_LARM1 */ + 1, /* mPlayer_JOINT_LARM2 */ + 0, /* mPlayer_JOINT_RARM_BASE */ + 0, /* mPlayer_JOINT_RARM1 */ + 0, /* mPlayer_JOINT_RARM2 */ + 0, /* mPlayer_JOINT_HAND */ + 0, /* mPlayer_JOINT_HEAD_BASE */ + 1, /* mPlayer_JOINT_MOUTH_BASE */ + 1, /* mPlayer_JOINT_MOUTH */ + 1, /* mPlayer_JOINT_HEAD */ + 1, /* mPlayer_JOINT_FEEL */ + }, +}; +// clang-format on diff --git a/src/data/scene/BG_TEST01.c b/src/data/scene/BG_TEST01.c new file mode 100644 index 00000000..d020614f --- /dev/null +++ b/src/data/scene/BG_TEST01.c @@ -0,0 +1,36 @@ +#include "m_scene.h" + +extern Actor_data BG_TEST01_player_data[]; +extern s16 BG_TEST01_ctrl_actor_data[]; + +extern Scene_Word_u BG_TEST01_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(BG_TEST01_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(11, BG_TEST01_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data BG_TEST01_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 BG_TEST01_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC, // 1 + mAc_PROFILE_STRUCTURE, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 +}; diff --git a/src/data/scene/BG_TEST01_XLU.c b/src/data/scene/BG_TEST01_XLU.c new file mode 100644 index 00000000..3970d488 --- /dev/null +++ b/src/data/scene/BG_TEST01_XLU.c @@ -0,0 +1,36 @@ +#include "m_scene.h" + +extern Actor_data BG_TEST01_XLU_player_data[]; +extern s16 BG_TEST01_XLU_ctrl_actor_data[]; + +extern Scene_Word_u BG_TEST01_XLU_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(BG_TEST01_XLU_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(11, BG_TEST01_XLU_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x7800, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data BG_TEST01_XLU_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 BG_TEST01_XLU_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC, // 1 + mAc_PROFILE_STRUCTURE, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 +}; diff --git a/src/data/scene/NEEDLEWORK.c b/src/data/scene/NEEDLEWORK.c new file mode 100644 index 00000000..1e2fe49d --- /dev/null +++ b/src/data/scene/NEEDLEWORK.c @@ -0,0 +1,82 @@ +#include "m_scene.h" + +extern Door_data_c NEEDLEWORK_door_data[]; +extern Actor_data NEEDLEWORK_player_data[]; +extern s16 NEEDLEWORK_ctrl_actor_data[]; +extern Actor_data NEEDLEWORK_actor_data[]; +extern s16 NEEDLEWORK_object_bank[]; + +extern Scene_Word_u NEEDLEWORK_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, NEEDLEWORK_door_data), // Door data + mSc_DATA_PLAYER(NEEDLEWORK_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(1), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, NEEDLEWORK_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(3, NEEDLEWORK_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, NEEDLEWORK_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data NEEDLEWORK_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 180, 0, 250 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 NEEDLEWORK_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_HOUSE_CLOCK, // 10 + mAc_PROFILE_NEEDLEWORK_INDOOR, // 11 +}; + +extern Actor_data NEEDLEWORK_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 360, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_MISIN, // profile + { 360, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 NEEDLEWORK_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 +}; + +extern Door_data_c NEEDLEWORK_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_S, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/PLAYER_SELECT2.c b/src/data/scene/PLAYER_SELECT2.c new file mode 100644 index 00000000..835cf1ce --- /dev/null +++ b/src/data/scene/PLAYER_SELECT2.c @@ -0,0 +1,29 @@ +#include "m_scene.h" + +extern Actor_data PLAYER_SELECT2_player_data[]; +extern s16 PLAYER_SELECT2_ctrl_actor_data[]; + +extern Scene_Word_u PLAYER_SELECT2_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(PLAYER_SELECT2_player_data), // Player Data + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(3, PLAYER_SELECT2_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_PLAYER_SELECT), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_SELECT2_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_SELECT2_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_EFFECT_CONTROL, // 2 +}; diff --git a/src/data/scene/PLAYER_SELECT3.c b/src/data/scene/PLAYER_SELECT3.c new file mode 100644 index 00000000..0d3b059e --- /dev/null +++ b/src/data/scene/PLAYER_SELECT3.c @@ -0,0 +1,29 @@ +#include "m_scene.h" + +extern Actor_data PLAYER_SELECT3_player_data[]; +extern s16 PLAYER_SELECT3_ctrl_actor_data[]; + +extern Scene_Word_u PLAYER_SELECT3_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(PLAYER_SELECT3_player_data), // Player Data + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(3, PLAYER_SELECT3_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_PLAYER_SELECT), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_SELECT3_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_SELECT3_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_EFFECT_CONTROL, // 2 +}; diff --git a/src/data/scene/PLAYER_SELECT4.c b/src/data/scene/PLAYER_SELECT4.c new file mode 100644 index 00000000..bfc53747 --- /dev/null +++ b/src/data/scene/PLAYER_SELECT4.c @@ -0,0 +1,29 @@ +#include "m_scene.h" + +extern Actor_data PLAYER_SELECT4_player_data[]; +extern s16 PLAYER_SELECT4_ctrl_actor_data[]; + +extern Scene_Word_u PLAYER_SELECT4_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(PLAYER_SELECT4_player_data), // Player Data + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(3, PLAYER_SELECT4_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_PLAYER_SELECT), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_SELECT4_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_SELECT4_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_EFFECT_CONTROL, // 2 +}; diff --git a/src/data/scene/broker_shop.c b/src/data/scene/broker_shop.c new file mode 100644 index 00000000..3dc254ef --- /dev/null +++ b/src/data/scene/broker_shop.c @@ -0,0 +1,53 @@ +#include "m_scene.h" + +extern Door_data_c BROKER_SHOP_door_data[]; +extern Actor_data BROKER_SHOP_player_data[]; +extern s16 BROKER_SHOP_ctrl_actor_data[]; + +extern Scene_Word_u broker_shop_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, BROKER_SHOP_door_data), // Door data + mSc_DATA_PLAYER(BROKER_SHOP_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(11, BROKER_SHOP_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data BROKER_SHOP_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 BROKER_SHOP_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_HANDOVERITEM, // 3 + mAc_PROFILE_EFFECT_CONTROL, // 4 + mAc_PROFILE_SHOP_LEVEL, // 5 + mAc_PROFILE_QUEST_MANAGER, // 6 + mAc_PROFILE_EVENT_MANAGER, // 7 + mAc_PROFILE_WEATHER, // 8 + mAc_PROFILE_BROKER_DESIGN, // 9 + mAc_PROFILE_MY_ROOM, // 10 +}; + +extern Door_data_c BROKER_SHOP_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/buggy.c b/src/data/scene/buggy.c new file mode 100644 index 00000000..e99360f6 --- /dev/null +++ b/src/data/scene/buggy.c @@ -0,0 +1,48 @@ +#include "m_scene.h" + +extern Door_data_c BUGGY_door_data[]; +extern Actor_data BUGGY_player_data[]; +extern s16 BUGGY_ctrl_actor_data[]; + +extern Scene_Word_u buggy_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, BUGGY_door_data), // Door data + mSc_DATA_PLAYER(BUGGY_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(8, BUGGY_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data BUGGY_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 260 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 BUGGY_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_EFFECT_CONTROL, // 3 + mAc_PROFILE_SHOP_LEVEL, // 4 + mAc_PROFILE_QUEST_MANAGER, // 5 + mAc_PROFILE_EVENT_MANAGER, // 6 + mAc_PROFILE_WEATHER, // 7 +}; + +extern Door_data_c BUGGY_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1600, 0, 740 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/event_notification.c b/src/data/scene/event_notification.c new file mode 100644 index 00000000..abb818a7 --- /dev/null +++ b/src/data/scene/event_notification.c @@ -0,0 +1,37 @@ +#include "m_scene.h" + +extern Actor_data EVENT_NOTIFICATION_player_data[]; +extern s16 EVENT_NOTIFICATION_ctrl_actor_data[]; + +extern Scene_Word_u event_notification_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(EVENT_NOTIFICATION_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(12, EVENT_NOTIFICATION_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x2800, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data EVENT_NOTIFICATION_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 940, 0, 940 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 EVENT_NOTIFICATION_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_STRUCTURE, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_SET_NPC_MANAGER, // 11 +}; diff --git a/src/data/scene/fg_tool_in.c b/src/data/scene/fg_tool_in.c new file mode 100644 index 00000000..5ad50634 --- /dev/null +++ b/src/data/scene/fg_tool_in.c @@ -0,0 +1,80 @@ +#include "m_scene.h" + +extern Door_data_c FG_TOOL_IN_door_data[]; +extern Actor_data FG_TOOL_IN_player_data[]; +extern s16 FG_TOOL_IN_ctrl_actor_data[]; +extern Actor_data FG_TOOL_IN_actor_data[]; +extern s16 FG_TOOL_IN_object_bank[]; + +extern Scene_Word_u fg_tool_in_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, FG_TOOL_IN_door_data), // Door data + mSc_DATA_PLAYER(FG_TOOL_IN_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(30), // Arrange furniture params + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(9, FG_TOOL_IN_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(3, FG_TOOL_IN_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, FG_TOOL_IN_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data FG_TOOL_IN_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 260 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 FG_TOOL_IN_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_WEATHER, // 6 + mAc_PROFILE_ARRANGE_ROOM, // 7 + mAc_PROFILE_MY_ROOM, // 8 +}; + +extern Actor_data FG_TOOL_IN_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 282, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_LAMP_LIGHT, // profile + { 0, 0, 0 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 FG_TOOL_IN_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 +}; + +extern Door_data_c FG_TOOL_IN_door_data[] = { + { + SCENE_NPC_TEST, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 400, 0, 460 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/field_tool_field.c b/src/data/scene/field_tool_field.c new file mode 100644 index 00000000..51ceeeb7 --- /dev/null +++ b/src/data/scene/field_tool_field.c @@ -0,0 +1,51 @@ +#include "m_scene.h" + +extern Actor_data FIELD_TOOL_FIELD_player_data[]; +extern s16 FIELD_TOOL_FIELD_ctrl_actor_data[]; +extern Actor_data FIELD_TOOL_FIELD_actor_data[]; +extern s16 FIELD_TOOL_FIELD_object_bank[]; + +extern Scene_Word_u field_tool_field_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(FIELD_TOOL_FIELD_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(9, FIELD_TOOL_FIELD_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(1, FIELD_TOOL_FIELD_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, FIELD_TOOL_FIELD_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x2800, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data FIELD_TOOL_FIELD_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 2240, 0, 1600 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 FIELD_TOOL_FIELD_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_WEATHER, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 +}; + +extern Actor_data FIELD_TOOL_FIELD_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 FIELD_TOOL_FIELD_object_bank[] = { + ACTOR_OBJ_BANK_UKI, // 0 +}; diff --git a/src/data/scene/kamakura.c b/src/data/scene/kamakura.c new file mode 100644 index 00000000..2aa9dbde --- /dev/null +++ b/src/data/scene/kamakura.c @@ -0,0 +1,52 @@ +#include "m_scene.h" + +extern Door_data_c KAMAKURA_door_data[]; +extern Actor_data KAMAKURA_player_data[]; +extern s16 KAMAKURA_ctrl_actor_data[]; + +extern Scene_Word_u kamakura_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, KAMAKURA_door_data), // Door data + mSc_DATA_PLAYER(KAMAKURA_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(3), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(11, KAMAKURA_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data KAMAKURA_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 260 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 KAMAKURA_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_MY_ROOM, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 +}; + +extern Door_data_c KAMAKURA_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1600, 0, 740 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/lighthouse.c b/src/data/scene/lighthouse.c new file mode 100644 index 00000000..90f53f55 --- /dev/null +++ b/src/data/scene/lighthouse.c @@ -0,0 +1,53 @@ +#include "m_scene.h" + +extern Door_data_c LIGHTHOUSE_door_data[]; +extern Actor_data LIGHTHOUSE_player_data[]; +extern s16 LIGHTHOUSE_ctrl_actor_data[]; + +extern Scene_Word_u lighthouse_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, LIGHTHOUSE_door_data), // Door data + mSc_DATA_PLAYER(LIGHTHOUSE_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(30), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, LIGHTHOUSE_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_NPC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data LIGHTHOUSE_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 100 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 LIGHTHOUSE_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_LIGHTHOUSE_SWITCH, // 11 +}; + +extern Door_data_c LIGHTHOUSE_door_data[] = { + { + SCENE_NPC_TEST, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 400, 0, 460 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/museum_entrance.c b/src/data/scene/museum_entrance.c new file mode 100644 index 00000000..dffb8479 --- /dev/null +++ b/src/data/scene/museum_entrance.c @@ -0,0 +1,118 @@ +#include "m_scene.h" + +extern Door_data_c MUSEUM_ENTRANCE_door_data[]; +extern Actor_data MUSEUM_ENTRANCE_player_data[]; +extern s16 MUSEUM_ENTRANCE_ctrl_actor_data[]; +extern Actor_data MUSEUM_ENTRANCE_actor_data[]; +extern s16 MUSEUM_ENTRANCE_object_bank[]; + +extern Scene_Word_u museum_entrance_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(4, MUSEUM_ENTRANCE_door_data), // Door data + mSc_DATA_PLAYER(MUSEUM_ENTRANCE_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(1), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, MUSEUM_ENTRANCE_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(4, MUSEUM_ENTRANCE_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, MUSEUM_ENTRANCE_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data MUSEUM_ENTRANCE_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 240, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_ENTRANCE_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_HOUSE_CLOCK, // 11 +}; + +extern Actor_data MUSEUM_ENTRANCE_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE_MUSEUM, // profile + { 123, -270, 180 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_MUSEUM, // profile + { 360, -270, 180 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_MUSEUM, // profile + { 123, -270, 380 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_MUSEUM, // profile + { 360, -270, 380 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 MUSEUM_ENTRANCE_object_bank[] = { + ACTOR_OBJ_BANK_EF_MUSEUM, // 0 +}; + +extern Door_data_c MUSEUM_ENTRANCE_door_data[] = { + { + SCENE_MUSEUM_ROOM_PAINTING, // scene + 4, // exit orientation + 0, // exit type + 0, // arg + { 280, 0, 480 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, + { + SCENE_MUSEUM_ROOM_FOSSIL, // scene + 4, // exit orientation + 0, // exit type + 0, // arg + { 280, 0, 480 }, // exit position + 0x4001, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, + { + SCENE_MUSEUM_ROOM_INSECT, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 520, 0, 560 }, // exit position + 0x4002, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, + { + SCENE_MUSEUM_ROOM_FISH, // scene + 2, // exit orientation + 0, // exit type + 0, // arg + { 120, 0, 560 }, // exit position + 0x4003, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/museum_fish.c b/src/data/scene/museum_fish.c new file mode 100644 index 00000000..05ea6580 --- /dev/null +++ b/src/data/scene/museum_fish.c @@ -0,0 +1,75 @@ +#include "m_scene.h" + +extern Door_data_c MUSEUM_FISH_door_data[]; +extern Actor_data MUSEUM_FISH_player_data[]; +extern s16 MUSEUM_FISH_ctrl_actor_data[]; +extern Actor_data MUSEUM_FISH_actor_data[]; +extern s16 MUSEUM_FISH_object_bank[]; + +extern Scene_Word_u museum_fish_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, MUSEUM_FISH_door_data), // Door data + mSc_DATA_PLAYER(MUSEUM_FISH_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(1), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(11, MUSEUM_FISH_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, MUSEUM_FISH_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, MUSEUM_FISH_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data MUSEUM_FISH_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 150 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_FISH_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 +}; + +extern Actor_data MUSEUM_FISH_actor_data[] = { + { + mAc_PROFILE_MUSEUM_FISH, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, + { + mAc_PROFILE_MUSEUM_INDOOR, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_FISH_object_bank[] = { + ACTOR_OBJ_BANK_407, // 0 +}; + +extern Door_data_c MUSEUM_FISH_door_data[] = { + { + SCENE_MUSEUM_ENTRANCE, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 360, 0, 280 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/museum_fossil.c b/src/data/scene/museum_fossil.c new file mode 100644 index 00000000..ce484e2b --- /dev/null +++ b/src/data/scene/museum_fossil.c @@ -0,0 +1,59 @@ +#include "m_scene.h" + +extern Door_data_c MUSEUM_FOSSIL_door_data[]; +extern Actor_data MUSEUM_FOSSIL_player_data[]; +extern s16 MUSEUM_FOSSIL_ctrl_actor_data[]; +extern s16 MUSEUM_FOSSIL_object_bank[]; + +extern Scene_Word_u museum_fossil_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, MUSEUM_FOSSIL_door_data), // Door data + mSc_DATA_PLAYER(MUSEUM_FOSSIL_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(25), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, MUSEUM_FOSSIL_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, MUSEUM_FOSSIL_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data MUSEUM_FOSSIL_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 150 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_FOSSIL_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MUSEUM_FOSSIL, // 11 +}; + +extern s16 MUSEUM_FOSSIL_object_bank[] = { + ACTOR_OBJ_BANK_369, // 0 +}; + +extern Door_data_c MUSEUM_FOSSIL_door_data[] = { + { + SCENE_MUSEUM_ENTRANCE, // scene + 0, // exit orientation + 0, // exit type + 0, // arg + { 320, 0, 120 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/museum_insect.c b/src/data/scene/museum_insect.c new file mode 100644 index 00000000..d478f30f --- /dev/null +++ b/src/data/scene/museum_insect.c @@ -0,0 +1,87 @@ +#include "m_scene.h" + +extern Door_data_c MUSEUM_INSECT_door_data[]; +extern Actor_data MUSEUM_INSECT_player_data[]; +extern s16 MUSEUM_INSECT_ctrl_actor_data[]; +extern Actor_data MUSEUM_INSECT_actor_data[]; +extern s16 MUSEUM_INSECT_object_bank[]; + +extern Scene_Word_u museum_insect_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, MUSEUM_INSECT_door_data), // Door data + mSc_DATA_PLAYER(MUSEUM_INSECT_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(11, MUSEUM_INSECT_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(4, MUSEUM_INSECT_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, MUSEUM_INSECT_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xB000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data MUSEUM_INSECT_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 150 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_INSECT_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 +}; + +extern Actor_data MUSEUM_INSECT_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE_MINSECT, // profile + { 40, 0, 280 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_MINSECT, // profile + { 520, 0, 280 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_MUSEUM_INSECT, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_MUSEUM_INDOOR, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 MUSEUM_INSECT_object_bank[] = { + ACTOR_OBJ_BANK_EF_MINSECT, // 0 + ACTOR_OBJ_BANK_408, // 1 +}; + +extern Door_data_c MUSEUM_INSECT_door_data[] = { + { + SCENE_MUSEUM_ENTRANCE, // scene + 2, // exit orientation + 0, // exit type + 0, // arg + { 120, 0, 280 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/museum_picture.c b/src/data/scene/museum_picture.c new file mode 100644 index 00000000..b86dd8ff --- /dev/null +++ b/src/data/scene/museum_picture.c @@ -0,0 +1,72 @@ +#include "m_scene.h" + +extern Door_data_c MUSEUM_PICTURE_door_data[]; +extern Actor_data MUSEUM_PICTURE_player_data[]; +extern s16 MUSEUM_PICTURE_ctrl_actor_data[]; +extern Actor_data MUSEUM_PICTURE_actor_data[]; +extern s16 MUSEUM_PICTURE_object_bank[]; + +extern Scene_Word_u museum_picture_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, MUSEUM_PICTURE_door_data), // Door data + mSc_DATA_PLAYER(MUSEUM_PICTURE_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(1), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(11, MUSEUM_PICTURE_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(1, MUSEUM_PICTURE_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, MUSEUM_PICTURE_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data MUSEUM_PICTURE_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 150 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_PICTURE_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 +}; + +extern Actor_data MUSEUM_PICTURE_actor_data[] = { + { + mAc_PROFILE_MUSEUM_PICTURE, // profile + { 40, 40, 40 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 MUSEUM_PICTURE_object_bank[] = { + ACTOR_OBJ_BANK_MUSEUM_PICTURE, // 0 +}; + +extern Door_data_c MUSEUM_PICTURE_door_data[] = { + { + SCENE_MUSEUM_ENTRANCE, // scene + 0, // exit orientation + 0, // exit type + 0, // arg + { 160, 0, 120 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, + { + // unused + }, +}; diff --git a/src/data/scene/npc_room01.c b/src/data/scene/npc_room01.c new file mode 100644 index 00000000..5a8e6487 --- /dev/null +++ b/src/data/scene/npc_room01.c @@ -0,0 +1,76 @@ +#include "m_scene.h" + +extern Door_data_c NPC_ROOM01_door_data[]; +extern Actor_data NPC_ROOM01_player_data[]; +extern s16 NPC_ROOM01_ctrl_actor_data[]; +extern Actor_data NPC_ROOM01_actor_data[]; +extern s16 NPC_ROOM01_object_bank[]; + +extern Scene_Word_u npc_room01_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, NPC_ROOM01_door_data), // Door data + mSc_DATA_PLAYER(NPC_ROOM01_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(30), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, NPC_ROOM01_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, NPC_ROOM01_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, NPC_ROOM01_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_NPC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data NPC_ROOM01_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 260 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 NPC_ROOM01_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_ARRANGE_ROOM, // 11 +}; + +extern Actor_data NPC_ROOM01_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 282, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 NPC_ROOM01_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 +}; + +extern Door_data_c NPC_ROOM01_door_data[] = { + { + SCENE_NPC_TEST, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 400, 0, 460 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/npc_room_island.c b/src/data/scene/npc_room_island.c new file mode 100644 index 00000000..b19af392 --- /dev/null +++ b/src/data/scene/npc_room_island.c @@ -0,0 +1,76 @@ +#include "m_scene.h" + +extern Door_data_c NPC_ROOM_ISLAND_door_data[]; +extern Actor_data NPC_ROOM_ISLAND_player_data[]; +extern s16 NPC_ROOM_ISLAND_ctrl_actor_data[]; +extern Actor_data NPC_ROOM_ISLAND_actor_data[]; +extern s16 NPC_ROOM_ISLAND_object_bank[]; + +extern Scene_Word_u npc_room_island_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, NPC_ROOM_ISLAND_door_data), // Door data + mSc_DATA_PLAYER(NPC_ROOM_ISLAND_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(30), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, NPC_ROOM_ISLAND_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, NPC_ROOM_ISLAND_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, NPC_ROOM_ISLAND_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_NPC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data NPC_ROOM_ISLAND_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 260 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 NPC_ROOM_ISLAND_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_ARRANGE_ROOM, // 11 +}; + +extern Actor_data NPC_ROOM_ISLAND_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 282, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 NPC_ROOM_ISLAND_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 +}; + +extern Door_data_c NPC_ROOM_ISLAND_door_data[] = { + { + SCENE_NPC_TEST, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 400, 0, 460 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/p_room_bm_l.c b/src/data/scene/p_room_bm_l.c new file mode 100644 index 00000000..6e827842 --- /dev/null +++ b/src/data/scene/p_room_bm_l.c @@ -0,0 +1,59 @@ +#include "m_scene.h" + +extern Door_data_c P_ROOM_BM_L_door_data[]; +extern Actor_data P_ROOM_BM_L_player_data[]; +extern s16 P_ROOM_BM_L_ctrl_actor_data[]; +extern s16 P_ROOM_BM_L_object_bank[]; + +extern Scene_Word_u p_room_bm_l_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, P_ROOM_BM_L_door_data), // Door data + mSc_DATA_PLAYER(P_ROOM_BM_L_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, P_ROOM_BM_L_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, P_ROOM_BM_L_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data P_ROOM_BM_L_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 P_ROOM_BM_L_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern s16 P_ROOM_BM_L_object_bank[] = { + ACTOR_OBJ_BANK_369, // 0 +}; + +extern Door_data_c P_ROOM_BM_L_door_data[] = { + { + SCENE_MY_ROOM_L, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/p_room_bm_ll1.c b/src/data/scene/p_room_bm_ll1.c new file mode 100644 index 00000000..896494be --- /dev/null +++ b/src/data/scene/p_room_bm_ll1.c @@ -0,0 +1,59 @@ +#include "m_scene.h" + +extern Door_data_c P_ROOM_BM_LL1_door_data[]; +extern Actor_data P_ROOM_BM_LL1_player_data[]; +extern s16 P_ROOM_BM_LL1_ctrl_actor_data[]; +extern s16 P_ROOM_BM_LL1_object_bank[]; + +extern Scene_Word_u p_room_bm_ll1_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, P_ROOM_BM_LL1_door_data), // Door data + mSc_DATA_PLAYER(P_ROOM_BM_LL1_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, P_ROOM_BM_LL1_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, P_ROOM_BM_LL1_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data P_ROOM_BM_LL1_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 P_ROOM_BM_LL1_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern s16 P_ROOM_BM_LL1_object_bank[] = { + ACTOR_OBJ_BANK_369, // 0 +}; + +extern Door_data_c P_ROOM_BM_LL1_door_data[] = { + { + SCENE_MY_ROOM_LL1, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/p_room_bm_m.c b/src/data/scene/p_room_bm_m.c new file mode 100644 index 00000000..e42a21a5 --- /dev/null +++ b/src/data/scene/p_room_bm_m.c @@ -0,0 +1,59 @@ +#include "m_scene.h" + +extern Door_data_c P_ROOM_BM_M_door_data[]; +extern Actor_data P_ROOM_BM_M_player_data[]; +extern s16 P_ROOM_BM_M_ctrl_actor_data[]; +extern s16 P_ROOM_BM_M_object_bank[]; + +extern Scene_Word_u p_room_bm_m_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, P_ROOM_BM_M_door_data), // Door data + mSc_DATA_PLAYER(P_ROOM_BM_M_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, P_ROOM_BM_M_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, P_ROOM_BM_M_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data P_ROOM_BM_M_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 P_ROOM_BM_M_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern s16 P_ROOM_BM_M_object_bank[] = { + ACTOR_OBJ_BANK_369, // 0 +}; + +extern Door_data_c P_ROOM_BM_M_door_data[] = { + { + SCENE_MY_ROOM_M, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 260, 0, 300 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/p_room_bm_s.c b/src/data/scene/p_room_bm_s.c new file mode 100644 index 00000000..972e4443 --- /dev/null +++ b/src/data/scene/p_room_bm_s.c @@ -0,0 +1,59 @@ +#include "m_scene.h" + +extern Door_data_c P_ROOM_BM_S_door_data[]; +extern Actor_data P_ROOM_BM_S_player_data[]; +extern s16 P_ROOM_BM_S_ctrl_actor_data[]; +extern s16 P_ROOM_BM_S_object_bank[]; + +extern Scene_Word_u p_room_bm_s_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, P_ROOM_BM_S_door_data), // Door data + mSc_DATA_PLAYER(P_ROOM_BM_S_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, P_ROOM_BM_S_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, P_ROOM_BM_S_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data P_ROOM_BM_S_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 P_ROOM_BM_S_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern s16 P_ROOM_BM_S_object_bank[] = { + ACTOR_OBJ_BANK_369, // 0 +}; + +extern Door_data_c P_ROOM_BM_S_door_data[] = { + { + SCENE_MY_ROOM_S, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 220, 0, 220 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_island.c b/src/data/scene/player_room_island.c new file mode 100644 index 00000000..698f5947 --- /dev/null +++ b/src/data/scene/player_room_island.c @@ -0,0 +1,77 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_ISLAND_door_data[]; +extern Actor_data PLAYER_ROOM_ISLAND_player_data[]; +extern s16 PLAYER_ROOM_ISLAND_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_ISLAND_actor_data[]; +extern s16 PLAYER_ROOM_ISLAND_object_bank[]; + +extern Scene_Word_u player_room_island_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, PLAYER_ROOM_ISLAND_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_ISLAND_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_ISLAND_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_ISLAND_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_ISLAND_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_ISLAND_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_ISLAND_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_ISLAND_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 360, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_ISLAND_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_ISLAND_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_M, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_l.c b/src/data/scene/player_room_l.c new file mode 100644 index 00000000..eb7fb028 --- /dev/null +++ b/src/data/scene/player_room_l.c @@ -0,0 +1,77 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_L_door_data[]; +extern Actor_data PLAYER_ROOM_L_player_data[]; +extern s16 PLAYER_ROOM_L_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_L_actor_data[]; +extern s16 PLAYER_ROOM_L_object_bank[]; + +extern Scene_Word_u player_room_l_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, PLAYER_ROOM_L_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_L_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_L_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_L_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_L_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_L_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 200, 0, 350 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_L_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_L_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 360, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_L_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_L_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_L, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_ll1.c b/src/data/scene/player_room_ll1.c new file mode 100644 index 00000000..3437762c --- /dev/null +++ b/src/data/scene/player_room_ll1.c @@ -0,0 +1,87 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_LL1_door_data[]; +extern Actor_data PLAYER_ROOM_LL1_player_data[]; +extern s16 PLAYER_ROOM_LL1_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_LL1_actor_data[]; +extern s16 PLAYER_ROOM_LL1_object_bank[]; + +extern Scene_Word_u player_room_ll1_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(2, PLAYER_ROOM_LL1_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_LL1_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_LL1_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_LL1_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_LL1_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_LL1_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 200, 0, 350 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_LL1_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_LL1_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 360, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_LL1_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_LL1_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_LL1, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, + { + SCENE_MY_ROOM_LL2, // scene + 2, // exit orientation + 0, // exit type + 0, // arg + { 60, 0, 300 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_ll2.c b/src/data/scene/player_room_ll2.c new file mode 100644 index 00000000..cf8c3665 --- /dev/null +++ b/src/data/scene/player_room_ll2.c @@ -0,0 +1,77 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_LL2_door_data[]; +extern Actor_data PLAYER_ROOM_LL2_player_data[]; +extern s16 PLAYER_ROOM_LL2_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_LL2_actor_data[]; +extern s16 PLAYER_ROOM_LL2_object_bank[]; + +extern Scene_Word_u player_room_ll2_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, PLAYER_ROOM_LL2_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_LL2_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(48), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_LL2_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_LL2_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_LL2_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_LL2_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_LL2_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_LL2_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_LL2_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_LL2_door_data[] = { + { + SCENE_MY_ROOM_LL1, // scene + 2, // exit orientation + 0, // exit type + 0, // arg + { 100, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_m.c b/src/data/scene/player_room_m.c new file mode 100644 index 00000000..c59bdff0 --- /dev/null +++ b/src/data/scene/player_room_m.c @@ -0,0 +1,77 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_M_door_data[]; +extern Actor_data PLAYER_ROOM_M_player_data[]; +extern s16 PLAYER_ROOM_M_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_M_actor_data[]; +extern s16 PLAYER_ROOM_M_object_bank[]; + +extern Scene_Word_u player_room_m_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, PLAYER_ROOM_M_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_M_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(32), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_M_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_M_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_M_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_M_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_M_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_M_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_M_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_M_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_M, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_room_s.c b/src/data/scene/player_room_s.c new file mode 100644 index 00000000..8ad13165 --- /dev/null +++ b/src/data/scene/player_room_s.c @@ -0,0 +1,77 @@ +#include "m_scene.h" + +extern Door_data_c PLAYER_ROOM_S_door_data[]; +extern Actor_data PLAYER_ROOM_S_player_data[]; +extern s16 PLAYER_ROOM_S_ctrl_actor_data[]; +extern Actor_data PLAYER_ROOM_S_actor_data[]; +extern s16 PLAYER_ROOM_S_object_bank[]; + +extern Scene_Word_u player_room_s_info[] = { + mSc_DATA_SOUND(0, 1), // Sound data + mSc_DATA_DOOR_DATA(1, PLAYER_ROOM_S_door_data), // Door data + mSc_DATA_PLAYER(PLAYER_ROOM_S_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(30), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(12, PLAYER_ROOM_S_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, PLAYER_ROOM_S_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, PLAYER_ROOM_S_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MY_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_ROOM_S_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 150 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_S_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_INSECT, // 2 + mAc_PROFILE_TOOLS, // 3 + mAc_PROFILE_HANDOVERITEM, // 4 + mAc_PROFILE_EFFECT_CONTROL, // 5 + mAc_PROFILE_SHOP_LEVEL, // 6 + mAc_PROFILE_QUEST_MANAGER, // 7 + mAc_PROFILE_EVENT_MANAGER, // 8 + mAc_PROFILE_WEATHER, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_MY_INDOOR, // 11 +}; + +extern Actor_data PLAYER_ROOM_S_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 40, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE, // profile + { 200, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 PLAYER_ROOM_S_object_bank[] = { + ACTOR_OBJ_BANK_ROOM_SUNSHINE, // 0 + ACTOR_OBJ_BANK_369, // 1 +}; + +extern Door_data_c PLAYER_ROOM_S_door_data[] = { + { + SCENE_MY_ROOM_BASEMENT_S, // scene + 6, // exit orientation + 0, // exit type + 0, // arg + { 300, 0, 380 }, // exit position + 0x4000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/player_select.c b/src/data/scene/player_select.c new file mode 100644 index 00000000..25428410 --- /dev/null +++ b/src/data/scene/player_select.c @@ -0,0 +1,29 @@ +#include "m_scene.h" + +extern Actor_data PLAYER_SELECT_player_data[]; +extern s16 PLAYER_SELECT_ctrl_actor_data[]; + +extern Scene_Word_u player_select_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(PLAYER_SELECT_player_data), // Player Data + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(3, PLAYER_SELECT_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_PLAYER_SELECT), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data PLAYER_SELECT_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 120 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 PLAYER_SELECT_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_EFFECT_CONTROL, // 2 +}; diff --git a/src/data/scene/police_box.c b/src/data/scene/police_box.c new file mode 100644 index 00000000..70be7c4c --- /dev/null +++ b/src/data/scene/police_box.c @@ -0,0 +1,74 @@ +#include "m_scene.h" + +extern Door_data_c POLICE_BOX_door_data[]; +extern Actor_data POLICE_BOX_player_data[]; +extern s16 POLICE_BOX_ctrl_actor_data[]; +extern Actor_data POLICE_BOX_actor_data[]; +extern s16 POLICE_BOX_object_bank[]; + +extern Scene_Word_u police_box_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, POLICE_BOX_door_data), // Door data + mSc_DATA_PLAYER(POLICE_BOX_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(10, POLICE_BOX_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, POLICE_BOX_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, POLICE_BOX_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGPOLICEITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data POLICE_BOX_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 200, 0, 400 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 POLICE_BOX_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_HANDOVERITEM, // 3 + mAc_PROFILE_EFFECT_CONTROL, // 4 + mAc_PROFILE_SHOP_LEVEL, // 5 + mAc_PROFILE_QUEST_MANAGER, // 6 + mAc_PROFILE_EVENT_MANAGER, // 7 + mAc_PROFILE_WEATHER, // 8 + mAc_PROFILE_HOUSE_CLOCK, // 9 +}; + +extern Actor_data POLICE_BOX_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE_POLICE, // profile + { 40, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_POLICE, // profile + { 360, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 POLICE_BOX_object_bank[] = { + ACTOR_OBJ_BANK_13, // 0 + ACTOR_OBJ_BANK_EF_POLICE, // 1 +}; + +extern Door_data_c POLICE_BOX_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/post_office.c b/src/data/scene/post_office.c new file mode 100644 index 00000000..f8de85f3 --- /dev/null +++ b/src/data/scene/post_office.c @@ -0,0 +1,80 @@ +#include "m_scene.h" + +extern Door_data_c POST_OFFICE_door_data[]; +extern Actor_data POST_OFFICE_player_data[]; +extern s16 POST_OFFICE_ctrl_actor_data[]; +extern Actor_data POST_OFFICE_actor_data[]; +extern s16 POST_OFFICE_object_bank[]; + +extern Scene_Word_u post_office_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, POST_OFFICE_door_data), // Door data + mSc_DATA_PLAYER(POST_OFFICE_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(10, POST_OFFICE_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(3, POST_OFFICE_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, POST_OFFICE_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGPOSTITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data POST_OFFICE_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 100, 0, 200 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 POST_OFFICE_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_HANDOVERITEM, // 3 + mAc_PROFILE_EFFECT_CONTROL, // 4 + mAc_PROFILE_SHOP_LEVEL, // 5 + mAc_PROFILE_QUEST_MANAGER, // 6 + mAc_PROFILE_EVENT_MANAGER, // 7 + mAc_PROFILE_WEATHER, // 8 + mAc_PROFILE_HOUSE_CLOCK, // 9 +}; + +extern Actor_data POST_OFFICE_actor_data[] = { + { + mAc_PROFILE_ROOM_SUNSHINE_POSTHOUSE, // profile + { 40, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 2 // ct arg + }, + { + mAc_PROFILE_ROOM_SUNSHINE_POSTHOUSE, // profile + { 280, 0, 160 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, + { + mAc_PROFILE_PTERMINAL, // profile + { 60, 0, 240 }, // position + { 0, 0, 0 }, // rotation + 3 // ct arg + }, +}; + +extern s16 POST_OFFICE_object_bank[] = { + ACTOR_OBJ_BANK_POSTHOUSE, // 0 +}; + +extern Door_data_c POST_OFFICE_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/shop01.c b/src/data/scene/shop01.c new file mode 100644 index 00000000..bf51e165 --- /dev/null +++ b/src/data/scene/shop01.c @@ -0,0 +1,63 @@ +#include "m_scene.h" + +extern Door_data_c SHOP01_door_data[]; +extern Actor_data SHOP01_player_data[]; +extern s16 SHOP01_ctrl_actor_data[]; +extern s16 SHOP01_object_bank[]; + +extern Scene_Word_u shop01_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, SHOP01_door_data), // Door data + mSc_DATA_PLAYER(SHOP01_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(16, SHOP01_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, SHOP01_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data SHOP01_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 300 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 SHOP01_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_SHOP_DESIGN, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_HOUSE_CLOCK, // 11 + mAc_PROFILE_MY_ROOM, // 12 + mAc_PROFILE_SHOP_MANEKIN, // 13 + mAc_PROFILE_SHOP_INDOOR, // 14 + mAc_PROFILE_SHOP_UMBRELLA, // 15 +}; + +extern s16 SHOP01_object_bank[] = { + ACTOR_OBJ_BANK_13, // 0 +}; + +extern Door_data_c SHOP01_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/shop02.c b/src/data/scene/shop02.c new file mode 100644 index 00000000..0a9761f3 --- /dev/null +++ b/src/data/scene/shop02.c @@ -0,0 +1,63 @@ +#include "m_scene.h" + +extern Door_data_c SHOP02_door_data[]; +extern Actor_data SHOP02_player_data[]; +extern s16 SHOP02_ctrl_actor_data[]; +extern s16 SHOP02_object_bank[]; + +extern Scene_Word_u shop02_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, SHOP02_door_data), // Door data + mSc_DATA_PLAYER(SHOP02_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(16, SHOP02_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, SHOP02_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data SHOP02_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 320, 0, 300 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 SHOP02_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_SHOP_DESIGN, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_MY_ROOM, // 11 + mAc_PROFILE_SHOP_MANEKIN, // 12 + mAc_PROFILE_SHOP_INDOOR, // 13 + mAc_PROFILE_SHOP_UMBRELLA, // 14 + mAc_PROFILE_HOUSE_CLOCK, // 15 +}; + +extern s16 SHOP02_object_bank[] = { + ACTOR_OBJ_BANK_13, // 0 +}; + +extern Door_data_c SHOP02_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/shop03.c b/src/data/scene/shop03.c new file mode 100644 index 00000000..8e0194f2 --- /dev/null +++ b/src/data/scene/shop03.c @@ -0,0 +1,56 @@ +#include "m_scene.h" + +extern Door_data_c SHOP03_door_data[]; +extern Actor_data SHOP03_player_data[]; +extern s16 SHOP03_ctrl_actor_data[]; + +extern Scene_Word_u shop03_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, SHOP03_door_data), // Door data + mSc_DATA_PLAYER(SHOP03_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(15, SHOP03_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data SHOP03_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 320, 0, 460 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 SHOP03_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_SHOP_DESIGN, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_HANDOVERITEM, // 3 + mAc_PROFILE_EFFECT_CONTROL, // 4 + mAc_PROFILE_SHOP_LEVEL, // 5 + mAc_PROFILE_QUEST_MANAGER, // 6 + mAc_PROFILE_EVENT_MANAGER, // 7 + mAc_PROFILE_WEATHER, // 8 + mAc_PROFILE_HOUSE_CLOCK, // 9 + mAc_PROFILE_MY_ROOM, // 10 + mAc_PROFILE_SHOP_MANEKIN, // 11 + mAc_PROFILE_SHOP_INDOOR, // 12 + mAc_PROFILE_SHOP_UMBRELLA, // 13 + mAc_PROFILE_NPC2, // 14 +}; + +extern Door_data_c SHOP03_door_data[] = { + { + SCENE_TEST2, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 40, 0, 1730 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/shop04_1f.c b/src/data/scene/shop04_1f.c new file mode 100644 index 00000000..232b3ea2 --- /dev/null +++ b/src/data/scene/shop04_1f.c @@ -0,0 +1,62 @@ +#include "m_scene.h" + +extern Door_data_c SHOP04_1F_door_data[]; +extern Actor_data SHOP04_1F_player_data[]; +extern s16 SHOP04_1F_ctrl_actor_data[]; +extern s16 SHOP04_1F_object_bank[]; + +extern Scene_Word_u shop04_1f_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, SHOP04_1F_door_data), // Door data + mSc_DATA_PLAYER(SHOP04_1F_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(15, SHOP04_1F_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, SHOP04_1F_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data SHOP04_1F_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 320, 0, 540 }, // position + { 0, -32768, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 SHOP04_1F_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_SHOP_DESIGN, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_MY_ROOM, // 11 + mAc_PROFILE_SHOP_MANEKIN, // 12 + mAc_PROFILE_HOUSE_CLOCK, // 13 + mAc_PROFILE_SHOP_UMBRELLA, // 14 +}; + +extern s16 SHOP04_1F_object_bank[] = { + ACTOR_OBJ_BANK_13, // 0 +}; + +extern Door_data_c SHOP04_1F_door_data[] = { + { + SCENE_DEPART_2, // scene + 0, // exit orientation + 0, // exit type + 0, // arg + { 300, 40, 65 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/shop04_2f.c b/src/data/scene/shop04_2f.c new file mode 100644 index 00000000..54a8baf7 --- /dev/null +++ b/src/data/scene/shop04_2f.c @@ -0,0 +1,63 @@ +#include "m_scene.h" + +extern Door_data_c SHOP04_2F_door_data[]; +extern Actor_data SHOP04_2F_player_data[]; +extern s16 SHOP04_2F_ctrl_actor_data[]; +extern s16 SHOP04_2F_object_bank[]; + +extern Scene_Word_u shop04_2f_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, SHOP04_2F_door_data), // Door data + mSc_DATA_PLAYER(SHOP04_2F_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(6), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(16, SHOP04_2F_ctrl_actor_data), // Control actors + mSc_DATA_OBJ_BANK(1, SHOP04_2F_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data SHOP04_2F_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 300, 0, 65 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 SHOP04_2F_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_SHOP_DESIGN, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_MY_ROOM, // 11 + mAc_PROFILE_SHOP_MANEKIN, // 12 + mAc_PROFILE_SHOP_INDOOR, // 13 + mAc_PROFILE_SHOP_UMBRELLA, // 14 + mAc_PROFILE_HOUSE_CLOCK, // 15 +}; + +extern s16 SHOP04_2F_object_bank[] = { + ACTOR_OBJ_BANK_13, // 0 +}; + +extern Door_data_c SHOP04_2F_door_data[] = { + { + SCENE_DEPART, // scene + 0, // exit orientation + 0, // exit type + 0, // arg + { 280, 40, 65 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/start_demo1.c b/src/data/scene/start_demo1.c new file mode 100644 index 00000000..7c397fc9 --- /dev/null +++ b/src/data/scene/start_demo1.c @@ -0,0 +1,48 @@ +#include "m_scene.h" + +extern Door_data_c START_DEMO1_door_data[]; +extern Actor_data START_DEMO1_player_data[]; +extern s16 START_DEMO1_ctrl_actor_data[]; + +extern Scene_Word_u start_demo1_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, START_DEMO1_door_data), // Door data + mSc_DATA_PLAYER(START_DEMO1_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(8), // Arrange furniture params + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(6, START_DEMO1_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0x7800, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_TRAIN), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data START_DEMO1_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 340 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 START_DEMO1_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_EFFECT_CONTROL, // 3 + mAc_PROFILE_QUEST_MANAGER, // 4 + mAc_PROFILE_WEATHER, // 5 +}; + +extern Door_data_c START_DEMO1_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1979, 200, 760 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/start_demo2.c b/src/data/scene/start_demo2.c new file mode 100644 index 00000000..39bf748e --- /dev/null +++ b/src/data/scene/start_demo2.c @@ -0,0 +1,48 @@ +#include "m_scene.h" + +extern Door_data_c START_DEMO2_door_data[]; +extern Actor_data START_DEMO2_player_data[]; +extern s16 START_DEMO2_ctrl_actor_data[]; + +extern Scene_Word_u start_demo2_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, START_DEMO2_door_data), // Door data + mSc_DATA_PLAYER(START_DEMO2_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(8), // Arrange furniture params + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(6, START_DEMO2_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_TRAIN), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data START_DEMO2_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 340 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 START_DEMO2_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_EFFECT_CONTROL, // 3 + mAc_PROFILE_QUEST_MANAGER, // 4 + mAc_PROFILE_WEATHER, // 5 +}; + +extern Door_data_c START_DEMO2_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1979, 200, 760 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/start_demo3.c b/src/data/scene/start_demo3.c new file mode 100644 index 00000000..7d82d266 --- /dev/null +++ b/src/data/scene/start_demo3.c @@ -0,0 +1,48 @@ +#include "m_scene.h" + +extern Door_data_c START_DEMO3_door_data[]; +extern Actor_data START_DEMO3_player_data[]; +extern s16 START_DEMO3_ctrl_actor_data[]; + +extern Scene_Word_u start_demo3_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, START_DEMO3_door_data), // Door data + mSc_DATA_PLAYER(START_DEMO3_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(8), // Arrange furniture params + mSc_DATA_ARRANGE_ROOM_CT(), // Arrange_room construct + mSc_DATA_CTRL_ACTORS(6, START_DEMO3_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 1, 0x7800, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_TRAIN), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data START_DEMO3_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 340 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 START_DEMO3_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_NPC2, // 1 + mAc_PROFILE_TOOLS, // 2 + mAc_PROFILE_EFFECT_CONTROL, // 3 + mAc_PROFILE_QUEST_MANAGER, // 4 + mAc_PROFILE_WEATHER, // 5 +}; + +extern Door_data_c START_DEMO3_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1979, 200, 760 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/tent.c b/src/data/scene/tent.c new file mode 100644 index 00000000..8209d650 --- /dev/null +++ b/src/data/scene/tent.c @@ -0,0 +1,52 @@ +#include "m_scene.h" + +extern Door_data_c TENT_door_data[]; +extern Actor_data TENT_player_data[]; +extern s16 TENT_ctrl_actor_data[]; + +extern Scene_Word_u tent_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_DOOR_DATA(1, TENT_door_data), // Door data + mSc_DATA_PLAYER(TENT_player_data), // Player Data + mSc_DATA_ARRANGE_FTR(3), // Arrange furniture params + mSc_DATA_CTRL_ACTORS(11, TENT_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_DUMMY, 1, 0xA000, mSc_ROOM_TYPE_MISC_ROOM, + FIELD_DRAW_TYPE_INDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TENT_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 120, 0, 100 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TENT_ctrl_actor_data[] = { + mAc_PROFILE_BIRTH_CONTROL, // 0 + mAc_PROFILE_MY_ROOM, // 1 + mAc_PROFILE_NPC2, // 2 + mAc_PROFILE_INSECT, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_SHOP_LEVEL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 +}; + +extern Door_data_c TENT_door_data[] = { + { + SCENE_FG, // scene + 1, // exit orientation + 0, // exit type + 0, // arg + { 1600, 0, 740 }, // exit position + 0x0000, // exit door item name + 2, // wipe type + { 0, 0, 0 }, // padding + }, +}; diff --git a/src/data/scene/test01.c b/src/data/scene/test01.c new file mode 100644 index 00000000..26d8cfb9 --- /dev/null +++ b/src/data/scene/test01.c @@ -0,0 +1,60 @@ +#include "m_scene.h" + +extern Actor_data TEST01_player_data[]; +extern s16 TEST01_ctrl_actor_data[]; +extern Actor_data TEST01_actor_data[]; +extern s16 TEST01_object_bank[]; + +extern Scene_Word_u test01_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST01_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(12, TEST01_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, TEST01_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, TEST01_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST01_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST01_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_BALL, // 11 +}; + +extern Actor_data TEST01_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, + { + mAc_PROFILE_FUUSEN, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 TEST01_object_bank[] = { + ACTOR_OBJ_BANK_FUUSEN, // 0 +}; diff --git a/src/data/scene/test02.c b/src/data/scene/test02.c new file mode 100644 index 00000000..0eb449df --- /dev/null +++ b/src/data/scene/test02.c @@ -0,0 +1,37 @@ +#include "m_scene.h" + +extern Actor_data TEST02_player_data[]; +extern s16 TEST02_ctrl_actor_data[]; + +extern Scene_Word_u test02_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST02_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(12, TEST02_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST02_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 320, 200, 1600 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST02_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_BALL, // 11 +}; diff --git a/src/data/scene/test03.c b/src/data/scene/test03.c new file mode 100644 index 00000000..4e9b9322 --- /dev/null +++ b/src/data/scene/test03.c @@ -0,0 +1,63 @@ +#include "m_scene.h" + +extern Actor_data TEST03_player_data[]; +extern s16 TEST03_ctrl_actor_data[]; +extern Actor_data TEST03_actor_data[]; +extern s16 TEST03_object_bank[]; + +extern Scene_Word_u test03_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST03_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(12, TEST03_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, TEST03_actor_data), // Player Data + mSc_DATA_OBJ_BANK(4, TEST03_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST03_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 320, 200, 1600 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST03_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_QUEST_MANAGER, // 8 + mAc_PROFILE_EVENT_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_BALL, // 11 +}; + +extern Actor_data TEST03_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, + { + mAc_PROFILE_MURAL, // profile + { 320, 200, 1600 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 TEST03_object_bank[] = { + ACTOR_OBJ_BANK_UKI, // 0 + ACTOR_OBJ_BANK_PSNOWMAN, // 1 + ACTOR_OBJ_BANK_AIRPLANE, // 2 + ACTOR_OBJ_BANK_MURAL, // 3 +}; diff --git a/src/data/scene/test04.c b/src/data/scene/test04.c new file mode 100644 index 00000000..4c05aada --- /dev/null +++ b/src/data/scene/test04.c @@ -0,0 +1,37 @@ +#include "m_scene.h" + +extern Actor_data TEST04_player_data[]; +extern s16 TEST04_ctrl_actor_data[]; + +extern Scene_Word_u test04_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST04_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(12, TEST04_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST04_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST04_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_SHOP_LEVEL, // 8 + mAc_PROFILE_QUEST_MANAGER, // 9 + mAc_PROFILE_EVENT_MANAGER, // 10 + mAc_PROFILE_WEATHER, // 11 +}; diff --git a/src/data/scene/test05.c b/src/data/scene/test05.c new file mode 100644 index 00000000..50f32afc --- /dev/null +++ b/src/data/scene/test05.c @@ -0,0 +1,30 @@ +#include "m_scene.h" + +extern Actor_data TEST05_player_data[]; +extern s16 TEST05_ctrl_actor_data[]; + +extern Scene_Word_u test05_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST05_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(5, TEST05_ctrl_actor_data), // Control actors + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST05_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST05_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_HANDOVERITEM, // 2 + mAc_PROFILE_EFFECT_CONTROL, // 3 + mAc_PROFILE_WEATHER, // 4 +}; diff --git a/src/data/scene/test_fd_npc_land.c b/src/data/scene/test_fd_npc_land.c new file mode 100644 index 00000000..9f1bd1ec --- /dev/null +++ b/src/data/scene/test_fd_npc_land.c @@ -0,0 +1,66 @@ +#include "m_scene.h" + +extern Actor_data TEST_FD_NPC_LAND_player_data[]; +extern s16 TEST_FD_NPC_LAND_ctrl_actor_data[]; +extern Actor_data TEST_FD_NPC_LAND_actor_data[]; +extern s16 TEST_FD_NPC_LAND_object_bank[]; + +extern Scene_Word_u test_fd_npc_land_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST_FD_NPC_LAND_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(17, TEST_FD_NPC_LAND_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, TEST_FD_NPC_LAND_actor_data), // Player Data + mSc_DATA_OBJ_BANK(2, TEST_FD_NPC_LAND_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x1C00, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST_FD_NPC_LAND_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 2240, 0, 1600 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TEST_FD_NPC_LAND_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_SHOP_LEVEL, // 8 + mAc_PROFILE_QUEST_MANAGER, // 9 + mAc_PROFILE_EVENT_MANAGER, // 10 + mAc_PROFILE_WEATHER, // 11 + mAc_PROFILE_SET_MANAGER, // 12 + mAc_PROFILE_GYOEI, // 13 + mAc_PROFILE_SET_NPC_MANAGER, // 14 + mAc_PROFILE_BALL, // 15 + mAc_PROFILE_MSCORE_CONTROL, // 16 +}; + +extern Actor_data TEST_FD_NPC_LAND_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, + { + mAc_PROFILE_AC_SIGN, // profile + { 0, 0, 0 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 TEST_FD_NPC_LAND_object_bank[] = { + ACTOR_OBJ_BANK_UKI, // 0 + ACTOR_OBJ_BANK_AC_SIGN, // 1 +}; diff --git a/src/data/scene/test_step01.c b/src/data/scene/test_step01.c new file mode 100644 index 00000000..b925c4f0 --- /dev/null +++ b/src/data/scene/test_step01.c @@ -0,0 +1,20 @@ +#include "m_scene.h" + +extern Actor_data TEST_STEP01_player_data[]; + +extern Scene_Word_u test_step01_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TEST_STEP01_player_data), // Player Data + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TEST_STEP01_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 160, 0, 300 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; diff --git a/src/data/scene/title_demo.c b/src/data/scene/title_demo.c new file mode 100644 index 00000000..9f6dc498 --- /dev/null +++ b/src/data/scene/title_demo.c @@ -0,0 +1,52 @@ +#include "m_scene.h" + +extern Actor_data TITLE_DEMO_player_data[]; +extern s16 TITLE_DEMO_ctrl_actor_data[]; +extern Actor_data TITLE_DEMO_actor_data[]; +extern s16 TITLE_DEMO_object_bank[]; + +extern Scene_Word_u title_demo_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(TITLE_DEMO_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(10, TITLE_DEMO_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(1, TITLE_DEMO_actor_data), // Player Data + mSc_DATA_OBJ_BANK(1, TITLE_DEMO_object_bank), // Required object banks + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x2000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data TITLE_DEMO_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 2240, 0, 1600 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 TITLE_DEMO_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_TOOLS, // 4 + mAc_PROFILE_HANDOVERITEM, // 5 + mAc_PROFILE_EFFECT_CONTROL, // 6 + mAc_PROFILE_WEATHER, // 7 + mAc_PROFILE_ANIMAL_LOGO, // 8 + mAc_PROFILE_QUEST_MANAGER, // 9 +}; + +extern Actor_data TITLE_DEMO_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; + +extern s16 TITLE_DEMO_object_bank[] = { + ACTOR_OBJ_BANK_UKI, // 0 +}; diff --git a/src/data/scene/water_test.c b/src/data/scene/water_test.c new file mode 100644 index 00000000..f7cf594b --- /dev/null +++ b/src/data/scene/water_test.c @@ -0,0 +1,56 @@ +#include "m_scene.h" + +extern Actor_data WATER_TEST_player_data[]; +extern s16 WATER_TEST_ctrl_actor_data[]; +extern Actor_data WATER_TEST_actor_data[]; + +extern Scene_Word_u water_test_info[] = { + mSc_DATA_SOUND(0, 0), // Sound data + mSc_DATA_PLAYER(WATER_TEST_player_data), // Player Data + mSc_DATA_CTRL_ACTORS(14, WATER_TEST_ctrl_actor_data), // Control actors + mSc_DATA_ACTORS(2, WATER_TEST_actor_data), // Player Data + mSc_DATA_FIELDCT(mSc_ITEM_TYPE_BGITEM, 4, 0x5000, mSc_ROOM_TYPE_OUTDOORS, + FIELD_DRAW_TYPE_OUTDOORS), // Field construct params + mSc_DATA_END(), // End of scene data +}; + +extern Actor_data WATER_TEST_player_data[] = { + { + mAc_PROFILE_PLAYER, // profile + { 40, 0, 40 }, // position + { 0, 0, 0 }, // rotation + 0 // ct arg + }, +}; + +extern s16 WATER_TEST_ctrl_actor_data[] = { + mAc_PROFILE_EFFECTBG, // 0 + mAc_PROFILE_BIRTH_CONTROL, // 1 + mAc_PROFILE_NPC, // 2 + mAc_PROFILE_STRUCTURE, // 3 + mAc_PROFILE_INSECT, // 4 + mAc_PROFILE_TOOLS, // 5 + mAc_PROFILE_HANDOVERITEM, // 6 + mAc_PROFILE_EFFECT_CONTROL, // 7 + mAc_PROFILE_SHOP_LEVEL, // 8 + mAc_PROFILE_QUEST_MANAGER, // 9 + mAc_PROFILE_WEATHER, // 10 + mAc_PROFILE_GYOEI, // 11 + mAc_PROFILE_BEE, // 12 + mAc_PROFILE_BALL, // 13 +}; + +extern Actor_data WATER_TEST_actor_data[] = { + { + mAc_PROFILE_UKI, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, + { + mAc_PROFILE_BEE, // profile + { 340, 0, 430 }, // position + { 0, 0, 0 }, // rotation + -1 // ct arg + }, +}; diff --git a/src/data/submenu/map/kan_tizu.c b/src/data/submenu/map/kan_tizu.c new file mode 100644 index 00000000..144501b4 --- /dev/null +++ b/src/data/submenu/map/kan_tizu.c @@ -0,0 +1,217 @@ +// clang-format off + +extern unsigned char kan_tizu_c1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c1r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c1r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c1s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c1s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c2r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c2r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c3r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c3r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c5r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c5r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c6_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c6_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c6r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c6r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c6s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c6s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c7_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c7_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c7r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c7r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_f_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_f_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r4_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r4_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r5_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r5_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r6_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r6_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r7_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r7_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c5_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c5_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c3_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c3_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r7b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r7b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c1r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c1r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c2r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c2r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c3r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c3r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c5r2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c5r2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c6r3_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c6r3_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c7r3_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c7r3_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c2s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c2s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c3s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c3s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c5s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c5s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c7s_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c7s_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r2b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r2b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r4b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r4b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r5b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r5b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_r6b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_r6b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr2_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr2_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr4_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr4_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr5_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr5_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr6_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr6_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_pr7_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_pr7_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c3r1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c3r1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4r1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4r1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c1r2b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c1r2b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c4r2b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c4r2b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c5r2b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c5r2b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c6r1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c6r1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_c7r1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_c7r1b_TA_tex_txt.inc" +}; diff --git a/src/data/submenu/map/kan_tizu2.c b/src/data/submenu/map/kan_tizu2.c new file mode 100644 index 00000000..0c6b045b --- /dev/null +++ b/src/data/submenu/map/kan_tizu2.c @@ -0,0 +1,61 @@ +// clang-format off + +extern unsigned char kan_tizu_tst1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_tst1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_tr1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_tr1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_t_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_t_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fsh_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fsh_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fpo_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fpo_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fpk_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fpk_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fmh_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fmh_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fko_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fko_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_mr1_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_mr1_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_m_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_m_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_mr1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_mr1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_tr1b_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_tr1b_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fta_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fta_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_mwf_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_mwf_TA_tex_txt.inc" +}; + +extern unsigned char kan_tizu_fmu_TA_tex_txt[] __attribute__((aligned(32))) = { + #include "assets/submenu/map/kan_tizu_fmu_TA_tex_txt.inc" +}; diff --git a/src/ef_ase2.c b/src/ef_ase2.c index 88ca3381..c286c6ec 100644 --- a/src/ef_ase2.c +++ b/src/ef_ase2.c @@ -12,7 +12,10 @@ extern Gfx ef_ase02_02_modelT[]; extern Gfx ef_ase02_03_modelT[]; static Gfx* eAS2_model_table[] = { - ef_ase02_00_modelT,ef_ase02_01_modelT,ef_ase02_02_modelT,ef_ase02_03_modelT, + ef_ase02_00_modelT, + ef_ase02_01_modelT, + ef_ase02_02_modelT, + ef_ase02_03_modelT, }; eEC_PROFILE_c iam_ef_ase2 = { @@ -27,42 +30,35 @@ eEC_PROFILE_c iam_ef_ase2 = { // clang-format on }; - static void eAS2_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { xyz_t offs; offs.x = 0.0f; offs.y = 0.0f; offs.z = 30.0f; - eEC_CLIP->make_effect_proc(eEC_EFFECT_ASE2,pos,&offs,game,NULL,item_name,prio,0,0); + eEC_CLIP->make_effect_proc(eEC_EFFECT_ASE2, pos, &offs, game, NULL, item_name, prio, 0, 0); } static void eAS2_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { effect->scale.x = 0.006f; - effect->scale.y = 0.006f; + effect->scale.y = 0.006f; effect->scale.z = 0.006f; effect->effect_specific[0] = 0; effect->timer = 26; } static void eAS2_mv(eEC_Effect_c* effect, GAME* game) { - eEC_CLIP->set_continious_env_proc(effect,26,52); + eEC_CLIP->set_continious_env_proc(effect, 26, 52); effect->effect_specific[0]++; - sAdo_OngenPos((u32) effect, 0x29, &effect->position); + sAdo_OngenPos((u32)effect, 0x29, &effect->position); } + static void eAS2_dw(eEC_Effect_c* effect, GAME* game) { - s16 idx = (s16)((effect->effect_specific[0] >> 2) & 3); - xyz_t* scale = &effect->scale; + s16 idx = (s16)((effect->effect_specific[0] & 12) >> 2); OPEN_DISP(game->graph); - if (scale) { - - } - else { - - } - - eEC_CLIP->auto_matrix_xlu_offset_proc(game, &effect->position, scale, &effect->offset); + + eEC_CLIP->auto_matrix_xlu_offset_proc(game, &effect->position, &effect->scale, &effect->offset); gSPDisplayList(NEXT_POLY_XLU_DISP, eAS2_model_table[idx]); CLOSE_DISP(game->graph); diff --git a/src/ef_break_axe.c b/src/ef_break_axe.c index d0c8233d..c24bc726 100644 --- a/src/ef_break_axe.c +++ b/src/ef_break_axe.c @@ -1,5 +1,10 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_debug.h" +#include "m_rcp.h" +#include "sys_matrix.h" + static void eBreak_Axe_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eBreak_Axe_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eBreak_Axe_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +23,180 @@ eEC_PROFILE_c iam_ef_break_axe = { }; static void eBreak_Axe_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_BREAK_AXE, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eBreak_Axe_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + s16 angle = *(s16*)ct_arg + DEG2SHORT_ANGLE2(180.0f); + f32 speed_xz; + f32 speed_y; + f32 tz; + f32 ty; + f32 tx; + s16 add_angle; + + effect->timer = RANDOM(10) * 2 + (35 + GETREG(TAKREG, 60)) * 2; + effect->effect_specific[5] = effect->timer; + + if (effect->arg0 > 1) { + effect->scale.x = effect->scale.y = effect->scale.z = (1.0f + fqrand()) * 0.01f; + } else { + effect->scale.x = effect->scale.y = effect->scale.z = 0.01f; + } + + effect->offset.x = effect->position.y; + effect->offset.y = mCoBG_GetBgY_AngleS_FromWpos(NULL, effect->position, 0.0f); + if (effect->arg0 == 0) { + angle += (int)((40.0f + GETREG(TAKREG, 56) + RANDOM_F(20.0f + GETREG(TAKREG, 57))) * 182.04445f); + effect->offset.y += 10.0f; + } else if (effect->arg0 == 1) { + angle += (int)((20.0f + GETREG(TAKREG, 58) + RANDOM_F(20.0f + GETREG(TAKREG, 59))) * 182.04445f); + effect->offset.y += 15.0f; + } else { + angle += RANDOM_F(14563.0f); + effect->offset.y += 3.0f; + } + + effect->effect_specific[4] = *(s16*)ct_arg; + if (effect->arg0 == 0) { + tx = -17.0f + GETREG(TAKREG, 32); + ty = 34.0f + GETREG(TAKREG, 33); + tz = 20.0f + GETREG(TAKREG, 34); + + effect->position.x += tz * sin_s(effect->effect_specific[4]) + tx * cos_s(effect->effect_specific[4]); + effect->position.y += ty; + effect->position.z += tz * cos_s(effect->effect_specific[4]) - tx * sin_s(effect->effect_specific[4]); + + effect->effect_specific[0] = (-20.0f + GETREG(TAKREG, 35)) * 182.04445f; + add_angle = (int)((-77.0f + GETREG(TAKREG, 36)) * 182.04445f); + effect->effect_specific[4] += add_angle; + effect->effect_specific[2] = (0.0f + GETREG(TAKREG, 37)) * 182.04445f; + effect->effect_specific[1] = qrand() & 0xFFF; + effect->effect_specific[3] = qrand() & 0xFFF; + + speed_xz = (0.5f + GETREG(TAKREG, 48) * 0.1f) * 0.5f + RANDOM_F((1.5f + GETREG(TAKREG, 49) * 0.1f) * 0.5f); + speed_y = (8.0f + GETREG(TAKREG, 50) * 0.1f) * 0.5f + RANDOM_F((2.0f + GETREG(TAKREG, 51) * 0.1f) * 0.5f); + } else if (effect->arg0 == 1) { + tz = -4.0f + GETREG(TAKREG, 38); + ty = 27.0f + GETREG(TAKREG, 39); + tx = 17.0f + GETREG(TAKREG, 40); + + effect->position.x += tx * sin_s(effect->effect_specific[4]) + tz * cos_s(effect->effect_specific[4]); + effect->position.y += ty; + effect->position.z += tx * cos_s(effect->effect_specific[4]) - tz * sin_s(effect->effect_specific[4]); + + effect->effect_specific[0] = (-20.0f + GETREG(TAKREG, 41)) * 182.04445f; + add_angle = (int)((-77.0f + GETREG(TAKREG, 42)) * 182.04445f); + effect->effect_specific[4] += add_angle; + effect->effect_specific[2] = (0.0f + GETREG(TAKREG, 43)) * 182.04445f; + effect->effect_specific[1] = qrand() & 0xFFF; + effect->effect_specific[3] = qrand() & 0xFFF; + + speed_xz = (1.5f + GETREG(TAKREG, 52) * 0.1f) * 0.5f + RANDOM_F((1.0f + GETREG(TAKREG, 53) * 0.1f) * 0.5f); + speed_y = (7.5f + GETREG(TAKREG, 54) * 0.1f) * 0.5f + RANDOM_F((3.0f + GETREG(TAKREG, 55) * 0.1f) * 0.5f); + } else { + effect->position.x += RANDOM2_F(10.0f); + effect->position.y += RANDOM2_F(10.0f); + effect->position.z += RANDOM2_F(10.0f); + + effect->effect_specific[0] = qrand(); + effect->effect_specific[2] = qrand(); + effect->effect_specific[1] = qrand() & 0x1FFF; + effect->effect_specific[3] = qrand() & 0x1FFF; + + speed_xz = (2.0f + GETREG(TAKREG, 44) * 0.1f) * 0.5f + RANDOM_F((3.5f + GETREG(TAKREG, 45) * 0.1f) * 0.5f); + speed_y = (8.0f + GETREG(TAKREG, 46) * 0.1f) * 0.5f + RANDOM_F((5.0f + GETREG(TAKREG, 47) * 0.1f) * 0.5f); + } + + effect->velocity.x = speed_xz * sin_s(angle); + effect->velocity.z = speed_xz * cos_s(angle); + effect->velocity.y = speed_y; + effect->acceleration.y = -0.25f; } static void eBreak_Axe_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + u32 ut_attr = mCoBG_Wpos2Attribute(effect->position, NULL); + + effect->offset.x = effect->position.y; + effect->offset.z = effect->offset.y; + effect->offset.y = mCoBG_GetBgY_AngleS_FromWpos(NULL, effect->position, 0.0f); + + if (effect->arg0 == 0) { + effect->offset.y += 10.0f; + } else if (effect->arg0 == 1) { + effect->offset.y += 15.0f; + } + + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); + + effect->effect_specific[0] += effect->effect_specific[1]; + effect->effect_specific[2] += effect->effect_specific[3]; + + if (effect->timer <= ((35 + GETREG(TAKREG, 60)) * 2 - 5)) { + if (effect->position.y < effect->offset.y && mCoBG_CheckWaterAttribute(ut_attr)) { + xyz_t_mult_v(&effect->velocity, 0.8f); + add_calc_short_angle2(&effect->effect_specific[1], 0, 1.0f - sqrtf(0.9f), 182, 9); + add_calc_short_angle2(&effect->effect_specific[3], 0, 1.0f - sqrtf(0.9f), 182, 9); + } + + if (effect->position.y < effect->offset.y && effect->offset.x >= effect->offset.y && + effect->velocity.y < 0.0f) { + if (mCoBG_CheckWaterAttribute(ut_attr)) { + if (effect->arg0 < 2) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_AMI_MIZU, effect->position, effect->prio, 0, game, + effect->item_name, 0, 0); + eEC_CLIP->effect_make_proc(eEC_EFFECT_TURI_HAMON, effect->position, effect->prio, 0, game, + effect->item_name, 0, 0); + } + } else { + effect->position.y = effect->offset.y; + effect->velocity.x *= 0.6f; + effect->velocity.y *= -0.6f; + effect->velocity.z *= 0.6f; + + effect->effect_specific[1] >>= 1; + effect->effect_specific[3] >>= 1; + } + } + + if (effect->position.y < effect->offset.y && effect->position.y >= effect->offset.z) { + effect->position.x -= effect->velocity.x; + effect->position.y -= effect->velocity.y; + effect->position.z -= effect->velocity.z; + + effect->velocity.x *= -0.6f; + effect->velocity.z *= -0.6f; + } + } } +extern Gfx ef_axe1_model[]; +extern Gfx ef_axe2_model[]; +extern Gfx ef_axe3_model[]; + static void eBreak_Axe_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + u8 a = (int)eEC_CLIP->calc_adjust_proc(effect->timer, 0, (15 + GETREG(TAKREG, 61)) * 2, 0.0f, 255.0f); + + _texture_z_light_fog_prim_xlu(game->graph); + + OPEN_DISP(game->graph); + + Matrix_translate(effect->position.x, effect->position.y, effect->position.z, 0); + Matrix_RotateY(effect->effect_specific[4] + (int)(GETREG(TAKREG, 21) * 182.04445f), 1); + Matrix_rotateXYZ(effect->effect_specific[0] + (int)(GETREG(TAKREG, 20) * 182.04445f), 0, + effect->effect_specific[2] + (int)(GETREG(TAKREG, 22) * 182.04445f), 1); + Matrix_scale(effect->scale.x, effect->scale.y, effect->scale.z, 1); + + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 128, 255, 255, 255, a); + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + if (effect->arg0 == 0) { + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_axe1_model); + } else if (effect->arg0 == 1) { + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_axe2_model); + } else { + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_axe3_model); + } + + CLOSE_DISP(game->graph); } diff --git a/src/ef_dash_asimoto.c b/src/ef_dash_asimoto.c index 5484966d..61d531bf 100644 --- a/src/ef_dash_asimoto.c +++ b/src/ef_dash_asimoto.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eDashAsimoto_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDashAsimoto_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDashAsimoto_mv(eEC_Effect_c* effect, GAME* game); @@ -17,18 +19,176 @@ eEC_PROFILE_c iam_ef_dash_asimoto = { // clang-format on }; -static void eDashAsimoto_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO +static xyz_t eDahsAsimoto_GetMakeOffset(xyz_t pos, s16 angle_y) { + xyz_t base_ofs = { 0.0f, 0.0f, 10.0f }; + + sMath_RotateY(&base_ofs, SHORTANGLE2RAD(angle_y)); + xyz_t_add(&pos, &base_ofs, &pos); + return pos; } +static void eDashAsimoto_Hanabira_Make(eEC_Effect_c* effect, GAME* game) { + mActor_name_t* item_p = mFI_GetUnitFG(effect->position); + + if (item_p != NULL && *item_p >= FLOWER_PANSIES0 && *item_p <= FLOWER_TULIP2) { + int i; + + for (i = 0; i < 2; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_HANABIRA, effect->position, effect->prio, 0, game, effect->item_name, + *item_p - FLOWER_PANSIES0, 0); + } + } +} + +static void eDashAsimoto_RainDay(eEC_Effect_c* effect, GAME* game) { + xyz_t pos = effect->position; + xyz_t bush_pos; + xyz_t ofs; + int i; + + ofs = eDahsAsimoto_GetMakeOffset(pos, effect->effect_specific[0]); + bush_pos = ofs; + + switch (effect->arg0) { + case mCoBG_ATTRIBUTE_BUSH: + i = 2; + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_HAPPA, bush_pos, effect->prio, effect->effect_specific[0], + game, effect->item_name, effect->arg0, 1); + } while (i-- != 0); + break; + case mCoBG_ATTRIBUTE_FLOOR: + break; + case mCoBG_ATTRIBUTE_WAVE: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SIBUKI, effect->position, effect->prio, effect->effect_specific[0], + game, effect->item_name, effect->arg0, 1); + break; + default: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SIBUKI, effect->position, effect->prio, effect->effect_specific[0], + game, effect->item_name, effect->arg0, 0); + break; + } +} + +static void eDashAsimoto_FineDay(eEC_Effect_c* effect, GAME* game) { + xyz_t pos = effect->position; + xyz_t bush_pos; + xyz_t ofs; + int season; + int i; + + ofs = eDahsAsimoto_GetMakeOffset(pos, effect->effect_specific[0]); + bush_pos = ofs; + season = Common_Get(time.season); + + switch (season) { + case mTM_SEASON_WINTER: { + switch (effect->arg0) { + case mCoBG_ATTRIBUTE_GRASS0: + case mCoBG_ATTRIBUTE_GRASS1: + case mCoBG_ATTRIBUTE_GRASS2: + case mCoBG_ATTRIBUTE_GRASS3: + eEC_CLIP->effect_make_proc(eEC_EFFECT_YUKIHANE, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, + effect->arg1); + break; + case mCoBG_ATTRIBUTE_BUSH: + i = 2; + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_HAPPA, bush_pos, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, + 1); + } while (i-- != 0); + + i = 2; + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_YUKI, bush_pos, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, + 0); + } while (i-- != 0); + break; + case mCoBG_ATTRIBUTE_FLOOR: + break; + case mCoBG_ATTRIBUTE_SAND: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SANDSPLASH, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 0); + break; + case mCoBG_ATTRIBUTE_WAVE: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SIBUKI, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 1); + break; + default: + eEC_CLIP->effect_make_proc(eEC_EFFECT_DUST, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 8); + break; + } + break; + } + + default: { + switch (effect->arg0) { + case mCoBG_ATTRIBUTE_BUSH: + i = 2; + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_HAPPA, bush_pos, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, + 1); + } while (i-- != 0); + break; + case mCoBG_ATTRIBUTE_FLOOR: + break; + case mCoBG_ATTRIBUTE_SAND: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SANDSPLASH, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 0); + break; + case mCoBG_ATTRIBUTE_WAVE: + eEC_CLIP->effect_make_proc(eEC_EFFECT_SIBUKI, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 1); + break; + default: + eEC_CLIP->effect_make_proc(eEC_EFFECT_DUST, effect->position, effect->prio, + effect->effect_specific[0], game, effect->item_name, effect->arg0, 8); + break; + } + break; + } + } +} + +static void eDashAsimoto_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { + eEC_CLIP->make_effect_proc(eEC_EFFECT_DASH_ASIMOTO, pos, NULL, game, &angle, item_name, prio, arg0, arg1); +} + +typedef void (*eDashAsimoto_PROC)(eEC_Effect_c*, GAME*); + static void eDashAsimoto_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + // clang-format off + static eDashAsimoto_PROC asimoto_func_table[mEnv_WEATHER_NUM] = { + &eDashAsimoto_FineDay, + &eDashAsimoto_RainDay, + &eDashAsimoto_FineDay, + &eDashAsimoto_FineDay, + /* @BUG - the step effect process func for 'leaves' weather is left as NULL */ + #ifdef BUGFIXES + &eDashAsimoto_FineDay, + #else + NULL, + #endif + }; + // clang-format on + s16 weather = mEnv_NowWeather(); + s16* angle_p = (s16*)ct_arg; + + effect->timer = 0; + eDashAsimoto_Hanabira_Make(effect, game); + effect->effect_specific[0] = *angle_p; + (*asimoto_func_table[weather])(effect, game); } static void eDashAsimoto_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } static void eDashAsimoto_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } diff --git a/src/ef_dig_hole.c b/src/ef_dig_hole.c index 8842c2ea..ce4d4727 100644 --- a/src/ef_dig_hole.c +++ b/src/ef_dig_hole.c @@ -1,5 +1,10 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_player_lib.h" +#include "m_rcp.h" +#include "sys_matrix.h" + static void eDig_Hole_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDig_Hole_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDig_Hole_mv(eEC_Effect_c* effect, GAME* game); @@ -17,18 +22,176 @@ eEC_PROFILE_c iam_ef_dig_hole = { // clang-format on }; +typedef struct dig_hole_init_data_s { + s16 type; + s16 angle_y; + s16 goal_angle_x; + s16 timer; +} eDig_Hole_init_data_c; + static void eDig_Hole_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + pos.x += player->actor_class.world.position.x + sin_s(angle) * 30.0f; + pos.z += player->actor_class.world.position.z + cos_s(angle) * 30.0f; + pos.x /= 2.0f; + pos.z /= 2.0f; + + eEC_CLIP->make_effect_proc(eEC_EFFECT_DIG_HOLE, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eDig_Hole_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + static xyz_t fill_hole_pos_tbl[] = { + { 0.0f, 0.0f, -21.0f }, + { 11.0f, 0.0f, -14.0f }, + { -3.0f, 0.0f, -8.0f }, + }; + + static eDig_Hole_init_data_c init_data[] = { + { 0, DEG2SHORT_ANGLE2(180.0f), DEG2SHORT_ANGLE2(179.0f), 36 }, + { 0, DEG2SHORT_ANGLE2(60.0f), DEG2SHORT_ANGLE2(179.0f), 36 }, + { 0, DEG2SHORT_ANGLE2(300.0f) + 1, DEG2SHORT_ANGLE2(179.0f), 36 }, + { 1, DEG2SHORT_ANGLE2(270.0f), DEG2SHORT_ANGLE2(179.0f), 58 }, + { 1, DEG2SHORT_ANGLE2(270.0f), DEG2SHORT_ANGLE2(179.0f), 46 }, + { 1, DEG2SHORT_ANGLE2(270.0f), DEG2SHORT_ANGLE2(150.0f), 34 }, + }; + + s16* angle_p = (s16*)ct_arg; + + effect->effect_specific[0] = *angle_p; + effect->effect_specific[4] = init_data[effect->arg1].type; + effect->effect_specific[0] += init_data[effect->arg1].angle_y; + effect->effect_specific[3] = init_data[effect->arg1].goal_angle_x; + effect->effect_specific[2] = init_data[effect->arg1].timer; + effect->effect_specific[1] = 0; + + effect->scale = ZeroVec; + + if (effect->effect_specific[4] == 1) { + xyz_t pos = fill_hole_pos_tbl[effect->arg1 - 3]; + + eEC_CLIP->vector_rotate_y_proc(&pos, SHORTANGLE2RAD(effect->effect_specific[0])); + effect->position.x += pos.x; + effect->position.y += 10.0f; + effect->position.z += pos.z; + + eEC_CLIP->effect_make_proc(eEC_EFFECT_DIG_MUD, effect->position, effect->prio, effect->effect_specific[0], game, + effect->item_name, effect->arg0, 6); + } else { + effect->position.x += 5.0f * sin_s(effect->effect_specific[0]); + effect->position.y += 10.0f; + effect->position.z += 5.0f * cos_s(effect->effect_specific[0]); + } + + if (effect->arg0 == mCoBG_ATTRIBUTE_WAVE) { + int i; + s16 mizutama_arg1; + s16 mizutama_angle = *angle_p; + s16 angle; + xyz_t pos = effect->position; + + pos.y = 21.0f; + + if (effect->arg1 <= 2) { + mizutama_arg1 = 0x4000 | (effect->arg1 << 1); + } else { + mizutama_arg1 = 0x4000 | (5 << 1); + } + + for (i = 0; i < 2; i++) { + pos.x = effect->position.x + RANDOM2_F(10.0f); + pos.z = effect->position.z + RANDOM2_F(10.0f); + + if (effect->arg1 > 2) { + angle = mizutama_angle + (s16)(int)(RANDOM2_F(150.0f) * 182.04445f); + } else { + angle = mizutama_angle + (s16)(int)(RANDOM2_F(90.0f) * 182.04445f); + } + + mizutama_angle = angle; + eEC_CLIP->effect_make_proc(eEC_EFFECT_MIZUTAMA, pos, effect->prio, mizutama_angle, game, effect->item_name, + effect->arg0, mizutama_arg1); + } + } + + effect->timer = effect->effect_specific[2]; } static void eDig_Hole_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + if (effect->timer > (effect->effect_specific[2] - 6)) { + effect->scale.x += 0.00108333334f; + effect->scale.y = effect->scale.z = effect->scale.x; + } else if (effect->timer < 6 && effect->effect_specific[4] == 1) { + effect->scale.x -= 0.00108333334f; + effect->scale.y = effect->scale.z = effect->scale.x; + } else if (effect->effect_specific[4] == 1 || effect->timer <= (effect->effect_specific[2] - 8)) { + add_calc_short_angle2(&effect->effect_specific[1], effect->effect_specific[3], 1.0f - sqrtf(0.8f), 1820, 91); + } + + if (effect->timer == (effect->effect_specific[2] - 8)) { + f32 speed; + + if (effect->arg1 == 0 || effect->arg1 == 1 || effect->arg1 == 2) { + speed = 0.15f; + } else { + speed = 0.75f; + } + + effect->velocity.y = 1.0f; + effect->velocity.x = speed * sin_s(effect->effect_specific[0]); + effect->velocity.z = speed * cos_s(effect->effect_specific[0]); + + effect->acceleration.y = -0.1f; + } + + if (effect->effect_specific[4] == 0 || effect->timer > (effect->effect_specific[2] - 30)) { + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); + } } +extern Gfx ef_anahori01_00_model[]; +extern Gfx ef_anahori01_01_model[]; +extern Gfx ef_anahori01_02_model[]; + static void eDig_Hole_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + OPEN_DISP(game->graph); + + _texture_z_light_fog_prim_xlu(game->graph); + Matrix_translate(effect->position.x, effect->position.y, effect->position.z, 0); + Matrix_RotateY(effect->effect_specific[0], 1); + Matrix_RotateX(effect->effect_specific[1], 1); + Matrix_scale(effect->scale.x, effect->scale.y, effect->scale.z, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (effect->effect_specific[4] == 0) { + u8 a = (int)eEC_CLIP->calc_adjust_proc(effect->timer, 0, 10, 0.0f, 255.0f); + + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 255, 255, 255, 255, a); + } else { + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 255, 255, 255, 255, 255); + } + + switch (effect->arg0) { + case mCoBG_ATTRIBUTE_GRASS0: + case mCoBG_ATTRIBUTE_GRASS1: + case mCoBG_ATTRIBUTE_GRASS2: + if (effect->effect_specific[4] == 0) { + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori01_00_model); + } else { + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori01_01_model); + } + break; + case mCoBG_ATTRIBUTE_WAVE: + case mCoBG_ATTRIBUTE_SAND: + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori01_02_model); + break; + default: + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori01_01_model); + break; + } + + CLOSE_DISP(game->graph); } diff --git a/src/ef_dig_mud.c b/src/ef_dig_mud.c index a6d7fa1a..b570f436 100644 --- a/src/ef_dig_mud.c +++ b/src/ef_dig_mud.c @@ -1,5 +1,46 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_rcp.h" +#include "sys_matrix.h" +#include "m_debug.h" + +extern u8 ef_mogura01_01_tex[]; +extern u8 ef_mogura01_02_tex[]; +extern u8 ef_mogura01_03_tex[]; +extern u8 ef_mogura01_04_tex[]; + +extern u8 ef_anahori02_01_tex[]; +extern u8 ef_anahori02_02_tex[]; +extern u8 ef_anahori02_03_tex[]; +extern u8 ef_anahori02_04_tex[]; + +extern u8 ef_anahori03_01_tex[]; +extern u8 ef_anahori03_02_tex[]; +extern u8 ef_anahori03_03_tex[]; +extern u8 ef_anahori03_04_tex[]; + +static u8* eDig_Mud_tex_tbl[] = { + ef_anahori02_01_tex, + ef_anahori02_02_tex, + ef_anahori02_03_tex, + ef_anahori02_04_tex, +}; + +static u8* eDig_Mud_Sand_tex_tbl[] = { + ef_anahori03_01_tex, + ef_anahori03_02_tex, + ef_anahori03_03_tex, + ef_anahori03_04_tex, +}; + +static u8* eDig_Mud_Mogura_tex_tbl[] = { + ef_mogura01_02_tex, + ef_mogura01_03_tex, + ef_mogura01_01_tex, + ef_mogura01_04_tex, +}; + static void eDig_Mud_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDig_Mud_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDig_Mud_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +59,110 @@ eEC_PROFILE_c iam_ef_dig_mud = { }; static void eDig_Mud_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_DIG_MUD, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eDig_Mud_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + s16* angle_p = (s16*)ct_arg; + s16 angle_y = *angle_p; + s16 angle_x = (s16)(int)((-60.0f + RANDOM2_F(20.0f)) * 182.04445f); + f32 cos_x = cos_s(angle_x); + f32 speed = -3.5f + RANDOM2_F(4.5f) * 0.5f; + + if ((effect->arg1 & 0x8000)) { + effect->effect_specific[1] = 1; + effect->arg1 &= ~0x8000; + } else { + effect->effect_specific[1] = 0; + } + + if ((effect->arg1 & 0x4000)) { + effect->scale.x = effect->scale.y = effect->scale.z = (0.5f + GETREG(TAKREG, 15) * 0.01f) * 0.01f; + effect->effect_specific[2] = 1; + effect->arg1 &= ~0x4000; + } else { + effect->scale.x = effect->scale.y = effect->scale.z = 0.01f; + effect->effect_specific[2] = 0; + } + + if (effect->arg1 == 0 || effect->arg1 == 3) { + effect->effect_specific[0] = 32; + } else if (effect->arg1 == 1 || effect->arg1 == 4) { + effect->effect_specific[0] = 30; + } else { + effect->effect_specific[0] = 28; + } + + if (effect->arg1 < 3) { + angle_y += (int)((30.0f + RANDOM2_F(20.0f)) * 182.04445f); + + effect->velocity.x = (speed * cos_x) * sin_s(angle_y); + effect->velocity.y = speed * sin_s(angle_x); + effect->velocity.z = (speed * cos_x) * cos_s(angle_y); + } else if (effect->arg1 < 6) { + angle_y += (s16)(int)((120.0f * effect->arg1) * 182.04445f); + + effect->velocity.x = 0.4f * sin_s(angle_y); + effect->velocity.y = 1.75f + fqrand(); + effect->velocity.z = 0.4f * cos_s(angle_y); + } else if (effect->arg1 != 8) { + effect->velocity.x = sin_s(angle_y); + effect->velocity.y = 2.0f + fqrand(); + effect->velocity.z = cos_s(angle_y); + } else { + effect->velocity.x = 0.0f; + effect->velocity.y = 2.0f + fqrand(); + effect->velocity.z = 0.0f; + } + + effect->acceleration.y = -0.175f; + effect->timer = effect->effect_specific[0]; } static void eDig_Mud_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); + + if (effect->timer < 18) { + if (effect->effect_specific[2] != 1) { + eEC_CLIP->calc_adjust_proc(effect->timer, 0, 18, 0.012f, 0.010f); + } else { + eEC_CLIP->calc_adjust_proc(effect->timer, 0, 18, 0.006f, 0.005f); + } + } } +extern Gfx ef_anahori02_00_modelT[]; +extern Gfx ef_anahori03_00_modelT[]; +extern Gfx ef_mogura01_00_modelT[]; + static void eDig_Mud_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + int tex_idx; + + if (effect->timer > 18) { + tex_idx = 0; + } else if (effect->timer > 14) { + tex_idx = 1; + } else if (effect->timer > 10) { + tex_idx = 2; + } else { + tex_idx = 3; + } + + OPEN_DISP(game->graph); + + eEC_CLIP->auto_matrix_xlu_proc(game, &effect->position, &effect->scale); + + if (effect->effect_specific[1] == 1) { + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, eDig_Mud_Mogura_tex_tbl[tex_idx]); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_mogura01_00_modelT); + } else if (effect->arg0 == mCoBG_ATTRIBUTE_SAND || effect->arg0 == mCoBG_ATTRIBUTE_WAVE) { + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, eDig_Mud_Sand_tex_tbl[tex_idx]); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori03_00_modelT); + } else { + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, eDig_Mud_tex_tbl[tex_idx]); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_anahori02_00_modelT); + } + + CLOSE_DISP(game->graph); } diff --git a/src/ef_dig_scoop.c b/src/ef_dig_scoop.c index 88c2e0be..18eaec38 100644 --- a/src/ef_dig_scoop.c +++ b/src/ef_dig_scoop.c @@ -1,5 +1,8 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_player_lib.h" + static void eDig_Scoop_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDig_Scoop_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDig_Scoop_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +21,161 @@ eEC_PROFILE_c iam_ef_dig_scoop = { }; static void eDig_Scoop_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + ACTOR* player_actorx = (ACTOR*)GET_PLAYER_ACTOR_GAME(game); + PLAYER_ACTOR* player; + int i; + s16 star_ef_angle; + s16 sand_angle; + xyz_t sand_pos; + s16 dust_angle; + + pos.x += player_actorx->world.position.x + 30.0f * sin_s(angle); + pos.z += player_actorx->world.position.z + 30.0f * cos_s(angle); + pos.x /= 2.0f; + pos.z /= 2.0f; + + if (eEC_CLIP != NULL) { + if (arg1 == 1) { + player = GET_PLAYER_ACTOR_GAME(game); + star_ef_angle = angle + DEG2SHORT_ANGLE2(22.5f); + + switch (arg0) { + case mCoBG_ATTRIBUTE_BUSH: { + int i = 4; + + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_HAPPA, player->actor_class.world.position, prio, + angle, game, item_name, arg0, 1); + } while (i--); + + if (Common_Get(time).season == mTM_SEASON_WINTER) { + int j = 4; + + do { + eEC_CLIP->effect_make_proc(eEC_EFFECT_BUSH_YUKI, player->actor_class.world.position, prio, + angle, game, item_name, arg0, 0); + } while (j--); + } + break; + } + + case mCoBG_ATTRIBUTE_GRASS0: + case mCoBG_ATTRIBUTE_GRASS1: + case mCoBG_ATTRIBUTE_GRASS2: + case mCoBG_ATTRIBUTE_SOIL0: + case mCoBG_ATTRIBUTE_SOIL1: + case mCoBG_ATTRIBUTE_SOIL2: { + f32 ground_dist = mCoBG_GetBgY_AngleS_FromWpos(NULL, pos, 0.0f); + + if (ground_dist < (pos.y + 10.0f)) { + break; + } + } + /* Fallthrough */ + default: { + s16 i; + + pos.y += 11.0f; + for (i = 0; i < 2; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_IMPACT_STAR, pos, prio, star_ef_angle, game, item_name, + arg0, (s16)i); + } + break; + } + } + } else if (arg1 == 0) { + pos.y += 10.0f; + for (i = 0; i < 6; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_DIG_MUD, pos, prio, angle, game, item_name, arg0, i); + } + } else if (arg1 == 3) { + pos.y += 10.0f; + for (i = 3; i < 6; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_DIG_MUD, pos, prio, angle, game, item_name, arg0, i); + } + } else { + pos.y += 5.0f; + + if (Common_Get(time).season == mTM_SEASON_WINTER) { + if (arg0 == mCoBG_ATTRIBUTE_GRASS0 || arg0 == mCoBG_ATTRIBUTE_GRASS1 || + arg0 == mCoBG_ATTRIBUTE_GRASS2) { + for (i = 2; i < 6; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_YUKIDAMA, pos, prio, angle, game, item_name, arg0, + (0x2000 | 0x1000) | i); + } + } else if (arg0 == mCoBG_ATTRIBUTE_SAND) { + sand_angle = angle - DEG2SHORT_ANGLE2(45.0f); + for (i = 0; i < 3; i++) { + xyz_t sand_pos = pos; + + sand_pos.x += 15.0f * sin_s(sand_angle); + sand_pos.z += 15.0f * cos_s(sand_angle); + eEC_CLIP->effect_make_proc(eEC_EFFECT_SANDSPLASH, sand_pos, prio, sand_angle, game, item_name, + 3, 0); + sand_angle += DEG2SHORT_ANGLE2(45.0f); + } + } else if (mEnv_NowWeather() != mEnv_WEATHER_RAIN && arg0 != mCoBG_ATTRIBUTE_WAVE) { + dust_angle = angle - DEG2SHORT_ANGLE2(45.0f); + for (i = 0; i < 3; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_TUMBLE_DUST, pos, prio, dust_angle, game, item_name, arg0, + i); + dust_angle += DEG2SHORT_ANGLE2(45.0f); + } + } else { + for (i = 2; i < 6; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_MIZUTAMA, pos, prio, angle, game, item_name, arg0, + (0x2000 | 0x1000) | i); + } + + if (arg0 == mCoBG_ATTRIBUTE_WAVE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_AMI_MIZU, pos, prio, angle, game, item_name, 1, 0); + } + } + } else { + if (arg0 == mCoBG_ATTRIBUTE_SAND) { + sand_angle = angle - DEG2SHORT_ANGLE2(45.0f); + + for (i = 0; i < 3; i++) { + xyz_t sand_pos = pos; + + sand_pos.x += 15.0f * sin_s(sand_angle); + sand_pos.z += 15.0f * cos_s(sand_angle); + eEC_CLIP->effect_make_proc(eEC_EFFECT_SANDSPLASH, sand_pos, prio, sand_angle, game, item_name, + 3, 0); + sand_angle += DEG2SHORT_ANGLE2(45.0f); + } + } else if (mEnv_NowWeather() == mEnv_WEATHER_RAIN || arg0 == mCoBG_ATTRIBUTE_WAVE) { + for (i = 2; i < 6; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_MIZUTAMA, pos, prio, angle, game, item_name, arg0, + (0x2000 | 0x1000) | i); + } + + if (arg0 == mCoBG_ATTRIBUTE_WAVE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_AMI_MIZU, pos, prio, angle, game, item_name, 1, 0); + } + } else { + dust_angle = angle - DEG2SHORT_ANGLE2(45.0f); + for (i = 0; i < 3; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_TUMBLE_DUST, pos, prio, dust_angle, game, item_name, arg0, + i); + dust_angle += DEG2SHORT_ANGLE2(45.0f); + } + } + } + } + } + + eEC_CLIP->make_effect_proc(eEC_EFFECT_DIG_SCOOP, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eDig_Scoop_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 0; } static void eDig_Scoop_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } static void eDig_Scoop_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } diff --git a/src/ef_douzou_light.c b/src/ef_douzou_light.c index fabcfc5e..4bde47eb 100644 --- a/src/ef_douzou_light.c +++ b/src/ef_douzou_light.c @@ -1,5 +1,9 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_rcp.h" +#include "sys_matrix.h" + static void eDouzou_Light_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDouzou_Light_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDouzou_Light_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +22,61 @@ eEC_PROFILE_c iam_ef_douzou_light = { }; static void eDouzou_Light_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_DOUZOU_LIGHT, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eDouzou_Light_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + switch (effect->arg0) { + case 0: + effect->offset.x = 0.012f; + break; + case 1: + effect->offset.x = 0.011f; + break; + case 2: + effect->offset.x = 0.010f; + break; + default: + effect->offset.x = 0.009f; + break; + } + + effect->timer = 24; } static void eDouzou_Light_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + if (effect->timer > 12) { + effect->scale.x = eEC_CLIP->calc_adjust_proc(effect->timer, 12, 24, effect->offset.x, 0.0f); + } else { + effect->scale.x = eEC_CLIP->calc_adjust_proc(effect->timer, 0, 12, 0.0f, effect->offset.x); + } + + effect->scale.y = effect->scale.z = effect->scale.x; } +extern Gfx ef_carhosi01_00_modelT[]; + static void eDouzou_Light_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + OPEN_DISP(game->graph); + + eEC_CLIP->auto_matrix_xlu_proc(game, &effect->position, &effect->scale); + + switch (effect->arg0) { + case 0: + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 255, 255, 0, 255); + break; + case 1: + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 200, 255, 255, 255); + break; + case 2: + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 255, 100, 100, 255); + break; + default: + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 100, 255, 100, 255); + break; + } + + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_carhosi01_00_modelT); + + CLOSE_DISP(game->graph); } diff --git a/src/ef_doyon.c b/src/ef_doyon.c index a311e8ac..0cde7fe0 100644 --- a/src/ef_doyon.c +++ b/src/ef_doyon.c @@ -1,5 +1,9 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_rcp.h" +#include "sys_matrix.h" + static void eDoyon_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eDoyon_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eDoyon_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +22,65 @@ eEC_PROFILE_c iam_ef_doyon = { }; static void eDoyon_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_DOYON, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eDoyon_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + s16 rng = qrand(); + s16 rng_angle = (s16)((f32)rng * 0.75f); + + effect->position.x += 10.0f * sin_s(rng_angle); + effect->position.y += 10.0f * cos_s(rng_angle); + + effect->velocity.x += sin_s(rng_angle) * 0.5f; + effect->velocity.y += cos_s(rng_angle) * 0.5f; + + effect->offset.z = 20.0f; + + effect->scale = ZeroVec; + effect->scale.z = 0.1f; + + effect->timer = 60; + sAdo_OngenTrgStart(NA_SE_DOYON, &effect->position); } static void eDoyon_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + f32 progress = eEC_CLIP->calc_adjust_proc(effect->timer, 0, 60, 0.0f, 5.0f); + + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); + + effect->effect_specific[0] += DEG2SHORT_ANGLE2(5.625f); + effect->effect_specific[1] += DEG2SHORT_ANGLE2(5.625f); + + effect->velocity.x *= sqrtf(0.95f); + effect->velocity.y *= sqrtf(0.95f); + + if (effect->timer > 50) { + f32 scale = (60 - effect->timer) * 0.00065f; + + effect->scale.x = scale * (1.0f + 0.2f * cos_s(effect->effect_specific[0])); + effect->scale.y = scale * (1.0f + 0.2f * sin_s(effect->effect_specific[0])); + } else { + effect->scale.x = (1.0f + 0.2f * cos_s(effect->effect_specific[0])) * 0.0065f; + effect->scale.y = (1.0f + 0.2f * sin_s(effect->effect_specific[0])) * 0.0065f; + } + + effect->offset.x = progress * cos_s(effect->effect_specific[1]); + effect->offset.y = progress * sin_s(effect->effect_specific[1]); } +extern Gfx ef_doyon01_00_modelT[]; + static void eDoyon_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + u8 a = (int)eEC_CLIP->calc_adjust_proc(effect->timer, 0, 8, 0.0f, 220.0f); + + OPEN_DISP(game->graph); + + eEC_CLIP->auto_matrix_xlu_offset_proc(game, &effect->position, &effect->scale, &effect->offset); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 255, 40, 30, 40, a); + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 100, 100, 255, 255); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_doyon01_00_modelT); + + CLOSE_DISP(game->graph); } diff --git a/src/ef_halloween.c b/src/ef_halloween.c index 923de7e8..82ecbf35 100644 --- a/src/ef_halloween.c +++ b/src/ef_halloween.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eHalloween_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eHalloween_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eHalloween_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,30 @@ eEC_PROFILE_c iam_ef_halloween = { }; static void eHalloween_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + (*eEC_CLIP->make_effect_proc)(eEC_EFFECT_HALLOWEEN, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eHalloween_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 0x28; + effect->effect_specific[0] = 0; + sAdo_OngenTrgStart(0x107, &effect->position); } static void eHalloween_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + if (effect->effect_specific[0] == 4) { + s16 rnd_angle = qrand(); + xyz_t pos = effect->position; + + pos.x += 18.0f * sin_s(rnd_angle); + pos.y += -25.0f + RANDOM_F(30.0f); + pos.z += 5.0f + (18.0f * cos_s(rnd_angle)); + effect->effect_specific[0] = 0; + eEC_CLIP->effect_make_proc(eEC_EFFECT_HALLOWEEN_SMOKE, pos, effect->prio, rnd_angle, game, effect->item_name, 0, 0); + } + + effect->effect_specific[0]++; } static void eHalloween_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } diff --git a/src/ef_halloween_smoke.c b/src/ef_halloween_smoke.c index f580282e..f081ca7e 100644 --- a/src/ef_halloween_smoke.c +++ b/src/ef_halloween_smoke.c @@ -1,5 +1,48 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + +extern Gfx ef_haro01_00_modelT[]; +extern u8 ef_dust01_0[]; +extern u8 ef_dust01_1[]; +extern u8 ef_dust01_2[]; +extern u8 ef_dust01_3[]; + +static u8* eHalloween_texture_table[] = { + ef_dust01_0, + ef_dust01_1, + ef_dust01_2, + ef_dust01_3, +}; + +// clang-format off +static u8 eHalloween_2tile_texture_idx[][2] = { + {0, 0}, + {0, 1}, + {1, 1}, + {1, 2}, + {2, 2}, + {2, 3}, + {3, 3}, + {3, 3}, + {3, 3}, +}; +// clang-format on + +// clang-format off +static u8 eHalloween_prim_f[] = { + 0, + 128, + 255, + 128, + 0, + 128, + 255, + 128, + 0, +}; +// clang-format on + static void eHalloween_Smoke_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eHalloween_Smoke_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eHalloween_Smoke_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +61,43 @@ eEC_PROFILE_c iam_ef_halloween_smoke = { }; static void eHalloween_Smoke_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_HALLOWEEN_SMOKE, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eHalloween_Smoke_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + s16 angle = *(s16*)ct_arg; + + effect->timer = 18; + + (effect->scale).x = (effect->scale).y = (effect->scale).z = 0.01f; + + (effect->velocity).y = 0.25f; + (effect->velocity).x = 0.0f * sin_s(angle); + (effect->velocity).z = 0.0f * cos_s(angle); + + (effect->acceleration).y = 0.075f; + (effect->acceleration).x = (effect->acceleration).z = 0.0f; } static void eHalloween_Smoke_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); } static void eHalloween_Smoke_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + s16 frame = 18 - effect->timer; + int tex_idx = frame >> 1; + int tile_idx0 = eHalloween_2tile_texture_idx[tex_idx][0]; + int tile_idx1 = eHalloween_2tile_texture_idx[tex_idx][1]; + + OPEN_DISP(game->graph); + + eEC_CLIP->auto_matrix_xlu_proc(game, &effect->position, &effect->scale); + + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_1_TXT_SEG, eHalloween_texture_table[tile_idx0]); + gSPSegment(NEXT_POLY_XLU_DISP, ANIME_2_TXT_SEG, eHalloween_texture_table[tile_idx1]); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, eHalloween_prim_f[tex_idx], 200, 0, 255, 120); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_haro01_00_modelT); + + CLOSE_DISP(game->graph); } diff --git a/src/ef_hanabi_dummy.c b/src/ef_hanabi_dummy.c index aefed319..acc51cc2 100644 --- a/src/ef_hanabi_dummy.c +++ b/src/ef_hanabi_dummy.c @@ -1,5 +1,25 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + +#define eHanabiDummy_TIMER 80 +#define eHanabiDummy_MIN_POWER 0.0f +#define eHanabiDummy_MAX_POWER 2.0f +#define eHanabiDummy_MAX_DIST (mFI_UNIT_BASE_SIZE_F * 12) + +enum { + eHanabiDummy_TYPE0, + eHanabiDummy_TYPE1, + eHanabiDummy_TYPE2, + eHanabiDummy_TYPE3, + eHanabiDummy_TYPE4, + eHanabiDummy_TYPE5, + + eHanabiDummy_TYPE_NUM +}; + +#define eHanabiDummy_TYPE_ARG (effect->effect_specific[0]) + static void eHanabiDummy_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eHanabiDummy_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eHanabiDummy_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +38,65 @@ eEC_PROFILE_c iam_ef_hanabi_dummy = { }; static void eHanabiDummy_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + (*eEC_CLIP->make_effect_proc)(eEC_EFFECT_HANABI_DUMMY, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eHanabiDummy_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = eHanabiDummy_TIMER; + eHanabiDummy_TYPE_ARG = RANDOM(eHanabiDummy_TYPE_NUM); } static void eHanabiDummy_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + rgba_t light_color; + s16 frames_passed = eHanabiDummy_TIMER - effect->timer; + + if (frames_passed == 10) { + static rgba_t dummy_light[eHanabiDummy_TYPE_NUM] = { + { 50, 30, 20, 255 }, { 20, 60, 20, 255 }, { 40, 10, 60, 255 }, + { 40, 20, 20, 255 }, { 20, 40, 20, 255 }, { 60, 60, 30, 255 }, + }; + + eEC_CLIP->decide_light_power_proc(&light_color, dummy_light[eHanabiDummy_TYPE_ARG], effect->position, game, + eHanabiDummy_MAX_POWER, eHanabiDummy_MIN_POWER, eHanabiDummy_MAX_DIST); + if (effect->arg0 != 0) { + light_color.r = light_color.r * eHanabiDummy_MAX_POWER; + light_color.g = light_color.g * eHanabiDummy_MAX_POWER; + light_color.b = light_color.b * eHanabiDummy_MAX_POWER; + } + + eEC_CLIP->regist_effect_light(light_color, 20, 50, TRUE); + } + + if (frames_passed == 72) { + xyz_t pos = effect->position; + u16 sfx_no; + + pos.y += 200.0f; + + switch (eHanabiDummy_TYPE_ARG) { + case eHanabiDummy_TYPE0: + case eHanabiDummy_TYPE1: + sfx_no = NA_SE_HANABI0; + break; + case eHanabiDummy_TYPE2: + sfx_no = NA_SE_HANABI1; + break; + case eHanabiDummy_TYPE3: + case eHanabiDummy_TYPE4: + sfx_no = NA_SE_HANABI2; + break; + case eHanabiDummy_TYPE5: + sfx_no = NA_SE_HANABI3; + break; + default: + sfx_no = NA_SE_HANABI0; + break; + } + + sAdo_OngenTrgStart(sfx_no, &pos); + } } static void eHanabiDummy_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } diff --git a/src/ef_hanatiri.c b/src/ef_hanatiri.c index 9102f464..8cfa3966 100644 --- a/src/ef_hanatiri.c +++ b/src/ef_hanatiri.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eHanatiri_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eHanatiri_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eHanatiri_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,32 @@ eEC_PROFILE_c iam_ef_hanatiri = { }; static void eHanatiri_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + (*eEC_CLIP->make_effect_proc)(eEC_EFFECT_HANATIRI, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eHanatiri_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + int i; + + if (effect->arg0 >= FLOWER_PANSIES0 && effect->arg0 <= FLOWER_TULIP2) { + s16 flower_idx = effect->arg0 - FLOWER_PANSIES0; + + for (i = 0; i < 5; i++) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_HANABIRA, effect->position, effect->prio, 0, game, effect->item_name, flower_idx, 5); + } + } + + for (i = 0; i < 4; i++){ + eEC_CLIP->effect_make_proc(eEC_EFFECT_HANABIRA, effect->position, effect->prio, 0, game, effect->item_name, 9, 5); + } + + effect->timer = 0; } static void eHanatiri_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } static void eHanatiri_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // empty } + diff --git a/src/ef_impact_star.c b/src/ef_impact_star.c index 4c7bdb0c..2b2892ac 100644 --- a/src/ef_impact_star.c +++ b/src/ef_impact_star.c @@ -1,5 +1,9 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + +extern Gfx ef_star01_00_modelT[]; + static void eImpact_Star_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eImpact_Star_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eImpact_Star_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +22,76 @@ eEC_PROFILE_c iam_ef_impact_star = { }; static void eImpact_Star_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_IMPACT_STAR, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eImpact_Star_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + f32 mul; + s16* angle_y_p = (s16*)ct_arg; + + if (effect->arg1 == 0) { + s16 angle_y = *angle_y_p; + s16 angle_x = DEG2SHORT_ANGLE2(-70.0f); + + mul = 6.0f + (f32)RANDOM_F(0.0f); + angle_y += DEG2SHORT_ANGLE2(RANDOM_F(20.0f)); + angle_x += DEG2SHORT_ANGLE2(RANDOM_F(20.0f)); + + effect->scale.x = 0.01f; + effect->offset.x = 0.01f; + effect->offset.y = 0.004f; + + effect->velocity.y = mul * cos_s(angle_x); + effect->velocity.x = mul * sin_s(angle_x) * sin_s(angle_y); + effect->velocity.z = mul * sin_s(angle_x) * cos_s(angle_y); + } else { + s16 angle_y = *angle_y_p + DEG2SHORT_ANGLE2(10.0f); + s16 angle_x = DEG2SHORT_ANGLE2(-60.0f); + + mul = 6.0f + (f32)RANDOM_F(0.0f); + angle_y += -DEG2SHORT_ANGLE2(RANDOM_F(20.0f)); + angle_x += -DEG2SHORT_ANGLE2(RANDOM_F(20.0f)); + + effect->scale.x = 0.012f; + effect->offset.x = 0.012f; + effect->offset.y = 0.006f; + + effect->velocity.y = mul * cos_s(angle_x); + effect->velocity.x = mul * sin_s(angle_x) * sin_s(angle_y); + effect->velocity.z = mul * sin_s(angle_x) * cos_s(angle_y); + } + + effect->effect_specific[0] = qrand(); + effect->timer = 40; } static void eImpact_Star_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + xyz_t_add(&effect->velocity, &effect->acceleration, &effect->velocity); + xyz_t_add(&effect->position, &effect->velocity, &effect->position); + + effect->velocity.x *= sqrtf(0.85f); + effect->velocity.y *= sqrtf(0.85f); + effect->velocity.z *= sqrtf(0.85f); } static void eImpact_Star_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + GAME_PLAY* play = (GAME_PLAY*)game; + u8 alpha = (int)eEC_CLIP->calc_adjust_proc(effect->timer,0,10, 0.0f, 255.0f); + + effect->scale.x = eEC_CLIP->calc_adjust_proc(effect->timer, 26, 40, effect->offset.y, effect->offset.x); + effect->scale.y= effect->scale.z= effect->scale.x; + + OPEN_DISP(game->graph); + + _texture_z_light_fog_prim_xlu (game->graph); + Matrix_translate(effect->position.x, effect->position.y, effect->position.z, 0); + Matrix_mult(&play->billboard_matrix, 1); + Matrix_RotateZ(effect->effect_specific[0], 1); + Matrix_scale(effect->scale.x, effect->scale.y, effect->scale.z, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 255, 255, 255, 100, alpha); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_star01_00_modelT); + + CLOSE_DISP(game->graph); } diff --git a/src/ef_kasamizu.c b/src/ef_kasamizu.c index bc21e585..c02ccc0a 100644 --- a/src/ef_kasamizu.c +++ b/src/ef_kasamizu.c @@ -1,5 +1,8 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "sys_matrix.h" + static void eKasamizu_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eKasamizu_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eKasamizu_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +21,32 @@ eEC_PROFILE_c iam_ef_kasamizu = { }; static void eKasamizu_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_KASAMIZU, pos, NULL, game, &angle, item_name, prio, arg0, arg1); } static void eKasamizu_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + static xyz_t base_offset = {0, 45.0f, -20.0f}; + xyz_t pos; + s16 angle = *(s16*)ct_arg; + Matrix_RotateY(angle, 0); + Matrix_Position(&base_offset, &pos); + xyz_t_add(&effect->position, &pos, &effect->position); + effect->effect_specific[0] = angle; + effect->timer = 24; } static void eKasamizu_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + GAME_PLAY* play = (GAME_PLAY*)game; + if (eEC_CLIP != (eEC_EffectControl_Clip_c*)0) { + int mEnv_NowWeather(); + if (mEnv_NowWeather() == mEnv_WEATHER_RAIN && play->game_frame & 1) { + xyz_t pos = effect->position; + eEC_CLIP->effect_make_proc(eEC_EFFECT_KASAMIZUTAMA, pos, effect->prio, effect->effect_specific[0], game, + effect->item_name, 0, 0); + } + } } static void eKasamizu_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // Nothing } diff --git a/src/ef_otosiana.c b/src/ef_otosiana.c index 59f60c98..e1d53c1d 100644 --- a/src/ef_otosiana.c +++ b/src/ef_otosiana.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void eOtosiana_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void eOtosiana_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void eOtosiana_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,33 @@ eEC_PROFILE_c iam_ef_otosiana = { }; static void eOtosiana_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + (*eEC_CLIP->make_effect_proc)(eEC_EFFECT_OTOSIANA, pos, NULL, game, NULL, item_name, prio, arg0, arg1); } static void eOtosiana_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->timer = 16; } static void eOtosiana_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + static s16 angle_tbl[] = { DEG2SHORT_ANGLE2(0.0f), DEG2SHORT_ANGLE2(135.0f), DEG2SHORT_ANGLE2(270.0f) }; + + if ((s16)(effect->timer & 7) == 0) { + int i; + + for (i = 0; i < 3; i++) { + xyz_t pos = effect->position; + s16 angle = angle_tbl[i]; + + if ((effect->timer & 15) == 0) { + angle += DEG2SHORT_ANGLE2(180.0f); + } + + eEC_CLIP->effect_make_proc(eEC_EFFECT_DIG_MUD, pos, effect->prio, angle, game, effect->item_name, + effect->arg0, 7); + } + } } static void eOtosiana_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + // Nothing } diff --git a/src/ef_pun.c b/src/ef_pun.c index 0c933b48..dd9c9e46 100644 --- a/src/ef_pun.c +++ b/src/ef_pun.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void ePun_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void ePun_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void ePun_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,35 @@ eEC_PROFILE_c iam_ef_pun = { }; static void ePun_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + eEC_CLIP->make_effect_proc(eEC_EFFECT_PUN, pos, NULL, game, &angle, item_name, prio, 0, 0); } static void ePun_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + s16 var = *(s16*)ct_arg; + effect->effect_specific[0] = var; + effect->timer = 24; } static void ePun_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + eEC_CLIP->set_continious_env_proc(effect, 24, 44); + + if (effect->state == eEC_STATE_CONTINUOUS) { + s16 timer_left = 44 - effect->timer; + + if (timer_left == 0) { + effect->effect_specific[1] = RANDOM(100) & 1; + } + + if (timer_left == 8) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_PUN_YUGE, effect->position, effect->prio, effect->effect_specific[0], game, (u16)effect->item_name, effect->effect_specific[1], 0); + + effect->effect_specific[1] = ++effect->effect_specific[1] & 1; + + eEC_CLIP->effect_make_proc(eEC_EFFECT_PUN_SEKIMEN, effect->position, effect->prio, effect->effect_specific[0], game, (u16)effect->item_name, 0, 0); + } + } } static void ePun_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + } diff --git a/src/ef_pun_sekimen.c b/src/ef_pun_sekimen.c index 0235184e..28071528 100644 --- a/src/ef_pun_sekimen.c +++ b/src/ef_pun_sekimen.c @@ -1,5 +1,7 @@ #include "ef_effect_control.h" +#include "m_common_data.h" + static void ePunRed_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void ePunRed_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void ePunRed_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +20,43 @@ eEC_PROFILE_c iam_ef_pun_sekimen = { }; static void ePunRed_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + xyz_t ofs; + + ofs.x = 0.0f; + ofs.y = -2.0f; + ofs.z = 25.0f; + eEC_CLIP->make_effect_proc(eEC_EFFECT_PUN_SEKIMEN, pos, &ofs, game, NULL, item_name, prio, 0, 0); } static void ePunRed_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->scale.x = 0.0105f; + effect->scale.y = 0.0105f; + effect->scale.z = 0.0105f; + effect->timer = 16; } static void ePunRed_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + // nothing } +extern Gfx ef_pun01_01_modelT[]; + static void ePunRed_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + int a; + xyz_t* scale; + s16 now_timer; + + scale = &effect->scale; + + now_timer = 16 - effect->timer; + a = (u8)eEC_CLIP->calc_adjust_proc(now_timer, 8, 16, 150.0f, 0.0f); + scale->z = scale->y = scale->x = eEC_CLIP->calc_adjust_proc(now_timer, 0, 16, 0.0105f, 0.0189f); + + OPEN_DISP(game->graph); + + eEC_CLIP->auto_matrix_xlu_offset_proc(game, &effect->position, scale, &effect->offset); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, 255, 255, 0, 0, a); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_pun01_01_modelT); + + CLOSE_DISP(game->graph); } diff --git a/src/ef_pun_yuge.c b/src/ef_pun_yuge.c index fe59bea3..555b897b 100644 --- a/src/ef_pun_yuge.c +++ b/src/ef_pun_yuge.c @@ -1,5 +1,20 @@ #include "ef_effect_control.h" +#include "m_common_data.h" +#include "m_rcp.h" +#include "sys_matrix.h" + +extern u8 ef_pun01_0_int_i4[]; +extern u8 ef_pun01_1_int_i4[]; +extern u8 ef_pun01_2_int_i4[]; +extern u8 ef_pun01_3_int_i4[]; +extern u8 ef_pun01_4_int_i4[]; +extern Gfx ef_pun01_00_modelT[]; + +static u8* ePunYuge_yuge_texture_table[] = { + ef_pun01_0_int_i4, ef_pun01_1_int_i4, ef_pun01_2_int_i4, ef_pun01_3_int_i4, ef_pun01_4_int_i4, +}; + static void ePunYuge_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1); static void ePunYuge_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg); static void ePunYuge_mv(eEC_Effect_c* effect, GAME* game); @@ -18,17 +33,92 @@ eEC_PROFILE_c iam_ef_pun_yuge = { }; static void ePunYuge_init(xyz_t pos, int prio, s16 angle, GAME* game, u16 item_name, s16 arg0, s16 arg1) { - // TODO + pos.y += 23.0f; + eEC_CLIP->make_effect_proc(eEC_EFFECT_PUN_YUGE, pos, NULL, game, &arg0, item_name, prio, 0, 0); } static void ePunYuge_ct(eEC_Effect_c* effect, GAME* game, void* ct_arg) { - // TODO + effect->effect_specific[1] = *(s16*)ct_arg; + effect->effect_specific[0] = eEC_CLIP->random_first_speed_proc(NULL, 1.5f, 16.0f, 0.0f); + effect->offset.z = 10.0f; + effect->timer = 26.0f; + sAdo_OngenTrgStart(NA_SE_PUN_YUGE, &effect->position); } static void ePunYuge_mv(eEC_Effect_c* effect, GAME* game) { - // TODO + s16 elapsed_time = 26 - effect->timer; + + if (elapsed_time < 4) { + effect->offset.y += 1.5f; + } } +typedef struct pun_yuge_tex_anim_s { + u8 tex0; + u8 tex1; + u8 prim_f; + u8 unused; +} ePunYuge_tex_anim_c; + +static ePunYuge_tex_anim_c ePunYuge_texture_anime_idx[] = { + { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 1, 127, 0 }, { 1, 1, 255, 0 }, + { 1, 2, 127, 0 }, { 2, 2, 0, 0 }, { 2, 3, 127, 0 }, { 3, 3, 255, 0 }, { 3, 4, 127, 0 }, + { 4, 4, 0, 0 }, { 4, 4, 0, 0 }, { 4, 4, 0, 0 }, +}; + +static u8 ePunYuge_prim_f_table[] = { + 0, 0, 0, 127, 255, 127, 0, 127, 255, 127, 0, 0, 0, +}; + static void ePunYuge_dw(eEC_Effect_c* effect, GAME* game) { - // TODO + GAME_PLAY* play = (GAME_PLAY*)game; + int frame; + s16 time_elapsed = 26 - effect->timer; + int anime_idx0; + int anime_idx1; + int prim_f; + int prim_gb; + int prim_a; + int env_gb; + + frame = (s16)CLAMP(time_elapsed >> 1, 0, 12); + anime_idx0 = ePunYuge_texture_anime_idx[frame].tex0; + anime_idx1 = ePunYuge_texture_anime_idx[frame].tex1; + prim_f = ePunYuge_prim_f_table[frame]; + prim_gb = (u8)eEC_CLIP->calc_adjust_proc(time_elapsed, 0, 8, 200.0f, 255.0f); + prim_a = (u8)eEC_CLIP->calc_adjust_proc(time_elapsed, 12, 26, 255.0f, 0.0f); + env_gb = (u8)eEC_CLIP->calc_adjust_proc(time_elapsed, 0, 8, 0.0f, 255.0f); + + if (frame <= 4) { + f32 scale_y[5]; + + scale_y[0] = 0.00595f; + scale_y[1] = 0.00833f; + scale_y[2] = 0.014161f; + scale_y[3] = 0.00833f; + scale_y[4] = 0.00595f; + effect->scale.y = scale_y[frame]; + effect->scale.x = 0.00595f; + } else { + effect->scale.x = eEC_CLIP->calc_adjust_proc(time_elapsed, 10, 26, 0.00595f, 0.0119f); + effect->scale.y = effect->scale.x; + } + + OPEN_DISP(game->graph); + + _texture_z_light_fog_prim_xlu(game->graph); + Matrix_translate(effect->position.x, effect->position.y, effect->position.z, 0); + Matrix_mult(&play->billboard_matrix, 1); + Matrix_RotateZ(effect->effect_specific[0], 1); + Matrix_translate(effect->offset.x, effect->offset.y, effect->offset.z, 1); + Matrix_scale(effect->scale.x, effect->scale.y, effect->scale.z, 1); + + gSPMatrix(NEXT_POLY_XLU_DISP, _Matrix_to_Mtx_new(game->graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPSegment(NEXT_POLY_XLU_DISP, G_MWO_SEGMENT_8, ePunYuge_yuge_texture_table[anime_idx0]); + gSPSegment(NEXT_POLY_XLU_DISP, G_MWO_SEGMENT_9, ePunYuge_yuge_texture_table[anime_idx1]); + gDPSetPrimColor(NEXT_POLY_XLU_DISP, 0, (u8)prim_f, 255, (u8)prim_gb, (u8)prim_gb, (u8)prim_a); + gDPSetEnvColor(NEXT_POLY_XLU_DISP, 255, (u8)env_gb, (u8)env_gb, 255); + gSPDisplayList(NEXT_POLY_XLU_DISP, ef_pun01_00_modelT); + + CLOSE_DISP(game->graph); } diff --git a/src/ftr/ac_myfmanekin.c b/src/ftr/ac_myfmanekin.c index 2f461c97..0147a570 100644 --- a/src/ftr/ac_myfmanekin.c +++ b/src/ftr/ac_myfmanekin.c @@ -27,8 +27,8 @@ static void aMyfmanekin_dma(mActor_name_t ftr_name, u8* data) { int player_no = mHS_get_pl_no(house_no); u32 manekin_no = ((ftr_name - FTR_CLOTH_MANNIQUIN_MY_ORIGINAL0) >> 2); - mNW_CopyOriginalTexture(data, &Save_Get(private[player_no]).my_org[manekin_no & 7]); - mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private[player_no]).my_org[manekin_no & 7]); + mNW_CopyOriginalTexture(data, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]); + mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]); } static aFTR_vtable_c aMyfmanekin_func = { diff --git a/src/ftr/ac_myfumbrella.c b/src/ftr/ac_myfumbrella.c index acd72ed6..81288d50 100644 --- a/src/ftr/ac_myfumbrella.c +++ b/src/ftr/ac_myfumbrella.c @@ -27,8 +27,8 @@ static void aMFU_dma(mActor_name_t ftr_name, u8* data) { int player_no = mHS_get_pl_no(house_no); u32 manekin_no = ((ftr_name - FTR_MYUMBRELLA_START) >> 2); - mNW_CopyOriginalTexture(data, &Save_Get(private[player_no]).my_org[manekin_no & 7]); - mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private[player_no]).my_org[manekin_no & 7]); + mNW_CopyOriginalTexture(data, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]); + mNW_CopyOriginalPalette(data + mNW_DESIGN_TEX_SIZE, &Save_Get(private_data[player_no]).my_org[manekin_no & 7]); } static aFTR_vtable_c aMFU_func = { diff --git a/src/m_all_grow_ovl.c b/src/m_all_grow_ovl.c index 68ba573e..c1eea0af 100644 --- a/src/m_all_grow_ovl.c +++ b/src/m_all_grow_ovl.c @@ -2499,7 +2499,7 @@ static void mAGrw_SpoilAllPossession(int spoil_kabu) { int k; if (spoil_kabu == TRUE) { - priv = Save_Get(private); + priv = Save_Get(private_data); for (i = 0; i < PLAYER_NUM; i++) { mAGrw_SpoilPossession(priv->inventory.pockets, mPr_POCKETS_SLOT_COUNT); diff --git a/src/m_banti.c b/src/m_banti.c index 0929813e..6c8df602 100644 --- a/src/m_banti.c +++ b/src/m_banti.c @@ -17,326 +17,327 @@ extern cKF_Skeleton_R_c cKF_bs_r_clk_hiniti; extern cKF_Skeleton_R_c cKF_bs_r_clk_jikan; extern void banti_ct() { - bzero(&banti, sizeof(Banti_c)); + bzero(&banti, sizeof(Banti_c)); - banti.addressable_type = 0; - banti.disabled = 0; - banti.timer = 0; - banti.alpha = 0.0f; - banti.disp_left = 0; - banti.move_left = 0; - banti.move_timer = 0.0f; + banti.addressable_type = 0; + banti.disabled = 0; + banti.timer = 0; + banti.alpha = 0.0f; + banti.disp_left = 0; + banti.move_left = 0; + banti.move_timer = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.month_anim.keyframe, &cKF_bs_r_clk_hiniti, NULL, banti.month_anim.work, banti.month_anim.morph); - banti_animation_init_hiduke(&banti.month_anim); - banti.month_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.month_anim.keyframe, &cKF_bs_r_clk_hiniti, NULL, banti.month_anim.work, + banti.month_anim.morph); + banti_animation_init_hiduke(&banti.month_anim); + banti.month_anim.keyframe.frame_control.speed = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.day_anim.keyframe, &cKF_bs_r_clk_hiniti, NULL, banti.day_anim.work, banti.day_anim.morph); - banti_animation_init_hiduke(&banti.day_anim); - banti.day_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.day_anim.keyframe, &cKF_bs_r_clk_hiniti, NULL, banti.day_anim.work, + banti.day_anim.morph); + banti_animation_init_hiduke(&banti.day_anim); + banti.day_anim.keyframe.frame_control.speed = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.hour_upper_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.hour_upper_anim.work, banti.hour_upper_anim.morph); - banti_animation_init_jikan(&banti.hour_upper_anim); - banti.hour_upper_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.hour_upper_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.hour_upper_anim.work, + banti.hour_upper_anim.morph); + banti_animation_init_jikan(&banti.hour_upper_anim); + banti.hour_upper_anim.keyframe.frame_control.speed = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.hour_lower_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.hour_lower_anim.work, banti.hour_lower_anim.morph); - banti_animation_init_jikan(&banti.hour_lower_anim); - banti.hour_lower_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.hour_lower_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.hour_lower_anim.work, + banti.hour_lower_anim.morph); + banti_animation_init_jikan(&banti.hour_lower_anim); + banti.hour_lower_anim.keyframe.frame_control.speed = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.min_upper_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.min_upper_anim.work, banti.min_upper_anim.morph); - banti_animation_init_jikan(&banti.min_upper_anim); - banti.min_upper_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.min_upper_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.min_upper_anim.work, + banti.min_upper_anim.morph); + banti_animation_init_jikan(&banti.min_upper_anim); + banti.min_upper_anim.keyframe.frame_control.speed = 0.0f; - cKF_SkeletonInfo_R_ct(&banti.min_lower_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.min_lower_anim.work, banti.min_lower_anim.morph); - banti_animation_init_jikan(&banti.min_lower_anim); - banti.min_lower_anim.keyframe.frame_control.speed = 0.0f; + cKF_SkeletonInfo_R_ct(&banti.min_lower_anim.keyframe, &cKF_bs_r_clk_jikan, NULL, banti.min_lower_anim.work, + banti.min_lower_anim.morph); + banti_animation_init_jikan(&banti.min_lower_anim); + banti.min_lower_anim.keyframe.frame_control.speed = 0.0f; - lbRTC_TimeCopy(&banti.next_time, Common_GetPointer(time.rtc_time)); - lbRTC_TimeCopy(&banti.displayed_time, Common_GetPointer(time.rtc_time)); + lbRTC_TimeCopy(&banti.next_time, Common_GetPointer(time.rtc_time)); + lbRTC_TimeCopy(&banti.displayed_time, Common_GetPointer(time.rtc_time)); } extern void banti_dt() { - cKF_SkeletonInfo_R_dt(&banti.month_anim.keyframe); - cKF_SkeletonInfo_R_dt(&banti.day_anim.keyframe); - cKF_SkeletonInfo_R_dt(&banti.hour_upper_anim.keyframe); - cKF_SkeletonInfo_R_dt(&banti.hour_lower_anim.keyframe); - cKF_SkeletonInfo_R_dt(&banti.min_upper_anim.keyframe); - cKF_SkeletonInfo_R_dt(&banti.min_lower_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.month_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.day_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.hour_upper_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.hour_lower_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.min_upper_anim.keyframe); + cKF_SkeletonInfo_R_dt(&banti.min_lower_anim.keyframe); } static void banti_chk_disp_left(GAME_PLAY* play) { - xyz_t player_pos_screen; + xyz_t player_pos_screen; - Game_play_Projection_Trans(play, &get_player_actor_withoutCheck(play)->actor_class.world.position, &player_pos_screen); + Game_play_Projection_Trans(play, &get_player_actor_withoutCheck(play)->actor_class.world.position, + &player_pos_screen); - if (player_pos_screen.x >= 180.0f && player_pos_screen.y >= 150.0f) { - if (banti.move_left == FALSE) { - banti.move_left = TRUE; - banti.move_timer = 0.0f; + if (player_pos_screen.x >= 180.0f && player_pos_screen.y >= 150.0f) { + if (banti.move_left == FALSE) { + banti.move_left = TRUE; + banti.move_timer = 0.0f; + } + + banti.move_timer += 1.0f; + + if (banti.move_timer > 10.0f) { + banti.move_timer = 10.0f; + + if (banti.alpha < 0.01f) { + banti.disp_left = TRUE; + banti.disabled = FALSE; + } else if (banti.disp_left == FALSE) { + banti.disabled = TRUE; + } + } + } else { + if (banti.move_left == TRUE) { + banti.move_left = FALSE; + banti.move_timer = 0.0f; + } + + banti.move_timer += 1.0f; + + if (banti.move_timer > 10.0f) { + banti.move_timer = 10.0f; + + if (banti.alpha < 0.01f) { + banti.disp_left = FALSE; + banti.disabled = FALSE; + } else if (banti.disp_left == TRUE) { + banti.disabled = TRUE; + } + } } - - banti.move_timer += 1.0f; - - if (banti.move_timer > 10.0f) { - banti.move_timer = 10.0f; - - if (banti.alpha < 0.01f) { - banti.disp_left = TRUE; - banti.disabled = FALSE; - } - else if (banti.disp_left == FALSE) { - banti.disabled = TRUE; - } - } - } - else { - if (banti.move_left == TRUE) { - banti.move_left = FALSE; - banti.move_timer = 0.0f; - } - - banti.move_timer += 1.0f; - - if (banti.move_timer > 10.0f) { - banti.move_timer = 10.0f; - - if (banti.alpha < 0.01f) { - banti.disp_left = FALSE; - banti.disabled = FALSE; - } - else if (banti.disp_left == TRUE) { - banti.disabled = TRUE; - } - } - } } static f32 banti_calc_disp_alpha_rate(GAME_PLAY* play) { - if (mDemo_CheckDemo() || mEv_CheckTitleDemo() > 0 || banti.disabled) { - banti.addressable_type = mPlayer_ADDRESSABLE_FALSE_MOVEMENT; - add_calc(&banti.alpha, 0.0f, 1.0f - sqrtf(0.8), 0.1f, 0.005f); /* quickly fade out on demo screen or title or force disabled */ - } - else if (banti.addressable_type == mPlayer_ADDRESSABLE_TRUE && play->submenu.process_status == mSM_PROCESS_WAIT) { - add_calc(&banti.alpha, 1.0f, 1.0f - sqrtf(0.8), 0.0425f, 0.0005f); /* fade in */ - } - else { - add_calc(&banti.alpha, 0.0f, 1.0f - sqrtf(0.8), 0.0425f, 0.0005f); /* fade out */ - } + if (mDemo_CheckDemo() || mEv_CheckTitleDemo() > 0 || banti.disabled) { + banti.addressable_type = mPlayer_ADDRESSABLE_FALSE_MOVEMENT; + add_calc(&banti.alpha, 0.0f, 1.0f - sqrtf(0.8), 0.1f, + 0.005f); /* quickly fade out on demo screen or title or force disabled */ + } else if (banti.addressable_type == mPlayer_ADDRESSABLE_TRUE && play->submenu.process_status == mSM_PROCESS_WAIT) { + add_calc(&banti.alpha, 1.0f, 1.0f - sqrtf(0.8), 0.0425f, 0.0005f); /* fade in */ + } else { + add_calc(&banti.alpha, 0.0f, 1.0f - sqrtf(0.8), 0.0425f, 0.0005f); /* fade out */ + } } extern cKF_Animation_R_c cKF_ba_r_clk_hiniti; static void banti_animation_init_hiduke(Banti_anim_c* anim) { - cKF_SkeletonInfo_R_init(&anim->keyframe, anim->keyframe.skeleton, &cKF_ba_r_clk_hiniti, 1.0f, 15.0f, 1.0f, 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, NULL); + cKF_SkeletonInfo_R_init(&anim->keyframe, anim->keyframe.skeleton, &cKF_ba_r_clk_hiniti, 1.0f, 15.0f, 1.0f, 0.5f, + 0.0f, cKF_FRAMECONTROL_STOP, NULL); } extern cKF_Animation_R_c cKF_ba_r_clk_jikan; static void banti_animation_init_jikan(Banti_anim_c* anim) { - cKF_SkeletonInfo_R_init(&anim->keyframe, anim->keyframe.skeleton, &cKF_ba_r_clk_jikan, 1.0f, 15.0f, 1.0f, 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, NULL); + cKF_SkeletonInfo_R_init(&anim->keyframe, anim->keyframe.skeleton, &cKF_ba_r_clk_jikan, 1.0f, 15.0f, 1.0f, 0.5f, + 0.0f, cKF_FRAMECONTROL_STOP, NULL); } static void banti_anime_proc() { - if (cKF_SkeletonInfo_R_play(&banti.month_anim.keyframe) == cKF_STATE_STOPPED) { - banti.month_anim.keyframe.frame_control.current_frame = 1.0f; - banti.month_anim.keyframe.frame_control.speed = 0.0f; - banti.month_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.month_anim.keyframe) == cKF_STATE_STOPPED) { + banti.month_anim.keyframe.frame_control.current_frame = 1.0f; + banti.month_anim.keyframe.frame_control.speed = 0.0f; + banti.month_anim.state = banti_ANIM_STATE_STOPPED; + } - if (cKF_SkeletonInfo_R_play(&banti.day_anim.keyframe) == cKF_STATE_STOPPED) { - banti.day_anim.keyframe.frame_control.current_frame = 1.0f; - banti.day_anim.keyframe.frame_control.speed = 0.0f; - banti.day_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.day_anim.keyframe) == cKF_STATE_STOPPED) { + banti.day_anim.keyframe.frame_control.current_frame = 1.0f; + banti.day_anim.keyframe.frame_control.speed = 0.0f; + banti.day_anim.state = banti_ANIM_STATE_STOPPED; + } - if (cKF_SkeletonInfo_R_play(&banti.hour_upper_anim.keyframe) == cKF_STATE_STOPPED) { - banti.hour_upper_anim.keyframe.frame_control.current_frame = 1.0f; - banti.hour_upper_anim.keyframe.frame_control.speed = 0.0f; - banti.hour_upper_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.hour_upper_anim.keyframe) == cKF_STATE_STOPPED) { + banti.hour_upper_anim.keyframe.frame_control.current_frame = 1.0f; + banti.hour_upper_anim.keyframe.frame_control.speed = 0.0f; + banti.hour_upper_anim.state = banti_ANIM_STATE_STOPPED; + } - if (cKF_SkeletonInfo_R_play(&banti.hour_lower_anim.keyframe) == cKF_STATE_STOPPED) { - banti.hour_lower_anim.keyframe.frame_control.current_frame = 1.0f; - banti.hour_lower_anim.keyframe.frame_control.speed = 0.0f; - banti.hour_lower_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.hour_lower_anim.keyframe) == cKF_STATE_STOPPED) { + banti.hour_lower_anim.keyframe.frame_control.current_frame = 1.0f; + banti.hour_lower_anim.keyframe.frame_control.speed = 0.0f; + banti.hour_lower_anim.state = banti_ANIM_STATE_STOPPED; + } - if (cKF_SkeletonInfo_R_play(&banti.min_upper_anim.keyframe) == cKF_STATE_STOPPED) { - banti.min_upper_anim.keyframe.frame_control.current_frame = 1.0f; - banti.min_upper_anim.keyframe.frame_control.speed = 0.0f; - banti.min_upper_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.min_upper_anim.keyframe) == cKF_STATE_STOPPED) { + banti.min_upper_anim.keyframe.frame_control.current_frame = 1.0f; + banti.min_upper_anim.keyframe.frame_control.speed = 0.0f; + banti.min_upper_anim.state = banti_ANIM_STATE_STOPPED; + } - if (cKF_SkeletonInfo_R_play(&banti.min_lower_anim.keyframe) == cKF_STATE_STOPPED) { - banti.min_lower_anim.keyframe.frame_control.current_frame = 1.0f; - banti.min_lower_anim.keyframe.frame_control.speed = 0.0f; - banti.min_lower_anim.state = banti_ANIM_STATE_STOPPED; - } + if (cKF_SkeletonInfo_R_play(&banti.min_lower_anim.keyframe) == cKF_STATE_STOPPED) { + banti.min_lower_anim.keyframe.frame_control.current_frame = 1.0f; + banti.min_lower_anim.keyframe.frame_control.speed = 0.0f; + banti.min_lower_anim.state = banti_ANIM_STATE_STOPPED; + } } static void banti_chk_anime_start() { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - u8 banti_hour; - u8 rtc_hour; - u8 banti_min; - u8 rtc_min; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + u8 banti_hour; + u8 rtc_hour; + u8 banti_min; + u8 rtc_min; - int work1; - int work0; - int disp0; - int disp1; + int work1; + int work0; + int disp0; + int disp1; - if (banti.month_anim.state == banti_ANIM_STATE_STOPPED && banti.displayed_time.month != Common_GetPointer(time.rtc_time)->month) { - banti_animation_init_hiduke(&banti.month_anim); - banti.month_anim.state = banti_ANIM_STATE_PLAYING; - } + if (banti.month_anim.state == banti_ANIM_STATE_STOPPED && + banti.displayed_time.month != Common_GetPointer(time.rtc_time)->month) { + banti_animation_init_hiduke(&banti.month_anim); + banti.month_anim.state = banti_ANIM_STATE_PLAYING; + } - if (banti.day_anim.state == banti_ANIM_STATE_STOPPED && banti.displayed_time.day != Common_GetPointer(time.rtc_time)->day) { - banti_animation_init_hiduke(&banti.day_anim); - banti.day_anim.state = banti_ANIM_STATE_PLAYING; - } + if (banti.day_anim.state == banti_ANIM_STATE_STOPPED && + banti.displayed_time.day != Common_GetPointer(time.rtc_time)->day) { + banti_animation_init_hiduke(&banti.day_anim); + banti.day_anim.state = banti_ANIM_STATE_PLAYING; + } - banti_hour = banti.displayed_time.hour; - if (banti_hour == 0 || banti_hour == 12) { - work0 = 12; - } - else if (banti_hour > 11) { - work0 = banti_hour - 12; - } - else { - work0 = banti_hour; - } + banti_hour = banti.displayed_time.hour; + if (banti_hour == 0 || banti_hour == 12) { + work0 = 12; + } else if (banti_hour > 11) { + work0 = banti_hour - 12; + } else { + work0 = banti_hour; + } - rtc_hour = Common_GetPointer(time.rtc_time)->hour; - if (rtc_hour == 0 || rtc_hour == 12) { - work1 = 12; - } - else if (rtc_hour > 11) { - work1 = rtc_hour - 12; - } - else { - work1 = rtc_hour; - } + rtc_hour = Common_GetPointer(time.rtc_time)->hour; + if (rtc_hour == 0 || rtc_hour == 12) { + work1 = 12; + } else if (rtc_hour > 11) { + work1 = rtc_hour - 12; + } else { + work1 = rtc_hour; + } - disp0 = work0 / 10; - disp1 = work1 / 10; - if (banti.hour_upper_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { - banti_animation_init_jikan(&banti.hour_upper_anim); - banti.hour_upper_anim.state = banti_ANIM_STATE_PLAYING; - } + disp0 = work0 / 10; + disp1 = work1 / 10; + if (banti.hour_upper_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { + banti_animation_init_jikan(&banti.hour_upper_anim); + banti.hour_upper_anim.state = banti_ANIM_STATE_PLAYING; + } - disp0 = work0 % 10; - disp1 = work1 % 10; - if (banti.hour_lower_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { - banti_animation_init_jikan(&banti.hour_lower_anim); - banti.hour_lower_anim.state = banti_ANIM_STATE_PLAYING; - } + disp0 = work0 % 10; + disp1 = work1 % 10; + if (banti.hour_lower_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { + banti_animation_init_jikan(&banti.hour_lower_anim); + banti.hour_lower_anim.state = banti_ANIM_STATE_PLAYING; + } - disp0 = banti.displayed_time.min / 10; - disp1 = Common_GetPointer(time.rtc_time)->min / 10; - if (banti.min_upper_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { - banti_animation_init_jikan(&banti.min_upper_anim); - banti.min_upper_anim.state = banti_ANIM_STATE_PLAYING; - } + disp0 = banti.displayed_time.min / 10; + disp1 = Common_GetPointer(time.rtc_time)->min / 10; + if (banti.min_upper_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { + banti_animation_init_jikan(&banti.min_upper_anim); + banti.min_upper_anim.state = banti_ANIM_STATE_PLAYING; + } - disp0 = banti.displayed_time.min % 10; - disp1 = Common_GetPointer(time.rtc_time)->min % 10; - if (banti.min_lower_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { - banti_animation_init_jikan(&banti.min_lower_anim); - banti.min_lower_anim.state = banti_ANIM_STATE_PLAYING; - } + disp0 = banti.displayed_time.min % 10; + disp1 = Common_GetPointer(time.rtc_time)->min % 10; + if (banti.min_lower_anim.state == banti_ANIM_STATE_STOPPED && disp0 != disp1) { + banti_animation_init_jikan(&banti.min_lower_anim); + banti.min_lower_anim.state = banti_ANIM_STATE_PLAYING; + } } static void banti_time_check() { - int pre_state; - int post_state; + int pre_state; + int post_state; - pre_state = banti.month_anim.state | banti.day_anim.state | banti.hour_upper_anim.state | banti.hour_lower_anim.state | banti.min_upper_anim.state | banti.min_lower_anim.state; + pre_state = banti.month_anim.state | banti.day_anim.state | banti.hour_upper_anim.state | + banti.hour_lower_anim.state | banti.min_upper_anim.state | banti.min_lower_anim.state; - if (pre_state == banti_ANIM_STATE_STOPPED) { - banti_chk_anime_start(); - } - - banti_anime_proc(); - - post_state = banti.month_anim.state | banti.day_anim.state | banti.hour_upper_anim.state | banti.hour_lower_anim.state | banti.min_upper_anim.state | banti.min_lower_anim.state; - - if (pre_state != post_state) { if (pre_state == banti_ANIM_STATE_STOPPED) { - lbRTC_TimeCopy(&banti.next_time, Common_GetPointer(time.rtc_time)); + banti_chk_anime_start(); } - else { - lbRTC_TimeCopy(&banti.displayed_time, &banti.next_time); + + banti_anime_proc(); + + post_state = banti.month_anim.state | banti.day_anim.state | banti.hour_upper_anim.state | + banti.hour_lower_anim.state | banti.min_upper_anim.state | banti.min_lower_anim.state; + + if (pre_state != post_state) { + if (pre_state == banti_ANIM_STATE_STOPPED) { + lbRTC_TimeCopy(&banti.next_time, Common_GetPointer(time.rtc_time)); + } else { + lbRTC_TimeCopy(&banti.displayed_time, &banti.next_time); + } } - } } extern void banti_move(GAME_PLAY* play) { - int addressable_type; - int update; + int addressable_type; + int update; - banti_chk_disp_left(play); + banti_chk_disp_left(play); - addressable_type = mPlib_Get_address_able_display(); + addressable_type = mPlib_Get_address_able_display(); - if (banti.addressable_type != addressable_type) { - update = FALSE; - banti.timer++; + if (banti.addressable_type != addressable_type) { + update = FALSE; + banti.timer++; - if (addressable_type == mPlayer_ADDRESSABLE_FALSE_USING_TOOL) { - if (banti.timer > 50) { - update = TRUE; - } - } - else if (banti.addressable_type != mPlayer_ADDRESSABLE_TRUE) { - if (banti.timer > 30 || addressable_type == mPlayer_ADDRESSABLE_FALSE_TALKING) { - update = TRUE; - } - } - else if (banti.timer > 50 || addressable_type == mPlayer_ADDRESSABLE_FALSE_TALKING) { - update = TRUE; + if (addressable_type == mPlayer_ADDRESSABLE_FALSE_READY_NET) { + if (banti.timer > 50) { + update = TRUE; + } + } else if (banti.addressable_type != mPlayer_ADDRESSABLE_TRUE) { + if (banti.timer > 30 || addressable_type == mPlayer_ADDRESSABLE_FALSE_TALKING) { + update = TRUE; + } + } else if (banti.timer > 50 || addressable_type == mPlayer_ADDRESSABLE_FALSE_TALKING) { + update = TRUE; + } + + if (update == TRUE) { + banti.timer = 0; + banti.addressable_type = addressable_type; + } + } else { + banti.timer = 0; } - if (update == TRUE) { - banti.timer = 0; - banti.addressable_type = addressable_type; - } - } - else { - banti.timer = 0; - } - - banti_calc_disp_alpha_rate(play); - banti_time_check(); + banti_calc_disp_alpha_rate(play); + banti_time_check(); } -static int banti_draw_before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { - Gfx** gfx_pp; - Mtx* mtx; - Banti_callback_c* callback_data = (Banti_callback_c*)arg; +static int banti_draw_before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, Gfx** joint_shape, + u8* joint_flags, void* arg, s_xyz* joint_rot, xyz_t* joint_pos) { + Gfx** gfx_pp; + Mtx* mtx; + Banti_callback_c* callback_data = (Banti_callback_c*)arg; - gfx_pp = callback_data->gfx_pp; - mtx = callback_data->mtx; + gfx_pp = callback_data->gfx_pp; + mtx = callback_data->mtx; - Matrix_softcv3_mult(joint_pos, joint_rot); - if (*joint_shape != NULL) { - _Matrix_to_Mtx(mtx); + Matrix_softcv3_mult(joint_pos, joint_rot); + if (*joint_shape != NULL) { + _Matrix_to_Mtx(mtx); - gSPMatrix(gfx_pp[0]++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPMatrix(gfx_pp[0]++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - if (callback_data->state == banti_ANIM_STATE_STOPPED) { - if (joint_idx != 2) { - gSPDisplayList(gfx_pp[0]++, *joint_shape); - } - } - else { - gSPDisplayList(gfx_pp[0]++, *joint_shape); + if (callback_data->state == banti_ANIM_STATE_STOPPED) { + if (joint_idx != 2) { + gSPDisplayList(gfx_pp[0]++, *joint_shape); + } + } else { + gSPDisplayList(gfx_pp[0]++, *joint_shape); + } + + callback_data->mtx++; } - callback_data->mtx++; - } - - return 0; + return 0; } extern u8 clk_win_suuji1_TA_tex_txt[]; @@ -371,81 +372,57 @@ extern u8 clk_win_suuji29_TA_tex_txt[]; extern u8 clk_win_suuji30_TA_tex_txt[]; extern u8 clk_win_suuji31_TA_tex_txt[]; -static void banti_draw_hiduke_sub(Gfx** gfx_pp, GAME* game, Banti_anim_c* anim, int tex0_idx, int tex1_idx, int pos_idx) { - static u8* hiniti_tex_table[31] = { - clk_win_suuji1_TA_tex_txt, - clk_win_suuji2_TA_tex_txt, - clk_win_suuji3_TA_tex_txt, - clk_win_suuji4_TA_tex_txt, - clk_win_suuji5_TA_tex_txt, - clk_win_suuji6_TA_tex_txt, - clk_win_suuji7_TA_tex_txt, - clk_win_suuji8_TA_tex_txt, - clk_win_suuji9_TA_tex_txt, - clk_win_suuji10_TA_tex_txt, - clk_win_suuji11_TA_tex_txt, - clk_win_suuji12_TA_tex_txt, - clk_win_suuji13_TA_tex_txt, - clk_win_suuji14_TA_tex_txt, - clk_win_suuji15_TA_tex_txt, - clk_win_suuji16_TA_tex_txt, - clk_win_suuji17_TA_tex_txt, - clk_win_suuji18_TA_tex_txt, - clk_win_suuji19_TA_tex_txt, - clk_win_suuji20_TA_tex_txt, - clk_win_suuji21_TA_tex_txt, - clk_win_suuji22_TA_tex_txt, - clk_win_suuji23_TA_tex_txt, - clk_win_suuji24_TA_tex_txt, - clk_win_suuji25_TA_tex_txt, - clk_win_suuji26_TA_tex_txt, - clk_win_suuji27_TA_tex_txt, - clk_win_suuji28_TA_tex_txt, - clk_win_suuji29_TA_tex_txt, - clk_win_suuji30_TA_tex_txt, - clk_win_suuji31_TA_tex_txt - }; +static void banti_draw_hiduke_sub(Gfx** gfx_pp, GAME* game, Banti_anim_c* anim, int tex0_idx, int tex1_idx, + int pos_idx) { + static u8* hiniti_tex_table[31] = { + clk_win_suuji1_TA_tex_txt, clk_win_suuji2_TA_tex_txt, clk_win_suuji3_TA_tex_txt, clk_win_suuji4_TA_tex_txt, + clk_win_suuji5_TA_tex_txt, clk_win_suuji6_TA_tex_txt, clk_win_suuji7_TA_tex_txt, clk_win_suuji8_TA_tex_txt, + clk_win_suuji9_TA_tex_txt, clk_win_suuji10_TA_tex_txt, clk_win_suuji11_TA_tex_txt, clk_win_suuji12_TA_tex_txt, + clk_win_suuji13_TA_tex_txt, clk_win_suuji14_TA_tex_txt, clk_win_suuji15_TA_tex_txt, clk_win_suuji16_TA_tex_txt, + clk_win_suuji17_TA_tex_txt, clk_win_suuji18_TA_tex_txt, clk_win_suuji19_TA_tex_txt, clk_win_suuji20_TA_tex_txt, + clk_win_suuji21_TA_tex_txt, clk_win_suuji22_TA_tex_txt, clk_win_suuji23_TA_tex_txt, clk_win_suuji24_TA_tex_txt, + clk_win_suuji25_TA_tex_txt, clk_win_suuji26_TA_tex_txt, clk_win_suuji27_TA_tex_txt, clk_win_suuji28_TA_tex_txt, + clk_win_suuji29_TA_tex_txt, clk_win_suuji30_TA_tex_txt, clk_win_suuji31_TA_tex_txt + }; - static xyz_t set_pos_table[2] = { - { 64.0f, -70.0f, 0.0f }, - { 94.0f, -70.0f, 0.0f } - }; + static xyz_t set_pos_table[2] = { { 64.0f, -70.0f, 0.0f }, { 94.0f, -70.0f, 0.0f } }; - GRAPH* g = game->graph; - xyz_t* set_pos = &set_pos_table[pos_idx]; - Mtx* m; - int joint; - Banti_callback_c callback_data; + GRAPH* g = game->graph; + xyz_t* set_pos = &set_pos_table[pos_idx]; + Mtx* m; + int joint; + Banti_callback_c callback_data; - Matrix_push(); - Matrix_translate(set_pos->x, set_pos->y, set_pos->z, 1); + Matrix_push(); + Matrix_translate(set_pos->x, set_pos->y, set_pos->z, 1); - m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, anim->keyframe.skeleton->num_shown_joints); - callback_data.mtx = m; + m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, anim->keyframe.skeleton->num_shown_joints); + callback_data.mtx = m; - if (m != NULL) { - joint = 0; - callback_data.gfx_pp = gfx_pp; - callback_data.state = anim->state; + if (m != NULL) { + joint = 0; + callback_data.gfx_pp = gfx_pp; + callback_data.state = anim->state; - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_8, hiniti_tex_table[tex0_idx]); - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, hiniti_tex_table[tex1_idx]); + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_8, hiniti_tex_table[tex0_idx]); + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, hiniti_tex_table[tex1_idx]); + cKF_Si3_draw_SV_R_child(game, &anim->keyframe, &joint, &banti_draw_before, NULL, &callback_data, NULL); + } - cKF_Si3_draw_SV_R_child(game, &anim->keyframe, &joint, &banti_draw_before, NULL, &callback_data, NULL); - } - - Matrix_pull(); + Matrix_pull(); } static void banti_draw_hiduke(Gfx** gfx_pp, GAME_PLAY* play, int alpha) { - u8 a = alpha; + u8 a = alpha; - gDPSetPrimColor(gfx_pp[0]++, 0, a, 235, 255, 120, a); - gDPSetEnvColor(gfx_pp[0]++, 80, 40, 40, a); + gDPSetPrimColor(gfx_pp[0]++, 0, a, 235, 255, 120, a); + gDPSetEnvColor(gfx_pp[0]++, 80, 40, 40, a); - banti_draw_hiduke_sub(gfx_pp, (GAME*)play, &banti.month_anim, banti.displayed_time.month - 1, banti.next_time.month - 1, 0); - banti_draw_hiduke_sub(gfx_pp, (GAME*)play, &banti.day_anim, banti.displayed_time.day - 1, banti.next_time.day - 1, 1); + banti_draw_hiduke_sub(gfx_pp, (GAME*)play, &banti.month_anim, banti.displayed_time.month - 1, + banti.next_time.month - 1, 0); + banti_draw_hiduke_sub(gfx_pp, (GAME*)play, &banti.day_anim, banti.displayed_time.day - 1, banti.next_time.day - 1, + 1); } extern u8 clk_win_jikan0_TA_tex_txt[]; @@ -460,94 +437,82 @@ extern u8 clk_win_jikan8_TA_tex_txt[]; extern u8 clk_win_jikan9_TA_tex_txt[]; extern u8 clk_win_jikan_TA_tex_txt[]; -static void banti_draw_jikan_sub(Gfx** gfx_pp, GAME* game, Banti_anim_c* anim, int idx0, int idx1, int hide_zero, int pos_idx) { - static u8* jikan_tex_table[11] = { - clk_win_jikan0_TA_tex_txt, - clk_win_jikan1_TA_tex_txt, - clk_win_jikan2_TA_tex_txt, - clk_win_jikan3_TA_tex_txt, - clk_win_jikan4_TA_tex_txt, - clk_win_jikan5_TA_tex_txt, - clk_win_jikan6_TA_tex_txt, - clk_win_jikan7_TA_tex_txt, - clk_win_jikan8_TA_tex_txt, - clk_win_jikan9_TA_tex_txt, - clk_win_jikan_TA_tex_txt - }; +static void banti_draw_jikan_sub(Gfx** gfx_pp, GAME* game, Banti_anim_c* anim, int idx0, int idx1, int hide_zero, + int pos_idx) { + static u8* jikan_tex_table[11] = { clk_win_jikan0_TA_tex_txt, clk_win_jikan1_TA_tex_txt, clk_win_jikan2_TA_tex_txt, + clk_win_jikan3_TA_tex_txt, clk_win_jikan4_TA_tex_txt, clk_win_jikan5_TA_tex_txt, + clk_win_jikan6_TA_tex_txt, clk_win_jikan7_TA_tex_txt, clk_win_jikan8_TA_tex_txt, + clk_win_jikan9_TA_tex_txt, clk_win_jikan_TA_tex_txt }; - static xyz_t set_pos_table[4] = { - { 60.0f, -91.0f, 0.0f }, - { 76.0f, -91.0f, 0.0f }, - { 98.0f, -91.0f, 0.0f }, - { 113.0f, -91.0f, 0.0f } - }; + static xyz_t set_pos_table[4] = { + { 60.0f, -91.0f, 0.0f }, { 76.0f, -91.0f, 0.0f }, { 98.0f, -91.0f, 0.0f }, { 113.0f, -91.0f, 0.0f } + }; - GRAPH* g = game->graph; - xyz_t* set_pos = &set_pos_table[pos_idx]; - Mtx* m; - int joint; - Banti_callback_c callback_data; + GRAPH* g = game->graph; + xyz_t* set_pos = &set_pos_table[pos_idx]; + Mtx* m; + int joint; + Banti_callback_c callback_data; - Matrix_push(); - Matrix_translate(set_pos->x, set_pos->y, set_pos->z, 1); + Matrix_push(); + Matrix_translate(set_pos->x, set_pos->y, set_pos->z, 1); - if (hide_zero == TRUE) { - if (idx0 == 0) { - idx0 = 10; + if (hide_zero == TRUE) { + if (idx0 == 0) { + idx0 = 10; + } + + if (idx1 == 0) { + idx1 = 10; + } } - if (idx1 == 0) { - idx1 = 10; + m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, anim->keyframe.skeleton->num_shown_joints); + callback_data.mtx = m; + + if (m != NULL) { + joint = 0; + callback_data.gfx_pp = gfx_pp; + callback_data.state = anim->state; + + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_8, jikan_tex_table[idx0]); + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, jikan_tex_table[idx1]); + + cKF_Si3_draw_SV_R_child(game, &anim->keyframe, &joint, &banti_draw_before, NULL, &callback_data, NULL); } - } - m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, anim->keyframe.skeleton->num_shown_joints); - callback_data.mtx = m; - - if (m != NULL) { - joint = 0; - callback_data.gfx_pp = gfx_pp; - callback_data.state = anim->state; - - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_8, jikan_tex_table[idx0]); - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, jikan_tex_table[idx1]); - - - cKF_Si3_draw_SV_R_child(game, &anim->keyframe, &joint, &banti_draw_before, NULL, &callback_data, NULL); - } - - Matrix_pull(); + Matrix_pull(); } static void banti_draw_jikan(Gfx** gfx_pp, GAME_PLAY* play, int alpha) { - u8 a = alpha; - int now_hour; - int next_hour; + u8 a = alpha; + int now_hour; + int next_hour; - gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 255, a); - gDPSetEnvColor(gfx_pp[0]++, 60, 25, 10, a); + gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 255, a); + gDPSetEnvColor(gfx_pp[0]++, 60, 25, 10, a); - now_hour = banti.displayed_time.hour; - if (now_hour == 0 || now_hour == 12) { - now_hour = 12; - } - else if (now_hour > 11) { - now_hour -= 12; - } + now_hour = banti.displayed_time.hour; + if (now_hour == 0 || now_hour == 12) { + now_hour = 12; + } else if (now_hour > 11) { + now_hour -= 12; + } - next_hour = banti.next_time.hour; - if (next_hour == 0 || next_hour == 12) { - next_hour = 12; - } - else if (next_hour > 11) { - next_hour -= 12; - } + next_hour = banti.next_time.hour; + if (next_hour == 0 || next_hour == 12) { + next_hour = 12; + } else if (next_hour > 11) { + next_hour -= 12; + } - banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.hour_upper_anim, now_hour / 10, next_hour / 10, TRUE, 0); - banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.hour_lower_anim, now_hour % 10, next_hour % 10, FALSE, 1); + banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.hour_upper_anim, now_hour / 10, next_hour / 10, TRUE, 0); + banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.hour_lower_anim, now_hour % 10, next_hour % 10, FALSE, 1); - banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.min_upper_anim, banti.displayed_time.min / 10, banti.next_time.min / 10, FALSE, 2); - banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.min_lower_anim, banti.displayed_time.min % 10, banti.next_time.min % 10, FALSE, 3); + banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.min_upper_anim, banti.displayed_time.min / 10, + banti.next_time.min / 10, FALSE, 2); + banti_draw_jikan_sub(gfx_pp, (GAME*)play, &banti.min_lower_anim, banti.displayed_time.min % 10, + banti.next_time.min % 10, FALSE, 3); } extern u8 clk_win_pm_tex_rgb_ia8[]; @@ -569,124 +534,112 @@ extern Gfx clk_win_maru2T_model[]; extern Gfx clk_win_ampmT_model[]; extern void banti_draw(GAME_PLAY* play) { - static u8* week_tex_table[lbRTC_WEEK] = { - clk_win_sun_tex_rgb_ia8, - clk_win_mon_tex_rgb_ia8, - clk_win_tue_tex_rgb_ia8, - clk_win_wed_tex_rgb_ia8, - clk_win_thu_tex_rgb_ia8, - clk_win_fri_tex_rgb_ia8, - clk_win_sat_tex_rgb_ia8 - }; + static u8* week_tex_table[lbRTC_WEEK] = { clk_win_sun_tex_rgb_ia8, clk_win_mon_tex_rgb_ia8, clk_win_tue_tex_rgb_ia8, + clk_win_wed_tex_rgb_ia8, clk_win_thu_tex_rgb_ia8, clk_win_fri_tex_rgb_ia8, + clk_win_sat_tex_rgb_ia8 }; - if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELDTYPE_FG && mEv_CheckFirstIntro() != TRUE && banti.alpha > 0.01f) { - GRAPH* g = play->game.graph; - int poly_render = FALSE; - Mtx* m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, 1); + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELDTYPE_FG && mEv_CheckFirstIntro() != TRUE && banti.alpha > 0.01f) { + GRAPH* g = play->game.graph; + int poly_render = FALSE; + Mtx* m = (Mtx*)GRAPH_ALLOC_TYPE(g, Mtx, 1); - /* TODO: submenu mode enums */ - if (play->submenu.process_status != mSM_PROCESS_WAIT && play->submenu.mode > 2) { - poly_render = TRUE; + /* TODO: submenu mode enums */ + if (play->submenu.process_status != mSM_PROCESS_WAIT && play->submenu.mode > 2) { + poly_render = TRUE; + } + + OPEN_DISP(g); + + if (m != NULL) { + mFont_CulcOrthoMatrix(m); + + if (poly_render == TRUE) { + gSPMatrix(NOW_POLY_OPA_DISP++, m, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + } else { + gSPMatrix(NOW_FONT_DISP++, m, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); + } + } + + Matrix_scale(16.0f, 16.0f, 16.0f, 0); + + if (banti.disp_left == TRUE) { + Matrix_translate(-184.0f, 0.0f, 0.0f, 1); + } + + { + Gfx** gfx_pp; + u8* am_pm_tex = banti.displayed_time.hour < 12 ? clk_win_am_tex_rgb_ia8 : clk_win_pm_tex_rgb_ia8; + int alpha; + u8 a; + Gfx* gfx; + u32 rendermode0; + u32 rendermode1; + + if (poly_render == TRUE) { + gfx = NOW_POLY_OPA_DISP; + } else { + gfx = NOW_FONT_DISP; + } + + gfx_pp = &gfx; + + gSPMatrix(gfx_pp[0]++, _Matrix_to_Mtx_new(g), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + alpha = banti.alpha * 255.0f; + if (banti.alpha >= 0.4f) { + rendermode0 = G_RM_PASS; + rendermode1 = G_RM_XLU_SURF2; + } else { + rendermode0 = G_RM_PASS; + rendermode1 = G_RM_CLD_SURF2; + } + + gSPDisplayList(gfx_pp[0]++, clk_win_mode); + gDPSetRenderMode(gfx_pp[0]++, rendermode0, rendermode1); + + if (banti.displayed_time.weekday == lbRTC_SUNDAY) { + u8 a = alpha; + + gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 225, a); + gDPSetEnvColor(gfx_pp[0]++, 165, 30, 30, a); + } else { + u8 a = alpha; + + gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 225, a); + gDPSetEnvColor(gfx_pp[0]++, 80, 40, 0, a); + } + + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, week_tex_table[banti.displayed_time.weekday]); + gSPDisplayList(gfx_pp[0]++, clk_win_youbiT_model); + + if ((Common_Get(time.rtc_time).sec & 1) == 1) { + u8 a = alpha; + + gDPSetPrimColor(gfx_pp[0]++, 0, a, 215, 120, 0, a); + gDPSetEnvColor(gfx_pp[0]++, 70, 50, 50, a); + gSPDisplayList(gfx_pp[0]++, clk_win_maru2T_model); + } + + a = alpha; + gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 120, a); + gDPSetEnvColor(gfx_pp[0]++, 70, 10, 10, a); + gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_A, am_pm_tex); + gSPDisplayList(gfx_pp[0]++, clk_win_ampmT_model); + + gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 0, a); + gDPSetEnvColor(gfx_pp[0]++, 70, 50, 50, a); + gSPDisplayList(gfx_pp[0]++, clk_win_maruT_model); + + banti_draw_hiduke(&gfx, play, alpha); + banti_draw_jikan(&gfx, play, alpha); + + if (poly_render == TRUE) { + SET_POLY_OPA_DISP(*gfx_pp); + } else { + SET_FONT_DISP(*gfx_pp); + } + } + + CLOSE_DISP(g); } - - OPEN_DISP(g); - - if (m != NULL) { - mFont_CulcOrthoMatrix(m); - - if (poly_render == TRUE) { - gSPMatrix(NOW_POLY_OPA_DISP++, m, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - } - else { - gSPMatrix(NOW_FONT_DISP++, m, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION); - } - - } - - Matrix_scale(16.0f, 16.0f, 16.0f, 0); - - if (banti.disp_left == TRUE) { - Matrix_translate(-184.0f, 0.0f, 0.0f, 1); - } - - { - Gfx** gfx_pp; - u8* am_pm_tex = banti.displayed_time.hour < 12 ? clk_win_am_tex_rgb_ia8 : clk_win_pm_tex_rgb_ia8; - int alpha; - u8 a; - Gfx* gfx; - u32 rendermode0; - u32 rendermode1; - - if (poly_render == TRUE) { - gfx = NOW_POLY_OPA_DISP; - } - else { - gfx = NOW_FONT_DISP; - } - - gfx_pp = &gfx; - - gSPMatrix(gfx_pp[0]++, _Matrix_to_Mtx_new(g), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - alpha = banti.alpha * 255.0f; - if (banti.alpha >= 0.4f) { - rendermode0 = G_RM_PASS; - rendermode1 = G_RM_XLU_SURF2; - } - else { - rendermode0 = G_RM_PASS; - rendermode1 = G_RM_CLD_SURF2; - } - - gSPDisplayList(gfx_pp[0]++, clk_win_mode); - gDPSetRenderMode(gfx_pp[0]++, rendermode0, rendermode1); - - if (banti.displayed_time.weekday == lbRTC_SUNDAY) { - u8 a = alpha; - - gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 225, a); - gDPSetEnvColor(gfx_pp[0]++, 165, 30, 30, a); - } - else { - u8 a = alpha; - - gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 225, a); - gDPSetEnvColor(gfx_pp[0]++, 80, 40, 0, a); - } - - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_9, week_tex_table[banti.displayed_time.weekday]); - gSPDisplayList(gfx_pp[0]++, clk_win_youbiT_model); - - if ((Common_Get(time.rtc_time).sec & 1) == 1) { - u8 a = alpha; - - gDPSetPrimColor(gfx_pp[0]++, 0, a, 215, 120, 0, a); - gDPSetEnvColor(gfx_pp[0]++, 70, 50, 50, a); - gSPDisplayList(gfx_pp[0]++, clk_win_maru2T_model); - } - - a = alpha; - gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 120, a); - gDPSetEnvColor(gfx_pp[0]++, 70, 10, 10, a); - gSPSegment(gfx_pp[0]++, G_MWO_SEGMENT_A, am_pm_tex); - gSPDisplayList(gfx_pp[0]++, clk_win_ampmT_model); - - gDPSetPrimColor(gfx_pp[0]++, 0, a, 255, 255, 0, a); - gDPSetEnvColor(gfx_pp[0]++, 70, 50, 50, a); - gSPDisplayList(gfx_pp[0]++, clk_win_maruT_model); - - banti_draw_hiduke(&gfx, play, alpha); - banti_draw_jikan(&gfx, play, alpha); - - if (poly_render == TRUE) { - SET_POLY_OPA_DISP(*gfx_pp); - } - else { - SET_FONT_DISP(*gfx_pp); - } - } - - CLOSE_DISP(g); - } } diff --git a/src/m_board_ovl.c b/src/m_board_ovl.c index 231228f7..2aaf9832 100644 --- a/src/m_board_ovl.c +++ b/src/m_board_ovl.c @@ -757,7 +757,7 @@ static void mBD_roll_control(Submenu* submenu, mSM_MenuInfo_c* menu_info) { menu_info->speed[1] = 1.0f; } else if (dist > 2) { board_ovl->center_line = line - 2; - menu_info->speed[1] = -1.0f; + menu_info->speed[1] = 1.0f; } pos = (f32)((board_ovl->center_line - 2) * 16); @@ -1021,7 +1021,6 @@ static void mBD_set_point(Submenu* submenu, GAME* game, f32 x, f32 y) { CLOSE_DISP(graph); } -/* TODO: @nonmatching - float operation incorrectness in default switch case & cursol_draw call */ static void mBD_set_cursol(Submenu* submenu, GAME* game, f32 x, f32 y) { mBD_Ovl_c* board_ovl = submenu->overlay->board_ovl; @@ -1030,10 +1029,8 @@ static void mBD_set_cursol(Submenu* submenu, GAME* game, f32 x, f32 y) { } else { mED_Ovl_c* editor_ovl = submenu->overlay->editor_ovl; f32 ofs_x; - f32 ofs_y; - f32 t_x; - f32 t_y; f32 line; + f32 ofs_y; switch (board_ovl->field) { case mBD_FIELD_HEADER: { @@ -1044,32 +1041,33 @@ static void mBD_set_cursol(Submenu* submenu, GAME* game, f32 x, f32 y) { } ofs_x = (f32)editor_ovl->_26 + (f32)ox + -7.0f; - ofs_y = 0.0f; line = 0.0f; + ofs_y = 0.0f; break; } case mBD_FIELD_BODY: { ofs_x = (f32)editor_ovl->_26 + -7.0f; ofs_y = 12.0f; - line = (f32)(editor_ovl->_24 + 1); + line = editor_ovl->_24 + 1; break; } default: { - ofs_x = 192.0f - (f32)mFont_GetStringWidth(board_ovl->mail.content.footer, - board_ovl->lengths[mBD_FIELD_FOOTER], TRUE); + int width = + mFont_GetStringWidth(board_ovl->mail.content.footer, board_ovl->lengths[mBD_FIELD_FOOTER], TRUE); + + ofs_x = 192.0f; + ofs_x -= width; + ofs_x += editor_ovl->_26 + -7.0f; line = 7.0f; - ofs_x += (f32)editor_ovl->_26 + -7.0f; - // ofs_x = tmp + tmp2; ofs_y = 24.0f; break; } } - t_x = x + 64.0f + ofs_x; - t_y = (line * 16.0f); - (*submenu->overlay->editor_ovl->cursol_draw)(submenu, game, x + 64.0f + ofs_x, -y + 36.0f - t_y - ofs_y); + (*submenu->overlay->editor_ovl->cursol_draw)(submenu, game, 64.0f + x + ofs_x, + 36.0f - ((y - line * 16.0f) - ofs_y)); } } @@ -1096,7 +1094,7 @@ static void mBD_set_writing_body(Submenu* submenu, mSM_MenuInfo_c* menu_info, GA mBD_Ovl_c* board_ovl = submenu->overlay->board_ovl; u8* str = board_ovl->mail.content.body; u8* str_p; - u8* str_end_p = str + submenu->overlay->board_ovl->lengths[mBD_FIELD_BODY]; + u8* str_end_p = str + board_ovl->lengths[mBD_FIELD_BODY]; int body_len; int i; int width = 0; @@ -1148,18 +1146,18 @@ static void mBD_set_writing_body(Submenu* submenu, mSM_MenuInfo_c* menu_info, GA } } -/* TODO: @nonmatching - prolog instruction swap (likely due to way variables are accessed) */ static void mBD_set_writing_header(Submenu* submenu, GAME* game, mSM_MenuInfo_c* menu_info, f32 x, f32 y, rgba_t* color) { mBD_Ovl_c* board_ovl = submenu->overlay->board_ovl; Mail_ct_c* mail_content = &board_ovl->mail.content; u8* str_p; - int i = mail_content->header_back_start; + u8* header_back_start_p = &mail_content->header_back_start; + int i = *header_back_start_p; int header_len = 0; int len; if (menu_info->proc_status == mSM_OVL_PROC_PLAY) { - if (menu_info->data0 == mSM_BD_OPEN_WRITE_ISLAND) { + if (menu_info->data0 == 3) { mFont_SetLineStrings(game, mail_content->header, board_ovl->lengths[mBD_FIELD_HEADER], x, y, color->r, color->g, color->b, 255, FALSE, TRUE, 1.0f, 1.0f, mFont_MODE_POLY); } else { @@ -1169,8 +1167,8 @@ static void mBD_set_writing_header(Submenu* submenu, GAME* game, mSM_MenuInfo_c* len = board_ovl->header_name_len; } - mFont_SetLineStrings(game, mail_content->header, mail_content->header_back_start, x, y, color->r, color->g, - color->b, 255, FALSE, TRUE, 1.0f, 1.0f, mFont_MODE_POLY); + mFont_SetLineStrings(game, mail_content->header, *header_back_start_p, x, y, color->r, color->g, color->b, + 255, FALSE, TRUE, 1.0f, 1.0f, mFont_MODE_POLY); str_p = mail_content->header; while (i-- != 0) { @@ -1192,7 +1190,7 @@ static void mBD_set_writing_header(Submenu* submenu, GAME* game, mSM_MenuInfo_c* } else { u8 tmp_header[MAIL_HEADER_LEN + PLAYER_NAME_LEN]; - if (menu_info->data0 == mSM_BD_OPEN_WRITE_ISLAND || menu_info->data0 == mSM_BD_OPEN_READ_ISLAND) { + if (menu_info->data0 == 3 || menu_info->data0 == 4) { mem_copy(tmp_header, mail_content->header, board_ovl->lengths[mBD_FIELD_HEADER]); len = board_ovl->lengths[mBD_FIELD_HEADER]; } else if (mail_content->mail_type == mMl_TYPE_SHOP_SALE_LEAFLET || diff --git a/src/m_calendar.c b/src/m_calendar.c index 460eba3a..5376da5c 100644 --- a/src/m_calendar.c +++ b/src/m_calendar.c @@ -4,387 +4,360 @@ #include "m_common_data.h" static void mCD_calendar_clear_interval(mCD_player_calendar_c* calendar, int interval) { - u8 months[lbRTC_MONTHS_MAX]; - int i; + u8 months[lbRTC_MONTHS_MAX]; + int i; - for (i = 0; i < lbRTC_MONTHS_MAX; i++) { - months[i] = 0; - } - - for (i = 0; i < interval; i++) { - months[(calendar->month + i) % lbRTC_MONTHS_MAX] = 1; - } - - for (i = 0; i > interval; i--) { - months[(calendar->month + (lbRTC_MONTHS_MAX - 1) + i) % lbRTC_MONTHS_MAX] = 1; - } - - for (i = 0; i < lbRTC_MONTHS_MAX; i++) { - if (months[i] == 1) { - calendar->played_days[i] = 0; - calendar->event_days[i] = 0; + for (i = 0; i < lbRTC_MONTHS_MAX; i++) { + months[i] = 0; } - } - if (months[lbRTC_JUNE - 1] == 1) { - calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY; // 1 - } + for (i = 0; i < interval; i++) { + months[(calendar->month + i) % lbRTC_MONTHS_MAX] = 1; + } - if (months[lbRTC_JULY - 1] == 1) { - calendar->event_flags &= ~mCD_FLAG_TOWN_DAY; // 2 - } + for (i = 0; i > interval; i--) { + months[(calendar->month + (lbRTC_MONTHS_MAX - 1) + i) % lbRTC_MONTHS_MAX] = 1; + } - if (months[lbRTC_AUGUST - 1] == 1) { - calendar->event_flags &= ~(mCD_FLAG_METEOR_SHOWER | mCD_FLAG_FOUNDERS_DAY); // 12 (4 | 8) - } + for (i = 0; i < lbRTC_MONTHS_MAX; i++) { + if (months[i] == 1) { + calendar->played_days[i] = 0; + calendar->event_days[i] = 0; + } + } - if (months[lbRTC_SEPTEMBER - 1] == 1) { - calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9; // 16 - } + if (months[lbRTC_JUNE - 1] == 1) { + calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY; // 1 + } - if (months[lbRTC_OCTOBER - 1] == 1) { - calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10; // 32 - } + if (months[lbRTC_JULY - 1] == 1) { + calendar->event_flags &= ~mCD_FLAG_TOWN_DAY; // 2 + } - if (months[lbRTC_NOVEMBER - 1] == 1) { - calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY; // 64 - } + if (months[lbRTC_AUGUST - 1] == 1) { + calendar->event_flags &= ~(mCD_FLAG_METEOR_SHOWER | mCD_FLAG_FOUNDERS_DAY); // 12 (4 | 8) + } + + if (months[lbRTC_SEPTEMBER - 1] == 1) { + calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9; // 16 + } + + if (months[lbRTC_OCTOBER - 1] == 1) { + calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10; // 32 + } + + if (months[lbRTC_NOVEMBER - 1] == 1) { + calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY; // 64 + } } -static void mCD_calendar_clear_day(mCD_player_calendar_c* calendar, lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day) { - lbRTC_day_t days = lbRTC_GetDaysByMonth(year, month); - int i; +static void mCD_calendar_clear_day(mCD_player_calendar_c* calendar, lbRTC_year_t year, lbRTC_month_t month, + lbRTC_day_t day) { + lbRTC_day_t days = lbRTC_GetDaysByMonth(year, month); + int i; - if (days != day) { - u32 days_bitfield = 0; - for (i = day; i < 31; i++) { - days_bitfield |= (1 << i); + if (days != day) { + u32 days_bitfield = 0; + for (i = day; i < 31; i++) { + days_bitfield |= (1 << i); + } + + calendar->played_days[month - 1] &= ~days_bitfield; + calendar->event_days[month - 1] &= ~days_bitfield; + + switch (month) { + case lbRTC_JUNE: { + lbRTC_weekday_t weekday = lbRTC_Week(year, month, day + 1); + + /* Calculate the current week and verify it's not the last week */ + if ((day - weekday) / lbRTC_WEEK + 1 < 3) { + calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY; + } + + break; + } + + case lbRTC_JULY: { + if (day < Save_Get(town_day)) { + calendar->event_flags &= ~mCD_FLAG_TOWN_DAY; + } + + break; + } + + case lbRTC_AUGUST: { + if (day < 12) { + calendar->event_flags &= ~mCD_FLAG_METEOR_SHOWER; + } + + if (day < 21) { + calendar->event_flags &= ~mCD_FLAG_FOUNDERS_DAY; + } + + break; + } + + case lbRTC_SEPTEMBER: { + lbRTC_ymd_c harvest_moon_day; + + lbRk_HarvestMoonDay(&harvest_moon_day, year); + + if (month == harvest_moon_day.month && day < harvest_moon_day.day) { + calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9; + } + + break; + } + + case lbRTC_OCTOBER: { + lbRTC_ymd_c harvest_moon_day; + + lbRk_HarvestMoonDay(&harvest_moon_day, year); + + if (month == harvest_moon_day.month && day < harvest_moon_day.day) { + calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10; + } + + break; + } + + case lbRTC_NOVEMBER: { + if (day < 11) { + calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY; + } + + break; + } + } } - - calendar->played_days[month - 1] &= ~days_bitfield; - calendar->event_days[month - 1] &= ~days_bitfield; - - switch (month) { - case lbRTC_JUNE: - { - lbRTC_weekday_t weekday = lbRTC_Week(year, month, day + 1); - - /* Calculate the current week and verify it's not the last week */ - if ((day - weekday) / lbRTC_WEEK + 1 < 3) { - calendar->event_flags &= ~mCD_FLAG_MOTHERS_DAY; - } - - break; - } - - case lbRTC_JULY: - { - if (day < Save_Get(town_day)) { - calendar->event_flags &= ~mCD_FLAG_TOWN_DAY; - } - - break; - } - - case lbRTC_AUGUST: - { - if (day < 12) { - calendar->event_flags &= ~mCD_FLAG_METEOR_SHOWER; - } - - if (day < 21) { - calendar->event_flags &= ~mCD_FLAG_FOUNDERS_DAY; - } - - break; - } - - case lbRTC_SEPTEMBER: - { - lbRTC_ymd_c harvest_moon_day; - - lbRk_HarvestMoonDay(&harvest_moon_day, year); - - if (month == harvest_moon_day.month && day < harvest_moon_day.day) { - calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_9; - } - - break; - } - - case lbRTC_OCTOBER: - { - lbRTC_ymd_c harvest_moon_day; - - lbRk_HarvestMoonDay(&harvest_moon_day, year); - - if (month == harvest_moon_day.month && day < harvest_moon_day.day) { - calendar->event_flags &= ~mCD_FLAG_HARVEST_MOON_10; - } - - break; - } - - case lbRTC_NOVEMBER: - { - if (day < 11) { - calendar->event_flags &= ~mCD_FLAG_OFFICERS_DAY; - } - - break; - } - } - } } static int mCD_GetIntervalMonths(lbRTC_year_t y0, lbRTC_month_t m0, lbRTC_year_t y1, lbRTC_month_t m1) { - return (m1 - m0) + (y1 - y0) * lbRTC_MONTHS_MAX; + return (m1 - m0) + (y1 - y0) * lbRTC_MONTHS_MAX; } extern void mCD_calendar_clear(int player_no) { - Private_c* priv = Save_Get(private); + Private_c* priv = Save_Get(private_data); - if (player_no == -1) { - player_no = Common_Get(player_no); - } + if (player_no == -1) { + player_no = Common_Get(player_no); + } - if (player_no != mPr_FOREIGNER) { - mem_clear((u8*)&priv[player_no].calendar, sizeof(mCD_player_calendar_c), 0); - } + if (player_no != mPr_FOREIGNER) { + mem_clear((u8*)&priv[player_no].calendar, sizeof(mCD_player_calendar_c), 0); + } } static int mCD_calendar_check_harvest_moon_viewing(mCD_player_calendar_c* calendar, lbRTC_month_t month) { - int res = FALSE; + int res = FALSE; - switch (month) { - case lbRTC_SEPTEMBER: - { - if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_9) != 0) { - res = TRUE; - } + switch (month) { + case lbRTC_SEPTEMBER: { + if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_9) != 0) { + res = TRUE; + } - break; + break; + } + + case lbRTC_OCTOBER: { + if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_10) != 0) { + res = TRUE; + } + + break; + } } - case lbRTC_OCTOBER: - { - if ((calendar->event_flags & mCD_FLAG_HARVEST_MOON_10) != 0) { - res = TRUE; - } - - break; - } - } - - return res; + return res; } extern void mCD_calendar_check_delete(int player_no, lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day) { - if (player_no == -1) { - player_no = Common_Get(player_no); - } - - if (player_no != mPr_FOREIGNER) { - mCD_player_calendar_c* calendar = &Save_Get(private[player_no]).calendar; - - if (calendar->year == 0) { - mCD_calendar_clear(-1); + if (player_no == -1) { + player_no = Common_Get(player_no); } - else { - int interval = mCD_GetIntervalMonths(calendar->year, calendar->month, year, month); - if (interval >= lbRTC_MONTHS_MAX || interval <= -lbRTC_MONTHS_MAX) { - mCD_calendar_clear(-1); // clear entire calendar since interval is >= 1 year - } - else { - if (interval != 0) { - mCD_calendar_clear_interval(calendar, interval); // clear only interval months + if (player_no != mPr_FOREIGNER) { + mCD_player_calendar_c* calendar = &Save_Get(private_data[player_no]).calendar; + + if (calendar->year == 0) { + mCD_calendar_clear(-1); + } else { + int interval = mCD_GetIntervalMonths(calendar->year, calendar->month, year, month); + + if (interval >= lbRTC_MONTHS_MAX || interval <= -lbRTC_MONTHS_MAX) { + mCD_calendar_clear(-1); // clear entire calendar since interval is >= 1 year + } else { + if (interval != 0) { + mCD_calendar_clear_interval(calendar, interval); // clear only interval months + } + + mCD_calendar_clear_day(calendar, year, month, day); // clear days + } } - - mCD_calendar_clear_day(calendar, year, month, day); // clear days - } } - } } extern void mCD_calendar_wellcome_on() { - mCD_player_calendar_c* calendar = &Common_Get(now_private)->calendar; + mCD_player_calendar_c* calendar = &Common_Get(now_private)->calendar; - if (Common_Get(player_no) != mPr_FOREIGNER) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + if (Common_Get(player_no) != mPr_FOREIGNER) { + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - mCD_calendar_check_delete(-1, rtc_time->year, rtc_time->month, rtc_time->day); - calendar->played_days[rtc_time->month - 1] |= (1 << (rtc_time->day - 1)); - calendar->year = rtc_time->year; - calendar->month = rtc_time->month; - } + mCD_calendar_check_delete(-1, rtc_time->year, rtc_time->month, rtc_time->day); + calendar->played_days[rtc_time->month - 1] |= (1 << (rtc_time->day - 1)); + calendar->year = rtc_time->year; + calendar->month = rtc_time->month; + } } extern void mCD_calendar_event_on(lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day, u8 event) { - if (Common_Get(player_no) != mPr_FOREIGNER) { - mCD_player_calendar_c* calendar; + if (Common_Get(player_no) != mPr_FOREIGNER) { + mCD_player_calendar_c* calendar; - mCD_calendar_check_delete(-1, year, month, day); - calendar = &Save_Get(private[Common_Get(player_no)]).calendar; + mCD_calendar_check_delete(-1, year, month, day); + calendar = &Save_Get(private_data[Common_Get(player_no)]).calendar; - switch (event) { - case 11: - { - calendar->event_flags |= mCD_FLAG_MOTHERS_DAY; + switch (event) { + case 11: { + calendar->event_flags |= mCD_FLAG_MOTHERS_DAY; - break; - } + break; + } - case 4: - { - calendar->event_flags |= mCD_FLAG_TOWN_DAY; + case 4: { + calendar->event_flags |= mCD_FLAG_TOWN_DAY; - break; - } + break; + } - case 16: - { - calendar->event_flags |= mCD_FLAG_METEOR_SHOWER; + case 16: { + calendar->event_flags |= mCD_FLAG_METEOR_SHOWER; - break; - } + break; + } - case 1: - { - calendar->event_flags |= mCD_FLAG_FOUNDERS_DAY; + case 1: { + calendar->event_flags |= mCD_FLAG_FOUNDERS_DAY; - break; - } + break; + } - case 17: - { - switch (month) { - case lbRTC_SEPTEMBER: - { - calendar->event_flags |= mCD_FLAG_HARVEST_MOON_9; + case 17: { + switch (month) { + case lbRTC_SEPTEMBER: { + calendar->event_flags |= mCD_FLAG_HARVEST_MOON_9; - break; - } + break; + } - case lbRTC_OCTOBER: - { - calendar->event_flags |= mCD_FLAG_HARVEST_MOON_10; + case lbRTC_OCTOBER: { + calendar->event_flags |= mCD_FLAG_HARVEST_MOON_10; - break; - } + break; + } + } + + break; + } + + case 19: { + calendar->event_flags |= mCD_FLAG_OFFICERS_DAY; + + break; + } + + case 255: { + break; + } + + default: { + calendar->event_days[month - 1] |= (1 << (day - 1)); + + break; + } } - - break; - } - - case 19: - { - calendar->event_flags |= mCD_FLAG_OFFICERS_DAY; - - break; - } - - case 255: - { - break; - } - - default: - { - calendar->event_days[month - 1] |= (1 << (day - 1)); - - break; - } } - } } extern int mCD_calendar_event_check(lbRTC_year_t year, lbRTC_month_t month, lbRTC_day_t day, int player_no, u8 event) { - int res = FALSE; + int res = FALSE; - if (player_no == -1) { - player_no = Common_Get(player_no); - } - - if (player_no != mPr_FOREIGNER) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - - int interval = (rtc_time->month - month) + (rtc_time->year - year) * lbRTC_MONTHS_MAX; - - if (interval >= 0 && interval < lbRTC_MONTHS_MAX) { - mCD_player_calendar_c* calendar = &Save_Get(private[player_no]).calendar; - - switch (event) { - case 11: - { - if (calendar->event_flags & mCD_FLAG_MOTHERS_DAY) { - res = TRUE; - } - - break; - } - - case 4: - { - if (calendar->event_flags & mCD_FLAG_TOWN_DAY) { - res = TRUE; - } - - break; - } - - case 16: - { - if (calendar->event_flags & mCD_FLAG_METEOR_SHOWER) { - res = TRUE; - } - - break; - } - - case 1: - { - if (calendar->event_flags & mCD_FLAG_FOUNDERS_DAY) { - res = TRUE; - } - - break; - } - - case 17: - { - if (mCD_calendar_check_harvest_moon_viewing(calendar, month) == TRUE) { - res = TRUE; - } - - break; - } - - case 19: - { - if (calendar->event_flags & mCD_FLAG_OFFICERS_DAY) { - res = TRUE; - } - - break; - } - - case 255: - { - break; - } - - default: - { - if (calendar->event_days[month - 1] & (1 << (day - 1))) { - res = TRUE; - } - - break; - } - } + if (player_no == -1) { + player_no = Common_Get(player_no); } - } - return res; + if (player_no != mPr_FOREIGNER) { + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + + int interval = (rtc_time->month - month) + (rtc_time->year - year) * lbRTC_MONTHS_MAX; + + if (interval >= 0 && interval < lbRTC_MONTHS_MAX) { + mCD_player_calendar_c* calendar = &Save_Get(private_data[player_no]).calendar; + + switch (event) { + case 11: { + if (calendar->event_flags & mCD_FLAG_MOTHERS_DAY) { + res = TRUE; + } + + break; + } + + case 4: { + if (calendar->event_flags & mCD_FLAG_TOWN_DAY) { + res = TRUE; + } + + break; + } + + case 16: { + if (calendar->event_flags & mCD_FLAG_METEOR_SHOWER) { + res = TRUE; + } + + break; + } + + case 1: { + if (calendar->event_flags & mCD_FLAG_FOUNDERS_DAY) { + res = TRUE; + } + + break; + } + + case 17: { + if (mCD_calendar_check_harvest_moon_viewing(calendar, month) == TRUE) { + res = TRUE; + } + + break; + } + + case 19: { + if (calendar->event_flags & mCD_FLAG_OFFICERS_DAY) { + res = TRUE; + } + + break; + } + + case 255: { + break; + } + + default: { + if (calendar->event_days[month - 1] & (1 << (day - 1))) { + res = TRUE; + } + + break; + } + } + } + } + + return res; } diff --git a/src/m_choice_main_appear.c_inc b/src/m_choice_main_appear.c_inc index 7d18642f..47355226 100644 --- a/src/m_choice_main_appear.c_inc +++ b/src/m_choice_main_appear.c_inc @@ -1,48 +1,46 @@ static int mChoice_Main_Appear_SetScale(mChoice_c* choice, GAME* game) { - int res; - const f32 max = 10.2f; + int res; - if (choice->timer < max) { - f32 scale; - - choice->timer += 1.0f; - scale = get_percent_forAccelBrake(choice->timer, 0.0f, max, 0.0f, 0.0f); - choice->scale = scale; - choice->center_x = choice->center_x_begin + scale * (choice->center_x_target - choice->center_x_begin); - choice->center_y = choice->center_y_begin + scale * (choice->center_y_target - choice->center_y_begin); - res = FALSE; - } - else { - choice->timer = 0.0f; - choice->scale = 1.0f; - choice->center_x = choice->center_x_target; - choice->center_y = choice->center_y_target; - res = TRUE; - } + if (choice->timer < 10.2f) { + f32 scale; - return res; + choice->timer += 1.0f; + scale = get_percent_forAccelBrake(choice->timer, 0.0f, 10.2f, 0.0f, 0.0f); + choice->scale = scale; + choice->center_x = choice->center_x_begin + scale * (choice->center_x_target - choice->center_x_begin); + choice->center_y = choice->center_y_begin + scale * (choice->center_y_target - choice->center_y_begin); + res = FALSE; + } else { + choice->timer = 0.0f; + choice->scale = 1.0f; + choice->center_x = choice->center_x_target; + choice->center_y = choice->center_y_target; + res = TRUE; + } + + return res; } static void mChoice_request_main_index_fromAppear(mChoice_c* choice, GAME* game, int open_flag) { - if (open_flag) { - mChoice_Change_request_main_index(choice, mChoice_MAIN_NORMAL); - } + if (open_flag) { + mChoice_Change_request_main_index(choice, mChoice_MAIN_NORMAL); + } } static void mChoice_Main_Appear(mChoice_c* choice, GAME* game) { - int open_flag = mChoice_Main_Appear_SetScale(choice, game); + int open_flag = mChoice_Main_Appear_SetScale(choice, game); - mChoice_request_main_index_fromAppear(choice, game, open_flag); - mChoice_MainSetup(choice, game); + mChoice_request_main_index_fromAppear(choice, game, open_flag); + mChoice_MainSetup(choice, game); } static void mChoice_MainSetup_Appear(mChoice_c* choice, GAME* game) { - choice->scale = 0.0f; - choice->main_index = mChoice_MAIN_APPEAR; - choice->requested_main_index = -1; - choice->window_visible_flag = TRUE; - choice->timer = 0.0f; - mChoice_Clear_ChoseNum(choice); - mChoice_sound_SENTAKU_OPEN(); - mChoice_Set_DisplayScaleAndDisplayPos(choice); + choice->scale = 0.0f; + choice->main_index = mChoice_MAIN_APPEAR; + choice->requested_main_index = -1; + choice->window_visible_flag = TRUE; + choice->timer = 0.0f; + mChoice_Clear_ChoseNum(choice); + mChoice_sound_SENTAKU_OPEN(); + mChoice_Set_DisplayScaleAndDisplayPos(choice); } diff --git a/src/m_choice_main_disappear.c_inc b/src/m_choice_main_disappear.c_inc index cab66910..48c653b9 100644 --- a/src/m_choice_main_disappear.c_inc +++ b/src/m_choice_main_disappear.c_inc @@ -1,56 +1,51 @@ static int mChoice_Main_Disappear_SetScale(mChoice_c* choice, GAME* game) { - const f32 max = 10.2f; - - if (choice->timer < max) { - f32 scale; - - choice->timer += 1.0f; - scale = 1.0f - get_percent_forAccelBrake(choice->timer, 0.0f, max, 0.0f, 0.0f); - choice->scale = scale; - choice->center_x = choice->center_x_begin + scale * (choice->center_x_target - choice->center_x_begin); - choice->center_y = choice->center_y_begin + scale * (choice->center_y_target - choice->center_y_begin); - return FALSE; - } - else { - choice->timer = 0.0f; - choice->scale = 0.0f; - choice->center_x = choice->center_x_begin; - choice->center_y = choice->center_y_begin; - return TRUE; - } + if (choice->timer < 10.2f) { + f32 scale; + + choice->timer += 1.0f; + scale = 1.0f - get_percent_forAccelBrake(choice->timer, 0.0f, 10.2f, 0.0f, 0.0f); + choice->scale = scale; + choice->center_x = choice->center_x_begin + scale * (choice->center_x_target - choice->center_x_begin); + choice->center_y = choice->center_y_begin + scale * (choice->center_y_target - choice->center_y_begin); + return FALSE; + } else { + choice->timer = 0.0f; + choice->scale = 0.0f; + choice->center_x = choice->center_x_begin; + choice->center_y = choice->center_y_begin; + return TRUE; + } } static void mChoice_request_main_index_fromDisappear(mChoice_c* choice, GAME* game, int closed_flag) { - if (closed_flag) { - mChoice_Change_request_main_index(choice, mChoice_MAIN_HIDE); - } + if (closed_flag) { + mChoice_Change_request_main_index(choice, mChoice_MAIN_HIDE); + } } static void mChoice_Main_Disappear(mChoice_c* choice, GAME* game) { - int closed_flag = mChoice_Main_Disappear_SetScale(choice, game); + int closed_flag = mChoice_Main_Disappear_SetScale(choice, game); - mChoice_request_main_index_fromDisappear(choice, game, closed_flag); - mChoice_MainSetup(choice, game); + mChoice_request_main_index_fromDisappear(choice, game, closed_flag); + mChoice_MainSetup(choice, game); } static void mChoice_MainSetup_Disappear(mChoice_c* choice, GAME* game) { - if (choice->no_b_flag && choice->selected_choice_idx == (choice->data.choice_num - 1)) { - if (choice->no_close_flag) { - mChoice_sound_ZOOMDOWN_LONG(); - mMsg_Get_base_window_p()->status_flags |= mMsg_STATUS_FLAG_NO_ZOOMDOWN; + if (choice->no_b_flag && choice->selected_choice_idx == (choice->data.choice_num - 1)) { + if (choice->no_close_flag) { + mChoice_sound_ZOOMDOWN_LONG(); + mMsg_Get_base_window_p()->status_flags |= mMsg_STATUS_FLAG_NO_ZOOMDOWN; + } else { + mChoice_sound_ZOOMDOWN_SHORT(); + } + } else { + mChoice_sound_SENTAKU_KETTEI(); } - else { - mChoice_sound_ZOOMDOWN_SHORT(); - } - } - else { - mChoice_sound_SENTAKU_KETTEI(); - } - choice->scale = 1.0f; - choice->main_index = mChoice_MAIN_DISAPPEAR; - choice->requested_main_index = -1; - choice->window_visible_flag = TRUE; - choice->timer = 0.0f; - choice->font_visible_flag = FALSE; + choice->scale = 1.0f; + choice->main_index = mChoice_MAIN_DISAPPEAR; + choice->requested_main_index = -1; + choice->window_visible_flag = TRUE; + choice->timer = 0.0f; + choice->font_visible_flag = FALSE; } diff --git a/src/m_demo.c b/src/m_demo.c index 7e43c6b3..d25b9afd 100644 --- a/src/m_demo.c +++ b/src/m_demo.c @@ -9,1183 +9,1097 @@ #include "_mem.h" /* Z-X */ -static f32 direct_vector[mDemo_DIRECT_NUM][2] = { - { -1.0f, 0.0f }, - { -F_SQRT2, F_SQRT2 }, - { 0.0f, 1.0f }, - { F_SQRT2, F_SQRT2 }, - { 1.0f, 0.0f }, - { F_SQRT2, -F_SQRT2 }, - { 0.0f, -1.0f }, - { -F_SQRT2, -F_SQRT2 } -}; +static f32 direct_vector[mDemo_DIRECT_NUM][2] = { { -1.0f, 0.0f }, { -F_SQRT2, F_SQRT2 }, { 0.0f, 1.0f }, + { F_SQRT2, F_SQRT2 }, { 1.0f, 0.0f }, { F_SQRT2, -F_SQRT2 }, + { 0.0f, -1.0f }, { -F_SQRT2, -F_SQRT2 } }; -static s16 direct_back_angle[mDemo_DIRECT_NUM] = { - 0x0000, - 0xE000, - 0xC000, - 0xA000, - 0x8000, - 0x6000, - 0x4000, - 0x2000 -}; +static s16 direct_back_angle[mDemo_DIRECT_NUM] = { 0x0000, 0xE000, 0xC000, 0xA000, 0x8000, 0x6000, 0x4000, 0x2000 }; static mDemo_Data_c demo_data; static mDemo_Data_c* const demo = &demo_data; static int mDemo_Check_talk_type() { - int res = FALSE; + int res = FALSE; - switch (demo->current.type) { - case mDemo_TYPE_TALK: - case mDemo_TYPE_SPEAK: - case mDemo_TYPE_REPORT: - case mDemo_TYPE_SPEECH: - res = TRUE; - break; - } + switch (demo->current.type) { + case mDemo_TYPE_TALK: + case mDemo_TYPE_SPEAK: + case mDemo_TYPE_REPORT: + case mDemo_TYPE_SPEECH: + res = TRUE; + break; + } - return res; + return res; } extern ACTOR* mDemo_Get_talk_actor() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->current.actor; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->current.actor; + } - return NULL; + return NULL; } /* @unused @fabricated */ extern void mDemo_Set_speaker_actor(ACTOR* actor) { - demo->current.actor = actor; + demo->current.actor = actor; } extern void mDemo_Set_OrderValue(int type, int idx, u16 value) { - if (type >= 0 && type < mDemo_ORDER_NUM && idx >= 0 && idx < mDemo_ORDER_VALUE_MAX) { - demo->order_data[type][idx] = value; - } + if (type >= 0 && type < mDemo_ORDER_NUM && idx >= 0 && idx < mDemo_ORDER_VALUE_MAX) { + demo->order_data[type][idx] = value; + } } extern u16 mDemo_Get_OrderValue(int type, int idx) { - if (type >= 0 && type < mDemo_ORDER_NUM && idx >= 0 && idx < mDemo_ORDER_VALUE_MAX) { - return demo->order_data[type][idx]; - } + if (type >= 0 && type < mDemo_ORDER_NUM && idx >= 0 && idx < mDemo_ORDER_VALUE_MAX) { + return demo->order_data[type][idx]; + } - return 0; + return 0; } static void mDemo_Init_OrderValue() { - int i; - int j; + int i; + int j; - for (i = 0; i < mDemo_ORDER_NUM; i++) { - for (j = 0; j < mDemo_ORDER_VALUE_MAX; j++) { - demo->order_data[i][j] = 0; + for (i = 0; i < mDemo_ORDER_NUM; i++) { + for (j = 0; j < mDemo_ORDER_VALUE_MAX; j++) { + demo->order_data[i][j] = 0; + } } - } } extern void mDemo_Set_msg_num(int msg_num) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.msg_no = msg_num; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.msg_no = msg_num; + } } extern int mDemo_Get_Talk_Actors(ACTOR** speaker, ACTOR** listener) { - if (mDemo_Check_talk_type() == TRUE) { - - speaker[0] = demo->speaker_actor; - listener[0] = demo->listen_actor; - return TRUE; - } - else { - speaker[0] = NULL; - listener[0] = NULL; - return FALSE; - } + if (mDemo_Check_talk_type() == TRUE) { + + speaker[0] = demo->speaker_actor; + listener[0] = demo->listen_actor; + return TRUE; + } else { + speaker[0] = NULL; + listener[0] = NULL; + return FALSE; + } } extern void mDemo_Set_change_player_destiny(s8 destiny) { - demo->change_player_destiny = destiny; + demo->change_player_destiny = destiny; } static int mDemo_Get_change_player_destiny() { - return demo->change_player_destiny; + return demo->change_player_destiny; } static void mDemo_Clear_change_player_destiny() { - mDemo_Set_change_player_destiny(-1); + mDemo_Set_change_player_destiny(-1); } static void mDemo_Copy_change_player_destiny() { - if (mDemo_Get_change_player_destiny() >= 0) { - Private_c* priv = Common_Get(now_private); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + if (mDemo_Get_change_player_destiny() >= 0) { + Private_c* priv = Common_Get(now_private); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - priv->destiny.received_time.sec = rtc_time->sec; - priv->destiny.received_time.min = rtc_time->min; - priv->destiny.received_time.hour = rtc_time->hour; - priv->destiny.received_time.day = rtc_time->day; - priv->destiny.received_time.weekday = rtc_time->weekday; - priv->destiny.received_time.month = rtc_time->month; - priv->destiny.received_time.year = rtc_time->year; - priv->destiny.type = mDemo_Get_change_player_destiny(); - mDemo_Clear_change_player_destiny(); - } + priv->destiny.received_time.sec = rtc_time->sec; + priv->destiny.received_time.min = rtc_time->min; + priv->destiny.received_time.hour = rtc_time->hour; + priv->destiny.received_time.day = rtc_time->day; + priv->destiny.received_time.weekday = rtc_time->weekday; + priv->destiny.received_time.month = rtc_time->month; + priv->destiny.received_time.year = rtc_time->year; + priv->destiny.type = mDemo_Get_change_player_destiny(); + mDemo_Clear_change_player_destiny(); + } } extern void mDemo_Set_use_zoom_sound(u8 use_zoom_sound) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.use_zoom_sound = use_zoom_sound; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.use_zoom_sound = use_zoom_sound; + } } extern int mDemo_Get_use_zoom_sound() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.use_zoom_sound; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.use_zoom_sound; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_display_name(s8 display_name) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.display_name = display_name; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.display_name = display_name; + } } /* @unused @fabricated */ extern int mDemo_Get_talk_display_name() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.display_name; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.display_name; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_change_player(u8 change_player) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.change_player = change_player; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.change_player = change_player; + } } /* @unused @fabricated */ extern int mDemo_Get_talk_change_player() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.change_player; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.change_player; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_return_demo_wait(u8 return_demo_wait) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.return_demo_wait = return_demo_wait; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.return_demo_wait = return_demo_wait; + } } /* @unused @fabricated */ extern int mDemo_Get_talk_return_demo_wait() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.return_demo_wait; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.return_demo_wait; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_return_get_golden_axe_demo(u8 return_get_golden_axe_demo) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.return_get_golden_axe_demo = return_get_golden_axe_demo; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.return_get_golden_axe_demo = return_get_golden_axe_demo; + } } /* @unused @fabricated */ extern int mDemo_Get_talk_return_get_golden_axe_demo() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.return_get_golden_axe_demo; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.return_get_golden_axe_demo; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_turn(u8 turn) { - if (mDemo_Check_talk_type() == TRUE) { - demo->data.talk.turn = turn; - } + if (mDemo_Check_talk_type() == TRUE) { + demo->data.talk.turn = turn; + } } extern int mDemo_Get_talk_turn() { - if (mDemo_Check_talk_type() == TRUE) { - return demo->data.talk.turn; - } + if (mDemo_Check_talk_type() == TRUE) { + return demo->data.talk.turn; + } - return FALSE; + return FALSE; } extern void mDemo_Set_talk_window_color(rgba_t* window_color) { - switch (demo->current.type) { - case mDemo_TYPE_TALK: - case mDemo_TYPE_SPEAK: - case mDemo_TYPE_REPORT: - case mDemo_TYPE_SPEECH: - demo->data.talk.window_color = *window_color; - break; + switch (demo->current.type) { + case mDemo_TYPE_TALK: + case mDemo_TYPE_SPEAK: + case mDemo_TYPE_REPORT: + case mDemo_TYPE_SPEECH: + demo->data.talk.window_color = *window_color; + break; - case mDemo_TYPE_EVENTMSG: - case mDemo_TYPE_EVENTMSG2: - demo->data.emsg.window_color = *window_color; - break; - } + case mDemo_TYPE_EVENTMSG: + case mDemo_TYPE_EVENTMSG2: + demo->data.emsg.window_color = *window_color; + break; + } } /* @unused @fabricated */ extern rgba_t* mDemo_Get_talk_window_color_p() { - if (demo->current.type >= mDemo_TYPE_TALK && demo->current.type < mDemo_TYPE_OUTDOOR) { - return &demo->data.talk.window_color; - } - else if (demo->current.type >= mDemo_TYPE_EVENTMSG && demo->current.type < mDemo_TYPE_15) { - return &demo->data.emsg.window_color; - } + if (demo->current.type >= mDemo_TYPE_TALK && demo->current.type < mDemo_TYPE_OUTDOOR) { + return &demo->data.talk.window_color; + } else if (demo->current.type >= mDemo_TYPE_EVENTMSG && demo->current.type < mDemo_TYPE_15) { + return &demo->data.emsg.window_color; + } - return NULL; + return NULL; } extern void mDemo_Set_camera(u8 camera_type) { - demo->camera_type = camera_type; + demo->camera_type = camera_type; } extern int mDemo_Get_camera() { - return demo->camera_type; + return demo->camera_type; } extern int mDemo_CheckDemoType() { - if (mDemo_CheckDemo()) { - return demo->current.type; - } + if (mDemo_CheckDemo()) { + return demo->current.type; + } - return mDemo_TYPE_NONE; + return mDemo_TYPE_NONE; } static int change_camera(int camera_type) { - GAME_PLAY* play; - PLAYER_ACTOR* player; + GAME_PLAY* play; + PLAYER_ACTOR* player; - player = GET_PLAYER_ACTOR_NOW(); - play = (GAME_PLAY*)gamePT; + player = GET_PLAYER_ACTOR_NOW(); + play = (GAME_PLAY*)gamePT; - if (camera_type == play->camera.now_main_index) { - return FALSE; - } + if (camera_type == play->camera.now_main_index) { + return FALSE; + } - switch (camera_type) { - case CAMERA2_PROCESS_TALK: - Camera2_request_main_talk(play, (ACTOR*)player, demo->current.actor, mDemo_CAMERA_PRIORITY); - break; - case CAMERA2_PROCESS_ITEM: - Camera2_request_main_item(play, 0, mDemo_CAMERA_PRIORITY); - break; - case CAMERA2_PROCESS_DOOR: - Camera2_request_main_door(play, (ACTOR*)player, demo->current.type != mDemo_TYPE_OUTDOOR, mDemo_CAMERA_PRIORITY); - break; - case CAMERA2_PROCESS_LOCK: - { - s_xyz angle; - f32 dist; - int sh_bx; - int sh_bz; - xyz_t camera_wpos; + switch (camera_type) { + case CAMERA2_PROCESS_TALK: + Camera2_request_main_talk(play, (ACTOR*)player, demo->current.actor, mDemo_CAMERA_PRIORITY); + break; + case CAMERA2_PROCESS_ITEM: + Camera2_request_main_item(play, 0, mDemo_CAMERA_PRIORITY); + break; + case CAMERA2_PROCESS_DOOR: + Camera2_request_main_door(play, (ACTOR*)player, demo->current.type != mDemo_TYPE_OUTDOOR, + mDemo_CAMERA_PRIORITY); + break; + case CAMERA2_PROCESS_LOCK: { + s_xyz angle; + f32 dist; + int sh_bx; + int sh_bz; + xyz_t camera_wpos; - switch (demo->current.type) { - case mDemo_TYPE_EVENTMSG: - { - Camera2_main_Simple_AngleDistStd(play, &angle, &dist); - Camera2_request_main_simple((GAME_PLAY*)gamePT, &player->actor_class.world.position, &angle, dist, 0, mDemo_CAMERA_PRIORITY); - break; + switch (demo->current.type) { + case mDemo_TYPE_EVENTMSG: { + Camera2_main_Simple_AngleDistStd(play, &angle, &dist); + Camera2_request_main_simple((GAME_PLAY*)gamePT, &player->actor_class.world.position, &angle, dist, + 0, mDemo_CAMERA_PRIORITY); + break; + } + + case mDemo_TYPE_SPEECH: + case mDemo_TYPE_EVENTMSG2: { + Camera2_main_Simple_AngleDistStd(play, &angle, &dist); + mFI_BlockKind2BkNum(&sh_bx, &sh_bz, mRF_BLOCKKIND_SHRINE); + mFI_BkNum2WposXZ(&camera_wpos.x, &camera_wpos.z, sh_bx, sh_bz); + camera_wpos.x += 320.0f; + camera_wpos.y = player->actor_class.world.position.y; + camera_wpos.z += 400.0f; + Camera2_request_main_simple((GAME_PLAY*)gamePT, &camera_wpos, &angle, dist, 0, + mDemo_CAMERA_PRIORITY); + break; + } + } + + break; } + case CAMERA2_PROCESS_CUST_TALK: { + switch (demo->current.actor->id) { + case mAc_PROFILE_EV_YOMISE: + Camera2_request_main_listen_front_low_talk(play, (ACTOR*)player, demo->current.actor, + mDemo_CAMERA_PRIORITY); + break; + } - case mDemo_TYPE_SPEECH: - case mDemo_TYPE_EVENTMSG2: - { - Camera2_main_Simple_AngleDistStd(play, &angle, &dist); - mFI_BlockKind2BkNum(&sh_bx, &sh_bz, mRF_BLOCKKIND_SHRINE); - mFI_BkNum2WposXZ(&camera_wpos.x, &camera_wpos.z, sh_bx, sh_bz); - camera_wpos.x += 320.0f; - camera_wpos.y = player->actor_class.world.position.y; - camera_wpos.z += 400.0f; - Camera2_request_main_simple((GAME_PLAY*)gamePT, &camera_wpos, &angle, dist, 0, mDemo_CAMERA_PRIORITY); - break; + break; } - } + case CAMERA2_PROCESS_SIMPLE: { + switch (demo->current.actor->id) { + case mAc_PROFILE_EV_DESIGNER: + Camera2_request_main_simple_kirin(play, &demo->current.actor->world.position, + mDemo_CAMERA_PRIORITY - 1); + break; + } - break; + break; + } + case CAMERA2_PROCESS_NORMAL: + Camera2_request_main_normal(play, 0, mDemo_CAMERA_PRIORITY - 1); + break; + case CAMERA2_PROCESS_INTER2: { + xyz_t center; + xyz_t eye; + + center = play->camera.lookat.center; + center.x -= 80.0f; + + eye = play->camera.lookat.eye; + eye.x -= 80.0f; + eye.z -= 20.0f; + + Camera2_request_main_inter(play, ¢er, &eye, ¢er, &eye, 0.6f, 0.3f, TRUE, 14, + mDemo_CAMERA_PRIORITY + 1); + play->camera.requested_main_index = CAMERA2_PROCESS_INTER2; + break; + } + case CAMERA2_PROCESS_NUM: + break; } - case CAMERA2_PROCESS_CUST_TALK: - { - switch (demo->current.actor->id) { - case mAc_PROFILE_EV_YOMISE: - Camera2_request_main_listen_front_low_talk(play, (ACTOR*)player, demo->current.actor, mDemo_CAMERA_PRIORITY); - break; - } - break; - } - case CAMERA2_PROCESS_SIMPLE: - { - switch (demo->current.actor->id) { - case mAc_PROFILE_EV_DESIGNER: - Camera2_request_main_simple_kirin(play, &demo->current.actor->world.position, mDemo_CAMERA_PRIORITY - 1); - break; - } - - break; - } - case CAMERA2_PROCESS_NORMAL: - Camera2_request_main_normal(play, 0, mDemo_CAMERA_PRIORITY - 1); - break; - case CAMERA2_PROCESS_INTER2: - { - xyz_t center; - xyz_t eye; - - center = play->camera.lookat.center; - center.x -= 80.0f; - - eye = play->camera.lookat.eye; - eye.x -= 80.0f; - eye.z -= 20.0f; - - Camera2_request_main_inter(play, ¢er, &eye, ¢er, &eye, 0.6f, 0.3f, TRUE, 14, mDemo_CAMERA_PRIORITY + 1); - play->camera.requested_main_index = CAMERA2_PROCESS_INTER2; - break; - } - case CAMERA2_PROCESS_NUM: - break; - } - - return TRUE; + return TRUE; } static int set_speak_default() { - PLAYER_ACTOR* player; + PLAYER_ACTOR* player; - demo->data.talk.msg_no = 0; - demo->data.talk.turn = FALSE; - demo->data.talk.display_name = TRUE; - demo->data.talk.change_player = TRUE; - demo->data.talk.return_demo_wait = FALSE; - demo->data.talk.return_get_golden_axe_demo = FALSE; - demo->data.talk.use_zoom_sound = TRUE; - demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; - demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; - demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; - demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; - demo->camera_type = CAMERA2_PROCESS_TALK; - mDemo_Unset_SpeakerAble(); - mDemo_Unset_ListenAble(); + demo->data.talk.msg_no = 0; + demo->data.talk.turn = FALSE; + demo->data.talk.display_name = TRUE; + demo->data.talk.change_player = TRUE; + demo->data.talk.return_demo_wait = FALSE; + demo->data.talk.return_get_golden_axe_demo = FALSE; + demo->data.talk.use_zoom_sound = TRUE; + demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; + demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; + demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; + demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; + demo->camera_type = CAMERA2_PROCESS_TALK; + mDemo_Unset_SpeakerAble(); + mDemo_Unset_ListenAble(); - player = GET_PLAYER_ACTOR_NOW(); - demo->speaker_actor = (ACTOR*)player; - demo->listen_actor = demo->current.actor; - return TRUE; + player = GET_PLAYER_ACTOR_NOW(); + demo->speaker_actor = (ACTOR*)player; + demo->listen_actor = demo->current.actor; + return TRUE; } static int set_report_default() { - PLAYER_ACTOR* player; + PLAYER_ACTOR* player; - demo->data.talk.msg_no = 0; - demo->data.talk.turn = FALSE; - demo->data.talk.display_name = FALSE; - demo->data.talk.change_player = FALSE; - demo->data.talk.return_demo_wait = FALSE; - demo->data.talk.return_get_golden_axe_demo = FALSE; - demo->data.talk.use_zoom_sound = TRUE; - demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; - demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; - demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; - demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; - demo->camera_type = CAMERA2_PROCESS_NORMAL; - mDemo_Set_SpeakerAble(); - mDemo_Unset_ListenAble(); - player = GET_PLAYER_ACTOR_NOW(); - demo->speaker_actor = (ACTOR*)player; - demo->listen_actor = demo->current.actor; - return TRUE; + demo->data.talk.msg_no = 0; + demo->data.talk.turn = FALSE; + demo->data.talk.display_name = FALSE; + demo->data.talk.change_player = FALSE; + demo->data.talk.return_demo_wait = FALSE; + demo->data.talk.return_get_golden_axe_demo = FALSE; + demo->data.talk.use_zoom_sound = TRUE; + demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; + demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; + demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; + demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; + demo->camera_type = CAMERA2_PROCESS_NORMAL; + mDemo_Set_SpeakerAble(); + mDemo_Unset_ListenAble(); + player = GET_PLAYER_ACTOR_NOW(); + demo->speaker_actor = (ACTOR*)player; + demo->listen_actor = demo->current.actor; + return TRUE; } static int set_talk_default() { - demo->data.talk.msg_no = 0; - demo->data.talk.turn = TRUE; - demo->data.talk.display_name = TRUE; - demo->data.talk.change_player = TRUE; - demo->data.talk.return_demo_wait = FALSE; - demo->data.talk.return_get_golden_axe_demo = FALSE; - demo->data.talk.use_zoom_sound = TRUE; - demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; - demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; - demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; - demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; - demo->camera_type = CAMERA2_PROCESS_TALK; - mDemo_Unset_SpeakerAble(); - mDemo_Unset_ListenAble(); - demo->speaker_actor = (ACTOR*)GET_PLAYER_ACTOR_NOW(); - demo->listen_actor = demo->current.actor; - return TRUE; + demo->data.talk.msg_no = 0; + demo->data.talk.turn = TRUE; + demo->data.talk.display_name = TRUE; + demo->data.talk.change_player = TRUE; + demo->data.talk.return_demo_wait = FALSE; + demo->data.talk.return_get_golden_axe_demo = FALSE; + demo->data.talk.use_zoom_sound = TRUE; + demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; + demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; + demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; + demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; + demo->camera_type = CAMERA2_PROCESS_TALK; + mDemo_Unset_SpeakerAble(); + mDemo_Unset_ListenAble(); + demo->speaker_actor = (ACTOR*)GET_PLAYER_ACTOR_NOW(); + demo->listen_actor = demo->current.actor; + return TRUE; } static int wait_talk_start() { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - if (demo->data.talk.change_player) { - if ( - mPlib_get_player_actor_main_index(gamePT) != 65 && - mPlib_request_main_talk_type1((GAME_PLAY*)gamePT, demo->current.actor, demo->data.talk.turn, FALSE) == FALSE - ) { - return FALSE; + if (demo->data.talk.change_player) { + if (mPlib_get_player_actor_main_index(gamePT) != 65 && + mPlib_request_main_talk_type1(gamePT, demo->current.actor, demo->data.talk.turn, FALSE) == FALSE) { + return FALSE; + } + } else { + mDemo_Set_SpeakerAble(); } - } - else { - mDemo_Set_SpeakerAble(); - } - if (mDemo_Check_SpeakerAble() && mDemo_Check_ListenAble()) { - mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); - - mDemo_Init_OrderValue(); + if (mDemo_Check_SpeakerAble() && mDemo_Check_ListenAble()) { + mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); - if (mMsg_Check_main_index(msg_win, mMsg_INDEX_APPEAR) == FALSE) { - int msg_no = demo->data.talk.msg_no; // pulled out here, probably for debug or something? - - player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; - demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; - demo->data.talk.actor_saved_weight = demo->current.actor->status_data.weight; - demo->current.actor->status_data.weight = 255; - mMsg_request_main_appear(msg_win, demo->current.actor, demo->data.talk.display_name, &demo->data.talk.window_color, msg_no, mDemo_MSG_PRIORITY); + mDemo_Init_OrderValue(); - if (demo->data.talk.use_zoom_sound) { - sAdo_SysTrgStart(demo->camera_type == CAMERA2_PROCESS_TALK ? (u16)0x8014 : (u16)0x8004); - } + if (mMsg_Check_main_index(msg_win, mMsg_INDEX_APPEAR) == FALSE) { + int msg_no = demo->data.talk.msg_no; // pulled out here, probably for debug or something? - if ( - mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_DEMO_STARTDEMO && - demo->data.talk.msg_no != 0x07DD && /* Porter "Now arriving at !" message (new player) */ - demo->data.talk.msg_no != 0x0949 && /* Porter "Now arriving in !" message (returning home) */ - demo->data.talk.msg_no != 0x0965 && /* Porter "Take care!" message (travelling to another town) */ - demo->data.talk.msg_no != 0x07DE /* Tom Nook "Hey, you there!" message (walking down from station) */ - ) { - mBGMPsComp_volume_talk_start(); - } + player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; + demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; + demo->data.talk.actor_saved_weight = demo->current.actor->status_data.weight; + demo->current.actor->status_data.weight = 255; + mMsg_request_main_appear(msg_win, demo->current.actor, demo->data.talk.display_name, + &demo->data.talk.window_color, msg_no, mDemo_MSG_PRIORITY); - return TRUE; + if (demo->data.talk.use_zoom_sound) { + sAdo_SysTrgStart(demo->camera_type == CAMERA2_PROCESS_TALK ? (u16)0x8014 : (u16)0x8004); + } + + if (mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_DEMO_STARTDEMO && + demo->data.talk.msg_no != 0x07DD && /* Porter "Now arriving at !" message (new player) */ + demo->data.talk.msg_no != 0x0949 && /* Porter "Now arriving in !" message (returning home) */ + demo->data.talk.msg_no != 0x0965 && /* Porter "Take care!" message (travelling to another town) */ + demo->data.talk.msg_no != 0x07DE /* Tom Nook "Hey, you there!" message (walking down from station) */ + ) { + mBGMPsComp_volume_talk_start(); + } + + return TRUE; + } } - } - return FALSE; + return FALSE; } static int wait_talk_end() { - if (mMsg_Check_main_hide(mMsg_Get_base_window_p()) || demo->state == mDemo_STATE_STOP) { - if (demo->data.talk.change_player) { - mPlib_request_main_talk_end_type1((GAME_PLAY*)gamePT, demo->data.talk.return_demo_wait, demo->data.talk.return_get_golden_axe_demo); + if (mMsg_Check_main_hide(mMsg_Get_base_window_p()) || demo->state == mDemo_STATE_STOP) { + if (demo->data.talk.change_player) { + mPlib_request_main_talk_end_type1(gamePT, demo->data.talk.return_demo_wait, + demo->data.talk.return_get_golden_axe_demo); + } + + demo->current.actor->status_data.weight = demo->data.talk.actor_saved_weight; + mDemo_Copy_change_player_destiny(); + + if (mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_DEMO_STARTDEMO) { + mBGMPsComp_volume_talk_end(); + } + + return TRUE; } - demo->current.actor->status_data.weight = demo->data.talk.actor_saved_weight; - mDemo_Copy_change_player_destiny(); - - if (mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_DEMO_STARTDEMO) { - mBGMPsComp_volume_talk_end(); - } - - return TRUE; - } - - return FALSE; + return FALSE; } static int set_speech_default() { - demo->data.talk.msg_no = 0; - demo->data.talk.turn = FALSE; - demo->data.talk.display_name = TRUE; - demo->data.talk.change_player = FALSE; - demo->data.talk.return_demo_wait = FALSE; - demo->data.talk.return_get_golden_axe_demo = FALSE; - demo->data.talk.use_zoom_sound = TRUE; - demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; - demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; - demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; - demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; - demo->camera_type = CAMERA2_PROCESS_INTER2; - mDemo_Set_SpeakerAble(); - mDemo_Unset_ListenAble(); - demo->speaker_actor = (ACTOR*)GET_PLAYER_ACTOR_NOW(); - demo->listen_actor = demo->current.actor; - return TRUE; + demo->data.talk.msg_no = 0; + demo->data.talk.turn = FALSE; + demo->data.talk.display_name = TRUE; + demo->data.talk.change_player = FALSE; + demo->data.talk.return_demo_wait = FALSE; + demo->data.talk.return_get_golden_axe_demo = FALSE; + demo->data.talk.use_zoom_sound = TRUE; + demo->data.talk.window_color.r = mDemo_WINDOW_COLOR_R; + demo->data.talk.window_color.g = mDemo_WINDOW_COLOR_G; + demo->data.talk.window_color.b = mDemo_WINDOW_COLOR_B; + demo->data.talk.window_color.a = mDemo_WINDOW_COLOR_A; + demo->camera_type = CAMERA2_PROCESS_INTER2; + mDemo_Set_SpeakerAble(); + mDemo_Unset_ListenAble(); + demo->speaker_actor = (ACTOR*)GET_PLAYER_ACTOR_NOW(); + demo->listen_actor = demo->current.actor; + return TRUE; } static int wait_scroll_start() { - return TRUE; + return TRUE; } static int set_door_default() { - demo->data.door.type = 0; - demo->data.door.house_info.size = 80.0f; - demo->data.door.house_info.direct = mDemo_DIRECT_S; - demo->camera_type = CAMERA2_PROCESS_NORMAL; - return TRUE; + demo->data.door.type = 0; + demo->data.door.house_info.size = 80.0f; + demo->data.door.house_info.direct = mDemo_DIRECT_S; + demo->camera_type = CAMERA2_PROCESS_NORMAL; + return TRUE; } static int wait_door_start() { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - ACTOR* door_actor = (ACTOR*)(*GET_PLAYER_ACTOR_NOW()->get_door_label_proc)(gamePT); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + ACTOR* door_actor = (ACTOR*)(*GET_PLAYER_ACTOR_NOW()->get_door_label_proc)(gamePT); - if (demo->current.actor == door_actor) { - return TRUE; - } - else { - f32 size_adj = demo->data.door.house_info.size / 2.0f + 20.0f; - xyz_t pos; - s16 back_angle; + if (demo->current.actor == door_actor) { + return TRUE; + } else { + f32 size_adj = demo->data.door.house_info.size / 2.0f + 20.0f; + xyz_t pos; + s16 back_angle; - pos.x = demo->current.actor->world.position.x + size_adj * direct_vector[demo->data.door.house_info.direct][1]; - pos.y = demo->current.actor->world.position.y; - pos.z = demo->current.actor->world.position.z + size_adj * direct_vector[demo->data.door.house_info.direct][0]; + pos.x = demo->current.actor->world.position.x + size_adj * direct_vector[demo->data.door.house_info.direct][1]; + pos.y = demo->current.actor->world.position.y; + pos.z = demo->current.actor->world.position.z + size_adj * direct_vector[demo->data.door.house_info.direct][0]; - back_angle = direct_back_angle[demo->data.door.house_info.direct]; - player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; - demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; - - mPlib_request_main_door_type1(gamePT, &pos, back_angle, demo->data.door.type, demo->current.actor); - mPlib_strength_request_main_door_priority(gamePT); - } + back_angle = direct_back_angle[demo->data.door.house_info.direct]; + player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; + demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; - return FALSE; + mPlib_request_main_door_type1(gamePT, &pos, back_angle, demo->data.door.type, demo->current.actor); + mPlib_strength_request_main_door_priority(gamePT); + } + + return FALSE; } extern int mDemo_Set_house_info(f32 size, int direct) { - if (demo->current.type == mDemo_TYPE_DOOR || demo->current.type == mDemo_TYPE_DOOR2) { - demo->data.door.house_info.size = size; - demo->data.door.house_info.direct = direct; - return TRUE; - } + if (demo->current.type == mDemo_TYPE_DOOR || demo->current.type == mDemo_TYPE_DOOR2) { + demo->data.door.house_info.size = size; + demo->data.door.house_info.direct = direct; + return TRUE; + } - return FALSE; + return FALSE; } static int wait_door2_start() { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - ACTOR* door_actor = (ACTOR*)(*GET_PLAYER_ACTOR_NOW()->get_door_label_proc)(gamePT); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + ACTOR* door_actor = (ACTOR*)(*GET_PLAYER_ACTOR_NOW()->get_door_label_proc)(gamePT); - if (demo->current.actor == door_actor) { - return TRUE; - } - else { - f32 size_adj = demo->data.door.house_info.size / 2.0f + 20.0f; - xyz_t pos; - s16 back_angle; + if (demo->current.actor == door_actor) { + return TRUE; + } else { + f32 size_adj = demo->data.door.house_info.size / 2.0f + 20.0f; + xyz_t pos; + s16 back_angle; - pos.x = demo->current.actor->world.position.x + size_adj * direct_vector[demo->data.door.house_info.direct][1]; - pos.y = demo->current.actor->world.position.y; - pos.z = demo->current.actor->world.position.z + size_adj * direct_vector[demo->data.door.house_info.direct][0]; + pos.x = demo->current.actor->world.position.x + size_adj * direct_vector[demo->data.door.house_info.direct][1]; + pos.y = demo->current.actor->world.position.y; + pos.z = demo->current.actor->world.position.z + size_adj * direct_vector[demo->data.door.house_info.direct][0]; - back_angle = direct_back_angle[demo->data.door.house_info.direct]; - player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; - demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; - - mPlib_request_main_door_type2(gamePT, &pos, back_angle, demo->data.door.type, demo->current.actor); - mPlib_strength_request_main_door_priority(gamePT); - } + back_angle = direct_back_angle[demo->data.door.house_info.direct]; + player->actor_class.state_bitfield |= ACTOR_STATE_IN_DEMO; + demo->current.actor->state_bitfield |= ACTOR_STATE_IN_DEMO; - return FALSE; + mPlib_request_main_door_type2(gamePT, &pos, back_angle, demo->data.door.type, demo->current.actor); + mPlib_strength_request_main_door_priority(gamePT); + } + + return FALSE; } static s16 get_title_no_for_event(s16 event) { - switch (event) { - case mEv_EVENT_FIREWORKS_SHOW: - return 0; - case mEv_EVENT_CHERRY_BLOSSOM_FESTIVAL: - return 1; - case mEv_EVENT_SPORTS_FAIR_AEROBICS: - return 2; - case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: - return 3; - case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: - return 4; - case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: - return 5; - case mEv_EVENT_MORNING_AEROBICS: - return 6; - case mEv_EVENT_HARVEST_MOON_FESTIVAL: - return 7; - case mEv_EVENT_METEOR_SHOWER: - return 8; - case mEv_EVENT_NEW_YEARS_EVE_COUNTDOWN: - return 9; - case mEv_EVENT_NEW_YEARS_DAY: - return 10; - case mEv_EVENT_FISHING_TOURNEY_1: - case mEv_EVENT_FISHING_TOURNEY_2: - return 11; - case mEv_EVENT_HALLOWEEN: - return 12; - case mEv_EVENT_TOY_DAY_JINGLE: - return 13; - case mEv_EVENT_SPORTS_FAIR: - return 10; - case mEv_EVENT_GROUNDHOG_DAY: - return 14; - case mEv_EVENT_HARVEST_FESTIVAL: - return 15; - default: - return -1; - } + switch (event) { + case mEv_EVENT_FIREWORKS_SHOW: + return 0; + case mEv_EVENT_CHERRY_BLOSSOM_FESTIVAL: + return 1; + case mEv_EVENT_SPORTS_FAIR_AEROBICS: + return 2; + case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: + return 3; + case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: + return 4; + case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: + return 5; + case mEv_EVENT_MORNING_AEROBICS: + return 6; + case mEv_EVENT_HARVEST_MOON_FESTIVAL: + return 7; + case mEv_EVENT_METEOR_SHOWER: + return 8; + case mEv_EVENT_NEW_YEARS_EVE_COUNTDOWN: + return 9; + case mEv_EVENT_NEW_YEARS_DAY: + return 10; + case mEv_EVENT_FISHING_TOURNEY_1: + case mEv_EVENT_FISHING_TOURNEY_2: + return 11; + case mEv_EVENT_HALLOWEEN: + return 12; + case mEv_EVENT_TOY_DAY_JINGLE: + return 13; + case mEv_EVENT_SPORTS_FAIR: + return 10; + case mEv_EVENT_GROUNDHOG_DAY: + return 14; + case mEv_EVENT_HARVEST_FESTIVAL: + return 15; + default: + return -1; + } } static int set_emsg_default() { - s16 event_id = Common_Get(event_id); - s16 flags = Common_Get(event_title_flags); - s16 title_no; + s16 event_id = Common_Get(event_id); + s16 flags = Common_Get(event_title_flags); + s16 title_no; - memcpy(&demo->data.emsg.door_data, Common_GetPointer(event_door_data), sizeof(Door_data_c)); - title_no = get_title_no_for_event(event_id); + memcpy(&demo->data.emsg.door_data, Common_GetPointer(event_door_data), sizeof(Door_data_c)); + title_no = get_title_no_for_event(event_id); - if (title_no >= 0) { - if (flags == 1) { - demo->data.emsg.msg_no = 0x1743; // start message - } - else { - demo->data.emsg.msg_no = 0x1799; // conclusion message + if (title_no >= 0) { + if (flags == 1) { + demo->data.emsg.msg_no = 0x1743; // start message + } else { + demo->data.emsg.msg_no = 0x1799; // conclusion message + } + + demo->data.emsg.msg_no += title_no; + } else { + demo->data.emsg.msg_no = 0; } - demo->data.emsg.msg_no += title_no; - } - else { - demo->data.emsg.msg_no = 0; - } + demo->data.emsg.window_color.r = mDemo_WINDOW_COLOR_R; + demo->data.emsg.window_color.g = mDemo_WINDOW_COLOR_G; + demo->data.emsg.window_color.b = mDemo_WINDOW_COLOR_B; + demo->data.emsg.window_color.a = mDemo_WINDOW_COLOR_A; + demo->camera_type = CAMERA2_PROCESS_LOCK; + demo->data.emsg.msg_delay_timer = 0; + demo->data.emsg.scene_delay_timer = 30; - demo->data.emsg.window_color.r = mDemo_WINDOW_COLOR_R; - demo->data.emsg.window_color.g = mDemo_WINDOW_COLOR_G; - demo->data.emsg.window_color.b = mDemo_WINDOW_COLOR_B; - demo->data.emsg.window_color.a = mDemo_WINDOW_COLOR_A; - demo->camera_type = CAMERA2_PROCESS_LOCK; - demo->data.emsg.msg_delay_timer = 0; - demo->data.emsg.scene_delay_timer = 30; - - return TRUE; + return TRUE; } static int wait_emsg_start() { - mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); + mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); - if (demo->data.emsg.msg_delay_timer <= 0) { - if (demo->data.emsg.msg_no != 0) { - mMsg_request_main_appear(msg_win, NULL, FALSE, &demo->data.emsg.window_color, demo->data.emsg.msg_no, mDemo_MSG_PRIORITY); + if (demo->data.emsg.msg_delay_timer <= 0) { + if (demo->data.emsg.msg_no != 0) { + mMsg_request_main_appear(msg_win, NULL, FALSE, &demo->data.emsg.window_color, demo->data.emsg.msg_no, + mDemo_MSG_PRIORITY); + } + + Common_Set(event_title_flags, 2); + return TRUE; + } else { + demo->data.emsg.msg_delay_timer--; } - Common_Set(event_title_flags, 2); - return TRUE; - } - else { - demo->data.emsg.msg_delay_timer--; - } - - return FALSE; + return FALSE; } static int wait_emsg_end() { - GAME_PLAY* play = (GAME_PLAY*)gamePT; - mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); + GAME_PLAY* play = (GAME_PLAY*)gamePT; + mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); - if (mMsg_Check_main_hide(msg_win)) { - demo->data.emsg.scene_delay_timer--; - } - - if (demo->data.emsg.scene_delay_timer <= 0 || demo->state == mDemo_STATE_STOP) { - if (goto_other_scene(play, &demo->data.emsg.door_data, FALSE)) { - play->fb_wipe_type = demo->data.emsg.door_data.wipe_type; - play->fb_fade_type = 11; - Common_Set(transition.wipe_type, demo->data.emsg.door_data.wipe_type); - mBGMForce_inform_end(); - - return TRUE; + if (mMsg_Check_main_hide(msg_win)) { + demo->data.emsg.scene_delay_timer--; } - else { - return FALSE; - } - } - return FALSE; + if (demo->data.emsg.scene_delay_timer <= 0 || demo->state == mDemo_STATE_STOP) { + if (goto_other_scene(play, &demo->data.emsg.door_data, FALSE)) { + play->fb_wipe_type = demo->data.emsg.door_data.wipe_type; + play->fb_fade_type = 11; + Common_Set(transition.wipe_type, demo->data.emsg.door_data.wipe_type); + mBGMForce_inform_end(); + + return TRUE; + } else { + return FALSE; + } + } + + return FALSE; } static int set_emsg2_default() { - memcpy(&demo->data.emsg.door_data, Common_GetPointer(event_door_data), sizeof(Door_data_c)); - demo->camera_type = CAMERA2_PROCESS_LOCK; - demo->data.emsg.msg_delay_timer = 0; - demo->data.emsg.scene_delay_timer = 30; - memcpy(&demo->request_save, &demo->current, sizeof(mDemo_Request_c)); + memcpy(&demo->data.emsg.door_data, Common_GetPointer(event_door_data), sizeof(Door_data_c)); + demo->camera_type = CAMERA2_PROCESS_LOCK; + demo->data.emsg.msg_delay_timer = 0; + demo->data.emsg.scene_delay_timer = 30; + memcpy(&demo->request_save, &demo->current, sizeof(mDemo_Request_c)); - return TRUE; + return TRUE; } static int wait_emsg2_start() { - Common_Set(event_title_flags, 2); - return TRUE; + Common_Set(event_title_flags, 2); + return TRUE; } static int wait_emsg2_end() { - int res = FALSE; + int res = FALSE; - if (Common_Get(event_title_fade_in_progress) == TRUE) { - GAME_PLAY* play = (GAME_PLAY*)gamePT; - - if (goto_other_scene(play, Common_GetPointer(event_door_data), FALSE)) { - play->fb_wipe_type = Common_Get(event_door_data).wipe_type; - play->fb_fade_type = 11; - Common_Set(transition.wipe_type, Common_Get(event_door_data).wipe_type); - mBGMForce_inform_end(); - memset(&demo->request_save, 0, sizeof(mDemo_Request_c)); + if (Common_Get(event_title_fade_in_progress) == TRUE) { + GAME_PLAY* play = (GAME_PLAY*)gamePT; - res = TRUE; + if (goto_other_scene(play, Common_GetPointer(event_door_data), FALSE)) { + play->fb_wipe_type = Common_Get(event_door_data).wipe_type; + play->fb_fade_type = 11; + Common_Set(transition.wipe_type, Common_Get(event_door_data).wipe_type); + mBGMForce_inform_end(); + memset(&demo->request_save, 0, sizeof(mDemo_Request_c)); + + res = TRUE; + } } - } - return res; + return res; } static f32 weight_of_talk_position(ACTOR* actor) { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - f32 actor_talk_dist; - f32 player_dist; - f32 dist_y = player->actor_class.world.position.y - actor->world.position.y; - s16 diff_y = player->actor_class.shape_info.rotation.y - actor->player_angle_y; - s16 angle_y; - - if (dist_y < 0.0f) { - dist_y = -dist_y; - } - - angle_y = diff_y < 0 ? (s16)(diff_y + -0x8000) : (s16)(-diff_y + -0x8000); - - if (actor->player_distance_xz <= actor->talk_distance && dist_y <= 33.0f && angle_y <= 12530) { - f32 dist_factor = 1.0f - (actor->player_distance_xz / 55.0f); - f32 angle_factor; - - dist_y = 1.0f - (actor->player_distance_xz / 55.0f); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + f32 actor_talk_dist; + f32 player_dist; + f32 dist_y = player->actor_class.world.position.y - actor->world.position.y; + s16 diff_y = player->actor_class.shape_info.rotation.y - actor->player_angle_y; + s16 angle_y; if (dist_y < 0.0f) { - dist_y = 0.0f; + dist_y = -dist_y; } - angle_factor = 1.0f - ((f32)((int)angle_y) / 12530.0f); + angle_y = diff_y < 0 ? (s16)(diff_y + -0x8000) : (s16)(-diff_y + -0x8000); - return angle_factor * angle_factor * 0.6f + dist_y * dist_y * 0.4f; - } - else { - return -99.0f; - } + if (actor->player_distance_xz <= actor->talk_distance && dist_y <= 33.0f && angle_y <= 12530) { + f32 dist_factor = 1.0f - (actor->player_distance_xz / 55.0f); + f32 angle_factor; + + dist_y = 1.0f - (actor->player_distance_xz / 55.0f); + + if (dist_y < 0.0f) { + dist_y = 0.0f; + } + + angle_factor = 1.0f - ((f32)((int)angle_y) / 12530.0f); + + return angle_factor * angle_factor * 0.6f + dist_y * dist_y * 0.4f; + } else { + return -99.0f; + } } static int allways_true() { - return TRUE; + return TRUE; } static int allways_false() { - return FALSE; + return FALSE; } static int scroll_check() { - return mPlib_check_request_main_wade_priority(gamePT); + return mPlib_check_request_main_wade_priority(gamePT); } static int scroll2_check() { - return mPlib_check_request_main_demo_wade_priority(gamePT); + return mPlib_check_request_main_demo_wade_priority(gamePT); } static int scroll3_check() { - return mPlib_check_request_main_demo_geton_boat_wade_priority(gamePT); + return mPlib_check_request_main_demo_geton_boat_wade_priority(gamePT); } static int door_check() { - return mPlib_check_request_main_door_type1_priority(gamePT); + return mPlib_check_request_main_door_type1_priority(gamePT); } static int door2_check() { - return mPlib_check_request_main_door_type2_priority(gamePT); + return mPlib_check_request_main_door_type2_priority(gamePT); } static int outdoor_check() { - return mPlib_check_request_main_outdoor_priority(gamePT); + return mPlib_check_request_main_outdoor_priority(gamePT); } static int talk_check() { - return mPlib_check_request_main_talk_type1_priority(gamePT) != 0; + return mPlib_check_request_main_talk_type1_priority(gamePT) != 0; } static int speak_check() { - return mPlib_check_request_main_speak_type1_priority(gamePT) != 0; + return mPlib_check_request_main_speak_type1_priority(gamePT) != 0; } typedef int (*mDemo_PROC)(); static int choice_demo_sub() { - static const mDemo_PROC check_func[mDemo_TYPE_NUM] = { - &allways_true, - &scroll_check, - &allways_true, - &door_check, - &allways_true, - &scroll2_check, - &door2_check, - &talk_check, - &speak_check, - &allways_true, - &allways_true, - &outdoor_check, - &allways_true, - &allways_true, - &allways_true, - &allways_true, - &scroll3_check - }; + static const mDemo_PROC check_func[mDemo_TYPE_NUM] = { &allways_true, &scroll_check, &allways_true, &door_check, + &allways_true, &scroll2_check, &door2_check, &talk_check, + &speak_check, &allways_true, &allways_true, &outdoor_check, + &allways_true, &allways_true, &allways_true, &allways_true, + &scroll3_check }; - f32 max_talk_weight = 0.0f; - int i; - int idx = -1; - - for (i = 0; i < demo->request_num; i++) { - mDemo_Request_c* request = &demo->request[i]; - int type = request->type; + f32 max_talk_weight = 0.0f; + int i; + int idx = -1; - if ( - ((mEv_CheckTitleDemo() == 0 || type == mDemo_TYPE_SCROLL || - (mEv_CheckTitleDemo() == -9 && type == mDemo_TYPE_SPEAK && - request->actor != NULL && request->actor->id == mAc_PROFILE_NPC_TOTAKEKE)) && - (demo->request_save.type != mDemo_TYPE_NONE || type >= demo->priority_type) - ) && (*check_func[type])() != FALSE - ) { - if (type == mDemo_TYPE_TALK) { - if (chkTrigger(BUTTON_A) && request->talk_weight > max_talk_weight) { - idx = i; - max_talk_weight = request->talk_weight; + for (i = 0; i < demo->request_num; i++) { + mDemo_Request_c* request = &demo->request[i]; + int type = request->type; + + if (((mEv_CheckTitleDemo() == 0 || type == mDemo_TYPE_SCROLL || + (mEv_CheckTitleDemo() == -9 && type == mDemo_TYPE_SPEAK && request->actor != NULL && + request->actor->id == mAc_PROFILE_NPC_TOTAKEKE)) && + (demo->request_save.type != mDemo_TYPE_NONE || type >= demo->priority_type)) && + (*check_func[type])() != FALSE) { + if (type == mDemo_TYPE_TALK) { + if (chkTrigger(BUTTON_A) && request->talk_weight > max_talk_weight) { + idx = i; + max_talk_weight = request->talk_weight; + } + } else { + idx = i; /* non-TALK types have instant priority */ + break; + } } - } - else { - idx = i; /* non-TALK types have instant priority */ - break; - } } - } - return idx; + return idx; } static int choice_demo() { - static const mDemo_PROC default_set_func[mDemo_TYPE_NUM] = { - &allways_true, - &allways_true, - &allways_true, - &set_door_default, - &allways_true, - &allways_true, - &set_door_default, - &set_talk_default, - &set_speak_default, - &set_report_default, - &set_speech_default, - &allways_true, - &allways_true, - &set_emsg_default, - &set_emsg2_default, - &allways_true, - &allways_true - }; + static const mDemo_PROC default_set_func[mDemo_TYPE_NUM] = { + &allways_true, &allways_true, &allways_true, &set_door_default, &allways_true, + &allways_true, &set_door_default, &set_talk_default, &set_speak_default, &set_report_default, + &set_speech_default, &allways_true, &allways_true, &set_emsg_default, &set_emsg2_default, + &allways_true, &allways_true + }; - int request_idx = choice_demo_sub(); + int request_idx = choice_demo_sub(); - if (request_idx != -1) { - memcpy(&demo->current, &demo->request[request_idx], sizeof(mDemo_Request_c)); - (*default_set_func[demo->current.type])(); + if (request_idx != -1) { + memcpy(&demo->current, &demo->request[request_idx], sizeof(mDemo_Request_c)); + (*default_set_func[demo->current.type])(); - if (demo->current.proc != NULL) { - (*demo->current.proc)(demo->current.actor); + if (demo->current.proc != NULL) { + (*demo->current.proc)(demo->current.actor); + } + + demo->state = 1; } - demo->state = 1; - } - - return request_idx; + return request_idx; } static int check_speech_request() { - int request_idx = choice_demo_sub(); - int res = FALSE; + int request_idx = choice_demo_sub(); + int res = FALSE; - if (request_idx != -1) { - mDemo_Request_c* request = &demo->request[request_idx]; - - if (request->type == mDemo_TYPE_SPEECH) { - res = TRUE; + if (request_idx != -1) { + mDemo_Request_c* request = &demo->request[request_idx]; + + if (request->type == mDemo_TYPE_SPEECH) { + res = TRUE; + } } - } - return res; + return res; } static void emsg_set() { - static rgba_t win_color = { 175, 255, 255, 255 }; + static rgba_t win_color = { 175, 255, 255, 255 }; - mDemo_Set_talk_window_color(&win_color); + mDemo_Set_talk_window_color(&win_color); } static void init_demo() { - int initial_demo_type = Common_Get(start_demo_request).type; + int initial_demo_type = Common_Get(start_demo_request).type; - memset(&demo->current, 0, sizeof(mDemo_Request_c)); - memset(&demo->request_save, 0, sizeof(mDemo_Request_c)); - demo->state = mDemo_STATE_WAIT; - demo->request_num = 0; - demo->priority_type = 0; - demo->camera_type = CAMERA2_PROCESS_NORMAL; - demo->keep_camera_type = CAMERA2_PROCESS_STOP; + memset(&demo->current, 0, sizeof(mDemo_Request_c)); + memset(&demo->request_save, 0, sizeof(mDemo_Request_c)); + demo->state = mDemo_STATE_WAIT; + demo->request_num = 0; + demo->priority_type = 0; + demo->camera_type = CAMERA2_PROCESS_NORMAL; + demo->keep_camera_type = CAMERA2_PROCESS_STOP; - switch (initial_demo_type) { - case mDemo_TYPE_EVENTMSG: - case mDemo_TYPE_EVENTMSG2: - mDemo_Request(initial_demo_type, NULL, &emsg_set); - Common_Set(start_demo_request.type, mDemo_TYPE_NONE); - break; - } + switch (initial_demo_type) { + case mDemo_TYPE_EVENTMSG: + case mDemo_TYPE_EVENTMSG2: + mDemo_Request(initial_demo_type, NULL, &emsg_set); + Common_Set(start_demo_request.type, mDemo_TYPE_NONE); + break; + } } static const mDemo_PROC wait_start[mDemo_TYPE_NUM] = { - &allways_true, - &wait_scroll_start, - &allways_true, - &wait_door_start, - &allways_true, - &wait_scroll_start, - &wait_door2_start, - &wait_talk_start, - &wait_talk_start, - &wait_talk_start, - &wait_talk_start, - &allways_true, - &allways_true, - &wait_emsg_start, - &wait_emsg2_start, - &allways_true, - &wait_scroll_start + &allways_true, &wait_scroll_start, &allways_true, &wait_door_start, &allways_true, &wait_scroll_start, + &wait_door2_start, &wait_talk_start, &wait_talk_start, &wait_talk_start, &wait_talk_start, &allways_true, + &allways_true, &wait_emsg_start, &wait_emsg2_start, &allways_true, &wait_scroll_start }; -static const mDemo_PROC wait_end[mDemo_TYPE_NUM] = { - &allways_false, - &allways_false, - &allways_false, - &allways_false, - &allways_false, - &allways_false, - &allways_false, - &wait_talk_end, - &wait_talk_end, - &wait_talk_end, - &wait_talk_end, - &allways_false, - &allways_false, - &wait_emsg_end, - &wait_emsg2_end, - &allways_false, - &allways_false -}; +static const mDemo_PROC wait_end[mDemo_TYPE_NUM] = { &allways_false, &allways_false, &allways_false, &allways_false, + &allways_false, &allways_false, &allways_false, &wait_talk_end, + &wait_talk_end, &wait_talk_end, &wait_talk_end, &allways_false, + &allways_false, &wait_emsg_end, &wait_emsg2_end, &allways_false, + &allways_false }; static void run_demo() { - if (demo->state == mDemo_STATE_READY) { - if ((*wait_start[demo->current.type])()) { - change_camera(demo->camera_type); - demo->state = mDemo_STATE_RUN; + if (demo->state == mDemo_STATE_READY) { + if ((*wait_start[demo->current.type])()) { + change_camera(demo->camera_type); + demo->state = mDemo_STATE_RUN; + } + } else if (demo->state == mDemo_STATE_RUN && (*wait_end[demo->current.type])()) { + demo->state = mDemo_STATE_STOP; } - } - else if (demo->state == mDemo_STATE_RUN && (*wait_end[demo->current.type])()) { - demo->state = mDemo_STATE_STOP; - } } static void main_proc() { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - if (demo->state == mDemo_STATE_STOP) { - player->actor_class.state_bitfield &= ~ACTOR_STATE_IN_DEMO; + if (demo->state == mDemo_STATE_STOP) { + player->actor_class.state_bitfield &= ~ACTOR_STATE_IN_DEMO; - if (demo->current.actor != NULL) { - demo->current.actor->state_bitfield &= ~ACTOR_STATE_IN_DEMO; + if (demo->current.actor != NULL) { + demo->current.actor->state_bitfield &= ~ACTOR_STATE_IN_DEMO; + } + + demo->camera_type = CAMERA2_PROCESS_NORMAL; + if (demo->keep_camera_type != CAMERA2_PROCESS_STOP && demo->current.actor != NULL) { + change_camera(demo->keep_camera_type); + } else { + change_camera(demo->camera_type); + } + + demo->keep_camera_type = CAMERA2_PROCESS_STOP; + memset(&demo->current, 0, sizeof(mDemo_Request_c)); + demo->state = mDemo_STATE_WAIT; } - demo->camera_type = CAMERA2_PROCESS_NORMAL; - if (demo->keep_camera_type != CAMERA2_PROCESS_STOP && demo->current.actor != NULL) { - change_camera(demo->keep_camera_type); - } - else { - change_camera(demo->camera_type); + if (demo->request_save.type != mDemo_TYPE_NONE && demo->request_save.type == demo->current.type && + check_speech_request() == TRUE) { + demo->state = mDemo_STATE_WAIT; } - demo->keep_camera_type = CAMERA2_PROCESS_STOP; - memset(&demo->current, 0, sizeof(mDemo_Request_c)); - demo->state = mDemo_STATE_WAIT; - } + if (demo->state == mDemo_STATE_WAIT) { + choice_demo(); + } - if (demo->request_save.type != mDemo_TYPE_NONE && demo->request_save.type == demo->current.type && check_speech_request() == TRUE) { - demo->state = mDemo_STATE_WAIT; - } + if (demo->state != mDemo_STATE_WAIT) { + run_demo(); + } - if (demo->state == mDemo_STATE_WAIT) { - choice_demo(); - } - - if (demo->state != mDemo_STATE_WAIT) { - run_demo(); - } - - if (demo->state == mDemo_STATE_STOP && demo->request_save.type != mDemo_TYPE_NONE && demo->request_save.type != demo->current.type) { - memcpy(&demo->current, &demo->request_save, sizeof(mDemo_Request_c)); - demo->state = mDemo_STATE_RUN; - change_camera(CAMERA2_PROCESS_NUM); - } + if (demo->state == mDemo_STATE_STOP && demo->request_save.type != mDemo_TYPE_NONE && + demo->request_save.type != demo->current.type) { + memcpy(&demo->current, &demo->request_save, sizeof(mDemo_Request_c)); + demo->state = mDemo_STATE_RUN; + change_camera(CAMERA2_PROCESS_NUM); + } } extern void mDemo_stock_clear() { - demo->request_num = 0; - demo->priority_type = 0; + demo->request_num = 0; + demo->priority_type = 0; } extern int mDemo_Request(int type, ACTOR* actor, mDemo_REQUEST_PROC req_proc) { - f32 weight = 1.0f; - int request_num = demo->request_num; + f32 weight = 1.0f; + int request_num = demo->request_num; - if (request_num < mDemo_REQUEST_NUM) { - if (type >= demo->priority_type) { - mDemo_Request_c* req = &demo->request[request_num]; + if (request_num < mDemo_REQUEST_NUM) { + if (type >= demo->priority_type) { + mDemo_Request_c* req = &demo->request[request_num]; - if (type == mDemo_TYPE_TALK) { - weight = weight_of_talk_position(actor); + if (type == mDemo_TYPE_TALK) { + weight = weight_of_talk_position(actor); - if (weight < 0.0f) { - return FALSE; + if (weight < 0.0f) { + return FALSE; + } + } else if (type == mDemo_TYPE_SPEAK && mPlib_Check_able_force_speak_label(gamePT, actor) == FALSE) { + return FALSE; + } + + demo->priority_type = type; + + req->type = type; + req->actor = actor; + req->proc = req_proc; + req->talk_weight = weight; + + demo->request_num++; } - } - else if (type == mDemo_TYPE_SPEAK && mPlib_Check_able_force_speak_label(gamePT, actor) == FALSE) { - return FALSE; - } - demo->priority_type = type; - - req->type = type; - req->actor = actor; - req->proc = req_proc; - req->talk_weight = weight; - - demo->request_num++; + return TRUE; } - return TRUE; - } - - return FALSE; + return FALSE; } extern int mDemo_Check(int type, ACTOR* actor) { - if (type == demo->current.type && actor == demo->current.actor) { - return TRUE; - } + if (type == demo->current.type && actor == demo->current.actor) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mDemo_Start(ACTOR* actor) { - return FALSE; + return FALSE; } /* @unused @fabricated */ extern int mDemo_Check_and_Go(int type, ACTOR* actor) { - if (mDemo_Check(type, actor) == FALSE) { - return FALSE; - } + if (mDemo_Check(type, actor) == FALSE) { + return FALSE; + } - return mDemo_Start(actor); + return mDemo_Start(actor); } extern int mDemo_End(ACTOR* actor) { - if (actor == demo->current.actor) { - demo->state = mDemo_STATE_STOP; - return TRUE; - } + if (actor == demo->current.actor) { + demo->state = mDemo_STATE_STOP; + return TRUE; + } - return FALSE; + return FALSE; } extern void mDemo_Main(GAME_PLAY* play) { - main_proc(); + main_proc(); } extern void mDemo_Init(GAME_PLAY* play) { - demo->speaker_actor = NULL; - demo->listen_actor = NULL; - mDemo_Unset_SpeakerAble(); - mDemo_Unset_ListenAble(); - mDemo_Init_OrderValue(); - mDemo_Clear_change_player_destiny(); - init_demo(); + demo->speaker_actor = NULL; + demo->listen_actor = NULL; + mDemo_Unset_SpeakerAble(); + mDemo_Unset_ListenAble(); + mDemo_Init_OrderValue(); + mDemo_Clear_change_player_destiny(); + init_demo(); } extern int mDemo_CheckDemo() { - return demo->state != mDemo_STATE_WAIT; + return demo->state != mDemo_STATE_WAIT; } extern int mDemo_CheckDemo4Event() { - - switch (mDemo_CheckDemoType()) { - case mDemo_TYPE_NONE: - case mDemo_TYPE_EVENTMSG: - case mDemo_TYPE_EVENTMSG2: - return FALSE; - } + switch (mDemo_CheckDemoType()) { + case mDemo_TYPE_NONE: + case mDemo_TYPE_EVENTMSG: + case mDemo_TYPE_EVENTMSG2: + return FALSE; + } - return TRUE; + return TRUE; } extern void mDemo_Set_SpeakerAble() { - demo->speaker_able = TRUE; + demo->speaker_able = TRUE; } extern void mDemo_Set_ListenAble() { - demo->listen_able = TRUE; + demo->listen_able = TRUE; } extern void mDemo_Unset_SpeakerAble() { - demo->speaker_able = FALSE; + demo->speaker_able = FALSE; } extern void mDemo_Unset_ListenAble() { - demo->listen_able = FALSE; + demo->listen_able = FALSE; } extern int mDemo_Check_SpeakerAble() { - return demo->speaker_able; + return demo->speaker_able; } extern int mDemo_Check_ListenAble() { - return demo->listen_able; + return demo->listen_able; } extern int mDemo_Check_DiffAngle_forTalk(s16 diff_angle) { - int res = FALSE; + int res = FALSE; - if (diff_angle > -5000 && diff_angle < 5000) { - res = TRUE; - } + if (diff_angle > -5000 && diff_angle < 5000) { + res = TRUE; + } - return res; + return res; } extern void mDemo_KeepCamera(int camera_type) { - demo->keep_camera_type = camera_type; + demo->keep_camera_type = camera_type; } diff --git a/src/m_event.c b/src/m_event.c index c0b351d8..db5f96eb 100644 --- a/src/m_event.c +++ b/src/m_event.c @@ -11,864 +11,823 @@ #include "m_soncho.h" enum { - mEv_INIT_NO_RENEWAL, - mEv_INIT_RENEWAL, - mEv_INIT_FORCE_RENEWAL, + mEv_INIT_NO_RENEWAL, + mEv_INIT_RENEWAL, + mEv_INIT_FORCE_RENEWAL, - mEv_INIT_NUM + mEv_INIT_NUM }; -static int n_today_events = 0; -static int status_edge = 0; -static int funeral = 0; -static int dead = 0; -static lbRTC_year_t weekday1st_year = 0; -static lbRTC_weekday_t weekday1st[lbRTC_MONTHS_MAX]; - typedef union ymdh { - struct { - u8 year; - u8 month; - u8 day; - u8 hour; - }; - u32 raw; + struct { + u8 year; + u8 month; + u8 day; + u8 hour; + }; + u32 raw; } mEv_ymdh_u; +static int update_save_area(void); + extern void mEv_ClearSpecialEvent(mEv_special_c* special_event) { - special_event->type = -1; - bzero(&special_event->event, sizeof(mEv_special_u)); - bzero(Common_GetPointer(special_event_common), sizeof(mEv_event_common_u)); + special_event->type = -1; + bzero(&special_event->event, sizeof(mEv_special_u)); + bzero(Common_GetPointer(special_event_common), sizeof(mEv_event_common_u)); } extern void mEv_ClearEventKabuPeddler(mEv_kabu_peddler_c* kabu_peddler) { - if (kabu_peddler != NULL) { - mPr_ClearAnyPersonalID(kabu_peddler->spoken_pids, TOTAL_PLAYER_NUM); - } + if (kabu_peddler != NULL) { + mPr_ClearAnyPersonalID(kabu_peddler->spoken_pids, TOTAL_PLAYER_NUM); + } } extern void mEv_ClearEventSaveInfo(mEv_event_save_c* save_event) { - mEv_ClearSpecialEvent(&save_event->special); - mEv_ClearEventKabuPeddler(&save_event->weekly.kabu_peddler); - save_event->flags = 0; + mEv_ClearSpecialEvent(&save_event->special); + mEv_ClearEventKabuPeddler(&save_event->weekly.kabu_peddler); + save_event->flags = 0; } extern void mEv_ClearEventInfo() { - mEv_event_save_c* event_save = Save_GetPointer(event_save_data); - u32* event_flag = Common_Get(event_flags); - int i; + mEv_event_save_c* event_save = Save_GetPointer(event_save_data); + u32* event_flag = Common_Get(event_flags); + int i; - for (i = 0; i < mEv_EVENT_TYPE_NUM; i++) { - event_flag[0] = 0; - event_flag++; - } + for (i = 0; i < mEv_EVENT_TYPE_NUM; i++) { + event_flag[0] = 0; + event_flag++; + } - Common_Get(event_flags[1]) = event_save->flags; - Common_Get(event_common).fieldday_event_id = -1; - Common_Get(event_common).fieldday_event_over_status = -1; + Common_Get(event_flags[1]) = event_save->flags; + Common_Get(event_common).fieldday_event_id = -1; + Common_Get(event_common).fieldday_event_over_status = -1; } extern void mEv_EventON(u32 event_kind) { - u32 type = mEv_GET_TYPE(event_kind); + u32 type = mEv_GET_TYPE(event_kind); - if (type < mEv_EVENT_TYPE_NUM) { - u32* flag_p = Common_GetPointer(event_flags[type]); - *flag_p |= (1 << mEv_GET_SUBTYPE(event_kind)); + if (type < mEv_EVENT_TYPE_NUM) { + u32* flag_p = Common_GetPointer(event_flags[type]); + *flag_p |= (1 << mEv_GET_SUBTYPE(event_kind)); - if (type == mEv_SAVED_EVENT) { - Save_Get(event_save_data).flags = *flag_p; + if (type == mEv_SAVED_EVENT) { + Save_Get(event_save_data).flags = *flag_p; + } } - } } extern void mEv_EventOFF(u32 event_kind) { - u32 type = mEv_GET_TYPE(event_kind); + u32 type = mEv_GET_TYPE(event_kind); - if (type < mEv_EVENT_TYPE_NUM) { - u32* flag_p = Common_GetPointer(event_flags[type]); - u32 mask = 1 << mEv_GET_SUBTYPE(event_kind); - - *flag_p &= ~mask; - if (type == mEv_SAVED_EVENT) { - Save_Get(event_save_data).flags = *flag_p; + if (type < mEv_EVENT_TYPE_NUM) { + u32* flag_p = Common_GetPointer(event_flags[type]); + u32 mask = 1 << mEv_GET_SUBTYPE(event_kind); + + *flag_p &= ~mask; + if (type == mEv_SAVED_EVENT) { + Save_Get(event_save_data).flags = *flag_p; + } } - } } extern int mEv_CheckEvent(u32 event_kind) { - u32 type = mEv_GET_TYPE(event_kind); - int res = FALSE; + u32 type = mEv_GET_TYPE(event_kind); + int res = FALSE; - if (type < mEv_EVENT_TYPE_NUM) { - u32* flags_p = Common_GetPointer(event_flags[type]); - - if (((*flags_p) >> mEv_GET_SUBTYPE(event_kind)) & 1) { - res = TRUE; + if (type < mEv_EVENT_TYPE_NUM) { + u32* flags_p = Common_GetPointer(event_flags[type]); + + if (((*flags_p) >> mEv_GET_SUBTYPE(event_kind)) & 1) { + res = TRUE; + } } - } - return res; + return res; } extern void mEv_ClearPersonalEventFlag(int player_no) { - mEv_EventOFF(mEv_SAVED_FIRSTJOB_PLR0 + player_no); - mEv_EventOFF(mEv_SAVED_FIRSTINTRO_PLR0 + player_no); - mEv_EventOFF(mEv_SAVED_HRAWAIT_PLR0 + player_no); - mEv_EventOFF(mEv_SAVED_HRATALK_PLR0 + player_no); - mEv_EventOFF(mEv_SAVED_FJOPENQUEST_PLR0 + player_no); - mEv_EventOFF(mEv_SAVED_GATEWAY_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_FIRSTJOB_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_FIRSTINTRO_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_HRAWAIT_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_HRATALK_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_FJOPENQUEST_PLR0 + player_no); + mEv_EventOFF(mEv_SAVED_GATEWAY_PLR0 + player_no); - { - aAPC_event_save_data_c* data = (aAPC_event_save_data_c*)mEv_get_save_area(mEv_EVENT_APRILFOOLS_DAY, 0); + { + aAPC_event_save_data_c* data = (aAPC_event_save_data_c*)mEv_get_save_area(mEv_EVENT_APRILFOOLS_DAY, 0); - if (data != NULL) { - data->talk_bitfield[player_no] = 0; + if (data != NULL) { + data->talk_bitfield[player_no] = 0; + } } - } } extern void mEv_SetFirstJob() { - if (Common_Get(player_no) < PLAYER_NUM) { - u32 ev = mEv_SAVED_FIRSTJOB_PLR0; + if (Common_Get(player_no) < PLAYER_NUM) { + u32 ev = mEv_SAVED_FIRSTJOB_PLR0; - ev += Common_Get(player_no); - mEv_EventON(ev); - } + ev += Common_Get(player_no); + mEv_EventON(ev); + } } extern int mEv_CheckRealArbeit() { - u32 player_no = Common_Get(player_no); - int res = FALSE; - - if ( - player_no < PLAYER_NUM && - ( - mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || - mEv_CheckEvent( mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE - ) - ) { - res = TRUE; - } + u32 player_no = Common_Get(player_no); + int res = FALSE; - return res; + if (player_no < PLAYER_NUM && (mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || + mEv_CheckEvent(mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE)) { + res = TRUE; + } + + return res; } extern int mEv_CheckArbeit() { - u32 player_no = Common_Get(player_no); - int res = FALSE; - - if ( - player_no < PLAYER_NUM && - ( - mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || - mEv_CheckEvent( mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE || - mEv_CheckEvent( mEv_SAVED_HRATALK_PLR0 + player_no) == TRUE - ) - ) { - res = TRUE; - } + u32 player_no = Common_Get(player_no); + int res = FALSE; - return res; + if (player_no < PLAYER_NUM && (mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || + mEv_CheckEvent(mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE || + mEv_CheckEvent(mEv_SAVED_HRATALK_PLR0 + player_no) == TRUE)) { + res = TRUE; + } + + return res; } -extern int mFI_CheckFirstJob() { - u32 player_no = Common_Get(player_no); - int res = FALSE; - - if (player_no < PLAYER_NUM) { - u32 ev = mEv_SAVED_FIRSTJOB_PLR0; - ev += player_no; - - if (mEv_CheckEvent(ev) == TRUE) { - res = TRUE; - } - } +extern int mEv_CheckFirstJob() { + u32 player_no = Common_Get(player_no); + int res = FALSE; - return res; + if (player_no < PLAYER_NUM) { + u32 ev = mEv_SAVED_FIRSTJOB_PLR0; + ev += player_no; + + if (mEv_CheckEvent(ev) == TRUE) { + res = TRUE; + } + } + + return res; } extern void mEv_UnSetFirstJob() { - u32 player_no = Common_Get(player_no); + u32 player_no = Common_Get(player_no); - if (player_no < PLAYER_NUM) { - mEv_EventOFF(mEv_SAVED_FIRSTJOB_PLR0 + player_no); - mEv_EventON(mEv_SAVED_HRAWAIT_PLR0 + player_no); - } + if (player_no < PLAYER_NUM) { + mEv_EventOFF(mEv_SAVED_FIRSTJOB_PLR0 + player_no); + mEv_EventON(mEv_SAVED_HRAWAIT_PLR0 + player_no); + } } extern void mEv_SetFirstIntro() { - u32 player_no = Common_Get(player_no); + u32 player_no = Common_Get(player_no); - if (player_no < PLAYER_NUM) { - u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; - ev += player_no; - - mEv_EventON(ev); - } + if (player_no < PLAYER_NUM) { + u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; + ev += player_no; + + mEv_EventON(ev); + } } extern int mEv_CheckFirstIntro() { - u32 player_no = Common_Get(player_no); - int res = FALSE; + u32 player_no = Common_Get(player_no); + int res = FALSE; - if (player_no < PLAYER_NUM) { - u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; - ev += player_no; - - if (mEv_CheckEvent(ev) == TRUE) { - res = TRUE; + if (player_no < PLAYER_NUM) { + u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; + ev += player_no; + + if (mEv_CheckEvent(ev) == TRUE) { + res = TRUE; + } } - } - return res; + return res; } extern void mEv_UnSetFirstIntro() { - u32 player_no = Common_Get(player_no); + u32 player_no = Common_Get(player_no); - if (player_no < PLAYER_NUM) { - u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; - ev += player_no; - mEv_EventOFF(ev); - } + if (player_no < PLAYER_NUM) { + u32 ev = mEv_SAVED_FIRSTINTRO_PLR0; + ev += player_no; + mEv_EventOFF(ev); + } } extern void mEv_SetGateway() { - u32 player_no = Common_Get(player_no); + u32 player_no = Common_Get(player_no); - if (player_no < TOTAL_PLAYER_NUM) { - u32 ev = mEv_SAVED_GATEWAY_PLR0; - ev += player_no; - mEv_EventON(ev); - } + if (player_no < TOTAL_PLAYER_NUM) { + u32 ev = mEv_SAVED_GATEWAY_PLR0; + ev += player_no; + mEv_EventON(ev); + } } extern int mEv_CheckGateway() { - u32 player_no = Common_Get(player_no); - int res = FALSE; + u32 player_no = Common_Get(player_no); + int res = FALSE; - if (player_no < TOTAL_PLAYER_NUM) { - u32 ev = mEv_SAVED_GATEWAY_PLR0; - ev += player_no; + if (player_no < TOTAL_PLAYER_NUM) { + u32 ev = mEv_SAVED_GATEWAY_PLR0; + ev += player_no; - if (mEv_CheckEvent(ev) == TRUE) { - res = TRUE; + if (mEv_CheckEvent(ev) == TRUE) { + res = TRUE; + } } - } - return res; + return res; } extern void mEv_UnSetGateway() { - u32 player_no = Common_Get(player_no); + u32 player_no = Common_Get(player_no); - if (player_no < TOTAL_PLAYER_NUM) { - u32 ev = mEv_SAVED_GATEWAY_PLR0; - ev += player_no; - - mEv_EventOFF(ev); - } + if (player_no < TOTAL_PLAYER_NUM) { + u32 ev = mEv_SAVED_GATEWAY_PLR0; + ev += player_no; + + mEv_EventOFF(ev); + } } static int title_demo_number = -1; extern int mEv_CheckTitleDemo() { - return title_demo_number; + return title_demo_number; } extern void mEv_SetTitleDemo(int demo_number) { - title_demo_number = demo_number; + title_demo_number = demo_number; } extern void mEv_RenewalDataEveryDay() { - if (mTM_check_renew_time(mTM_RENEW_TIME_DAILY) == TRUE) { - int i; - - for (i = 0; i < PLAYER_NUM; i++) { - - u32 check_event = mEv_SAVED_HRAWAIT_PLR0 + i; - if (mEv_CheckEvent(check_event) == TRUE) { - /* After a new day starts, turn off all players' 'wait a day' HRA event and turn on talk to Tom Nook HRA event */ - mEv_EventOFF(check_event); - mEv_EventON(mEv_SAVED_HRATALK_PLR0 + i); - } + if (mTM_check_renew_time(mTM_RENEW_TIME_DAILY) == TRUE) { + int i; + + for (i = 0; i < PLAYER_NUM; i++) { + + u32 check_event = mEv_SAVED_HRAWAIT_PLR0 + i; + if (mEv_CheckEvent(check_event) == TRUE) { + /* After a new day starts, turn off all players' 'wait a day' HRA event and turn on talk to Tom Nook HRA + * event */ + mEv_EventOFF(check_event); + mEv_EventON(mEv_SAVED_HRATALK_PLR0 + i); + } + } } - } } extern void mEv_GetEventWeather(s16* weather, s16* intensity) { - intensity[0] = mEnv_WEATHER_INTENSITY_HEAVY; + intensity[0] = mEnv_WEATHER_INTENSITY_HEAVY; - if (mEv_check_schedule(mEv_EVENT_WEATHER_CLEAR)) { - weather[0] = mEnv_WEATHER_CLEAR; - } - else if (mEv_check_schedule(mEv_EVENT_WEATHER_SNOW)) { - weather[0] = mEnv_WEATHER_SNOW; - } - else if (mEv_check_schedule(mEv_EVENT_WEATHER_SPORTS_FAIR)) { - weather[0] = mEnv_WEATHER_CLEAR; - } - else { - weather[0] = -1; // no event weather - } + if (mEv_check_schedule(mEv_EVENT_WEATHER_CLEAR)) { + weather[0] = mEnv_WEATHER_CLEAR; + } else if (mEv_check_schedule(mEv_EVENT_WEATHER_SNOW)) { + weather[0] = mEnv_WEATHER_SNOW; + } else if (mEv_check_schedule(mEv_EVENT_WEATHER_SPORTS_FAIR)) { + weather[0] = mEnv_WEATHER_CLEAR; + } else { + weather[0] = -1; // no event weather + } } -#include "m_event_schedule.c_inc" +static mEv_event_today_c event_today[mEv_TODAY_EVENT_NUM]; +static int n_today_events = 0; + +#include "../src/m_event_schedule.c_inc" + +static int status_edge = 0; static int event_rumor_table[] = { - mEv_EVENT_RUMOR_NEW_YEARS_DAY, - mEv_EVENT_RUMOR_KAMAKURA, - mEv_EVENT_RUMOR_VALENTINES_DAY, - mEv_EVENT_RUMOR_GROUNDHOG_DAY, - mEv_EVENT_RUMOR_APRILFOOLS_DAY, - mEv_EVENT_RUMOR_CHERRY_BLOSSOM_FESTIVAL, - mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR, - mEv_EVENT_RUMOR_HARVEST_FESTIVAL, - mEv_EVENT_76, - mEv_EVENT_RUMOR_FISHING_TOURNEY_1, - mEv_EVENT_TALK_FISHING_TOURNEY_1, - mEv_EVENT_RUMOR_MORNING_AEROBICS, - mEv_EVENT_TALK_MORNING_AEROBICS, - mEv_EVENT_RUMOR_FIREWORKS_SHOW, - mEv_EVENT_76, - mEv_EVENT_RUMOR_METEOR_SHOWER, - mEv_EVENT_RUMOR_HARVEST_MOON_DAY, - mEv_EVENT_RUMOR_FALL_SPORTS_FAIR, - mEv_EVENT_RUMOR_MUSHROOM_SEASON, - mEv_EVENT_TALK_MUSHROOM_SEASON, - mEv_EVENT_RUMOR_HALLOWEEN, - mEv_EVENT_RUMOR_FISHING_TOURNEY_2, - mEv_EVENT_TALK_FISHING_TOURNEY_2, - mEv_EVENT_RUMOR_TOY_DAY, - mEv_EVENT_RUMOR_NEW_YEARS_EVE_COUNTDOWN + mEv_EVENT_RUMOR_NEW_YEARS_DAY, mEv_EVENT_RUMOR_KAMAKURA, mEv_EVENT_RUMOR_VALENTINES_DAY, + mEv_EVENT_RUMOR_GROUNDHOG_DAY, mEv_EVENT_RUMOR_APRILFOOLS_DAY, mEv_EVENT_RUMOR_CHERRY_BLOSSOM_FESTIVAL, + mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR, mEv_EVENT_RUMOR_HARVEST_FESTIVAL, mEv_EVENT_76, + mEv_EVENT_RUMOR_FISHING_TOURNEY_1, mEv_EVENT_TALK_FISHING_TOURNEY_1, mEv_EVENT_RUMOR_MORNING_AEROBICS, + mEv_EVENT_TALK_MORNING_AEROBICS, mEv_EVENT_RUMOR_FIREWORKS_SHOW, mEv_EVENT_76, + mEv_EVENT_RUMOR_METEOR_SHOWER, mEv_EVENT_RUMOR_HARVEST_MOON_DAY, mEv_EVENT_RUMOR_FALL_SPORTS_FAIR, + mEv_EVENT_RUMOR_MUSHROOM_SEASON, mEv_EVENT_TALK_MUSHROOM_SEASON, mEv_EVENT_RUMOR_HALLOWEEN, + mEv_EVENT_RUMOR_FISHING_TOURNEY_2, mEv_EVENT_TALK_FISHING_TOURNEY_2, mEv_EVENT_RUMOR_TOY_DAY, + mEv_EVENT_RUMOR_NEW_YEARS_EVE_COUNTDOWN, }; static int n_event_rumors = ARRAY_COUNT(event_rumor_table); -static u16 special_event_types[] = { - mEv_EVENT_SHOP_SALE, - mEv_EVENT_DESIGNER, - mEv_EVENT_BROKER_SALE, - mEv_EVENT_ARTIST, - mEv_EVENT_CARPET_PEDDLER, - mEv_EVENT_GYPSY +static u8 index_today[mEv_EVENT_NUM]; +static s16 special_event_types[] = { + mEv_EVENT_SHOP_SALE, mEv_EVENT_DESIGNER, mEv_EVENT_BROKER_SALE, + mEv_EVENT_ARTIST, mEv_EVENT_CARPET_PEDDLER, mEv_EVENT_GYPSY, }; static int n_special_event_type = ARRAY_COUNT(special_event_types); +static int funeral = 0; +static int dead = 0; +static lbRTC_year_t weekday1st_year = 0; +static lbRTC_weekday_t weekday1st[16]; +static int n_rumor; +static int rumor_table[40]; + +// clang-format off +BSS_ORDER_GROUP_START + BSS_ORDER_ITEM(n_today_events) + BSS_ORDER_ITEM(status_edge) + BSS_ORDER_ITEM(funeral) + BSS_ORDER_ITEM(dead) + BSS_ORDER_ITEM(weekday1st_year) + BSS_ORDER_ITEM(weekday1st) + BSS_ORDER_ITEM(event_today) + BSS_ORDER_ITEM(index_today) + BSS_ORDER_ITEM(n_rumor) + BSS_ORDER_ITEM(rumor_table) +BSS_ORDER_GROUP_END +// clang-format on + static int last_day_of_month(lbRTC_month_t month) { - static lbRTC_day_t last_day[lbRTC_MONTHS_MAX] = { - 31, 28, 31, 30, - 31, 30, 31, 31, - 30, 31, 30, 31 - }; + static lbRTC_day_t last_day[lbRTC_MONTHS_MAX] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; - lbRTC_year_t year = Common_Get(time.rtc_time.year); - lbRTC_day_t day = last_day[month - 1]; + lbRTC_year_t year = Common_Get(time.rtc_time.year); + lbRTC_day_t day = last_day[month - 1]; - if (month != lbRTC_FEBRUARY) { - return day; - } - else if (lbRTC_IS_LEAPYEAR(year)) { - return 29; - } - else { - return 28; - } + if (month != lbRTC_FEBRUARY) { + return day; + } else if (lbRTC_IS_LEAPYEAR(year)) { + return 29; + } else { + return 28; + } } static void init_weekday1st() { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_month_t month; - lbRTC_month_t temp; - lbRTC_month_t i; - int weekday; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + lbRTC_month_t month; + lbRTC_month_t temp; + lbRTC_month_t i; + int weekday; - month = rtc_time->month & 0xF; - weekday1st_year = rtc_time->year; + month = rtc_time->month & 0xF; + weekday1st_year = rtc_time->year; - weekday = (rtc_time->weekday + (1 - rtc_time->day)) % lbRTC_WEEK; - if (weekday < 0) { - weekday += lbRTC_WEEK; - } - - weekday1st[month] = weekday; - - for (i = month, temp = month + 1; temp <= lbRTC_MONTHS_MAX; i++, temp++) { - int last = last_day_of_month(i); - int t = (weekday1st[i] + (u8)last) % lbRTC_WEEK; - - if (t < 0) { - t += lbRTC_WEEK; - } - - weekday1st[temp] = t; - } - - for (temp = month - 1, i = month; temp >= lbRTC_JANUARY; i--, temp--) { - lbRTC_day_t last_day = last_day_of_month(temp); - - weekday = (weekday1st[i] - last_day) % lbRTC_WEEK; + weekday = (rtc_time->weekday + (1 - rtc_time->day)) % lbRTC_WEEK; if (weekday < 0) { - weekday += lbRTC_WEEK; + weekday += lbRTC_WEEK; } - weekday1st[temp] = weekday; - } + weekday1st[month] = weekday; + + for (i = month, temp = month + 1; temp <= lbRTC_MONTHS_MAX; i++, temp++) { + int last = last_day_of_month(i); + int t = (weekday1st[i] + (u8)last) % lbRTC_WEEK; + + if (t < 0) { + t += lbRTC_WEEK; + } + + weekday1st[temp] = t; + } + + for (temp = month - 1, i = month; temp >= lbRTC_JANUARY; i--, temp--) { + lbRTC_day_t last_day = last_day_of_month(temp); + + weekday = (weekday1st[i] - last_day) % lbRTC_WEEK; + if (weekday < 0) { + weekday += lbRTC_WEEK; + } + + weekday1st[temp] = weekday; + } } static int check_date_range(u16 date, u16 lower_bound, u16 upper_bound) { - int res; + int res; - if (lower_bound > upper_bound) { - res = FALSE; - if (lower_bound <= date || date <= upper_bound) { - res = TRUE; + if (lower_bound > upper_bound) { + res = FALSE; + if (lower_bound <= date || date <= upper_bound) { + res = TRUE; + } + } else { + res = FALSE; + if (lower_bound <= date && date <= upper_bound) { + res = TRUE; + } } - } - else { - res = FALSE; - if (lower_bound <= date && date <= upper_bound) { - res = TRUE; - } - } - return res; + return res; } static int check_ymdh_range(u32 ymdh, u32 lower_bound, u32 upper_bound) { - int res = FALSE; + int res = FALSE; - if (lower_bound <= ymdh && ymdh <= upper_bound) { - res = TRUE; - } + if (lower_bound <= ymdh && ymdh <= upper_bound) { + res = TRUE; + } - return res; + return res; } static u16 after_n_day(u16 month_day, int n_day) { - mEv_MonthDay_u after; - u8 day; + mEv_MonthDay_u after; + u8 day; - after.raw = month_day; + after.raw = month_day; - if (n_day >= 0) { - day = last_day_of_month(after.month); + if (n_day >= 0) { + day = last_day_of_month(after.month); - after.day = after.day + n_day; - if (after.day > day) { - if (after.month == lbRTC_DECEMBER) { - after.month = lbRTC_JANUARY; - } - else { - after.month++; - } + after.day = after.day + n_day; + if (after.day > day) { + if (after.month == lbRTC_DECEMBER) { + after.month = lbRTC_JANUARY; + } else { + after.month++; + } - after.day -= day; + after.day -= day; + } + } else { + after.day = after.day + n_day; + if ((after.day & 0x80) != 0 || after.day == 0) { + if (after.month == lbRTC_JANUARY) { + after.month = lbRTC_DECEMBER; + } else { + after.month--; + } + + day = last_day_of_month(after.month); + after.day += day; + } } - } - else { - after.day = after.day + n_day; - if ((after.day & 0x80) != 0 || after.day == 0) { - if (after.month == lbRTC_JANUARY) { - after.month = lbRTC_DECEMBER; - } - else { - after.month--; - } - day = last_day_of_month(after.month); - after.day += day; - } - } - - return after.raw; + return after.raw; } extern lbRTC_day_t mEv_get_next_weekday(lbRTC_weekday_t weekday) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_weekday_t next_weekday; - lbRTC_day_t day; - lbRTC_day_t last_day; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + lbRTC_weekday_t next_weekday; + lbRTC_day_t day; + lbRTC_day_t last_day; - if (weekday >= rtc_time->weekday) { - day = rtc_time->day + (weekday - rtc_time->weekday); - } - else { - day = rtc_time->day + (lbRTC_WEEK - (rtc_time->weekday - weekday)); - } + if (weekday >= rtc_time->weekday) { + day = rtc_time->day + (weekday - rtc_time->weekday); + } else { + day = rtc_time->day + (lbRTC_WEEK - (rtc_time->weekday - weekday)); + } - last_day = last_day_of_month(rtc_time->month); + last_day = last_day_of_month(rtc_time->month); - if (day > last_day) { - day -= last_day; - } + if (day > last_day) { + day -= last_day; + } - return day; + return day; } -#define mEv_date_decode_weekday(day) ((day) & 0b00000111) // 0-6 (which weekday, Sunday-Saturday) +#define mEv_date_decode_weekday(day) ((day) & 0b00000111) // 0-6 (which weekday, Sunday-Saturday) #define mEv_date_decode_week(day) (((day) & 0b00111000) >> 3) // 0-5 (which week of the month, 1st, 2nd, 3rd, ...) static lbRTC_day_t m_weekday2day(lbRTC_month_t month, u8 day_enc) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - int week = mEv_date_decode_week(day_enc); // get the week of the month - int weekday = mEv_date_decode_weekday(day_enc); // get the weekday - lbRTC_day_t day = 0; - int last_day = last_day_of_month(month); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + int week = mEv_date_decode_week(day_enc); // get the week of the month + int weekday = mEv_date_decode_weekday(day_enc); // get the weekday + lbRTC_day_t day = 0; + int last_day = last_day_of_month(month); - if (week == mEv_SCHEDULE_EVERY_WEEK) { - if (month > rtc_time->month) { - week = 1; /* 1st week of this month */ - } - else if (month < rtc_time->month) { - week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; /* last weekday of the month */ - } - else { - day = rtc_time->day - (rtc_time->weekday - weekday); + if (week == mEv_SCHEDULE_EVERY_WEEK) { + if (month > rtc_time->month) { + week = 1; /* 1st week of this month */ + } else if (month < rtc_time->month) { + week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; /* last weekday of the month */ + } else { + day = rtc_time->day - (rtc_time->weekday - weekday); - if (day > (u8)last_day) { - week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; - } - else { - week = 0; /* cleared */ - } + if (day > (u8)last_day) { + week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; + } else { + week = 0; /* cleared */ + } + } } - } - if (week == mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH) { - lbRTC_day_t d = last_day; - int t_day = (-1 + d + weekday1st[month]) % lbRTC_WEEK; /* get the weekday of the first day of next month */ + if (week == mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH) { + lbRTC_day_t d = last_day; + int t_day = (-1 + d + weekday1st[month]) % lbRTC_WEEK; /* get the weekday of the first day of next month */ - if (weekday <= t_day) { - day = d - (t_day - weekday); - } - else { - day = (d - (t_day - weekday)) - lbRTC_WEEK; - } - } - else if (week != 0) { - int t_day = weekday1st[month]; + if (weekday <= t_day) { + day = d - (t_day - weekday); + } else { + day = (d - (t_day - weekday)) - lbRTC_WEEK; + } + } else if (week != 0) { + int t_day = weekday1st[month]; - if (weekday >= t_day) { - day = 1 + (week - 1) * lbRTC_WEEK + (weekday - t_day); + if (weekday >= t_day) { + day = 1 + (week - 1) * lbRTC_WEEK + (weekday - t_day); + } else { + day = 1 + week * lbRTC_WEEK + (weekday - t_day); + } } - else { - day = 1 + week * lbRTC_WEEK + (weekday - t_day); - } - } - return day; + return day; } -static lbRTC_weekday_t weekday1st[lbRTC_MONTHS_MAX]; - extern int mEv_weekday2day(lbRTC_month_t month, int week, int weekday) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_day_t day = 0; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + lbRTC_day_t day = 0; - if (week == mEv_SCHEDULE_EVERY_WEEK) { - if (month > rtc_time->month) { - week = 1; /* 1st week of this month */ + if (week == mEv_SCHEDULE_EVERY_WEEK) { + if (month > rtc_time->month) { + week = 1; /* 1st week of this month */ + } else if (month < rtc_time->month) { + week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; /* last weekday of the month */ + } else { + day = rtc_time->day - (rtc_time->weekday - weekday); + week = 0; /* cleared */ + } } - else if (month < rtc_time->month) { - week = mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH; /* last weekday of the month */ - } - else { - day = rtc_time->day - (rtc_time->weekday - weekday); - week = 0; /* cleared */ - } - } - if (week == mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH) { - lbRTC_day_t last_day = last_day_of_month(month); - int t_day = (-1 + last_day + weekday1st[month]) % lbRTC_WEEK; /* get the weekday of the first day of next month */ + if (week == mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH) { + lbRTC_day_t last_day = last_day_of_month(month); + int t_day = + (-1 + last_day + weekday1st[month]) % lbRTC_WEEK; /* get the weekday of the first day of next month */ - if (weekday <= t_day) { - day = last_day - (t_day - weekday); - } - else { - day = (last_day - (t_day - weekday)) - lbRTC_WEEK; - } - } - else if (week != 0) { - int t_day = weekday1st[month]; + if (weekday <= t_day) { + day = last_day - (t_day - weekday); + } else { + day = (last_day - (t_day - weekday)) - lbRTC_WEEK; + } + } else if (week != 0) { + int t_day = weekday1st[month]; - if (weekday >= t_day) { - day = 1 + (week - 1) * lbRTC_WEEK + (weekday - t_day); + if (weekday >= t_day) { + day = 1 + (week - 1) * lbRTC_WEEK + (weekday - t_day); + } else { + day = 1 + week * lbRTC_WEEK + (weekday - t_day); + } } - else { - day = 1 + week * lbRTC_WEEK + (weekday - t_day); - } - } - return day; + return day; } static int get_end_time(u32 active_hours) { - int hour; - int i; + int hour; + int i; - if ((active_hours & ((1 << 24) - 1)) == 0) { - return -1; /* no active hours */ - } - - hour = 23; - for (i = 0; i < 24; i++) { - if ((active_hours & (1 << 23)) != 0) { - break; + if ((active_hours & ((1 << 24) - 1)) == 0) { + return -1; /* no active hours */ } - active_hours <<= 1; /* move hours left by one bit, MSB is latest hour */ - hour--; - } + hour = 23; + for (i = 0; i < 24; i++) { + if ((active_hours & (1 << 23)) != 0) { + break; + } - return hour; + active_hours <<= 1; /* move hours left by one bit, MSB is latest hour */ + hour--; + } + + return hour; } -static mEv_event_today_c event_today[mEv_TODAY_EVENT_NUM]; -static u8 index_today[mEv_EVENT_NUM]; - extern int mEv_get_end_time(int event_type) { - u8 idx = index_today[event_type]; - mEv_event_today_c* ev_today = &event_today[idx]; + u8 idx = index_today[event_type]; + mEv_event_today_c* ev_today = &event_today[idx]; - if (idx == 0xFF) { - return -1; - } - else { - return get_end_time(ev_today->active_hours); - } + if (idx == 0xFF) { + return -1; + } else { + return get_end_time(ev_today->active_hours); + } } static int search_empty_event_today() { - int i; + int i; - for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - if (event_today[i].type == -1) { - return i; + for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { + if (event_today[i].type == -1) { + return i; + } } - } - return i; + return i; } static int add_event_today(u16 month_day, mEv_schedule_c* schedule) { - mEv_event_today_c* ev_today; - u8 idx = index_today[schedule->type]; - int res = FALSE; + mEv_event_today_c* ev_today; + u8 idx = index_today[schedule->type]; + int res = FALSE; - if (idx != 0xFF) { - ev_today = &event_today[idx]; - res = FALSE; - } - else { - int idx = search_empty_event_today(); + if (idx != 0xFF) { + ev_today = &event_today[idx]; + res = FALSE; + } else { + int idx = search_empty_event_today(); - if (idx >= mEv_TODAY_EVENT_NUM) { - return FALSE; - } - - index_today[schedule->type] = idx; - ev_today = &event_today[idx]; - n_today_events++; - } + if (idx >= mEv_TODAY_EVENT_NUM) { + return FALSE; + } - { - u8 start_hour = schedule->date[0].d.hour; - u8 end_hour = schedule->date[1].d.hour; - u32 n; - lbRTC_hour_t i; - - if ((start_hour & mEv_SCHEDULE_TODAY) != 0) { - ev_today->begin_date.raw = month_day; - ev_today->end_date.raw = month_day; - start_hour &= ~mEv_SCHEDULE_TODAY; - end_hour &= ~mEv_SCHEDULE_TODAY; - } - else { - ev_today->begin_date.raw = schedule->date[0].md; - ev_today->end_date.raw = schedule->date[1].md; + index_today[schedule->type] = idx; + ev_today = &event_today[idx]; + n_today_events++; } - if ((start_hour & mEv_SCHEDULE_MULTIDAY) != 0) { - start_hour &= ~mEv_SCHEDULE_MULTIDAY; - end_hour &= ~mEv_SCHEDULE_MULTIDAY; + { + u8 start_hour = schedule->date[0].d.hour; + u8 end_hour = schedule->date[1].d.hour; + u32 n; + lbRTC_hour_t i; - if (month_day != schedule->date[0].md) { - start_hour = 0; - } + if ((start_hour & mEv_SCHEDULE_TODAY) != 0) { + ev_today->begin_date.raw = month_day; + ev_today->end_date.raw = month_day; + start_hour &= ~mEv_SCHEDULE_TODAY; + end_hour &= ~mEv_SCHEDULE_TODAY; + } else { + ev_today->begin_date.raw = schedule->date[0].md; + ev_today->end_date.raw = schedule->date[1].md; + } - if (month_day != schedule->date[1].md) { - end_hour = 23; - } + if ((start_hour & mEv_SCHEDULE_MULTIDAY) != 0) { + start_hour &= ~mEv_SCHEDULE_MULTIDAY; + end_hour &= ~mEv_SCHEDULE_MULTIDAY; + + if (month_day != schedule->date[0].md) { + start_hour = 0; + } + + if (month_day != schedule->date[1].md) { + end_hour = 23; + } + } + + n = 1; + for (i = 0; i < 24; i++) { + if (start_hour <= i && i <= end_hour) { + ev_today->active_hours |= n; + } + + n <<= 1; + } } - n = 1; - for (i = 0; i < 24; i++) { - if (start_hour <= i && i <= end_hour) { - ev_today->active_hours |= n; - } + ev_today->type = schedule->type; + ev_today->status |= mEv_STATUS_EXIST; - n <<= 1; - } - } - - ev_today->type = schedule->type; - ev_today->status |= mEv_STATUS_EXIST; - - return res; + return res; } static int check_and_clear_event_today(Event_c* event, int type) { - u8 idx = index_today[type]; + u8 idx = index_today[type]; - if (idx != 0xFF) { - mEv_event_today_c* today_event = &event_today[idx]; + if (idx != 0xFF) { + mEv_event_today_c* today_event = &event_today[idx]; - if ((today_event->status & mEv_STATUS_EXIST) == FALSE) { - int flags = 0; - mEv_place_data_c* place = mEv_get_common_place(today_event->type, 81); + if ((today_event->status & mEv_STATUS_EXIST) == FALSE) { + int flags = 0; + mEv_place_data_c* place = mEv_get_common_place(today_event->type, 81); - if (place != NULL && place->block.x == event->block_x && place->block.z == event->block_z) { - flags |= 0b00000001; // 1, in the block the event is supposed to exist - } + if (place != NULL && place->block.x == event->block_x && place->block.z == event->block_z) { + flags |= 0b00000001; // 1, in the block the event is supposed to exist + } - if (mEv_check_status(today_event->type, mEv_STATUS_RUN)) { - flags |= 0b00000010; // 2, event is currently running - today_event->active_hours = 0x20000000; - } + if (mEv_check_status(today_event->type, mEv_STATUS_RUN)) { + flags |= 0b00000010; // 2, event is currently running + today_event->active_hours = 0x20000000; + } - if (type == today_event->type && flags == 0) { - today_event->type = -1; - today_event->active_hours = 0; - today_event->end_date.raw = 0; - today_event->status = 0; - n_today_events--; - index_today[type] = 0xFF; + if (type == today_event->type && flags == 0) { + today_event->type = -1; + today_event->active_hours = 0; + today_event->end_date.raw = 0; + today_event->status = 0; + n_today_events--; + index_today[type] = 0xFF; - return TRUE; - } + return TRUE; + } + } } - } - return FALSE; + return FALSE; } static int delete_too_short_event(Event_c* event, int type, u32 date) { - u8 idx = index_today[type]; + u8 idx = index_today[type]; - if (idx != 0xFF) { - mEv_event_today_c* today_event = &event_today[idx]; - mEv_schedule_date_u new_date; + if (idx != 0xFF) { + mEv_event_today_c* today_event = &event_today[idx]; + mEv_schedule_date_u new_date; - switch (today_event->type) { - case mEv_EVENT_NEW_YEARS_DAY: - case mEv_EVENT_GROUNDHOG_DAY: - case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: - case mEv_EVENT_SPORTS_FAIR_AEROBICS: - case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: - case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: - case mEv_EVENT_CHERRY_BLOSSOM_FESTIVAL: - case mEv_EVENT_FISHING_TOURNEY_1: - case mEv_EVENT_FIREWORKS_SHOW: - case mEv_EVENT_MORNING_AEROBICS: - case mEv_EVENT_HARVEST_MOON_FESTIVAL: - case mEv_EVENT_FISHING_TOURNEY_2: - case mEv_EVENT_HARVEST_FESTIVAL: - { - new_date.raw = date; - new_date.d.hour = mEv_get_end_time(today_event->type); + switch (today_event->type) { + case mEv_EVENT_NEW_YEARS_DAY: + case mEv_EVENT_GROUNDHOG_DAY: + case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: + case mEv_EVENT_SPORTS_FAIR_AEROBICS: + case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: + case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: + case mEv_EVENT_CHERRY_BLOSSOM_FESTIVAL: + case mEv_EVENT_FISHING_TOURNEY_1: + case mEv_EVENT_FIREWORKS_SHOW: + case mEv_EVENT_MORNING_AEROBICS: + case mEv_EVENT_HARVEST_MOON_FESTIVAL: + case mEv_EVENT_FISHING_TOURNEY_2: + case mEv_EVENT_HARVEST_FESTIVAL: { + new_date.raw = date; + new_date.d.hour = mEv_get_end_time(today_event->type); - break; - } + break; + } - case mEv_EVENT_HALLOWEEN: - case mEv_EVENT_TOY_DAY_JINGLE: - case mEv_EVENT_NEW_YEARS_EVE_COUNTDOWN: - { - new_date.raw = 0; - new_date.md = today_event->end_date.raw; - new_date.d.hour = mEv_get_end_time(today_event->type); + case mEv_EVENT_HALLOWEEN: + case mEv_EVENT_TOY_DAY_JINGLE: + case mEv_EVENT_NEW_YEARS_EVE_COUNTDOWN: { + new_date.raw = 0; + new_date.md = today_event->end_date.raw; + new_date.d.hour = mEv_get_end_time(today_event->type); - break; - } + break; + } - default: - { - return FALSE; - } + default: { + return FALSE; + } + } + + if (new_date.raw != date) { + return FALSE; + } + + if (Common_Get(time.rtc_time).min < 55) { + return FALSE; + } + + Common_Get(event_common).too_short = type; } - if (new_date.raw != date) { - return FALSE; - } - - if (Common_Get(time.rtc_time).min < 55) { - return FALSE; - } - - Common_Get(event_common).too_short = type; - } - - return TRUE; + return TRUE; } static void init_today_event() { - int i; + int i; - for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - mEv_event_today_c* ev_today = &event_today[i]; - - ev_today->type = -1; - ev_today->active_hours = 0; - ev_today->begin_date.raw = ev_today->end_date.raw = 0; - ev_today->status = 0; - } + for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { + mEv_event_today_c* ev_today = &event_today[i]; - n_today_events = 0; - for (i = 0; i < mEv_EVENT_NUM; i++) { - index_today[i] = 0xFF; - } + ev_today->type = -1; + ev_today->active_hours = 0; + ev_today->begin_date.raw = ev_today->end_date.raw = 0; + ev_today->status = 0; + } + + n_today_events = 0; + for (i = 0; i < mEv_EVENT_NUM; i++) { + index_today[i] = 0xFF; + } } static void init_time_seat() { - int i; + int i; - for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - mEv_event_today_c* ev_today = &event_today[i]; - - ev_today->active_hours = 0; - ev_today->begin_date.raw = ev_today->end_date.raw = 0; - ev_today->status &= ~mEv_STATUS_EXIST; - } + for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { + mEv_event_today_c* ev_today = &event_today[i]; + + ev_today->active_hours = 0; + ev_today->begin_date.raw = ev_today->end_date.raw = 0; + ev_today->status &= ~mEv_STATUS_EXIST; + } } static int get_special_event_end_time(s16 event_type) { - int end_time = 0; + int end_time = 0; - switch (event_type) { - case mEv_EVENT_DESIGNER: - end_time = 5; - break; - case mEv_EVENT_ARTIST: - end_time = 5; - break; - case mEv_EVENT_CARPET_PEDDLER: - end_time = 5; - break; - case mEv_EVENT_GYPSY: - end_time = 20; - break; - case mEv_EVENT_BROKER_SALE: - end_time = 17; - break; - case mEv_EVENT_SHOP_SALE: - end_time = 23; - break; - } + switch (event_type) { + case mEv_EVENT_DESIGNER: + end_time = 5; + break; + case mEv_EVENT_ARTIST: + end_time = 5; + break; + case mEv_EVENT_CARPET_PEDDLER: + end_time = 5; + break; + case mEv_EVENT_GYPSY: + end_time = 20; + break; + case mEv_EVENT_BROKER_SALE: + end_time = 17; + break; + case mEv_EVENT_SHOP_SALE: + end_time = 23; + break; + } - return end_time; + return end_time; } #define mEv_MonthDay(m, d) (((u8)(m) << 8) | ((u8)(d))) @@ -879,693 +838,650 @@ static int get_special_event_end_time(s16 event_type) { #define mEv_YearMonthDayHour(y, m, d, h) ((u32)(((u8)(y) << 24) | ((u8)(m) << 16) | ((u8)(d) << 8) | ((u8)(h)))) -/* @nonmatching TODO: This function needs a lot of help matching. Current best scratch: https://decomp.me/scratch/0EXoP */ static int init_special_event(int new_event) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - mEv_special_c* special_ev = &Save_Get(event_save_data).special; - int res = FALSE; + s16 type; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + mEv_special_c* special_ev = &Save_Get(event_save_data).special; + int res = FALSE; + int next_event_day_gap; + u16 sale_day; + int player_id; + int seed; + mEv_MonthDay_u special_monthday[3]; + mEv_MonthDay_u special_end_monthday; + mEv_schedule_date_u rtc_sched; + mEv_ymdh_u special_ymdh; + mEv_ymdh_u rtc_ymdh; + mEv_ymdh_u special_end_ymdh; + mEv_save_common_data_c* ev_save_common; + u16* dates_p; + s16 event_year; - switch (Common_Get(last_scene_no)) { - case SCENE_BUGGY: - case SCENE_BROKER_SHOP: - { - if (gamePT->frame_counter == 0) { - return FALSE; - } + switch (Common_Get(last_scene_no)) { + case SCENE_BUGGY: + case SCENE_BROKER_SHOP: { + if (gamePT->frame_counter == 0) { + return FALSE; + } - break; - } - } - - switch (Save_Get(scene_no)) { - case SCENE_BUGGY: - case SCENE_BROKER_SHOP: - return FALSE; - - case SCENE_SHOP0: - case SCENE_CONVENI: - case SCENE_SUPER: - case SCENE_DEPART: - case SCENE_DEPART_2: - { - if (Save_Get(event_save_common).special_event.type == mEv_EVENT_SHOP_SALE) { - return FALSE; - } + break; + } } - // fallthrough case - default: - { - mEv_ymdh_u rtc_ymdh; - mEv_ymdh_u special_ymdh; - mEv_ymdh_u special_end_ymdh; - mEv_MonthDay_u special_monthday; - mEv_schedule_date_u rtc_sched; - u16 special_end_monthday; - u16 sale_day_monthday; - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - - //u16 rtc_monthday = mEv_MonthDay(Common_Get(time.rtc_time.month), Common_Get(time.rtc_time.day)); - //u32 rtc_ymdh = (u32)(((Common_Get(time.rtc_time.year) % 100) << 24) | (rtc_monthday << 8) | Common_Get(time.rtc_time.hour)); - // u32 special_ymdh = (u32)(((Save_Get(event_year_ymd.year) % 100) << 24) | (Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] << 8)); - // u32 special_end_ymdh = (u32)( - // (((Save_Get(event_year_ymd.year) % 100) - ((Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2] < Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] && rtc_monthday < Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0]) ? 1 : 2)) << 24) | - // (Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] << 8) | - // (u8)get_special_event_end_time(Save_Get(event_save_common).special_event.type) - // ); + switch (Save_Get(scene_no)) { + case SCENE_BUGGY: + case SCENE_BROKER_SHOP: + return FALSE; - rtc_sched.raw = 0; - rtc_sched.d.month = rtc_time->month; - rtc_sched.d.day = rtc_time->day; + case SCENE_SHOP0: + case SCENE_CONVENI: + case SCENE_SUPER: + case SCENE_DEPART: + case SCENE_DEPART_2: { + if (Save_Get(event_save_common).special_event.type == mEv_EVENT_SHOP_SALE) { + return FALSE; + } + break; + } + } - rtc_ymdh.raw = (rtc_sched.md) << 8; - rtc_ymdh.year = rtc_time->year % 100; - rtc_ymdh.hour = rtc_time->hour; + ev_save_common = Save_GetPointer(event_save_common); + dates_p = ev_save_common->dates; + event_year = Save_Get(event_year); + type = ev_save_common->special_event.type; - special_ymdh.raw = ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] << 8; - special_ymdh.year = Save_Get(event_year) % 100; + rtc_sched.raw = 0; + rtc_sched.d.month = rtc_time->month; + rtc_sched.d.day = rtc_time->day; - //special_end_ymdh.raw = (special_ymdh.month_day.raw) << 8; - special_end_ymdh.year = (Save_Get(event_year) % 100) + ((ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] > ev_save_common->dates[mEv_SAVE_DATE_SPECIAL2] && ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] > rtc_sched.md) ? 0 : -1); - special_end_ymdh.hour = get_special_event_end_time(ev_save_common->special_event.type); + special_monthday[0].raw = dates_p[mEv_SAVE_DATE_SPECIAL1]; + special_ymdh.raw = (dates_p[mEv_SAVE_DATE_SPECIAL0] << 8) & 0x000FFFF00; + special_ymdh.year = event_year % 100; - if (check_ymdh_range(rtc_ymdh.raw, special_ymdh.raw, special_end_ymdh.raw) == FALSE || new_event) { - int seed = Common_Get(now_private)->player_ID.player_id; - s16 type; - int next_event_day_gap; + rtc_ymdh.raw = (rtc_sched.md) << 8; + rtc_ymdh.year = rtc_time->year % 100; + rtc_ymdh.hour = rtc_time->hour; + special_end_ymdh.raw = (dates_p[mEv_SAVE_DATE_SPECIAL2] << 8) & 0x000FFFF00; + special_end_ymdh.year = (event_year % 100) + ((dates_p[mEv_SAVE_DATE_SPECIAL0] > dates_p[mEv_SAVE_DATE_SPECIAL2] && + dates_p[mEv_SAVE_DATE_SPECIAL0] > rtc_sched.md) + ? 1 + : 0); + + special_end_ymdh.hour = get_special_event_end_time(type); + + if (check_ymdh_range(rtc_ymdh.raw, special_ymdh.raw, special_end_ymdh.raw) == FALSE || new_event) { + int player_id = Common_Get(now_private)->player_ID.player_id; + int n; + int seed = player_id; + int sale_weekday; res |= TRUE; mEv_ClearSpecialEvent(special_ev); - seed += 1 + rtc_time->year - rtc_time->month + rtc_time->day + rtc_time->hour; + + player_id = (player_id & 0x00FFFFFF) + 1; + seed = player_id + (rtc_time->year - rtc_time->month) + rtc_time->day + rtc_time->hour; + /* Sale Day */ - sale_day_monthday = after_n_day(((lbRTC_NOVEMBER) << 8) | m_weekday2day(lbRTC_NOVEMBER, mEv_SCHEDULE_4TH_WEEKDAY(lbRTC_THURSDAY)), 1); + sale_weekday = m_weekday2day(lbRTC_NOVEMBER, mEv_SCHEDULE_4TH_WEEKDAY(lbRTC_THURSDAY)); + sale_day = (((lbRTC_NOVEMBER) << 8) | sale_weekday); + sale_day = after_n_day(sale_day, 1); - do { - sad_label: + while (TRUE) { /* Select a new unique random event */ - do { - type = special_event_types[seed % n_special_event_type]; - seed++; - } while (type == Save_Get(event_save_common).special_event.type); + type = special_event_types[seed % n_special_event_type]; + seed++; - mFAs_SetFieldRank(); - next_event_day_gap = 1 + - ((rtc_time->day + rtc_time->month * rtc_time->sec) % - ((mFAs_FIELDRANK_SIX + 1) - mFAs_GetFieldRank())); - - if (next_event_day_gap == 1) { - next_event_day_gap = 2; // minimum of 2 days between special events + if (type == Save_Get(event_save_common).special_event.type) { + continue; } - special_monthday.raw = after_n_day(rtc_sched.md, next_event_day_gap); - if ((u16)rtc_sched.md <= sale_day_monthday && (u16)sale_day_monthday <= (u32)special_monthday.raw) { - /* Force the next special event to be Crazy Redd since Sale Day falls between now and the rolled event date */ - special_monthday.raw = sale_day_monthday; - type = mEv_EVENT_BROKER_SALE; + mFAs_SetFieldRank(); + next_event_day_gap = 1 + ((rtc_time->day + rtc_time->month * rtc_time->sec) % + ((mFAs_FIELDRANK_SIX + 1) - mFAs_GetFieldRank())); + + if (next_event_day_gap == 1) { + next_event_day_gap = 2; // minimum of 2 days between special events + } + + special_monthday[0].raw = after_n_day(rtc_sched.md, next_event_day_gap); + if (rtc_sched.md <= sale_day && sale_day <= special_monthday[0].raw) { + /* Force the next special event to be Crazy Redd since Sale Day falls between now and the rolled + * event date */ + special_monthday[0].raw = sale_day; + type = mEv_EVENT_BROKER_SALE; } /* Set event start hour */ Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 6; switch (type) { - case mEv_EVENT_GYPSY: - break; - - case mEv_EVENT_SHOP_SALE: - { - lbRTC_day_t last_day = last_day_of_month(special_monthday.month); + case mEv_EVENT_SHOP_SALE: { + lbRTC_day_t last_day = last_day_of_month(special_monthday[0].month); - if ( - special_monthday.day != last_day && - (special_monthday.raw < mEv_MonthDay(lbRTC_JANUARY, 1) || special_monthday.raw > mEv_MonthDay(lbRTC_JANUARY, 3)) && - mEv_CheckEvent(mEv_SAVED_RENEWSHOP) != TRUE - ) { - /* Set shop sale starting hour randomly between 12PM and 7PM */ - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 12 + RANDOM(8); - goto hate_gotos; + if (special_monthday[0].day != last_day && + (special_monthday[0].raw < mEv_MonthDay(lbRTC_JANUARY, 1) || + special_monthday[0].raw > mEv_MonthDay(lbRTC_JANUARY, 3)) && + mEv_CheckEvent(mEv_SAVED_RENEWSHOP) != TRUE) { + /* Set shop sale starting hour randomly between 12PM and 7PM */ + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 12 + RANDOM(8); + break; + } + continue; } - goto sad_label; - } - case mEv_EVENT_BROKER_SALE: - { - if (special_monthday.raw != mEv_MonthDay(lbRTC_JULY, 4)) { - /* Set broker sale start hour to 6PM when it's not the Fireworks Festival */ - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 18; - goto hate_gotos; + case mEv_EVENT_BROKER_SALE: { + if (special_monthday[0].raw != mEv_MonthDay(lbRTC_JULY, 4)) { + /* Set broker sale start hour to 6PM when it's not the Fireworks Festival */ + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 18; + break; + } + continue; } - goto sad_label; - } - default: - goto hate_gotos; - break; + case mEv_EVENT_GYPSY: { + if (special_monthday[0].raw != mEv_MonthDay(lbRTC_DECEMBER, 31)) { + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = + 21; // default event start time is 9pm? + break; + } + continue; + } } - } while (special_monthday.raw == mEv_MonthDay(lbRTC_DECEMBER, 31)); - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL3] = 21; // default event start time is 9pm? - - hate_gotos: - { - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - u16 year; - - special_end_monthday = after_n_day(special_monthday.raw, type != mEv_EVENT_SHOP_SALE); // ?? - year = rtc_time->year; - ev_save_common->special_event.type = type; - ev_save_common->dates[mEv_SAVE_DATE_SPECIAL0] = rtc_sched.md; // current date - ev_save_common->dates[mEv_SAVE_DATE_SPECIAL1] = special_monthday.raw; // start date - ev_save_common->dates[mEv_SAVE_DATE_SPECIAL2] = special_end_monthday; // end date - Save_Set(event_year, year); - Save_Get(post_office).leaflet_recipient_flags.event_flags = 0b1111; // deliver leaflet to all players if necessary for event + break; } - } - break; - } - } - return res; + special_end_monthday.raw = after_n_day(special_monthday[0].raw, type != mEv_EVENT_SHOP_SALE); // ?? + Save_Get(event_save_common).special_event.type = type; + dates_p[mEv_SAVE_DATE_SPECIAL0] = rtc_sched.md; // current date + dates_p[mEv_SAVE_DATE_SPECIAL1] = special_monthday[0].raw; // start date + dates_p[mEv_SAVE_DATE_SPECIAL2] = special_end_monthday.raw; // end date + Save_Set(event_year, rtc_time->year); + Save_Get(post_office).leaflet_recipient_flags.event_flags = + 0b1111; // deliver leaflet to all players if necessary for event + } + + return res; } static int update_special_event(mEv_schedule_c* sched) { - s16 type = Save_Get(event_save_common).special_event.type; - int active = TRUE; - - switch (sched->type) { - case mEv_EVENT_ARTIST: - case mEv_EVENT_BROKER_SALE: - case mEv_EVENT_DESIGNER: - case mEv_EVENT_GYPSY: - case mEv_EVENT_SHOP_SALE: - case mEv_EVENT_CARPET_PEDDLER: - { - if (type != sched->type) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - active = FALSE; - } - break; + s16 type = Save_Get(event_save_common).special_event.type; + int active = TRUE; + + switch (sched->type) { + case mEv_EVENT_ARTIST: + case mEv_EVENT_BROKER_SALE: + case mEv_EVENT_DESIGNER: + case mEv_EVENT_GYPSY: + case mEv_EVENT_SHOP_SALE: + case mEv_EVENT_CARPET_PEDDLER: { + if (type != sched->type) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + active = FALSE; + } + break; + } + + case mEv_EVENT_HANDBILL_SHOP_SALE: { + if (type != mEv_EVENT_SHOP_SALE) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + active = FALSE; + } + break; + } + + case mEv_EVENT_HANDBILL_BROKER: { + if (type != mEv_EVENT_BROKER_SALE) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + active = FALSE; + } + break; + } + + default: + active = FALSE; + break; } - case mEv_EVENT_HANDBILL_SHOP_SALE: - { - if (type != mEv_EVENT_SHOP_SALE) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - active = FALSE; - } - break; - } - - case mEv_EVENT_HANDBILL_BROKER: - { - if (type != mEv_EVENT_BROKER_SALE) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - active = FALSE; - } - break; - } - - default: - active = FALSE; - break; - } - - return active; + return active; } extern u16 mEv_get_bargain_day() { - u16 bargain_day = 0; + u16 bargain_day = 0; - if (Save_Get(event_save_common).special_event.type == mEv_EVENT_SHOP_SALE) { - bargain_day = Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1]; - } + if (Save_Get(event_save_common).special_event.type == mEv_EVENT_SHOP_SALE) { + bargain_day = Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1]; + } - return bargain_day; + return bargain_day; } static int is_special_event_valid() { - mEv_schedule_date_u date; + mEv_schedule_date_u date; - date.raw = 0; - date.d.month = Common_Get(time.rtc_time.month); - date.d.day = Common_Get(time.rtc_time.day); + date.raw = 0; + date.d.month = Common_Get(time.rtc_time.month); + date.d.day = Common_Get(time.rtc_time.day); - return check_date_range( - date.md, - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0], - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2] - ); + return check_date_range(date.md, Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0], + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2]); } extern u16 mEv_get_special_event_day() { - u16 day = 0; + u16 day = 0; - if (is_special_event_valid()) { - day = Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1]; - } + if (is_special_event_valid()) { + day = Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1]; + } - return day; + return day; } extern u16 mEv_get_special_event_type() { - u16 type = 0; + u16 type = 0; - if (is_special_event_valid()) { - type = Save_Get(event_save_common).special_event.type; - } + if (is_special_event_valid()) { + type = Save_Get(event_save_common).special_event.type; + } - return type; + return type; } extern int mEv_get_event_place(int event, int* bx, int* bz) { - mEv_place_data_c* place; + mEv_place_data_c* place; - if (mEv_check_status(event, mEv_STATUS_RUN) != FALSE) { - place = mEv_get_common_place(event, 81); + if (mEv_check_status(event, mEv_STATUS_RUN) != FALSE) { + place = mEv_get_common_place(event, 81); - if (place != NULL) { - *bx = place->block.x; - *bz = place->block.z; - return TRUE; + if (place != NULL) { + *bx = place->block.x; + *bz = place->block.z; + return TRUE; + } } - } - return FALSE; + return FALSE; } extern int mEv_bridge_time_check() { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - return lbRTC_IsEqualDate( - Save_Get(bridge).build_date.year, Save_Get(bridge).build_date.month, Save_Get(bridge).build_date.day, - rtc_time.year, rtc_time.month, rtc_time.day - ); + return lbRTC_IsEqualDate(Save_Get(bridge).build_date.year, Save_Get(bridge).build_date.month, + Save_Get(bridge).build_date.day, rtc_time.year, rtc_time.month, rtc_time.day); } static void init_weekly_event() { - u16 sched_date; - lbRTC_time_c* rtc_time = &Common_Get(time.rtc_time); - mEv_kabu_peddler_c* kabu_peddler_data = &Save_Get(event_save_data).weekly.kabu_peddler; - mEv_MonthDay_u today_date; - u8 flag = 0; - u16 ghost_date; - u16 ghost_date2; - u16 monday_date; - u16 friday_date; - u16* event_dates = Save_Get(event_save_common).dates; + u16 sched_date; + lbRTC_time_c* rtc_time = &Common_Get(time.rtc_time); + mEv_kabu_peddler_c* kabu_peddler_data = &Save_Get(event_save_data).weekly.kabu_peddler; + mEv_MonthDay_u today_date; + u8 flag = 0; + u16 ghost_date; + u16 ghost_date2; + u16 monday_date; + u16 friday_date; + u16* event_dates = Save_Get(event_save_common).dates; - today_date.month = rtc_time->month; - today_date.day = rtc_time->day; - sched_date = event_dates[mEv_SAVE_DATE_WEEKLY]; - - switch (rtc_time->weekday) { - case lbRTC_SUNDAY: - { - /* Update Joan's data */ - if (today_date.raw != sched_date) { - mEv_ClearEventKabuPeddler(kabu_peddler_data); - sched_date = today_date.raw; - event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; - Save_Get(event_save_common).weekly_event.type = mEv_EVENT_KABU_PEDDLER; - flag = 1; - } - break; + today_date.month = rtc_time->month; + today_date.day = rtc_time->day; + sched_date = event_dates[mEv_SAVE_DATE_WEEKLY]; + + switch (rtc_time->weekday) { + case lbRTC_SUNDAY: { + /* Update Joan's data */ + if (today_date.raw != sched_date) { + mEv_ClearEventKabuPeddler(kabu_peddler_data); + sched_date = today_date.raw; + event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; + Save_Get(event_save_common).weekly_event.type = mEv_EVENT_KABU_PEDDLER; + flag = 1; + } + break; + } + + case lbRTC_SATURDAY: { + /* Update K.K. Slider's data */ + if (today_date.raw != sched_date) { + sched_date = today_date.raw; + event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; + Save_Get(event_save_common).weekly_event.type = mEv_EVENT_KK_SLIDER; + flag = 1; + } + break; + } + + default: { + monday_date = after_n_day(today_date.raw, lbRTC_MONDAY - rtc_time->weekday); + friday_date = after_n_day(today_date.raw, lbRTC_FRIDAY - rtc_time->weekday); + + /* Check if we should reschedule Gulliver */ + if (sched_date == 0 || check_date_range(sched_date, monday_date, friday_date) == FALSE) { + u8 ofs = 1 + (today_date.raw + rtc_time->hour) % 5; + /* Schedule a new date for the event between Monday & Friday */ + sched_date = after_n_day(today_date.raw, ofs - rtc_time->weekday); + event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; + Save_Get(event_save_common).weekly_event.type = mEv_EVENT_DOZAEMON; // Gulliver + Save_Get(event_save_common).dozaemon_completed = FALSE; + } + + /* Check if Guillver should spawn today */ + if (sched_date == today_date.raw) { + flag = mEv_EVENT_DOZAEMON; + } + + break; + } } - case lbRTC_SATURDAY: - { - /* Update K.K. Slider's data */ - if (today_date.raw != sched_date) { - sched_date = today_date.raw; - event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; - Save_Get(event_save_common).weekly_event.type = mEv_EVENT_KK_SLIDER; - flag = 1; - } - break; + /* Check if we should schedule Tortimer's 3rd bridge event */ + if (rtc_time->weekday == lbRTC_SATURDAY || (rtc_time->weekday != lbRTC_SUNDAY && sched_date != today_date.raw)) { + /* Gulliver wasn't scheduled today, so check the criteria is met */ + if (Common_Get(player_no) != mPr_FOREIGNER && Save_Get(now_npc_max) >= ANIMAL_NUM_MAX && + Save_Get(bridge).exists != TRUE && mSC_LightHouse_travel_check() == FALSE) { + flag = mEv_EVENT_SONCHO_BRIDGE_MAKE; + } + + /* Update bridge location seed and date */ + if (flag == mEv_EVENT_SONCHO_BRIDGE_MAKE && Save_Get(event_save_common).bridge_day != today_date.raw) { + Save_Get(event_save_common).bridge_day = today_date.raw; + Save_Get(event_save_common).bridge_flags.raw++; + } } - default: - { - monday_date = after_n_day(today_date.raw, lbRTC_MONDAY - rtc_time->weekday); - friday_date = after_n_day(today_date.raw, lbRTC_FRIDAY - rtc_time->weekday); - - /* Check if we should reschedule Gulliver */ - if (sched_date == 0 || check_date_range(sched_date, monday_date, friday_date) == FALSE) { - u8 ofs = 1 + (today_date.raw + rtc_time->hour) % 5; - /* Schedule a new date for the event between Monday & Friday */ - sched_date = after_n_day(today_date.raw, ofs - rtc_time->weekday); - event_dates[mEv_SAVE_DATE_WEEKLY] = sched_date; - Save_Get(event_save_common).weekly_event.type = mEv_EVENT_DOZAEMON; // Gulliver - Save_Get(event_save_common).dozaemon_completed = FALSE; - } - - /* Check if Guillver should spawn today */ - if (sched_date == today_date.raw) { - flag = mEv_EVENT_DOZAEMON; - } - - break; - } - } - - /* Check if we should schedule Tortimer's 3rd bridge event */ - if (rtc_time->weekday == lbRTC_SATURDAY || (rtc_time->weekday != lbRTC_SUNDAY && sched_date != today_date.raw)) { - /* Gulliver wasn't scheduled today, so check the criteria is met */ - if ( - Common_Get(player_no) != mPr_FOREIGNER && - Save_Get(now_npc_max) >= ANIMAL_NUM_MAX && - Save_Get(bridge).exists != TRUE && - mSC_LightHouse_travel_check() == FALSE - ) { - flag = mEv_EVENT_SONCHO_BRIDGE_MAKE; + /* Check if Blanca should spawn */ + if (flag != mEv_EVENT_DOZAEMON && flag != mEv_EVENT_SONCHO_BRIDGE_MAKE && + (mGH_check_birth2() || mMC_check_birth())) { + flag = mEv_EVENT_MASK_NPC; } - /* Update bridge location seed and date */ - if (flag == mEv_EVENT_SONCHO_BRIDGE_MAKE && Save_Get(event_save_common).bridge_day != today_date.raw) { - Save_Get(event_save_common).bridge_day = today_date.raw; - Save_Get(event_save_common).bridge_flags.raw++; + /* Initialize Wisp */ + Save_Get(event_save_common).weekly_event.flags = flag; + Save_Get(event_save_common).ghost_event_type = mEv_EVENT_NUM; // Wisp is not set to spawn + ghost_date = Save_Get(event_save_common).ghost_day; + monday_date = after_n_day(today_date.raw, -lbRTC_WEEK); + friday_date = after_n_day(today_date.raw, 4); + + /* Check if we should refresh Wisp's spawn date */ + if (ghost_date == 0 || check_date_range(ghost_date, monday_date, friday_date) == FALSE) { + ghost_date = after_n_day(today_date.raw, 2 + RANDOM(3)); + Save_Get(event_save_common).ghost_day = ghost_date; } - } - /* Check if Blanca should spawn */ - if ( - flag != mEv_EVENT_DOZAEMON && - flag != mEv_EVENT_SONCHO_BRIDGE_MAKE && - (mGH_check_birth2() || mMC_check_birth()) - ) { - flag = mEv_EVENT_MASK_NPC; - } - - /* Initialize Wisp */ - Save_Get(event_save_common).weekly_event.flags = flag; - Save_Get(event_save_common).ghost_event_type = mEv_EVENT_NUM; // Wisp is not set to spawn - ghost_date = Save_Get(event_save_common).ghost_day; - monday_date = after_n_day(today_date.raw, -lbRTC_WEEK); - friday_date = after_n_day(today_date.raw, 4); - - /* Check if we should refresh Wisp's spawn date */ - if (ghost_date == 0 || check_date_range(ghost_date, monday_date, friday_date) == FALSE) { - ghost_date = after_n_day(today_date.raw, 2 + RANDOM(3)); - Save_Get(event_save_common).ghost_day = ghost_date; - } - - /* Spawn Wisp if his scheduled appearance date is within [today-7, today] */ - if (check_date_range(ghost_date, monday_date, today_date.raw)) { - Save_Get(event_save_common).ghost_event_type = mEv_EVENT_GHOST; - } + /* Spawn Wisp if his scheduled appearance date is within [today-7, today] */ + if (check_date_range(ghost_date, monday_date, today_date.raw)) { + Save_Get(event_save_common).ghost_event_type = mEv_EVENT_GHOST; + } } static void update_soncho_event(mEv_schedule_c* sched) { - switch (sched->type) { - case mEv_EVENT_SONCHO_VACATION_JANUARY: - case mEv_EVENT_SONCHO_VACATION_FEBRUARY: - { - if (mSC_LightHouse_Event_Start() == FALSE) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } + switch (sched->type) { + case mEv_EVENT_SONCHO_VACATION_JANUARY: + case mEv_EVENT_SONCHO_VACATION_FEBRUARY: { + if (mSC_LightHouse_Event_Start() == FALSE) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } - break; + break; + } + + case mEv_EVENT_SONCHO_FISHING_TOURNEY_1: { + if (Save_Get(event_save_common).soncho_event_type != 0xFF) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } + + case mEv_EVENT_SONCHO_FISHING_TOURNEY_2: { + if (Save_Get(event_save_common).soncho_event_type != 0xFF) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } } - - case mEv_EVENT_SONCHO_FISHING_TOURNEY_1: - { - if (Save_Get(event_save_common).soncho_event_type != 0xFF) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - - case mEv_EVENT_SONCHO_FISHING_TOURNEY_2: - { - if (Save_Get(event_save_common).soncho_event_type != 0xFF) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - } } static void update_soncho_event2(mEv_schedule_c* sched) { - switch (sched->type) { - case mEv_EVENT_SONCHO_VACATION_JANUARY: - case mEv_EVENT_SONCHO_VACATION_FEBRUARY: - case mEv_EVENT_SONCHO_NEW_YEARS_DAY: - case mEv_EVENT_SONCHO_GROUNDHOG_DAY: - case mEv_EVENT_SONCHO_SPRING_SPORTS_FAIR: - case mEv_EVENT_SONCHO_APRILFOOLS_DAY: - case mEv_EVENT_SONCHO_CHERRY_BLOSSOM_FESTIVAL: - case mEv_EVENT_SONCHO_NATURE_DAY: - case mEv_EVENT_SONCHO_SPRING_CLEANING: - case mEv_EVENT_SONCHO_MOTHERS_DAY: - case mEv_EVENT_SONCHO_GRADUATION_DAY: - case mEv_EVENT_SONCHO_FATHERS_DAY: - case mEv_EVENT_SONCHO_FISHING_TOURNEY_1: - case mEv_EVENT_SONCHO_TOWN_DAY: - case mEv_EVENT_SONCHO_FIREWORKS_SHOW: - case mEv_EVENT_SONCHO_METEOR_SHOWER: - case mEv_EVENT_SONCHO_FOUNDERS_DAY: - case mEv_EVENT_SONCHO_LABOR_DAY: - case mEv_EVENT_SONCHO_FALL_SPORTS_FAIR: - case mEv_EVENT_SONCHO_HARVEST_MOON_FESTIVAL: - case mEv_EVENT_SONCHO_EXPLORERS_DAY: - case mEv_EVENT_SONCHO_HALLOWEEN: - case mEv_EVENT_SONCHO_MAYORS_DAY: - case mEv_EVENT_SONCHO_OFFICERS_DAY: - case mEv_EVENT_SONCHO_FISHING_TOURNEY_2: - case mEv_EVENT_SONCHO_HARVEST_FESTIVAL: - case mEv_EVENT_SONCHO_SALE_DAY: - case mEv_EVENT_SONCHO_SNOW_DAY: - case mEv_EVENT_SONCHO_TOY_DAY: - case mEv_EVENT_TALK_NEW_YEARS_COUNTDOWN: - { - if (Save_Get(event_save_common).weekly_event.flags == mEv_EVENT_SONCHO_BRIDGE_MAKE) { - Save_Get(event_save_common).weekly_event.flags = 0; - } + switch (sched->type) { + case mEv_EVENT_SONCHO_VACATION_JANUARY: + case mEv_EVENT_SONCHO_VACATION_FEBRUARY: + case mEv_EVENT_SONCHO_NEW_YEARS_DAY: + case mEv_EVENT_SONCHO_GROUNDHOG_DAY: + case mEv_EVENT_SONCHO_SPRING_SPORTS_FAIR: + case mEv_EVENT_SONCHO_APRILFOOLS_DAY: + case mEv_EVENT_SONCHO_CHERRY_BLOSSOM_FESTIVAL: + case mEv_EVENT_SONCHO_NATURE_DAY: + case mEv_EVENT_SONCHO_SPRING_CLEANING: + case mEv_EVENT_SONCHO_MOTHERS_DAY: + case mEv_EVENT_SONCHO_GRADUATION_DAY: + case mEv_EVENT_SONCHO_FATHERS_DAY: + case mEv_EVENT_SONCHO_FISHING_TOURNEY_1: + case mEv_EVENT_SONCHO_TOWN_DAY: + case mEv_EVENT_SONCHO_FIREWORKS_SHOW: + case mEv_EVENT_SONCHO_METEOR_SHOWER: + case mEv_EVENT_SONCHO_FOUNDERS_DAY: + case mEv_EVENT_SONCHO_LABOR_DAY: + case mEv_EVENT_SONCHO_FALL_SPORTS_FAIR: + case mEv_EVENT_SONCHO_HARVEST_MOON_FESTIVAL: + case mEv_EVENT_SONCHO_EXPLORERS_DAY: + case mEv_EVENT_SONCHO_HALLOWEEN: + case mEv_EVENT_SONCHO_MAYORS_DAY: + case mEv_EVENT_SONCHO_OFFICERS_DAY: + case mEv_EVENT_SONCHO_FISHING_TOURNEY_2: + case mEv_EVENT_SONCHO_HARVEST_FESTIVAL: + case mEv_EVENT_SONCHO_SALE_DAY: + case mEv_EVENT_SONCHO_SNOW_DAY: + case mEv_EVENT_SONCHO_TOY_DAY: + case mEv_EVENT_TALK_NEW_YEARS_COUNTDOWN: { + if (Save_Get(event_save_common).weekly_event.flags == mEv_EVENT_SONCHO_BRIDGE_MAKE) { + Save_Get(event_save_common).weekly_event.flags = 0; + } - break; + break; + } } - } - /* Update the event type to prefer these events over the fishing tourney event if they coincide */ - switch (sched->type) { - case mEv_EVENT_SONCHO_FATHERS_DAY: - case mEv_EVENT_SONCHO_OFFICERS_DAY: - Save_Get(event_save_common).soncho_event_type = sched->type; - break; - } + /* Update the event type to prefer these events over the fishing tourney event if they coincide */ + switch (sched->type) { + case mEv_EVENT_SONCHO_FATHERS_DAY: + case mEv_EVENT_SONCHO_OFFICERS_DAY: + Save_Get(event_save_common).soncho_event_type = sched->type; + break; + } } static void update_sports_fair(mEv_schedule_c* sched, lbRTC_day_t* equinox_day) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - switch (sched->type) { - case mEv_EVENT_SPRING_EQUINOX: - case mEv_EVENT_SONCHO_SPRING_SPORTS_FAIR: - { - if ( - rtc_time->month != lbRTC_MARCH || - rtc_time->day != lbRk_VernalEquinoxDay(rtc_time->year) - ) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - else { - sched->date[0].d.day = rtc_time->day; - sched->date[1].d.day = rtc_time->day; - *equinox_day = rtc_time->day; - } + switch (sched->type) { + case mEv_EVENT_SPRING_EQUINOX: + case mEv_EVENT_SONCHO_SPRING_SPORTS_FAIR: { + if (rtc_time->month != lbRTC_MARCH || rtc_time->day != lbRk_VernalEquinoxDay(rtc_time->year)) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } else { + sched->date[0].d.day = rtc_time->day; + sched->date[1].d.day = rtc_time->day; + *equinox_day = rtc_time->day; + } - break; + break; + } + + case mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR: { + int vernal_day = lbRk_VernalEquinoxDay(rtc_time->year); + + sched->date[0].d.day = vernal_day - 10; + sched->date[1].d.day = vernal_day - 1; + break; + } + + case mEv_EVENT_AUTUMN_EQUINOX: + case mEv_EVENT_SONCHO_FALL_SPORTS_FAIR: { + if (rtc_time->month != lbRTC_SEPTEMBER || rtc_time->day != lbRk_AutumnalEquinoxDay(rtc_time->year)) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } else { + sched->date[0].d.day = rtc_time->day; + sched->date[1].d.day = rtc_time->day; + *equinox_day = rtc_time->day; + } + + break; + } + + case mEv_EVENT_RUMOR_FALL_SPORTS_FAIR: { + int autumnal_day = lbRk_AutumnalEquinoxDay(rtc_time->year); + + sched->date[0].d.day = autumnal_day - 10; + sched->date[1].d.day = autumnal_day - 1; + break; + } + + case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: + case mEv_EVENT_SPORTS_FAIR_AEROBICS: + case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: + case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: + case mEv_EVENT_SPORTS_FAIR: + case mEv_EVENT_WEATHER_SPORTS_FAIR: { + if (*equinox_day == 0) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } else { + sched->date[0].d.day = *equinox_day; + sched->date[1].d.day = *equinox_day; + } + + break; + } } - - case mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR: - { - int vernal_day = lbRk_VernalEquinoxDay(rtc_time->year); - - sched->date[0].d.day = vernal_day - 10; - sched->date[1].d.day = vernal_day - 1; - break; - } - - case mEv_EVENT_AUTUMN_EQUINOX: - case mEv_EVENT_SONCHO_FALL_SPORTS_FAIR: - { - if ( - rtc_time->month != lbRTC_SEPTEMBER || - rtc_time->day != lbRk_AutumnalEquinoxDay(rtc_time->year) - ) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - else { - sched->date[0].d.day = rtc_time->day; - sched->date[1].d.day = rtc_time->day; - *equinox_day = rtc_time->day; - } - - break; - } - - case mEv_EVENT_RUMOR_FALL_SPORTS_FAIR: - { - int autumnal_day = lbRk_AutumnalEquinoxDay(rtc_time->year); - - sched->date[0].d.day = autumnal_day - 10; - sched->date[1].d.day = autumnal_day - 1; - break; - } - - case mEv_EVENT_SPORTS_FAIR_BALL_TOSS: - case mEv_EVENT_SPORTS_FAIR_AEROBICS: - case mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR: - case mEv_EVENT_SPORTS_FAIR_FOOT_RACE: - case mEv_EVENT_SPORTS_FAIR: - case mEv_EVENT_WEATHER_SPORTS_FAIR: - { - if (*equinox_day == 0) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - else { - sched->date[0].d.day = *equinox_day; - sched->date[1].d.day = *equinox_day; - } - - break; - } - } } static void update_event_rumor(mEv_schedule_c* sched) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - int equinox_day; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + int equinox_day; - switch (sched->type) { - case mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR: - { - equinox_day = lbRk_VernalEquinoxDay(rtc_time->year); - sched->date[0].d.day = equinox_day - 10; - sched->date[1].d.day = equinox_day - 1; - break; + switch (sched->type) { + case mEv_EVENT_RUMOR_SPRING_SPORTS_FAIR: { + equinox_day = lbRk_VernalEquinoxDay(rtc_time->year); + sched->date[0].d.day = equinox_day - 10; + sched->date[1].d.day = equinox_day - 1; + break; + } + + case mEv_EVENT_TALK_FISHING_TOURNEY_1: + sched->date[1].d.day = + lbRTC_Weekly_day(rtc_time->year, lbRTC_JUNE, mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH, lbRTC_SUNDAY); + break; + + case mEv_EVENT_RUMOR_HARVEST_MOON_DAY: { + lbRTC_ymd_c harvest_moon_ymd; + lbRTC_time_c harvest_moon_day; + lbRTC_day_t beg_day; + lbRTC_month_t beg_month; + lbRTC_day_t end_day; + lbRTC_month_t end_month; + + lbRk_HarvestMoonDay(&harvest_moon_ymd, rtc_time->year); + harvest_moon_day.year = harvest_moon_ymd.year; + harvest_moon_day.month = harvest_moon_ymd.month; + harvest_moon_day.day = harvest_moon_ymd.day; + + /* Calculate rumor end date */ + lbRTC_Sub_DD(&harvest_moon_day, 1); + end_month = harvest_moon_day.month; + end_day = harvest_moon_day.day; + + /* Calculate rumor start date */ + lbRTC_Sub_DD(&harvest_moon_day, lbRTC_WEEK - 1); + + beg_month = harvest_moon_day.month; + beg_day = harvest_moon_day.day; + sched->date[0].d.month = beg_month; + sched->date[0].d.day = beg_day; + sched->date[1].d.month = end_month; + sched->date[1].d.day = end_day; + break; + } + + case mEv_EVENT_RUMOR_FALL_SPORTS_FAIR: { + equinox_day = lbRk_AutumnalEquinoxDay(rtc_time->year); + sched->date[0].d.day = equinox_day - 10; + sched->date[1].d.day = equinox_day - 1; + break; + } + + case mEv_EVENT_TALK_FISHING_TOURNEY_2: + sched->date[1].d.day = + lbRTC_Weekly_day(rtc_time->year, lbRTC_NOVEMBER, mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH, lbRTC_SUNDAY); + break; + + case mEv_EVENT_RUMOR_HARVEST_FESTIVAL: + sched->date[1].d.day = + lbRTC_Weekly_day(rtc_time->year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) - 1; // 4th Thursday in November + break; } - - case mEv_EVENT_TALK_FISHING_TOURNEY_1: - sched->date[1].d.day = lbRTC_Weekly_day(rtc_time->year, lbRTC_JUNE, mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH, lbRTC_SUNDAY); - break; - - case mEv_EVENT_RUMOR_HARVEST_MOON_DAY: - { - lbRTC_ymd_c harvest_moon_ymd; - lbRTC_time_c harvest_moon_day; - lbRTC_day_t beg_day; - lbRTC_month_t beg_month; - lbRTC_day_t end_day; - lbRTC_month_t end_month; - - lbRk_HarvestMoonDay(&harvest_moon_ymd, rtc_time->year); - harvest_moon_day.year = harvest_moon_ymd.year; - harvest_moon_day.month = harvest_moon_ymd.month; - harvest_moon_day.day = harvest_moon_ymd.day; - - /* Calculate rumor end date */ - lbRTC_Sub_DD(&harvest_moon_day, 1); - end_month = harvest_moon_day.month; - end_day = harvest_moon_day.day; - - /* Calculate rumor start date */ - lbRTC_Sub_DD(&harvest_moon_day, lbRTC_WEEK - 1); - - beg_month = harvest_moon_day.month; - beg_day = harvest_moon_day.day; - sched->date[0].d.month = beg_month; - sched->date[0].d.day = beg_day; - sched->date[1].d.month = end_month; - sched->date[1].d.day = end_day; - break; - } - - case mEv_EVENT_RUMOR_FALL_SPORTS_FAIR: - { - equinox_day = lbRk_AutumnalEquinoxDay(rtc_time->year); - sched->date[0].d.day = equinox_day - 10; - sched->date[1].d.day = equinox_day - 1; - break; - } - - case mEv_EVENT_TALK_FISHING_TOURNEY_2: - sched->date[1].d.day = lbRTC_Weekly_day(rtc_time->year, lbRTC_NOVEMBER, mEv_SCHEDULE_LAST_WEEKDAY_OF_MONTH, lbRTC_SUNDAY); - break; - - case mEv_EVENT_RUMOR_HARVEST_FESTIVAL: - sched->date[1].d.day = lbRTC_Weekly_day(rtc_time->year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) - 1; // 4th Thursday in November - break; - } } static void update_weekly_event(mEv_schedule_c* sched) { - s16 type = Save_Get(event_save_common).weekly_event.type; + s16 type = Save_Get(event_save_common).weekly_event.type; - switch (sched->type) { - case mEv_EVENT_KK_SLIDER: - case mEv_EVENT_KABU_PEDDLER: - { - if (type != sched->type) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } + switch (sched->type) { + case mEv_EVENT_KK_SLIDER: + case mEv_EVENT_KABU_PEDDLER: { + if (type != sched->type) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } - break; + break; + } + + case mEv_EVENT_DOZAEMON: { + if (Save_Get(event_save_common).weekly_event.flags == mEv_EVENT_SONCHO_BRIDGE_MAKE || type != sched->type) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } + + case mEv_EVENT_SONCHO_BRIDGE_MAKE: + case mEv_EVENT_MASK_NPC: { + if (Save_Get(event_save_common).weekly_event.flags != sched->type) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } + + case mEv_EVENT_BRIDGE_MAKE: { + if (Save_Get(bridge).pending != TRUE || Save_Get(bridge).exists || mEv_bridge_time_check() == lbRTC_OVER) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } + + case mEv_EVENT_GHOST: { + if (Save_Get(event_save_common).ghost_event_type != mEv_EVENT_GHOST) { + sched->date[1].raw = 0; + sched->date[0].raw = 0; + } + + break; + } } - - case mEv_EVENT_DOZAEMON: - { - if (Save_Get(event_save_common).weekly_event.flags == mEv_EVENT_SONCHO_BRIDGE_MAKE || type != sched->type) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - - case mEv_EVENT_SONCHO_BRIDGE_MAKE: - case mEv_EVENT_MASK_NPC: - { - if (Save_Get(event_save_common).weekly_event.flags != sched->type) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - - case mEv_EVENT_BRIDGE_MAKE: - { - if (Save_Get(bridge).pending != TRUE || Save_Get(bridge).exists || mEv_bridge_time_check() == lbRTC_OVER) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - - case mEv_EVENT_GHOST: - { - if (Save_Get(event_save_common).ghost_event_type != mEv_EVENT_GHOST) { - sched->date[1].raw = 0; - sched->date[0].raw = 0; - } - - break; - } - } } // forward declarations @@ -1573,20 +1489,20 @@ static int clear_active(int type); static int set_active(int type); static void update_active(Event_c* event) { - mEv_place_data_c* place_data; + mEv_place_data_c* place_data; mEv_event_today_c* today_event; int hour = Common_Get(time.rtc_time.hour); int i; /* Update active events */ for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - today_event = &event_today[i]; + today_event = &event_today[i]; if (today_event->type != -1 && index_today[today_event->type] != 0xFF) { if (mEv_check_status(today_event->type, mEv_STATUS_ERROR) != FALSE) { continue; } - + if (today_event->type == mEv_EVENT_SPORTS_FAIR && Common_Get(event_common).fieldday_event_over_status != today_event->type) { if (clear_active(today_event->type)) { @@ -1602,19 +1518,15 @@ static void update_active(Event_c* event) { } today_event->active_hours &= ~mEv_EVENT_HOUR_START_EVENT; - } - else if ( - today_event->type >= mEv_EVENT_ARTIST && today_event->type <= mEv_EVENT_CARPET_PEDDLER && - today_event->type == Save_Get(event_save_common).delete_event_id - ) { + } else if (today_event->type >= mEv_EVENT_ARTIST && today_event->type <= mEv_EVENT_CARPET_PEDDLER && + today_event->type == Save_Get(event_save_common).delete_event_id) { if (clear_active(today_event->type)) { event->changed_num++; } Save_Get(event_save_common).delete_event_id = 0; today_event->active_hours = mEv_EVENT_HOUR_CLEAR_EVENT; - } - else if ((today_event->active_hours & (1 << hour))) { + } else if ((today_event->active_hours & (1 << hour))) { if (Common_Get(event_common).fieldday_event_over_status != -1 && (today_event->type == mEv_EVENT_SPORTS_FAIR_BALL_TOSS || today_event->type == mEv_EVENT_SPORTS_FAIR_TUG_OF_WAR || @@ -1627,18 +1539,15 @@ static void update_active(Event_c* event) { } if (today_event->type != 0 && today_event->type == Common_Get(event_common).too_short) { today_event->active_hours |= mEv_EVENT_HOUR_TOO_SHORT_EVENT; - } - else if (set_active(today_event->type)) { + } else if (set_active(today_event->type)) { event->changed_num++; } - } - else { + } else { place_data = mEv_get_common_place(today_event->type, 81); if (today_event->type != 0 && today_event->type == Common_Get(event_common).too_short) { Common_Get(event_common).too_short = 0; - } - else if (place_data != NULL) { + } else if (place_data != NULL) { if (place_data->block.x != event->block_x || place_data->block.z != event->block_z) { if (clear_active(today_event->type)) { event->changed_num++; @@ -1649,7 +1558,7 @@ static void update_active(Event_c* event) { event->changed_num++; } } - } + } } if ((today_event->active_hours & mEv_EVENT_HOUR_CLEAR_EVENT) && @@ -1668,370 +1577,364 @@ static void update_active(Event_c* event) { } static u32 decode_date(u32 d) { - mEv_schedule_date_u date; - mEv_save_common_data_c* ev_common = Save_GetPointer(event_save_common); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - int month; - int day; - int hour; + mEv_schedule_date_u date; + mEv_save_common_data_c* ev_common = Save_GetPointer(event_save_common); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + int month; + int day; + int hour; - date.raw = d; + date.raw = d; - /* Process month */ - month = date.d.month; - if ((month & mEv_SCHEDULE_USE_SAVE_MONTH)) { - date.md = Save_Get(event_save_common).dates[month & 0xF]; - } - else if ((month & mEv_SCHEDULE_NOW_MONTH)) { - date.d.month = rtc_time->month; - } - else if ((month & mEv_SCHEDULE_HARVEST_MOON_DATE)) { - lbRTC_ymd_c harvest_moon_ymd; + /* Process month */ + month = date.d.month; + if ((month & mEv_SCHEDULE_USE_SAVE_MONTH)) { + date.md = Save_Get(event_save_common).dates[month & 0xF]; + } else if ((month & mEv_SCHEDULE_NOW_MONTH)) { + date.d.month = rtc_time->month; + } else if ((month & mEv_SCHEDULE_HARVEST_MOON_DATE)) { + lbRTC_ymd_c harvest_moon_ymd; - lbRk_HarvestMoonDay(&harvest_moon_ymd, rtc_time->year); - date.d.month = harvest_moon_ymd.month; - date.d.day = harvest_moon_ymd.day; - } - - /* Process day */ - day = date.d.day; - if ((day & mEv_SCHEDULE_WEEKLY)) { - date.d.day = m_weekday2day(date.d.month, day & ~mEv_SCHEDULE_DAY_AFTER); - - if ((day & mEv_SCHEDULE_DAY_AFTER)) { - date.md = after_n_day(date.md, 1); + lbRk_HarvestMoonDay(&harvest_moon_ymd, rtc_time->year); + date.d.month = harvest_moon_ymd.month; + date.d.day = harvest_moon_ymd.day; } - } - else if ((day & mEv_SCHEDULE_LAST_DAY_OF_MONTH)) { - date.d.day = last_day_of_month(date.d.month); - } - else if ((day & mEv_SCHEDULE_TOWN_DAY)) { - date.d.day = (date.d.day & ~mEv_SCHEDULE_TOWN_DAY) | Save_Get(town_day); - } - /* Process hour */ - hour = date.d.hour; - if ((hour & mEv_SCHEDULE_USE_SAVE_SLOT_VALUE)) { - date.d.hour = Save_Get(event_save_common).dates[(hour & 0x1F) % 8] | (hour & 0xC0); - } + /* Process day */ + day = date.d.day; + if ((day & mEv_SCHEDULE_WEEKLY)) { + date.d.day = m_weekday2day(date.d.month, day & ~mEv_SCHEDULE_DAY_AFTER); - return date.raw; + if ((day & mEv_SCHEDULE_DAY_AFTER)) { + date.md = after_n_day(date.md, 1); + } + } else if ((day & mEv_SCHEDULE_LAST_DAY_OF_MONTH)) { + date.d.day = last_day_of_month(date.d.month); + } else if ((day & mEv_SCHEDULE_TOWN_DAY)) { + date.d.day = (date.d.day & ~mEv_SCHEDULE_TOWN_DAY) | Save_Get(town_day); + } + + /* Process hour */ + hour = date.d.hour; + if ((hour & mEv_SCHEDULE_USE_SAVE_SLOT_VALUE)) { + date.d.hour = Save_Get(event_save_common).dates[(hour & 0x1F) % 8] | (hour & 0xC0); + } + + return date.raw; } static int set_one_time_active(int event) { - u8 idx = index_today[event]; + u8 idx = index_today[event]; - if (idx != 0xFF) { - mEv_event_today_c* ev_today = &event_today[idx]; - ev_today->active_hours |= mEv_EVENT_HOUR_START_EVENT; - return TRUE; - } + if (idx != 0xFF) { + mEv_event_today_c* ev_today = &event_today[idx]; + ev_today->active_hours |= mEv_EVENT_HOUR_START_EVENT; + return TRUE; + } - return FALSE; + return FALSE; } static int first_enter_check() { - switch (Common_Get(last_scene_no)) { - case SCENE_START_DEMO: - case SCENE_START_DEMO2: - case SCENE_PLAYERSELECT: - case SCENE_PLAYERSELECT_2: - case SCENE_PLAYERSELECT_3: - case SCENE_PLAYERSELECT_SAVE: - case SCENE_START_DEMO3: - return TRUE; + switch (Common_Get(last_scene_no)) { + case SCENE_START_DEMO: + case SCENE_START_DEMO2: + case SCENE_PLAYERSELECT: + case SCENE_PLAYERSELECT_2: + case SCENE_PLAYERSELECT_3: + case SCENE_PLAYERSELECT_SAVE: + case SCENE_START_DEMO3: + return TRUE; - default: - return FALSE; - } + default: + return FALSE; + } } static int effective_scene() { - switch (Save_Get(scene_no)) { - case SCENE_START_DEMO: - case SCENE_START_DEMO2: - case SCENE_PLAYERSELECT: - case SCENE_PLAYERSELECT_2: - case SCENE_PLAYERSELECT_3: - case SCENE_PLAYERSELECT_SAVE: - case SCENE_START_DEMO3: - return FALSE; + switch (Save_Get(scene_no)) { + case SCENE_START_DEMO: + case SCENE_START_DEMO2: + case SCENE_PLAYERSELECT: + case SCENE_PLAYERSELECT_2: + case SCENE_PLAYERSELECT_3: + case SCENE_PLAYERSELECT_SAVE: + case SCENE_START_DEMO3: + return FALSE; - default: - return TRUE; - } + default: + return TRUE; + } } static void update_schedule_today(Event_c* event) { - int month; - u8 equinox_day = 0; - mEv_schedule_date_u today_date; - mEv_MonthDay_u birthday_date; - mEv_schedule_c sched; - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - mEv_schedule_c* sched_p = &sched; - Private_c* priv = &Save_Get(private[Common_Get(player_no)]); - int i; - int type; + int month; + u8 equinox_day = 0; + mEv_schedule_date_u today_date; + mEv_MonthDay_u birthday_date; + mEv_schedule_c sched; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + mEv_schedule_c* sched_p = &sched; + Private_c* priv = &Save_Get(private_data[Common_Get(player_no)]); + int i; + int type; - if (mEv_ArbeitPlayer_kari(Common_Get(player_no)) == FALSE) { - month = rtc_time->month; + if (mEv_ArbeitPlayer_kari(Common_Get(player_no)) == FALSE) { + month = rtc_time->month; - today_date.d.month = month; - today_date.d.day = rtc_time->day; - today_date.d.hour = rtc_time->hour; - today_date.d._2 = 0; - Save_Get(event_save_common).dates[mEv_SAVE_DATE_TODAY] = today_date.md; + today_date.d.month = month; + today_date.d.day = rtc_time->day; + today_date.d.hour = rtc_time->hour; + today_date.d._2 = 0; + Save_Get(event_save_common).dates[mEv_SAVE_DATE_TODAY] = today_date.md; - birthday_date.month = priv->birthday.month; - birthday_date.day = priv->birthday.day; - Save_Get(event_save_common).dates[mEv_SAVE_DATE_BIRTHDAY] = birthday_date.raw; + birthday_date.month = priv->birthday.month; + birthday_date.day = priv->birthday.day; + Save_Get(event_save_common).dates[mEv_SAVE_DATE_BIRTHDAY] = birthday_date.raw; - Save_Get(event_save_common).soncho_event_type = 0xFF; + Save_Get(event_save_common).soncho_event_type = 0xFF; - /* Process every event */ - for (i = 0; i < ARRAY_COUNT(event_schedule_data); i++) { - memcpy(sched_p, &event_schedule_data[i], sizeof(mEv_schedule_c)); - - /* Perform necessary adjustments */ - update_soncho_event(sched_p); - update_sports_fair(sched_p, &equinox_day); - update_event_rumor(sched_p); - update_special_event(sched_p); - update_weekly_event(sched_p); + /* Process every event */ + for (i = 0; i < ARRAY_COUNT(event_schedule_data); i++) { + memcpy(sched_p, &event_schedule_data[i], sizeof(mEv_schedule_c)); - if (sched.type == mEv_EVENT_SUMMER_CAMPER) { - mEv_MonthDay_u camper_date; + /* Perform necessary adjustments */ + update_soncho_event(sched_p); + update_sports_fair(sched_p, &equinox_day); + update_event_rumor(sched_p); + update_special_event(sched_p); + update_weekly_event(sched_p); - switch (month) { - case lbRTC_JUNE: - case lbRTC_JULY: - case lbRTC_AUGUST: - sched.date[0].d.month = today_date.d.month; - break; + if (sched.type == mEv_EVENT_SUMMER_CAMPER) { + mEv_MonthDay_u camper_date; + + switch (month) { + case lbRTC_JUNE: + case lbRTC_JULY: + case lbRTC_AUGUST: + sched.date[0].d.month = today_date.d.month; + break; + } + + sched.date[0].raw = decode_date(sched.date[0].raw); + camper_date.month = sched.date[0].d.month; + camper_date.day = sched.date[0].d.day; + + /* Move back to the previous week if processing on Sunday */ + if (rtc_time->weekday == lbRTC_SUNDAY) { + camper_date.raw = after_n_day(camper_date.raw, -lbRTC_WEEK); + sched.date[0].d.month = camper_date.month; + sched.date[0].d.day = camper_date.day; + } + + /* Summer campers only stick around for one day */ + camper_date.raw = after_n_day(camper_date.raw, 1); + sched.date[1].d.month = camper_date.month; + sched.date[1].d.day = camper_date.day; + } else { + sched.date[0].raw = decode_date(sched.date[0].raw); + sched.date[1].raw = decode_date(sched.date[1].raw); + } + + /* Check & add event if it is currently active */ + if (check_date_range(today_date.md, sched.date[0].md, sched.date[1].md)) { + update_soncho_event2(sched_p); + add_event_today(today_date.md, sched_p); + } } - sched.date[0].raw = decode_date(sched.date[0].raw); - camper_date.month = sched.date[0].d.month; - camper_date.day = sched.date[0].d.day; - - /* Move back to the previous week if processing on Sunday */ - if (rtc_time->weekday == lbRTC_SUNDAY) { - camper_date.raw = after_n_day(camper_date.raw, -lbRTC_WEEK); - sched.date[0].d.month = camper_date.month; - sched.date[0].d.day = camper_date.day; + type = 0; + switch (Common_Get(last_scene_no)) { + case SCENE_KAMAKURA: + type = mEv_EVENT_KAMAKURA; + break; + case SCENE_BROKER_SHOP: + type = mEv_EVENT_BROKER_SALE; + break; + case SCENE_BUGGY: + type = mEv_EVENT_GYPSY; + break; + case SCENE_SHOP0: + case SCENE_CONVENI: + case SCENE_SUPER: + case SCENE_DEPART: + case SCENE_DEPART_2: + if (mEv_CheckEvent(mEv_SPNPC_EVENT)) { + type = mEv_EVENT_SHOP_SALE; + } + break; + case SCENE_TENT: + type = mEv_EVENT_SUMMER_CAMPER; + break; } - /* Summer campers only stick around for one day */ - camper_date.raw = after_n_day(camper_date.raw, 1); - sched.date[1].d.month = camper_date.month; - sched.date[1].d.day = camper_date.day; - } - else { - sched.date[0].raw = decode_date(sched.date[0].raw); - sched.date[1].raw = decode_date(sched.date[1].raw); - } + if (type != 0 && gamePT->frame_counter == 0) { + mEv_schedule_c new_ev_sched = { + { + { 100, 0, 0, 23 }, + { 100, 0, 0, 0 }, + }, + 0, + 0, + }; - /* Check & add event if it is currently active */ - if (check_date_range(today_date.md, sched.date[0].md, sched.date[1].md)) { - update_soncho_event2(sched_p); - add_event_today(today_date.md, sched_p); - } - } - - type = 0; - switch (Common_Get(last_scene_no)) { - case SCENE_KAMAKURA: - type = mEv_EVENT_KAMAKURA; - break; - case SCENE_BROKER_SHOP: - type = mEv_EVENT_BROKER_SALE; - break; - case SCENE_BUGGY: - type = mEv_EVENT_GYPSY; - break; - case SCENE_SHOP0: - case SCENE_CONVENI: - case SCENE_SUPER: - case SCENE_DEPART: - case SCENE_DEPART_2: - if (mEv_CheckEvent(mEv_SPNPC_EVENT)) { - type = mEv_EVENT_SHOP_SALE; + new_ev_sched.type = type; + new_ev_sched.date[1].d.month = rtc_time->month; + new_ev_sched.date[0].d.month = rtc_time->month; + new_ev_sched.date[1].d.day = rtc_time->day; + new_ev_sched.date[0].d.day = rtc_time->day; + add_event_today(today_date.md, &new_ev_sched); + set_one_time_active(type); } - break; - case SCENE_TENT: - type = mEv_EVENT_SUMMER_CAMPER; - break; - } - if (type != 0 && gamePT->frame_counter == 0) { - mEv_schedule_c new_ev_sched = { - { - { 100, 0, 0, 23 }, - { 100, 0, 0, 0 }, - }, - 0, - 0 - }; - - new_ev_sched.type = type; - new_ev_sched.date[1].d.month = rtc_time->month; - new_ev_sched.date[0].d.month = rtc_time->month; - new_ev_sched.date[1].d.day = rtc_time->day; - new_ev_sched.date[0].d.day = rtc_time->day; - add_event_today(today_date.md, &new_ev_sched); - set_one_time_active(type); - } - - type = 0; - switch (Save_Get(scene_no)) { - case SCENE_KAMAKURA: - type = mEv_EVENT_KAMAKURA; - break; - case SCENE_BROKER_SHOP: - type = mEv_EVENT_BROKER_SALE; - break; - case SCENE_BUGGY: - type = mEv_EVENT_GYPSY; - break; - case SCENE_SHOP0: - case SCENE_CONVENI: - case SCENE_SUPER: - case SCENE_DEPART: - case SCENE_DEPART_2: - if (mEv_CheckEvent(mEv_SPNPC_EVENT)) { - type = mEv_EVENT_SHOP_SALE; + type = 0; + switch (Save_Get(scene_no)) { + case SCENE_KAMAKURA: + type = mEv_EVENT_KAMAKURA; + break; + case SCENE_BROKER_SHOP: + type = mEv_EVENT_BROKER_SALE; + break; + case SCENE_BUGGY: + type = mEv_EVENT_GYPSY; + break; + case SCENE_SHOP0: + case SCENE_CONVENI: + case SCENE_SUPER: + case SCENE_DEPART: + case SCENE_DEPART_2: + if (mEv_CheckEvent(mEv_SPNPC_EVENT)) { + type = mEv_EVENT_SHOP_SALE; + } + break; + case SCENE_TENT: + type = mEv_EVENT_SUMMER_CAMPER; + break; } - break; - case SCENE_TENT: - type = mEv_EVENT_SUMMER_CAMPER; - break; - } - if (type != 0) { - mEv_schedule_c new_ev_sched = { - { - { 100, 0, 0, 23 }, - { 100, 0, 0, 0 }, - }, - 0, - 0 - }; + if (type != 0) { + mEv_schedule_c new_ev_sched = { + { + { 100, 0, 0, 0 }, + { 100, 0, 0, 23 }, + }, + 0, + 0, + }; - new_ev_sched.type = type; - new_ev_sched.date[1].d.month = rtc_time->month; - new_ev_sched.date[0].d.month = rtc_time->month; - new_ev_sched.date[1].d.day = rtc_time->day; - new_ev_sched.date[0].d.day = rtc_time->day; - add_event_today(today_date.md, &new_ev_sched); - } + new_ev_sched.type = type; + new_ev_sched.date[1].d.month = rtc_time->month; + new_ev_sched.date[0].d.month = rtc_time->month; + new_ev_sched.date[1].d.day = rtc_time->day; + new_ev_sched.date[0].d.day = rtc_time->day; + add_event_today(today_date.md, &new_ev_sched); + } - if (first_enter_check()) { - for (i = 0; i < mEv_EVENT_NUM; i++) { - delete_too_short_event(event, i, today_date.raw); - } - } + if (first_enter_check()) { + for (i = 0; i < mEv_EVENT_NUM; i++) { + delete_too_short_event(event, i, today_date.raw); + } + } - for (i = 0; i < mEv_EVENT_NUM; i++) { - check_and_clear_event_today(event, i); + for (i = 0; i < mEv_EVENT_NUM; i++) { + check_and_clear_event_today(event, i); + } } - } } static void calc_start_block(int* bx, int* bz) { - if (Common_Get(door_data).next_scene_id == 0) { - *bx = 3; - *bz = 2; + if (Common_Get(door_data).next_scene_id == 0) { + *bx = 3; + *bz = 2; - if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_RIDE_OFF_DEMO) { - *bz = 1; + if (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_RIDE_OFF_DEMO) { + *bz = 1; + } + } else if (Common_Get(door_data).next_scene_id == SCENE_RANDOM_NPC_TEST) { + *bx = Common_Get(door_data).exit_position.x / mFI_BK_WORLDSIZE_X; + *bz = Common_Get(door_data).exit_position.z / mFI_BK_WORLDSIZE_Z; } - } - else if (Common_Get(door_data).next_scene_id == SCENE_RANDOM_NPC_TEST) { - *bx = Common_Get(door_data).exit_position.x / mFI_BK_WORLDSIZE_X; - *bz = Common_Get(door_data).exit_position.z / mFI_BK_WORLDSIZE_Z; - } } static void init_event(Event_c* event, int renewal_flag) { - event->month = 99; - event->day = 99; - event->hour = 99; - event->state = 0; - event->_02 = 0; - event->changed_num = 0; - event->block_z = 0; - event->block_x = 0; + event->month = 99; + event->day = 99; + event->hour = 99; + event->state = 0; + event->_02 = 0; + event->changed_num = 0; + event->block_z = 0; + event->block_x = 0; - calc_start_block(&event->block_x, &event->block_z); - funeral = FALSE; - dead = FALSE; - init_today_event(); + calc_start_block(&event->block_x, &event->block_z); + funeral = FALSE; + dead = FALSE; + init_today_event(); - if (renewal_flag != mEv_INIT_NO_RENEWAL) { - mEv_RenewalDataEveryDay(); - init_weekday1st(); - - if (init_special_event(FALSE)) { - Save_Get(event_save_common).special_event.flags = 1; + if (renewal_flag != mEv_INIT_NO_RENEWAL) { + mEv_RenewalDataEveryDay(); + init_weekday1st(); + + if (init_special_event(FALSE)) { + Save_Get(event_save_common).special_event.flags = 1; + } + + init_weekly_event(); + + if (mEv_LivePlayer(Common_Get(player_no)) && mEv_LiveSonchoPresent() == FALSE) { + update_schedule_today(event); + event->month = Common_Get(time.rtc_time.month); + event->day = Common_Get(time.rtc_time.day); + event->hour = Common_Get(time.rtc_time.hour); + update_active(event); + update_save_area(); + } } - - init_weekly_event(); - - if (mEv_LivePlayer(Common_Get(player_no)) && mEv_LiveSonchoPresent() == FALSE) { - update_schedule_today(event); - event->month = Common_Get(time.rtc_time.month); - event->day = Common_Get(time.rtc_time.day); - event->hour = Common_Get(time.rtc_time.hour); - update_active(event); - update_save_area(); - } - } } extern void mEv_init(Event_c* event) { - int renewal_flag = mEv_INIT_NO_RENEWAL; + int renewal_flag = mEv_INIT_NO_RENEWAL; - if (mEv_CheckTitleDemo() == 0 && effective_scene()) { - renewal_flag = mEv_INIT_RENEWAL; - } + if (mEv_CheckTitleDemo() == 0 && effective_scene()) { + renewal_flag = mEv_INIT_RENEWAL; + } - init_event(event, renewal_flag); + init_event(event, renewal_flag); } extern void mEv_init_force(Event_c* event) { - int renewal_flag = mEv_INIT_NO_RENEWAL; + int renewal_flag = mEv_INIT_NO_RENEWAL; - if (mEv_CheckTitleDemo() == 0) { - renewal_flag = mEv_INIT_FORCE_RENEWAL; - } + if (mEv_CheckTitleDemo() == 0) { + renewal_flag = mEv_INIT_FORCE_RENEWAL; + } - init_event(event, renewal_flag); + init_event(event, renewal_flag); } extern void mEv_2nd_init(Event_c* event) { - /* Disable morning aerobics if it is scheduled and the weather is rain */ - if (Common_Get(weather) == mEnv_WEATHER_RAIN) { - u8 index = index_today[mEv_EVENT_MORNING_AEROBICS]; + /* Disable morning aerobics if it is scheduled and the weather is rain */ + if (Common_Get(weather) == mEnv_WEATHER_RAIN) { + u8 index = index_today[mEv_EVENT_MORNING_AEROBICS]; - if (index != 0xFF) { - mEv_event_today_c* ev_today = &event_today[index]; - - mEv_clear_status(mEv_EVENT_MORNING_AEROBICS, mEv_STATUS_ACTIVE); - ev_today->type = -1; - index_today[mEv_EVENT_MORNING_AEROBICS] = 0xFF; + if (index != 0xFF) { + mEv_event_today_c* ev_today = &event_today[index]; + + mEv_clear_status(mEv_EVENT_MORNING_AEROBICS, mEv_STATUS_ACTIVE); + ev_today->type = -1; + index_today[mEv_EVENT_MORNING_AEROBICS] = 0xFF; + } } - } } extern int mEv_PlayerOK() { - int res = FALSE; + int res = FALSE; - if (mPlib_able_player_warp_forEvent() && mPlib_Get_unable_wade() == FALSE) { - res = TRUE; - } + if (mPlib_able_player_warp_forEvent() && mPlib_Get_unable_wade() == FALSE) { + res = TRUE; + } - return res; + return res; } extern void mEv_run(Event_c* event) { @@ -2091,301 +1994,297 @@ extern void mEv_run(Event_c* event) { } } -static mActor_name_t l_ev_structure_table[] = { - BROKER_TENT, - FORTUNE_TENT, - DESIGNER_CAR, - KAMAKURA, - SAKURA_TABLE0, - AEROBICS_RADIO, - FIREWORKS_STALL0, - FIREWORKS_STALL1, - NEWYEAR_SHRINE0, - NEWYEAR_SHRINE1, - NEWYEAR_TABLE, - NEWYEAR_COUNTDOWN0, - NEWYEAR_COUNTDOWN1, - SPORTSFAIR_BALLS_RED, - SPORTSFAIR_BALLS_WHITE, - SPORTSFAIR_BASKET_RED, - SPORTSFAIR_BASKET_WHITE, - FISHCHECK_STAND0, - FISHCHECK_STAND1, - GHOG, - TENT, - SAKURA_TABLE1 -}; +static mActor_name_t l_ev_structure_table[] = { BROKER_TENT, + FORTUNE_TENT, + DESIGNER_CAR, + KAMAKURA, + SAKURA_TABLE0, + AEROBICS_RADIO, + FIREWORKS_STALL0, + FIREWORKS_STALL1, + NEWYEAR_SHRINE0, + NEWYEAR_SHRINE1, + NEWYEAR_TABLE, + NEWYEAR_COUNTDOWN0, + NEWYEAR_COUNTDOWN1, + SPORTSFAIR_BALLS_RED, + SPORTSFAIR_BALLS_WHITE, + SPORTSFAIR_BASKET_RED, + SPORTSFAIR_BASKET_WHITE, + FISHCHECK_STAND0, + FISHCHECK_STAND1, + GHOG, + TENT, + SAKURA_TABLE1 }; static int num_of_l_ev_structure = ARRAY_COUNT(l_ev_structure_table); extern void mEv_finish(Event_c* event) { - int ut_x; - int ut_z; - int bx; - int bz; - int i; - int bx_max = mFI_GetBlockXMax() - 1; - int bz_max = mFI_GetBlockZMax() - 1; + int ut_x; + int ut_z; + int bx; + int bz; + int i; + int bx_max = mFI_GetBlockXMax() - 1; + int bz_max = mFI_GetBlockZMax() - 1; - if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { - for (i = 0; i < num_of_l_ev_structure; i++) { - for (bx = 1; bx < bx_max; bx++) { - for (bz = 1; bz < bz_max; bz++) { - int ut; - mActor_name_t structure = l_ev_structure_table[i]; - - for (ut = 0; mFI_SearchFGInBlock(&ut_x, &ut_z, structure, bx, bz); ut) { - mFI_SetFGStructure_common(structure, bx, bz, ut_x, ut_z, mFI_SET_STRUCTURE_REMOVE); - ut++; - if (ut > UT_TOTAL_NUM) { - break; + for (i = 0; i < num_of_l_ev_structure; i++) { + for (bx = 1; bx < bx_max; bx++) { + for (bz = 1; bz < bz_max; bz++) { + int ut; + mActor_name_t structure = l_ev_structure_table[i]; + + for (ut = 0; mFI_SearchFGInBlock(&ut_x, &ut_z, structure, bx, bz); ut) { + mFI_SetFGStructure_common(structure, bx, bz, ut_x, ut_z, mFI_SET_STRUCTURE_REMOVE); + ut++; + if (ut > UT_TOTAL_NUM) { + break; + } + } + } } - } } - } } - } } extern int mEv_check_schedule(int event) { - int hour = Common_Get(time.rtc_time.hour); - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; + int hour = Common_Get(time.rtc_time.hour); + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; + + if (index == 0xFF) { + return FALSE; + } + + if ((ev_today->status & mEv_STATUS_STOP)) { + return FALSE; + } + + if ((ev_today->active_hours & mEv_EVENT_HOUR_TOO_SHORT_EVENT)) { + return FALSE; + } + + if ((ev_today->active_hours & (1 << hour)) != 0) { + return TRUE; + } - if (index == 0xFF) { return FALSE; - } - - if ((ev_today->status & mEv_STATUS_STOP)) { - return FALSE; - } - - if ((ev_today->active_hours & mEv_EVENT_HOUR_TOO_SHORT_EVENT)) { - return FALSE; - } - - if ((ev_today->active_hours & (1 << hour)) != 0) { - return TRUE; - } - - return FALSE; } extern int mEv_check_run_today(int event) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; + + if (index == 0xFF) { + return FALSE; + } + + if ((ev_today->status & mEv_STATUS_STOP)) { + return FALSE; + } + + if (ev_today->active_hours != 0) { + return TRUE; + } - if (index == 0xFF) { return FALSE; - } - - if ((ev_today->status & mEv_STATUS_STOP)) { - return FALSE; - } - - if (ev_today->active_hours != 0) { - return TRUE; - } - - return FALSE; } extern void mEv_set_status(int event, s16 status) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; - if (index != 0xFF) { - if (status == mEv_STATUS_ERROR) { - ev_today->status = 0; + if (index != 0xFF) { + if (status == mEv_STATUS_ERROR) { + ev_today->status = 0; + } + + status_edge |= status; + ev_today->status |= status; } - - status_edge |= status; - ev_today->status |= status; - } } static int set_active(int event) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; - int res = FALSE; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; + int res = FALSE; - if (index != 0xFF) { - if ((ev_today->status & mEv_STATUS_ACTIVE) == 0) { - res = TRUE; // status updated + if (index != 0xFF) { + if ((ev_today->status & mEv_STATUS_ACTIVE) == 0) { + res = TRUE; // status updated + } + + status_edge |= mEv_STATUS_ACTIVE; + ev_today->status |= mEv_STATUS_ACTIVE; } - status_edge |= mEv_STATUS_ACTIVE; - ev_today->status |= mEv_STATUS_ACTIVE; - } - - return res; + return res; } extern void mEv_clear_status(int event, s16 status) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; - if (index != 0xFF) { - ev_today->status &= ~status; - } + if (index != 0xFF) { + ev_today->status &= ~status; + } } static int clear_active(int event) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; - int res = FALSE; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; + int res = FALSE; - if (index != 0xFF) { - if ((ev_today->status & mEv_STATUS_ACTIVE) != 0) { - res = TRUE; // status updated + if (index != 0xFF) { + if ((ev_today->status & mEv_STATUS_ACTIVE) != 0) { + res = TRUE; // status updated + } + + ev_today->status &= ~mEv_STATUS_ACTIVE; } - ev_today->status &= ~mEv_STATUS_ACTIVE; - } - - return res; + return res; } extern int mEv_check_status(int event, s16 status) { - u8 index = index_today[event]; - mEv_event_today_c* ev_today = &event_today[index]; + u8 index = index_today[event]; + mEv_event_today_c* ev_today = &event_today[index]; - if (index == 0xFF) { - return FALSE; - } + if (index == 0xFF) { + return FALSE; + } - /* Default to 'false' if the event is in an error state */ - if (status != mEv_STATUS_ERROR && (ev_today->status & mEv_STATUS_ERROR)) { - return FALSE; - } + /* Default to 'false' if the event is in an error state */ + if (status != mEv_STATUS_ERROR && (ev_today->status & mEv_STATUS_ERROR)) { + return FALSE; + } - return (ev_today->status & status) != 0; + return (ev_today->status & status) != 0; } extern int mEv_check_status_edge(s16 status) { - /* @BUG - developers almost certainly meant to use & here instead of | */ - #ifndef BUGFIXES - if ((status_edge | status) != 0) { - #else - if ((status_edge & status) != 0) { - #endif - return TRUE; - } +/* @BUG - developers almost certainly meant to use & here instead of | */ +#ifndef BUGFIXES + if ((status_edge | status) != 0) { +#else + if ((status_edge & status) != 0) { +#endif + return TRUE; + } - return FALSE; + return FALSE; } extern void mEv_set_keep(int event) { - int flags = Common_Get(event_keep_flags[event >> 5]); - flags |= (1 << (event & 0x1F)); - Common_Set(event_keep_flags[event >> 5], flags); + int flags = Common_Get(event_keep_flags[event >> 5]); + flags |= (1 << (event & 0x1F)); + Common_Set(event_keep_flags[event >> 5], flags); } extern void mEv_clear_keep(int event) { - int flags = Common_Get(event_keep_flags[event >> 5]); - flags &= ~(1 << (event & 0x1F)); - Common_Set(event_keep_flags[event >> 5], flags); + int flags = Common_Get(event_keep_flags[event >> 5]); + flags &= ~(1 << (event & 0x1F)); + Common_Set(event_keep_flags[event >> 5], flags); } extern int mEv_check_keep(int event) { - if ((Common_Get(event_keep_flags[event >> 5]) & (1 << (event & 0x1F)))) { - return TRUE; - } + if ((Common_Get(event_keep_flags[event >> 5]) & (1 << (event & 0x1F)))) { + return TRUE; + } - return FALSE; + return FALSE; } extern u8* mEv_reserve_save_area(int type, u8 id) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - int index = index_today[type]; - mEv_event_today_c* ev_today = &event_today[index]; - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - int i; - int free_slot_idx = -1; - u8* data; - u8* ret; - int exist_slot = -1; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + int index = index_today[type]; + mEv_event_today_c* ev_today = &event_today[index]; + mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); + int i; + int free_slot_idx = -1; + u8* data; + u8* ret; + int exist_slot = -1; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_save_common->area_use_bitfield) == 0) { - free_slot_idx = i; - continue; - } - else if (id != mEv_EVENT_NUM && ev_save_common->area[i].info.id == mEv_EVENT_NUM) { - exist_slot = i; - } - - if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { - free_slot_idx = i; - break; - } - } + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_save_common->area_use_bitfield) == 0) { + free_slot_idx = i; + continue; + } else if (id != mEv_EVENT_NUM && ev_save_common->area[i].info.id == mEv_EVENT_NUM) { + exist_slot = i; + } - if (free_slot_idx == -1 && exist_slot != -1) { - free_slot_idx = exist_slot; - } - - if (free_slot_idx != -1) { - mEv_area_c* const area = &ev_save_common->area[free_slot_idx]; - mEv_info_c* const info = &area->info; - ev_save_common->area_use_bitfield |= (1 << free_slot_idx); - ev_save_common->area[free_slot_idx].info.type = type; - ev_save_common->area[free_slot_idx].info.id = id; - - // issue seems to stem from ev_today->begin_date.month being used twice which promotes it to r11? - if ((u16)ev_today->begin_date.month > (u32)ev_today->end_date.month && (u16)ev_today->begin_date.month > (u32)rtc_time->month) { - ev_save_common->area[free_slot_idx].info.year = rtc_time->year - 1; - } - else { - ev_save_common->area[free_slot_idx].info.year = rtc_time->year; + if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { + free_slot_idx = i; + break; + } } - data = (u8*)ev_save_common->area[free_slot_idx].data; - ev_save_common->area[free_slot_idx].info.year = rtc_time->year; // ???? - ev_save_common->area[free_slot_idx].info.start_date.month = ev_today->begin_date.month; - ev_save_common->area[free_slot_idx].info.start_date.day = ev_today->begin_date.day; - ev_save_common->area[free_slot_idx].info.end_date.month = ev_today->end_date.month; - ev_save_common->area[free_slot_idx].info.end_date.day = ev_today->end_date.day; - memset(data, 0, sizeof(ev_save_common->area[free_slot_idx].data)); - ret = data; - } - else { - ret = NULL; - } + if (free_slot_idx == -1 && exist_slot != -1) { + free_slot_idx = exist_slot; + } - return ret; + if (free_slot_idx != -1) { + mEv_area_c* const area = &ev_save_common->area[free_slot_idx]; + mEv_info_c* const info = &area->info; + ev_save_common->area_use_bitfield |= (1 << free_slot_idx); + ev_save_common->area[free_slot_idx].info.type = type; + ev_save_common->area[free_slot_idx].info.id = id; + + // issue seems to stem from ev_today->begin_date.month being used twice which promotes it to r11? + if ((u16)ev_today->begin_date.month > (u32)ev_today->end_date.month && + (u16)ev_today->begin_date.month > (u32)rtc_time->month) { + ev_save_common->area[free_slot_idx].info.year = rtc_time->year - 1; + } else { + ev_save_common->area[free_slot_idx].info.year = rtc_time->year; + } + + data = (u8*)ev_save_common->area[free_slot_idx].data; + ev_save_common->area[free_slot_idx].info.year = rtc_time->year; // ???? + ev_save_common->area[free_slot_idx].info.start_date.month = ev_today->begin_date.month; + ev_save_common->area[free_slot_idx].info.start_date.day = ev_today->begin_date.day; + ev_save_common->area[free_slot_idx].info.end_date.month = ev_today->end_date.month; + ev_save_common->area[free_slot_idx].info.end_date.day = ev_today->end_date.day; + memset(data, 0, sizeof(ev_save_common->area[free_slot_idx].data)); + ret = data; + } else { + ret = NULL; + } + + return ret; } extern u8* mEv_get_save_area(int type, u8 id) { - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - int i; + mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); + int i; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_save_common->area_use_bitfield) != 0) { - if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { - return (u8*)ev_save_common->area[i].data; - } + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_save_common->area_use_bitfield) != 0) { + if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { + return (u8*)ev_save_common->area[i].data; + } + } } - } - return NULL; + return NULL; } extern int mEv_clear_save_area(int type, u8 id) { - mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); - int i; + mEv_save_common_data_c* ev_save_common = Save_GetPointer(event_save_common); + int i; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_save_common->area_use_bitfield) != 0) { - if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { - ev_save_common->area_use_bitfield &= ~(1 << i); - return sizeof(ev_save_common->area[i].data); - } + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_save_common->area_use_bitfield) != 0) { + if (type == ev_save_common->area[i].info.type && id == ev_save_common->area[i].info.id) { + ev_save_common->area_use_bitfield &= ~(1 << i); + return sizeof(ev_save_common->area[i].data); + } + } } - } - return 0; + return 0; } static int update_save_area() { @@ -2428,413 +2327,366 @@ static int update_save_area() { } extern u8* mEv_reserve_common_area(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; - int exist_slot = -1; - u8* data; - u8* res; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; + int exist_slot = -1; + u8* data; + u8* res; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_common->area_use_bitfield) == 0) { - exist_slot = i; + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_common->area_use_bitfield) == 0) { + exist_slot = i; + } else if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { + exist_slot = i; + break; + } } - else if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { - exist_slot = i; - break; + + if (exist_slot != -1) { + ev_common->area_use_bitfield |= (1 << exist_slot); + data = (u8*)ev_common->area[exist_slot].data; + ev_common->area[exist_slot].info.type = type; + ev_common->area[exist_slot].info.id = id; + memset(data, 0, sizeof(ev_common->area[exist_slot].data)); + res = data; + } else { + res = NULL; } - } - if (exist_slot != -1) { - ev_common->area_use_bitfield |= (1 << exist_slot); - data = (u8*)ev_common->area[exist_slot].data; - ev_common->area[exist_slot].info.type = type; - ev_common->area[exist_slot].info.id = id; - memset(data, 0, sizeof(ev_common->area[exist_slot].data)); - res = data; - } - else { - res = NULL; - } - - return res; + return res; } extern u8* mEv_get_common_area(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_common->area_use_bitfield) != 0) { - if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { - return (u8*)ev_common->area[i].data; - } + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_common->area_use_bitfield) != 0) { + if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { + return (u8*)ev_common->area[i].data; + } + } } - } - return NULL; + return NULL; } extern int mEv_clear_common_area(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_AREA_NUM; i++) { - if (((1 << i) & ev_common->area_use_bitfield) != 0) { - if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { - ev_common->area_use_bitfield &= ~(1 << i); - return sizeof(ev_common->area[i].data); - } + for (i = 0; i < mEv_AREA_NUM; i++) { + if (((1 << i) & ev_common->area_use_bitfield) != 0) { + if (type == ev_common->area[i].info.type && id == ev_common->area[i].info.id) { + ev_common->area_use_bitfield &= ~(1 << i); + return sizeof(ev_common->area[i].data); + } + } } - } - return 0; + return 0; } extern mEv_place_data_c* mEv_reserve_common_place(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; - int exist_slot = -1; - mEv_place_data_c* data; - mEv_place_data_c* res; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; + int exist_slot = -1; + mEv_place_data_c* data; + mEv_place_data_c* res; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) == 0) { - exist_slot = i; + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) == 0) { + exist_slot = i; + } else if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { + exist_slot = i; + break; + } } - else if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { - exist_slot = i; - break; + + if (exist_slot != -1) { + ev_common->place_use_bitfield |= (1 << exist_slot); + data = &ev_common->place[exist_slot].data; + ev_common->place[exist_slot].info.type = type; + ev_common->place[exist_slot].info.id = id; + memset(data, 0, sizeof(ev_common->place[exist_slot].data)); + res = data; + } else { + res = NULL; } - } - if (exist_slot != -1) { - ev_common->place_use_bitfield |= (1 << exist_slot); - data = &ev_common->place[exist_slot].data; - ev_common->place[exist_slot].info.type = type; - ev_common->place[exist_slot].info.id = id; - memset(data, 0, sizeof(ev_common->place[exist_slot].data)); - res = data; - } - else { - res = NULL; - } - - return res; + return res; } extern mEv_place_data_c* mEv_get_common_place(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) != 0) { - if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { - return &ev_common->place[i].data; - } + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) != 0) { + if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { + return &ev_common->place[i].data; + } + } } - } - return NULL; + return NULL; } extern int mEv_clear_common_place(int type, u8 id) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) != 0) { - if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { - ev_common->place_use_bitfield &= ~(1 << i); - return sizeof(ev_common->place[i].data); - } + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) != 0) { + if (type == ev_common->place[i].info.type && id == ev_common->place[i].info.id) { + ev_common->place_use_bitfield &= ~(1 << i); + return sizeof(ev_common->place[i].data); + } + } } - } - return 0; + return 0; } extern int mEv_use_block_by_other_event(int type, BlockOrUnit_c* block) { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) != 0) { - if ( - ev_common->place[i].data.block.x == block->x && - ev_common->place[i].data.block.z == block->z && - ev_common->place[i].info.type != type - ) { - return TRUE; - } + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) != 0) { + if (ev_common->place[i].data.block.x == block->x && ev_common->place[i].data.block.z == block->z && + ev_common->place[i].info.type != type) { + return TRUE; + } + } } - } - return FALSE; + return FALSE; } extern void mEv_erase_FG_all_in_common_place() { - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - int i; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + int i; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) != 0) { - mEv_place_data_c* place_data = &ev_common->place[i].data; - - if (ITEM_NAME_GET_TYPE(place_data->actor_name) == NAME_TYPE_STRUCT) { - mFI_SetFGStructure_common( - place_data->actor_name, - place_data->block.x, - place_data->block.z, - place_data->unit.x, - place_data->unit.z, - mFI_SET_STRUCTURE_REMOVE - ); - } + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) != 0) { + mEv_place_data_c* place_data = &ev_common->place[i].data; + + if (ITEM_NAME_GET_TYPE(place_data->actor_name) == NAME_TYPE_STRUCT) { + mFI_SetFGStructure_common(place_data->actor_name, place_data->block.x, place_data->block.z, + place_data->unit.x, place_data->unit.z, mFI_SET_STRUCTURE_REMOVE); + } + } } - } } -static int n_rumor = 0; -static int rumor_table[40]; - extern void mEv_clear_rumor() { - n_rumor = 0; + n_rumor = 0; } extern int mEv_spread_rumor(int type) { - rumor_table[n_rumor++] = type; - return n_rumor; + rumor_table[n_rumor++] = type; + return n_rumor; } extern int mEv_get_rumor() { - if (n_rumor != 0) { - return rumor_table[gamePT->frame_counter % n_rumor] | mEv_SET(mEv_TYPE3_EVENT, 0); - } + if (n_rumor != 0) { + return rumor_table[gamePT->frame_counter % n_rumor] | mEv_SET(mEv_TYPE3_EVENT, 0); + } - return 0; + return 0; } extern void mEv_actor_dying_message(int type, ACTOR* actor) { - xyz_t pos = actor->world.position; - mEv_common_data_c* ev_common = Common_GetPointer(event_common); - mActor_name_t actor_name = actor->npc_id; - int i; + xyz_t pos = actor->world.position; + mEv_common_data_c* ev_common = Common_GetPointer(event_common); + mActor_name_t actor_name = actor->npc_id; + int i; - for (i = 0; i < mEv_PLACE_NUM; i++) { - if (((1 << i) & ev_common->place_use_bitfield) != 0) { - mEv_place_data_c* place_data = &ev_common->place[i].data; - - if ( - ev_common->place[i].info.type == type && - place_data->actor_name == actor_name - ) { - /* Check if the actor world position should be transferred to event data */ - if (place_data->flag & 1) { - mFI_Wpos2BlockNum(&place_data->block.x, &place_data->block.z, pos); - mFI_Wpos2UtNum_inBlock(&place_data->unit.x, &place_data->unit.z, pos); + for (i = 0; i < mEv_PLACE_NUM; i++) { + if (((1 << i) & ev_common->place_use_bitfield) != 0) { + mEv_place_data_c* place_data = &ev_common->place[i].data; + + if (ev_common->place[i].info.type == type && place_data->actor_name == actor_name) { + /* Check if the actor world position should be transferred to event data */ + if (place_data->flag & 1) { + mFI_Wpos2BlockNum(&place_data->block.x, &place_data->block.z, pos); + mFI_Wpos2UtNum_inBlock(&place_data->unit.x, &place_data->unit.z, pos); + } + + funeral = TRUE; + break; + } } - - funeral = TRUE; - break; - } } - } - mEv_set_status(type, mEv_STATUS_STOP); - dead = 3; + mEv_set_status(type, mEv_STATUS_STOP); + dead = 3; } extern int mEv_LiveSonchoPresent() { - if (Common_Get(demo_profiles[1]) == mAc_PROFILE_PRESENT_DEMO) { - return TRUE; - } + if (Common_Get(demo_profiles[1]) == mAc_PROFILE_PRESENT_DEMO) { + return TRUE; + } - if (Common_Get(clip).demo_clip2 != NULL && Common_Get(clip).demo_clip2->type == mDemo_CLIP_TYPE_PRESENT_DEMO) { - return TRUE; - } + if (Common_Get(clip).demo_clip2 != NULL && Common_Get(clip).demo_clip2->type == mDemo_CLIP_TYPE_PRESENT_DEMO) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mEv_LivePlayer(u32 player_no) { - if (mEv_CheckTitleDemo() != 0) { - return FALSE; - } - - if (Common_Get(reset_flag) != 0) { - return FALSE; - } - - if (player_no < mPr_FOREIGNER) { - if ( - mEv_CheckEvent(mEv_SAVED_GATEWAY_PLR0 + player_no) == TRUE || - mEv_CheckEvent(mEv_SAVED_FIRSTINTRO_PLR0 + player_no) == TRUE - ) { - return FALSE; + if (mEv_CheckTitleDemo() != 0) { + return FALSE; } - } - else if (player_no < mPr_PLAYER_NUM) { - if (mEv_CheckEvent(mEv_SAVED_GATEWAY_PLR0 + player_no) == TRUE) { - return FALSE; - } - } - else { - return FALSE; - } - return TRUE; + if (Common_Get(reset_flag) != 0) { + return FALSE; + } + + if (player_no < mPr_FOREIGNER) { + if (mEv_CheckEvent(mEv_SAVED_GATEWAY_PLR0 + player_no) == TRUE || + mEv_CheckEvent(mEv_SAVED_FIRSTINTRO_PLR0 + player_no) == TRUE) { + return FALSE; + } + } else if (player_no < mPr_PLAYER_NUM) { + if (mEv_CheckEvent(mEv_SAVED_GATEWAY_PLR0 + player_no) == TRUE) { + return FALSE; + } + } else { + return FALSE; + } + + return TRUE; } extern int mEv_ArbeitPlayer_kari(u32 player_no) { - if (player_no < mPr_FOREIGNER && mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE) { - return TRUE; - } + if (player_no < mPr_FOREIGNER && mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mEv_ArbeitPlayer(u32 player_no) { - if ( - player_no < mPr_FOREIGNER && - (mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || - mEv_CheckEvent(mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE) - ) { - return TRUE; - } + if (player_no < mPr_FOREIGNER && (mEv_CheckEvent(mEv_SAVED_FIRSTJOB_PLR0 + player_no) == TRUE || + mEv_CheckEvent(mEv_SAVED_HRAWAIT_PLR0 + player_no) == TRUE)) { + return TRUE; + } - return FALSE; + return FALSE; } extern void mEv_make_new_special_event() { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - mEv_schedule_c sched; - mEv_schedule_date_u today_date; - mEv_schedule_c* sched_p = &sched; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + mEv_schedule_c sched; + mEv_schedule_date_u today_date; + mEv_schedule_c* sched_p = &sched; - today_date.d.month = rtc_time->month; - today_date.d.day = rtc_time->day; - today_date.d._2 = 0; - today_date.d.hour = rtc_time->hour; + today_date.d.month = rtc_time->month; + today_date.d.day = rtc_time->day; + today_date.d._2 = 0; + today_date.d.hour = rtc_time->hour; - if (init_special_event(TRUE)) { - int i; + if (init_special_event(TRUE)) { + int i; - Save_Get(event_save_common).special_event.flags = 1; - for (i = 0; i < ARRAY_COUNT(event_schedule_data); i++) { - memcpy(sched_p, &event_schedule_data[i], sizeof(mEv_schedule_c)); + Save_Get(event_save_common).special_event.flags = 1; + for (i = 0; i < ARRAY_COUNT(event_schedule_data); i++) { + memcpy(sched_p, &event_schedule_data[i], sizeof(mEv_schedule_c)); - if (update_special_event(sched_p)) { - sched.date[0].raw = decode_date(sched.date[0].raw); - sched.date[1].raw = decode_date(sched.date[1].raw); + if (update_special_event(sched_p)) { + sched.date[0].raw = decode_date(sched.date[0].raw); + sched.date[1].raw = decode_date(sched.date[1].raw); - if (check_date_range(today_date.md, sched.date[0].md, sched.date[1].md)) { - add_event_today(today_date.md, sched_p); + if (check_date_range(today_date.md, sched.date[0].md, sched.date[1].md)) { + add_event_today(today_date.md, sched_p); + } + } } - } } - } } extern int mEv_GetMonth(Event_c* event) { - return event->month; + return event->month; } extern int mEv_GetDay(Event_c* event) { - return event->day; + return event->day; } extern int mEv_GetHour(Event_c* event) { - return event->hour; + return event->hour; } extern void mEv_debug_print4f(gfxprint_t* gfxprint) { - //int x = 0; - int i; - int event_idx = 0; + // int x = 0; + int i; + int event_idx = 0; - for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - if (event_today[i].type != -1 && mEv_check_status(event_today[i].type, mEv_STATUS_ACTIVE)) { - gfxprint_color(gfxprint, 245, 200, 170, 255); - gfxprint_locate8x8(gfxprint, 3 + event_idx * 3, 5); - gfxprint_printf(gfxprint, "%3d", event_today[i].type); - event_idx++; - //x += 3; + for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { + if (event_today[i].type != -1 && mEv_check_status(event_today[i].type, mEv_STATUS_ACTIVE)) { + gfxprint_color(gfxprint, 245, 200, 170, 255); + gfxprint_locate8x8(gfxprint, 3 + event_idx * 3, 5); + gfxprint_printf(gfxprint, "%3d", event_today[i].type); + event_idx++; + // x += 3; - if (event_idx >= 9) { - if (mEv_check_status(event_today[i].type, mEv_STATUS_ERROR) == FALSE) { - gfxprint_color(gfxprint, 245, 150, 120, 255); + if (event_idx >= 9) { + if (mEv_check_status(event_today[i].type, mEv_STATUS_ERROR) == FALSE) { + gfxprint_color(gfxprint, 245, 150, 120, 255); + } else if (mEv_check_status(event_today[i].type, mEv_STATUS_RUN)) { + gfxprint_color(gfxprint, 180, 150, 160, 255); + } else { + gfxprint_color(gfxprint, 140, 120, 120, 255); + } + + gfxprint_locate8x8(gfxprint, 9 + event_idx * 3, 5); + gfxprint_printf(gfxprint, "+"); + break; + } } - else if (mEv_check_status(event_today[i].type, mEv_STATUS_RUN)) { - gfxprint_color(gfxprint, 180, 150, 160, 255); - } - else { - gfxprint_color(gfxprint, 140, 120, 120, 255); - } - - gfxprint_locate8x8(gfxprint, 9 + event_idx * 3, 5); - gfxprint_printf(gfxprint, "+"); - break; - } - } - } } extern void mEv_sp_debug_print4f(gfxprint_t* gfxprint) { - gfxprint_color(gfxprint, 245, 200, 170, 255); - gfxprint_locate8x8(gfxprint, 3, 11); - gfxprint_printf( - gfxprint, - "%3d %02d-%02d-%02d", - Save_Get(event_save_common).special_event.type, - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] & 0xFF, // event rtc (current) day - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1] & 0xFF, // event begin day - Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2] & 0xFF // event end day - ); + gfxprint_color(gfxprint, 245, 200, 170, 255); + gfxprint_locate8x8(gfxprint, 3, 11); + gfxprint_printf(gfxprint, "%3d %02d-%02d-%02d", Save_Get(event_save_common).special_event.type, + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL0] & 0xFF, // event rtc (current) day + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL1] & 0xFF, // event begin day + Save_Get(event_save_common).dates[mEv_SAVE_DATE_SPECIAL2] & 0xFF // event end day + ); - gfxprint_locate8x8(gfxprint, 30, 11); - gfxprint_printf( - gfxprint, - "%c%c%c%c%c%c%c%c", - mEv_CheckTitleDemo() ? 'T' : '.', - mEv_CheckFirstIntro() ? 'F' : '.', - mEv_CheckGateway() ? 'G' : '.', - mEv_CheckRealArbeit() ? 'R' : '.', - mEv_CheckArbeit() ? 'A' : '.', - mDemo_CheckDemo() ? 'D' : '.', - !mEv_PlayerOK() ? 'P' : '.', - !mEv_LivePlayer(Common_Get(player_no)) ? 'L' : '.' - ); + gfxprint_locate8x8(gfxprint, 30, 11); + gfxprint_printf(gfxprint, "%c%c%c%c%c%c%c%c", mEv_CheckTitleDemo() ? 'T' : '.', mEv_CheckFirstIntro() ? 'F' : '.', + mEv_CheckGateway() ? 'G' : '.', mEv_CheckRealArbeit() ? 'R' : '.', mEv_CheckArbeit() ? 'A' : '.', + mDemo_CheckDemo() ? 'D' : '.', !mEv_PlayerOK() ? 'P' : '.', + !mEv_LivePlayer(Common_Get(player_no)) ? 'L' : '.'); } extern int mEv_change(Event_c* event) { - return event->changed_num; + return event->changed_num; } extern int mEv_get_special_event_state() { - int special_events[] = { - mEv_EVENT_SHOP_SALE, - mEv_EVENT_DESIGNER, - mEv_EVENT_BROKER_SALE, - mEv_EVENT_ARTIST, - mEv_EVENT_CARPET_PEDDLER, - mEv_EVENT_GYPSY - }; + int special_events[] = { mEv_EVENT_SHOP_SALE, mEv_EVENT_DESIGNER, mEv_EVENT_BROKER_SALE, + mEv_EVENT_ARTIST, mEv_EVENT_CARPET_PEDDLER, mEv_EVENT_GYPSY }; - int active = FALSE; - int res = mEv_SPECIAL_STATE_UNSCHEDULED; - mEv_ymdh_u event_date_start; - mEv_ymdh_u today_date; - mEv_ymdh_u event_date; - mEv_ymdh_u today_date_start; - int event_type; + int active = FALSE; + int res = mEv_SPECIAL_STATE_UNSCHEDULED; + mEv_ymdh_u event_date_start; + mEv_ymdh_u today_date; + mEv_ymdh_u event_date; + mEv_ymdh_u today_date_start; + int event_type; - if (Save_Get(event_save_data).special.type <= mEv_SPNPC_END) { - event_type = special_events[Save_Get(event_save_data).special.type]; - } - else { - return FALSE; - } + if (Save_Get(event_save_data).special.type <= mEv_SPNPC_END) { + event_type = special_events[Save_Get(event_save_data).special.type]; + } else { + return FALSE; + } today_date.year = 0; today_date.month = Common_Get(time.rtc_time.month); @@ -2853,261 +2705,239 @@ extern int mEv_get_special_event_state() { event_date_start.hour = 0; if (event_type == mEv_EVENT_SHOP_SALE) { - if (event_date.raw == today_date.raw) { + if (event_date.raw == today_date.raw) { + active = TRUE; + } + } else if (mEv_check_status(event_type, mEv_STATUS_ACTIVE)) { active = TRUE; - } - } - else if (mEv_check_status(event_type, mEv_STATUS_ACTIVE)) { - active = TRUE; } if (active) { - res = mEv_SPECIAL_STATE_ACTIVE; - } - else if (check_ymdh_range(today_date.raw, event_date_start.raw, event_date.raw)) { - res = mEv_SPECIAL_STATE_SCHEDULED_TODAY; - } - else if (Save_Get(event_save_data).special.type != 0xFFFFFFFF && event_date_start.raw > today_date_start.raw) { - res = mEv_SPECIAL_STATE_SCHEDULED_LATER; + res = mEv_SPECIAL_STATE_ACTIVE; + } else if (check_ymdh_range(today_date.raw, event_date_start.raw, event_date.raw)) { + res = mEv_SPECIAL_STATE_SCHEDULED_TODAY; + } else if (Save_Get(event_save_data).special.type != 0xFFFFFFFF && event_date_start.raw > today_date_start.raw) { + res = mEv_SPECIAL_STATE_SCHEDULED_LATER; } - return res; + return res; } extern int mEv_snowman_born_check() { - mEv_ymdh_u snowman_date; - mEv_ymdh_u today_date; - mEv_ymdh_u snowman_date_end; + mEv_ymdh_u snowman_date; + mEv_ymdh_u today_date; + mEv_ymdh_u snowman_date_end; - today_date.year = Common_Get(time.rtc_time).year % 100; - today_date.month = Common_Get(time.rtc_time).month; - today_date.day = Common_Get(time.rtc_time).day; - today_date.hour = Common_Get(time.rtc_time).hour; + today_date.year = Common_Get(time.rtc_time).year % 100; + today_date.month = Common_Get(time.rtc_time).month; + today_date.day = Common_Get(time.rtc_time).day; + today_date.hour = Common_Get(time.rtc_time).hour; - snowman_date.year = Save_Get(snowman_year); - snowman_date.month = Save_Get(snowman_month); - snowman_date.day = Save_Get(snowman_day); - snowman_date.hour = Save_Get(snowman_hour); - - snowman_date_end.raw = snowman_date.raw; - snowman_date_end.hour = 5; + snowman_date.year = Save_Get(snowman_year); + snowman_date.month = Save_Get(snowman_month); + snowman_date.day = Save_Get(snowman_day); + snowman_date.hour = Save_Get(snowman_hour); - if (snowman_date.hour >= 6) { - mEv_MonthDay_u snowman_monthday; - mEv_MonthDay_u next_monthday; + snowman_date_end.raw = snowman_date.raw; + snowman_date_end.hour = 5; - snowman_monthday.month = snowman_date.month; - snowman_monthday.day = snowman_date.day; - next_monthday.raw = after_n_day(snowman_monthday.raw, 1); + if (snowman_date.hour >= 6) { + mEv_MonthDay_u snowman_monthday; + mEv_MonthDay_u next_monthday; - if (next_monthday.raw == mEv_MonthDay(lbRTC_JANUARY, 1)) { - snowman_date_end.year = (snowman_date_end.year + 1) % 100; + snowman_monthday.month = snowman_date.month; + snowman_monthday.day = snowman_date.day; + next_monthday.raw = after_n_day(snowman_monthday.raw, 1); + + if (next_monthday.raw == mEv_MonthDay(lbRTC_JANUARY, 1)) { + snowman_date_end.year = (snowman_date_end.year + 1) % 100; + } + + snowman_date_end.month = next_monthday.month; + snowman_date_end.day = next_monthday.day; } - snowman_date_end.month = next_monthday.month; - snowman_date_end.day = next_monthday.day; - } + if (check_ymdh_range(today_date.raw, snowman_date.raw, snowman_date_end.raw)) { + return FALSE; + } - if (check_ymdh_range(today_date.raw, snowman_date.raw, snowman_date_end.raw)) { - return FALSE; - } - - return TRUE; + return TRUE; } extern int mEv_someone_died() { - return dead; + return dead; } extern void mEv_special_event_soldout(int type) { - GAME_PLAY* play = (GAME_PLAY*)gamePT; - mEv_event_today_c* ev_today; - int i; + GAME_PLAY* play = (GAME_PLAY*)gamePT; + mEv_event_today_c* ev_today; + int i; - for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { - ev_today = &event_today[i]; - - if ( - ev_today->type != -1 && - index_today[ev_today->type] != 0xFF && - mEv_check_status(ev_today->type, mEv_STATUS_ERROR) == FALSE && - ev_today->type == type - ) { - if (clear_active(ev_today->type)) { - play->event.changed_num++; - } + for (i = 0; i < mEv_TODAY_EVENT_NUM; i++) { + ev_today = &event_today[i]; - ev_today->active_hours = mEv_EVENT_HOUR_CLEAR_EVENT; + if (ev_today->type != -1 && index_today[ev_today->type] != 0xFF && + mEv_check_status(ev_today->type, mEv_STATUS_ERROR) == FALSE && ev_today->type == type) { + if (clear_active(ev_today->type)) { + play->event.changed_num++; + } + + ev_today->active_hours = mEv_EVENT_HOUR_CLEAR_EVENT; + } } - } } extern void mEv_toland_clear_common() { - int* keep_flags = Common_Get(event_keep_flags); - int i; + int* keep_flags = Common_Get(event_keep_flags); + int i; - for (i = 0; i < ARRAY_COUNT(Common_Get(event_keep_flags)); i++) { - keep_flags[i] = 0; - } + for (i = 0; i < ARRAY_COUNT(Common_Get(event_keep_flags)); i++) { + keep_flags[i] = 0; + } - mem_clear(Common_GetPointer(event_common), sizeof(Common_Get(event_common)), 0); - mem_clear(Common_GetPointer(special_event_common), sizeof(Common_Get(special_event_common)), 0); + mem_clear((u8*)Common_GetPointer(event_common), sizeof(Common_Get(event_common)), 0); + mem_clear((u8*)Common_GetPointer(special_event_common), sizeof(Common_Get(special_event_common)), 0); } extern void mGH_animal_return_init() { - mem_clear(Save_GetPointer(return_animal), sizeof(Save_Get(return_animal)), 0); - Save_Get(return_animal).npc_id = EMPTY_NO; // ?? + mem_clear((u8*)Save_GetPointer(return_animal), sizeof(Save_Get(return_animal)), 0); + Save_Get(return_animal).npc_id = EMPTY_NO; // ?? } extern int mGH_check_birth2() { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - Anmret_c* return_animal = Save_GetPointer(return_animal); - lbRTC_time_c time; - - if (return_animal->npc_id == EMPTY_NO) { + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + Anmret_c* return_animal = Save_GetPointer(return_animal); + lbRTC_time_c time; + + if (return_animal->npc_id == EMPTY_NO) { + return FALSE; + } + + /* Check that it's been less than 1 week since go home event was scheduled */ + lbRTC_TimeCopy(&time, &return_animal->renew_time); + lbRTC_Add_DD(&time, lbRTC_WEEK); + + if (lbRTC_IsEqualDate(time.year, time.month, time.day, rtc_time->year, rtc_time->month, rtc_time->day) == + lbRTC_LESS) { + return TRUE; + } + return FALSE; - } - - /* Check that it's been less than 1 week since go home event was scheduled */ - lbRTC_TimeCopy(&time, &return_animal->renew_time); - lbRTC_Add_DD(&time, lbRTC_WEEK); - - if ( - lbRTC_IsEqualDate( - time.year, time.month, time.day, - rtc_time->year, rtc_time->month, rtc_time->day - ) == lbRTC_LESS - ) { - return TRUE; - } - - return FALSE; } extern int mGH_check_birth() { - if ((Save_Get(return_animal).talk_bit & (1 << Common_Get(player_no))) != 0) { - return FALSE; - } + if ((Save_Get(return_animal).talk_bit & (1 << Common_Get(player_no))) != 0) { + return FALSE; + } - return mGH_check_birth2(); + return mGH_check_birth2(); } extern void mGH_check_delete() { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - Anmret_c* return_animal = Save_GetPointer(return_animal); - Private_c* priv = Save_Get(private); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + Anmret_c* return_animal = Save_GetPointer(return_animal); + Private_c* priv = Save_Get(private_data); - if (return_animal->npc_id != EMPTY_NO) { - if (Save_Get(npc_force_go_home) == TRUE) { - mGH_animal_return_init(); - } - else { - lbRTC_time_c time; + if (return_animal->npc_id != EMPTY_NO) { + if (Save_Get(npc_force_go_home) == TRUE) { + mGH_animal_return_init(); + } else { + lbRTC_time_c time; - lbRTC_TimeCopy(&time, &return_animal->renew_time); - /* Devs did this to fix a 'bug' with lbRTC_Add_DD which only allows going at most one month in the future */ - lbRTC_Add_DD(&time, 20); - lbRTC_Add_DD(&time, 20); - lbRTC_Add_DD(&time, 20); + lbRTC_TimeCopy(&time, &return_animal->renew_time); + /* Devs did this to fix a 'bug' with lbRTC_Add_DD which only allows going at most one month in the future */ + lbRTC_Add_DD(&time, 20); + lbRTC_Add_DD(&time, 20); + lbRTC_Add_DD(&time, 20); - if ( - lbRTC_IsEqualDate( - time.year, time.month, time.day, - rtc_time->year, rtc_time->month, rtc_time->day - ) != lbRTC_OVER - ) { - mGH_animal_return_init(); - } - else { - int i; + if (lbRTC_IsEqualDate(time.year, time.month, time.day, rtc_time->year, rtc_time->month, rtc_time->day) != + lbRTC_OVER) { + mGH_animal_return_init(); + } else { + int i; - if (mNpc_SearchAnimalinfo(Save_Get(animals), return_animal->npc_id, ANIMAL_NUM_MAX) != -1) { - mGH_animal_return_init(); // don't allow this animal to visit if a "version" of it lives in town + if (mNpc_SearchAnimalinfo(Save_Get(animals), return_animal->npc_id, ANIMAL_NUM_MAX) != -1) { + mGH_animal_return_init(); // don't allow this animal to visit if a "version" of it lives in town + } + + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && + (return_animal->talk_bit & (1 << i)) == 0) { + return; + } + + priv++; + } + + mGH_animal_return_init(); + } } - - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && (return_animal->talk_bit & (1 << i)) == 0) { - return; - } - - priv++; - } - - mGH_animal_return_init(); - } } - } } extern void mMC_mask_cat_init() { - MaskCat_c* mask_cat = Save_GetPointer(mask_cat); - u8 cloth_no = mask_cat->cloth_no; + MaskCat_c* mask_cat = Save_GetPointer(mask_cat); + u8 cloth_no = mask_cat->cloth_no; - mem_clear(mask_cat, sizeof(Save_Get(mask_cat)), 0); - mPr_ClearPersonalID(&mask_cat->design.creator_pid); - Save_Get(mask_cat).cloth_no = cloth_no; + mem_clear((u8*)mask_cat, sizeof(Save_Get(mask_cat)), 0); + mPr_ClearPersonalID(&mask_cat->design.creator_pid); + Save_Get(mask_cat).cloth_no = cloth_no; } extern int mMC_check_birth() { - if (Save_Get(mask_cat).design.creator_pid.player_id == 0xFFFF) { - return FALSE; - } + if (Save_Get(mask_cat).design.creator_pid.player_id == 0xFFFF) { + return FALSE; + } + + if (Save_Get(mask_cat).talk_idx >= mMC_TALK_IDX_MAX) { + /* Talked more than the maximum amount of times allowed */ + mMC_mask_cat_init(); + return FALSE; + } - if (Save_Get(mask_cat).talk_idx >= mMC_TALK_IDX_MAX) { - /* Talked more than the maximum amount of times allowed */ - mMC_mask_cat_init(); return TRUE; - } - - return FALSE; } extern int mMC_check_birth_day() { - switch (Common_Get(time.rtc_time.weekday)) { - case lbRTC_SUNDAY: - case lbRTC_MONDAY: - case lbRTC_WEDNESDAY: - case lbRTC_FRIDAY: - return FALSE; - - default: - return mMC_check_birth(); - } + switch (Common_Get(time.rtc_time.weekday)) { + case lbRTC_SUNDAY: + case lbRTC_MONDAY: + case lbRTC_WEDNESDAY: + case lbRTC_FRIDAY: + return FALSE; + + default: + return mMC_check_birth(); + } } extern void mMC_check_delete() { - MaskCat_c* mask_cat = Save_GetPointer(mask_cat); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + MaskCat_c* mask_cat = Save_GetPointer(mask_cat); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - if (mask_cat->design.creator_pid.player_id != 0xFFFF) { - lbRTC_time_c max_time; - lbRTC_time_c min_time; + if (mask_cat->design.creator_pid.player_id != 0xFFFF) { + lbRTC_time_c max_time; + lbRTC_time_c min_time; - lbRTC_TimeCopy(&max_time, &mask_cat->time); - lbRTC_TimeCopy(&min_time, &mask_cat->time); + lbRTC_TimeCopy(&max_time, &mask_cat->time); + lbRTC_TimeCopy(&min_time, &mask_cat->time); - lbRTC_Add_DD(&max_time, lbRTC_WEEK); - lbRTC_Sub_DD(&min_time, lbRTC_WEEK); + lbRTC_Add_DD(&max_time, lbRTC_WEEK); + lbRTC_Sub_DD(&min_time, lbRTC_WEEK); - if ( - mask_cat->talk_idx >= mMC_TALK_IDX_MAX || - lbRTC_IsEqualDate( - max_time.year, max_time.month, max_time.day, - rtc_time->year, rtc_time->month, rtc_time->day - ) != lbRTC_OVER || - lbRTC_IsEqualDate( - min_time.year, min_time.month, min_time.day, - rtc_time->year, rtc_time->month, rtc_time->day - ) != lbRTC_LESS - ) { - mMC_mask_cat_init(); + if (mask_cat->talk_idx >= mMC_TALK_IDX_MAX || + lbRTC_IsEqualDate(max_time.year, max_time.month, max_time.day, rtc_time->year, rtc_time->month, + rtc_time->day) != lbRTC_OVER || + lbRTC_IsEqualDate(min_time.year, min_time.month, min_time.day, rtc_time->year, rtc_time->month, + rtc_time->day) != lbRTC_LESS) { + mMC_mask_cat_init(); + } } - } } extern void mMC_set_time() { - MaskCat_c* mask_cat = Save_GetPointer(mask_cat); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + MaskCat_c* mask_cat = Save_GetPointer(mask_cat); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_TimeCopy(&mask_cat->time, rtc_time); + lbRTC_TimeCopy(&mask_cat->time, rtc_time); } diff --git a/src/m_field_info.c b/src/m_field_info.c index 769aac77..491b027b 100644 --- a/src/m_field_info.c +++ b/src/m_field_info.c @@ -8,886 +8,844 @@ #include "libultra/libultra.h" #include "m_player_lib.h" -static mCoBG_Collision_u l_edge_ut = { - { - 0, - 31, - 31, - 31, - 31, - 31, - mCoBG_ATTRIBUTE_GRASS0 - } -}; +static mCoBG_Collision_u l_edge_ut = { { 0, 31, 31, 31, 31, 31, mCoBG_ATTRIBUTE_GRASS0 } }; typedef struct collision_keep_s { - int assumed_ut_x; - int assumed_ut_z; - int unk_C; + int assumed_ut_x; + int assumed_ut_z; + int unk_C; } mFI_col_keep_c; -static mFI_col_keep_c l_keepcld[mFI_NUM_COL_KEEP] = { - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 }, - { 0xFF, 0xFF, 0 } -}; +static mFI_col_keep_c l_keepcld[mFI_NUM_COL_KEEP] = { { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 }, + { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 }, { 0xFF, 0xFF, 0 } }; extern void mFI_ClearFieldData() { - g_fdinfo = NULL; + g_fdinfo = NULL; } extern int mFI_CheckFieldData() { - int res = FALSE; + int res = FALSE; - if (g_fdinfo != NULL) { - res = TRUE; - } + if (g_fdinfo != NULL) { + res = TRUE; + } - return res; + return res; } extern mFM_block_info_c* mFI_GetBlockTopP() { - mFM_block_info_c* block_info = NULL; - if (g_fdinfo != NULL) { - block_info = g_fdinfo->block_info; - } + mFM_block_info_c* block_info = NULL; + if (g_fdinfo != NULL) { + block_info = g_fdinfo->block_info; + } - return block_info; + return block_info; } extern mActor_name_t mFI_GetFieldId() { - mActor_name_t field_id = 0; + mActor_name_t field_id = 0; - if (mFI_CheckFieldData() == TRUE) { - field_id = g_fdinfo->field_id; - } + if (mFI_CheckFieldData() == TRUE) { + field_id = g_fdinfo->field_id; + } - return field_id; + return field_id; } extern int mFI_CheckShopFieldName(mActor_name_t field_name) { - int res = FALSE; + int res = FALSE; - if (mFI_GET_TYPE(field_name) == mFI_FIELD_ROOM0) { - switch (field_name) { - case mFI_FIELD_ROOM_SHOP0: - case mFI_FIELD_ROOM_SHOP1: - case mFI_FIELD_ROOM_SHOP2: - case mFI_FIELD_ROOM_SHOP3_1: - case mFI_FIELD_ROOM_SHOP3_2: - res = TRUE; - break; + if (mFI_GET_TYPE(field_name) == mFI_FIELD_ROOM0) { + switch (field_name) { + case mFI_FIELD_ROOM_SHOP0: + case mFI_FIELD_ROOM_SHOP1: + case mFI_FIELD_ROOM_SHOP2: + case mFI_FIELD_ROOM_SHOP3_1: + case mFI_FIELD_ROOM_SHOP3_2: + res = TRUE; + break; + } } - } - return res; + return res; } extern int mFI_CheckShop() { - int res = FALSE; + int res = FALSE; - if (mFI_CheckFieldData() == TRUE) { - res = mFI_CheckShopFieldName(mFI_GetFieldId()); - } + if (mFI_CheckFieldData() == TRUE) { + res = mFI_CheckShopFieldName(mFI_GetFieldId()); + } - return res; + return res; } extern u8 mFI_GetBlockXMax() { - u8 size = 0; + u8 size = 0; - if (mFI_CheckFieldData() == TRUE) { - size = g_fdinfo->block_x_max; - } - - return size; + if (mFI_CheckFieldData() == TRUE) { + size = g_fdinfo->block_x_max; + } + + return size; } extern u8 mFI_GetBlockZMax() { - u8 size = 0; + u8 size = 0; - if (mFI_CheckFieldData() == TRUE) { - size = g_fdinfo->block_z_max; - } - - return size; + if (mFI_CheckFieldData() == TRUE) { + size = g_fdinfo->block_z_max; + } + + return size; } extern f32 mFI_GetBlockWidth() { - static f32 player_room_wd[4] = { - 240.0f, - 320.0f, - 400.0f, - 400.0f - }; + static f32 player_room_wd[4] = { 240.0f, 320.0f, 400.0f, 400.0f }; - mActor_name_t field_id = mFI_GetFieldId(); - mActor_name_t house_owner_name = Common_Get(house_owner_name); + mActor_name_t field_id = mFI_GetFieldId(); + mActor_name_t house_owner_name = Common_Get(house_owner_name); - switch (mFI_GET_TYPE(field_id)) { - case mFI_FIELD_ROOM0: - { - switch (field_id) { - case mFI_FIELD_ROOM_POLICE_BOX: - return 400.0f; - case mFI_FIELD_ROOM_SHOP0: - return 320.0f; - case mFI_FIELD_ROOM_SHOP1: - return 440.0f; - case mFI_FIELD_ROOM_SHOP2: - return 440.0f; - case mFI_FIELD_ROOM_SHOP3_1: - return 480.0f; - case mFI_FIELD_ROOM_SHOP3_2: - return 480.0f; - case mFI_FIELD_ROOM_MUSEUM_ENTRANCE: - return 320.0f; - case mFI_FIELD_ROOM_MUSEUM_FOSSIL: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_PAINTING: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_FISH: - return 560.0f; - case mFI_FIELD_ROOM_MUSEUM_INSECT: - return 560.0f; - case mFI_FIELD_ROOM_NEEDLEWORK: - return 400.0f; - case mFI_FIELD_ROOM_LIGHTHOUSE: - return 240.0f; - case mFI_FIELD_ROOM_TENT: - return 240.0f; - default: - return 320.0f; - } + switch (mFI_GET_TYPE(field_id)) { + case mFI_FIELD_ROOM0: { + switch (field_id) { + case mFI_FIELD_ROOM_POLICE_BOX: + return 400.0f; + case mFI_FIELD_ROOM_SHOP0: + return 320.0f; + case mFI_FIELD_ROOM_SHOP1: + return 440.0f; + case mFI_FIELD_ROOM_SHOP2: + return 440.0f; + case mFI_FIELD_ROOM_SHOP3_1: + return 480.0f; + case mFI_FIELD_ROOM_SHOP3_2: + return 480.0f; + case mFI_FIELD_ROOM_MUSEUM_ENTRANCE: + return 320.0f; + case mFI_FIELD_ROOM_MUSEUM_FOSSIL: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_PAINTING: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_FISH: + return 560.0f; + case mFI_FIELD_ROOM_MUSEUM_INSECT: + return 560.0f; + case mFI_FIELD_ROOM_NEEDLEWORK: + return 400.0f; + case mFI_FIELD_ROOM_LIGHTHOUSE: + return 240.0f; + case mFI_FIELD_ROOM_TENT: + return 240.0f; + default: + return 320.0f; + } + } + + case mFI_FIELD_NPCROOM0: { + return mFI_BK_WORLDSIZE_X_F / 2.0f; + } + + case mFI_FIELD_PLAYER0_ROOM: { + u8 size; + + if (Save_Get(scene_no) == SCENE_COTTAGE_MY) { + return 400.0f; + } + + if (Save_Get(scene_no) == SCENE_MY_ROOM_LL2) { + return mFI_BK_WORLDSIZE_X_F / 2.0f; + } + + if (Save_Get(scene_no) >= SCENE_MY_ROOM_BASEMENT_S && Save_Get(scene_no) <= SCENE_MY_ROOM_BASEMENT_LL1) { + return 400.0f; + } + + size = Save_Get(homes[house_owner_name]).size_info.size; + if (size > 3) { + size = 3; + } + + return player_room_wd[size]; + } + + default: { + return mFI_BK_WORLDSIZE_X_F; + } } - - case mFI_FIELD_NPCROOM0: - { - return mFI_BK_WORLDSIZE_X_F / 2.0f; - } - - case mFI_FIELD_PLAYER0_ROOM: - { - u8 size; - - if (Save_Get(scene_no) == SCENE_COTTAGE_MY) { - return 400.0f; - } - - if (Save_Get(scene_no) == SCENE_MY_ROOM_LL2) { - return mFI_BK_WORLDSIZE_X_F / 2.0f; - } - - if (Save_Get(scene_no) >= SCENE_MY_ROOM_BASEMENT_S && Save_Get(scene_no) <= SCENE_MY_ROOM_BASEMENT_LL1) { - return 400.0f; - } - - size = Save_Get(homes[house_owner_name]).size_info.size; - if (size > 3) { - size = 3; - } - - return player_room_wd[size]; - } - - default: - { - return mFI_BK_WORLDSIZE_X_F; - } - } } extern f32 mFI_GetBlockHeight() { - static f32 player_room_ht[4] = { - 280.0f, - 360.0f, - 440.0f, - 440.0f - }; + static f32 player_room_ht[4] = { 280.0f, 360.0f, 440.0f, 440.0f }; - mActor_name_t field_id = mFI_GetFieldId(); - mActor_name_t house_owner_name = Common_Get(house_owner_name); + mActor_name_t field_id = mFI_GetFieldId(); + mActor_name_t house_owner_name = Common_Get(house_owner_name); - switch (mFI_GET_TYPE(field_id)) { - case mFI_FIELD_ROOM0: - { - switch (field_id) { - case mFI_FIELD_ROOM_POLICE_BOX: - return 400.0f; - case mFI_FIELD_ROOM_SHOP0: - return 320.0f; - case mFI_FIELD_ROOM_SHOP1: - return 320.0f; - case mFI_FIELD_ROOM_SHOP2: - return 480.0f; - case mFI_FIELD_ROOM_SHOP3_1: - return 560.0f; - case mFI_FIELD_ROOM_SHOP3_2: - return 560.0f; - case mFI_FIELD_ROOM_MUSEUM_ENTRANCE: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_FOSSIL: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_PAINTING: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_FISH: - return 640.0f; - case mFI_FIELD_ROOM_MUSEUM_INSECT: - return 640.0f; - case mFI_FIELD_ROOM_NEEDLEWORK: - return 320.0f; - case mFI_FIELD_ROOM_LIGHTHOUSE: - return 260.0f; - case mFI_FIELD_ROOM_TENT: - return 260.0f; - default: - return 320.0f; - } + switch (mFI_GET_TYPE(field_id)) { + case mFI_FIELD_ROOM0: { + switch (field_id) { + case mFI_FIELD_ROOM_POLICE_BOX: + return 400.0f; + case mFI_FIELD_ROOM_SHOP0: + return 320.0f; + case mFI_FIELD_ROOM_SHOP1: + return 320.0f; + case mFI_FIELD_ROOM_SHOP2: + return 480.0f; + case mFI_FIELD_ROOM_SHOP3_1: + return 560.0f; + case mFI_FIELD_ROOM_SHOP3_2: + return 560.0f; + case mFI_FIELD_ROOM_MUSEUM_ENTRANCE: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_FOSSIL: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_PAINTING: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_FISH: + return 640.0f; + case mFI_FIELD_ROOM_MUSEUM_INSECT: + return 640.0f; + case mFI_FIELD_ROOM_NEEDLEWORK: + return 320.0f; + case mFI_FIELD_ROOM_LIGHTHOUSE: + return 260.0f; + case mFI_FIELD_ROOM_TENT: + return 260.0f; + default: + return 320.0f; + } + } + + case mFI_FIELD_NPCROOM0: { + return mFI_BK_WORLDSIZE_X_F / 2.0f; + } + + case mFI_FIELD_PLAYER0_ROOM: { + u8 size; + + if (Save_Get(scene_no) == SCENE_COTTAGE_MY) { + return 440.0f; + } + + if (Save_Get(scene_no) == SCENE_MY_ROOM_LL2) { + return 360.0f; + } + + if (Save_Get(scene_no) >= SCENE_MY_ROOM_BASEMENT_S && Save_Get(scene_no) <= SCENE_MY_ROOM_BASEMENT_LL1) { + return 440.0f; + } + + size = Save_Get(homes[house_owner_name]).size_info.size; + if (size > 3) { + size = 3; + } + + return player_room_ht[size]; + } + + default: { + return mFI_BK_WORLDSIZE_X_F; + } } - - case mFI_FIELD_NPCROOM0: - { - return mFI_BK_WORLDSIZE_X_F / 2.0f; - } - - case mFI_FIELD_PLAYER0_ROOM: - { - u8 size; - - if (Save_Get(scene_no) == SCENE_COTTAGE_MY) { - return 440.0f; - } - - if (Save_Get(scene_no) == SCENE_MY_ROOM_LL2) { - return 360.0f; - } - - if (Save_Get(scene_no) >= SCENE_MY_ROOM_BASEMENT_S && Save_Get(scene_no) <= SCENE_MY_ROOM_BASEMENT_LL1) { - return 440.0f; - } - - size = Save_Get(homes[house_owner_name]).size_info.size; - if (size > 3) { - size = 3; - } - - return player_room_ht[size]; - } - - default: - { - return mFI_BK_WORLDSIZE_X_F; - } - } } extern int mFI_GetBlockNum(int block_x, int block_z) { - int num = block_x + block_z * mFI_GetBlockXMax(); + int num = block_x + block_z * mFI_GetBlockXMax(); - return num; + return num; } static int mFI_GetUtNum(int ut_x, int ut_z) { - return ut_x + ut_z * UT_X_NUM; + return ut_x + ut_z * UT_X_NUM; } extern int mFI_BlockCheck(int block_x, int block_z) { - int num = mFI_GetBlockNum(block_x, block_z); + int num = mFI_GetBlockNum(block_x, block_z); - if (block_x < 0 || block_x >= mFI_GetBlockXMax() || block_z < 0 || block_z >= mFI_GetBlockZMax() || g_fdinfo->block_info[num].bg_info.bg_id.combination_type == 292) { - return FALSE; - } + if (block_x < 0 || block_x >= mFI_GetBlockXMax() || block_z < 0 || block_z >= mFI_GetBlockZMax() || + g_fdinfo->block_info[num].bg_info.bg_id.combination_type == 292) { + return FALSE; + } - return TRUE; + return TRUE; } extern int mFI_UtNumCheck(int ut_x, int ut_z, int bx_max, int bz_max) { - int res = TRUE; - int max_x = (bx_max * UT_X_NUM); - int max_z = (bz_max * UT_Z_NUM); + int res = TRUE; + int max_x = (bx_max * UT_X_NUM); + int max_z = (bz_max * UT_Z_NUM); - if (ut_x < 0 || ut_x >= max_x || ut_z < 0 || ut_z >= max_z) { - res = FALSE; - } + if (ut_x < 0 || ut_x >= max_x || ut_z < 0 || ut_z >= max_z) { + res = FALSE; + } - return res; + return res; } static int mFI_WposCheck(xyz_t wpos) { - int bx; - int bz; + int bx; + int bz; - return mFI_Wpos2BlockNum(&bx, &bz, wpos); + return mFI_Wpos2BlockNum(&bx, &bz, wpos); } extern int mFI_WposX2UtNumX(f32 wpos_x) { - return (int)(wpos_x / mFI_UT_WORLDSIZE_X_F); + return (int)(wpos_x / mFI_UT_WORLDSIZE_X_F); } extern int mFI_WposZ2UtNumZ(f32 wpos_z) { - return (int)(wpos_z / mFI_UT_WORLDSIZE_Z_F); + return (int)(wpos_z / mFI_UT_WORLDSIZE_Z_F); } extern int mFI_Wpos2UtNum(int* ut_x, int* ut_z, xyz_t wpos) { - *ut_x = (int)(wpos.x / mFI_UT_WORLDSIZE_X_F); - *ut_z = (int)(wpos.z / mFI_UT_WORLDSIZE_Z_F); + *ut_x = (int)(wpos.x / mFI_UT_WORLDSIZE_X_F); + *ut_z = (int)(wpos.z / mFI_UT_WORLDSIZE_Z_F); - if ( - wpos.x < 0.0f || wpos.x > (mFI_GetBlockXMax() * mFI_BK_WORLDSIZE_X_F) || - wpos.z < 0.0f || wpos.z > (mFI_GetBlockZMax() * mFI_BK_WORLDSIZE_Z_F) - ) { - return FALSE; - } + if (wpos.x < 0.0f || wpos.x > (mFI_GetBlockXMax() * mFI_BK_WORLDSIZE_X_F) || wpos.z < 0.0f || + wpos.z > (mFI_GetBlockZMax() * mFI_BK_WORLDSIZE_Z_F)) { + return FALSE; + } - return TRUE; + return TRUE; } extern int mFI_UtNum2CenterWpos(xyz_t* wpos, int ut_x, int ut_z) { - wpos->x = (f32)ut_x * mFI_UT_WORLDSIZE_X_F; - wpos->z = (f32)ut_z * mFI_UT_WORLDSIZE_Z_F; + wpos->x = (f32)ut_x * mFI_UT_WORLDSIZE_X_F; + wpos->z = (f32)ut_z * mFI_UT_WORLDSIZE_Z_F; - wpos->x += mFI_UT_WORLDSIZE_HALF_X_F; - wpos->z += mFI_UT_WORLDSIZE_HALF_Z_F; + wpos->x += mFI_UT_WORLDSIZE_HALF_X_F; + wpos->z += mFI_UT_WORLDSIZE_HALF_Z_F; - return mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()); + return mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()); } extern int mFI_Wpos2UtCenterWpos(xyz_t* wpos, xyz_t src_pos) { - f32 x = (int)(src_pos.x / mFI_UT_WORLDSIZE_X_F) * mFI_UT_WORLDSIZE_X; - f32 z = (int)(src_pos.z / mFI_UT_WORLDSIZE_Z_F) * mFI_UT_WORLDSIZE_Z; + f32 x = (int)(src_pos.x / mFI_UT_WORLDSIZE_X_F) * mFI_UT_WORLDSIZE_X; + f32 z = (int)(src_pos.z / mFI_UT_WORLDSIZE_Z_F) * mFI_UT_WORLDSIZE_Z; - wpos->x = x + mFI_UT_WORLDSIZE_HALF_Z_F; - wpos->y = src_pos.y; - wpos->z = z + mFI_UT_WORLDSIZE_HALF_Z_F; + wpos->x = x + mFI_UT_WORLDSIZE_HALF_Z_F; + wpos->y = src_pos.y; + wpos->z = z + mFI_UT_WORLDSIZE_HALF_Z_F; - return mFI_WposCheck(src_pos); + return mFI_WposCheck(src_pos); } extern int mFI_Wpos2UtNum_inBlock(int* ut_x, int* ut_z, xyz_t wpos) { - int res = FALSE; + int res = FALSE; - if ( - wpos.x >= 0.0f && wpos.x < ((f32)mFI_GetBlockXMax() * mFI_BK_WORLDSIZE_X_F) && - wpos.z >= 0.0f && wpos.z < ((f32)mFI_GetBlockZMax() * mFI_BK_WORLDSIZE_Z_F) - ) { + if (wpos.x >= 0.0f && wpos.x < ((f32)mFI_GetBlockXMax() * mFI_BK_WORLDSIZE_X_F) && wpos.z >= 0.0f && + wpos.z < ((f32)mFI_GetBlockZMax() * mFI_BK_WORLDSIZE_Z_F)) { + ut_x[0] = (int)(wpos.x / mFI_UT_WORLDSIZE_X_F); + ut_z[0] = (int)(wpos.z / mFI_UT_WORLDSIZE_Z_F); + + ut_x[0] &= 0xF; + ut_z[0] &= 0xF; + + res = TRUE; + } else { + ut_x[0] = 0; + ut_z[0] = 0; + } + + return res; +} + +extern int mFI_Wpos2BlockNum(int* bx, int* bz, xyz_t wpos) { + bx[0] = (int)(wpos.x / mFI_BK_WORLDSIZE_X_F); + bz[0] = (int)(wpos.z / mFI_BK_WORLDSIZE_Z_F); + + return mFI_BlockCheck(*bx, *bz); +} + +extern int mFI_Wpos2BkandUtNuminBlock(int* bx, int* bz, int* ut_x, int* ut_z, xyz_t wpos) { + bx[0] = (int)(wpos.x / mFI_BK_WORLDSIZE_X_F); + bz[0] = (int)(wpos.z / mFI_BK_WORLDSIZE_Z_F); ut_x[0] = (int)(wpos.x / mFI_UT_WORLDSIZE_X_F); ut_z[0] = (int)(wpos.z / mFI_UT_WORLDSIZE_Z_F); ut_x[0] &= 0xF; ut_z[0] &= 0xF; - res = TRUE; - } - else { - ut_x[0] = 0; - ut_z[0] = 0; - } - - return res; -} - -extern int mFI_Wpos2BlockNum(int* bx, int* bz, xyz_t wpos) { - bx[0] = (int)(wpos.x / mFI_BK_WORLDSIZE_X_F); - bz[0] = (int)(wpos.z / mFI_BK_WORLDSIZE_Z_F); - - return mFI_BlockCheck(*bx, *bz); -} - -extern int mFI_Wpos2BkandUtNuminBlock(int* bx, int* bz, int* ut_x, int* ut_z, xyz_t wpos) { - bx[0] = (int)(wpos.x / mFI_BK_WORLDSIZE_X_F); - bz[0] = (int)(wpos.z / mFI_BK_WORLDSIZE_Z_F); - ut_x[0] = (int)(wpos.x / mFI_UT_WORLDSIZE_X_F); - ut_z[0] = (int)(wpos.z / mFI_UT_WORLDSIZE_Z_F); - - ut_x[0] &= 0xF; - ut_z[0] &= 0xF; - - return mFI_BlockCheck(*bx, *bz); + return mFI_BlockCheck(*bx, *bz); } static int mFI_UtNum2BlockNum(int* bx, int* bz, int ut_x, int ut_z) { - if (ut_x < 0) { - ut_x -= (UT_X_NUM - 1); - } + if (ut_x < 0) { + ut_x -= (UT_X_NUM - 1); + } - if (ut_z < 0) { - ut_z -= (UT_Z_NUM - 1); - } + if (ut_z < 0) { + ut_z -= (UT_Z_NUM - 1); + } - bx[0] = ut_x / UT_X_NUM; - bz[0] = ut_z / UT_Z_NUM; + bx[0] = ut_x / UT_X_NUM; + bz[0] = ut_z / UT_Z_NUM; - return mFI_BlockCheck(bx[0], bz[0]); + return mFI_BlockCheck(bx[0], bz[0]); } static int mFI_GetUtNumInBK(int* bk_ut_x, int* bk_ut_z, int ut_x, int ut_z) { - int res = mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()); + int res = mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()); - if (res) { - bk_ut_x[0] = ut_x & 0xF; - bk_ut_z[0] = ut_z & 0xF; - } - else { - bk_ut_x[0] = 0; - bk_ut_z[0] = 0; - } + if (res) { + bk_ut_x[0] = ut_x & 0xF; + bk_ut_z[0] = ut_z & 0xF; + } else { + bk_ut_x[0] = 0; + bk_ut_z[0] = 0; + } - return res; + return res; } extern int mFI_WpostoLposInBK(xyz_t* lpos, xyz_t wpos) { - int bx; - int bz; - int res = mFI_Wpos2BlockNum(&bx, &bz, wpos); + int bx; + int bz; + int res = mFI_Wpos2BlockNum(&bx, &bz, wpos); - lpos->x = wpos.x - ((f32)bx * mFI_BK_WORLDSIZE_X_F); - lpos->y = wpos.y; - lpos->z = wpos.z - ((f32)bz * mFI_BK_WORLDSIZE_Z_F); - return res; + lpos->x = wpos.x - ((f32)bx * mFI_BK_WORLDSIZE_X_F); + lpos->y = wpos.y; + lpos->z = wpos.z - ((f32)bz * mFI_BK_WORLDSIZE_Z_F); + return res; } extern int mFI_LposInBKtoWpos(xyz_t* wpos, xyz_t lpos, int bx, int bz) { - wpos->x = lpos.x + (f32)(bx * mFI_BK_WORLDSIZE_X); - wpos->y = lpos.y; - wpos->z = lpos.z + (f32)(bz * mFI_BK_WORLDSIZE_Z); + wpos->x = lpos.x + (f32)(bx * mFI_BK_WORLDSIZE_X); + wpos->y = lpos.y; + wpos->z = lpos.z + (f32)(bz * mFI_BK_WORLDSIZE_Z); - return mFI_BlockCheck(bx, bz); + return mFI_BlockCheck(bx, bz); } extern int mFI_ScrollCheck(xyz_t wpos, u8 dir) { - int bx; - int bz; - - if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == FALSE) { - return FALSE; - } + int bx; + int bz; - switch (dir) { - case mFI_MOVEDIR_RIGHT: - bx++; - break; - case mFI_MOVEDIR_LEFT: - bx--; - break; - case mFI_MOVEDIR_UP: - bz--; - break; - case mFI_MOVEDIR_DOWN: - bz++; - break; - default: - return FALSE; - } + if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == FALSE) { + return FALSE; + } - return mFI_BlockCheck(bx, bz); + switch (dir) { + case mFI_MOVEDIR_RIGHT: + bx++; + break; + case mFI_MOVEDIR_LEFT: + bx--; + break; + case mFI_MOVEDIR_UP: + bz--; + break; + case mFI_MOVEDIR_DOWN: + bz++; + break; + default: + return FALSE; + } + + return mFI_BlockCheck(bx, bz); } extern int mFI_BkNum2WposXZ(f32* wpos_x, f32* wpos_z, int bx, int bz) { - int res = FALSE; + int res = FALSE; - wpos_x[0] = (f32)(bx * mFI_BK_WORLDSIZE_X); - wpos_z[0] = (f32)(bz * mFI_BK_WORLDSIZE_Z); + wpos_x[0] = (f32)(bx * mFI_BK_WORLDSIZE_X); + wpos_z[0] = (f32)(bz * mFI_BK_WORLDSIZE_Z); - if (mFI_CheckFieldData() == TRUE) { - res = mFI_BlockCheck(bx, bz); - } + if (mFI_CheckFieldData() == TRUE) { + res = mFI_BlockCheck(bx, bz); + } - return res; + return res; } extern void mFI_UtNum2PosXZInBk(f32* pos_x, f32* pos_z, int ut_x, int ut_z) { - pos_x[0] = (f32)(ut_x * mFI_UT_WORLDSIZE_X); - pos_z[0] = (f32)(ut_z * mFI_UT_WORLDSIZE_Z); + pos_x[0] = (f32)(ut_x * mFI_UT_WORLDSIZE_X); + pos_z[0] = (f32)(ut_z * mFI_UT_WORLDSIZE_Z); } extern void mFI_BkandUtNum2Wpos(xyz_t* wpos, int bx, int bz, int ut_x, int ut_z) { - f32 wpos_x; - f32 wpos_z; - f32 bpos_x; - f32 bpos_z; + f32 wpos_x; + f32 wpos_z; + f32 bpos_x; + f32 bpos_z; - mFI_BkNum2WposXZ(&wpos_x, &wpos_z, bx, bz); - mFI_UtNum2PosXZInBk(&bpos_x, &bpos_z, ut_x, ut_z); + mFI_BkNum2WposXZ(&wpos_x, &wpos_z, bx, bz); + mFI_UtNum2PosXZInBk(&bpos_x, &bpos_z, ut_x, ut_z); - wpos->x = wpos_x + bpos_x; - wpos->y = 0.0f; - wpos->z = wpos_z + bpos_z; + wpos->x = wpos_x + bpos_x; + wpos->y = 0.0f; + wpos->z = wpos_z + bpos_z; } extern void mFI_BkandUtNum2CenterWpos(xyz_t* wpos, int bx, int bz, int ut_x, int ut_z) { - mFI_BkandUtNum2Wpos(wpos, bx, bz, ut_x, ut_z); + mFI_BkandUtNum2Wpos(wpos, bx, bz, ut_x, ut_z); - wpos->x += mFI_UT_WORLDSIZE_HALF_X_F; - wpos->z += mFI_UT_WORLDSIZE_HALF_Z_F; + wpos->x += mFI_UT_WORLDSIZE_HALF_X_F; + wpos->z += mFI_UT_WORLDSIZE_HALF_Z_F; } extern mFM_field_draw_info_c* mFI_BGDisplayListTop() { - return g_fdinfo->bg_draw_info; + return g_fdinfo->bg_draw_info; } extern mFM_field_pal_c* mFI_GetFieldPal() { - return &g_fdinfo->field_palette; + return &g_fdinfo->field_palette; } extern int mFI_GetPlayerHouseFloorNo(int scene) { - int floor = -1; + int floor = -1; - switch (scene) { - case SCENE_MY_ROOM_S: - case SCENE_MY_ROOM_M: - case SCENE_MY_ROOM_L: - case SCENE_MY_ROOM_LL1: - case SCENE_COTTAGE_MY: - floor = 0; - break; + switch (scene) { + case SCENE_MY_ROOM_S: + case SCENE_MY_ROOM_M: + case SCENE_MY_ROOM_L: + case SCENE_MY_ROOM_LL1: + case SCENE_COTTAGE_MY: + floor = 0; + break; - case SCENE_MY_ROOM_LL2: - floor = 1; - break; + case SCENE_MY_ROOM_LL2: + floor = 1; + break; - case SCENE_MY_ROOM_BASEMENT_S: - case SCENE_MY_ROOM_BASEMENT_M: - case SCENE_MY_ROOM_BASEMENT_L: - case SCENE_MY_ROOM_BASEMENT_LL1: - floor = 2; - break; - } + case SCENE_MY_ROOM_BASEMENT_S: + case SCENE_MY_ROOM_BASEMENT_M: + case SCENE_MY_ROOM_BASEMENT_L: + case SCENE_MY_ROOM_BASEMENT_LL1: + floor = 2; + break; + } - return floor; + return floor; } extern int mFI_GetNowPlayerHouseFloorNo() { - return mFI_GetPlayerHouseFloorNo(Save_Get(scene_no)); + return mFI_GetPlayerHouseFloorNo(Save_Get(scene_no)); } typedef struct register_bg_info_s { - int dma_active; - int bg_num; - u32 unused_rom_start; - u32 unused_rom_size; + int dma_active; + int bg_num; + u32 unused_rom_start; + u32 unused_rom_size; } mFI_register_bg_info_c; static mFI_register_bg_info_c l_register_bg_info[mFM_VISIBLE_BLOCK_NUM]; static void mFI_ClearRegisterBgInfo(mFI_register_bg_info_c* bg_info) { - bg_info->dma_active = FALSE; - bg_info->bg_num = -1; - bg_info->unused_rom_start = 0; - bg_info->unused_rom_size = 0; + bg_info->dma_active = FALSE; + bg_info->bg_num = -1; + bg_info->unused_rom_start = 0; + bg_info->unused_rom_size = 0; } static void mFI_ClearRegisterBgInfoIdx(int idx) { - mFI_ClearRegisterBgInfo(&l_register_bg_info[idx]); + mFI_ClearRegisterBgInfo(&l_register_bg_info[idx]); } extern void mFI_InitRegisterBgInfo() { - int i; + int i; - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - mFI_ClearRegisterBgInfo(&l_register_bg_info[i]); - } + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + mFI_ClearRegisterBgInfo(&l_register_bg_info[i]); + } } static int mFI_CheckFreeRegisterBgInfo(mFI_register_bg_info_c* bg_info) { - int res = FALSE; + int res = FALSE; - if (bg_info->bg_num == -1) { - res = TRUE; - } + if (bg_info->bg_num == -1) { + res = TRUE; + } - return res; + return res; } static int mFI_GetFreeRegisterBgInfo() { - mFI_register_bg_info_c* bg_info = l_register_bg_info; - int res = -1; - int i; + mFI_register_bg_info_c* bg_info = l_register_bg_info; + int res = -1; + int i; - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (mFI_CheckFreeRegisterBgInfo(bg_info)) { - res = i; - break; + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (mFI_CheckFreeRegisterBgInfo(bg_info)) { + res = i; + break; + } + + bg_info++; } - - bg_info++; - } - return res; + return res; } static void mFI_SetRegisterBgInfo(int bg_num, u32 rom_start, u32 rom_size) { - mFI_register_bg_info_c* bg_info = l_register_bg_info + bg_num; + mFI_register_bg_info_c* bg_info = l_register_bg_info + bg_num; - bg_info->dma_active = TRUE; - bg_info->bg_num = bg_num; - bg_info->unused_rom_start = rom_start; - bg_info->unused_rom_size = rom_size; + bg_info->dma_active = TRUE; + bg_info->bg_num = bg_num; + bg_info->unused_rom_start = rom_start; + bg_info->unused_rom_size = rom_size; } static int mFI_CheckFinishBgDma(int bg_num) { - int res = FALSE; + int res = FALSE; - if (l_register_bg_info[bg_num].dma_active == FALSE && l_register_bg_info[bg_num].bg_num != -1) { - res = TRUE; - } + if (l_register_bg_info[bg_num].dma_active == FALSE && l_register_bg_info[bg_num].bg_num != -1) { + res = TRUE; + } - return res; + return res; } static void mFI_DmaBg_sub(mFI_register_bg_info_c* bg_info) { - g_fdinfo->bg_draw_info[bg_info->bg_num].dma_loaded = TRUE; + g_fdinfo->bg_draw_info[bg_info->bg_num].dma_loaded = TRUE; } static void mFI_DmaBg() { - mFI_register_bg_info_c* bg_info = l_register_bg_info; - int i; + mFI_register_bg_info_c* bg_info = l_register_bg_info; + int i; - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (bg_info->dma_active == TRUE) { - mFI_DmaBg_sub(bg_info); - mFI_BornItemON(); - Common_Set(remove_cut_tree_info_bitfield, Common_Get(remove_cut_tree_info_bitfield) | (1 << bg_info->bg_num)); - bg_info->dma_active = FALSE; - - break; + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (bg_info->dma_active == TRUE) { + mFI_DmaBg_sub(bg_info); + mFI_BornItemON(); + Common_Set(remove_cut_tree_info_bitfield, + Common_Get(remove_cut_tree_info_bitfield) | (1 << bg_info->bg_num)); + bg_info->dma_active = FALSE; + + break; + } + + bg_info++; } - - bg_info++; - } } extern int mFI_CheckBgDma(int bx, int bz) { - int res = FALSE; - int i; - - if (mFI_CheckFieldData() == TRUE) { - mFM_field_draw_info_c* draw_info = mFI_BGDisplayListTop(); + int res = FALSE; + int i; - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (draw_info->block_x == bx && draw_info->block_z == bz && draw_info->dma_loaded) { - res = TRUE; + if (mFI_CheckFieldData() == TRUE) { + mFM_field_draw_info_c* draw_info = mFI_BGDisplayListTop(); - break; - } - - draw_info++; + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (draw_info->block_x == bx && draw_info->block_z == bz && draw_info->dma_loaded) { + res = TRUE; + + break; + } + + draw_info++; + } } - } - return res; + return res; } extern f32 mFI_UtNum2BaseHeight(int ut_x, int ut_z) { - int bx; - int bz; - int num; + int bx; + int bz; + int num; - if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { - return 10000.0f; - } + if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { + return 10000.0f; + } - num = mFI_GetBlockNum(bx, bz); - return (f32)((int)g_fdinfo->block_info[num].bg_info.bg_id.height * (3 * mFI_UT_WORLDSIZE_X)); + num = mFI_GetBlockNum(bx, bz); + return (f32)((int)g_fdinfo->block_info[num].bg_info.bg_id.height * (3 * mFI_UT_WORLDSIZE_X)); } extern f32 mFI_BkNum2BaseHeight(int bx, int bz) { - int num; + int num; - if (mFI_BlockCheck(bx, bz) == FALSE) { - return 10000.0f; - } + if (mFI_BlockCheck(bx, bz) == FALSE) { + return 10000.0f; + } - num = mFI_GetBlockNum(bx, bz); - return (f32)((int)g_fdinfo->block_info[num].bg_info.bg_id.height * (3 * mFI_UT_WORLDSIZE_X)); + num = mFI_GetBlockNum(bx, bz); + return (f32)((int)g_fdinfo->block_info[num].bg_info.bg_id.height * (3 * mFI_UT_WORLDSIZE_X)); } extern u8 mFI_BkNum2BlockType(int bx, int bz) { - u8 type = 39; + u8 type = 39; - if (mFI_CheckFieldData() && bx >= 0 && bx < BLOCK_X_NUM && bz >= 0 && bz < BLOCK_Z_NUM) { - int idx = (bz * BLOCK_X_NUM) + bx; - - type = g_block_type_p[idx]; - } + if (mFI_CheckFieldData() && bx >= 0 && bx < BLOCK_X_NUM && bz >= 0 && bz < BLOCK_Z_NUM) { + int idx = (bz * BLOCK_X_NUM) + bx; - return type; + type = g_block_type_p[idx]; + } + + return type; } // 25% static int mFI_GetPuleTypeIdx(u8 type) { - u32 kind = mRF_Type2BlockInfo(type); - int idx = -1; + u32 kind = mRF_Type2BlockInfo(type); + int idx = -1; - if ((kind & mRF_BLOCKKIND_POOL) == mRF_BLOCKKIND_POOL) { - idx = type - 69; - } + if ((kind & mRF_BLOCKKIND_POOL) == mRF_BLOCKKIND_POOL) { + idx = type - 69; + } - return idx; + return idx; } extern int mFI_GetPuleIdx() { - int bx; - int bz; - u8 type; + int bx; + int bz; + u8 type; - mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_POOL); - type = mFI_BkNum2BlockType(bx, bz); - return mFI_GetPuleTypeIdx(type); + mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_POOL); + type = mFI_BkNum2BlockType(bx, bz); + return mFI_GetPuleTypeIdx(type); } extern u32 mFI_BkNum2BlockKind(int bx, int bz) { - u32 kind = mRF_BLOCKKIND_NONE; + u32 kind = mRF_BLOCKKIND_NONE; - if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); + if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); - kind = g_fdinfo->block_info[num].bg_info.block_kind; - } + kind = g_fdinfo->block_info[num].bg_info.block_kind; + } - return kind; + return kind; } extern int mFI_CheckBlockKind(int bx, int bz, u32 block_kind) { - int res = FALSE; - u32 kind = mFI_BkNum2BlockKind(bx, bz); + int res = FALSE; + u32 kind = mFI_BkNum2BlockKind(bx, bz); - kind &= block_kind; - if (block_kind == kind) { - res = TRUE; - } + kind &= block_kind; + if (block_kind == kind) { + res = TRUE; + } - return res; + return res; } extern int mFI_CheckBlockKind_OR(int bx, int bz, u32 block_kind_OR) { - int res = FALSE; - u32 kind = mFI_BkNum2BlockKind(bx, bz); - - kind &= block_kind_OR; - if (kind != mRF_BLOCKKIND_NONE) { - res = TRUE; - } + int res = FALSE; + u32 kind = mFI_BkNum2BlockKind(bx, bz); - return res; + kind &= block_kind_OR; + if (kind != mRF_BLOCKKIND_NONE) { + res = TRUE; + } + + return res; } extern int mFI_BlockKind2BkNum(int* bx, int* bz, u32 kind) { - u32* kind_p = (u32*)g_block_kind_p; - int res = FALSE; - int i; + u32* kind_p = (u32*)g_block_kind_p; + int res = FALSE; + int i; - bx[0] = 0; - bz[0] = 0; - - if (kind_p != NULL) { - for (i = 0; i < BLOCK_TOTAL_NUM; i++) { - u32 k = kind_p[0]; + bx[0] = 0; + bz[0] = 0; - k &= kind; - if (kind == k) { - bx[0] = i % BLOCK_X_NUM; - bz[0] = i / BLOCK_X_NUM; - res = TRUE; + if (kind_p != NULL) { + for (i = 0; i < BLOCK_TOTAL_NUM; i++) { + u32 k = kind_p[0]; - break; - } + k &= kind; + if (kind == k) { + bx[0] = i % BLOCK_X_NUM; + bz[0] = i / BLOCK_X_NUM; + res = TRUE; - kind_p++; + break; + } + + kind_p++; + } } - } - return res; + return res; } extern void mFI_GetSpecialBlockNum(int* block_pos, u32* kinds, int count) { - int i; + int i; - for (i = 0; i < count; i++) { - mFI_BlockKind2BkNum(block_pos + 0, block_pos + 1, kinds[0]); - kinds++; - block_pos += 2; - } + for (i = 0; i < count; i++) { + mFI_BlockKind2BkNum(block_pos + 0, block_pos + 1, kinds[0]); + kinds++; + block_pos += 2; + } } extern void mFI_GetIslandBlockNumX(int* island_x_blocks) { - u32* kind_p = (u32*)g_block_kind_p; - int found_num = 0; - int i; + u32* kind_p = (u32*)g_block_kind_p; + int found_num = 0; + int i; - if (island_x_blocks != NULL && kind_p != NULL) { - bzero(island_x_blocks, 2 * sizeof(int)); + if (island_x_blocks != NULL && kind_p != NULL) { + bzero(island_x_blocks, 2 * sizeof(int)); - kind_p += mISL_BLOCK_Z * BLOCK_X_NUM; - for (i = 0; i < BLOCK_X_NUM; i++) { - if ((kind_p[0] & mRF_BLOCKKIND_ISLAND) == mRF_BLOCKKIND_ISLAND) { - island_x_blocks[0] = i; - island_x_blocks++; - found_num++; - } + kind_p += mISL_BLOCK_Z * BLOCK_X_NUM; + for (i = 0; i < BLOCK_X_NUM; i++) { + if ((kind_p[0] & mRF_BLOCKKIND_ISLAND) == mRF_BLOCKKIND_ISLAND) { + island_x_blocks[0] = i; + island_x_blocks++; + found_num++; + } - if (found_num >= mISL_FG_BLOCK_X_NUM) { - break; - } + if (found_num >= mISL_FG_BLOCK_X_NUM) { + break; + } - kind_p++; + kind_p++; + } } - } } extern mCoBG_Collision_u* mFI_GetBkNum2ColTop(int bx, int bz) { - mCoBG_Collision_u* col = NULL; + mCoBG_Collision_u* col = NULL; - if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); + if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); - col = (mCoBG_Collision_u*)g_fdinfo->block_info[num].bg_info.collision; - } + col = (mCoBG_Collision_u*)g_fdinfo->block_info[num].bg_info.collision; + } - return col; + return col; } extern mCoBG_Collision_u* mFI_UtNum2UtCol(int ut_x, int ut_z) { - int b_ut_x; - int b_ut_z; - int bx; - int bz; + int b_ut_x; + int b_ut_z; + int bx; + int bz; - if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { - return &l_edge_ut; - } - else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { - return &l_edge_ut; - } - else { - mFM_bg_info_c* bg_info; - mCoBG_Collision_u* col; - int num; - int idx; + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { + return &l_edge_ut; + } else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { + return &l_edge_ut; + } else { + mFM_bg_info_c* bg_info; + mCoBG_Collision_u* col; + int num; + int idx; - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - num = mFI_GetBlockNum(bx, bz); - idx = b_ut_z * UT_X_NUM + b_ut_x; - col = (mCoBG_Collision_u*)g_fdinfo->block_info[num].bg_info.collision; - col += idx; - return col; - } + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + num = mFI_GetBlockNum(bx, bz); + idx = b_ut_z * UT_X_NUM + b_ut_x; + col = (mCoBG_Collision_u*)g_fdinfo->block_info[num].bg_info.collision; + col += idx; + return col; + } } extern void mFI_ClearColKeep() { - int i; + int i; - for (i = 0; i < mFI_NUM_COL_KEEP; i++) { - l_keepcld[i].assumed_ut_x = 0xFF; - l_keepcld[i].assumed_ut_z = 0xFF; - l_keepcld[i].unk_C = 0; - } + for (i = 0; i < mFI_NUM_COL_KEEP; i++) { + l_keepcld[i].assumed_ut_x = 0xFF; + l_keepcld[i].assumed_ut_z = 0xFF; + l_keepcld[i].unk_C = 0; + } } /* @unused mFI_GetUtColGroup */ @@ -895,723 +853,699 @@ extern void mFI_ClearColKeep() { /* @unused mFI_UtNum2UtColKeep */ extern mCoBG_Collision_u* mFI_GetUnitCol(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { - return &l_edge_ut; - } - else { - return mFI_UtNum2UtCol(ut_x, ut_z); - } + if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { + return &l_edge_ut; + } else { + return mFI_UtNum2UtCol(ut_x, ut_z); + } } extern u8 mFI_UtNum2UtKeepH(int ut_x, int ut_z) { - int b_ut_x; - int b_ut_z; - int bx; - int bz; + int b_ut_x; + int b_ut_z; + int bx; + int bz; - if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { - return mCoBG_HEIGHT_MAX; - } - else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { - return mCoBG_HEIGHT_MAX; - } - else { - mFM_block_info_c* block; - u8* keep_p; - int num; - int idx; + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { + return mCoBG_HEIGHT_MAX; + } else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { + return mCoBG_HEIGHT_MAX; + } else { + mFM_block_info_c* block; + u8* keep_p; + int num; + int idx; - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - num = mFI_GetBlockNum(bx, bz); - keep_p = (u8*)g_fdinfo->block_info[num].bg_info.keep_h; - idx = b_ut_z * UT_Z_NUM + b_ut_x; - keep_p += b_ut_z * UT_Z_NUM + b_ut_x; - return keep_p[0]; - } + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + num = mFI_GetBlockNum(bx, bz); + keep_p = (u8*)g_fdinfo->block_info[num].bg_info.keep_h; + idx = b_ut_z * UT_Z_NUM + b_ut_x; + keep_p += b_ut_z * UT_Z_NUM + b_ut_x; + return keep_p[0]; + } } extern mFM_bg_sound_source_c* mFI_GetSoundSourcePBlockNum(int bx, int bz) { - mFM_bg_sound_source_c* ss = NULL; + mFM_bg_sound_source_c* ss = NULL; - if (mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); - ss = g_fdinfo->block_info[num].bg_info.sound_source; - } + if (mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); + ss = g_fdinfo->block_info[num].bg_info.sound_source; + } - return ss; + return ss; } extern Gfx* mFI_GetBGDisplayListRom(int bx, int bz) { - Gfx* gfx; - int num = mFI_GetBlockNum(bx, bz); + Gfx* gfx; + int num = mFI_GetBlockNum(bx, bz); - if (mFI_BlockCheck(bx, bz) == FALSE) { - gfx = NULL; - } - else { - gfx = g_fdinfo->block_info[num].bg_info.opaque_gfx; - } + if (mFI_BlockCheck(bx, bz) == FALSE) { + gfx = NULL; + } else { + gfx = g_fdinfo->block_info[num].bg_info.opaque_gfx; + } - return gfx; + return gfx; } extern Gfx* mFI_GetBGDisplayListRom_XLU(int bx, int bz) { - Gfx* gfx; - int num = mFI_GetBlockNum(bx, bz); + Gfx* gfx; + int num = mFI_GetBlockNum(bx, bz); - if (mFI_BlockCheck(bx, bz) == FALSE) { - gfx = NULL; - } - else { - gfx = g_fdinfo->block_info[num].bg_info.translucent_gfx; - } + if (mFI_BlockCheck(bx, bz) == FALSE) { + gfx = NULL; + } else { + gfx = g_fdinfo->block_info[num].bg_info.translucent_gfx; + } - return gfx; + return gfx; } extern EVW_ANIME_DATA* mFI_GetBGTexAnimInfo(s8* anim_num, int bx, int bz) { - EVW_ANIME_DATA* anime; - int num = mFI_GetBlockNum(bx, bz); + EVW_ANIME_DATA* anime; + int num = mFI_GetBlockNum(bx, bz); - if (mFI_BlockCheck(bx, bz) == FALSE) { - anime = NULL; - anim_num[0] = 0; - } - else { - anime = g_fdinfo->block_info[num].bg_info.animation; - anim_num[0] = g_fdinfo->block_info[num].bg_info.animation_count; - } + if (mFI_BlockCheck(bx, bz) == FALSE) { + anime = NULL; + anim_num[0] = 0; + } else { + anime = g_fdinfo->block_info[num].bg_info.animation; + anim_num[0] = g_fdinfo->block_info[num].bg_info.animation_count; + } - return anime; + return anime; } static int mFI_BGDispMatch(int* idx, int bx, int bz) { - int max = g_fdinfo->bg_num; - int res = FALSE; - int i; + int max = g_fdinfo->bg_num; + int res = FALSE; + int i; - for (i = 0; i < max; i++) { - idx[0] = i; - - if (g_fdinfo->bg_draw_info[i].block_x == bx && g_fdinfo->bg_draw_info[i].block_z == bz) { - res = TRUE; - break; + for (i = 0; i < max; i++) { + idx[0] = i; + + if (g_fdinfo->bg_draw_info[i].block_x == bx && g_fdinfo->bg_draw_info[i].block_z == bz) { + res = TRUE; + break; + } } - } - return res; + return res; } static int mFI_SearchNullDisp(int* idx) { - int res = FALSE; - int free_idx = mFI_GetFreeRegisterBgInfo(); + int res = FALSE; + int free_idx = mFI_GetFreeRegisterBgInfo(); - if (free_idx != -1) { - idx[0] = free_idx; - res = TRUE; - } - else { - idx[0] = g_fdinfo->bg_num; - } + if (free_idx != -1) { + idx[0] = free_idx; + res = TRUE; + } else { + idx[0] = g_fdinfo->bg_num; + } - return res; + return res; } static void mFI_BGDispMake(u8* disp_bitfield, int bx, int bz) { - int num = mFI_GetBlockNum(bx, bz); - int idx; - - if (mFI_BGDispMatch(&idx, bx, bz) == FALSE) { - if (mFI_SearchNullDisp(&idx)) { - mFI_SetRegisterBgInfo(idx, g_fdinfo->block_info[num].bg_info.rom_start_addr, g_fdinfo->block_info[num].bg_info.rom_size); - g_fdinfo->bg_draw_info[idx].block_x = bx; - g_fdinfo->bg_draw_info[idx].block_z = bz; - disp_bitfield[0] |= (1 << idx); + int num = mFI_GetBlockNum(bx, bz); + int idx; + + if (mFI_BGDispMatch(&idx, bx, bz) == FALSE) { + if (mFI_SearchNullDisp(&idx)) { + mFI_SetRegisterBgInfo(idx, g_fdinfo->block_info[num].bg_info.rom_start_addr, + g_fdinfo->block_info[num].bg_info.rom_size); + g_fdinfo->bg_draw_info[idx].block_x = bx; + g_fdinfo->bg_draw_info[idx].block_z = bz; + disp_bitfield[0] |= (1 << idx); + } + } else { + disp_bitfield[0] |= (1 << idx); } - } - else { - disp_bitfield[0] |= (1 << idx); - } } typedef struct block_area_info_s { - int initialized; - int _04; - f32 area[6]; + int initialized; + int _04; + f32 area[6]; } mFI_block_area_info_c; static mFI_block_area_info_c l_barea; extern void mFI_InitAreaInfo() { - static f32 area_table[6] = { - /* X position */ - 280.0f, /* x = [0, 6] */ - 360.0f, /* x = [7, 8] */ - 640.0f, /* x = [9, 15] */ + static f32 area_table[6] = { + /* X position */ + 280.0f, /* x = [0, 6] */ + 360.0f, /* x = [7, 8] */ + 640.0f, /* x = [9, 15] */ - /* Z position */ - 380.0f, /* z = [0, 9.5) */ - 400.0f, /* z = [9.5, 10)*/ - 640.0f /* z = [10, 15] */ - }; + /* Z position */ + 380.0f, /* z = [0, 9.5) */ + 400.0f, /* z = [9.5, 10)*/ + 640.0f /* z = [10, 15] */ + }; - int i; + int i; - l_barea.initialized = TRUE; - l_barea._04 = 0; + l_barea.initialized = TRUE; + l_barea._04 = 0; - for (i = 0; i < 6; i++) { - l_barea.area[i] = area_table[i]; - } + for (i = 0; i < 6; i++) { + l_barea.area[i] = area_table[i]; + } } static void mFI_WhereisInBlock(u8* pos_bitfield, xyz_t wpos) { - xyz_t lpos; - int i; + xyz_t lpos; + int i; - mFI_WpostoLposInBK(&lpos, wpos); + mFI_WpostoLposInBK(&lpos, wpos); - if (lpos.x >= 0.0f) { - for (i = 0; i < 3; i++) { - if (lpos.x < l_barea.area[i]) { - pos_bitfield[0] |= (1 << i); - break; - } + if (lpos.x >= 0.0f) { + for (i = 0; i < 3; i++) { + if (lpos.x < l_barea.area[i]) { + pos_bitfield[0] |= (1 << i); + break; + } + } } - } - if (lpos.z >= 0.0f) { - for (i = 3; i < 6; i++) { - if (lpos.z < l_barea.area[i]) { - pos_bitfield[0] |= (1 << i); - break; - } + if (lpos.z >= 0.0f) { + for (i = 3; i < 6; i++) { + if (lpos.z < l_barea.area[i]) { + pos_bitfield[0] |= (1 << i); + break; + } + } } - } } extern void mFI_BGDisplayListRefresh(xyz_t wpos) { - u8 disp_bitfield; - u8 where_bitfield; - int bx; - int bz; - int i; - int nearest_bx; - int nearest_bz; - int num; - int temp; + u8 disp_bitfield; + u8 where_bitfield; + int bx; + int bz; + int i; + int nearest_bx; + int nearest_bz; + int num; + int temp; - disp_bitfield = 0; - where_bitfield = 0; - Common_Set(remove_cut_tree_info_bitfield, 0); - if (mFI_Wpos2BlockNum(&bx, &bz, wpos)) { - num = mFI_GetBlockNum(bx, bz); + disp_bitfield = 0; + where_bitfield = 0; + Common_Set(remove_cut_tree_info_bitfield, 0); + if (mFI_Wpos2BlockNum(&bx, &bz, wpos)) { + num = mFI_GetBlockNum(bx, bz); - if (g_fdinfo->block_info[num].bg_info.bg_id.combination_type != 292) { - mFI_BGDispMake(&disp_bitfield, bx, bz); - } - } - - mFI_WhereisInBlock(&where_bitfield, wpos); - - /* Check if the acres to the immediate left or right should be displayed */ - nearest_bx = bx - 1; - if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, bz); - } - else { - nearest_bx = bx + 1; - if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, bz); - } - } - - nearest_bz = bz - 1; - if (((where_bitfield >> 3) & 1) != 0 && mFI_BlockCheck(bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, bx, nearest_bz); /* display acre immediately above */ - - nearest_bx = bx - 1; - if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre above and to the left */ - } - else { - nearest_bx = bx + 1; - if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre above and to the right */ - } - } - } - else { - nearest_bz = bz + 1; - - if (((where_bitfield >> 5) & 1) != 0 && mFI_BlockCheck(bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, bx, nearest_bz); /* display acre immediately below */ - - nearest_bx = bx - 1; - if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre below and to the left */ - } - else { - nearest_bx = bx + 1; - if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { - mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre below and to the right */ + if (g_fdinfo->block_info[num].bg_info.bg_id.combination_type != 292) { + mFI_BGDispMake(&disp_bitfield, bx, bz); } - } } - } - - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (((disp_bitfield >> i) & 1) != 1) { - g_fdinfo->bg_draw_info[i].dma_loaded = FALSE; - g_fdinfo->bg_draw_info[i].block_x = 0xFF; - g_fdinfo->bg_draw_info[i].block_z = 0xFF; - mFI_ClearRegisterBgInfoIdx(i); + + mFI_WhereisInBlock(&where_bitfield, wpos); + + /* Check if the acres to the immediate left or right should be displayed */ + nearest_bx = bx - 1; + if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, bz); + } else { + nearest_bx = bx + 1; + if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, bz); + } + } + + nearest_bz = bz - 1; + if (((where_bitfield >> 3) & 1) != 0 && mFI_BlockCheck(bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, bx, nearest_bz); /* display acre immediately above */ + + nearest_bx = bx - 1; + if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre above and to the left */ + } else { + nearest_bx = bx + 1; + if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre above and to the right */ + } + } + } else { + nearest_bz = bz + 1; + + if (((where_bitfield >> 5) & 1) != 0 && mFI_BlockCheck(bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, bx, nearest_bz); /* display acre immediately below */ + + nearest_bx = bx - 1; + if ((where_bitfield & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre below and to the left */ + } else { + nearest_bx = bx + 1; + if (((where_bitfield >> 2) & 1) != 0 && mFI_BlockCheck(nearest_bx, nearest_bz)) { + mFI_BGDispMake(&disp_bitfield, nearest_bx, nearest_bz); /* display acre below and to the right */ + } + } + } + } + + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (((disp_bitfield >> i) & 1) != 1) { + g_fdinfo->bg_draw_info[i].dma_loaded = FALSE; + g_fdinfo->bg_draw_info[i].block_x = 0xFF; + g_fdinfo->bg_draw_info[i].block_z = 0xFF; + mFI_ClearRegisterBgInfoIdx(i); + } } - } } static u32 l_mfi_player_bk_kind; static void mFI_SetPlayerBlockKind(xyz_t wpos) { - u32* dst = &l_mfi_player_bk_kind; - int bx; - int bz; + u32* dst = &l_mfi_player_bk_kind; + int bx; + int bz; - dst[0] = mRF_BLOCKKIND_NONE; - - if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == TRUE) { - dst[0] = mFI_BkNum2BlockKind(bx, bz); - } + dst[0] = mRF_BLOCKKIND_NONE; + + if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == TRUE) { + dst[0] = mFI_BkNum2BlockKind(bx, bz); + } } extern int mFI_CheckInIsland() { - int res = FALSE; + int res = FALSE; - if ((l_mfi_player_bk_kind & mRF_BLOCKKIND_OCEAN) || Save_Get(scene_no) == SCENE_COTTAGE_MY || Save_Get(scene_no) == SCENE_COTTAGE_NPC) { - res = TRUE; - } + if ((l_mfi_player_bk_kind & mRF_BLOCKKIND_OCEAN) || Save_Get(scene_no) == SCENE_COTTAGE_MY || + Save_Get(scene_no) == SCENE_COTTAGE_NPC) { + res = TRUE; + } - return res; + return res; } extern int mFI_CheckInJustIslandOutdoor() { - if (Save_Get(scene_no) == SCENE_FG && (l_mfi_player_bk_kind & mRF_BLOCKKIND_ISLAND)) { - return TRUE; - } + if (Save_Get(scene_no) == SCENE_FG && (l_mfi_player_bk_kind & mRF_BLOCKKIND_ISLAND)) { + return TRUE; + } - return FALSE; + return FALSE; } extern u32 mFI_CheckPlayerBlockInfo() { - return l_mfi_player_bk_kind; + return l_mfi_player_bk_kind; } extern mActor_name_t* mFI_BkNumtoUtFGTop(int bx, int bz) { - mActor_name_t* fg_top = NULL; + mActor_name_t* fg_top = NULL; - if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); + if (mFI_CheckFieldData() && mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); - fg_top = g_fdinfo->block_info[num].fg_info.items_p; - } + fg_top = g_fdinfo->block_info[num].fg_info.items_p; + } - return fg_top; + return fg_top; } extern mActor_name_t* mFI_BkNum2UtFGTop_layer(int bx, int bz, int layer) { - mActor_name_t* fg_layer_top = NULL; + mActor_name_t* fg_layer_top = NULL; - if (mFI_CheckFieldData() && g_fdinfo->fg2_p != NULL && bx == 0 && bz == 0) { - if (layer == 0) { - fg_layer_top = mFI_BkNumtoUtFGTop(bx, bz); + if (mFI_CheckFieldData() && g_fdinfo->fg2_p != NULL && bx == 0 && bz == 0) { + if (layer == 0) { + fg_layer_top = mFI_BkNumtoUtFGTop(bx, bz); + } else if (layer > 0 && layer < mHm_LAYER_NUM) { + fg_layer_top = g_fdinfo->fg2_p[layer - 1]; + } } - else if (layer > 0 && layer < mHm_LAYER_NUM) { - fg_layer_top = g_fdinfo->fg2_p[layer - 1]; - } - } - return fg_layer_top; + return fg_layer_top; } extern mActor_name_t* mFI_UtNum2UtFG(int ut_x, int ut_z) { - int bx; - int bz; + int bx; + int bz; - if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { - return NULL; - } - else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { - return NULL; - } - else { - int b_ut_x; - int b_ut_z; - int num; - mActor_name_t* fg_p; + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { + return NULL; + } else if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { + return NULL; + } else { + int b_ut_x; + int b_ut_z; + int num; + mActor_name_t* fg_p; - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - num = mFI_GetBlockNum(bx, bz); - fg_p = g_fdinfo->block_info[num].fg_info.items_p; + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + num = mFI_GetBlockNum(bx, bz); + fg_p = g_fdinfo->block_info[num].fg_info.items_p; - if (fg_p == NULL) { - return NULL; + if (fg_p == NULL) { + return NULL; + } else { + int idx = b_ut_z * UT_X_NUM + b_ut_x; + fg_p += idx; + return fg_p; + } } - else { - int idx = b_ut_z * UT_X_NUM + b_ut_x; - fg_p += idx; - return fg_p; - } - } } static mActor_name_t* mFI_UtNum2UtFG2(int ut_x, int ut_z) { - mActor_name_t* fg2 = NULL; - int bx; - int bz; - int b_ut_x; - int b_ut_z; + mActor_name_t* fg2 = NULL; + int bx; + int bz; + int b_ut_x; + int b_ut_z; - if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) && mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z)) { - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - fg2 = mFI_BkNum2UtFGTop_layer(bx, bz, 1); + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) && + mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z)) { + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + fg2 = mFI_BkNum2UtFGTop_layer(bx, bz, 1); - if (fg2 != NULL) { - int idx = b_ut_z * UT_Z_NUM + b_ut_x; - fg2 += idx; + if (fg2 != NULL) { + int idx = b_ut_z * UT_Z_NUM + b_ut_x; + fg2 += idx; + } } - } - return fg2; + return fg2; } extern mActor_name_t* mFI_GetUnitFG(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { - return NULL; - } - else { - return mFI_UtNum2UtFG(ut_x, ut_z); - } + if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { + return NULL; + } else { + return mFI_UtNum2UtFG(ut_x, ut_z); + } } extern mActor_name_t* mFI_GetUnitFG2(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { - return NULL; - } - else { - return mFI_UtNum2UtFG2(ut_x, ut_z); - } + if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { + return NULL; + } else { + return mFI_UtNum2UtFG2(ut_x, ut_z); + } } extern int mFI_GetBlockUtNum2FG(mActor_name_t* item, int bx, int bz, int ut_x, int ut_z) { - int res = FALSE; + int res = FALSE; - if ( - mFI_BlockCheck(bx, bz) && - (ut_x >= 0 && ut_x < UT_X_NUM) && - (ut_z >= 0 && ut_z < UT_Z_NUM) - ) { - int num = mFI_GetBlockNum(bx, bz); - int ut_num = mFI_GetUtNum(ut_x, ut_z); + if (mFI_BlockCheck(bx, bz) && (ut_x >= 0 && ut_x < UT_X_NUM) && (ut_z >= 0 && ut_z < UT_Z_NUM)) { + int num = mFI_GetBlockNum(bx, bz); + int ut_num = mFI_GetUtNum(ut_x, ut_z); - res = TRUE; - item[0] = g_fdinfo->block_info[num].fg_info.items_p[ut_num]; - } - else { - item[0] = RSV_NO; - } + res = TRUE; + item[0] = g_fdinfo->block_info[num].fg_info.items_p[ut_num]; + } else { + item[0] = RSV_NO; + } - return res; + return res; } extern int mFI_BlockUtNumtoFGSet(mActor_name_t item, int bx, int bz, int ut_x, int ut_z) { - int res = FALSE; - mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + int res = FALSE; + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); - if ( - fg_p != NULL && - (ut_x >= 0 && ut_x < UT_X_NUM) && - (ut_z >= 0 && ut_z < UT_Z_NUM) - ) { - int ut_num = mFI_GetUtNum(ut_x, ut_z); - - res = TRUE; - fg_p[ut_num] = item; - } + if (fg_p != NULL && (ut_x >= 0 && ut_x < UT_X_NUM) && (ut_z >= 0 && ut_z < UT_Z_NUM)) { + int ut_num = mFI_GetUtNum(ut_x, ut_z); - return res; + res = TRUE; + fg_p[ut_num] = item; + } + + return res; } extern int mFI_UtNumtoFGSet_common(mActor_name_t item, int ut_x, int ut_z, int update) { - int bx; - int bz; - int b_ut_x; - int b_ut_z; - int block_num; - int ut_num; + int bx; + int bz; + int b_ut_x; + int b_ut_z; + int block_num; + int ut_num; - if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { - return FALSE; - } + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == FALSE) { + return FALSE; + } - if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { - return FALSE; - } + if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == FALSE) { + return FALSE; + } - block_num = mFI_GetBlockNum(bx, bz); - if (g_fdinfo->block_info[block_num].fg_info.fg_id == 203) { - return FALSE; - } + block_num = mFI_GetBlockNum(bx, bz); + if (g_fdinfo->block_info[block_num].fg_info.fg_id == 203) { + return FALSE; + } - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - ut_num = mFI_GetUtNum(b_ut_x, b_ut_z); - g_fdinfo->block_info[block_num].fg_info.items_p[ut_num] = item; + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + ut_num = mFI_GetUtNum(b_ut_x, b_ut_z); + g_fdinfo->block_info[block_num].fg_info.items_p[ut_num] = item; - if (update) { - mFI_SetFGUpData(); - } + if (update) { + mFI_SetFGUpData(); + } - return TRUE; + return TRUE; } static int mFI_UtNum2FGSet_layer(mActor_name_t item, int ut_x, int ut_z, int layer) { - int bx; - int bz; - int b_ut_x; - int b_ut_z; - int num; - int res = FALSE; + int bx; + int bz; + int b_ut_x; + int b_ut_z; + int num; + int res = FALSE; - if ( - mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == TRUE && - mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == TRUE - ) { - mActor_name_t* fg_layer_p = mFI_BkNum2UtFGTop_layer(bx, bz, layer); + if (mFI_UtNumCheck(ut_x, ut_z, mFI_GetBlockXMax(), mFI_GetBlockZMax()) == TRUE && + mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == TRUE) { + mActor_name_t* fg_layer_p = mFI_BkNum2UtFGTop_layer(bx, bz, layer); - if (fg_layer_p != NULL) { - mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); - num = mFI_GetUtNum(b_ut_x, b_ut_z); - fg_layer_p[num] = item; - mFI_SetFGUpData(); - res = TRUE; + if (fg_layer_p != NULL) { + mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z); + num = mFI_GetUtNum(b_ut_x, b_ut_z); + fg_layer_p[num] = item; + mFI_SetFGUpData(); + res = TRUE; + } } - } - return res; + return res; } extern int mFI_SetFG_common(mActor_name_t item, xyz_t wpos, int update) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { - return FALSE; - } + if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == FALSE) { + return FALSE; + } - return mFI_UtNumtoFGSet_common(item, ut_x, ut_z, update); + return mFI_UtNumtoFGSet_common(item, ut_x, ut_z, update); } extern int mFI_SetFG2(mActor_name_t item, xyz_t wpos) { - int ut_x; - int ut_z; - int res = FALSE; + int ut_x; + int ut_z; + int res = FALSE; - if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == TRUE) { - mFI_UtNum2FGSet_layer(item, ut_x, ut_z, 1); - res = TRUE; - } + if (mFI_Wpos2UtNum(&ut_x, &ut_z, wpos) == TRUE) { + mFI_UtNum2FGSet_layer(item, ut_x, ut_z, 1); + res = TRUE; + } - return res; + return res; } extern void mFI_InitItemTable(mFI_item_table_c* vis_block_info) { - mFI_block_tbl_c* block_table = vis_block_info->block_info_tbl; - int i; + mFI_block_tbl_c* block_table = vis_block_info->block_info_tbl; + int i; - vis_block_info->count = 0; - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - block_table->block_x = -1; - block_table->block_z = -1; - block_table->pos_x = 0.0f; - block_table->pos_z = 0.0f; - block_table->items = NULL; + vis_block_info->count = 0; + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + block_table->block_x = -1; + block_table->block_z = -1; + block_table->pos_x = 0.0f; + block_table->pos_z = 0.0f; + block_table->items = NULL; - /* @BUG - they forgot to increment the pointer */ - #ifdef BUGFIXES - block_table++; - #endif - } +/* @BUG - they forgot to increment the pointer */ +#ifdef BUGFIXES + block_table++; +#endif + } } static void mFI_SetOldItemTableIdx(int n, int idx) { - g_fdinfo->last_bg_idx[n] = idx; + g_fdinfo->last_bg_idx[n] = idx; } extern int mFI_GetOldItemTableIdx(int n) { - return g_fdinfo->last_bg_idx[n]; + return g_fdinfo->last_bg_idx[n]; } -static void mFI_MakeOldItemTableIdxTable(mFI_block_tbl_c* block_table, int count, int* block_x_tbl, int* block_z_tbl, int num) { - int i; - int j; +static void mFI_MakeOldItemTableIdxTable(mFI_block_tbl_c* block_table, int count, int* block_x_tbl, int* block_z_tbl, + int num) { + int i; + int j; - for (i = 0; i < count; i++) { - if ((int)block_table->block_x != -1 && (int)block_table->block_z != -1) { - int* bx_p = block_x_tbl; - int* bz_p = block_z_tbl; - - for (j = 0; j < num; j++) { - if (*bx_p == block_table->block_x && *bz_p == block_table->block_z) { - mFI_SetOldItemTableIdx(i, j); - break; + for (i = 0; i < count; i++) { + if ((int)block_table->block_x != -1 && (int)block_table->block_z != -1) { + int* bx_p = block_x_tbl; + int* bz_p = block_z_tbl; + + for (j = 0; j < num; j++) { + if (*bx_p == block_table->block_x && *bz_p == block_table->block_z) { + mFI_SetOldItemTableIdx(i, j); + break; + } + bx_p++; + bz_p++; + } + + if (j == num) { + mFI_SetOldItemTableIdx(i, -1); + } } - bx_p++; - bz_p++; - } - if (j == num) { - mFI_SetOldItemTableIdx(i, -1); - } + block_table++; } - - block_table++; - } } static void mFI_SetBlockTable(mFI_block_tbl_c* block_table, int bx, int bz) { - f32 x = 0.0f; - f32 z = 0.0f; - int num = mFI_GetBlockNum(bx, bz); + f32 x = 0.0f; + f32 z = 0.0f; + int num = mFI_GetBlockNum(bx, bz); - block_table->items = g_fdinfo->block_info[num].fg_info.items_p; - block_table->block_x = bx; - block_table->block_z = bz; + block_table->items = g_fdinfo->block_info[num].fg_info.items_p; + block_table->block_x = bx; + block_table->block_z = bz; - mFI_BkNum2WposXZ(&x, &z, bx, bz); - block_table->pos_x = x; - block_table->pos_z = z; + mFI_BkNum2WposXZ(&x, &z, bx, bz); + block_table->pos_x = x; + block_table->pos_z = z; } extern int mFI_GetItemTable_NoReset(mFI_item_table_c* item_table, xyz_t wpos) { - static int table_no[3] = { 0, 1, 1 }; - static int check_x[3] = { 0, 1, -1 }; + static int table_no[3] = { 0, 1, 1 }; + static int check_x[3] = { 0, 1, -1 }; - mFM_field_draw_info_c* bg_disp = mFI_BGDisplayListTop(); - int t_no; - u8 _num = 0; - u8 _bitfield = 0; - u8 clear_tree_cut_bitfield = 0; - int bx; - int bz; - int block_x_tbl[mFM_VISIBLE_BLOCK_NUM]; - int block_z_tbl[mFM_VISIBLE_BLOCK_NUM]; - int i; - int j; + mFM_field_draw_info_c* bg_disp = mFI_BGDisplayListTop(); + int t_no; + u8 _num = 0; + u8 _bitfield = 0; + u8 clear_tree_cut_bitfield = 0; + int bx; + int bz; + int block_x_tbl[mFM_VISIBLE_BLOCK_NUM]; + int block_z_tbl[mFM_VISIBLE_BLOCK_NUM]; + int i; + int j; - if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == FALSE) { - return FALSE; - } + if (mFI_Wpos2BlockNum(&bx, &bz, wpos) == FALSE) { + return FALSE; + } - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - block_x_tbl[i] = item_table->block_info_tbl[i].block_x; - block_z_tbl[i] = item_table->block_info_tbl[i].block_z; - } + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + block_x_tbl[i] = item_table->block_info_tbl[i].block_x; + block_z_tbl[i] = item_table->block_info_tbl[i].block_z; + } - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (mFI_CheckFinishBgDma(i) == TRUE && bg_disp->block_z == bz) { - for (j = 0; j < 3; j++) { - int bx_near = bx + check_x[j]; - - t_no = table_no[j]; + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (mFI_CheckFinishBgDma(i) == TRUE && bg_disp->block_z == bz) { + for (j = 0; j < 3; j++) { + int bx_near = bx + check_x[j]; - if (bg_disp->block_x == bx_near) { - mFI_SetBlockTable(&item_table->block_info_tbl[t_no], bx_near, bz); - _num++; - _bitfield |= (1 << i); + t_no = table_no[j]; - if ((Common_Get(remove_cut_tree_info_bitfield) >> i) & 1) { - clear_tree_cut_bitfield |= (1 << t_no); - } + if (bg_disp->block_x == bx_near) { + mFI_SetBlockTable(&item_table->block_info_tbl[t_no], bx_near, bz); + _num++; + _bitfield |= (1 << i); - break; + if ((Common_Get(remove_cut_tree_info_bitfield) >> i) & 1) { + clear_tree_cut_bitfield |= (1 << t_no); + } + + break; + } + } } - } + + if (_num >= 2) { + break; + } + + bg_disp++; } - if (_num >= 2) { - break; + bg_disp = mFI_BGDisplayListTop(); + for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { + if (((_bitfield >> i) & 1) == 0 && mFI_CheckFinishBgDma(i) == TRUE && bg_disp->block_x != 0xFF && + bg_disp->block_z != 0xFF) { + mFI_SetBlockTable(&item_table->block_info_tbl[_num], bg_disp->block_x, bg_disp->block_z); + + if ((Common_Get(remove_cut_tree_info_bitfield) >> i) & 1) { + clear_tree_cut_bitfield |= (1 << _num); + } + + _num++; + } + + if (_num >= mFM_VISIBLE_BLOCK_NUM) { + break; + } + + bg_disp++; } - bg_disp++; - } + Common_Set(remove_cut_tree_info_bitfield, clear_tree_cut_bitfield); - bg_disp = mFI_BGDisplayListTop(); - for (i = 0; i < mFM_VISIBLE_BLOCK_NUM; i++) { - if (((_bitfield >> i) & 1) == 0 && mFI_CheckFinishBgDma(i) == TRUE && bg_disp->block_x != 0xFF && bg_disp->block_z != 0xFF) { - mFI_SetBlockTable(&item_table->block_info_tbl[_num], bg_disp->block_x, bg_disp->block_z); - - if ((Common_Get(remove_cut_tree_info_bitfield) >> i) & 1) { - clear_tree_cut_bitfield |= (1 << _num); - } - - _num++; + /* Clear any unused entries */ + for (i = _num; i < mFM_VISIBLE_BLOCK_NUM; i++) { + item_table->block_info_tbl[i].block_x = 0xFF; + item_table->block_info_tbl[i].block_z = 0xFF; } - if (_num >= mFM_VISIBLE_BLOCK_NUM) { - break; - } + mFI_MakeOldItemTableIdxTable(item_table->block_info_tbl, _num, block_x_tbl, block_z_tbl, item_table->count); + item_table->count = _num; - bg_disp++; - } - - Common_Set(remove_cut_tree_info_bitfield, clear_tree_cut_bitfield); - - /* Clear any unused entries */ - for (i = _num; i < mFM_VISIBLE_BLOCK_NUM; i++) { - item_table->block_info_tbl[i].block_x = 0xFF; - item_table->block_info_tbl[i].block_z = 0xFF; - } - - mFI_MakeOldItemTableIdxTable(item_table->block_info_tbl, _num, block_x_tbl, block_z_tbl, item_table->count); - item_table->count = _num; - - return TRUE; + return TRUE; } extern int mFI_GetItemTable(mFI_item_table_c* item_table, xyz_t wpos, char* file, int line) { - g_fdinfo->update_fg = FALSE; - g_fdinfo->born_item = FALSE; - return mFI_GetItemTable_NoReset(item_table, wpos); + g_fdinfo->update_fg = FALSE; + g_fdinfo->born_item = FALSE; + return mFI_GetItemTable_NoReset(item_table, wpos); } extern int mFI_FGisUpDate() { - if (mFI_CheckFieldData()) { - return g_fdinfo->update_fg & 1; - } + if (mFI_CheckFieldData()) { + return g_fdinfo->update_fg & 1; + } - return FALSE; + return FALSE; } extern void mFI_SetFGUpData() { - if (mFI_CheckFieldData()) { - g_fdinfo->update_fg = TRUE; - } + if (mFI_CheckFieldData()) { + g_fdinfo->update_fg = TRUE; + } } /* 50% */ extern void mFI_BornItemON() { - if (mFI_CheckFieldData()) { - g_fdinfo->born_item = TRUE; - } + if (mFI_CheckFieldData()) { + g_fdinfo->born_item = TRUE; + } } /* @unused @fabricated */ @@ -1624,346 +1558,345 @@ extern MATCH_FORCESTRIP void mFI_BornItemOFF() { */ extern int mFI_ItemisBorn() { - return g_fdinfo->born_item & 1; + return g_fdinfo->born_item & 1; } extern int mFI_ActorisBorn() { - return g_fdinfo->born_actor & 1; + return g_fdinfo->born_actor & 1; } extern void mFI_SetBearActor(GAME_PLAY* play, xyz_t wpos, int set_flag) { - int bx; - int bz; + int bx; + int bz; - g_fdinfo->born_actor = TRUE; - mFI_Wpos2BlockNum(&bx, &bz, wpos); + g_fdinfo->born_actor = TRUE; + mFI_Wpos2BlockNum(&bx, &bz, wpos); - if (set_flag == FALSE) { - play->last_block_table.block_x = -1; - play->last_block_table.block_z = -1; - play->last_block_table.items = NULL; - } - else { - mem_copy((u8*)&play->last_block_table, (u8*)&play->block_table, sizeof(mFI_block_tbl_c)); - } + if (set_flag == FALSE) { + play->last_block_table.block_x = -1; + play->last_block_table.block_z = -1; + play->last_block_table.items = NULL; + } else { + mem_copy((u8*)&play->last_block_table, (u8*)&play->block_table, sizeof(mFI_block_tbl_c)); + } - mFI_SetBlockTable(&play->block_table, bx, bz); + mFI_SetBlockTable(&play->block_table, bx, bz); } extern int mFI_search_unit_around(xyz_t* wpos, mActor_name_t item) { - static f32 BI_chk_pos[9 * 2] = { - -40.0f, -40.0f, // x - 1, z - 1 (top-left) - -40.0f, 40.0f, // x - 1, z + 1 (bottom-left) - 40.0f, 40.0f, // x + 1, z + 1 (bottom-right) - 40.0f, -40.0f, // x + 1, z - 1 (top-right) - -40.0f, 0.0f, // x - 1, z (left) - 0.0f, 40.0f, // x, z + 1 (below) - 40.0f, 0.0f, // x + 1, z (right) - 0.0f, -40.0f, // x, z - 1 (above) - 0.0f, 0.0f // x, z (origin) - }; - xyz_t tpos; - mActor_name_t* item_p; - int i = 9; - int res = FALSE; - f32* around = BI_chk_pos; + static f32 BI_chk_pos[9 * 2] = { + -40.0f, -40.0f, // x - 1, z - 1 (top-left) + -40.0f, 40.0f, // x - 1, z + 1 (bottom-left) + 40.0f, 40.0f, // x + 1, z + 1 (bottom-right) + 40.0f, -40.0f, // x + 1, z - 1 (top-right) + -40.0f, 0.0f, // x - 1, z (left) + 0.0f, 40.0f, // x, z + 1 (below) + 40.0f, 0.0f, // x + 1, z (right) + 0.0f, -40.0f, // x, z - 1 (above) + 0.0f, 0.0f // x, z (origin) + }; + xyz_t tpos; + mActor_name_t* item_p; + int i = 9; + int res = FALSE; + f32* around = BI_chk_pos; - while (i != 0) { - i--; + while (i != 0) { + i--; - tpos.x = wpos->x + around[i * 2 + 0]; - tpos.z = wpos->z + around[i * 2 + 1]; + tpos.x = wpos->x + around[i * 2 + 0]; + tpos.z = wpos->z + around[i * 2 + 1]; - item_p = mFI_GetUnitFG(tpos); - if (item_p != NULL && item_p[0] == item) { - xyz_t_move(wpos, &tpos); - res = TRUE; - break; + item_p = mFI_GetUnitFG(tpos); + if (item_p != NULL && item_p[0] == item) { + xyz_t_move(wpos, &tpos); + res = TRUE; + break; + } } - } - return res; + return res; } /* @unused @frabricated */ extern MATCH_FORCESTRIP int mFI_search_unit_around2(xyz_t* wpos, mActor_name_t item) { - static f32 BI_chk_pos[9 * 2] = { - -40.0f, -40.0f, // x - 1, z - 1 (top-left) - -40.0f, 40.0f, // x - 1, z + 1 (bottom-left) - 40.0f, 40.0f, // x + 1, z + 1 (bottom-right) - 40.0f, -40.0f, // x + 1, z - 1 (top-right) - -40.0f, 0.0f, // x - 1, z (left) - 0.0f, 40.0f, // x, z + 1 (below) - 40.0f, 0.0f, // x + 1, z (right) - 0.0f, -40.0f, // x, z - 1 (above) - 0.0f, 0.0f // x, z (origin) - }; - xyz_t tpos; - mActor_name_t* item_p; - int i = 9; - int res = FALSE; - f32* around = BI_chk_pos; + static f32 BI_chk_pos[9 * 2] = { + -40.0f, -40.0f, // x - 1, z - 1 (top-left) + -40.0f, 40.0f, // x - 1, z + 1 (bottom-left) + 40.0f, 40.0f, // x + 1, z + 1 (bottom-right) + 40.0f, -40.0f, // x + 1, z - 1 (top-right) + -40.0f, 0.0f, // x - 1, z (left) + 0.0f, 40.0f, // x, z + 1 (below) + 40.0f, 0.0f, // x + 1, z (right) + 0.0f, -40.0f, // x, z - 1 (above) + 0.0f, 0.0f // x, z (origin) + }; + xyz_t tpos; + mActor_name_t* item_p; + int i = 9; + int res = FALSE; + f32* around = BI_chk_pos; - while (i != 0) { - i--; + while (i != 0) { + i--; - tpos.x = wpos->x + around[i * 2 + 0]; - tpos.z = wpos->z + around[i * 2 + 1]; + tpos.x = wpos->x + around[i * 2 + 0]; + tpos.z = wpos->z + around[i * 2 + 1]; - item_p = mFI_GetUnitFG2(tpos); - if (item_p != NULL && item_p[0] == item) { - xyz_t_move(wpos, &tpos); - res = TRUE; - break; + item_p = mFI_GetUnitFG2(tpos); + if (item_p != NULL && item_p[0] == item) { + xyz_t_move(wpos, &tpos); + res = TRUE; + break; + } } - } - return res; + return res; } extern int mFI_GetItemNumOnBlock(int bx, int bz, mActor_name_t min_item, mActor_name_t max_item) { - mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); - int num = 0; - int i; - - if (fg_p != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (fg_p[0] >= min_item && fg_p[0] <= max_item) { - num++; - } - - fg_p++; - } - } - - return num; -} - -extern int mFI_GetItemNumOnBlockInField(int bx, int bz, mActor_name_t min_item, mActor_name_t max_item) { - mActor_name_t* fg_p = NULL; - int num = 0; - int i; - - if (bx > 0 && bx <= FG_BLOCK_X_NUM && bz > 0 && bz <= FG_BLOCK_Z_NUM) { - fg_p = Save_Get(fg)[bz - 1][bx - 1].items[0]; - } - - if (fg_p != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (fg_p[0] >= min_item && fg_p[0] <= max_item) { - num++; - } - - fg_p++; - } - } - - return num; -} - -extern int mFI_GetItemNumField_BCT(mActor_name_t min_item, mActor_name_t max_item) { - mFM_fg_c* fg = Save_Get(fg[0]); - mActor_name_t* items_p; - int num = 0; - int bz; - - for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { - int bx; - for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - int i; - items_p = fg->items[0]; - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (items_p[0] >= min_item && items_p[0] <= max_item) { - num++; - } - - items_p++; - } - - fg++; - } - } - - return num; -} - -extern int mFI_GetItemNumField(mActor_name_t min_item, mActor_name_t max_item) { - int num = 0; - - /* @BUG - they forgot to actually call the mFI_CheckFieldData func */ - #ifndef BUGFIXES - if (mFI_CheckFieldData) { - #else - if (mFI_CheckFieldData()) { - #endif - int bx_max = mFI_GetBlockXMax(); - int bz_max = mFI_GetBlockZMax(); - - int bz; - int bx; - - for (bz = 0; bz < bz_max; bz++) { - for (bx = 0; bx < bx_max; bx++) { - num += mFI_GetItemNumOnBlock(bx, bz, min_item, max_item); - } - } - } - - return num; -} - -extern int mFI_GetItemNumInBlock(mActor_name_t item, mActor_name_t* fg_items) { - int num = 0; - int i; - - if (fg_items != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (fg_items[0] == item) { - num++; - } - - fg_items++; - } - } - - return num; -} - -extern int mFI_SearchFGInBlock(int* ut_x, int* ut_z, mActor_name_t item, int bx, int bz) { - mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); - int res = FALSE; - - if (fg_p != NULL) { + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + int num = 0; int i; - - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (fg_p[0] == item) { - ut_x[0] = i & 15; - ut_z[0] = i >> 4; - res = TRUE; - break; - } - - fg_p++; - } - } - - return res; -} - -extern int mFI_CheckFGExist(mActor_name_t* check_items, int check_item_num) { - mActor_name_t* check_p = check_items; - - if (mFI_CheckFieldData() == TRUE) { - int bx_max = mFI_GetBlockXMax(); - int bz_max = mFI_GetBlockZMax(); - mActor_name_t* fg_p; - - int bz; - - for (bz = 0; bz < bz_max; bz++) { - int bx; - for (bx = 0; bx < bx_max; bx++) { - fg_p = mFI_BkNumtoUtFGTop(bx, bz); - - if (fg_p != NULL) { - int ut; - for (ut = 0; ut < UT_TOTAL_NUM; ut++) { - int i; - check_items = check_p; - - for (i = 0; i < check_item_num; i++) { - if (check_items[0] == fg_p[0]) { - return TRUE; - } - - check_items++; + if (fg_p != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_p[0] >= min_item && fg_p[0] <= max_item) { + num++; } fg_p++; - } } - } } - } - return FALSE; + return num; +} + +extern int mFI_GetItemNumOnBlockInField(int bx, int bz, mActor_name_t min_item, mActor_name_t max_item) { + mActor_name_t* fg_p = NULL; + int num = 0; + int i; + + if (bx > 0 && bx <= FG_BLOCK_X_NUM && bz > 0 && bz <= FG_BLOCK_Z_NUM) { + fg_p = Save_Get(fg)[bz - 1][bx - 1].items[0]; + } + + if (fg_p != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_p[0] >= min_item && fg_p[0] <= max_item) { + num++; + } + + fg_p++; + } + } + + return num; +} + +extern int mFI_GetItemNumField_BCT(mActor_name_t min_item, mActor_name_t max_item) { + mFM_fg_c* fg = Save_Get(fg[0]); + mActor_name_t* items_p; + int num = 0; + int bz; + + for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { + int bx; + for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { + int i; + items_p = fg->items[0]; + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (items_p[0] >= min_item && items_p[0] <= max_item) { + num++; + } + + items_p++; + } + + fg++; + } + } + + return num; +} + +extern int mFI_GetItemNumField(mActor_name_t min_item, mActor_name_t max_item) { + int num = 0; + +/* @BUG - they forgot to actually call the mFI_CheckFieldData func */ +#ifndef BUGFIXES + if (mFI_CheckFieldData) { +#else + if (mFI_CheckFieldData()) { +#endif + int bx_max = mFI_GetBlockXMax(); + int bz_max = mFI_GetBlockZMax(); + + int bz; + int bx; + + for (bz = 0; bz < bz_max; bz++) { + for (bx = 0; bx < bx_max; bx++) { + num += mFI_GetItemNumOnBlock(bx, bz, min_item, max_item); + } + } + } + + return num; +} + +extern int mFI_GetItemNumInBlock(mActor_name_t item, mActor_name_t* fg_items) { + int num = 0; + int i; + + if (fg_items != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_items[0] == item) { + num++; + } + + fg_items++; + } + } + + return num; +} + +extern int mFI_SearchFGInBlock(int* ut_x, int* ut_z, mActor_name_t item, int bx, int bz) { + mActor_name_t* fg_p = mFI_BkNumtoUtFGTop(bx, bz); + int res = FALSE; + + if (fg_p != NULL) { + int i; + + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_p[0] == item) { + ut_x[0] = i & 15; + ut_z[0] = i >> 4; + res = TRUE; + + break; + } + + fg_p++; + } + } + + return res; +} + +extern int mFI_CheckFGExist(mActor_name_t* check_items, int check_item_num) { + mActor_name_t* check_p = check_items; + + if (mFI_CheckFieldData() == TRUE) { + int bx_max = mFI_GetBlockXMax(); + int bz_max = mFI_GetBlockZMax(); + mActor_name_t* fg_p; + + int bz; + + for (bz = 0; bz < bz_max; bz++) { + int bx; + for (bx = 0; bx < bx_max; bx++) { + fg_p = mFI_BkNumtoUtFGTop(bx, bz); + + if (fg_p != NULL) { + int ut; + for (ut = 0; ut < UT_TOTAL_NUM; ut++) { + int i; + check_items = check_p; + + for (i = 0; i < check_item_num; i++) { + if (check_items[0] == fg_p[0]) { + return TRUE; + } + + check_items++; + } + + fg_p++; + } + } + } + } + } + + return FALSE; } extern u8* mFI_GetHaniwaStepBlock(int bx, int bz) { - u8* haniwa_step_block_p = NULL; + u8* haniwa_step_block_p = NULL; - if (mFI_BlockCheck(bx, bz) == TRUE) { - int num = mFI_GetBlockNum(bx, bz); + if (mFI_BlockCheck(bx, bz) == TRUE) { + int num = mFI_GetBlockNum(bx, bz); - haniwa_step_block_p = g_fdinfo->block_info[num].fg_info.haniwa_step; - } + haniwa_step_block_p = g_fdinfo->block_info[num].fg_info.haniwa_step; + } - return haniwa_step_block_p; + return haniwa_step_block_p; } extern u16 mFI_GetMoveActorBitData(int bx, int bz) { - u16 move_actor_bit_data = 0; + u16 move_actor_bit_data = 0; - if (mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); - - move_actor_bit_data = g_fdinfo->block_info[num].fg_info.move_actor_bit_data; - } + if (mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); - return move_actor_bit_data; + move_actor_bit_data = g_fdinfo->block_info[num].fg_info.move_actor_bit_data; + } + + return move_actor_bit_data; } static void mFI_MakeMoveActorBitData(int bx, int bz, mFM_move_actor_c* move_actor) { - int num = mFI_GetBlockNum(bx, bz); - u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; - int i; + int num = mFI_GetBlockNum(bx, bz); + u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; + int i; - if (move_actor_bit_data_p != NULL) { - for (i = 0; i < mFM_MOVE_ACTOR_NUM; i++) { - if (move_actor->name_id == EMPTY_NO) { - break; - } + if (move_actor_bit_data_p != NULL) { + for (i = 0; i < mFM_MOVE_ACTOR_NUM; i++) { + if (move_actor->name_id == EMPTY_NO) { + break; + } - move_actor_bit_data_p[0] |= (1 << i); - move_actor++; + move_actor_bit_data_p[0] |= (1 << i); + move_actor++; + } } - } } extern void mFI_SetMoveActorBitData(int bx, int bz, u16 move_actor_bit_data) { - if (mFI_BlockCheck(bx, bz)) { - int num = mFI_GetBlockNum(bx, bz); + if (mFI_BlockCheck(bx, bz)) { + int num = mFI_GetBlockNum(bx, bz); - g_fdinfo->block_info[num].fg_info.move_actor_bit_data = move_actor_bit_data; - } + g_fdinfo->block_info[num].fg_info.move_actor_bit_data = move_actor_bit_data; + } } extern void mFI_SetMoveActorBitData_ON(s16 move_actor_idx, int bx, int bz) { - if (mFI_BlockCheck(bx, bz) && move_actor_idx >= 0 && move_actor_idx < mFM_MOVE_ACTOR_NUM) { - int num = mFI_GetBlockNum(bx, bz); - u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; - u16 data = move_actor_bit_data_p[0]; + if (mFI_BlockCheck(bx, bz) && move_actor_idx >= 0 && move_actor_idx < mFM_MOVE_ACTOR_NUM) { + int num = mFI_GetBlockNum(bx, bz); + u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; + u16 data = move_actor_bit_data_p[0]; - move_actor_bit_data_p[0] = data | (1 << move_actor_idx); - } + move_actor_bit_data_p[0] = data | (1 << move_actor_idx); + } } extern void mFI_SetMoveActorBitData_OFF(s16 move_actor_idx, int bx, int bz) { - if (mFI_BlockCheck(bx, bz) && move_actor_idx >= 0 && move_actor_idx < mFM_MOVE_ACTOR_NUM) { - int num = mFI_GetBlockNum(bx, bz); - u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; - u16 data = move_actor_bit_data_p[0]; + if (mFI_BlockCheck(bx, bz) && move_actor_idx >= 0 && move_actor_idx < mFM_MOVE_ACTOR_NUM) { + int num = mFI_GetBlockNum(bx, bz); + u16* move_actor_bit_data_p = &g_fdinfo->block_info[num].fg_info.move_actor_bit_data; + u16 data = move_actor_bit_data_p[0]; - move_actor_bit_data_p[0] = data & ~(1 << move_actor_idx); - } + move_actor_bit_data_p[0] = data & ~(1 << move_actor_idx); + } } extern void mFI_MyMoveActorBitData_ON(ACTOR* actor) { - if (actor != NULL) { - mFI_SetMoveActorBitData_ON(actor->move_actor_list_idx, actor->block_x, actor->block_z); - } + if (actor != NULL) { + mFI_SetMoveActorBitData_ON(actor->move_actor_list_idx, actor->block_x, actor->block_z); + } } /* @unused @fabricated */ @@ -1976,215 +1909,209 @@ extern MATCH_FORCESTRIP void mFI_MyMoveActorBitData_OFF(ACTOR* actor) { */ extern int mFI_GetMoveActorListIdx(mFM_move_actor_c* move_actor_list, int list_size, mActor_name_t actor_name) { - int idx = -1; - int i; + int idx = -1; + int i; - for (i = 0; i < list_size; i++) { - if (move_actor_list->name_id == actor_name) { - idx = i; - break; + for (i = 0; i < list_size; i++) { + if (move_actor_list->name_id == actor_name) { + idx = i; + break; + } + + move_actor_list++; } - move_actor_list++; - } - - return idx; + return idx; } -extern int mFI_RegistMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, int npc_info_idx, s16 arg) { - int num = mFI_GetBlockNum(bx, bz); - mFM_move_actor_c* move_actor_list = g_fdinfo->block_info[num].fg_info.move_actors; - int res = FALSE; +extern int mFI_RegistMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, int npc_info_idx, + s16 arg) { + int num = mFI_GetBlockNum(bx, bz); + mFM_move_actor_c* move_actor_list = g_fdinfo->block_info[num].fg_info.move_actors; + int res = FALSE; - if (move_actor_list != NULL) { - int idx = mFI_GetMoveActorListIdx(move_actor_list, mFM_MOVE_ACTOR_NUM, EMPTY_NO); + if (move_actor_list != NULL) { + int idx = mFI_GetMoveActorListIdx(move_actor_list, mFM_MOVE_ACTOR_NUM, EMPTY_NO); - if (idx != -1) { - move_actor_list[idx].name_id = actor_name; - move_actor_list[idx].ut_x = ut_x; - move_actor_list[idx].ut_z = ut_z; - move_actor_list[idx].npc_info_idx = npc_info_idx; - move_actor_list[idx].arg = arg; - mFI_SetMoveActorBitData_ON(idx, bx, bz); - res = TRUE; + if (idx != -1) { + move_actor_list[idx].name_id = actor_name; + move_actor_list[idx].ut_x = ut_x; + move_actor_list[idx].ut_z = ut_z; + move_actor_list[idx].npc_info_idx = npc_info_idx; + move_actor_list[idx].arg = arg; + mFI_SetMoveActorBitData_ON(idx, bx, bz); + res = TRUE; + } } - } - return res; + return res; } extern int mFI_UnregistMoveActorList(mActor_name_t actor_name, int bx, int bz) { - int num = mFI_GetBlockNum(bx, bz); - mFM_move_actor_c* move_actor_list = g_fdinfo->block_info[num].fg_info.move_actors; - int res = FALSE; + int num = mFI_GetBlockNum(bx, bz); + mFM_move_actor_c* move_actor_list = g_fdinfo->block_info[num].fg_info.move_actors; + int res = FALSE; - if (move_actor_list != NULL) { - int idx = mFI_GetMoveActorListIdx(move_actor_list, mFM_MOVE_ACTOR_NUM, actor_name); + if (move_actor_list != NULL) { + int idx = mFI_GetMoveActorListIdx(move_actor_list, mFM_MOVE_ACTOR_NUM, actor_name); - if (idx != -1) { - move_actor_list[idx].name_id = EMPTY_NO; - mFI_SetMoveActorBitData_OFF(idx, bx, bz); - res = TRUE; + if (idx != -1) { + move_actor_list[idx].name_id = EMPTY_NO; + mFI_SetMoveActorBitData_OFF(idx, bx, bz); + res = TRUE; + } } - } - return res; + return res; } extern int mFI_AddMoveActorList(mActor_name_t actor_name, int bx, int bz, int ut_x, int ut_z, s16 arg) { - int res = FALSE; + int res = FALSE; - if (ITEM_NAME_GET_TYPE(actor_name) == NAME_TYPE_ITEM2 && mFI_BlockCheck(bx, bz)) { - res = mFI_RegistMoveActorList(actor_name, bx, bz, ut_x, ut_z, -1, arg); - } + if (ITEM_NAME_GET_TYPE(actor_name) == NAME_TYPE_ITEM2 && mFI_BlockCheck(bx, bz)) { + res = mFI_RegistMoveActorList(actor_name, bx, bz, ut_x, ut_z, -1, arg); + } - return res; + return res; } extern mFM_move_actor_c* mFI_MoveActorListDma(int bx, int bz) { - static mFM_move_actor_c l_aclist[mFM_MOVE_ACTOR_NUM]; + static mFM_move_actor_c l_aclist[mFM_MOVE_ACTOR_NUM]; - mFM_move_actor_c* move_actor_list = NULL; - int num = mFI_GetBlockNum(bx, bz); + mFM_move_actor_c* move_actor_list = NULL; + int num = mFI_GetBlockNum(bx, bz); - if (mFI_BlockCheck(bx, bz)) { - move_actor_list = l_aclist; - bcopy(g_fdinfo->block_info[num].fg_info.move_actors, move_actor_list, mFM_MOVE_ACTOR_NUM * sizeof(mFM_move_actor_c)); - } + if (mFI_BlockCheck(bx, bz)) { + move_actor_list = l_aclist; + bcopy(g_fdinfo->block_info[num].fg_info.move_actors, move_actor_list, + mFM_MOVE_ACTOR_NUM * sizeof(mFM_move_actor_c)); + } - return move_actor_list; + return move_actor_list; } extern void mFI_InitMoveActorBitData() { - int bx_max = mFI_GetBlockXMax(); - int bz_max = mFI_GetBlockZMax(); - int bz; - - for (bz = 0; bz < bz_max; bz++) { - int bx; - - for (bx = 0; bx < bx_max; bx++) { - mFM_move_actor_c* move_actor_list = mFI_MoveActorListDma(bx, bz); + int bx_max = mFI_GetBlockXMax(); + int bz_max = mFI_GetBlockZMax(); + int bz; - if (move_actor_list != NULL) { - mFI_MakeMoveActorBitData(bx, bz, move_actor_list); - } + for (bz = 0; bz < bz_max; bz++) { + int bx; + + for (bx = 0; bx < bx_max; bx++) { + mFM_move_actor_c* move_actor_list = mFI_MoveActorListDma(bx, bz); + + if (move_actor_list != NULL) { + mFI_MakeMoveActorBitData(bx, bz, move_actor_list); + } + } } - } } static int l_player_wade; -extern void mFI_SetPlayerWade(GAME_PLAY* play) { - PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); +extern void mFI_SetPlayerWade(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); - if (player != NULL) { - if (mPlib_check_player_actor_main_index_AllWade(play) == TRUE) { - if (l_player_wade == mFI_WADE_NONE || l_player_wade == mFI_WADE_END) { - l_player_wade = mFI_WADE_START; - } - else { - l_player_wade = mFI_WADE_INPROGRESS; - } + if (player != NULL) { + if (mPlib_check_player_actor_main_index_AllWade(game) == TRUE) { + if (l_player_wade == mFI_WADE_NONE || l_player_wade == mFI_WADE_END) { + l_player_wade = mFI_WADE_START; + } else { + l_player_wade = mFI_WADE_INPROGRESS; + } + } else if (l_player_wade == mFI_WADE_INPROGRESS) { + l_player_wade = mFI_WADE_END; + } else { + l_player_wade = mFI_WADE_NONE; + } + } else { + l_player_wade = mFI_WADE_ERROR; } - else if (l_player_wade == mFI_WADE_INPROGRESS) { - l_player_wade = mFI_WADE_END; - } - else { - l_player_wade = mFI_WADE_NONE; - } - } - else { - l_player_wade = mFI_WADE_ERROR; - } } extern int mFI_CheckPlayerWade(int wade) { - int res = FALSE; + int res = FALSE; - if (wade == l_player_wade) { - res = TRUE; - } + if (wade == l_player_wade) { + res = TRUE; + } - return res; + return res; } extern int mFI_GetPlayerWade() { - return l_player_wade; + return l_player_wade; } extern int mFI_GetNextBlockNum(int* bx, int* bz) { - xyz_t end_pos = {0.0f, 0.0f, 0.0f}; - int res = FALSE; - int res2; + xyz_t end_pos = { 0.0f, 0.0f, 0.0f }; + int res = FALSE; + int res2; - if (Common_Get(player_actor_exists)) { - res = ((*GET_PLAYER_ACTOR_NOW()->Get_WadeEndPos_proc)(gamePT, &end_pos)); - } + if (Common_Get(player_actor_exists)) { + res = ((*GET_PLAYER_ACTOR_NOW()->Get_WadeEndPos_proc)(gamePT, &end_pos)); + } - res2 = mFI_Wpos2BlockNum(bx, bz, end_pos); - res2 &= res; - return res2; + res2 = mFI_Wpos2BlockNum(bx, bz, end_pos); + res2 &= res; + return res2; } extern u16* mFI_GetDepositP(int bx, int bz) { - u16* deposit_p = NULL; + u16* deposit_p = NULL; - if (mFI_CheckFieldData() == FALSE || mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_FG) { - if (bx - 1 >= 0 && bx - 1 < FG_BLOCK_X_NUM && bz - 1 >= 0 && bz - 1 < FG_BLOCK_Z_NUM) { - deposit_p = Save_Get(deposit[(bx - 1) + (bz - 1) * FG_BLOCK_X_NUM]); + if (mFI_CheckFieldData() == FALSE || mFI_GET_TYPE(mFI_GetFieldId()) != mFI_FIELD_FG) { + if (bx - 1 >= 0 && bx - 1 < FG_BLOCK_X_NUM && bz - 1 >= 0 && bz - 1 < FG_BLOCK_Z_NUM) { + deposit_p = Save_Get(deposit[(bx - 1) + (bz - 1) * FG_BLOCK_X_NUM]); + } + } else if (mFI_BlockCheck(bx, bz) == TRUE) { + deposit_p = g_fdinfo->block_info[bx + bz * mFI_GetBlockXMax()].fg_info.deposit_p; } - } - else if (mFI_BlockCheck(bx, bz) == TRUE) { - deposit_p = g_fdinfo->block_info[bx + bz * mFI_GetBlockXMax()].fg_info.deposit_p; - } - return deposit_p; + return deposit_p; } extern void mFI_ClearDeposit(int bx, int bz) { - u16* deposit_p = mFI_GetDepositP(bx, bz); + u16* deposit_p = mFI_GetDepositP(bx, bz); - if (deposit_p != NULL) { - int i; + if (deposit_p != NULL) { + int i; - for (i = 0; i < UT_Z_NUM; i++) { - deposit_p[0] = 0; - deposit_p++; + for (i = 0; i < UT_Z_NUM; i++) { + deposit_p[0] = 0; + deposit_p++; + } } - } } static int mFI_LineDepositON(u16* deposit, int ut_x) { - deposit[0] |= (1 << ut_x); - return TRUE; + deposit[0] |= (1 << ut_x); + return TRUE; } static int mFI_LineDepositOFF(u16* deposit, int ut_x) { - deposit[0] &= ~(1 << ut_x); - return FALSE; + deposit[0] &= ~(1 << ut_x); + return FALSE; } extern int mFI_GetLineDeposit(u16* deposit, int ut_x) { - return (deposit[0] >> ut_x) & 1; + return (deposit[0] >> ut_x) & 1; } typedef int (*mFI_SET_DEPOSIT_PROC)(u16*, int); static int mFI_SetDeposit(u16* deposit, int ut_x, int ut_z, int type) { - static mFI_SET_DEPOSIT_PROC control_proc[mFI_DEPOSIT_NUM] = { - &mFI_LineDepositON, - &mFI_LineDepositOFF, - &mFI_GetLineDeposit - }; + static mFI_SET_DEPOSIT_PROC control_proc[mFI_DEPOSIT_NUM] = { &mFI_LineDepositON, &mFI_LineDepositOFF, + &mFI_GetLineDeposit }; - int res = FALSE; + int res = FALSE; - if (deposit != NULL && ut_x >= 0 && ut_x < UT_X_NUM && ut_z >= 0 && ut_z < UT_Z_NUM) { - res = (*control_proc[type])(deposit + ut_z, ut_x); - } + if (deposit != NULL && ut_x >= 0 && ut_x < UT_X_NUM && ut_z >= 0 && ut_z < UT_Z_NUM) { + res = (*control_proc[type])(deposit + ut_z, ut_x); + } - return res; + return res; } /* @unused, @fabricated */ @@ -2195,22 +2122,22 @@ extern MATCH_FORCESTRIP void mFI_BlockDepositON(u16* deposit_p, int ut_x, int ut */ extern void mFI_BlockDepositOFF(u16* deposit_p, int ut_x, int ut_z) { - mFI_SetDeposit(deposit_p, ut_x, ut_z, mFI_DEPOSIT_OFF); + mFI_SetDeposit(deposit_p, ut_x, ut_z, mFI_DEPOSIT_OFF); } extern int mFI_GetBlockDeposit(u16* deposit_p, int ut_x, int ut_z) { - return mFI_SetDeposit(deposit_p, ut_x, ut_z, mFI_DEPOSIT_GET); + return mFI_SetDeposit(deposit_p, ut_x, ut_z, mFI_DEPOSIT_GET); } static int mFI_BkUtNum2SetDeposit(int bx, int bz, int ut_x, int ut_z, int type) { - int res = FALSE; - u16* deposit_p = mFI_GetDepositP(bx, bz); + int res = FALSE; + u16* deposit_p = mFI_GetDepositP(bx, bz); - if (deposit_p != NULL) { - res = mFI_SetDeposit(deposit_p, ut_x, ut_z, type); - } + if (deposit_p != NULL) { + res = mFI_SetDeposit(deposit_p, ut_x, ut_z, type); + } - return res; + return res; } /* @unused @fabricated */ @@ -2221,7 +2148,7 @@ extern MATCH_FORCESTRIP void mFI_BkUtNum2DepositON(int bx, int bz, int ut_x, int */ extern void mFI_BkUtNum2DepositOFF(int bx, int bz, int ut_x, int ut_z) { - mFI_BkUtNum2SetDeposit(bx, bz, ut_x, ut_z, mFI_DEPOSIT_OFF); + mFI_BkUtNum2SetDeposit(bx, bz, ut_x, ut_z, mFI_DEPOSIT_OFF); } /* @unused @fabricated */ @@ -2232,1587 +2159,1353 @@ extern MATCH_FORCESTRIP int mFI_BkUtNum2DepositGet(int bx, int bz, int ut_x, int */ static int mFI_UtNum2SetDeposit(int ut_x, int ut_z, int type) { - int res = FALSE; - int bx; - int bz; - int b_ut_x; - int b_ut_z; + int res = FALSE; + int bx; + int bz; + int b_ut_x; + int b_ut_z; - if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == TRUE && mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z) == TRUE) { - res = mFI_BkUtNum2SetDeposit(bx, bz, b_ut_x, b_ut_z, type); - } + if (mFI_UtNum2BlockNum(&bx, &bz, ut_x, ut_z) == TRUE && mFI_GetUtNumInBK(&b_ut_x, &b_ut_z, ut_x, ut_z) == TRUE) { + res = mFI_BkUtNum2SetDeposit(bx, bz, b_ut_x, b_ut_z, type); + } - return res; + return res; } extern void mFI_UtNum2DepositON(int ut_x, int ut_z) { - mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_ON); + mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_ON); } extern void mFI_UtNum2DepositOFF(int ut_x, int ut_z) { - mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_OFF); + mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_OFF); } extern int mFI_UtNum2DepositGet(int ut_x, int ut_z) { - return mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_GET); + return mFI_UtNum2SetDeposit(ut_x, ut_z, mFI_DEPOSIT_GET); } extern void mFI_Wpos2DepositON(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); - mFI_UtNum2DepositON(ut_x, ut_z); + mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); + mFI_UtNum2DepositON(ut_x, ut_z); } extern void mFI_Wpos2DepositOFF(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); - mFI_UtNum2DepositOFF(ut_x, ut_z); + mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); + mFI_UtNum2DepositOFF(ut_x, ut_z); } extern int mFI_Wpos2DepositGet(xyz_t wpos) { - int ut_x; - int ut_z; + int ut_x; + int ut_z; - mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); - return mFI_UtNum2DepositGet(ut_x, ut_z); + mFI_Wpos2UtNum(&ut_x, &ut_z, wpos); + return mFI_UtNum2DepositGet(ut_x, ut_z); } extern int mFI_CheckItemNoHole(mActor_name_t item) { - int res = FALSE; + int res = FALSE; - if (item >= HOLE_START && item <= HOLE_END || item == HOLE_SHINE) { - res = TRUE; - } + if (item >= HOLE_START && item <= HOLE_END || item == HOLE_SHINE) { + res = TRUE; + } - return res; + return res; } /* @unused extern int mFI_CheckCanDeposit(xyz_t wpos?) */ static int mFI_CheckNothing(mActor_name_t* item, xyz_t wpos) { - return FALSE; + return FALSE; } static int mFI_CheckDigHole(mActor_name_t* item, xyz_t wpos) { - int res = FALSE; + int res = FALSE; - if (mFI_CheckItemNoHole(*item) == TRUE && mFI_Wpos2DepositGet(wpos) == TRUE) { - res = TRUE; - } + if (mFI_CheckItemNoHole(*item) == TRUE && mFI_Wpos2DepositGet(wpos) == TRUE) { + res = TRUE; + } - return res; + return res; } static int mFI_CheckDigHoleFillin(mActor_name_t* item, xyz_t wpos) { - int res = FALSE; + int res = FALSE; - if (mFI_CheckItemNoHole(*item) == TRUE && mFI_Wpos2DepositGet(wpos) == FALSE) { - res = TRUE; - } + if (mFI_CheckItemNoHole(*item) == TRUE && mFI_Wpos2DepositGet(wpos) == FALSE) { + res = TRUE; + } - return res; + return res; } static int mFI_CheckDigNoItem(mActor_name_t* item, xyz_t wpos) { - int res = FALSE; + int res = FALSE; - if (*item == EMPTY_NO) { - res = TRUE; - } + if (*item == EMPTY_NO) { + res = TRUE; + } - return res; + return res; } static int mFI_CheckDigRemoveItem(mActor_name_t* item, xyz_t wpos) { - int res = FALSE; + int res = FALSE; - if ( - (*item >= FLOWER_LEAVES_PANSIES0 && *item <= FLOWER_TULIP2) || - (*item >= TREE_STUMP001 && *item <= TREE_STUMP004) || - (*item >= GRASS_A && *item <= GRASS_C) || - (*item == TREE_SAPLING) || - (*item == TREE_APPLE_SAPLING) || - (*item == TREE_ORANGE_SAPLING) || - (*item == TREE_PEACH_SAPLING) || - (*item == TREE_PEAR_SAPLING) || - (*item == TREE_CHERRY_SAPLING) || - (*item == TREE_1000BELLS_SAPLING) || - (*item == TREE_10000BELLS_SAPLING) || - (*item == TREE_30000BELLS_SAPLING) || - (*item == TREE_100BELLS_SAPLING) || - (*item == DEAD_SAPLING) || - (*item >= TREE_PALM_STUMP001 && *item <= TREE_PALM_STUMP004) || - (*item == TREE_PALM_SAPLING) || - (*item == DEAD_PALM_SAPLING) || - (*item >= CEDAR_TREE_STUMP001 && *item <= CEDAR_TREE_STUMP004) || - (*item == CEDAR_TREE_SAPLING) || - (*item == DEAD_CEDAR_SAPLING) || - (*item >= GOLD_TREE_STUMP001 && *item <= GOLD_TREE_STUMP004) || - (*item == GOLD_TREE_SAPLING) || - (*item == DEAD_GOLD_SAPLING) - ) { - res = TRUE; - } + if ((*item >= FLOWER_LEAVES_PANSIES0 && *item <= FLOWER_TULIP2) || + (*item >= TREE_STUMP001 && *item <= TREE_STUMP004) || (*item >= GRASS_A && *item <= GRASS_C) || + (*item == TREE_SAPLING) || (*item == TREE_APPLE_SAPLING) || (*item == TREE_ORANGE_SAPLING) || + (*item == TREE_PEACH_SAPLING) || (*item == TREE_PEAR_SAPLING) || (*item == TREE_CHERRY_SAPLING) || + (*item == TREE_1000BELLS_SAPLING) || (*item == TREE_10000BELLS_SAPLING) || (*item == TREE_30000BELLS_SAPLING) || + (*item == TREE_100BELLS_SAPLING) || (*item == DEAD_SAPLING) || + (*item >= TREE_PALM_STUMP001 && *item <= TREE_PALM_STUMP004) || (*item == TREE_PALM_SAPLING) || + (*item == DEAD_PALM_SAPLING) || (*item >= CEDAR_TREE_STUMP001 && *item <= CEDAR_TREE_STUMP004) || + (*item == CEDAR_TREE_SAPLING) || (*item == DEAD_CEDAR_SAPLING) || + (*item >= GOLD_TREE_STUMP001 && *item <= GOLD_TREE_STUMP004) || (*item == GOLD_TREE_SAPLING) || + (*item == DEAD_GOLD_SAPLING)) { + res = TRUE; + } - return res; + return res; } static int mFI_CheckDigGetItem(mActor_name_t* item, xyz_t wpos) { - int res = FALSE; - - if (mFI_Wpos2DepositGet(wpos) == TRUE) { - if (mFI_CheckItemNoHole(*item) == FALSE) { - res = TRUE; - } - } - else { - int valid = (*item >= BURIED_PITFALL_START && *item <= BURIED_PITFALL_END) || *item == SHINE_SPOT; + int res = FALSE; - if (valid == TRUE) { - item[0] = bg_item_fg_sub_dig2take_conv(*item); - res = TRUE; - } - } + if (mFI_Wpos2DepositGet(wpos) == TRUE) { + if (mFI_CheckItemNoHole(*item) == FALSE) { + res = TRUE; + } + } else { + int valid = (*item >= BURIED_PITFALL_HOLE_START && *item <= BURIED_PITFALL_HOLE_END) || *item == SHINE_SPOT; - return res; + if (valid == TRUE) { + item[0] = bg_item_fg_sub_dig2take_conv(*item); + res = TRUE; + } + } + + return res; } static int mFI_CheckDigDiffPosArea(xyz_t wpos0, xyz_t wpos1) { - int res = FALSE; + int res = FALSE; - if ( - (wpos0.x > wpos1.x + mFI_UT_WORLDSIZE_HALF_X_F) || - (wpos0.x < wpos1.x - mFI_UT_WORLDSIZE_HALF_X_F) || - (wpos0.z > wpos1.z + mFI_UT_WORLDSIZE_HALF_Z_F) || - (wpos0.z < wpos1.z - mFI_UT_WORLDSIZE_HALF_Z_F) - ) { - res = TRUE; - } + if ((wpos0.x > wpos1.x + mFI_UT_WORLDSIZE_HALF_X_F) || (wpos0.x < wpos1.x - mFI_UT_WORLDSIZE_HALF_X_F) || + (wpos0.z > wpos1.z + mFI_UT_WORLDSIZE_HALF_Z_F) || (wpos0.z < wpos1.z - mFI_UT_WORLDSIZE_HALF_Z_F)) { + res = TRUE; + } - return res; + return res; } typedef int (*mFI_DIG_CHECK_PROC)(mActor_name_t*, xyz_t); extern int mFI_GetDigStatus(mActor_name_t* item, xyz_t wpos, int golden_shovel) { - int status = mFI_DIGSTATUS_CANCEL; - mActor_name_t* dig_item_p = mFI_GetUnitFG(wpos); - item[0] = EMPTY_NO; + int status = mFI_DIGSTATUS_CANCEL; + mActor_name_t* dig_item_p = mFI_GetUnitFG(wpos); + item[0] = EMPTY_NO; - if (dig_item_p != NULL) { - item[0] = dig_item_p[0]; + if (dig_item_p != NULL) { + item[0] = dig_item_p[0]; - if (mCoBG_CheckHole(wpos) == TRUE) { - static mFI_DIG_CHECK_PROC dig_check[mFI_DIGSTATUS_NUM] = { - &mFI_CheckNothing, - &mFI_CheckDigHole, - &mFI_CheckDigHoleFillin, - &mFI_CheckDigNoItem, - &mFI_CheckDigRemoveItem, - &mFI_CheckDigGetItem - }; + if (mCoBG_CheckHole(wpos) == TRUE) { + static mFI_DIG_CHECK_PROC dig_check[mFI_DIGSTATUS_NUM] = { &mFI_CheckNothing, &mFI_CheckDigHole, + &mFI_CheckDigHoleFillin, &mFI_CheckDigNoItem, + &mFI_CheckDigRemoveItem, &mFI_CheckDigGetItem }; - static xyz_t old_pos = { 0.0f, 0.0f, 0.0f }; + static xyz_t old_pos = { 0.0f, 0.0f, 0.0f }; - int i; + int i; - for (i = 0; i < mFI_DIGSTATUS_NUM; i++) { - int res = (*dig_check[i])(item, wpos); + for (i = 0; i < mFI_DIGSTATUS_NUM; i++) { + int res = (*dig_check[i])(item, wpos); - if (res == TRUE) { - status = i; + if (res == TRUE) { + status = i; - if (i != mFI_DIGSTATUS_DIG) { - break; - } + if (i != mFI_DIGSTATUS_DIG) { + break; + } - if (golden_shovel == TRUE) { - + if (golden_shovel == TRUE) { - /* 10% chance of getting 100 bells with golden shovel */ - if (mFI_CheckDigDiffPosArea(wpos, old_pos) == TRUE && RANDOM(10) == 1) { - status = mFI_DIGSTATUS_GET_ITEM; - item[0] = ITM_MONEY_100; + /* 10% chance of getting 100 bells with golden shovel */ + if (mFI_CheckDigDiffPosArea(wpos, old_pos) == TRUE && RANDOM(10) == 1) { + status = mFI_DIGSTATUS_GET_ITEM; + item[0] = ITM_MONEY_100; + } + } + + old_pos = wpos; + break; + } } - } - - old_pos = wpos; - break; + } else if (mCoBG_CheckSkySwing(wpos) == TRUE) { + status = mFI_DIGSTATUS_MISS; } - } } - else if (mCoBG_CheckSkySwing(wpos) == TRUE) { - status = mFI_DIGSTATUS_MISS; - } - } - return status; + return status; } static void mFI_ClearHoleBlock_sub(mActor_name_t* fg_items_p) { - int i; + int i; - if (fg_items_p == NULL) { - return; - } - - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (*fg_items_p >= HOLE_START && *fg_items_p <= HOLE_END) { - fg_items_p[0] = EMPTY_NO; - } - else if (*fg_items_p == HOLE_SHINE) { - fg_items_p[0] = EMPTY_NO; + if (fg_items_p == NULL) { + return; } - fg_items_p++; - } + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (*fg_items_p >= HOLE_START && *fg_items_p <= HOLE_END) { + fg_items_p[0] = EMPTY_NO; + } else if (*fg_items_p == HOLE_SHINE) { + fg_items_p[0] = EMPTY_NO; + } + + fg_items_p++; + } } extern void mFI_ClearHoleBlock(int bx, int bz) { - mFI_ClearHoleBlock_sub(mFI_BkNumtoUtFGTop(bx, bz)); + mFI_ClearHoleBlock_sub(mFI_BkNumtoUtFGTop(bx, bz)); } extern void mFI_ClearBeecomb(int bx, int bz) { - mActor_name_t* fg_items_p = mFI_BkNumtoUtFGTop(bx, bz); - int i; - - if (fg_items_p != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (*fg_items_p == HONEYCOMB) { - fg_items_p[0] = EMPTY_NO; - } + mActor_name_t* fg_items_p = mFI_BkNumtoUtFGTop(bx, bz); + int i; - fg_items_p++; + if (fg_items_p != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (*fg_items_p == HONEYCOMB) { + fg_items_p[0] = EMPTY_NO; + } + + fg_items_p++; + } } - } } static void mFI_SetFGStructureKeep(mActor_name_t* item_p, mActor_name_t replace_item, int destroy_item) { - if (destroy_item == FALSE) { - mPB_keep_item(*item_p); - } + if (destroy_item == FALSE) { + mPB_keep_item(*item_p); + } - item_p[0] = replace_item; + item_p[0] = replace_item; } static mActor_name_t l_set_fg_table[3 * 3]; -static int mFI_SetStructure11( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - fg_items_p += mFI_GetUtNum(ut_x, ut_z); - mFI_SetFGStructureKeep(fg_items_p, replace_item, destroy_item); - mFI_BkUtNum2DepositOFF(bx, bz, ut_x, ut_z); - mCoBG_Ut2SetDefaultOffset(ut_x + bx * UT_X_NUM, ut_z + bz * UT_Z_NUM); - return TRUE; +static int mFI_SetStructure11(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + fg_items_p += mFI_GetUtNum(ut_x, ut_z); + mFI_SetFGStructureKeep(fg_items_p, replace_item, destroy_item); + mFI_BkUtNum2DepositOFF(bx, bz, ut_x, ut_z); + mCoBG_Ut2SetDefaultOffset(ut_x + bx * UT_X_NUM, ut_z + bz * UT_Z_NUM); + return TRUE; } -static int mFI_SetStructure21( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure21(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z >= 0 && ut_z < UT_Z_NUM - 1) { - int i; + if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z >= 0 && ut_z < UT_Z_NUM - 1) { + int i; - for (i = 0; i < 2; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 2; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[0] = replace_item; + for (i = 0; i < 2; i++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + i, ut_z, destroy_item); + set_fg_table++; + } + + res = TRUE; } - set_fg_table[0] = replace_item; - for (i = 0; i < 2; i++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + i, ut_z, destroy_item); - set_fg_table++; - } - - res = TRUE; - } - - return res; + return res; } -static int mFI_SetStructure22( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure22(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z >= 0 && ut_z < UT_Z_NUM - 1) { - int i; - int j; + if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z >= 0 && ut_z < UT_Z_NUM - 1) { + int i; + int j; - for (i = 0; i < 2 * 2; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 2 * 2; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[0] = replace_item; + for (i = 0; i < 2; i++) { + for (j = 0; j < 2; j++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); + set_fg_table++; + } + } + + res = TRUE; } - set_fg_table[0] = replace_item; - for (i = 0; i < 2; i++) { - for (j = 0; j < 2; j++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); - set_fg_table++; - } - } - - res = TRUE; - } - - return res; + return res; } -static int mFI_SetStructure23( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure23(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { - int i; - int j; + if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { + int i; + int j; - for (i = 0; i < 2 * 3; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 2 * 3; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[2] = replace_item; + for (i = -1; i < 2; i++) { + for (j = 0; j < 2; j++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); + set_fg_table++; + } + } + + res = TRUE; } - set_fg_table[2] = replace_item; - for (i = -1; i < 2; i++) { - for (j = 0; j < 2; j++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); - set_fg_table++; - } - } - - res = TRUE; - } - - return res; + return res; } -static int mFI_SetStructure32( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure32(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { - int i; - int j; + if (ut_x >= 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { + int i; + int j; - for (i = 0; i < 3 * 2; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 3 * 2; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[1] = replace_item; + for (i = 0; i < 2; i++) { + for (j = -1; j < 2; j++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); + set_fg_table++; + } + } + + res = TRUE; } - set_fg_table[1] = replace_item; - for (i = 0; i < 2; i++) { - for (j = -1; j < 2; j++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); - set_fg_table++; - } - } - - res = TRUE; - } - - return res; + return res; } -static int mFI_SetStructure33( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure33(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, int bx, + int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x > 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { - int i; - int j; + if (ut_x > 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { + int i; + int j; - for (i = 0; i < 3 * 3; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 3 * 3; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[4] = replace_item; + for (i = -1; i < 2; i++) { + for (j = -1; j < 2; j++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); + set_fg_table++; + } + } + + res = TRUE; } - set_fg_table[4] = replace_item; - for (i = -1; i < 2; i++) { - for (j = -1; j < 2; j++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); - set_fg_table++; - } - } - - res = TRUE; - } - - return res; + return res; } -static int mFI_SetStructure33_main_back( - mActor_name_t* fg_items_p, - mActor_name_t replace_item, - mActor_name_t fill_item, - int bx, - int bz, - int ut_x, - int ut_z, - int destroy_item -) { - mActor_name_t* set_fg_table = l_set_fg_table; - int res = FALSE; +static int mFI_SetStructure33_main_back(mActor_name_t* fg_items_p, mActor_name_t replace_item, mActor_name_t fill_item, + int bx, int bz, int ut_x, int ut_z, int destroy_item) { + mActor_name_t* set_fg_table = l_set_fg_table; + int res = FALSE; - if (ut_x > 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { - int i; - int j; + if (ut_x > 0 && ut_x < UT_X_NUM - 1 && ut_z > 0 && ut_z < UT_Z_NUM - 1) { + int i; + int j; - for (i = 0; i < 3 * 3; i++) { - set_fg_table[i] = fill_item; + for (i = 0; i < 3 * 3; i++) { + set_fg_table[i] = fill_item; + } + + set_fg_table[1] = replace_item; + for (i = -1; i < 2; i++) { + for (j = -1; j < 2; j++) { + mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); + set_fg_table++; + } + } + + res = TRUE; } - set_fg_table[1] = replace_item; - for (i = -1; i < 2; i++) { - for (j = -1; j < 2; j++) { - mFI_SetStructure11(fg_items_p, *set_fg_table, fill_item, bx, bz, ut_x + j, ut_z + i, destroy_item); - set_fg_table++; - } - } - - res = TRUE; - } - - return res; + return res; } static u8 l_structure_set_type[STRUCTURE_END - STRUCTURE_START] = { - 0x0c, 0x0c, 0x0c, 0x0c, 0x05, 0x05, 0x05, 0x05, - 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x0a, 0x0a, - 0x0a, 0x0a, 0x05, 0x05, 0x00, 0x06, 0x06, 0x05, - 0x05, 0x06, 0x05, 0x00, 0x06, 0x06, 0x00, 0x00, - 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x05, 0x05, - 0x04, 0x0a, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, - 0x0c, 0x0c, 0x0c + 0x0c, 0x0c, 0x0c, 0x0c, 0x05, 0x05, 0x05, 0x05, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0x0a, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x00, 0x06, 0x06, 0x05, 0x05, 0x06, 0x05, + 0x00, 0x06, 0x06, 0x00, 0x00, 0x05, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x05, 0x05, 0x04, 0x0a, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c }; typedef int (*mFI_SET_STRUCTURE_PROC)(mActor_name_t*, mActor_name_t, mActor_name_t, int, int, int, int, int); extern int mFI_SetFGStructure_common(mActor_name_t structure_name, int bx, int bz, int ut_x, int ut_z, int set_type) { - static mFI_SET_STRUCTURE_PROC set_structure[12] = { - &mFI_SetStructure11, - &mFI_SetStructure21, - &mFI_SetStructure22, - &mFI_SetStructure23, - &mFI_SetStructure32, - &mFI_SetStructure33, - &mFI_SetStructure33_main_back, + static mFI_SET_STRUCTURE_PROC set_structure[12] = { + &mFI_SetStructure11, &mFI_SetStructure21, &mFI_SetStructure22, &mFI_SetStructure23, + &mFI_SetStructure32, &mFI_SetStructure33, &mFI_SetStructure33_main_back, - &mFI_SetStructure11, - &mFI_SetStructure22, - &mFI_SetStructure23, - &mFI_SetStructure33, - &mFI_SetStructure33_main_back - }; + &mFI_SetStructure11, &mFI_SetStructure22, &mFI_SetStructure23, &mFI_SetStructure33, + &mFI_SetStructure33_main_back + }; - static mActor_name_t fill_name_table[mFI_SET_STRUCTURE_NUM] = { RSV_NO, EMPTY_NO }; - static int keep_status_table[mFI_SET_STRUCTURE_NUM] = { FALSE, TRUE }; + static mActor_name_t fill_name_table[mFI_SET_STRUCTURE_NUM] = { RSV_NO, EMPTY_NO }; + static int keep_status_table[mFI_SET_STRUCTURE_NUM] = { FALSE, TRUE }; - mActor_name_t* fg_p = NULL; - int keep_status = keep_status_table[set_type]; - int res = FALSE; + mActor_name_t* fg_p = NULL; + int keep_status = keep_status_table[set_type]; + int res = FALSE; - if (mFI_CheckFieldData() == TRUE) { - if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { - if (mFI_BlockCheck(bx, bz) == TRUE && ITEM_NAME_GET_TYPE(structure_name) == NAME_TYPE_STRUCT) { - fg_p = mFI_BkNumtoUtFGTop(bx, bz); - } - } - else { - int fg_bx = bx - 1; - int fg_bz = bz - 1; + if (mFI_CheckFieldData() == TRUE) { + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { + if (mFI_BlockCheck(bx, bz) == TRUE && ITEM_NAME_GET_TYPE(structure_name) == NAME_TYPE_STRUCT) { + fg_p = mFI_BkNumtoUtFGTop(bx, bz); + } + } else { + int fg_bx = bx - 1; + int fg_bz = bz - 1; - if (fg_bx >= 0 && fg_bx < FG_BLOCK_X_NUM && fg_bz >= 0 && fg_bz < FG_BLOCK_Z_NUM) { - fg_p = Save_Get(fg[fg_bz][fg_bx]).items[0]; - } - } - - if (fg_p != NULL) { - u8 structure_type = l_structure_set_type[(int)(structure_name - STRUCTURE_START)]; - - if (structure_type < 0xC) { - mActor_name_t fill_name = fill_name_table[set_type]; - - if (set_type == mFI_SET_STRUCTURE_REMOVE) { - if (structure_type >= 7) { - structure_name = mFM_GetReseveName(bx, bz); - } - else { - structure_name = fill_name; - } + if (fg_bx >= 0 && fg_bx < FG_BLOCK_X_NUM && fg_bz >= 0 && fg_bz < FG_BLOCK_Z_NUM) { + fg_p = Save_Get(fg[fg_bz][fg_bx]).items[0]; + } } - res = (*set_structure[structure_type])(fg_p, structure_name, fill_name, bx, bz, ut_x, ut_z, keep_status); + if (fg_p != NULL) { + u8 structure_type = l_structure_set_type[(int)(structure_name - STRUCTURE_START)]; - if (res == TRUE) { - mFI_SetFGUpData(); + if (structure_type < 0xC) { + mActor_name_t fill_name = fill_name_table[set_type]; + + if (set_type == mFI_SET_STRUCTURE_REMOVE) { + if (structure_type >= 7) { + structure_name = mFM_GetReseveName(bx, bz); + } else { + structure_name = fill_name; + } + } + + res = + (*set_structure[structure_type])(fg_p, structure_name, fill_name, bx, bz, ut_x, ut_z, keep_status); + + if (res == TRUE) { + mFI_SetFGUpData(); + } + } } - } } - } - return res; + return res; } -extern int mFI_CheckStructureArea(int ut_x, int ut_z, mActor_name_t structure_name, int structure_ut_x, int structure_ut_z) { - static s8 set_area_table[12][4] = { - { - 0, 0, - 0, 0 - }, - { - 0, 1, - 0, 0 - }, - { - 0, 1, - 0, 1 - }, - { - -1, 1, - 0, 1 - }, - { - -1, 1, - -1, 1 - }, - { - -1, 1, - -1, 1 - }, - { - 0, 0, - 0, 0 - }, +extern int mFI_CheckStructureArea(int ut_x, int ut_z, mActor_name_t structure_name, int structure_ut_x, + int structure_ut_z) { + static s8 set_area_table[12][4] = { { 0, 0, 0, 0 }, { 0, 1, 0, 0 }, { 0, 1, 0, 1 }, { -1, 1, 0, 1 }, + { -1, 1, -1, 1 }, { -1, 1, -1, 1 }, { 0, 0, 0, 0 }, - { - 0, 1, - 0, 1 - }, - { - -1, 1, - -1, 1 - }, - { - -1, 1, - -1, 1 - }, - { - 0, 0, - 0, 0 - }, - { - 0, 0, - 0, 0 + { 0, 1, 0, 1 }, { -1, 1, -1, 1 }, { -1, 1, -1, 1 }, { 0, 0, 0, 0 }, + { 0, 0, 0, 0 } }; + + int start_x = structure_ut_x; + int start_z = structure_ut_z; + u8 structure_type; + s8* set_area; + int end_x = structure_ut_x; + int end_z = structure_ut_z; + int z; + + if (ITEM_NAME_GET_TYPE(structure_name) == NAME_TYPE_STRUCT) { + structure_type = l_structure_set_type[(int)(structure_name - STRUCTURE_START)]; + + if (structure_type < 12) { + set_area = set_area_table[structure_type]; + + start_x += set_area[0]; + end_x += set_area[1]; + start_z += set_area[2]; + end_z += set_area[3]; + } } - }; - int start_x = structure_ut_x; - int start_z = structure_ut_z; - u8 structure_type; - s8* set_area; - int end_x = structure_ut_x; - int end_z = structure_ut_z; - int z; - - if (ITEM_NAME_GET_TYPE(structure_name) == NAME_TYPE_STRUCT) { - structure_type = l_structure_set_type[(int)(structure_name - STRUCTURE_START)]; - - if (structure_type < 12) { - set_area = set_area_table[structure_type]; - - start_x += set_area[0]; - end_x += set_area[1]; - start_z += set_area[2]; - end_z += set_area[3]; + for (z = start_z; z < end_z + 1; z++) { + int x; + for (x = start_x; x < end_x + 1; x++) { + if (ut_x == x && ut_z == z) { + return TRUE; + } + } } - } - for (z = start_z; z < end_z + 1; z++) { - int x; - for (x = start_x; x < end_x + 1; x++) { - if (ut_x == x && ut_z == z) { - return TRUE; - } - } - } - - return FALSE; + return FALSE; } -/* +/* * @BUG: The RNG call will only be in the range [0, 3], * meaning you can never get an orange unless your town's * fruit is peaches and you roll a 3 (peach). - * + * * Additionally, this function is "bad" because it gives a 50% chance * for the next fruit to be rolled if you have apples, pears, or cherries. * The other two fruits are 25% each. */ #ifndef BUGFIXES extern mActor_name_t mFI_GetOtherFruit() { - mActor_name_t other_fruit = ITM_FOOD_START | RANDOM(4); + mActor_name_t other_fruit = ITM_FOOD_START | RANDOM(4); - if (other_fruit == Save_Get(fruit)) { - other_fruit++; - } + if (other_fruit == Save_Get(fruit)) { + other_fruit++; + } - return other_fruit; + return other_fruit; } #else /* This implementation gives an equal 25% chance for all non-native fruit to be rolled */ extern mActor_name_t mFI_GetOtherFruit() { - mActor_name_t other_fruit = ITM_FOOD_START | RANDOM(4); + mActor_name_t other_fruit = ITM_FOOD_START | RANDOM(4); - /* simple fix is to add one if the random fruit is also greater than the town fruit */ - if (other_fruit >= Save_Get(fruit)) { - other_fruit++; - } + /* simple fix is to add one if the random fruit is also greater than the town fruit */ + if (other_fruit >= Save_Get(fruit)) { + other_fruit++; + } - return other_fruit; + return other_fruit; } #endif extern int mFI_CheckFGNpcOn(mActor_name_t item) { - int res = FALSE; + int res = FALSE; - if (item == EMPTY_NO) { - res = TRUE; - } - else { - switch (ITEM_NAME_GET_TYPE(item)) { - case NAME_TYPE_ITEM0: - { - if ( - (item == TREE_SAPLING) || - (item == TREE_APPLE_SAPLING) || - (item == TREE_ORANGE_SAPLING) || - (item == TREE_PEACH_SAPLING) || - (item == TREE_PEAR_SAPLING) || - (item == TREE_CHERRY_SAPLING) || - (item == TREE_1000BELLS_SAPLING) || - (item == TREE_10000BELLS_SAPLING) || - (item == TREE_30000BELLS_SAPLING) || - (item == TREE_100BELLS_SAPLING) || - (item == TREE_PALM_SAPLING) || - (item == CEDAR_TREE_SAPLING) || - (item == GOLD_TREE_SAPLING) || - (item >= FLOWER_LEAVES_PANSIES0 && item <= FLOWER_TULIP2) || - (item >= GRASS_A && item <= GRASS_C) - ){ - res = TRUE; - } - - break; - } - - case NAME_TYPE_FTR0: - case NAME_TYPE_ITEM1: - case NAME_TYPE_FTR1: - case NAME_TYPE_WARP: - case NAME_TYPE_ITEM2: - { + if (item == EMPTY_NO) { res = TRUE; - break; - } - } - } + } else { + switch (ITEM_NAME_GET_TYPE(item)) { + case NAME_TYPE_ITEM0: { + if ((item == TREE_SAPLING) || (item == TREE_APPLE_SAPLING) || (item == TREE_ORANGE_SAPLING) || + (item == TREE_PEACH_SAPLING) || (item == TREE_PEAR_SAPLING) || (item == TREE_CHERRY_SAPLING) || + (item == TREE_1000BELLS_SAPLING) || (item == TREE_10000BELLS_SAPLING) || + (item == TREE_30000BELLS_SAPLING) || (item == TREE_100BELLS_SAPLING) || + (item == TREE_PALM_SAPLING) || (item == CEDAR_TREE_SAPLING) || (item == GOLD_TREE_SAPLING) || + (item >= FLOWER_LEAVES_PANSIES0 && item <= FLOWER_TULIP2) || (item >= GRASS_A && item <= GRASS_C)) { + res = TRUE; + } - return res; + break; + } + + case NAME_TYPE_FTR0: + case NAME_TYPE_ITEM1: + case NAME_TYPE_FTR1: + case NAME_TYPE_WARP: + case NAME_TYPE_ITEM2: { + res = TRUE; + break; + } + } + } + + return res; } extern int mFI_CheckLapPolice(int bx, int bz, int ut_x, int ut_z) { - int p_bx; - int p_bz; - int p_ut_x; - int p_ut_z; + int p_bx; + int p_bz; + int p_ut_x; + int p_ut_z; - int res = FALSE; + int res = FALSE; - if (mFI_CheckFieldData() == TRUE && mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { - mFM_GetPolicePos(&p_bx, &p_bz, &p_ut_x, &p_ut_z); + if (mFI_CheckFieldData() == TRUE && mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { + mFM_GetPolicePos(&p_bx, &p_bz, &p_ut_x, &p_ut_z); - if (bx == p_bx && bz == p_bz && ut_x == p_ut_x && ut_z == p_ut_z) { - res = TRUE; + if (bx == p_bx && bz == p_bz && ut_x == p_ut_x && ut_z == p_ut_z) { + res = TRUE; + } } - } - return res; + return res; } extern int mFI_GetWaveUtinBlock(int* ut_x, int* ut_z, int bx, int bz) { - mCoBG_Collision_u* col_p; - mCoBG_Collision_u* col; - int num; - int sel; - int i; - int res; + mCoBG_Collision_u* col_p; + mCoBG_Collision_u* col; + int num; + int sel; + int i; + int res; - num = 0; - res = FALSE; - ut_x[0] = 0; - ut_z[0] = 0; - - col_p = mFI_GetBkNum2ColTop(bx, bz); - col = col_p; + num = 0; + res = FALSE; + ut_x[0] = 0; + ut_z[0] = 0; - if (col_p != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { - num++; - } + col_p = mFI_GetBkNum2ColTop(bx, bz); + col = col_p; - col_p++; - } + if (col_p != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { + num++; + } - if (num > 0) { - col_p = col; - sel = RANDOM(num); - - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { - if (sel <= 0) { - ut_x[0] = i & 0xF; - ut_z[0] = i >> 4; - res = TRUE; - - break; - } - else { - sel--; - } + col_p++; } - col_p++; - } - } - } + if (num > 0) { + col_p = col; + sel = RANDOM(num); - return res; + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { + if (sel <= 0) { + ut_x[0] = i & 0xF; + ut_z[0] = i >> 4; + res = TRUE; + + break; + } else { + sel--; + } + } + + col_p++; + } + } + } + + return res; } -extern int mFI_ClearBlockItemRandom_common(mActor_name_t item, int clear_num, mActor_name_t* fg_p, u16* deposit_p, int delete_buried) { - static u16 candidate[UT_Z_NUM]; - - u16* candidate_p = candidate; - mActor_name_t* fg_p2 = fg_p; - u16* deposit_p2 = deposit_p; - int num = 0; - int selected; - int cleared_num = 0; - int ut_z; - int ut_x; +extern int mFI_ClearBlockItemRandom_common(mActor_name_t item, int clear_num, mActor_name_t* fg_p, u16* deposit_p, + int delete_buried) { + static u16 candidate[UT_Z_NUM]; - if (clear_num > 0 && clear_num <= UT_TOTAL_NUM) { - if (fg_p != NULL) { - bzero(candidate, sizeof(candidate)); + u16* candidate_p = candidate; + mActor_name_t* fg_p2 = fg_p; + u16* deposit_p2 = deposit_p; + int num = 0; + int selected; + int cleared_num = 0; + int ut_z; + int ut_x; - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (*fg_p == item && (delete_buried == TRUE || (deposit_p != NULL && mFI_GetLineDeposit(deposit_p, ut_x) == FALSE))) { - num++; - candidate_p[0] |= (1 << ut_x); - } + if (clear_num > 0 && clear_num <= UT_TOTAL_NUM) { + if (fg_p != NULL) { + bzero(candidate, sizeof(candidate)); - fg_p++; + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (*fg_p == item && (delete_buried == TRUE || + (deposit_p != NULL && mFI_GetLineDeposit(deposit_p, ut_x) == FALSE))) { + num++; + candidate_p[0] |= (1 << ut_x); + } + + fg_p++; + } + + deposit_p++; + candidate_p++; + } } - deposit_p++; - candidate_p++; - } + if (num > 0) { + if (num <= clear_num) { + fg_p = fg_p2; + deposit_p = deposit_p2; + candidate_p = candidate; + + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (((candidate_p[0] >> ut_x) & 1) == 1) { + fg_p[0] = EMPTY_NO; + + if (delete_buried == TRUE && deposit_p != NULL) { + mFI_LineDepositOFF(deposit_p, ut_x); + } + } + + fg_p++; + } + + deposit_p++; + candidate_p++; + } + + cleared_num = num; + } else { + while (clear_num != 0 && num != 0) { + fg_p = fg_p2; + deposit_p = deposit_p2; + candidate_p = candidate; + + selected = RANDOM(num); + + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (((candidate_p[0] >> ut_x) & 1) == 1) { + if (selected <= 0) { + fg_p[0] = EMPTY_NO; + + if (delete_buried == TRUE && deposit_p != NULL) { + mFI_LineDepositOFF(deposit_p, ut_x); + } + + ut_z = UT_Z_NUM; + num--; + break; + } else { + selected--; + } + } + + fg_p++; + } + + deposit_p++; + candidate_p++; + } + + cleared_num++; + clear_num--; + } + } + } } - if (num > 0) { - if (num <= clear_num) { - fg_p = fg_p2; - deposit_p = deposit_p2; - candidate_p = candidate; - - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (((candidate_p[0] >> ut_x) & 1) == 1) { - fg_p[0] = EMPTY_NO; - - if (delete_buried == TRUE && deposit_p != NULL) { - mFI_LineDepositOFF(deposit_p, ut_x); - } - } - - fg_p++; - } - - deposit_p++; - candidate_p++; - } - - cleared_num = num; - } - else { - while (clear_num != 0 && num != 0) { - fg_p = fg_p2; - deposit_p = deposit_p2; - candidate_p = candidate; - - selected = RANDOM(num); - - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (((candidate_p[0] >> ut_x) & 1) == 1) { - if (selected <= 0) { - fg_p[0] = EMPTY_NO; - - if (delete_buried == TRUE && deposit_p != NULL) { - mFI_LineDepositOFF(deposit_p, ut_x); - } - - ut_z = UT_Z_NUM; - num--; - break; - } - else { - selected--; - } - } - - fg_p++; - } - - deposit_p++; - candidate_p++; - } - - cleared_num++; - clear_num--; - } - } - } - } - - return cleared_num; + return cleared_num; } static int l_reserve_set_shell; extern void mFI_SetFirstSetShell() { - l_reserve_set_shell = mFI_SET_SHELL_NUM; + l_reserve_set_shell = mFI_SET_SHELL_NUM; } static int mFI_CheckSetShell() { - int res = FALSE; + int res = FALSE; - /* Refresh shells every 10th minute */ - if (Common_Get(time.rtc_time.min) % 10 == 0) { - res = TRUE; - } + /* Refresh shells every 10th minute */ + if (Common_Get(time.rtc_time.min) % 10 == 0) { + res = TRUE; + } - return res; + return res; } static int mFI_GetCanSetShellNum(u8* shell_num, int bx, int bz) { - mCoBG_Collision_u* col_p; - mActor_name_t* fg_p; - u16* deposit_p; - int valid_ut_num = 0; - int ut_z; - int ut_x; - - fg_p = mFI_BkNumtoUtFGTop(bx, bz); - col_p = mFI_GetBkNum2ColTop(bx, bz); - deposit_p = mFI_GetDepositP(bx, bz); + mCoBG_Collision_u* col_p; + mActor_name_t* fg_p; + u16* deposit_p; + int valid_ut_num = 0; + int ut_z; + int ut_x; - if (fg_p != NULL && col_p != NULL && deposit_p != NULL) { - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (*fg_p == EMPTY_NO && mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { - valid_ut_num++; - } - else if ( - ((*fg_p >= ITM_SHELL0 && *fg_p <= ITM_SHELL7) || *fg_p == ITM_FOOD_COCONUT) && - mFI_GetBlockDeposit(deposit_p, ut_x, ut_z) == FALSE - ) { - shell_num[0]++; - } + fg_p = mFI_BkNumtoUtFGTop(bx, bz); + col_p = mFI_GetBkNum2ColTop(bx, bz); + deposit_p = mFI_GetDepositP(bx, bz); - fg_p++; - col_p++; - } + if (fg_p != NULL && col_p != NULL && deposit_p != NULL) { + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (*fg_p == EMPTY_NO && mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { + valid_ut_num++; + } else if (((*fg_p >= ITM_SHELL0 && *fg_p <= ITM_SHELL7) || *fg_p == ITM_FOOD_COCONUT) && + mFI_GetBlockDeposit(deposit_p, ut_x, ut_z) == FALSE) { + shell_num[0]++; + } + + fg_p++; + col_p++; + } + } } - } - return valid_ut_num; + return valid_ut_num; } static u8 l_sandy_beach_bx[7] = { 1, 2, 3, 4, 5, mISL_BLOCK_X0, mISL_BLOCK_X1 }; static u8 l_sandy_beach_bz[7] = { 6, 6, 6, 6, 6, mISL_BLOCK_Z, mISL_BLOCK_Z }; -static void mFI_ResearchShell(u8* can_set_ut_num, u8* on_shell_num, int* total_set_num, int* total_blocks, xyz_t player_pos) { - int player_bx; - int player_bz; - int i; - - mFI_Wpos2BlockNum(&player_bx, &player_bz, player_pos); - for (i = 0; i < 7; i++) { - int bx = l_sandy_beach_bx[i]; - int bz = l_sandy_beach_bz[i]; - /* Don't refresh shells if the player is in the acre */ - if (bx != player_bx || bz != player_bz) { - u8 can_set_num; - - can_set_ut_num[0] = mFI_GetCanSetShellNum(on_shell_num, bx, bz); - can_set_num = *can_set_ut_num; - - if (can_set_num != 0) { - u8 on_num = *on_shell_num; - - if (on_shell_num[0] < mFI_MAX_SHELLS_PER_BLOCK) { - int add_shell_num = mFI_MAX_SHELLS_PER_BLOCK - on_num; - - if (add_shell_num > can_set_num) { - u8 add = add_shell_num - can_set_num; - - on_shell_num[0] = on_num + add; - total_set_num[0] += *can_set_ut_num; - } - else { - total_set_num[0] += add_shell_num; - } - - total_blocks[0]++; - } - else { - can_set_ut_num[0] = 0; - } - } - } - - can_set_ut_num++; - on_shell_num++; - } -} - -static void mFI_DivideShellSameSum(u8* can_set_ut_num, u8* shell_num_inblock, u8* on_shell_num, int* set_num, int* block_num) { - while (set_num[0] > 0 && block_num[0] > 0 && set_num[0] > block_num[0]) { +static void mFI_ResearchShell(u8* can_set_ut_num, u8* on_shell_num, int* total_set_num, int* total_blocks, + xyz_t player_pos) { + int player_bx; + int player_bz; int i; + mFI_Wpos2BlockNum(&player_bx, &player_bz, player_pos); for (i = 0; i < 7; i++) { - if (can_set_ut_num[0] != 0 && on_shell_num[0] < mFI_MAX_SHELLS_PER_BLOCK) { - shell_num_inblock[0]++; - on_shell_num[0]++; - set_num[0]--; + int bx = l_sandy_beach_bx[i]; + int bz = l_sandy_beach_bz[i]; + /* Don't refresh shells if the player is in the acre */ + if (bx != player_bx || bz != player_bz) { + u8 can_set_num; - if (on_shell_num[0] >= mFI_MAX_SHELLS_PER_BLOCK) { - block_num[0]--; + can_set_ut_num[0] = mFI_GetCanSetShellNum(on_shell_num, bx, bz); + can_set_num = *can_set_ut_num; + + if (can_set_num != 0) { + u8 on_num = *on_shell_num; + + if (on_shell_num[0] < mFI_MAX_SHELLS_PER_BLOCK) { + int add_shell_num = mFI_MAX_SHELLS_PER_BLOCK - on_num; + + if (add_shell_num > can_set_num) { + u8 add = add_shell_num - can_set_num; + + on_shell_num[0] = on_num + add; + total_set_num[0] += *can_set_ut_num; + } else { + total_set_num[0] += add_shell_num; + } + + total_blocks[0]++; + } else { + can_set_ut_num[0] = 0; + } + } } - } - shell_num_inblock++; - on_shell_num++; - can_set_ut_num++; + can_set_ut_num++; + on_shell_num++; } - - shell_num_inblock -= 7; - on_shell_num -= 7; - can_set_ut_num -= 7; - } } -static void mFI_DivideShellRandom(u8* can_set_ut_num, u8* shell_num_inblock, u8* on_shell_num, int set_num, int block_num) { - u8* can_set_ut_num_p = can_set_ut_num; - u8* shell_num_inblock_p = shell_num_inblock; - u8* on_shell_num_p = on_shell_num; +static void mFI_DivideShellSameSum(u8* can_set_ut_num, u8* shell_num_inblock, u8* on_shell_num, int* set_num, + int* block_num) { + while (set_num[0] > 0 && block_num[0] > 0 && set_num[0] > block_num[0]) { + int i; - while (block_num > 0 && set_num > 0) { - int selected_block; - int i; - - can_set_ut_num_p = can_set_ut_num; - shell_num_inblock_p = shell_num_inblock; - on_shell_num_p = on_shell_num; - selected_block = RANDOM(block_num); + for (i = 0; i < 7; i++) { + if (can_set_ut_num[0] != 0 && on_shell_num[0] < mFI_MAX_SHELLS_PER_BLOCK) { + shell_num_inblock[0]++; + on_shell_num[0]++; + set_num[0]--; - for (i = 0; i < 7; i++) { - if ((int)can_set_ut_num_p[0] > 0 && on_shell_num_p[0] < mFI_MAX_SHELLS_PER_BLOCK) { - if (selected_block <= 0) { - shell_num_inblock_p[0]++; - on_shell_num_p[0]++; + if (on_shell_num[0] >= mFI_MAX_SHELLS_PER_BLOCK) { + block_num[0]--; + } + } - if (on_shell_num_p[0] >= mFI_MAX_SHELLS_PER_BLOCK) { - block_num--; - } - - break; + shell_num_inblock++; + on_shell_num++; + can_set_ut_num++; } - else { - selected_block--; - } - } - can_set_ut_num_p++; - on_shell_num_p++; - shell_num_inblock_p++; + shell_num_inblock -= 7; + on_shell_num -= 7; + can_set_ut_num -= 7; } +} - set_num--; - } +static void mFI_DivideShellRandom(u8* can_set_ut_num, u8* shell_num_inblock, u8* on_shell_num, int set_num, + int block_num) { + u8* can_set_ut_num_p = can_set_ut_num; + u8* shell_num_inblock_p = shell_num_inblock; + u8* on_shell_num_p = on_shell_num; + + while (block_num > 0 && set_num > 0) { + int selected_block; + int i; + + can_set_ut_num_p = can_set_ut_num; + shell_num_inblock_p = shell_num_inblock; + on_shell_num_p = on_shell_num; + selected_block = RANDOM(block_num); + + for (i = 0; i < 7; i++) { + if ((int)can_set_ut_num_p[0] > 0 && on_shell_num_p[0] < mFI_MAX_SHELLS_PER_BLOCK) { + if (selected_block <= 0) { + shell_num_inblock_p[0]++; + on_shell_num_p[0]++; + + if (on_shell_num_p[0] >= mFI_MAX_SHELLS_PER_BLOCK) { + block_num--; + } + + break; + } else { + selected_block--; + } + } + + can_set_ut_num_p++; + on_shell_num_p++; + shell_num_inblock_p++; + } + + set_num--; + } } static void mFI_DivideShell(u8* can_set_ut_num, u8* shell_num_inblock, u8* on_shell_num, int set_num, int block_num) { - mFI_DivideShellSameSum(can_set_ut_num, shell_num_inblock, on_shell_num, &set_num, &block_num); // divide shells evenly amongst acres first - mFI_DivideShellRandom(can_set_ut_num, shell_num_inblock, on_shell_num, set_num, block_num); // randomly place remaining shells + mFI_DivideShellSameSum(can_set_ut_num, shell_num_inblock, on_shell_num, &set_num, + &block_num); // divide shells evenly amongst acres first + mFI_DivideShellRandom(can_set_ut_num, shell_num_inblock, on_shell_num, set_num, + block_num); // randomly place remaining shells } static mActor_name_t mFI_GetShell(int is_island) { - static mActor_name_t normal_shell[6] = { - ITM_SHELL0, // lion's paw - ITM_SHELL1, // wentletrap - ITM_SHELL2, // venus comb - ITM_SHELL3, // prceletta - ITM_SHELL4, // sand dollar - ITM_SHELL7 // coral - }; + static mActor_name_t normal_shell[6] = { + ITM_SHELL0, // lion's paw + ITM_SHELL1, // wentletrap + ITM_SHELL2, // venus comb + ITM_SHELL3, // prceletta + ITM_SHELL4, // sand dollar + ITM_SHELL7 // coral + }; - static mActor_name_t rare_shell[2] = { - ITM_SHELL6, // conch - ITM_SHELL5 // white scallop - }; + static mActor_name_t rare_shell[2] = { + ITM_SHELL6, // conch + ITM_SHELL5 // white scallop + }; - static mActor_name_t island_rare_shell[3] = { - ITM_SHELL6, // conch - ITM_SHELL5, // white scallop - ITM_FOOD_COCONUT - }; + static mActor_name_t island_rare_shell[3] = { ITM_SHELL6, // conch + ITM_SHELL5, // white scallop + ITM_FOOD_COCONUT }; - static mActor_name_t* shell_table[3] = { - normal_shell, - rare_shell, - island_rare_shell - }; + static mActor_name_t* shell_table[3] = { normal_shell, rare_shell, island_rare_shell }; - static f32 shell_max[3] = { - 6.0f, - 2.0f, - /* @BUG - this is supposed to be 3.0f, the devs messed up. Coconuts are supposed to wash up on the beach */ - #ifndef BUGFIXES - 2.0f - #else - 3.0f - #endif - }; + static f32 shell_max[3] = { 6.0f, 2.0f, +/* @BUG - this is supposed to be 3.0f, the devs messed up. Coconuts are supposed to wash up on the beach */ +#ifndef BUGFIXES + 2.0f +#else + 3.0f +#endif + }; - int table = 0; - int index; + int table = 0; + int index; - /* 25% chance for a rare shell */ - if (RANDOM(4) == 3) { - if (is_island == TRUE) { - table = 2; + /* 25% chance for a rare shell */ + if (RANDOM(4) == 3) { + if (is_island == TRUE) { + table = 2; + } else { + table = 1; + } } - else { - table = 1; - } - } - /* Return a random shell from the selected table */ - index = (int)RANDOM_F(shell_max[table]); - return shell_table[table][index]; + /* Return a random shell from the selected table */ + index = (int)RANDOM_F(shell_max[table]); + return shell_table[table][index]; } -static void mFI_SetShellBlock(mActor_name_t* fg_p, mCoBG_Collision_u* col_p, int shell_num, u8* can_set_ut_num, int is_island) { - mActor_name_t* fg = fg_p; - mCoBG_Collision_u* col = col_p; +static void mFI_SetShellBlock(mActor_name_t* fg_p, mCoBG_Collision_u* col_p, int shell_num, u8* can_set_ut_num, + int is_island) { + mActor_name_t* fg = fg_p; + mCoBG_Collision_u* col = col_p; - if (fg_p != NULL && col_p != NULL) { - while (shell_num != 0 && can_set_ut_num[0] != 0) { - int selected = RANDOM(can_set_ut_num[0]); - int i; - - fg_p = fg; - col_p = col; + if (fg_p != NULL && col_p != NULL) { + while (shell_num != 0 && can_set_ut_num[0] != 0) { + int selected = RANDOM(can_set_ut_num[0]); + int i; - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (fg_p[0] == EMPTY_NO && mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { - if (selected <= 0) { - fg_p[0] = mFI_GetShell(is_island); - shell_num--; - can_set_ut_num[0]--; - - break; - } - else { - selected--; - } + fg_p = fg; + col_p = col; + + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (fg_p[0] == EMPTY_NO && mCoBG_CheckWaveAttr(col_p->data.unit_attribute) == TRUE) { + if (selected <= 0) { + fg_p[0] = mFI_GetShell(is_island); + shell_num--; + can_set_ut_num[0]--; + + break; + } else { + selected--; + } + } + + fg_p++; + col_p++; + } + + if (i == UT_TOTAL_NUM) { + break; + } } - - fg_p++; - col_p++; - } - - if (i == UT_TOTAL_NUM) { - break; - } } - } } static void mFI_SetShellSandyBeachBlock(u8* can_set_ut_num, u8* shell_num_inblock) { - int bz; - int shell_num; - int bx; - int i; + int bz; + int shell_num; + int bx; + int i; - for (i = 0; i < 7; i++) { - if (can_set_ut_num[0] != 0) { - shell_num = shell_num_inblock[0]; + for (i = 0; i < 7; i++) { + if (can_set_ut_num[0] != 0) { + shell_num = shell_num_inblock[0]; - if (shell_num > 0) { - bx = l_sandy_beach_bx[i]; - bz = l_sandy_beach_bz[i]; + if (shell_num > 0) { + bx = l_sandy_beach_bx[i]; + bz = l_sandy_beach_bz[i]; - mFI_SetShellBlock(mFI_BkNumtoUtFGTop(bx, bz), mFI_GetBkNum2ColTop(bx, bz), shell_num, can_set_ut_num, bz == mISL_BLOCK_Z); - } + mFI_SetShellBlock(mFI_BkNumtoUtFGTop(bx, bz), mFI_GetBkNum2ColTop(bx, bz), shell_num, can_set_ut_num, + bz == mISL_BLOCK_Z); + } + } + + can_set_ut_num++; + shell_num_inblock++; } - - can_set_ut_num++; - shell_num_inblock++; - } } static void mFI_SetShellWave(int set_num, xyz_t player_pos) { - static u8 can_set_ut_num[7]; - static u8 shell_num_inblock[7]; - static u8 on_shell_num[7]; + static u8 can_set_ut_num[7]; + static u8 shell_num_inblock[7]; + static u8 on_shell_num[7]; - int total_blocks = 0; - int total_set_num = 0; + int total_blocks = 0; + int total_set_num = 0; - bzero(can_set_ut_num, sizeof(can_set_ut_num)); - bzero(shell_num_inblock, sizeof(shell_num_inblock)); - bzero(on_shell_num, sizeof(on_shell_num)); + bzero(can_set_ut_num, sizeof(can_set_ut_num)); + bzero(shell_num_inblock, sizeof(shell_num_inblock)); + bzero(on_shell_num, sizeof(on_shell_num)); - mFI_ResearchShell(can_set_ut_num, on_shell_num, &total_set_num, &total_blocks, player_pos); + mFI_ResearchShell(can_set_ut_num, on_shell_num, &total_set_num, &total_blocks, player_pos); - if (set_num > total_set_num) { - set_num = total_set_num; - } + if (set_num > total_set_num) { + set_num = total_set_num; + } - if (total_blocks > 0 && set_num > 0) { - mFI_DivideShell(can_set_ut_num, shell_num_inblock, on_shell_num, set_num, total_blocks); - mFI_SetShellSandyBeachBlock(can_set_ut_num, shell_num_inblock); - } + if (total_blocks > 0 && set_num > 0) { + mFI_DivideShell(can_set_ut_num, shell_num_inblock, on_shell_num, set_num, total_blocks); + mFI_SetShellSandyBeachBlock(can_set_ut_num, shell_num_inblock); + } } static void mFI_SetShell(xyz_t player_pos) { - static int set_flag; + static int set_flag; - if (mFI_CheckSetShell() == TRUE) { - if (set_flag == FALSE) { - set_flag = TRUE; - l_reserve_set_shell++; + if (mFI_CheckSetShell() == TRUE) { + if (set_flag == FALSE) { + set_flag = TRUE; + l_reserve_set_shell++; + } + } else { + set_flag = FALSE; } - } - else { - set_flag = FALSE; - } - if (mFI_CheckFieldData() == TRUE) { - mActor_name_t field_id = mFI_GetFieldId(); + if (mFI_CheckFieldData() == TRUE) { + mActor_name_t field_id = mFI_GetFieldId(); - if (Save_Get(scene_no) == SCENE_FG && mFI_GET_TYPE(field_id) == mFI_FIELD_FG && l_reserve_set_shell > 0) { - mFI_SetShellWave(l_reserve_set_shell, player_pos); - l_reserve_set_shell = 0; + if (Save_Get(scene_no) == SCENE_FG && mFI_GET_TYPE(field_id) == mFI_FIELD_FG && l_reserve_set_shell > 0) { + mFI_SetShellWave(l_reserve_set_shell, player_pos); + l_reserve_set_shell = 0; + } } - } } static int mFI_now_bg_num; extern void mFI_FieldMove(xyz_t player_pos) { - mFI_BGDisplayListRefresh(player_pos); - mFI_DmaBg(); - mFI_SetPlayerBlockKind(player_pos); - mFI_SetShell(player_pos); - mMsr_SetMushroom(player_pos); - mFRm_save_data_check(); + mFI_BGDisplayListRefresh(player_pos); + mFI_DmaBg(); + mFI_SetPlayerBlockKind(player_pos); + mFI_SetShell(player_pos); + mMsr_SetMushroom(player_pos); + mFRm_save_data_check(); - if (mFI_CheckFieldData() == TRUE) { - int bx; - int bz; + if (mFI_CheckFieldData() == TRUE) { + int bx; + int bz; - if (mFI_Wpos2BlockNum(&bx, &bz, player_pos) == TRUE) { - int num = mFI_GetBlockNum(bx, bz); - mFM_block_info_c* block_info = g_fdinfo->block_info + num; + if (mFI_Wpos2BlockNum(&bx, &bz, player_pos) == TRUE) { + int num = mFI_GetBlockNum(bx, bz); + mFM_block_info_c* block_info = g_fdinfo->block_info + num; - if (block_info != NULL) { - mFI_now_bg_num = block_info->bg_info.bg_id.combination_type; - } + if (block_info != NULL) { + mFI_now_bg_num = block_info->bg_info.bg_id.combination_type; + } + } } - } } extern void mFI_PrintNowBGNum(gfxprint_t* gfxprint) { - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_locate8x8(gfxprint, 3, 7); - gfxprint_printf(gfxprint, "%d", mFI_now_bg_num); + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_locate8x8(gfxprint, 3, 7); + gfxprint_printf(gfxprint, "%d", mFI_now_bg_num); } extern void mFI_PrintFgAttr(gfxprint_t* gfxprint) { - if (mFI_CheckFieldData() && gamePT != NULL) { - int ut_x; - int ut_z; - u32 attribute; + if (mFI_CheckFieldData() && gamePT != NULL) { + int ut_x; + int ut_z; + u32 attribute; - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - mActor_name_t item = EMPTY_NO; - mActor_name_t* fg_item_p = mFI_GetUnitFG(player->actor_class.world.position); - int plant = mCoBG_CheckPlant(player->actor_class.world.position); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + mActor_name_t item = EMPTY_NO; + mActor_name_t* fg_item_p = mFI_GetUnitFG(player->actor_class.world.position); + int plant = mCoBG_CheckPlant(player->actor_class.world.position); - if (fg_item_p != NULL) { - item = fg_item_p[0]; + if (fg_item_p != NULL) { + item = fg_item_p[0]; + } + + mFI_Wpos2UtNum_inBlock(&ut_x, &ut_z, player->actor_class.world.position); + attribute = mCoBG_Wpos2BgAttribute_Original(player->actor_class.world.position); + + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_locate8x8(gfxprint, 3, 8); + gfxprint_printf(gfxprint, "%d,%d - %4x - %d - %d", ut_x, ut_z, item, attribute, plant); } - - mFI_Wpos2UtNum_inBlock(&ut_x, &ut_z, player->actor_class.world.position); - attribute = mCoBG_Wpos2BgAttribute_Original(player->actor_class.world.position); - - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_locate8x8(gfxprint, 3, 8); - gfxprint_printf(gfxprint, "%d,%d - %4x - %d - %d", ut_x, ut_z, item, attribute, plant); - } } extern int mFI_SetOyasiroPos(s16* oyasiro_p) { - int bx; - int bz; + int bx; + int bz; - if (mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_SHRINE) == TRUE) { - int ut_x; - int ut_z; + if (mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_SHRINE) == TRUE) { + int ut_x; + int ut_z; - if ( - mFI_SearchFGInBlock(&ut_x, &ut_z, WISHING_WELL, bx, bz) == FALSE && - mFI_SearchFGInBlock(&ut_x, &ut_z, 0xF103, bx, bz) == FALSE - ) { - return FALSE; + if (mFI_SearchFGInBlock(&ut_x, &ut_z, WISHING_WELL, bx, bz) == FALSE && + mFI_SearchFGInBlock(&ut_x, &ut_z, 0xF103, bx, bz) == FALSE) { + return FALSE; + } else { + xyz_t pos; + + mFI_BkandUtNum2CenterWpos(&pos, bx, bz, ut_x, ut_z); + oyasiro_p[0] = (s16)pos.x; + oyasiro_p[1] = (s16)pos.z; // @BUG - maybe a bug? You'd think it'd be .y then .z + oyasiro_p[2] = (s16)pos.y; + + return TRUE; + } + } else { + return FALSE; } - else { - xyz_t pos; - - mFI_BkandUtNum2CenterWpos(&pos, bx, bz, ut_x, ut_z); - oyasiro_p[0] = (s16)pos.x; - oyasiro_p[1] = (s16)pos.z; // @BUG - maybe a bug? You'd think it'd be .y then .z - oyasiro_p[2] = (s16)pos.y; - - return TRUE; - } - } - else { - return FALSE; - } } static int mFI_CheckBlockSetTreasure(int* block, int bx, int bz) { - int i; + int i; - for (i = 0; i < 4; i++) { - if (bx == block[0] && bz == block[1]) { - return FALSE; + for (i = 0; i < 4; i++) { + if (bx == block[0] && bz == block[1]) { + return FALSE; + } + + block += 2; } - block += 2; - } - - return TRUE; + return TRUE; } extern int mFI_SetTreasure(int* selected_bx, int* selected_bz, mActor_name_t item) { - static int no_check_block_table[2 * 4] = { - 3, 1, /* train station */ - 3, 2, /* player house */ - 0, 0, /* wishing well/shrine (dynamic) */ - 0, 0 /* lake (dynamic) */ - }; + static int no_check_block_table[2 * 4] = { + 3, 1, /* train station */ + 3, 2, /* player house */ + 0, 0, /* wishing well/shrine (dynamic) */ + 0, 0 /* lake (dynamic) */ + }; - u8 depositable_num_block[FG_BLOCK_TOTAL_NUM]; - mFM_fg_c* fg_block; - mFM_fg_c* fg_block_p; - u8* depositable_num_p2; - u8* depositable_num_p; - u8 depositable_blocks; - int res; + u8 depositable_num_block[FG_BLOCK_TOTAL_NUM]; + mFM_fg_c* fg_block; + mFM_fg_c* fg_block_p; + u8* depositable_num_p2; + u8* depositable_num_p; + u8 depositable_blocks; + int res; - fg_block = Save_Get(fg[0]); - fg_block_p = fg_block; - depositable_num_p = depositable_num_block; - depositable_blocks = 0; - res = FALSE; + fg_block = Save_Get(fg[0]); + fg_block_p = fg_block; + depositable_num_p = depositable_num_block; + depositable_blocks = 0; + res = FALSE; - if (Save_Get(scene_no) == SCENE_FG) { - int bz; + if (Save_Get(scene_no) == SCENE_FG) { + int bz; - bzero(depositable_num_p, FG_BLOCK_TOTAL_NUM); - mFI_BlockKind2BkNum(&no_check_block_table[4], &no_check_block_table[5], mRF_BLOCKKIND_SHRINE); - mFI_BlockKind2BkNum(&no_check_block_table[6], &no_check_block_table[7], mRF_BLOCKKIND_POOL); + bzero(depositable_num_p, FG_BLOCK_TOTAL_NUM); + mFI_BlockKind2BkNum(&no_check_block_table[4], &no_check_block_table[5], mRF_BLOCKKIND_SHRINE); + mFI_BlockKind2BkNum(&no_check_block_table[6], &no_check_block_table[7], mRF_BLOCKKIND_POOL); - for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { - int bx; + for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { + int bx; - for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - if (mFI_CheckBlockSetTreasure(no_check_block_table, bx + 1, bz + 1) == TRUE) { - mCoBG_Collision_u* col_p = mFI_GetBkNum2ColTop(bx + 1, bz + 1); - - depositable_num_p[0] = mMsm_GetDepositAbleNum(fg_block_p->items[0], col_p); + for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { + if (mFI_CheckBlockSetTreasure(no_check_block_table, bx + 1, bz + 1) == TRUE) { + mCoBG_Collision_u* col_p = mFI_GetBkNum2ColTop(bx + 1, bz + 1); - if (depositable_num_p[0] != 0) { - depositable_blocks++; - } + depositable_num_p[0] = mMsm_GetDepositAbleNum(fg_block_p->items[0], col_p); + + if (depositable_num_p[0] != 0) { + depositable_blocks++; + } + } + + depositable_num_p++; + fg_block_p++; + } } - depositable_num_p++; - fg_block_p++; - } - } + if (depositable_blocks != 0) { + u8* depositable_num_p; // removing this line fixes regalloc but causes regswaps + int selected_block; + int i; - if (depositable_blocks != 0) { - u8* depositable_num_p; // removing this line fixes regalloc but causes regswaps - int selected_block; - int i; - - depositable_num_p2 = depositable_num_block; - selected_block = RANDOM(depositable_blocks); - for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { - if (depositable_num_p2[0] != 0) { - if (selected_block <= 0) { - selected_bx[0] = (i % FG_BLOCK_X_NUM) + 1; - selected_bz[0] = (i / FG_BLOCK_X_NUM) + 1; - mMsm_DepositItemBlock(fg_block->items[0], item, selected_bx[0], selected_bz[0], Save_Get(deposit[i]), depositable_num_p2[0]); - res = TRUE; + depositable_num_p2 = depositable_num_block; + selected_block = RANDOM(depositable_blocks); + for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { + if (depositable_num_p2[0] != 0) { + if (selected_block <= 0) { + selected_bx[0] = (i % FG_BLOCK_X_NUM) + 1; + selected_bz[0] = (i / FG_BLOCK_X_NUM) + 1; + mMsm_DepositItemBlock(fg_block->items[0], item, selected_bx[0], selected_bz[0], + Save_Get(deposit[i]), depositable_num_p2[0]); + res = TRUE; - break; - } - else { - selected_block--; - } + break; + } else { + selected_block--; + } + } + + depositable_num_p2++; + fg_block++; + } } - - depositable_num_p2++; - fg_block++; - } } - } - return res; + return res; } static int l_mFI_climate; extern int mFI_GetClimate() { - switch (l_mFI_climate) { - case mFI_CLIMATE_2: - case mFI_CLIMATE_3: - case mFI_CLIMATE_4: - case mFI_CLIMATE_5: - return FALSE; - default: - return l_mFI_climate & 1; - } + switch (l_mFI_climate) { + case mFI_CLIMATE_2: + case mFI_CLIMATE_3: + case mFI_CLIMATE_4: + case mFI_CLIMATE_5: + return FALSE; + default: + return l_mFI_climate & 1; + } } extern void mFI_SetClimate(int climate) { - if (climate == mFI_CLIMATE_NUM) { - switch (l_mFI_climate) { - case mFI_CLIMATE_0: - l_mFI_climate = mFI_CLIMATE_2; - break; - case mFI_CLIMATE_ISLAND: - l_mFI_climate = mFI_CLIMATE_3; - break; + if (climate == mFI_CLIMATE_NUM) { + switch (l_mFI_climate) { + case mFI_CLIMATE_0: + l_mFI_climate = mFI_CLIMATE_2; + break; + case mFI_CLIMATE_ISLAND: + l_mFI_climate = mFI_CLIMATE_3; + break; + } + } else { + l_mFI_climate = climate; } - } - else { - l_mFI_climate = climate; - } } extern int mFI_CheckBeforeScenePerpetual() { - switch (l_mFI_climate) { - case mFI_CLIMATE_3: - case mFI_CLIMATE_5: - return TRUE; - default: - return FALSE; - } + switch (l_mFI_climate) { + case mFI_CLIMATE_3: + case mFI_CLIMATE_5: + return TRUE; + default: + return FALSE; + } } extern void mFI_ChangeClimate_ForEventNotice() { - switch (l_mFI_climate) { - case mFI_CLIMATE_2: - l_mFI_climate = mFI_CLIMATE_4; - break; - case mFI_CLIMATE_4: - l_mFI_climate = mFI_CLIMATE_0; - break; - case mFI_CLIMATE_3: - l_mFI_climate = mFI_CLIMATE_5; - break; - case mFI_CLIMATE_5: - l_mFI_climate = mFI_CLIMATE_ISLAND; - break; - } + switch (l_mFI_climate) { + case mFI_CLIMATE_2: + l_mFI_climate = mFI_CLIMATE_4; + break; + case mFI_CLIMATE_4: + l_mFI_climate = mFI_CLIMATE_0; + break; + case mFI_CLIMATE_3: + l_mFI_climate = mFI_CLIMATE_5; + break; + case mFI_CLIMATE_5: + l_mFI_climate = mFI_CLIMATE_ISLAND; + break; + } - mCoBG_InitBoatCollision(); + mCoBG_InitBoatCollision(); } extern void mFI_PullTanukiPathTrees() { - static u8 ut_table[6] = { - 0x07, 0x08, - 0x17, 0x18, - 0x27, 0x28 - }; + static u8 ut_table[6] = { 0x07, 0x08, 0x17, 0x18, 0x27, 0x28 }; - mActor_name_t* fg_p = Save_Get(fg[2][2]).items[0]; - int i; + mActor_name_t* fg_p = Save_Get(fg[2][2]).items[0]; + int i; - for (i = 0; i < 6; i++) { - int ut = ut_table[i]; - - if ( - (fg_p[ut] == TREE_S0) || - (fg_p[ut] == TREE_S1) || - (fg_p[ut] == TREE_S2) || - (fg_p[ut] == TREE) || - (fg_p[ut] == TREE_1000BELLS_S0) || - (fg_p[ut] == TREE_1000BELLS_S1) || - (fg_p[ut] == TREE_1000BELLS_S2) || - (fg_p[ut] == TREE_1000BELLS) || - (fg_p[ut] == TREE_10000BELLS_S0) || - (fg_p[ut] == TREE_10000BELLS_S1) || - (fg_p[ut] == TREE_10000BELLS_S2) || - (fg_p[ut] == TREE_10000BELLS) || - (fg_p[ut] == TREE_30000BELLS_S0) || - (fg_p[ut] == TREE_30000BELLS_S1) || - (fg_p[ut] == TREE_30000BELLS_S2) || - (fg_p[ut] == TREE_30000BELLS) || - (fg_p[ut] == TREE_100BELLS_S0) || - (fg_p[ut] == TREE_100BELLS_S1) || - (fg_p[ut] == TREE_100BELLS_S2) || - (fg_p[ut] == TREE_100BELLS) || - (fg_p[ut] == CEDAR_TREE_S0) || - (fg_p[ut] == CEDAR_TREE_S1) || - (fg_p[ut] == CEDAR_TREE_S2) || - (fg_p[ut] == CEDAR_TREE) || - (fg_p[ut] == GOLD_TREE_S0) || - (fg_p[ut] == GOLD_TREE_S1) || - (fg_p[ut] == GOLD_TREE_S2) || - (fg_p[ut] == GOLD_TREE) || - (fg_p[ut] == GOLD_TREE_SHOVEL) || - (fg_p[ut] == TREE_APPLE_S0) || - (fg_p[ut] == TREE_APPLE_S1) || - (fg_p[ut] == TREE_APPLE_S2) || - (fg_p[ut] == TREE_APPLE_NOFRUIT_0) || - (fg_p[ut] == TREE_APPLE_NOFRUIT_1) || - (fg_p[ut] == TREE_APPLE_NOFRUIT_2) || - (fg_p[ut] == TREE_APPLE_FRUIT) || - (fg_p[ut] == TREE_ORANGE_S0) || - (fg_p[ut] == TREE_ORANGE_S1) || - (fg_p[ut] == TREE_ORANGE_S2) || - (fg_p[ut] == TREE_ORANGE_NOFRUIT_0) || - (fg_p[ut] == TREE_ORANGE_NOFRUIT_1) || - (fg_p[ut] == TREE_ORANGE_NOFRUIT_2) || - (fg_p[ut] == TREE_ORANGE_FRUIT) || - (fg_p[ut] == TREE_PEACH_S0) || - (fg_p[ut] == TREE_PEACH_S1) || - (fg_p[ut] == TREE_PEACH_S2) || - (fg_p[ut] == TREE_PEACH_NOFRUIT_0) || - (fg_p[ut] == TREE_PEACH_NOFRUIT_1) || - (fg_p[ut] == TREE_PEACH_NOFRUIT_2) || - (fg_p[ut] == TREE_PEACH_FRUIT) || - (fg_p[ut] == TREE_PEAR_S0) || - (fg_p[ut] == TREE_PEAR_S1) || - (fg_p[ut] == TREE_PEAR_S2) || - (fg_p[ut] == TREE_PEAR_NOFRUIT_0) || - (fg_p[ut] == TREE_PEAR_NOFRUIT_1) || - (fg_p[ut] == TREE_PEAR_NOFRUIT_2) || - (fg_p[ut] == TREE_PEAR_FRUIT) || - (fg_p[ut] == TREE_CHERRY_S0) || - (fg_p[ut] == TREE_CHERRY_S1) || - (fg_p[ut] == TREE_CHERRY_S2) || - (fg_p[ut] == TREE_CHERRY_NOFRUIT_0) || - (fg_p[ut] == TREE_CHERRY_NOFRUIT_1) || - (fg_p[ut] == TREE_CHERRY_NOFRUIT_2) || - (fg_p[ut] == TREE_CHERRY_FRUIT) || - (fg_p[ut] == TREE_PALM_S0) || - (fg_p[ut] == TREE_PALM_S1) || - (fg_p[ut] == TREE_PALM_S2) || - (fg_p[ut] == TREE_PALM_NOFRUIT_0) || - (fg_p[ut] == TREE_PALM_NOFRUIT_1) || - (fg_p[ut] == TREE_PALM_NOFRUIT_2) || - (fg_p[ut] == TREE_PALM_FRUIT) || - (fg_p[ut] == TREE_BEES) || - (fg_p[ut] == TREE_FTR) || - (fg_p[ut] == TREE_LIGHTS) || - (fg_p[ut] == TREE_PRESENT) || - (fg_p[ut] == TREE_BELLS) || - (fg_p[ut] == CEDAR_TREE_BELLS) || - (fg_p[ut] == CEDAR_TREE_FTR) || - (fg_p[ut] == CEDAR_TREE_BEES) || - (fg_p[ut] == CEDAR_TREE_LIGHTS) || - (fg_p[ut] == GOLD_TREE_BELLS) || - (fg_p[ut] == GOLD_TREE_FTR) || - (fg_p[ut] == GOLD_TREE_BEES) - ) { - fg_p[ut] = EMPTY_NO; + for (i = 0; i < 6; i++) { + int ut = ut_table[i]; + + if ((fg_p[ut] == TREE_S0) || (fg_p[ut] == TREE_S1) || (fg_p[ut] == TREE_S2) || (fg_p[ut] == TREE) || + (fg_p[ut] == TREE_1000BELLS_S0) || (fg_p[ut] == TREE_1000BELLS_S1) || (fg_p[ut] == TREE_1000BELLS_S2) || + (fg_p[ut] == TREE_1000BELLS) || (fg_p[ut] == TREE_10000BELLS_S0) || (fg_p[ut] == TREE_10000BELLS_S1) || + (fg_p[ut] == TREE_10000BELLS_S2) || (fg_p[ut] == TREE_10000BELLS) || (fg_p[ut] == TREE_30000BELLS_S0) || + (fg_p[ut] == TREE_30000BELLS_S1) || (fg_p[ut] == TREE_30000BELLS_S2) || (fg_p[ut] == TREE_30000BELLS) || + (fg_p[ut] == TREE_100BELLS_S0) || (fg_p[ut] == TREE_100BELLS_S1) || (fg_p[ut] == TREE_100BELLS_S2) || + (fg_p[ut] == TREE_100BELLS) || (fg_p[ut] == CEDAR_TREE_S0) || (fg_p[ut] == CEDAR_TREE_S1) || + (fg_p[ut] == CEDAR_TREE_S2) || (fg_p[ut] == CEDAR_TREE) || (fg_p[ut] == GOLD_TREE_S0) || + (fg_p[ut] == GOLD_TREE_S1) || (fg_p[ut] == GOLD_TREE_S2) || (fg_p[ut] == GOLD_TREE) || + (fg_p[ut] == GOLD_TREE_SHOVEL) || (fg_p[ut] == TREE_APPLE_S0) || (fg_p[ut] == TREE_APPLE_S1) || + (fg_p[ut] == TREE_APPLE_S2) || (fg_p[ut] == TREE_APPLE_NOFRUIT_0) || (fg_p[ut] == TREE_APPLE_NOFRUIT_1) || + (fg_p[ut] == TREE_APPLE_NOFRUIT_2) || (fg_p[ut] == TREE_APPLE_FRUIT) || (fg_p[ut] == TREE_ORANGE_S0) || + (fg_p[ut] == TREE_ORANGE_S1) || (fg_p[ut] == TREE_ORANGE_S2) || (fg_p[ut] == TREE_ORANGE_NOFRUIT_0) || + (fg_p[ut] == TREE_ORANGE_NOFRUIT_1) || (fg_p[ut] == TREE_ORANGE_NOFRUIT_2) || + (fg_p[ut] == TREE_ORANGE_FRUIT) || (fg_p[ut] == TREE_PEACH_S0) || (fg_p[ut] == TREE_PEACH_S1) || + (fg_p[ut] == TREE_PEACH_S2) || (fg_p[ut] == TREE_PEACH_NOFRUIT_0) || (fg_p[ut] == TREE_PEACH_NOFRUIT_1) || + (fg_p[ut] == TREE_PEACH_NOFRUIT_2) || (fg_p[ut] == TREE_PEACH_FRUIT) || (fg_p[ut] == TREE_PEAR_S0) || + (fg_p[ut] == TREE_PEAR_S1) || (fg_p[ut] == TREE_PEAR_S2) || (fg_p[ut] == TREE_PEAR_NOFRUIT_0) || + (fg_p[ut] == TREE_PEAR_NOFRUIT_1) || (fg_p[ut] == TREE_PEAR_NOFRUIT_2) || (fg_p[ut] == TREE_PEAR_FRUIT) || + (fg_p[ut] == TREE_CHERRY_S0) || (fg_p[ut] == TREE_CHERRY_S1) || (fg_p[ut] == TREE_CHERRY_S2) || + (fg_p[ut] == TREE_CHERRY_NOFRUIT_0) || (fg_p[ut] == TREE_CHERRY_NOFRUIT_1) || + (fg_p[ut] == TREE_CHERRY_NOFRUIT_2) || (fg_p[ut] == TREE_CHERRY_FRUIT) || (fg_p[ut] == TREE_PALM_S0) || + (fg_p[ut] == TREE_PALM_S1) || (fg_p[ut] == TREE_PALM_S2) || (fg_p[ut] == TREE_PALM_NOFRUIT_0) || + (fg_p[ut] == TREE_PALM_NOFRUIT_1) || (fg_p[ut] == TREE_PALM_NOFRUIT_2) || (fg_p[ut] == TREE_PALM_FRUIT) || + (fg_p[ut] == TREE_BEES) || (fg_p[ut] == TREE_FTR) || (fg_p[ut] == TREE_LIGHTS) || + (fg_p[ut] == TREE_PRESENT) || (fg_p[ut] == TREE_BELLS) || (fg_p[ut] == CEDAR_TREE_BELLS) || + (fg_p[ut] == CEDAR_TREE_FTR) || (fg_p[ut] == CEDAR_TREE_BEES) || (fg_p[ut] == CEDAR_TREE_LIGHTS) || + (fg_p[ut] == GOLD_TREE_BELLS) || (fg_p[ut] == GOLD_TREE_FTR) || (fg_p[ut] == GOLD_TREE_BEES)) { + fg_p[ut] = EMPTY_NO; + } } - } } diff --git a/src/m_handbill.c b/src/m_handbill.c index b88b6371..e5f54df3 100644 --- a/src/m_handbill.c +++ b/src/m_handbill.c @@ -17,589 +17,585 @@ static u32 Handbillz_start; static void mHandbillz_aram_init(); - extern void mHandbill_aram_init() { - Ps_table_rom_start = JW_GetAramAddress(RESOURCE_PS_TABLE); - Ps_rom_start = JW_GetAramAddress(RESOURCE_PS); + Ps_table_rom_start = JW_GetAramAddress(RESOURCE_PS_TABLE); + Ps_rom_start = JW_GetAramAddress(RESOURCE_PS); - Handbill_table_rom_start = JW_GetAramAddress(RESOURCE_MAIL_TABLE); - Handbill_rom_start = JW_GetAramAddress(RESOURCE_MAIL); + Handbill_table_rom_start = JW_GetAramAddress(RESOURCE_MAIL_TABLE); + Handbill_rom_start = JW_GetAramAddress(RESOURCE_MAIL); - Super_table_rom_start = JW_GetAramAddress(RESOURCE_SUPER_TABLE); - Super_rom_start = JW_GetAramAddress(RESOURCE_SUPER); + Super_table_rom_start = JW_GetAramAddress(RESOURCE_SUPER_TABLE); + Super_rom_start = JW_GetAramAddress(RESOURCE_SUPER); - Handbillz_rom_start = JW_GetAramAddress(RESOURCE_MAILA); - Handbillz_start = 0; + Handbillz_rom_start = JW_GetAramAddress(RESOURCE_MAILA); + Handbillz_start = 0; - mHandbillz_aram_init(); + mHandbillz_aram_init(); } static mHandbill_Data_c mHandbill_data; static void mHandbill_clr_force_art() { - mHandbill_data.force_art = mIN_ARTICLE_NUM; + mHandbill_data.force_art = mIN_ARTICLE_NUM; } static void mHandbill_clr_capital_flag() { - #ifndef BUGFIXES - mHandbill_data.force_art = mIN_ARTICLE_NUM; // copy-paste error - #else - mHandbill_data.capital_flag = FALSE; - #endif +#ifndef BUGFIXES + mHandbill_data.force_art = mIN_ARTICLE_NUM; // copy-paste error +#else + mHandbill_data.capital_flag = FALSE; +#endif } static void mHandbill_load_init() { - mHandbill_clr_force_art(); - mHandbill_clr_capital_flag(); + mHandbill_clr_force_art(); + mHandbill_clr_capital_flag(); } extern void mHandbill_Set_free_str(int str_num, u8* str, int str_len) { - int i; - int j; - u8* free_str; - mHandbill_Data_c* handbill_data; + int i; + int j; + u8* free_str; + mHandbill_Data_c* handbill_data; - if (str_num < 0) { - return; - } + if (str_num < 0) { + return; + } - if (str_num >= mHandbill_FREE_STR_NUM) { - return; - } + if (str_num >= mHandbill_FREE_STR_NUM) { + return; + } - if (str == NULL) { - return; - } + if (str == NULL) { + return; + } - handbill_data = &mHandbill_data; - free_str = handbill_data->free_str[str_num]; + handbill_data = &mHandbill_data; + free_str = handbill_data->free_str[str_num]; - if (str_len > mHandbill_FREE_STR_LEN) { - str_len = mHandbill_FREE_STR_LEN; - } + if (str_len > mHandbill_FREE_STR_LEN) { + str_len = mHandbill_FREE_STR_LEN; + } - for (i = 0; i < str_len; i++) { - free_str[i] = str[i]; - } + for (i = 0; i < str_len; i++) { + free_str[i] = str[i]; + } - for (j = i; j < mHandbill_FREE_STR_LEN; j++) { - free_str[j] = CHAR_SPACE; - } + for (j = i; j < mHandbill_FREE_STR_LEN; j++) { + free_str[j] = CHAR_SPACE; + } - handbill_data->free_str_art[str_num] = mIN_ARTICLE_NONE; + handbill_data->free_str_art[str_num] = mIN_ARTICLE_NONE; } extern void mHandbill_Set_free_str_art(int str_num, u8* str, int str_len, int article) { - mHandbill_Set_free_str(str_num, str, str_len); - mHandbill_data.free_str_art[str_num] = article; + mHandbill_Set_free_str(str_num, str, str_len); + mHandbill_data.free_str_art[str_num] = article; } static void mHandbill_CopyString(u8* dst, u8* src, int len) { - for (len; len > 0; len--) { - *dst++ = *src++; - } + for (len; len > 0; len--) { + *dst++ = *src++; + } } extern int mHandbill_MoveDataCut(u8* data, int buf_size, int dst_idx, int src_idx, int data_len, int fill_type) { - int new_len = data_len; - int i; + int new_len = data_len; + int i; - if (dst_idx < src_idx) { - u8* dst = data + dst_idx; - u8* src = data + src_idx; - - for (i = src_idx; i < data_len; i++) { - data[dst_idx] = data[src_idx++]; - dst_idx++; + if (dst_idx < src_idx) { + u8* dst = data + dst_idx; + u8* src = data + src_idx; + + for (i = src_idx; i < data_len; i++) { + data[dst_idx] = data[src_idx++]; + dst_idx++; + } + + new_len -= src_idx - dst_idx; + + if (fill_type != mHandbill_FILL_NONE) { + u8 fill_char; + + if (fill_type == mHandbill_FILL_RETURN) { + fill_char = CHAR_NEW_LINE; + } else { + fill_char = CHAR_SPACE; + } + + while (dst_idx < data_len) { + data[dst_idx++] = fill_char; + } + } + } else if (dst_idx > src_idx) { + int move_size = data_len - src_idx; + u8* dst; + u8* src; + + new_len += dst_idx - src_idx; + if (new_len > buf_size) { + data_len -= new_len - buf_size; + move_size -= new_len - buf_size; + new_len = buf_size; + } + + dst = data + new_len - 1; + src = data + data_len - 1; + for (i = 0; i < move_size; i++) { + *dst-- = *src--; + } } - new_len -= src_idx - dst_idx; - - if (fill_type != mHandbill_FILL_NONE) { - u8 fill_char; - - if (fill_type == mHandbill_FILL_RETURN) { - fill_char = CHAR_NEW_LINE; - } - else { - fill_char = CHAR_SPACE; - } - - while (dst_idx < data_len) { - data[dst_idx++] = fill_char; - } - } - } - else if (dst_idx > src_idx) { - int move_size = data_len - src_idx; - u8* dst; - u8* src; - - new_len += dst_idx - src_idx; - if (new_len > buf_size) { - data_len -= new_len - buf_size; - move_size -= new_len - buf_size; - new_len = buf_size; - } - - dst = data + new_len - 1; - src = data + data_len - 1; - for (i = 0; i < move_size; i++) { - *dst-- = *src--; - } - } - - return new_len; + return new_len; } static int mHandbill_Put_String_FREE(u8* str, int buf_size, int start_idx, int str_len, int str_no, int fill_type) { - int code_size; - int free_str_len; - int cut_len; - int article; - int temp; + int code_size; + int free_str_len; + int cut_len; + int article; + int temp; - if (str_no < mHandbill_FREE_STR0 || str_no >= mHandbill_FREE_STR_NUM) { - str_no = mHandbill_FREE_STR0; - } + if (str_no < mHandbill_FREE_STR0 || str_no >= mHandbill_FREE_STR_NUM) { + str_no = mHandbill_FREE_STR0; + } - code_size = mFont_CodeSize_idx_get(str, start_idx); - free_str_len = mMsg_Get_Length_String(mHandbill_data.free_str[str_no], mHandbill_FREE_STR_LEN); - cut_len = mHandbill_MoveDataCut(str, buf_size, start_idx + free_str_len, start_idx + code_size, str_len, fill_type); + code_size = mFont_CodeSize_idx_get(str, start_idx); + free_str_len = mMsg_Get_Length_String(mHandbill_data.free_str[str_no], mHandbill_FREE_STR_LEN); + cut_len = mHandbill_MoveDataCut(str, buf_size, start_idx + free_str_len, start_idx + code_size, str_len, fill_type); - if (cut_len >= buf_size && free_str_len > buf_size - start_idx) { - free_str_len = buf_size - start_idx; - } + if (cut_len >= buf_size && free_str_len > buf_size - start_idx) { + free_str_len = buf_size - start_idx; + } - mHandbill_CopyString(&str[start_idx], mHandbill_data.free_str[str_no], free_str_len); + mHandbill_CopyString(&str[start_idx], mHandbill_data.free_str[str_no], free_str_len); - switch(mHandbill_data.force_art) { - default: - article = mHandbill_data.force_art; - break; + switch (mHandbill_data.force_art) { + default: + article = mHandbill_data.force_art; + break; - case mIN_ARTICLE_NUM: - article = mHandbill_data.free_str_art[str_no]; - break; - } + case mIN_ARTICLE_NUM: + article = mHandbill_data.free_str_art[str_no]; + break; + } - if (article != mIN_ARTICLE_NONE) { - u8 article_buf[32]; + if (article != mIN_ARTICLE_NONE) { + u8 article_buf[32]; - mString_Load_ArticleFromRom(article_buf, 16, article); // Load string from string file into buffer - free_str_len = mMsg_Get_Length_String(article_buf, 16); // Get length of article - article_buf[free_str_len] = CHAR_SPACE; // Add a space to the end of the article - cut_len = mHandbill_MoveDataCut(str, buf_size, start_idx + free_str_len + 1, start_idx, cut_len, mHandbill_FILL_NONE); // Create free space for the article - mHandbill_CopyString(&str[start_idx], article_buf, free_str_len + 1); // Copy article to allocated space - } + mString_Load_ArticleFromRom(article_buf, 16, article); // Load string from string file into buffer + free_str_len = mMsg_Get_Length_String(article_buf, 16); // Get length of article + article_buf[free_str_len] = CHAR_SPACE; // Add a space to the end of the article + cut_len = mHandbill_MoveDataCut(str, buf_size, start_idx + free_str_len + 1, start_idx, cut_len, + mHandbill_FILL_NONE); // Create free space for the article + mHandbill_CopyString(&str[start_idx], article_buf, free_str_len + 1); // Copy article to allocated space + } - if (mHandbill_data.capital_flag) { - str[start_idx] = mFont_small_to_capital(str[start_idx]); - } + if (mHandbill_data.capital_flag) { + str[start_idx] = mFont_small_to_capital(str[start_idx]); + } - mHandbill_clr_force_art(); - mHandbill_clr_capital_flag(); + mHandbill_clr_force_art(); + mHandbill_clr_capital_flag(); - return cut_len; + return cut_len; } static int mHandbill_Put_String_FREE0(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR0, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR0, fill_type); } static int mHandbill_Put_String_FREE1(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR1, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR1, fill_type); } static int mHandbill_Put_String_FREE2(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR2, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR2, fill_type); } static int mHandbill_Put_String_FREE3(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR3, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR3, fill_type); } static int mHandbill_Put_String_FREE4(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR4, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR4, fill_type); } static int mHandbill_Put_String_FREE5(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR5, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR5, fill_type); } static int mHandbill_Put_String_FREE6(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR6, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR6, fill_type); } static int mHandbill_Put_String_FREE7(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR7, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR7, fill_type); } static int mHandbill_Put_String_FREE8(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR8, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR8, fill_type); } static int mHandbill_Put_String_FREE9(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR9, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR9, fill_type); } static int mHandbill_Put_String_FREE10(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR10, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR10, fill_type); } static int mHandbill_Put_String_FREE11(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR11, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR11, fill_type); } static int mHandbill_Put_String_FREE12(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR12, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR12, fill_type); } static int mHandbill_Put_String_FREE13(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR13, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR13, fill_type); } static int mHandbill_Put_String_FREE14(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR14, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR14, fill_type); } static int mHandbill_Put_String_FREE15(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR15, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR15, fill_type); } static int mHandbill_Put_String_FREE16(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR16, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR16, fill_type); } static int mHandbill_Put_String_FREE17(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR17, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR17, fill_type); } static int mHandbill_Put_String_FREE18(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR18, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR18, fill_type); } static int mHandbill_Put_String_FREE19(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR19, fill_type); + return mHandbill_Put_String_FREE(buf, buf_size, start_idx, str_len, mHandbill_FREE_STR19, fill_type); } static int mHandbill_Cut_Article(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - int code_size = mFont_CodeSize_idx_get(buf, start_idx); - - mHandbill_data.force_art = mIN_ARTICLE_NONE; - return mHandbill_MoveDataCut(buf, buf_size, start_idx, start_idx + code_size, str_len, mHandbill_FILL_NONE); // remove the control code characters + int code_size = mFont_CodeSize_idx_get(buf, start_idx); + + mHandbill_data.force_art = mIN_ARTICLE_NONE; + return mHandbill_MoveDataCut(buf, buf_size, start_idx, start_idx + code_size, str_len, + mHandbill_FILL_NONE); // remove the control code characters } static int mHandbill_Capital_Letter(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - int code_size = mFont_CodeSize_idx_get(buf, start_idx); - - mHandbill_data.capital_flag = TRUE; - return mHandbill_MoveDataCut(buf, buf_size, start_idx, start_idx + code_size, str_len, mHandbill_FILL_NONE); // remove the control code characters + int code_size = mFont_CodeSize_idx_get(buf, start_idx); + + mHandbill_data.capital_flag = TRUE; + return mHandbill_MoveDataCut(buf, buf_size, start_idx, start_idx + code_size, str_len, + mHandbill_FILL_NONE); // remove the control code characters } typedef int (*mHandbill_PUT_STRING_PROC)(u8*, int, int, int, int); static int mHandbill_Put_String(u8* buf, int buf_size, int start_idx, int str_len, int fill_type) { - static const mHandbill_PUT_STRING_PROC proc[mFont_CONT_CODE_NUM] = { - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - &mHandbill_Put_String_FREE0, - &mHandbill_Put_String_FREE1, - &mHandbill_Put_String_FREE2, - &mHandbill_Put_String_FREE3, - &mHandbill_Put_String_FREE4, - &mHandbill_Put_String_FREE5, - &mHandbill_Put_String_FREE6, - &mHandbill_Put_String_FREE7, - &mHandbill_Put_String_FREE8, - &mHandbill_Put_String_FREE9, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - &mHandbill_Put_String_FREE10, - &mHandbill_Put_String_FREE11, - &mHandbill_Put_String_FREE12, - &mHandbill_Put_String_FREE13, - &mHandbill_Put_String_FREE14, - &mHandbill_Put_String_FREE15, - &mHandbill_Put_String_FREE16, - &mHandbill_Put_String_FREE17, - &mHandbill_Put_String_FREE18, - &mHandbill_Put_String_FREE19, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - &mHandbill_Cut_Article, - &mHandbill_Capital_Letter, - NULL, - NULL, - NULL, - NULL, - NULL - }; + static const mHandbill_PUT_STRING_PROC proc[mFont_CONT_CODE_NUM] = { NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &mHandbill_Put_String_FREE0, + &mHandbill_Put_String_FREE1, + &mHandbill_Put_String_FREE2, + &mHandbill_Put_String_FREE3, + &mHandbill_Put_String_FREE4, + &mHandbill_Put_String_FREE5, + &mHandbill_Put_String_FREE6, + &mHandbill_Put_String_FREE7, + &mHandbill_Put_String_FREE8, + &mHandbill_Put_String_FREE9, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &mHandbill_Put_String_FREE10, + &mHandbill_Put_String_FREE11, + &mHandbill_Put_String_FREE12, + &mHandbill_Put_String_FREE13, + &mHandbill_Put_String_FREE14, + &mHandbill_Put_String_FREE15, + &mHandbill_Put_String_FREE16, + &mHandbill_Put_String_FREE17, + &mHandbill_Put_String_FREE18, + &mHandbill_Put_String_FREE19, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &mHandbill_Cut_Article, + &mHandbill_Capital_Letter, + NULL, + NULL, + NULL, + NULL, + NULL }; - int type = buf[start_idx + 1]; - if (type >= mFont_CONT_CODE_BEGIN &&type < mFont_CONT_CODE_NUM) { - mHandbill_PUT_STRING_PROC p = proc[type]; + int type = buf[start_idx + 1]; + if (type >= mFont_CONT_CODE_BEGIN && type < mFont_CONT_CODE_NUM) { + mHandbill_PUT_STRING_PROC p = proc[type]; - if (p != NULL) { - return (*p)(buf, buf_size, start_idx, str_len, fill_type); + if (p != NULL) { + return (*p)(buf, buf_size, start_idx, str_len, fill_type); + } } - } - return str_len; + return str_len; } static void mHandbill_Change_ControlCode(u8* buf, int buf_size, int str_len, int fill_type) { - int pos = 0; - int len = str_len; + int pos = 0; + int len = str_len; - while (pos < len && pos < buf_size) { - if (buf[pos] == CHAR_CONTROL_CODE) { - len = mHandbill_Put_String(buf, buf_size, pos, len, fill_type); + while (pos < len && pos < buf_size) { + if (buf[pos] == CHAR_CONTROL_CODE) { + len = mHandbill_Put_String(buf, buf_size, pos, len, fill_type); + } else { + pos++; + } } - else { - pos++; - } - } } static void mHandbill_Change_ControlCode2(u8* buf, int buf_size, int str_len, int* header_back_start, int fill_type) { - int now_str_len; + int now_str_len; - int pos = 0; - int len = str_len; + int pos = 0; + int len = str_len; - while (pos < len && pos < buf_size) { - if (buf[pos] == CHAR_CONTROL_CODE) { - now_str_len = len; - len = mHandbill_Put_String(buf, buf_size, pos, len, fill_type); + while (pos < len && pos < buf_size) { + if (buf[pos] == CHAR_CONTROL_CODE) { + now_str_len = len; + len = mHandbill_Put_String(buf, buf_size, pos, len, fill_type); - if (pos < *header_back_start) { - *header_back_start += len - now_str_len; - } + if (pos < *header_back_start) { + *header_back_start += len - now_str_len; + } + } else { + pos++; + } } - else { - pos++; - } - } } static void mHandbill_Get_SuperStringDataAddressAndSize(int super_no, u32* addr, u32* size) { - mMsg_Get_BodyParam(Super_table_rom_start, Super_rom_start, super_no, addr, size); + mMsg_Get_BodyParam(Super_table_rom_start, Super_rom_start, super_no, addr, size); } static void mHandbill_Get_PsStringDataAddressAndSize(int ps_no, u32* addr, u32* size) { - mMsg_Get_BodyParam(Ps_table_rom_start, Ps_rom_start, ps_no, addr, size); + mMsg_Get_BodyParam(Ps_table_rom_start, Ps_rom_start, ps_no, addr, size); } static void mHandbill_Get_MailStringDataAddressAndSize(int mail_no, u32* addr, u32* size) { - mMsg_Get_BodyParam(Handbill_table_rom_start, Handbill_rom_start, mail_no, addr, size); + mMsg_Get_BodyParam(Handbill_table_rom_start, Handbill_rom_start, mail_no, addr, size); } -static void mHandbill_CheckSuperStringBorderAndCopy(u8* dst, int dst_size, int* header_back_start, u8* src, int src_size) { - int src_pos; - int lines; - int dst_pos; - u8* src_p = src; - u8* dst_p = dst; - int i; +static void mHandbill_CheckSuperStringBorderAndCopy(u8* dst, int dst_size, int* header_back_start, u8* src, + int src_size) { + int src_pos; + int lines; + int dst_pos; + u8* src_p = src; + u8* dst_p = dst; + int i; - lines = 0; - dst_pos = 0; - src_pos = 0; + lines = 0; + dst_pos = 0; + src_pos = 0; - for (i = 0; i < src_size; i++) { - if (*src_p == CHAR_NEW_LINE) { - *header_back_start = src_pos; - lines++; - } - else if (dst_pos < dst_size) { - *dst_p = *src_p; - dst_p++; - dst_pos++; + for (i = 0; i < src_size; i++) { + if (*src_p == CHAR_NEW_LINE) { + *header_back_start = src_pos; + lines++; + } else if (dst_pos < dst_size) { + *dst_p = *src_p; + dst_p++; + dst_pos++; + } + + src_p++; + src_pos++; } - src_p++; - src_pos++; - } - - if (lines != 1) { - *header_back_start = src_size; - } + if (lines != 1) { + *header_back_start = src_size; + } } -/* @nonmatching TODO: minor regswap here */ static void mHandbill_Load_SuperStringFromRom(u8* buf, int buf_size, int* header_back_start, int super_no) { - static u8 buff[90] ATTRIBUTE_ALIGN(32); - u8 super_buf[43]; - int* test = header_back_start; - int b_size = buf_size; + static u8 buff[90] ATTRIBUTE_ALIGN(32); + u8 super_buf[43]; - if (super_no >= 0 && super_no < mHandbill_MAIL_NUM) { u32 super_address; u32 super_size; int temp_header_back_start; - mHandbill_Get_SuperStringDataAddressAndSize(super_no, &super_address, &super_size); - mem_clear(buf, buf_size, CHAR_SPACE); + s32 tmp_size; - if (super_address != 0 && super_size != 0) { - u32 aligned_addr = ALIGN_PREV(super_address, 32); // align to 32 bytes for ARAM DMA - u32 data_ofs = super_address - aligned_addr; // calculate offset for desired data - u32 size = ALIGN_NEXT(data_ofs + super_size, 32); - int move_size; - u8* dst; - u8* src; - int i; - - bzero(buff, 90); - _JW_GetResourceAram(aligned_addr, buff, size); + if (super_no >= 0 && super_no < mHandbill_MAIL_NUM) { + tmp_size = buf_size; + mHandbill_Get_SuperStringDataAddressAndSize(super_no, &super_address, &super_size); + mem_clear(buf, tmp_size, CHAR_SPACE); - src = buff + data_ofs; - dst = buff; - move_size = super_size; - /* Move desired data to begining of buffer */ - for (i = 0; i < move_size; i++) { - *dst++ = *src++; - } + if (super_address != 0 && super_size != 0) { + u32 aligned_addr = ALIGN_PREV(super_address, 32); // align to 32 bytes for ARAM DMA + u32 data_ofs = super_address - aligned_addr; // calculate offset for desired data + u32 size = ALIGN_NEXT(data_ofs + super_size, 32); + int move_size; + u8* dst; + u8* src; + int i; - mem_clear(super_buf, 43, CHAR_SPACE); - mHandbill_CheckSuperStringBorderAndCopy(super_buf, 43, &temp_header_back_start, buff, super_size); - mHandbill_Change_ControlCode2(super_buf, 43, super_size - 1, &temp_header_back_start, mHandbill_FILL_SPACE); - bcopy(super_buf, buf, buf_size < 43 ? buf_size : 43); - *header_back_start = temp_header_back_start; + bzero(buff, 90); + _JW_GetResourceAram(aligned_addr, buff, size); + + src = buff + data_ofs; + dst = buff; + move_size = super_size; + /* Move desired data to begining of buffer */ + for (i = 0; i < move_size; i++) { + *dst++ = *src++; + } + + mem_clear(super_buf, 43, CHAR_SPACE); + mHandbill_CheckSuperStringBorderAndCopy(super_buf, 43, &temp_header_back_start, buff, super_size); + mHandbill_Change_ControlCode2(super_buf, 43, super_size - 1, &temp_header_back_start, mHandbill_FILL_SPACE); + + bcopy(super_buf, buf, tmp_size < 43 ? buf_size : 43); + *header_back_start = temp_header_back_start; + } } - } } static void mHandbill_Load_PsStringFromRom(u8* buf, int buf_size, int ps_no) { - static u8 buff[120] ATTRIBUTE_ALIGN(32); + static u8 buff[120] ATTRIBUTE_ALIGN(32); - if (ps_no >= 0 && ps_no < mHandbill_MAIL_NUM) { - u32 ps_address; - u32 ps_size; + if (ps_no >= 0 && ps_no < mHandbill_MAIL_NUM) { + u32 ps_address; + u32 ps_size; - mHandbill_Get_PsStringDataAddressAndSize(ps_no, &ps_address, &ps_size); + mHandbill_Get_PsStringDataAddressAndSize(ps_no, &ps_address, &ps_size); - if (ps_size == 0) { - mem_clear(buf, buf_size, CHAR_SPACE); + if (ps_size == 0) { + mem_clear(buf, buf_size, CHAR_SPACE); + } else if (ps_address != 0) { + u32 aligned_addr = ALIGN_PREV(ps_address, 32); // align to 32 bytes for ARAM DMA + u32 data_ofs = ps_address - aligned_addr; // calculate offset for desired data + u32 size = ALIGN_NEXT(data_ofs + ps_size, 32); + int sz; + int i; + u8* dst; + + _JW_GetResourceAram(aligned_addr, buff, size); + + /* Move desired data to output buffer */ + sz = (int)ps_size < buf_size ? ps_size : buf_size; + dst = buf; + for (i = 0; i < sz; i++) { + *dst = buff[data_ofs + i]; + dst++; + } + + /* Initialize remaining buffer to spaces */ + for (i; i < buf_size; i++) { + *dst = CHAR_SPACE; + dst++; + } + + /* Do any control code processing */ + mHandbill_Change_ControlCode(buf, buf_size, ps_size, mHandbill_FILL_SPACE); + } } - else if (ps_address != 0) { - u32 aligned_addr = ALIGN_PREV(ps_address, 32); // align to 32 bytes for ARAM DMA - u32 data_ofs = ps_address - aligned_addr; // calculate offset for desired data - u32 size = ALIGN_NEXT(data_ofs + ps_size, 32); - int sz; - int i; - u8* dst; - - _JW_GetResourceAram(aligned_addr, buff, size); - - /* Move desired data to output buffer */ - sz = (int)ps_size < buf_size ? ps_size : buf_size; - dst = buf; - for (i = 0; i < sz; i++) { - *dst = buff[data_ofs + i]; - dst++; - } - - /* Initialize remaining buffer to spaces */ - for (i; i < buf_size; i++) { - *dst = CHAR_SPACE; - dst++; - } - - /* Do any control code processing */ - mHandbill_Change_ControlCode(buf, buf_size, ps_size, mHandbill_FILL_SPACE); - } - } } static u8 mHandbill_mail_buff[263] ATTRIBUTE_ALIGN(32); @@ -607,274 +603,270 @@ static u8 mHandbill_mail_buff[263] ATTRIBUTE_ALIGN(32); static u8 mHandbill_mail_buff[263] ATTRIBUTE_ALIGN(32); static void mHandbill_Load_MailFromRom(u8* buf, int mail_no) { - if (mail_no >= 0 && mail_no < mHandbill_MAIL_NUM) { - u32 mail_address; - u32 mail_size; + if (mail_no >= 0 && mail_no < mHandbill_MAIL_NUM) { + u32 mail_address; + u32 mail_size; - mHandbill_Get_MailStringDataAddressAndSize(mail_no, &mail_address, &mail_size); + mHandbill_Get_MailStringDataAddressAndSize(mail_no, &mail_address, &mail_size); - if (mail_size == 0) { - mem_clear(buf, mHandbill_BODY_LEN, CHAR_NEW_LINE); + if (mail_size == 0) { + mem_clear(buf, mHandbill_BODY_LEN, CHAR_NEW_LINE); + } else if (mail_address != 0) { + u32 aligned_addr = ALIGN_PREV(mail_address, 32); // align to 32 bytes for ARAM DMA + u32 data_ofs = mail_address - aligned_addr; // calculate offset for desired data + u32 size = ALIGN_NEXT(data_ofs + mail_size, 32); + + _JW_GetResourceAram(aligned_addr, mHandbill_mail_buff, size); + + /* Move desired data to output buffer */ + { + int i; + int j; + u8* src = &mHandbill_mail_buff[data_ofs]; + u8* dst = buf; + int sz = mHandbill_BODY_LEN; + + if (mail_size < mHandbill_BODY_LEN) { + sz = mail_size; + } + + for (i = 0; i < sz; i++) { + *dst++ = *src++; + } + + /* Initialize remaining buffer to spaces */ + for (i; i < mHandbill_BODY_LEN; i++) { + *dst++ = CHAR_NEW_LINE; + } + + /* Do any control code processing */ + mHandbill_Change_ControlCode(buf, mHandbill_BODY_LEN, sz, mHandbill_FILL_RETURN); + } + } } - else if (mail_address != 0) { - u32 aligned_addr = ALIGN_PREV(mail_address, 32); // align to 32 bytes for ARAM DMA - u32 data_ofs = mail_address - aligned_addr; // calculate offset for desired data - u32 size = ALIGN_NEXT(data_ofs + mail_size, 32); - - _JW_GetResourceAram(aligned_addr, mHandbill_mail_buff, size); - - /* Move desired data to output buffer */ - { - int i; - int j; - u8* src = &mHandbill_mail_buff[data_ofs]; - u8* dst = buf; - int sz = mHandbill_BODY_LEN; - - if (mail_size < mHandbill_BODY_LEN) { - sz = mail_size; - } - - for (i = 0; i < sz; i++) { - *dst++ = *src++; - } - - /* Initialize remaining buffer to spaces */ - for (i; i < mHandbill_BODY_LEN; i++) { - *dst++ = CHAR_NEW_LINE; - } - - /* Do any control code processing */ - mHandbill_Change_ControlCode(buf, mHandbill_BODY_LEN, sz, mHandbill_FILL_RETURN); - } - } - } } extern void mHandbill_Load_HandbillFromRom(u8* header, int* header_back_start, u8* footer, u8* body, int mail_no) { - mHandbill_load_init(); - mHandbill_Load_SuperStringFromRom(header, mHandbill_HEADER_LEN, header_back_start, mail_no); - mHandbill_Load_PsStringFromRom(footer, mHandbill_FOOTER_LEN, mail_no); - mHandbill_Load_MailFromRom(body, mail_no); + mHandbill_load_init(); + mHandbill_Load_SuperStringFromRom(header, mHandbill_HEADER_LEN, header_back_start, mail_no); + mHandbill_Load_PsStringFromRom(footer, mHandbill_FOOTER_LEN, mail_no); + mHandbill_Load_MailFromRom(body, mail_no); } -extern void mHandbill_Load_HandbillFromRom2(u8* header, int header_size, int* header_back_start, u8* footer, int footer_size, u8* body, int mail_no) { - mHandbill_load_init(); - mHandbill_Load_SuperStringFromRom(header, header_size, header_back_start, mail_no); - mHandbill_Load_PsStringFromRom(footer, footer_size, mail_no); - mHandbill_Load_MailFromRom(body, mail_no); +extern void mHandbill_Load_HandbillFromRom2(u8* header, int header_size, int* header_back_start, u8* footer, + int footer_size, u8* body, int mail_no) { + mHandbill_load_init(); + mHandbill_Load_SuperStringFromRom(header, header_size, header_back_start, mail_no); + mHandbill_Load_PsStringFromRom(footer, footer_size, mail_no); + mHandbill_Load_MailFromRom(body, mail_no); } static u32 mHandbillz_table_pos[mHandbillz_TYPE_NUM]; static u32 mHandbillz_data_pos[mHandbillz_TYPE_NUM]; static u32 mHandbillz_dummy_size_tbl[mHandbillz_TYPE_NUM] = { - 27, /* SUPER */ - 200, /* MAILA */ - 200, /* MAILB*/ - 200, /* MAILC */ - 34 /* PS */ + 27, /* SUPER */ + 200, /* MAILA */ + 200, /* MAILB*/ + 200, /* MAILC */ + 34 /* PS */ }; static void mHandbillz_aram_init() { - mHandbillz_table_pos[mHandbillz_TYPE_SUPER] = JW_GetAramAddress(RESOURCE_SUPERZ_TABLE); - mHandbillz_data_pos[mHandbillz_TYPE_SUPER] = JW_GetAramAddress(RESOURCE_SUPERZ); + mHandbillz_table_pos[mHandbillz_TYPE_SUPER] = JW_GetAramAddress(RESOURCE_SUPERZ_TABLE); + mHandbillz_data_pos[mHandbillz_TYPE_SUPER] = JW_GetAramAddress(RESOURCE_SUPERZ); - mHandbillz_table_pos[mHandbillz_TYPE_MAILA] = JW_GetAramAddress(RESOURCE_MAILA_TABLE); - mHandbillz_data_pos[mHandbillz_TYPE_MAILA] = JW_GetAramAddress(RESOURCE_MAILA); + mHandbillz_table_pos[mHandbillz_TYPE_MAILA] = JW_GetAramAddress(RESOURCE_MAILA_TABLE); + mHandbillz_data_pos[mHandbillz_TYPE_MAILA] = JW_GetAramAddress(RESOURCE_MAILA); - mHandbillz_table_pos[mHandbillz_TYPE_MAILB] = JW_GetAramAddress(RESOURCE_MAILB_TABLE); - mHandbillz_data_pos[mHandbillz_TYPE_MAILB] = JW_GetAramAddress(RESOURCE_MAILB); + mHandbillz_table_pos[mHandbillz_TYPE_MAILB] = JW_GetAramAddress(RESOURCE_MAILB_TABLE); + mHandbillz_data_pos[mHandbillz_TYPE_MAILB] = JW_GetAramAddress(RESOURCE_MAILB); - mHandbillz_table_pos[mHandbillz_TYPE_MAILC] = JW_GetAramAddress(RESOURCE_MAILC_TABLE); - mHandbillz_data_pos[mHandbillz_TYPE_MAILC] = JW_GetAramAddress(RESOURCE_MAILC); + mHandbillz_table_pos[mHandbillz_TYPE_MAILC] = JW_GetAramAddress(RESOURCE_MAILC_TABLE); + mHandbillz_data_pos[mHandbillz_TYPE_MAILC] = JW_GetAramAddress(RESOURCE_MAILC); - mHandbillz_table_pos[mHandbillz_TYPE_PS] = JW_GetAramAddress(RESOURCE_PSZ_TABLE); - mHandbillz_data_pos[mHandbillz_TYPE_PS] = JW_GetAramAddress(RESOURCE_PSZ); + mHandbillz_table_pos[mHandbillz_TYPE_PS] = JW_GetAramAddress(RESOURCE_PSZ_TABLE); + mHandbillz_data_pos[mHandbillz_TYPE_PS] = JW_GetAramAddress(RESOURCE_PSZ); } typedef struct { - int type; - int num; - - u8* ram_buf; - size_t ram_buf_size; + int type; + int num; - u32 dma_addr; - u32 dma_size; + u8* ram_buf; + size_t ram_buf_size; + + u32 dma_addr; + u32 dma_size; } mHandbillzDMA_c; static int mHandbillzDMA_body_addr_set(mHandbillzDMA_c* dma_info) { - int type = dma_info->type; - int num = dma_info->num; - - mMsg_Get_BodyParam(mHandbillz_table_pos[type], mHandbillz_data_pos[type], num, &dma_info->dma_addr, &dma_info->dma_size); + int type = dma_info->type; + int num = dma_info->num; - if (dma_info->dma_size > mHandbillz_dummy_size_tbl[dma_info->type]) { - return FALSE; - } - return TRUE; + mMsg_Get_BodyParam(mHandbillz_table_pos[type], mHandbillz_data_pos[type], num, &dma_info->dma_addr, + &dma_info->dma_size); + + if (dma_info->dma_size > mHandbillz_dummy_size_tbl[dma_info->type]) { + return FALSE; + } + return TRUE; } static int mHandbillzDMA_body_load(mHandbillzDMA_c* dma_info) { - if (mHandbillzDMA_body_addr_set(dma_info)) { - mem_clear(dma_info->ram_buf, dma_info->ram_buf_size, CHAR_SPACE); + if (mHandbillzDMA_body_addr_set(dma_info)) { + mem_clear(dma_info->ram_buf, dma_info->ram_buf_size, CHAR_SPACE); - if (dma_info->dma_size != 0) { - u32 dma_size = dma_info->dma_size; - u32 aligned_addr = ALIGN_PREV(dma_info->dma_addr, 32); - u32 data_ofs = dma_info->dma_addr & (32-1); - u32 size = ALIGN_NEXT(dma_size + data_ofs, 32); + if (dma_info->dma_size != 0) { + u32 dma_size = dma_info->dma_size; + u32 aligned_addr = ALIGN_PREV(dma_info->dma_addr, 32); + u32 data_ofs = dma_info->dma_addr & (32 - 1); + u32 size = ALIGN_NEXT(dma_size + data_ofs, 32); - _JW_GetResourceAram(aligned_addr, dma_info->ram_buf, size); + _JW_GetResourceAram(aligned_addr, dma_info->ram_buf, size); - if (data_ofs != 0) { - u8* src; - u8* dst; - int size; - int i; + if (data_ofs != 0) { + u8* src; + u8* dst; + int size; + int i; - dst = dma_info->ram_buf; - src = dst + data_ofs; - size = dma_info->dma_size; + dst = dma_info->ram_buf; + src = dst + data_ofs; + size = dma_info->dma_size; - for (i = 0; i < size; i++) { - u8 b = *src; - src++; - *dst = b; - dst++; + for (i = 0; i < size; i++) { + u8 b = *src; + src++; + *dst = b; + dst++; + } + } } - } - } - return TRUE; - } - else { - return FALSE; - } + return TRUE; + } else { + return FALSE; + } } static int mHandbillz_super_load(mHandbillz_Info_c* info) { - static u8 ram[90] ATTRIBUTE_ALIGN(32); - mHandbillzDMA_c dma_info; + static u8 ram[90] ATTRIBUTE_ALIGN(32); + mHandbillzDMA_c dma_info; - bzero(ram, 90); + bzero(ram, 90); - dma_info.type = mHandbillz_TYPE_SUPER; - dma_info.num = info->super_no; - dma_info.ram_buf = ram; - dma_info.ram_buf_size = 90; + dma_info.type = mHandbillz_TYPE_SUPER; + dma_info.num = info->super_no; + dma_info.ram_buf = ram; + dma_info.ram_buf_size = 90; - if (mHandbillzDMA_body_load(&dma_info)) { - u8 super_buf[43]; - int header_back_start; + if (mHandbillzDMA_body_load(&dma_info)) { + u8 super_buf[43]; + int header_back_start; - mem_clear(super_buf, 43, CHAR_SPACE); - mHandbill_CheckSuperStringBorderAndCopy(super_buf, 43, &header_back_start, ram, dma_info.dma_size); - mHandbill_Change_ControlCode2(super_buf, 43, dma_info.dma_size - 1, &header_back_start, mHandbill_FILL_SPACE); - mem_clear(info->super_buf_p, info->super_buf_size, CHAR_SPACE); - bcopy(super_buf, info->super_buf_p, info->super_buf_size < 43 ? info->super_buf_size : 43); + mem_clear(super_buf, 43, CHAR_SPACE); + mHandbill_CheckSuperStringBorderAndCopy(super_buf, 43, &header_back_start, ram, dma_info.dma_size); + mHandbill_Change_ControlCode2(super_buf, 43, dma_info.dma_size - 1, &header_back_start, mHandbill_FILL_SPACE); + mem_clear(info->super_buf_p, info->super_buf_size, CHAR_SPACE); + bcopy(super_buf, info->super_buf_p, info->super_buf_size < 43 ? info->super_buf_size : 43); - info->header_back_start = header_back_start; - return TRUE; - } - else { - return FALSE; - } + info->header_back_start = header_back_start; + return TRUE; + } else { + return FALSE; + } } static int mHandbillz_mail_load(mHandbillz_Info_c* info) { - mHandbillzDMA_c dma_info[3]; - mHandbillzDMA_c* dma_p; - int i; - int success = TRUE; - u32 total_size = 0; - u8* dst = info->mail_buf_p; + mHandbillzDMA_c dma_info[3]; + mHandbillzDMA_c* dma_p; + int i; + int success = TRUE; + u32 total_size = 0; + u8* dst = info->mail_buf_p; - dma_info[0].type = mHandbillz_TYPE_MAILA; - dma_info[0].num = info->maila_no; - dma_info[1].type = mHandbillz_TYPE_MAILB; - dma_info[1].num = info->mailb_no; - dma_info[2].type = mHandbillz_TYPE_MAILC; - dma_info[2].num = info->mailc_no; + dma_info[0].type = mHandbillz_TYPE_MAILA; + dma_info[0].num = info->maila_no; + dma_info[1].type = mHandbillz_TYPE_MAILB; + dma_info[1].num = info->mailb_no; + dma_info[2].type = mHandbillz_TYPE_MAILC; + dma_info[2].num = info->mailc_no; - dma_p = dma_info; - for (i = 0; i < 3 && success; i++, dma_p++) { - bzero(mHandbill_mail_buff, 263); - dma_p->ram_buf = mHandbill_mail_buff; - dma_p->ram_buf_size = 263; + dma_p = dma_info; + for (i = 0; i < 3 && success; i++, dma_p++) { + bzero(mHandbill_mail_buff, 263); + dma_p->ram_buf = mHandbill_mail_buff; + dma_p->ram_buf_size = 263; - if (mHandbillzDMA_body_load(dma_p)) { - total_size += dma_p->dma_size; + if (mHandbillzDMA_body_load(dma_p)) { + total_size += dma_p->dma_size; - if (total_size <= info->mail_buf_size) { - bcopy(mHandbill_mail_buff, dst, dma_p->dma_size); - dst += dma_p->dma_size; - } - else { - success = FALSE; - } - } - else { - success = FALSE; - } - } - - if (success) { - if (info->mail_buf_size > total_size) { - mem_clear(dst, info->mail_buf_size - total_size, CHAR_NEW_LINE); + if (total_size <= info->mail_buf_size) { + bcopy(mHandbill_mail_buff, dst, dma_p->dma_size); + dst += dma_p->dma_size; + } else { + success = FALSE; + } + } else { + success = FALSE; + } } - mHandbill_Change_ControlCode(info->mail_buf_p, info->mail_buf_size, total_size, mHandbill_FILL_RETURN); - } + if (success) { + if (info->mail_buf_size > total_size) { + mem_clear(dst, info->mail_buf_size - total_size, CHAR_NEW_LINE); + } - return success; + mHandbill_Change_ControlCode(info->mail_buf_p, info->mail_buf_size, total_size, mHandbill_FILL_RETURN); + } + + return success; } static int mHandbillz_ps_load(mHandbillz_Info_c* info) { - static u8 ram[97] ATTRIBUTE_ALIGN(32); - mHandbillzDMA_c dma_info; + static u8 ram[97] ATTRIBUTE_ALIGN(32); + mHandbillzDMA_c dma_info; - bzero(ram, 97); + bzero(ram, 97); - dma_info.type = mHandbillz_TYPE_PS; - dma_info.num = info->ps_no; - dma_info.ram_buf = ram; - dma_info.ram_buf_size = 97; + dma_info.type = mHandbillz_TYPE_PS; + dma_info.num = info->ps_no; + dma_info.ram_buf = ram; + dma_info.ram_buf_size = 97; - if (mHandbillzDMA_body_load(&dma_info)) { - u8 ps_buf[43]; + if (mHandbillzDMA_body_load(&dma_info)) { + u8 ps_buf[43]; - bcopy(ram, info->ps_buf_p, dma_info.dma_size); + bcopy(ram, info->ps_buf_p, dma_info.dma_size); - if (info->ps_buf_size > dma_info.dma_size) { - mem_clear(info->ps_buf_p + dma_info.dma_size, info->ps_buf_size - dma_info.dma_size, CHAR_SPACE); + if (info->ps_buf_size > dma_info.dma_size) { + mem_clear(info->ps_buf_p + dma_info.dma_size, info->ps_buf_size - dma_info.dma_size, CHAR_SPACE); + } + + mHandbill_Change_ControlCode(info->ps_buf_p, info->ps_buf_size, dma_info.dma_size, mHandbill_FILL_SPACE); + return TRUE; + } else { + return FALSE; } - - mHandbill_Change_ControlCode(info->ps_buf_p, info->ps_buf_size, dma_info.dma_size, mHandbill_FILL_SPACE); - return TRUE; - } - else { - return FALSE; - } } extern int mHandbillz_load(mHandbillz_Info_c* info) { - int super_res; - int mail_res; - int ps_res; - int res; + int super_res; + int mail_res; + int ps_res; + int res; - mHandbill_load_init(); + mHandbill_load_init(); - super_res = mHandbillz_super_load(info); - mail_res = mHandbillz_mail_load(info); - ps_res = mHandbillz_ps_load(info); - res = FALSE; + super_res = mHandbillz_super_load(info); + mail_res = mHandbillz_mail_load(info); + ps_res = mHandbillz_ps_load(info); + res = FALSE; - if (super_res && mail_res && ps_res) { - res = TRUE; - } + if (super_res && mail_res && ps_res) { + res = TRUE; + } - return res; + return res; } diff --git a/src/m_home.c b/src/m_home.c index 047af196..5572b6ae 100644 --- a/src/m_home.c +++ b/src/m_home.c @@ -15,504 +15,582 @@ /* upstairs room base unit layout */ static mActor_name_t l_player_room_2_utinfo[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - DOOR0, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, DOOR0, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; /* basement room base unit layout */ static mActor_name_t l_player_room_bm_utinfo[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; /* small main room base unit layout */ static mActor_name_t l_proom_s_tmp[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_DOOR, + RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; /* medium main room base unit layout */ static mActor_name_t l_proom_m_tmp[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, + RSV_WALL_NO, RSV_WALL_NO, DOOR0, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; /* large main room base unit layout */ static mActor_name_t l_proom_l_tmp[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, DOOR1, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + RSV_WALL_NO, DOOR1, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, DOOR0, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; /* island cottage base unit layout */ static mActor_name_t l_proom_cottage_tmp[UT_X_NUM * UT_Z_NUM] = { - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, - EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, RSV_DOOR, RSV_DOOR, RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, + RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, RSV_WALL_NO, EXIT_DOOR, EXIT_DOOR, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, RSV_WALL_NO, + RSV_WALL_NO, RSV_WALL_NO, RSV_WALL_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO, + EMPTY_NO, EMPTY_NO, EMPTY_NO, EMPTY_NO }; #define HANIWA_MSG_LINES 4 // TODO: fix me - /** * @brief Clears the save data for a given home. - * + * * @param home_no Index of the home which will be cleared (0-3). **/ extern void mHm_ClearHomeInfo(int home_no) { - static int haniwa_msg[HANIWA_MSG_LINES] = { 0x76A, 0x76B, 0x76C, 0x76D }; /* These are probably defines somewhere from auto-gen */ + static int haniwa_msg[HANIWA_MSG_LINES] = { 0x76A, 0x76B, 0x76C, + 0x76D }; /* These are probably defines somewhere from auto-gen */ - int no; - mHm_hs_c* home; - u8 haniwa_msg_buf[HANIWA_MESSAGE_LEN]; - u16* item_p; - u16* src_p; - int i; - u8* haniwa_msg_p; - int j; + int no; + mHm_hs_c* home; + u8 haniwa_msg_buf[HANIWA_MESSAGE_LEN]; + u16* item_p; + u16* src_p; + int i; + u8* haniwa_msg_p; + int j; - no = home_no & 3; - home = Save_GetPointer(homes[no]); - bzero(home, sizeof(mHm_hs_c)); - mPr_ClearPersonalID(&home->ownerID); - bcopy(l_proom_s_tmp, home->floors[mHm_ROOM_MAIN].layer_main.items, (UT_X_NUM * UT_Z_NUM) * sizeof(u16)); - home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch = 0; - *((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 1) = 0; /* ftr_switch might be a union? */ - *((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 0) = 0; + no = home_no & 3; + home = Save_GetPointer(homes[no]); + bzero(home, sizeof(mHm_hs_c)); + mPr_ClearPersonalID(&home->ownerID); + bcopy(l_proom_s_tmp, home->floors[mHm_ROOM_MAIN].layer_main.items, (UT_X_NUM * UT_Z_NUM) * sizeof(u16)); + home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch = 0; + *((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 1) = 0; /* ftr_switch might be a union? */ + *((u32*)&home->floors[mHm_ROOM_MAIN].layer_main.ftr_switch + 0) = 0; - item_p = (u16*)home->floors[mHm_ROOM_BASEMENT].layer_main.items; - src_p = l_player_room_bm_utinfo; - for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { - *item_p++ = *src_p++; - } + item_p = (u16*)home->floors[mHm_ROOM_BASEMENT].layer_main.items; + src_p = l_player_room_bm_utinfo; + for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { + *item_p++ = *src_p++; + } - item_p = ((u16*)home->floors[mHm_ROOM_UPPER].layer_main.items); - src_p = l_player_room_2_utinfo; - for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { - *item_p++ = *src_p++; - } + item_p = ((u16*)home->floors[mHm_ROOM_UPPER].layer_main.items); + src_p = l_player_room_2_utinfo; + for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { + *item_p++ = *src_p++; + } - mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE); - Save_Set(homes[no].outlook_pal, no); - Save_Set(homes[no].next_outlook_pal, no); - mCkRh_InitGokiSaveData_1Room_ByHomeData(home); - mHm_SetDefaultPlayerRoomData(no); + mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE); + Save_Set(homes[no].outlook_pal, no); + Save_Set(homes[no].next_outlook_pal, no); + mCkRh_InitGokiSaveData_1Room_ByHomeData(home); + mHm_SetDefaultPlayerRoomData(no); - haniwa_msg_p = home->haniwa.message; - for (j = 0; j < HANIWA_MSG_LINES; j++) { - int len; + haniwa_msg_p = home->haniwa.message; + for (j = 0; j < HANIWA_MSG_LINES; j++) { + int len; - mString_Load_StringFromRom(haniwa_msg_buf, HANIWA_MESSAGE_LEN, haniwa_msg[j]); - len = mMl_strlen(haniwa_msg_buf, HANIWA_MESSAGE_LEN, CHAR_SPACE); - haniwa_msg_buf[len] = CHAR_NEW_LINE; - mem_copy(haniwa_msg_p, haniwa_msg_buf, len + 1); - haniwa_msg_p += len + 1; - } + mString_Load_StringFromRom(haniwa_msg_buf, HANIWA_MESSAGE_LEN, haniwa_msg[j]); + len = mMl_strlen(haniwa_msg_buf, HANIWA_MESSAGE_LEN, CHAR_SPACE); + haniwa_msg_buf[len] = CHAR_NEW_LINE; + mem_copy(haniwa_msg_p, haniwa_msg_buf, len + 1); + haniwa_msg_p += len + 1; + } - Save_Set(keep_house_size[no], 0); - Save_Set(homes[no].door_original, 0xFF); + Save_Set(keep_house_size[no], 0); + Save_Set(homes[no].door_original, 0xFF); } /** * @brief Clears save data for all homes. **/ extern void mHm_ClearAllHomeInfo() { - int i; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - mHm_ClearHomeInfo(i); - } + for (i = 0; i < PLAYER_NUM; i++) { + mHm_ClearHomeInfo(i); + } } /** * @brief Sets common_data's 'now_home' pointer to the current player's home. **/ extern void mHm_SetNowHome() { - mHm_hs_c* now_home = NULL; + mHm_hs_c* now_home = NULL; - if (Common_Get(player_no) < PLAYER_NUM) { - now_home = Save_GetPointer(homes[mHS_get_arrange_idx(Common_Get(player_no))]); - } + if (Common_Get(player_no) < PLAYER_NUM) { + now_home = Save_GetPointer(homes[mHS_get_arrange_idx(Common_Get(player_no))]); + } - Common_Set(now_home, now_home); + Common_Set(now_home, now_home); } /* sizeof(mHm_player_room_default_data_c) == 0x10 */ typedef struct { - /* 0x00 */ u8 wall_num; - /* 0x01 */ u8 floor_num; - /* 0x04 */ int item_ut_x; - /* 0x08 */ int item_ut_z; - /* 0x0C */ mActor_name_t item; + /* 0x00 */ u8 wall_num; + /* 0x01 */ u8 floor_num; + /* 0x04 */ int item_ut_x; + /* 0x08 */ int item_ut_z; + /* 0x0C */ mActor_name_t item; } mHm_player_room_default_data_c; /* list of default properties for each house */ static mHm_player_room_default_data_c l_mHm_player_room_default_data[PLAYER_NUM] = { - { 3, 38, 4, 1, FTR_TAPEDECK }, /* Top-left house, stone wall & old flooring */ - { 41, 42, 4, 1, FTR_TAPEDECK }, /* Top-right house, wood panelling & steel flooring */ - { 55, 5, 4, 1, FTR_TAPEDECK }, /* Bottom-left house, shanty wall & birch flooring */ - { 42, 34, 4, 1, FTR_TAPEDECK } /* Bottom-right house, concrete wall & charcoal tile */ + { 3, 38, 4, 1, FTR_TAPEDECK }, /* Top-left house, stone wall & old flooring */ + { 41, 42, 4, 1, FTR_TAPEDECK }, /* Top-right house, wood panelling & steel flooring */ + { 55, 5, 4, 1, FTR_TAPEDECK }, /* Bottom-left house, shanty wall & birch flooring */ + { 42, 34, 4, 1, FTR_TAPEDECK } /* Bottom-right house, concrete wall & charcoal tile */ }; /** * @brief Sets the default data for a given home. - * + * * @param home_no Index of the home which will receive the default data **/ extern void mHm_SetDefaultPlayerRoomData(int home_no) { - int i; + int i; - int ut_x = l_mHm_player_room_default_data[home_no & 3].item_ut_x; - int ut_z = l_mHm_player_room_default_data[home_no & 3].item_ut_z; + int ut_x = l_mHm_player_room_default_data[home_no & 3].item_ut_x; + int ut_z = l_mHm_player_room_default_data[home_no & 3].item_ut_z; - Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[ut_z][ut_x], l_mHm_player_room_default_data[home_no & 3].item); - Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[1][1], FTR_ORANGEBOX); - Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_secondary.items[1][1], ITM_DIARY00); + Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[ut_z][ut_x], + l_mHm_player_room_default_data[home_no & 3].item); + Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_main.items[1][1], FTR_ORANGEBOX); + Save_Set(homes[home_no & 3].floors[mHm_ROOM_MAIN].layer_secondary.items[1][1], ITM_DIARY00); - for (i = 0; i < mHm_ROOM_NUM; i++) { - Save_Set(homes[home_no & 3].floors[i].wall_floor.flooring_idx, l_mHm_player_room_default_data[home_no & 3].floor_num); - Save_Set(homes[home_no & 3].floors[i].wall_floor.wallpaper_idx, l_mHm_player_room_default_data[home_no & 3].wall_num); - } + for (i = 0; i < mHm_ROOM_NUM; i++) { + Save_Set(homes[home_no & 3].floors[i].wall_floor.flooring_idx, + l_mHm_player_room_default_data[home_no & 3].floor_num); + Save_Set(homes[home_no & 3].floors[i].wall_floor.wallpaper_idx, + l_mHm_player_room_default_data[home_no & 3].wall_num); + } } /** * @brief Initializes the home's owner id to the given player's id. - * + * * @param home Pointer to the mHm_hs_c home which will be updated * @param player_no Index of the player whose id will be used **/ extern void mHm_InitHomeInfo(mHm_hs_c* home, int player_no) { - mPr_CopyPersonalID(&home->ownerID, Save_GetPointer(private[player_no].player_ID)); + mPr_CopyPersonalID(&home->ownerID, Save_GetPointer(private_data[player_no].player_ID)); } /** * @brief Sets/clears the wall and door layout for a given room. - * + * * @param dst Pointer to the room item actor data * @param roomtype Type of room to select correct room data (0-3) * @param set when TRUE copy data, when FALSE clear data **/ static void mHm_ChangeWallDoorFG(mActor_name_t* dst, int roomtype, int set) { - static mActor_name_t* player_room_tmp_table[mHm_ROOMTYPE_NUM] = { - l_proom_s_tmp, /* small room layout (default) */ - l_proom_m_tmp, /* medium room layout */ - l_proom_l_tmp, /* large room layout */ - l_proom_cottage_tmp /* island cottage layout */ - }; + static mActor_name_t* player_room_tmp_table[mHm_ROOMTYPE_NUM] = { + l_proom_s_tmp, /* small room layout (default) */ + l_proom_m_tmp, /* medium room layout */ + l_proom_l_tmp, /* large room layout */ + l_proom_cottage_tmp /* island cottage layout */ + }; - mActor_name_t* src; - int i; + mActor_name_t* src; + int i; - if (roomtype < mHm_ROOMTYPE_SMALL || roomtype >= mHm_ROOMTYPE_NUM) { - roomtype = mHm_ROOMTYPE_SMALL; - } - - src = player_room_tmp_table[roomtype]; - for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { - if (*src != EMPTY_NO) { - if (set == FALSE) { - *dst = EMPTY_NO; /* clear */ - } - else { - *dst = *src; /* set */ - } + if (roomtype < mHm_ROOMTYPE_SMALL || roomtype >= mHm_ROOMTYPE_NUM) { + roomtype = mHm_ROOMTYPE_SMALL; } - src++; - dst++; - } + src = player_room_tmp_table[roomtype]; + for (i = 0; i < UT_X_NUM * UT_Z_NUM; i++) { + if (*src != EMPTY_NO) { + if (set == FALSE) { + *dst = EMPTY_NO; /* clear */ + } else { + *dst = *src; /* set */ + } + } + + src++; + dst++; + } } /** * @brief Clears the wall & door data for a room. - * + * * @param items Pointer to the room actor items * @param roomtype Type of room to clear **/ static void mHm_EraseWallDoor(mActor_name_t* items, int roomtype) { - mHm_ChangeWallDoorFG(items, roomtype, FALSE); + mHm_ChangeWallDoorFG(items, roomtype, FALSE); } /** * @brief Sets the wall & door data for a room. - * + * * @param items Pointer to the room actor items * @param roomtype Type of room to clear **/ static void mHm_SetWallDoor(mActor_name_t* items, int roomtype) { - mHm_ChangeWallDoorFG(items, roomtype, TRUE); + mHm_ChangeWallDoorFG(items, roomtype, TRUE); } /** * @brief Updates the wall & door data for the main room. - * + * * @param home Pointer to the mHm_hs_c home to update * @param home_size Size of the home (0-4, but only 1-4 should be used for this function) **/ static void mHm_RehouseWallDoor(mHm_hs_c* home, int home_size) { - static int room_size[mHm_HOMESIZE_NUM] = { - mHm_ROOMTYPE_SMALL, /* mHm_HOMESIZE_SMALL */ - mHm_ROOMTYPE_MEDIUM, /* mHm_HOMESIZE_MEDIUM */ - mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_LARGE */ - mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_UPPER */ - mHm_ROOMTYPE_SMALL /* mHm_HOMESIZE_STATUE */ - }; + static int room_size[mHm_HOMESIZE_NUM] = { + mHm_ROOMTYPE_SMALL, /* mHm_HOMESIZE_SMALL */ + mHm_ROOMTYPE_MEDIUM, /* mHm_HOMESIZE_MEDIUM */ + mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_LARGE */ + mHm_ROOMTYPE_LARGE, /* mHm_HOMESIZE_UPPER */ + mHm_ROOMTYPE_SMALL /* mHm_HOMESIZE_STATUE */ + }; - int new_size; - int old_size; + int new_size; + int old_size; - if (home_size < mHm_HOMESIZE_MEDIUM || home_size >= mHm_HOMESIZE_NUM) { - home_size = mHm_HOMESIZE_MEDIUM; - } + if (home_size < mHm_HOMESIZE_MEDIUM || home_size >= mHm_HOMESIZE_NUM) { + home_size = mHm_HOMESIZE_MEDIUM; + } - old_size = room_size[home_size - 1]; - new_size = room_size[home_size]; + old_size = room_size[home_size - 1]; + new_size = room_size[home_size]; - mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, old_size); - mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, old_size); - mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, new_size); - mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, new_size); + mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, old_size); + mHm_EraseWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, old_size); + mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_main.items, new_size); + mHm_SetWallDoor((u16*)home->floors[mHm_ROOM_MAIN].layer_secondary.items, new_size); } -#define CHECK_ORDER_DATE(home, rtc_time) \ - ((home)->size_info.upgrade_order_date.day != (rtc_time)->day || \ - (home)->size_info.upgrade_order_date.month != (rtc_time)->month || \ - (home)->size_info.upgrade_order_date.year != (rtc_time)->year) +#define CHECK_ORDER_DATE(home, rtc_time) \ + ((home)->size_info.upgrade_order_date.day != (rtc_time)->day || \ + (home)->size_info.upgrade_order_date.month != (rtc_time)->month || \ + (home)->size_info.upgrade_order_date.year != (rtc_time)->year) /** * @brief Check if any house should be updated, and if so, update it. **/ extern void mHm_CheckRehouseOrder() { - mHm_hs_c* home = Save_Get(homes); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - int i; + mHm_hs_c* home = Save_Get(homes); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) { - if (home->outlook_pal != home->next_outlook_pal) { - home->outlook_pal = home->next_outlook_pal; - } + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) { + if (home->outlook_pal != home->next_outlook_pal) { + home->outlook_pal = home->next_outlook_pal; + } - if (home->size_info.size != home->size_info.next_size && home->size_info.next_size < mHm_HOMESIZE_STATUE) { - if (CHECK_ORDER_DATE(home, rtc_time)) { - home->outlook_pal = home->ordered_outlook_pal; - home->next_outlook_pal = home->ordered_outlook_pal; - home->size_info.size = home->size_info.next_size; - home->size_info.renew = TRUE; - mHm_RehouseWallDoor(home, home->size_info.size); + if (home->size_info.size != home->size_info.next_size && home->size_info.next_size < mHm_HOMESIZE_STATUE) { + if (CHECK_ORDER_DATE(home, rtc_time)) { + home->outlook_pal = home->ordered_outlook_pal; + home->next_outlook_pal = home->ordered_outlook_pal; + home->size_info.size = home->size_info.next_size; + home->size_info.renew = TRUE; + mHm_RehouseWallDoor(home, home->size_info.size); + } + } else { + if (home->size_info.basement_ordered) { + if (CHECK_ORDER_DATE(home, rtc_time)) { + mHm_SetBasement(i); + home->size_info.renew = TRUE; + } + } else if (home->size_info.statue_ordered == TRUE) { + if (CHECK_ORDER_DATE(home, rtc_time)) { + home->size_info.next_size = mHm_HOMESIZE_STATUE; + } + } + } } - } - else { - if (home->size_info.basement_ordered) { - if (CHECK_ORDER_DATE(home, rtc_time)) { - mHm_SetBasement(i); - home->size_info.renew = TRUE; - } - } - else if (home->size_info.statue_ordered == TRUE) { - if (CHECK_ORDER_DATE(home, rtc_time)) { - home->size_info.next_size = mHm_HOMESIZE_STATUE; - } - } - } + home++; } - home++; - } - for (i = 0; i < PLAYER_NUM; i++) { - u32* state_flags = Save_GetPointer(private[i].state_flags); - *state_flags &= (~0x200); /* TODO: these need an enum/defines */ - } + for (i = 0; i < PLAYER_NUM; i++) { + u32* state_flags = Save_GetPointer(private_data[i].state_flags); + *state_flags &= (~0x200); /* TODO: these need an enum/defines */ + } } /** * @brief Stores the player's current house size for later. - * + * * @param player_no Index of the player whose house size will be saved * @return TRUE/FALSE house size was kept **/ extern int mHm_KeepHouseSize(u8 player_no) { - int arrange_idx; - mHm_hs_c* home; - u8* keep_house_size; - int res = FALSE; + int arrange_idx; + mHm_hs_c* home; + u8* keep_house_size; + int res = FALSE; - if (player_no < PLAYER_NUM) { - arrange_idx = mHS_get_arrange_idx(player_no); - home = Save_GetPointer(homes[arrange_idx]); - keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]); - - res = TRUE; + if (player_no < PLAYER_NUM) { + arrange_idx = mHS_get_arrange_idx(player_no); + home = Save_GetPointer(homes[arrange_idx]); + keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]); - /* I don't think this is a union or struct due to the unused first bit */ - /* But maybe... perhaps they used a pad bit for the topmost bit unlike other structs */ - *keep_house_size = 0; - *keep_house_size |= home->size_info.size; - *keep_house_size |= home->size_info.next_size << 3; - *keep_house_size |= home->size_info.renew << 6; - } + res = TRUE; - return res; + /* I don't think this is a union or struct due to the unused first bit */ + /* But maybe... perhaps they used a pad bit for the topmost bit unlike other structs */ + *keep_house_size = 0; + *keep_house_size |= home->size_info.size; + *keep_house_size |= home->size_info.next_size << 3; + *keep_house_size |= home->size_info.renew << 6; + } + + return res; } /** * @brief Checks whether the kept house size for a player is the same as the actual size. - * + * * @param player_no The index of the player whose house will be checked * @returns TRUE/FALSE house size and keep house size are the same **/ extern int mHm_CheckKeepHouseSize(u8 player_no) { - int arrange_idx; - mHm_hs_c* home; - u8* keep_house_size; - int res = FALSE; + int arrange_idx; + mHm_hs_c* home; + u8* keep_house_size; + int res = FALSE; - if (player_no < PLAYER_NUM) { - arrange_idx = mHS_get_arrange_idx(player_no); - keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]); - home = Save_Get(homes + arrange_idx); + if (player_no < PLAYER_NUM) { + arrange_idx = mHS_get_arrange_idx(player_no); + keep_house_size = Save_GetPointer(keep_house_size[arrange_idx]); + home = Save_Get(homes + arrange_idx); - if ((*keep_house_size & 7) == home->size_info.size && - ((*keep_house_size >> 3) & 7) == home->size_info.next_size && - ((*keep_house_size >> 6) & 1) == home->size_info.renew) { - res = TRUE; + if ((*keep_house_size & 7) == home->size_info.size && + ((*keep_house_size >> 3) & 7) == home->size_info.next_size && + ((*keep_house_size >> 6) & 1) == home->size_info.renew) { + res = TRUE; + } } - } - return res; + return res; } /** * @brief Updates player house flags to include basement - * + * * @param home_no Index of the house whose basement flag will be enabled * @return TRUE/FALSE was flag set **/ extern int mHm_SetBasement(u8 home_no) { - if (home_no < PLAYER_NUM) { - mHm_flg_c* flags = Save_GetPointer(homes[home_no].flags); - if (flags->has_basement == FALSE) { - flags->has_basement = TRUE; - return TRUE; + if (home_no < PLAYER_NUM) { + mHm_flg_c* flags = Save_GetPointer(homes[home_no].flags); + if (flags->has_basement == FALSE) { + flags->has_basement = TRUE; + return TRUE; + } } - } - return FALSE; + return FALSE; } /** * @brief Sets the default island cottage data - * + * * @param cottage Pointer to the mHm_cottage_c cottage which will receive the default data **/ static void mHm_SetDefaultCottageData(mHm_cottage_c* cottage) { - if (cottage == NULL) { - return; - } + if (cottage == NULL) { + return; + } - cottage->room.wall_floor.flooring_idx = 13; - cottage->room.wall_floor.wallpaper_idx = 13; + cottage->room.wall_floor.flooring_idx = 13; + cottage->room.wall_floor.wallpaper_idx = 13; - cottage->room.layer_main.items[3][3] = FTR_REDALOHASHIRT; - cottage->room.layer_main.items[3][6] = FTR_BLUEALOHASHIRT; - cottage->room.layer_main.items[6][3] = FTR_REDALOHASHIRT; - cottage->room.layer_main.items[6][6] = FTR_BLUEALOHASHIRT; + cottage->room.layer_main.items[3][3] = FTR_REDALOHASHIRT; + cottage->room.layer_main.items[3][6] = FTR_BLUEALOHASHIRT; + cottage->room.layer_main.items[6][3] = FTR_REDALOHASHIRT; + cottage->room.layer_main.items[6][6] = FTR_BLUEALOHASHIRT; } /** * @brief Initialize an mHm_cottage_c cottage. - * + * * @param cottage Pointer to the mHm_cottage_c which will be initialized **/ extern void mHm_InitCottage(mHm_cottage_c* cottage) { - if (cottage != NULL) { - bzero(cottage, sizeof(mHm_cottage_c)); - mHm_SetWallDoor((u16*)cottage->room.layer_main.items, mHm_ROOMTYPE_COTTAGE); - mCkRh_InitGokiSaveData_IslandPlayerRoom(); - mHm_SetDefaultCottageData(cottage); - } + if (cottage != NULL) { + bzero(cottage, sizeof(mHm_cottage_c)); + mHm_SetWallDoor((u16*)cottage->room.layer_main.items, mHm_ROOMTYPE_COTTAGE); + mCkRh_InitGokiSaveData_IslandPlayerRoom(); + mHm_SetDefaultCottageData(cottage); + } } diff --git a/src/m_house.c b/src/m_house.c index ecf3c974..eb332b4d 100644 --- a/src/m_house.c +++ b/src/m_house.c @@ -11,7 +11,7 @@ /** * @brief Initializes the `house_arrangement` variable to its default state. - * + * * The default state is: * Player0: House0 * Player1: House1 @@ -19,98 +19,100 @@ * Player3: House3 **/ extern void mHS_house_init() { - Save_Set(house_arrangement, DEFAULT_ARRANGEMENT); + Save_Set(house_arrangement, DEFAULT_ARRANGEMENT); } /** * @brief Retrieves the house arrangement value for a given player index. - * + * * @return The house index for the player. **/ extern int mHS_get_arrange_idx(int player_no) { - return ARRANGE_GET(player_no); + return ARRANGE_GET(player_no); } /** * @brief Returns the index of the player who owns the house index from `house_arrangement`. - * + * * @return The owning player index for the house. **/ extern int mHS_get_pl_no(int house_no) { - int i; - u32 arrangement = Save_Get(house_arrangement); + int i; + u32 arrangement = Save_Get(house_arrangement); - for (i = 0; i < PLAYER_NUM; i++) { - if ((arrangement & 3) == house_no) { - break; + for (i = 0; i < PLAYER_NUM; i++) { + if ((arrangement & 3) == house_no) { + break; + } + + arrangement >>= 2; } - arrangement >>= 2; - } - - return i; + return i; } /** * @brief Returns the index of the player who owns a house by checking house owner IDs. - * + * * @return The owning player index for the house. **/ extern int mHS_get_pl_no_detail(int home_no) { - mHm_hs_c* home = Save_Get(homes + (home_no & 3)); + mHm_hs_c* home = Save_Get(homes + (home_no & 3)); - if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) { - int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_CheckCmpPersonalID(&home->ownerID, Save_GetPointer(private[i].player_ID))) { - return i; - } + if (mPr_NullCheckPersonalID(&home->ownerID) == FALSE) { + int i; + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_CheckCmpPersonalID(&home->ownerID, Save_GetPointer(private_data[i].player_ID))) { + return i; + } + } } - } - return -1; + return -1; } /* TODO: this probably had some macro.. maybe refactor? */ /** * @brief Sets the house arrangement value for `player_no` to `house_no`. - * + * * This function also swaps houses with whichever player is set in house_arrangement * with the house currently assigned to `player_no`. - * + * * @return TRUE when successfully set, FALSE otherwise. **/ extern int mHS_set_use(int player_no, int house_no) { - int now_player_no; - u32 house_arrangement; - int mask; - int plr_shift; - int new_shift; - int res = FALSE; + int now_player_no; + u32 house_arrangement; + int mask; + int plr_shift; + int new_shift; + int res = FALSE; - if (player_no < PLAYER_NUM && house_no < PLAYER_NUM) { - now_player_no = mHS_get_pl_no(house_no); - if (mPr_NullCheckPersonalID(Save_GetPointer(homes[house_no].ownerID)) == TRUE) { - if (now_player_no != player_no) { - plr_shift = player_no * 2; - new_shift = now_player_no * 2; - house_arrangement = Save_Get(house_arrangement); - - /* create bitmask to clear previous saved indices */ - mask = 0xffffffff; - mask ^= (3 << plr_shift) | (3 << new_shift); /* Remove the bits relating to both player indicies */ + if (player_no < PLAYER_NUM && house_no < PLAYER_NUM) { + now_player_no = mHS_get_pl_no(house_no); + if (mPr_NullCheckPersonalID(Save_GetPointer(homes[house_no].ownerID)) == TRUE) { + if (now_player_no != player_no) { + plr_shift = player_no * 2; + new_shift = now_player_no * 2; + house_arrangement = Save_Get(house_arrangement); - /* Swap the player who currently owns our selected house with whatever house our player "owns" currently */ - Save_Set(house_arrangement, ( - ((house_arrangement & mask) | /* Clear old values */ - (((house_arrangement >> plr_shift) & 3)) << new_shift) | /* move current player house idx to old player house idx */ - (house_no << plr_shift))); /* set current player new house idx */ - } + /* create bitmask to clear previous saved indices */ + mask = 0xffffffff; + mask ^= (3 << plr_shift) | (3 << new_shift); /* Remove the bits relating to both player indicies */ - mHm_InitHomeInfo(Save_Get(homes + house_no), player_no); - res = TRUE; + /* Swap the player who currently owns our selected house with whatever house our player "owns" currently + */ + Save_Set(house_arrangement, + (((house_arrangement & mask) | /* Clear old values */ + (((house_arrangement >> plr_shift) & 3)) + << new_shift) | /* move current player house idx to old player house idx */ + (house_no << plr_shift))); /* set current player new house idx */ + } + + mHm_InitHomeInfo(Save_Get(homes + house_no), player_no); + res = TRUE; + } } - } - return res; + return res; } diff --git a/src/m_island.c b/src/m_island.c index 2f70197d..7385836e 100644 --- a/src/m_island.c +++ b/src/m_island.c @@ -364,8 +364,8 @@ static void mISL_agb_to_gc_fllot_bit(mHm_fllot_bit_c* gc, u32* agb) { gc->wall_original = (u32)gc->wall_original; gc->floor_original = (u32)gc->floor_original; #else - gc->wall_original = agb->wall_original; - gc->floor_original = agb->floor_original; + gc->wall_original = ((mHm_fllot_bit_c*)(agb))->wall_original; + gc->floor_original = ((mHm_fllot_bit_c*)(agb))->floor_original; #endif } @@ -738,7 +738,7 @@ static void mISL_toHole(mActor_name_t* fg, u16* deposit, int bx, int bz) { hole_no = 0; } - fg[0] = BURIED_PITFALL_START + hole_no; + fg[0] = BURIED_PITFALL_HOLE_START + hole_no; deposit[0] &= ~(1 << ut_x); } @@ -749,8 +749,6 @@ static void mISL_toHole(mActor_name_t* fg, u16* deposit, int bx, int bz) { } } -/* @nonmatching */ -#ifndef MUST_MATCH extern void mISL_agb_to_gc(Island_c* gc, Island_agb_c* agb) { int island_x_blocks[mISL_FG_BLOCK_X_NUM]; int i; @@ -762,7 +760,7 @@ extern void mISL_agb_to_gc(Island_c* gc, Island_agb_c* agb) { mISL_agb_to_gc_cottage(&gc->cottage, &agb->cottage); bcopy(&agb->flag_design, &gc->flag_design, sizeof(mNW_original_design_c)); mISL_agb_to_gc_animal(&gc->animal, &agb->animal); - mISL_short((u16*)gc->deposit, (u16*)agb->deposit, sizeof(gc->deposit) / sizeof(u16)); + mISL_short(gc->deposit[0], agb->deposit[0], sizeof(gc->deposit) / sizeof(u16)); bcopy(agb->bg_data, gc->bg_data, sizeof(gc->bg_data)); mISL_gc_to_agb_time(&gc->renew_time, &agb->renew_time); gc->last_song_to_island = agb->last_song_to_island; @@ -773,18 +771,12 @@ extern void mISL_agb_to_gc(Island_c* gc, Island_agb_c* agb) { mFI_GetIslandBlockNumX(island_x_blocks); for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - int idx = i + island_x_blocks[0]; - mActor_name_t* fg_p = &gc->fgblock[0][i].items[0][0]; - u16* deposit_p = (u16*)&gc->deposit[(u16)i]; // the access to deposit is strange, casting to u16 is - // incorrect but it makes all other instructions correct + /* This may be fakematch */ + int x = i + 1; - mISL_toHole(fg_p, deposit_p, idx, mISL_BLOCK_Z); + mISL_toHole((mActor_name_t*)&gc->fgblock[0][i], gc->deposit[--x], (i) + island_x_blocks[0], + mISL_BLOCK_Z); } } } } -#else -extern asm void mISL_agb_to_gc(Island_c* gc, Island_agb_c* agb) { -#include "asm/803b5948.s" -} -#endif diff --git a/src/m_item_name.c b/src/m_item_name.c index 1b7b1b3d..6342323f 100644 --- a/src/m_item_name.c +++ b/src/m_item_name.c @@ -7,348 +7,594 @@ #include "m_font.h" static u8 itemArt_Paper[PAPER_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, }; static u8 itemArt_Money[MONEY_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, }; static u8 itemArt_Tool[TOOL_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, - mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, + mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, }; static u8 itemArt_Fish[FISH_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, }; static u8 itemArt_Cloth[CLOTH_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, }; static u8 itemArt_Etc[ETC_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, - mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, + mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, + mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, + mIN_ARTICLE_NONE, }; static u8 itemArt_Carpet[CARPET_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, + mIN_ARTICLE_A, }; static u8 itemArt_Wall[WALL_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, }; static u8 itemArt_Fruit[FRUIT_NUM] = { - mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, }; static u8 itemArt_Plant[PLANT_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, }; static u8 itemArt_MiniDisk[MINIDISK_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, }; static u8 itemArt_Diary[DIARY_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, }; static u8 itemArt_Ticket[TICKET_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, }; static u8 itemArt_Insect[INSECT_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, }; static u8 itemArt_Hukubukuro[HUKUBUKURO_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A + mIN_ARTICLE_A, + mIN_ARTICLE_A, }; static u8 itemArt_Kabu[KABU_NUM] = { - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, }; static u8 ftrArt[FTR_NUM] = { - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, - mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, - mIN_ARTICLE_NONE, mIN_ARTICLE_NONE + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, + mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_THE, mIN_ARTICLE_THE, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_AN, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, + mIN_ARTICLE_NONE, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, + mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_A, mIN_ARTICLE_NONE, mIN_ARTICLE_NONE, }; /** * @brief Copies an item name from src to dst. - * + * * @param dst Destination item name buffer * @param src Source item name buffer **/ static void mIN_dma_itemName(u8* dst, u8* src) { - mem_copy(dst, src, mIN_ITEM_NAME_LEN); + mem_copy(dst, src, mIN_ITEM_NAME_LEN); } /** * @brief Retrieves and copies an item name to a destination buffer from an item no. - * + * * @param dst The item name destination buffer * @param item The item no whose name will be retrieved **/ extern void mIN_copy_name_str(u8* dst, mActor_name_t item) { - static u8* itemName_table[ITEM1_CAT_NUM] = { - itemName_paper, - itemName_money, - itemName_tool, - itemName_fish, - itemName_cloth, - itemName_etc, - itemName_carpet, - itemName_wall, - itemName_fruit, - itemName_plant, - itemName_minidisk, - itemName_dummy, - itemName_ticket, - itemName_insect, - itemName_hukubukuro, - itemName_kabu - }; + // clang-format off + static u8* itemName_table[ITEM1_CAT_NUM] = { + itemName_paper, + itemName_money, + itemName_tool, + itemName_fish, + itemName_cloth, + itemName_etc, + itemName_carpet, + itemName_wall, + itemName_fruit, + itemName_plant, + itemName_minidisk, + itemName_dummy, + itemName_ticket, + itemName_insect, + itemName_hukubukuro, + itemName_kabu + }; + // clang-format on - static u8 unknown_item_str[mIN_ITEM_NAME_LEN] = { CHAR_u, CHAR_n, CHAR_k, CHAR_n, CHAR_o, CHAR_w, CHAR_n, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE }; + static u8 unknown_item_str[mIN_ITEM_NAME_LEN] = { CHAR_u, CHAR_n, CHAR_k, CHAR_n, + CHAR_o, CHAR_w, CHAR_n, CHAR_SPACE, + CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, + CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE }; - u8 item_name[mIN_ITEM_NAME_LEN]; - u32 itm = item; - mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE); + u8 item_name[mIN_ITEM_NAME_LEN]; + u32 itm = item; + mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE); - if (mNT_check_unknown(item_no) == TRUE) { - mem_copy(dst, unknown_item_str, mIN_ITEM_NAME_LEN); - } - else { - switch (ITEM_NAME_GET_TYPE(item_no)) { - case NAME_TYPE_ITEM1: - { - mIN_dma_itemName(item_name, itemName_table[ITEM_NAME_GET_CAT(item_no)] + ITEM_NAME_GET_INDEX(item_no) * mIN_ITEM_NAME_LEN); - mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); - break; - } + if (mNT_check_unknown(item_no) == TRUE) { + mem_copy(dst, unknown_item_str, mIN_ITEM_NAME_LEN); + } else { + switch (ITEM_NAME_GET_TYPE(item_no)) { + case NAME_TYPE_ITEM1: { + mIN_dma_itemName(item_name, itemName_table[ITEM_NAME_GET_CAT(item_no)] + + ITEM_NAME_GET_INDEX(item_no) * mIN_ITEM_NAME_LEN); + mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); + break; + } - case NAME_TYPE_FTR0: - { - mIN_dma_itemName(item_name, ftrName_table + ((item_no / 4) & 0x3FF) * mIN_ITEM_NAME_LEN); - mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); - break; - } + case NAME_TYPE_FTR0: { + mIN_dma_itemName(item_name, ftrName_table + ((item_no / 4) & 0x3FF) * mIN_ITEM_NAME_LEN); + mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); + break; + } - case NAME_TYPE_FTR1: - { - mIN_dma_itemName(item_name, ftrName2_table + ((item_no / 4) & 0x3FF) * mIN_ITEM_NAME_LEN); - mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); - break; - } + case NAME_TYPE_FTR1: { + mIN_dma_itemName(item_name, ftrName2_table + ((item_no / 4) & 0x3FF) * mIN_ITEM_NAME_LEN); + mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); + break; + } - default: - { - if (item_no >= SIGNBOARD && item_no <= SIGNBOARD7_PLR3) { - mIN_dma_itemName(item_name, itemName_table[ITEM1_CAT_ETC] + (ITM_SIGNBOARD & 0xFF) * mIN_ITEM_NAME_LEN); - mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); + default: { + if (ITEM_IS_SIGNBOARD(item_no)) { + mIN_dma_itemName(item_name, + itemName_table[ITEM1_CAT_ETC] + (ITM_SIGNBOARD & 0xFF) * mIN_ITEM_NAME_LEN); + mem_copy(dst, item_name, mIN_ITEM_NAME_LEN); + } else if (item_no == EMPTY_NO) { + mem_clear(dst, mIN_ITEM_NAME_LEN, CHAR_SPACE); + } + break; + } } - else if (item_no == EMPTY_NO) { - mem_clear(dst, mIN_ITEM_NAME_LEN, CHAR_SPACE); - } - break; - } } - } } /** * @brief Gets the artticle type for a given item. - * + * * @param item The item no whose article type will be retrieved * @return mIN_ARTICLE_* item article **/ extern int mIN_get_item_article(mActor_name_t item) { - static u8* itemArt_table[ITEM1_CAT_NUM] = { - itemArt_Paper, - itemArt_Money, - itemArt_Tool, - itemArt_Fish, - itemArt_Cloth, - itemArt_Etc, - itemArt_Carpet, - itemArt_Wall, - itemArt_Fruit, - itemArt_Plant, - itemArt_MiniDisk, - itemArt_Diary, - itemArt_Ticket, - itemArt_Insect, - itemArt_Hukubukuro, - itemArt_Kabu - }; + // clang-format off + static u8* itemArt_table[ITEM1_CAT_NUM] = { + itemArt_Paper, + itemArt_Money, + itemArt_Tool, + itemArt_Fish, + itemArt_Cloth, + itemArt_Etc, + itemArt_Carpet, + itemArt_Wall, + itemArt_Fruit, + itemArt_Plant, + itemArt_MiniDisk, + itemArt_Diary, + itemArt_Ticket, + itemArt_Insect, + itemArt_Hukubukuro, + itemArt_Kabu + }; + // clang-format on - int article = mIN_ARTICLE_NONE; - mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE); - int index = item_no & 0xFF; + int article = mIN_ARTICLE_NONE; + mActor_name_t item_no = mRmTp_FtrItemNo2Item1ItemNo(item, FALSE); + int index = item_no & 0xFF; - switch (ITEM_NAME_GET_TYPE(item_no)) { - case NAME_TYPE_ITEM1: - { - article = itemArt_table[ITEM_NAME_GET_CAT(item_no)][index]; - break; + switch (ITEM_NAME_GET_TYPE(item_no)) { + case NAME_TYPE_ITEM1: { + article = itemArt_table[ITEM_NAME_GET_CAT(item_no)][index]; + break; + } + + case NAME_TYPE_FTR0: + case NAME_TYPE_FTR1: { + int ftr_idx = mRmTp_FtrItemNo2FtrIdx(item_no); + if (ftr_idx < FTR_NUM) { + return ftrArt[ftr_idx]; + } + return mIN_ARTICLE_NONE; + } + + default: { + if (ITEM_IS_SIGNBOARD(item_no)) { + article = itemArt_Etc[ITM_SIGNBOARD & 0xFF]; + } + break; + } } - case NAME_TYPE_FTR0: - case NAME_TYPE_FTR1: - { - int ftr_idx = mRmTp_FtrItemNo2FtrIdx(item_no); - if (ftr_idx < FTR_NUM) { - return ftrArt[ftr_idx]; - } - return mIN_ARTICLE_NONE; - } - - default: - { - if (item_no >= SIGNBOARD && item_no <= SIGNBOARD7_PLR3) { - article = itemArt_Etc[ITM_SIGNBOARD & 0xFF]; - } - break; - } - } - - return article; + return article; } diff --git a/src/m_lib.c b/src/m_lib.c index 13b9cf95..f0eaeb31 100644 --- a/src/m_lib.c +++ b/src/m_lib.c @@ -62,11 +62,11 @@ * @param size Number of bytes to copy. */ extern void mem_copy(u8* dst, u8* src, size_t size) { - for (size; size != 0; size--) { - *dst = *src; - src++; - dst++; - } + for (size; size != 0; size--) { + *dst = *src; + src++; + dst++; + } } /** @@ -77,11 +77,11 @@ extern void mem_copy(u8* dst, u8* src, size_t size) { * @param val Value to set each byte in the destination buffer. */ extern void mem_clear(u8* dst, size_t size, u8 val) { - u32 i; + u32 i; - for (i = 0; i < size; i++) { - *dst++ = val; - } + for (i = 0; i < size; i++) { + *dst++ = val; + } } /** @@ -93,14 +93,14 @@ extern void mem_clear(u8* dst, size_t size, u8 val) { * @return TRUE if the memory buffers are equal, FALSE otherwise. */ extern int mem_cmp(u8* p1, u8* p2, size_t size) { - for (size; size != 0; size--) { - if (*p1 != *p2) { - return FALSE; + for (size; size != 0; size--) { + if (*p1 != *p2) { + return FALSE; + } + p1++; + p2++; } - p1++; - p2++; - } - return TRUE; + return TRUE; } /** @@ -109,7 +109,9 @@ extern int mem_cmp(u8* p1, u8* p2, size_t size) { * @param angle Angle in s16 format. * @return Cosine of the angle as a floating-point value. */ -extern f32 cos_s(s16 angle) { return coss(angle) * SHT_MINV; } +extern f32 cos_s(s16 angle) { + return coss(angle) * SHT_MINV; +} /** * @brief Calculate the sine of the given s16 angle. @@ -117,7 +119,9 @@ extern f32 cos_s(s16 angle) { return coss(angle) * SHT_MINV; } * @param angle Angle in s16 format. * @return Sine of the angle as a floating-point value. */ -extern f32 sin_s(s16 angle) { return sins(angle) * SHT_MINV; } +extern f32 sin_s(s16 angle) { + return sins(angle) * SHT_MINV; +} /** * @brief Chase an angle value towards a target angle, with a specified step. @@ -132,24 +136,24 @@ extern f32 sin_s(s16 angle) { return sins(angle) * SHT_MINV; } * @return TRUE if the angle reaches the target, FALSE otherwise. */ extern int chase_angle(s16* const pValue, const s16 target, s16 step) { - if (step) { - f32 updateScale = game_GameFrame_2F; + if (step) { + f32 updateScale = game_GameFrame_2F; - if ((s16)(*pValue - target) > 0) { - step = -step; + if ((s16)(*pValue - target) > 0) { + step = -step; + } + + *pValue += (s16)(step * updateScale); + + if (((s16)(*pValue - target) * step) >= 0) { + *pValue = target; + return TRUE; + } + } else if (*pValue == target) { + return TRUE; } - *pValue += (s16)(step * updateScale); - - if (((s16)(*pValue - target) * step) >= 0) { - *pValue = target; - return TRUE; - } - } else if (*pValue == target) { - return TRUE; - } - - return FALSE; + return FALSE; } /** @@ -165,23 +169,23 @@ extern int chase_angle(s16* const pValue, const s16 target, s16 step) { * @return TRUE if the value reaches the target, FALSE otherwise. */ extern int chase_s(s16* const pValue, const s16 target, s16 step) { - if (step) { - if (*pValue > target) { - step = -step; - } + if (step) { + if (*pValue > target) { + step = -step; + } - *pValue += step; + *pValue += step; - if ((step * (*pValue - target)) >= 0) { - *pValue = target; - return TRUE; + if ((step * (*pValue - target)) >= 0) { + *pValue = target; + return TRUE; + } + } else { + if (*pValue == target) { + return TRUE; + } } - } else { - if (*pValue == target) { - return TRUE; - } - } - return FALSE; + return FALSE; } /** @@ -197,23 +201,23 @@ extern int chase_s(s16* const pValue, const s16 target, s16 step) { * @return TRUE if the value reaches the target, FALSE otherwise. */ extern int chase_f(f32* const pValue, const f32 target, f32 step) { - if (step) { - if (*pValue > target) { - step = -step; - } + if (step) { + if (*pValue > target) { + step = -step; + } - *pValue += step; + *pValue += step; - if ((step * (*pValue - target)) >= 0.0f) { - *pValue = target; - return TRUE; + if ((step * (*pValue - target)) >= 0.0f) { + *pValue = target; + return TRUE; + } + } else { + if (*pValue == target) { + return TRUE; + } } - } else { - if (*pValue == target) { - return TRUE; - } - } - return FALSE; + return FALSE; } /** @@ -228,27 +232,26 @@ extern int chase_f(f32* const pValue, const f32 target, f32 step) { * @param fraction Fraction of the distance to move towards the target. * @return Remaining distance after the chase. */ -extern f32 chase_xyz_t(xyz_t* const pValue, const xyz_t* const target, - const f32 fraction) { - xyz_t diff; - f32 dist; - f32 stepSize; +extern f32 chase_xyz_t(xyz_t* const pValue, const xyz_t* const target, const f32 fraction) { + xyz_t diff; + f32 dist; + f32 stepSize; - xyz_t_sub(target, pValue, &diff); + xyz_t_sub(target, pValue, &diff); - dist = Math3DVecLength(&diff); - if (dist > fraction) { - stepSize = fraction / dist; - pValue->x += stepSize * diff.x; - pValue->y += stepSize * diff.y; - pValue->z += stepSize * diff.z; + dist = Math3DVecLength(&diff); + if (dist > fraction) { + stepSize = fraction / dist; + pValue->x += stepSize * diff.x; + pValue->y += stepSize * diff.y; + pValue->z += stepSize * diff.z; - return dist - fraction; - } else { - xyz_t_move(pValue, target); + return dist - fraction; + } else { + xyz_t_move(pValue, target); - return 0.0f; - } + return 0.0f; + } } /** @@ -264,19 +267,19 @@ extern f32 chase_xyz_t(xyz_t* const pValue, const xyz_t* const target, * @return TRUE if the angle reaches the limit, FALSE otherwise. */ extern int chase_angle2(s16* const pValue, const s16 limit, const s16 step) { - s16 prev = *pValue; + s16 prev = *pValue; - *pValue += step; - if (((s16)(*pValue - limit) * (s16)(prev - limit)) <= 0) { - s32 absDiff = ABS((s16)(*pValue - limit)); + *pValue += step; + if (((s16)(*pValue - limit) * (s16)(prev - limit)) <= 0) { + s32 absDiff = ABS((s16)(*pValue - limit)); - if (absDiff < 16384) { - *pValue = limit; - return TRUE; + if (absDiff < 16384) { + *pValue = limit; + return TRUE; + } } - } - return FALSE; + return FALSE; } /** @@ -287,13 +290,13 @@ extern int chase_angle2(s16* const pValue, const s16 limit, const s16 step) { * @param step Step value for interpolation speed. */ extern void inter_float(f32* const pValue, const f32 arg1, const int step) { - if (step <= 0) { - *pValue = arg1; - } else { - f32 diff = arg1 - *pValue; + if (step <= 0) { + *pValue = arg1; + } else { + f32 diff = arg1 - *pValue; - *pValue += diff / step; - } + *pValue += diff / step; + } } /** @@ -308,7 +311,7 @@ extern void inter_float(f32* const pValue, const f32 arg1, const int step) { * @return Random timer value. */ extern s16 get_random_timer(const s16 base, const s16 range) { - return base + (s16)(range * fqrand()); + return base + (s16)(range * fqrand()); } /** @@ -318,9 +321,9 @@ extern s16 get_random_timer(const s16 base, const s16 range) { * @param src Source xyz_t structure. */ extern void xyz_t_move(xyz_t* const dest, const xyz_t* const src) { - dest->x = src->x; - dest->y = src->y; - dest->z = src->z; + dest->x = src->x; + dest->y = src->y; + dest->z = src->z; } /** @@ -330,9 +333,9 @@ extern void xyz_t_move(xyz_t* const dest, const xyz_t* const src) { * @param src Pointer to the source s_xyz structure. */ extern void xyz_t_move_s_xyz(xyz_t* const dest, const s_xyz* const src) { - dest->x = src->x; - dest->y = src->y; - dest->z = src->z; + dest->x = src->x; + dest->y = src->y; + dest->z = src->z; } /** @@ -343,11 +346,10 @@ extern void xyz_t_move_s_xyz(xyz_t* const dest, const s_xyz* const src) { * @param total Output xyz_t structure for the result. */ -extern void xyz_t_add(const xyz_t* const augend, const xyz_t* const addend, - xyz_t* const total) { - total->x = augend->x + addend->x; - total->y = augend->y + addend->y; - total->z = augend->z + addend->z; +extern void xyz_t_add(const xyz_t* const augend, const xyz_t* const addend, xyz_t* const total) { + total->x = augend->x + addend->x; + total->y = augend->y + addend->y; + total->z = augend->z + addend->z; } /** @@ -357,11 +359,10 @@ extern void xyz_t_add(const xyz_t* const augend, const xyz_t* const addend, * @param subtrahend Second input xyz_t structure. * @param diff Output xyz_t structure for the result. */ -extern void xyz_t_sub(const xyz_t* const minuend, const xyz_t* const subtrahend, - xyz_t* const diff) { - diff->x = minuend->x - subtrahend->x; - diff->y = minuend->y - subtrahend->y; - diff->z = minuend->z - subtrahend->z; +extern void xyz_t_sub(const xyz_t* const minuend, const xyz_t* const subtrahend, xyz_t* const diff) { + diff->x = minuend->x - subtrahend->x; + diff->y = minuend->y - subtrahend->y; + diff->z = minuend->z - subtrahend->z; } /** @@ -371,9 +372,9 @@ extern void xyz_t_sub(const xyz_t* const minuend, const xyz_t* const subtrahend, * @param multiplier Scalar value. */ extern void xyz_t_mult_v(xyz_t* const multiplicand, const f32 multiplier) { - multiplicand->x *= multiplier; - multiplicand->y *= multiplier; - multiplicand->z *= multiplier; + multiplicand->x *= multiplier; + multiplicand->y *= multiplier; + multiplicand->z *= multiplier; } /** @@ -383,13 +384,12 @@ extern void xyz_t_mult_v(xyz_t* const multiplicand, const f32 multiplier) { * @param target Pointer to the second xyz_t structure representing the target position. * @return The Euclidean distance between the two xyz_t structures. */ -extern f32 search_position_distance(const xyz_t* const pos, - const xyz_t* const target) { - f32 diffX = target->x - pos->x; - f32 diffY = target->y - pos->y; - f32 diffZ = target->z - pos->z; +extern f32 search_position_distance(const xyz_t* const pos, const xyz_t* const target) { + f32 diffX = target->x - pos->x; + f32 diffY = target->y - pos->y; + f32 diffZ = target->z - pos->z; - return sqrtf((diffX * diffX) + (diffY * diffY) + (diffZ * diffZ)); + return sqrtf((diffX * diffX) + (diffY * diffY) + (diffZ * diffZ)); } /** @@ -399,12 +399,11 @@ extern f32 search_position_distance(const xyz_t* const pos, * @param target Pointer to the second xyz_t structure representing the target position. * @return The Euclidean distance between the two xyz_t structures in the XZ plane. */ -extern f32 search_position_distanceXZ(const xyz_t* const pos, - const xyz_t* const target) { - f32 diffX = target->x - pos->x; - f32 diffZ = target->z - pos->z; +extern f32 search_position_distanceXZ(const xyz_t* const pos, const xyz_t* const target) { + f32 diffX = target->x - pos->x; + f32 diffZ = target->z - pos->z; - return sqrtf((diffX * diffX) + (diffZ * diffZ)); + return sqrtf((diffX * diffX) + (diffZ * diffZ)); } /** @@ -414,12 +413,11 @@ extern f32 search_position_distanceXZ(const xyz_t* const pos, * @param target Pointer to the second xyz_t structure representing the target position. * @return The angle in the Y axis (yaw) between the two xyz_t positions. */ -extern s16 search_position_angleY(const xyz_t* const pos, - const xyz_t* const target) { - f32 diffX = target->x - pos->x; - f32 diffZ = target->z - pos->z; +extern s16 search_position_angleY(const xyz_t* const pos, const xyz_t* const target) { + f32 diffX = target->x - pos->x; + f32 diffZ = target->z - pos->z; - return atans_table(diffZ, diffX); + return atans_table(diffZ, diffX); } /** @@ -429,12 +427,11 @@ extern s16 search_position_angleY(const xyz_t* const pos, * @param target Pointer to the second xyz_t structure representing the target position. * @return The angle in the X axis (pitch) between the two xyz_t structures. */ -extern s16 search_position_angleX(const xyz_t* const pos, - const xyz_t* const target) { - f32 diffXZ = search_position_distanceXZ(pos, target); - f32 diffY = pos->y - target->y; +extern s16 search_position_angleX(const xyz_t* const pos, const xyz_t* const target) { + f32 diffXZ = search_position_distanceXZ(pos, target); + f32 diffY = pos->y - target->y; - return atans_table(diffXZ, diffY); + return atans_table(diffXZ, diffY); } /** @@ -450,49 +447,48 @@ extern s16 search_position_angleX(const xyz_t* const pos, * @param minStep Minimum allowed step size. * @return The difference between the updated input variable value and the target value. */ -extern f32 add_calc(f32* pValue, f32 target, f32 fraction, f32 maxStep, - f32 minStep) { - f32 negMinStep; - f32 stepSize; +extern f32 add_calc(f32* pValue, f32 target, f32 fraction, f32 maxStep, f32 minStep) { + f32 negMinStep; + f32 stepSize; - if (*pValue != target) { - stepSize = fraction * (target - *pValue); - negMinStep = -minStep; + if (*pValue != target) { + stepSize = fraction * (target - *pValue); + negMinStep = -minStep; - if ((stepSize <= negMinStep) || (minStep <= stepSize)) { - if (stepSize > maxStep) { - stepSize = maxStep; - } else if (stepSize < -maxStep) { - stepSize = -maxStep; - } + if ((stepSize <= negMinStep) || (minStep <= stepSize)) { + if (stepSize > maxStep) { + stepSize = maxStep; + } else if (stepSize < -maxStep) { + stepSize = -maxStep; + } - *pValue += stepSize; + *pValue += stepSize; - if (stepSize > 0.0f) { - if (*pValue > target) { - *pValue = target; + if (stepSize > 0.0f) { + if (*pValue > target) { + *pValue = target; + } + } else { + if (*pValue < target) { + *pValue = target; + } + } + } else { + if (stepSize > 0.0f) { + *pValue += minStep; + if (*pValue > target) { + *pValue = target; + } + } else { + *pValue += negMinStep; + if (*pValue < target) { + *pValue = target; + } + } } - } else { - if (*pValue < target) { - *pValue = target; - } - } - } else { - if (stepSize > 0.0f) { - *pValue += minStep; - if (*pValue > target) { - *pValue = target; - } - } else { - *pValue += negMinStep; - if (*pValue < target) { - *pValue = target; - } - } } - } - return target - *pValue; + return target - *pValue; } /** @@ -507,19 +503,19 @@ extern f32 add_calc(f32* pValue, f32 target, f32 fraction, f32 maxStep, * @param maxStep Maximum allowed step size. */ extern void add_calc2(f32* pValue, f32 target, f32 fraction, f32 maxStep) { - f32 stepSize; + f32 stepSize; - if (*pValue != target) { - stepSize = fraction * (target - *pValue); + if (*pValue != target) { + stepSize = fraction * (target - *pValue); - if (stepSize > maxStep) { - stepSize = maxStep; - } else if (stepSize < -maxStep) { - stepSize = -maxStep; + if (stepSize > maxStep) { + stepSize = maxStep; + } else if (stepSize < -maxStep) { + stepSize = -maxStep; + } + + *pValue += stepSize; } - - *pValue += stepSize; - } } /** @@ -530,19 +526,20 @@ extern void add_calc2(f32* pValue, f32 target, f32 fraction, f32 maxStep) { * @param maxStep Maximum allowed step size. */ extern void add_calc0(f32* pValue, f32 fraction, f32 maxStep) { - f32 stepSize = *pValue * fraction; + f32 stepSize = *pValue * fraction; - if (stepSize > maxStep) { - stepSize = maxStep; - } else if (stepSize < -maxStep) { - stepSize = -maxStep; - } + if (stepSize > maxStep) { + stepSize = maxStep; + } else if (stepSize < -maxStep) { + stepSize = -maxStep; + } - *pValue -= stepSize; + *pValue -= stepSize; } /** - * @brief Add a calculated value to a short integer variable to approach a target angle with minimum and maximum step limits. + * @brief Add a calculated value to a short integer variable to approach a target angle with minimum and maximum step + * limits. * * This function adds a calculated step size to the input short integer variable to approach the target angle. * The step size is calculated based on the fraction and is limited by the minimum and maximum step values. @@ -554,51 +551,51 @@ extern void add_calc0(f32* pValue, f32 fraction, f32 maxStep) { * @param minStep Minimum allowed step size. * @return The difference between the updated input variable angle and the target angle. */ -extern s16 add_calc_short_angle2(s16* pValue, s16 target, f32 fraction, - s16 maxStep, s16 minStep) { - s16 stepSize = 0; - s16 diff = target - *pValue; +extern s16 add_calc_short_angle2(s16* pValue, s16 target, f32 fraction, s16 maxStep, s16 minStep) { + s16 stepSize = 0; + s16 diff = target - *pValue; - if (*pValue != target) { - stepSize = (s16)(diff * fraction); + if (*pValue != target) { + stepSize = (s16)(diff * fraction); - if ((stepSize > minStep) || (stepSize < -minStep)) { - if (stepSize > maxStep) { - stepSize = maxStep; - } else if (stepSize < -maxStep) { - stepSize = -maxStep; - } + if ((stepSize > minStep) || (stepSize < -minStep)) { + if (stepSize > maxStep) { + stepSize = maxStep; + } else if (stepSize < -maxStep) { + stepSize = -maxStep; + } - *pValue += stepSize; + *pValue += stepSize; - if (stepSize > 0) { - if ((s16)(target - *pValue) < 0) { - *pValue = target; + if (stepSize > 0) { + if ((s16)(target - *pValue) < 0) { + *pValue = target; + } + } else { + if ((s16)(target - *pValue) > 0) { + *pValue = target; + } + } + } else { + if (diff >= 0) { + *pValue += minStep; + if ((s16)(target - *pValue) < 0) { + *pValue = target; + } + } else { + *pValue -= minStep; + if ((s16)(target - *pValue) > 0) { + *pValue = target; + } + } } - } else { - if ((s16)(target - *pValue) > 0) { - *pValue = target; - } - } - } else { - if (diff >= 0) { - *pValue += minStep; - if ((s16)(target - *pValue) < 0) { - *pValue = target; - } - } else { - *pValue -= minStep; - if ((s16)(target - *pValue) > 0) { - *pValue = target; - } - } } - } - return target - *pValue; + return target - *pValue; } /** - * @brief Add a calculated value to a short integer angle variable to approach a target angle with minimum and maximum step limits. + * @brief Add a calculated value to a short integer angle variable to approach a target angle with minimum and maximum + * step limits. * * This function adds a calculated step size to the input short integer angle variable to approach the target angle. * The step size is calculated based on the fraction and is limited by the minimum and maximum step values. @@ -611,37 +608,36 @@ extern s16 add_calc_short_angle2(s16* pValue, s16 target, f32 fraction, * @param minStep Minimum allowed step size. * @return The difference between the updated input variable angle and the target angle. */ -extern s16 add_calc_short_angle3(s16* pValue, s16 target, f32 fraction, - s16 maxStep, s16 minStep) { - f32 stepSize; - s32 uTarget; - s32 newValue; - s32 uValue; +extern s16 add_calc_short_angle3(s16* pValue, s16 target, f32 fraction, s16 maxStep, s16 minStep) { + f32 stepSize; + s32 uTarget; + s32 newValue; + s32 uValue; - if (target != *pValue) { - uValue = (u16)*pValue; - uTarget = (u16)target; + if (target != *pValue) { + uValue = (u16)*pValue; + uTarget = (u16)target; - if (uValue > uTarget) { - uTarget += 65536; /* Add 360 short degrees */ + if (uValue > uTarget) { + uTarget += 65536; /* Add 360 short degrees */ + } + + stepSize = (uTarget - uValue) * fraction; + + if (stepSize > maxStep) { + stepSize = maxStep; + } else if (stepSize < minStep) { + stepSize = minStep; + } + + newValue = uValue + (s32)stepSize; + if (newValue > uTarget) { + newValue = uTarget; + } + *pValue = newValue; } - stepSize = (uTarget - uValue) * fraction; - - if (stepSize > maxStep) { - stepSize = maxStep; - } else if (stepSize < minStep) { - stepSize = minStep; - } - - newValue = uValue + (s32)stepSize; - if (newValue > uTarget) { - newValue = uTarget; - } - *pValue = newValue; - } - - return target - *pValue; + return target - *pValue; } /** @@ -651,10 +647,10 @@ extern s16 add_calc_short_angle3(s16* pValue, s16 target, f32 fraction, * @param src Pointer to the source rgba_t variable. */ extern void rgba_t_move(rgba_t* dest, const rgba_t* const src) { - dest->r = src->r; - dest->g = src->g; - dest->b = src->b; - dest->a = src->a; + dest->r = src->r; + dest->g = src->g; + dest->b = src->b; + dest->a = src->a; } /** @@ -662,7 +658,9 @@ extern void rgba_t_move(rgba_t* dest, const rgba_t* const src) { * * @return 0 */ -extern int none_proc1() { return 0; } +extern int none_proc1() { + return 0; +} /** * @brief No-op function meant for use in actor profiles. @@ -670,7 +668,8 @@ extern int none_proc1() { return 0; } * @param actor Pointer to an ACTOR structure. * @param game Pointer to a GAME structure. */ -extern void none_proc2(ACTOR* actor, GAME* game) {} +extern void none_proc2(ACTOR* actor, GAME* game) { +} /** * @brief Check if the game is in pause state. @@ -678,11 +677,13 @@ extern void none_proc2(ACTOR* actor, GAME* game) {} * @param play Pointer to a GAME_PLAY structure. * @return TRUE if the game is in pause state, FALSE otherwise. */ -extern int _Game_play_isPause(GAME_PLAY* play) { return (play->pause.enabled != 0); } +extern int _Game_play_isPause(GAME_PLAY* play) { + return (play->pause.enabled != 0); +} /** * @brief Calculate a percentage with respect to minimum and maximum values, and apply scaling. - * + * * - If `x` is closer to 0 than `min`, return 0 * - If `x` is further from 0 than `max`, return the sign of `x` * - Otherwise, scale `x` by `scale` and return it. @@ -695,26 +696,25 @@ extern int _Game_play_isPause(GAME_PLAY* play) { return (play->pause.enabled != * @param shift_by_min Flag to shift the percentage by the minimum value (1 to shift, 0 not to shift). * @return Scaled percentage of the input value within the specified range. */ -extern f32 check_percent_abs(f32 x, f32 min, f32 max, f32 scale, - int shift_by_min) { - if ((-min <= x) && (x <= min)) { - return 0.0f; - } - if (x >= max) { - return 1.0f; - } - if (x <= -max) { - return -1.0f; - } - if (shift_by_min) { - if (x > 0.0f) { - return (x - min) * scale; - } else { - return (x + min) * scale; +extern f32 check_percent_abs(f32 x, f32 min, f32 max, f32 scale, int shift_by_min) { + if ((-min <= x) && (x <= min)) { + return 0.0f; + } + if (x >= max) { + return 1.0f; + } + if (x <= -max) { + return -1.0f; + } + if (shift_by_min) { + if (x > 0.0f) { + return (x - min) * scale; + } else { + return (x + min) * scale; + } + } else { + return x * scale; } - } else { - return x * scale; - } } /** @@ -730,49 +730,48 @@ extern f32 check_percent_abs(f32 x, f32 min, f32 max, f32 scale, * @param brakeDist Braking distance. * @return Percentage of completion. */ -extern f32 get_percent_forAccelBrake(const f32 now, const f32 start, const f32 end, - const f32 accelerateDist, const f32 brakeDist) { - f32 percent; - f32 total_delta; - f32 now_delta; - f32 step; +extern f32 get_percent_forAccelBrake(f32 now, f32 start, f32 end, f32 accelerateDist, f32 brakeDist) { + f32 percent; + f32 total_delta; + f32 now_delta; + f32 step; - if (now >= end) { - return 1.0f; - } - if (now <= start) { - return 0.0f; - } - total_delta = end - start; - now_delta = now - start; - if (total_delta < (accelerateDist + brakeDist)) { - return 0.0f; - } - - step = 1.0f / (((2.0f * total_delta) - accelerateDist) - brakeDist); - if (accelerateDist != 0.0f) { - if (now_delta <= accelerateDist) { - percent = (now_delta * (step * now_delta)); - percent /= accelerateDist; - return percent; + if (now >= end) { + return 1.0f; + } + if (now <= start) { + return 0.0f; + } + total_delta = end - start; + now_delta = now - start; + if (total_delta < (accelerateDist + brakeDist)) { + return 0.0f; + } + + step = 1.0f / (((2.0f * total_delta) - accelerateDist) - brakeDist); + if (accelerateDist != 0.0f) { + if (now_delta <= accelerateDist) { + percent = (now_delta * (step * now_delta)); + percent /= accelerateDist; + return percent; + } + percent = step * accelerateDist; + } else { + percent = 0.0f; + } + if (now_delta <= (total_delta - brakeDist)) { + percent += (step * 2.0f) * (now_delta - accelerateDist); + return percent; + } + percent += (2.0f * step * ((total_delta - accelerateDist) - brakeDist)); + if (brakeDist != 0.0f) { + percent += step * brakeDist; + if (now_delta < total_delta) { + f32 diff = total_delta - now_delta; + percent -= step * diff * diff / brakeDist; + } } - percent = step * accelerateDist; - } else { - percent = 0.0f; - } - if (now_delta <= (total_delta - brakeDist)) { - percent += (step * 2.0f) * (now_delta - accelerateDist); return percent; - } - percent += (2.0f * step * ((total_delta - accelerateDist) - brakeDist)); - if (brakeDist != 0.0f) { - percent += step * brakeDist; - if (now_delta < total_delta) { - f32 diff = total_delta - now_delta; - percent -= step * diff * diff / brakeDist; - } - } - return percent; } /** @@ -782,18 +781,16 @@ extern f32 get_percent_forAccelBrake(const f32 now, const f32 start, const f32 e * @param wpos Pointer to the 3D world position (xyz_t). * @param screen_pos Pointer to the resulting 2D screen position (xyz_t). */ -extern void Game_play_Projection_Trans(GAME_PLAY* const play, xyz_t* world_pos, - xyz_t* screen_pos) { - f32 w; +extern void Game_play_Projection_Trans(GAME_PLAY* const play, xyz_t* world_pos, xyz_t* screen_pos) { + f32 w; - Matrix_mult(&play->projection_matrix, 0); - Matrix_Position(world_pos, screen_pos); - w = play->projection_matrix.ww + - ((play->projection_matrix.wx * world_pos->x) + - (play->projection_matrix.wy * world_pos->y) + - (play->projection_matrix.wz * world_pos->z)); - screen_pos->x = (SCREEN_WIDTH_F / 2.0f) + ((screen_pos->x / w) * (SCREEN_WIDTH_F / 2.0f)); - screen_pos->y = (SCREEN_HEIGHT_F / 2.0f) - ((screen_pos->y / w) * (SCREEN_HEIGHT_F / 2.0f)); + Matrix_mult(&play->projection_matrix, 0); + Matrix_Position(world_pos, screen_pos); + w = play->projection_matrix.ww + + ((play->projection_matrix.wx * world_pos->x) + (play->projection_matrix.wy * world_pos->y) + + (play->projection_matrix.wz * world_pos->z)); + screen_pos->x = (SCREEN_WIDTH_F / 2.0f) + ((screen_pos->x / w) * (SCREEN_WIDTH_F / 2.0f)); + screen_pos->y = (SCREEN_HEIGHT_F / 2.0f) - ((screen_pos->y / w) * (SCREEN_HEIGHT_F / 2.0f)); } /** @@ -805,20 +802,20 @@ extern void Game_play_Projection_Trans(GAME_PLAY* const play, xyz_t* world_pos, * @return Percentage of the input value within the specified range. */ extern f32 get_percent(const int max, const int min, const int x) { - f32 total_delta; - f32 percent; + f32 total_delta; + f32 percent; - percent = 1.0f; - if (x < min) { - percent = 0.0f; - } else if (x < max) { - total_delta = max - min; - if (total_delta != 0.0f) { - percent = (f32)(x - min) / total_delta; - if (percent > 1.0f) { - percent = 1.0f; - } + percent = 1.0f; + if (x < min) { + percent = 0.0f; + } else if (x < max) { + total_delta = max - min; + if (total_delta != 0.0f) { + percent = (f32)(x - min) / total_delta; + if (percent > 1.0f) { + percent = 1.0f; + } + } } - } - return percent; + return percent; } diff --git a/src/m_mail.c b/src/m_mail.c index 63b8c4e8..046d0ffc 100644 --- a/src/m_mail.c +++ b/src/m_mail.c @@ -16,365 +16,354 @@ static u8 footer[MAIL_FOOTER2_LEN]; static u8 header[MAIL_HEADER2_LEN]; extern int mMl_strlen(u8* str, int size, u8 end_char) { - u32 end_p = size + (u32)str; - int i; + u32 end_p = size + (u32)str; + int i; - end_p--; - for (size; size != 0; size--) { - - if (*(u8*)end_p != end_char) { - return size; - } - end_p--; - } + for (size; size != 0; size--) { - return 0; + if (*(u8*)end_p != end_char) { + return size; + } + + end_p--; + } + + return 0; } extern int mMl_strlen2(int* found, u8* str, int size, u8 end_char) { - int len = 0; + int len = 0; - if (found != NULL) { - *found = FALSE; - } - - for (size; size != 0; size--) { - len++; - if (*str == end_char) { - if (found != NULL) { - *found = TRUE; - } - break; + if (found != NULL) { + *found = FALSE; } - str++; - } + for (size; size != 0; size--) { + len++; + if (*str == end_char) { + if (found != NULL) { + *found = TRUE; + } + break; + } - return len; + str++; + } + + return len; } extern void mMl_clear_mail_header(Mail_hdr_c* header) { - mPr_ClearPersonalID(&header->recipient.personalID); - header->recipient.type = mMl_NAME_TYPE_CLEAR; + mPr_ClearPersonalID(&header->recipient.personalID); + header->recipient.type = mMl_NAME_TYPE_CLEAR; - mPr_ClearPersonalID(&header->sender.personalID); - header->sender.type = mMl_NAME_TYPE_CLEAR; + mPr_ClearPersonalID(&header->sender.personalID); + header->sender.type = mMl_NAME_TYPE_CLEAR; } extern void mMl_clear_mail(Mail_c* mail) { - bzero(mail, sizeof(Mail_c)); - mMl_clear_mail_header(&mail->header); - mem_clear(mail->content.header, MAIL_HEADER_LEN + MAIL_BODY_LEN + MAIL_FOOTER_LEN, CHAR_SPACE); - mail->content.font = -1; + bzero(mail, sizeof(Mail_c)); + mMl_clear_mail_header(&mail->header); + mem_clear(mail->content.header, MAIL_HEADER_LEN + MAIL_BODY_LEN + MAIL_FOOTER_LEN, CHAR_SPACE); + mail->content.font = -1; } extern void mMl_clear_mail_box(Mail_c* mail, int num) { - while (num != 0) { - num--; - mMl_clear_mail(mail); - mail++; - } + while (num != 0) { + num--; + mMl_clear_mail(mail); + mail++; + } } extern int mMl_check_not_used_mail(Mail_c* mail) { - int res = FALSE; - if (mail->content.font == 0xFF) { - res = TRUE; - } + int res = FALSE; + if (mail->content.font == 0xFF) { + res = TRUE; + } - return res; + return res; } extern void mMl_copy_header_name(Mail_c* dst, Mail_c* src) { - dst->header.recipient.type = src->header.recipient.type; - mPr_CopyPersonalID(&dst->header.recipient.personalID, &src->header.recipient.personalID); + dst->header.recipient.type = src->header.recipient.type; + mPr_CopyPersonalID(&dst->header.recipient.personalID, &src->header.recipient.personalID); } extern void mMl_set_to_plname(Mail_c* mail, PersonalID_c* pid) { - mPr_CopyPersonalID(&mail->header.recipient.personalID, pid); - mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; + mPr_CopyPersonalID(&mail->header.recipient.personalID, pid); + mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; } extern void mMl_set_playername(Mail_c* mail, PersonalID_c* pid) { - mPr_CopyPersonalID(&mail->header.sender.personalID, pid); - mail->header.sender.type = mMl_NAME_TYPE_PLAYER; + mPr_CopyPersonalID(&mail->header.sender.personalID, pid); + mail->header.sender.type = mMl_NAME_TYPE_PLAYER; } extern void mMl_init_mail(Mail_c* mail, PersonalID_c* pid) { - mMl_clear_mail(mail); - mMl_set_playername(mail, pid); - mail->content.font = mMl_FONT_SEND; - mail->content.mail_type = 0; - mail->content.paper_type = 0; + mMl_clear_mail(mail); + mMl_set_playername(mail, pid); + mail->content.font = mMl_FONT_SEND; + mail->content.mail_type = 0; + mail->content.paper_type = 0; } extern int mMl_chk_mail_free_space(Mail_c* mail, int num) { - int free_idx; + int free_idx; - for (free_idx = 0; free_idx < num; free_idx++) { - if (mMl_check_not_used_mail(mail) == TRUE) { - return free_idx; + for (free_idx = 0; free_idx < num; free_idx++) { + if (mMl_check_not_used_mail(mail) == TRUE) { + return free_idx; + } + + mail++; } - mail++; - } - - return -1; + return -1; } extern int mMl_count_use_mail_space(Mail_c* mail, int num) { - int used = 0; - int i; + int used = 0; + int i; - for (i = 0; i < num; i++) { - if (mMl_check_not_used_mail(mail) != TRUE) { - used++; + for (i = 0; i < num; i++) { + if (mMl_check_not_used_mail(mail) != TRUE) { + used++; + } + + mail++; } - mail++; - } - - return used; + return used; } extern void mMl_copy_mail(Mail_c* dst, Mail_c* src) { - mem_copy((u8*)dst, (u8*)src, sizeof(Mail_c)); + mem_copy((u8*)dst, (u8*)src, sizeof(Mail_c)); } extern void mMl_clear_mail_header_common(Mail_hs_c* header) { - header->header_back_start = -1; - header->unknown = 0; - mem_clear(header->header, MAIL_HEADER_LEN, CHAR_SPACE); - mem_clear(header->footer, MAIL_FOOTER_LEN, CHAR_SPACE); + header->header_back_start = -1; + header->unknown = 0; + mem_clear(header->header, MAIL_HEADER_LEN, CHAR_SPACE); + mem_clear(header->footer, MAIL_FOOTER_LEN, CHAR_SPACE); } extern void mMl_set_mail_name_npcinfo(Mail_nm_c* name, AnmPersonalID_c* anm_pid) { - u8 animal_name[PLAYER_NAME_LEN]; - - name->type = mMl_NAME_TYPE_NPC; - mNpc_GetNpcWorldNameAnm(animal_name, anm_pid); - mPr_CopyPlayerName(name->personalID.player_name, animal_name); - name->personalID.land_id = anm_pid->land_id; - mLd_CopyLandName(name->personalID.land_name, anm_pid->land_name); - name->personalID.player_id = (((anm_pid->npc_id & 0xFF) << 8) | anm_pid->name_id); + u8 animal_name[PLAYER_NAME_LEN]; + + name->type = mMl_NAME_TYPE_NPC; + mNpc_GetNpcWorldNameAnm(animal_name, anm_pid); + mPr_CopyPlayerName(name->personalID.player_name, animal_name); + name->personalID.land_id = anm_pid->land_id; + mLd_CopyLandName(name->personalID.land_name, anm_pid->land_name); + name->personalID.player_id = (((anm_pid->npc_id & 0xFF) << 8) | anm_pid->name_id); } extern int mMl_get_npcinfo_from_mail_name(AnmPersonalID_c* anm_pid, Mail_nm_c* name) { - int res = FALSE; + int res = FALSE; - if (name->type == mMl_NAME_TYPE_NPC) { - anm_pid->npc_id = ((name->personalID.player_id & 0xFF00) >> 8) | NPC_START; - anm_pid->land_id = name->personalID.land_id; - mLd_CopyLandName(anm_pid->land_name, name->personalID.land_name); - anm_pid->name_id = name->personalID.player_id; - anm_pid->looks = mNpc_GetLooks(anm_pid->npc_id); + if (name->type == mMl_NAME_TYPE_NPC) { + anm_pid->npc_id = ((name->personalID.player_id & 0xFF00) >> 8) | NPC_START; + anm_pid->land_id = name->personalID.land_id; + mLd_CopyLandName(anm_pid->land_name, name->personalID.land_name); + anm_pid->name_id = name->personalID.player_id; + anm_pid->looks = mNpc_GetLooks(anm_pid->npc_id); - res = TRUE; - } + res = TRUE; + } - return res; + return res; } extern int mMl_hunt_for_send_address(Mail_c* mail) { - int i; + int i; - if (mail->header.recipient.type != mMl_NAME_TYPE_PLAYER) { - return -1; - } - - for (i = 0; i < mHS_HOUSE_NUM; i++) { - if (mPr_CheckCmpPersonalID(&Save_Get(homes[i]).ownerID, &mail->header.recipient.personalID) == TRUE) { - return i; + if (mail->header.recipient.type != mMl_NAME_TYPE_PLAYER) { + return -1; } - } - return -1; + for (i = 0; i < mHS_HOUSE_NUM; i++) { + if (mPr_CheckCmpPersonalID(&Save_Get(homes[i]).ownerID, &mail->header.recipient.personalID) == TRUE) { + return i; + } + } + + return -1; } extern int mMl_check_send_mail(Mail_c* mail) { - return mail->content.font == mMl_FONT_SEND; + return mail->content.font == mMl_FONT_SEND; } extern int mMl_check_set_present_myself(Mail_c* mail) { - u8 font = mail->content.font; + u8 font = mail->content.font; - if (font == mMl_FONT_SEND || font == mMl_FONT_3 || font == mMl_FONT_4) { - return TRUE; - } + if (font == mMl_FONT_SEND || font == mMl_FONT_3 || font == mMl_FONT_4) { + return TRUE; + } - return FALSE; + return FALSE; } static void mMl_load_mail_data(Mail_c* mail, int mail_no) { - int header_back_start; + int header_back_start; - mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body, mail_no); - mail->content.header_back_start = header_back_start; + mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body, + mail_no); + mail->content.header_back_start = header_back_start; } /* TODO: fix bss ordering */ static void mMl_load_mail_data2(Mail_c* mail, int mail_no) { - //static u8 header[MAIL_HEADER2_LEN]; - //static u8 footer[MAIL_FOOTER2_LEN]; - int header_back_start; + // static u8 header[MAIL_HEADER2_LEN]; + // static u8 footer[MAIL_FOOTER2_LEN]; + int header_back_start; - mHandbill_Load_HandbillFromRom2(header, MAIL_HEADER2_LEN, &header_back_start, footer, MAIL_FOOTER2_LEN, mail->content.body, mail_no); + mHandbill_Load_HandbillFromRom2(header, MAIL_HEADER2_LEN, &header_back_start, footer, MAIL_FOOTER2_LEN, + mail->content.body, mail_no); - bcopy(header, mail->content.header, MAIL_HEADER_LEN); - bcopy(footer, mail->content.footer, MAIL_FOOTER_LEN); - mail->content.header_back_start = header_back_start; + bcopy(header, mail->content.header, MAIL_HEADER_LEN); + bcopy(footer, mail->content.footer, MAIL_FOOTER_LEN); + mail->content.header_back_start = header_back_start; } -static void mMl_get_mail_to_player_com(Mail_c* mail, PersonalID_c* recipient_pid, mActor_name_t present, mActor_name_t paper, u8* sender_name, int mail_no, u32 proc_type, u8 mail_type) { - static void (*get_proc[2])(Mail_c*, int) = { &mMl_load_mail_data, &mMl_load_mail_data2 }; - proc_type %= 2; - - mMl_clear_mail(mail); - (*get_proc[proc_type])(mail, mail_no); - mail->content.font = mMl_FONT_0; - mail->content.mail_type = mail_type; - - mPr_CopyPersonalID(&mail->header.recipient.personalID, recipient_pid); - mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; +static void mMl_get_mail_to_player_com(Mail_c* mail, PersonalID_c* recipient_pid, mActor_name_t present, + mActor_name_t paper, u8* sender_name, int mail_no, u32 proc_type, u8 mail_type) { + static void (*get_proc[2])(Mail_c*, int) = { &mMl_load_mail_data, &mMl_load_mail_data2 }; + proc_type %= 2; - mPr_ClearPersonalID(&mail->header.sender.personalID); - mPr_CopyPlayerName(mail->header.sender.personalID.player_name, sender_name); - mail->header.sender.type = mMl_NAME_TYPE_MUSEUM; - - mail->present = present; - mail->content.paper_type = (paper - ITM_PAPER_START) % PAPER_UNIQUE_NUM; + mMl_clear_mail(mail); + (*get_proc[proc_type])(mail, mail_no); + mail->content.font = mMl_FONT_0; + mail->content.mail_type = mail_type; + + mPr_CopyPersonalID(&mail->header.recipient.personalID, recipient_pid); + mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; + + mPr_ClearPersonalID(&mail->header.sender.personalID); + mPr_CopyPlayerName(mail->header.sender.personalID.player_name, sender_name); + mail->header.sender.type = mMl_NAME_TYPE_MUSEUM; + + mail->present = present; + mail->content.paper_type = (paper - ITM_PAPER_START) % PAPER_UNIQUE_NUM; } -static int mMl_send_mail_box_com(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { - mHm_hs_c* house; - int res = FALSE; +static int mMl_send_mail_box_com(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, + mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { + mHm_hs_c* house; + int res = FALSE; - house = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); + house = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); - if (mPr_CheckCmpPersonalID(recipient_pid, &house->ownerID) == TRUE) { - int free_idx = mMl_chk_mail_free_space(house->mailbox, HOME_MAILBOX_SIZE); - if (free_idx != -1) { - mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type); - mMl_copy_mail(house->mailbox + free_idx, mail); - res = TRUE; + if (mPr_CheckCmpPersonalID(recipient_pid, &house->ownerID) == TRUE) { + int free_idx = mMl_chk_mail_free_space(house->mailbox, HOME_MAILBOX_SIZE); + if (free_idx != -1) { + mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type); + mMl_copy_mail(house->mailbox + free_idx, mail); + res = TRUE; + } } - } - return res; + return res; } -extern int mMl_send_mail_box(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type) { - return mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, 0); +extern int mMl_send_mail_box(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, + mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type) { + return mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, 0); } -static int mMl_send_mail_postoffice_com(Mail_c* mail, PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { - int res = FALSE; +static int mMl_send_mail_postoffice_com(Mail_c* mail, PersonalID_c* recipient_pid, int player_no, mActor_name_t present, + mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, + u8 mail_type) { + int res = FALSE; - if (mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { - mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type); - res = mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); - } + if (mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { + mMl_get_mail_to_player_com(mail, recipient_pid, present, paper, sender_name, mail_no, proc_type, mail_type); + res = mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); + } - return res; + return res; } -extern int mMl_send_mail_postoffice(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { - return mMl_send_mail_postoffice_com(&l_ml_mail, recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, mail_type); +extern int mMl_send_mail_postoffice(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, + mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { + return mMl_send_mail_postoffice_com(&l_ml_mail, recipient_pid, player_no, present, paper, mail_no, sender_name, + proc_type, mail_type); } -static int mMl_send_mail_com(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { - Mail_c* mail = &l_ml_mail; - int res = mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, mail_type); - if (res != TRUE) { - res = mMl_send_mail_postoffice_com(mail, recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, mail_type); - } +static int mMl_send_mail_com(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, + int mail_no, u8* sender_name, u32 proc_type, u8 mail_type) { + Mail_c* mail = &l_ml_mail; + int res = mMl_send_mail_box_com(recipient_pid, player_no, mail, present, paper, mail_no, sender_name, proc_type, + mail_type); + if (res != TRUE) { + res = mMl_send_mail_postoffice_com(mail, recipient_pid, player_no, present, paper, mail_no, sender_name, + proc_type, mail_type); + } - return res; + return res; } -extern int mMl_send_mail(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type) { - return mMl_send_mail_com(recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, 0); +extern int mMl_send_mail(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, + int mail_no, u8* sender_name, u32 proc_type) { + return mMl_send_mail_com(recipient_pid, player_no, present, paper, mail_no, sender_name, proc_type, 0); } typedef struct post_office_gift_info_s { - int mail_no; - mActor_name_t present; - mActor_name_t paper; - int player_received_flag; - u32 required_balance; + int mail_no; + mActor_name_t present; + mActor_name_t paper; + int player_received_flag; + u32 required_balance; } mMl_PostOffice_Info_c; static mMl_PostOffice_Info_c l_mml_postoffice_info[mMl_POSTOFFICE_GIFT_NUM] = { - { - 0x0246, - FTR_TISSUE, - ITM_PAPER00, - mPr_FLAG_POSTOFFICE_GIFT0, - 1000000 - }, - { - 0x0247, - FTR_PIGGY_BANK, - ITM_PAPER00, - mPr_FLAG_POSTOFFICE_GIFT1, - 10000000 - }, - { - 0x0248, - FTR_MAILBOX, - ITM_PAPER00, - mPr_FLAG_POSTOFFICE_GIFT2, - 100000000 - }, - { - 0x0249, - FTR_POST_MODEL, - ITM_PAPER00, - mPr_FLAG_POSTOFFICE_GIFT3, - 999999999 - } + { 0x0246, FTR_TISSUE, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT0, 1000000 }, + { 0x0247, FTR_PIGGY_BANK, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT1, 10000000 }, + { 0x0248, FTR_MAILBOX, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT2, 100000000 }, + { 0x0249, FTR_POST_MODEL, ITM_PAPER00, mPr_FLAG_POSTOFFICE_GIFT3, 999999999 } }; static void mMl_send_postoffice_mail() { - //static u8 free_str[16]; // TODO: fix bss ordering - static u8 debug_name[PLAYER_NAME_LEN] = { 0x91, 0x92, 0x93, 0x94, 0x95, 0x91, 0x00, 0x00 }; + // static u8 free_str[16]; // TODO: fix bss ordering + static u8 debug_name[PLAYER_NAME_LEN] = { 0x91, 0x92, 0x93, 0x94, 0x95, 0x91, 0x00, 0x00 }; - Private_c* priv = Save_Get(private); - mMl_PostOffice_Info_c* po_info; - int town_name_len; - int i; + Private_c* priv = Save_Get(private_data); + mMl_PostOffice_Info_c* po_info; + int town_name_len; + int i; - town_name_len = mLd_GetLandNameStringAddMura(free_str); - mHandbill_Set_free_str(0, free_str, town_name_len); + town_name_len = mLd_GetLandNameStringAddMura(free_str); + mHandbill_Set_free_str(0, free_str, town_name_len); - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { - int j; + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { + int j; - mHandbill_Set_free_str(1, priv->player_ID.player_name, PLAYER_NAME_LEN); - po_info = l_mml_postoffice_info; - for (j = 0; j < mMl_POSTOFFICE_GIFT_NUM; j++) { - if ((priv->bank_account >= po_info->required_balance) && - (priv->state_flags & po_info->player_received_flag) == FALSE - ) { - int res = mMl_send_mail_com(&priv->player_ID, i, po_info->present, po_info->paper, po_info->mail_no, debug_name, 0, 10); + mHandbill_Set_free_str(1, priv->player_ID.player_name, PLAYER_NAME_LEN); + po_info = l_mml_postoffice_info; + for (j = 0; j < mMl_POSTOFFICE_GIFT_NUM; j++) { + if ((priv->bank_account >= po_info->required_balance) && + (priv->state_flags & po_info->player_received_flag) == FALSE) { + int res = mMl_send_mail_com(&priv->player_ID, i, po_info->present, po_info->paper, po_info->mail_no, + debug_name, 0, 10); - if (res == TRUE) { - priv->state_flags |= po_info->player_received_flag; - } + if (res == TRUE) { + priv->state_flags |= po_info->player_received_flag; + } - break; + break; + } + + po_info++; + } } - po_info++; - } + priv++; } - - priv++; - } } extern void mMl_start_send_mail() { - mMl_send_postoffice_mail(); + mMl_send_postoffice_mail(); } diff --git a/src/m_map_ovl.c b/src/m_map_ovl.c index bf107cc2..39bca254 100644 --- a/src/m_map_ovl.c +++ b/src/m_map_ovl.c @@ -89,134 +89,48 @@ extern u8 kan_tizu_c7r1b_TA_tex_txt[]; extern u8 kan_tizu_mwf_TA_tex_txt[]; static u8* l_map_texture[mFM_BLOCK_TYPE_NUM] = { - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_tst1_TA_tex_txt, - kan_tizu_t_TA_tex_txt, - kan_tizu_tr1_TA_tex_txt, - kan_tizu_fmh_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, - kan_tizu_c2_TA_tex_txt, - kan_tizu_c3_TA_tex_txt, - kan_tizu_c4_TA_tex_txt, - kan_tizu_c5_TA_tex_txt, - kan_tizu_c6_TA_tex_txt, - kan_tizu_c7_TA_tex_txt, - kan_tizu_c1r1_TA_tex_txt, - kan_tizu_c2r1_TA_tex_txt, - kan_tizu_c3r1_TA_tex_txt, - kan_tizu_c4r1_TA_tex_txt, - kan_tizu_c5r1_TA_tex_txt, - kan_tizu_c6r1_TA_tex_txt, - kan_tizu_c7r1_TA_tex_txt, - kan_tizu_c1r2_TA_tex_txt, - kan_tizu_c2r2_TA_tex_txt, - kan_tizu_c3r2_TA_tex_txt, - kan_tizu_c4r2_TA_tex_txt, - kan_tizu_c5r2_TA_tex_txt, - kan_tizu_c1r2_TA_tex_txt, - kan_tizu_c4r2_TA_tex_txt, - kan_tizu_c5r2_TA_tex_txt, - kan_tizu_c6r3_TA_tex_txt, - kan_tizu_c7r3_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_r1_TA_tex_txt, - kan_tizu_r2_TA_tex_txt, - kan_tizu_r2_TA_tex_txt, - kan_tizu_r4_TA_tex_txt, - kan_tizu_r5_TA_tex_txt, - kan_tizu_r6_TA_tex_txt, - kan_tizu_r7_TA_tex_txt, - kan_tizu_r1b_TA_tex_txt, - kan_tizu_r2b_TA_tex_txt, - kan_tizu_r2b_TA_tex_txt, - kan_tizu_r4b_TA_tex_txt, - kan_tizu_r5b_TA_tex_txt, - kan_tizu_r6b_TA_tex_txt, - kan_tizu_r7b_TA_tex_txt, - kan_tizu_c1s_TA_tex_txt, - kan_tizu_c2s_TA_tex_txt, - kan_tizu_c3s_TA_tex_txt, - kan_tizu_c4s_TA_tex_txt, - kan_tizu_c5s_TA_tex_txt, - kan_tizu_c6s_TA_tex_txt, - kan_tizu_c7s_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_m_TA_tex_txt, - kan_tizu_mr1_TA_tex_txt, - kan_tizu_fsh_TA_tex_txt, - kan_tizu_fpk_TA_tex_txt, - kan_tizu_fpo_TA_tex_txt, - kan_tizu_fko_TA_tex_txt, - kan_tizu_pr1_TA_tex_txt, - kan_tizu_pr2_TA_tex_txt, - kan_tizu_pr2_TA_tex_txt, - kan_tizu_pr4_TA_tex_txt, - kan_tizu_pr5_TA_tex_txt, - kan_tizu_pr6_TA_tex_txt, - kan_tizu_pr7_TA_tex_txt, - kan_tizu_f_TA_tex_txt, - kan_tizu_r1_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, - kan_tizu_c1_TA_tex_txt, - kan_tizu_mr1b_TA_tex_txt, - kan_tizu_mr1_TA_tex_txt, - kan_tizu_fmu_TA_tex_txt, - kan_tizu_fta_TA_tex_txt, - kan_tizu_tr1b_TA_tex_txt, - kan_tizu_c1r2b_TA_tex_txt, - kan_tizu_c3r1b_TA_tex_txt, - kan_tizu_c4r1b_TA_tex_txt, - kan_tizu_c4r2b_TA_tex_txt, - kan_tizu_c5r2b_TA_tex_txt, - kan_tizu_c6r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_c7r1b_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, - kan_tizu_mwf_TA_tex_txt, - kan_tizu_c1r2b_TA_tex_txt, - kan_tizu_c4r2b_TA_tex_txt, - kan_tizu_c5r2b_TA_tex_txt + kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, + kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, + kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_tst1_TA_tex_txt, + kan_tizu_t_TA_tex_txt, kan_tizu_tr1_TA_tex_txt, kan_tizu_fmh_TA_tex_txt, kan_tizu_c1_TA_tex_txt, + kan_tizu_c2_TA_tex_txt, kan_tizu_c3_TA_tex_txt, kan_tizu_c4_TA_tex_txt, kan_tizu_c5_TA_tex_txt, + kan_tizu_c6_TA_tex_txt, kan_tizu_c7_TA_tex_txt, kan_tizu_c1r1_TA_tex_txt, kan_tizu_c2r1_TA_tex_txt, + kan_tizu_c3r1_TA_tex_txt, kan_tizu_c4r1_TA_tex_txt, kan_tizu_c5r1_TA_tex_txt, kan_tizu_c6r1_TA_tex_txt, + kan_tizu_c7r1_TA_tex_txt, kan_tizu_c1r2_TA_tex_txt, kan_tizu_c2r2_TA_tex_txt, kan_tizu_c3r2_TA_tex_txt, + kan_tizu_c4r2_TA_tex_txt, kan_tizu_c5r2_TA_tex_txt, kan_tizu_c1r2_TA_tex_txt, kan_tizu_c4r2_TA_tex_txt, + kan_tizu_c5r2_TA_tex_txt, kan_tizu_c6r3_TA_tex_txt, kan_tizu_c7r3_TA_tex_txt, kan_tizu_f_TA_tex_txt, + kan_tizu_r1_TA_tex_txt, kan_tizu_r2_TA_tex_txt, kan_tizu_r2_TA_tex_txt, kan_tizu_r4_TA_tex_txt, + kan_tizu_r5_TA_tex_txt, kan_tizu_r6_TA_tex_txt, kan_tizu_r7_TA_tex_txt, kan_tizu_r1b_TA_tex_txt, + kan_tizu_r2b_TA_tex_txt, kan_tizu_r2b_TA_tex_txt, kan_tizu_r4b_TA_tex_txt, kan_tizu_r5b_TA_tex_txt, + kan_tizu_r6b_TA_tex_txt, kan_tizu_r7b_TA_tex_txt, kan_tizu_c1s_TA_tex_txt, kan_tizu_c2s_TA_tex_txt, + kan_tizu_c3s_TA_tex_txt, kan_tizu_c4s_TA_tex_txt, kan_tizu_c5s_TA_tex_txt, kan_tizu_c6s_TA_tex_txt, + kan_tizu_c7s_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_f_TA_tex_txt, kan_tizu_m_TA_tex_txt, + kan_tizu_mr1_TA_tex_txt, kan_tizu_fsh_TA_tex_txt, kan_tizu_fpk_TA_tex_txt, kan_tizu_fpo_TA_tex_txt, + kan_tizu_fko_TA_tex_txt, kan_tizu_pr1_TA_tex_txt, kan_tizu_pr2_TA_tex_txt, kan_tizu_pr2_TA_tex_txt, + kan_tizu_pr4_TA_tex_txt, kan_tizu_pr5_TA_tex_txt, kan_tizu_pr6_TA_tex_txt, kan_tizu_pr7_TA_tex_txt, + kan_tizu_f_TA_tex_txt, kan_tizu_r1_TA_tex_txt, kan_tizu_c1_TA_tex_txt, kan_tizu_c1_TA_tex_txt, + kan_tizu_c1_TA_tex_txt, kan_tizu_c1_TA_tex_txt, kan_tizu_mr1b_TA_tex_txt, kan_tizu_mr1_TA_tex_txt, + kan_tizu_fmu_TA_tex_txt, kan_tizu_fta_TA_tex_txt, kan_tizu_tr1b_TA_tex_txt, kan_tizu_c1r2b_TA_tex_txt, + kan_tizu_c3r1b_TA_tex_txt, kan_tizu_c4r1b_TA_tex_txt, kan_tizu_c4r2b_TA_tex_txt, kan_tizu_c5r2b_TA_tex_txt, + kan_tizu_c6r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, + kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, kan_tizu_c7r1b_TA_tex_txt, + kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, kan_tizu_mwf_TA_tex_txt, + kan_tizu_mwf_TA_tex_txt, kan_tizu_c1r2b_TA_tex_txt, kan_tizu_c4r2b_TA_tex_txt, kan_tizu_c5r2b_TA_tex_txt, }; static u8 l_map_pal[mFM_BLOCK_TYPE_NUM] = { - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 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, - 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 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, 1, 1, 1, 1, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, }; static u8 pluss_bridge[mFM_BLOCK_TYPE_NUM] = { - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x56, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x58, 0x59, 0xff, 0x5c, 0x5d, 0x57, 0xff, 0xff, - 0x5a, 0x5b, 0x69, 0x6a, 0x6b, 0xff, 0xff, 0xff, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x56, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x58, 0x59, 0xff, 0x5c, 0x5d, 0x57, 0xff, 0xff, 0x5a, 0x5b, 0x69, 0x6a, + 0x6b, 0xff, 0xff, 0xff, 0x2f, 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x52, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, }; extern Gfx kan_win_model[]; @@ -243,18 +157,16 @@ extern mMP_HousePos_c mMP_house_pos_list[]; extern Gfx kan_win_mode[]; static u16 kan_tizu1_pal[16] ATTRIBUTE_ALIGN(32) = { - 0x0000, 0xc3b0, 0x9e87, 0xd294, 0xca52, 0xbdef, 0xb5ad, 0xb9ce, - 0xa2e8, 0xb18c, 0xa705, 0xdaff, 0xab4a, 0xffff, 0xb635, 0xbe9f + 0x0000, 0xc3b0, 0x9e87, 0xd294, 0xca52, 0xbdef, 0xb5ad, 0xb9ce, + 0xa2e8, 0xb18c, 0xa705, 0xdaff, 0xab4a, 0xffff, 0xb635, 0xbe9f, }; static u16 kan_tizu2_pal[16] ATTRIBUTE_ALIGN(32) = { - 0x0000, 0xc3b0, 0x9e87, 0xc94a, 0xe70d, 0xe1ce, 0xb5ad, 0xb195, - 0xf390, 0xb18c, 0xa705, 0xffff, 0xd54a, 0xdaff, 0xb635, 0xbe9f + 0x0000, 0xc3b0, 0x9e87, 0xc94a, 0xe70d, 0xe1ce, 0xb5ad, 0xb195, + 0xf390, 0xb18c, 0xa705, 0xffff, 0xd54a, 0xdaff, 0xb635, 0xbe9f, }; -static u16* l_kan_tizu_pal[2] = { - kan_tizu1_pal, kan_tizu2_pal -}; +static u16* l_kan_tizu_pal[2] = { kan_tizu1_pal, kan_tizu2_pal }; extern u8 kan_win_suuji1_tex_rgb_ia8[]; extern u8 kan_win_suuji2_tex_rgb_ia8[]; @@ -263,11 +175,8 @@ extern u8 kan_win_suuji4_tex_rgb_ia8[]; extern u8 kan_win_suuji5_tex_rgb_ia8[]; static u8* kan_win_evw_anime_1_tex_table[FG_BLOCK_X_NUM] = { - kan_win_suuji1_tex_rgb_ia8, - kan_win_suuji2_tex_rgb_ia8, - kan_win_suuji3_tex_rgb_ia8, - kan_win_suuji4_tex_rgb_ia8, - kan_win_suuji5_tex_rgb_ia8, + kan_win_suuji1_tex_rgb_ia8, kan_win_suuji2_tex_rgb_ia8, kan_win_suuji3_tex_rgb_ia8, + kan_win_suuji4_tex_rgb_ia8, kan_win_suuji5_tex_rgb_ia8, }; extern u8 kan_win_a_tex_rgb_ia8[]; @@ -278,12 +187,8 @@ extern u8 kan_win_e_tex_rgb_ia8[]; extern u8 kan_win_f_tex_rgb_ia8[]; static u8* kan_win_evw_anime_2_tex_table[FG_BLOCK_Z_NUM] = { - kan_win_a_tex_rgb_ia8, - kan_win_b_tex_rgb_ia8, - kan_win_c_tex_rgb_ia8, - kan_win_d_tex_rgb_ia8, - kan_win_e_tex_rgb_ia8, - kan_win_f_tex_rgb_ia8, + kan_win_a_tex_rgb_ia8, kan_win_b_tex_rgb_ia8, kan_win_c_tex_rgb_ia8, + kan_win_d_tex_rgb_ia8, kan_win_e_tex_rgb_ia8, kan_win_f_tex_rgb_ia8, }; extern Gfx kan_win_npcT_1_model[]; @@ -294,17 +199,9 @@ extern Gfx kan_win_npc2T_1_model[]; extern Gfx kan_win_npc2T_2_model[]; extern Gfx kan_win_npc2T_3_model[]; -static Gfx* kan_win_npcT_table[] = { - kan_win_npcT_1_model, - kan_win_npcT_2_model, - kan_win_npcT_3_model -}; +static Gfx* kan_win_npcT_table[] = { kan_win_npcT_1_model, kan_win_npcT_2_model, kan_win_npcT_3_model }; -static Gfx* kan_win_npc2T_table[] = { - kan_win_npc2T_1_model, - kan_win_npc2T_2_model, - kan_win_npc2T_3_model -}; +static Gfx* kan_win_npc2T_table[] = { kan_win_npc2T_1_model, kan_win_npc2T_2_model, kan_win_npc2T_3_model }; extern Gfx kan_win_genzaiT_model[]; @@ -324,1053 +221,860 @@ extern Gfx kan_win_mu_model[]; extern Gfx kan_win_ta_model[]; extern Gfx kan_win_funeT_model[]; -static mMP_LabelWord_c mMP_label_word_npc = { - -92.0f, -19.0f, - NULL, 0 -}; +static mMP_LabelWord_c mMP_label_word_npc = { -92.0f, -19.0f, NULL, 0 }; -static mMP_Label_c mMP_label_npc = { - -98.0f, -24.0f, - kan_win_npcT_1_model, - { &mMP_label_word_npc, NULL } -}; +static mMP_Label_c mMP_label_npc = { -98.0f, -24.0f, kan_win_npcT_1_model, { &mMP_label_word_npc, NULL } }; -static mMP_LabelWord_c mMP_label_word_player = { - -92.0f, -21.5f, - NULL, 0 -}; +static mMP_LabelWord_c mMP_label_word_player = { -92.0f, -21.5f, NULL, 0 }; -static mMP_Label_c mMP_label_player = { - -98.0f, -26.5f, - kan_win_playerT_model, - { &mMP_label_word_player, NULL } -}; +static mMP_Label_c mMP_label_player = { -98.0f, -26.5f, kan_win_playerT_model, { &mMP_label_word_player, NULL } }; static u8 mMP_label_str_shop[4] = { CHAR_S, CHAR_h, CHAR_o, CHAR_p }; -static mMP_LabelWord_c mMP_label_word_shop = { - -83.0f, -25.0f, - mMP_label_str_shop, 4 -}; +static mMP_LabelWord_c mMP_label_word_shop = { -83.0f, -25.0f, mMP_label_str_shop, 4 }; -static mMP_Label_c mMP_label_shop = { - -93.0f, -30.0f, - kan_win_omiseT_model, - { &mMP_label_word_shop, NULL } -}; +static mMP_Label_c mMP_label_shop = { -93.0f, -30.0f, kan_win_omiseT_model, { &mMP_label_word_shop, NULL } }; static u8 mMP_label_str_police[6] = { CHAR_P, CHAR_o, CHAR_l, CHAR_i, CHAR_c, CHAR_e }; -static mMP_LabelWord_c mMP_label_word_police = { - -83.0f, -19.0f, - mMP_label_str_police, 6 -}; +static mMP_LabelWord_c mMP_label_word_police = { -83.0f, -19.0f, mMP_label_str_police, 6 }; static u8 mMP_label_str_police2[7] = { CHAR_S, CHAR_t, CHAR_a, CHAR_t, CHAR_i, CHAR_o, CHAR_n }; -static mMP_LabelWord_c mMP_label_word_police2 = { - -83.0f, -31.0f, - mMP_label_str_police2, 7 -}; +static mMP_LabelWord_c mMP_label_word_police2 = { -83.0f, -31.0f, mMP_label_str_police2, 7 }; static mMP_Label_c mMP_label_police = { - -93.0f, -30.0f, - kan_win_koubanT_model, - { &mMP_label_word_police, &mMP_label_word_police2 } + -93.0f, -30.0f, kan_win_koubanT_model, { &mMP_label_word_police, &mMP_label_word_police2 } }; static u8 mMP_label_str_post[4] = { CHAR_P, CHAR_o, CHAR_s, CHAR_t }; -static mMP_LabelWord_c mMP_label_word_post = { - -83.0f, -19.0f, - mMP_label_str_post, 4 -}; +static mMP_LabelWord_c mMP_label_word_post = { -83.0f, -19.0f, mMP_label_str_post, 4 }; static u8 mMP_label_str_post2[6] = { CHAR_O, CHAR_f, CHAR_f, CHAR_i, CHAR_c, CHAR_e }; -static mMP_LabelWord_c mMP_label_word_post2 = { - -83.0f, -31.0f, - mMP_label_str_post2, 6 -}; +static mMP_LabelWord_c mMP_label_word_post2 = { -83.0f, -31.0f, mMP_label_str_post2, 6 }; static mMP_Label_c mMP_label_post = { - -93.0f, -30.0f, - kan_win_yuuT_model, - { &mMP_label_word_post, &mMP_label_word_post2 } + -93.0f, -30.0f, kan_win_yuuT_model, { &mMP_label_word_post, &mMP_label_word_post2 } }; static u8 mMP_label_str_shrine[7] = { CHAR_W, CHAR_i, CHAR_s, CHAR_h, CHAR_i, CHAR_n, CHAR_g }; -static mMP_LabelWord_c mMP_label_word_shrine = { - -83.0f, -19.0f, - mMP_label_str_shrine, 7 -}; +static mMP_LabelWord_c mMP_label_word_shrine = { -83.0f, -19.0f, mMP_label_str_shrine, 7 }; static u8 mMP_label_str_shrine2[4] = { CHAR_W, CHAR_e, CHAR_l, CHAR_l }; -static mMP_LabelWord_c mMP_label_word_shrine2 = { - -83.0f, -31.0f, - mMP_label_str_shrine2, 4 -}; +static mMP_LabelWord_c mMP_label_word_shrine2 = { -83.0f, -31.0f, mMP_label_str_shrine2, 4 }; static mMP_Label_c mMP_label_shrine = { - -93.0f, -30.0f, - kan_win_yashiroT_model, - { &mMP_label_word_shrine, & mMP_label_word_shrine2 } + -93.0f, -30.0f, kan_win_yashiroT_model, { &mMP_label_word_shrine, &mMP_label_word_shrine2 } }; static u8 mMP_label_str_station[5] = { CHAR_T, CHAR_r, CHAR_a, CHAR_i, CHAR_n }; -static mMP_LabelWord_c mMP_label_word_station = { - -83.0f, -19.0f, - mMP_label_str_station, 5 -}; +static mMP_LabelWord_c mMP_label_word_station = { -83.0f, -19.0f, mMP_label_str_station, 5 }; static u8 mMP_label_str_station2[7] = { CHAR_S, CHAR_t, CHAR_a, CHAR_t, CHAR_i, CHAR_o, CHAR_n }; -static mMP_LabelWord_c mMP_label_word_station2 = { - -83.0f, -31.0f, - mMP_label_str_station2, 7 -}; +static mMP_LabelWord_c mMP_label_word_station2 = { -83.0f, -31.0f, mMP_label_str_station2, 7 }; static mMP_Label_c mMP_label_station = { - -93.0f, -31.0f, - kan_win_ekiT_model, - { &mMP_label_word_station, &mMP_label_word_station2 } + -93.0f, -31.0f, kan_win_ekiT_model, { &mMP_label_word_station, &mMP_label_word_station2 } }; static u8 mMP_label_str_junk[4] = { CHAR_D, CHAR_u, CHAR_m, CHAR_p }; -static mMP_LabelWord_c mMP_label_word_junk = { - -83.0f, -25.0f, - mMP_label_str_junk, 4 -}; +static mMP_LabelWord_c mMP_label_word_junk = { -83.0f, -25.0f, mMP_label_str_junk, 4 }; -static mMP_Label_c mMP_label_junk = { - -93.0f, -30.0f, - kan_win_gomiT_model, - { &mMP_label_word_junk, NULL } -}; +static mMP_Label_c mMP_label_junk = { -93.0f, -30.0f, kan_win_gomiT_model, { &mMP_label_word_junk, NULL } }; static u8 mMP_label_str_museum[6] = { CHAR_M, CHAR_u, CHAR_s, CHAR_e, CHAR_u, CHAR_m }; -static mMP_LabelWord_c mMP_label_word_museum = { - -83.0f, -25.0f, - mMP_label_str_museum, 6 -}; +static mMP_LabelWord_c mMP_label_word_museum = { -83.0f, -25.0f, mMP_label_str_museum, 6 }; -static mMP_Label_c mMP_label_museum = { - -93.0f, -30.0f, - kan_win_mu_model, - { &mMP_label_word_museum, NULL } -}; +static mMP_Label_c mMP_label_museum = { -93.0f, -30.0f, kan_win_mu_model, { &mMP_label_word_museum, NULL } }; static u8 mMP_label_str_needle[6] = { CHAR_T, CHAR_a, CHAR_i, CHAR_l, CHAR_o, CHAR_r }; -static mMP_LabelWord_c mMP_label_word_needle = { - -83.0f, -25.0f, - mMP_label_str_needle, 6 -}; +static mMP_LabelWord_c mMP_label_word_needle = { -83.0f, -25.0f, mMP_label_str_needle, 6 }; -static mMP_Label_c mMP_label_needle = { - -93.0f, -30.0f, - kan_win_ta_model, - { &mMP_label_word_needle, NULL } -}; +static mMP_Label_c mMP_label_needle = { -93.0f, -30.0f, kan_win_ta_model, { &mMP_label_word_needle, NULL } }; static u8 mMP_label_str_port[4] = { CHAR_D, CHAR_o, CHAR_c, CHAR_k }; -static mMP_LabelWord_c mMP_label_word_port = { - -83.0f, -25.0f, - mMP_label_str_port, 4 -}; +static mMP_LabelWord_c mMP_label_word_port = { -83.0f, -25.0f, mMP_label_str_port, 4 }; -static mMP_Label_c mMP_label_port = { - -93.0f, -30.0f, - kan_win_funeT_model, - { &mMP_label_word_port, NULL } -}; +static mMP_Label_c mMP_label_port = { -93.0f, -30.0f, kan_win_funeT_model, { &mMP_label_word_port, NULL } }; static mMP_Label_c* mMP_label_data[mMP_LABEL_NUM] = { - &mMP_label_npc, - &mMP_label_player, - &mMP_label_shop, - &mMP_label_police, - &mMP_label_post, - &mMP_label_shrine, - &mMP_label_station, - &mMP_label_junk, - &mMP_label_museum, - &mMP_label_needle, - &mMP_label_port + &mMP_label_npc, &mMP_label_player, &mMP_label_shop, &mMP_label_police, &mMP_label_post, &mMP_label_shrine, + &mMP_label_station, &mMP_label_junk, &mMP_label_museum, &mMP_label_needle, &mMP_label_port, }; static int mMP_check_layer(f32 y) { - int layer; + int layer; - switch (mCoBG_Height2GetLayer(y)) { - case mCoBG_LAYER0: - layer = 2; - break; - case mCoBG_LAYER1: - layer = 1; - break; - case mCoBG_LAYER2: - layer = 0; - break; - default: - layer = 1; - break; - } + switch (mCoBG_Height2GetLayer(y)) { + case mCoBG_LAYER0: + layer = 2; + break; + case mCoBG_LAYER1: + layer = 1; + break; + case mCoBG_LAYER2: + layer = 0; + break; + default: + layer = 1; + break; + } - if (mRF_CheckFieldStep3() == FALSE) { - layer--; - } + if (mRF_CheckFieldStep3() == FALSE) { + layer--; + } - if (layer < 0) { - layer = 0; - } + if (layer < 0) { + layer = 0; + } - return layer; + return layer; } static int mMP_check_bg_kind(u8 kind) { - int res = TRUE; - if (kind <= 8 || kind == 0x3D || kind == 0x3E || kind == 9 || kind == 10) { - res = FALSE; - } + int res = TRUE; + if (kind <= 8 || kind == 0x3D || kind == 0x3E || kind == 9 || kind == 10) { + res = FALSE; + } - return res; + return res; } static void mMP_make_max_no_table(int* max_no_table, int count) { - int bz; - int i; - int j = 0; + int bz; + int i; + int j = 0; - for (i = 0; i < count; i++) { - max_no_table[i] = 39; - } - - //i = BLOCKXZ_2_BLOCKIDX(0, 1); - for (bz = 1; bz < mMP_BLOCKZ_MAX; bz++) { - u8 type; - int bx; - for (bx = 1; bx < mMP_BLOCKX_MAX; bx++) { - type = g_block_type_p[BLOCKXZ_2_BLOCKIDX(bx, bz)]; - if (mMP_check_bg_kind(type) == TRUE) { - max_no_table[0] = type; - - if (Save_Get(bridge.exists) && - Save_Get(bridge.block_x) == bx && - Save_Get(bridge.block_z) == bz && - pluss_bridge[type] != 0xFF - ) { - max_no_table[0] = pluss_bridge[type]; - } - - max_no_table++; - j++; - } - - if (j >= count) { - return; - } + for (i = 0; i < count; i++) { + max_no_table[i] = 39; + } + + // i = BLOCKXZ_2_BLOCKIDX(0, 1); + for (bz = 1; bz < mMP_BLOCKZ_MAX; bz++) { + u8 type; + int bx; + for (bx = 1; bx < mMP_BLOCKX_MAX; bx++) { + type = g_block_type_p[BLOCKXZ_2_BLOCKIDX(bx, bz)]; + if (mMP_check_bg_kind(type) == TRUE) { + max_no_table[0] = type; + + if (Save_Get(bridge.exists) && Save_Get(bridge.block_x) == bx && Save_Get(bridge.block_z) == bz && + pluss_bridge[type] != 0xFF) { + max_no_table[0] = pluss_bridge[type]; + } + + max_no_table++; + j++; + } + + if (j >= count) { + return; + } + } } - } } static void mMP_dma_texture(u8** texture_pp, int type) { - *texture_pp = l_map_texture[type]; + *texture_pp = l_map_texture[type]; } static void mMP_set_map_texture_pal(mMP_Overlay_c* map_ovl) { - int max_no_table[FG_BLOCK_TOTAL_NUM]; - int i; + int max_no_table[FG_BLOCK_TOTAL_NUM]; + int i; - mMP_make_max_no_table(max_no_table, FG_BLOCK_TOTAL_NUM); - for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { - map_ovl->map_pal[i] = l_map_pal[max_no_table[i]]; - mMP_dma_texture(&map_ovl->map_texture[i], max_no_table[i]); - } + mMP_make_max_no_table(max_no_table, FG_BLOCK_TOTAL_NUM); + for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { + map_ovl->map_pal[i] = l_map_pal[max_no_table[i]]; + mMP_dma_texture(&map_ovl->map_texture[i], max_no_table[i]); + } } static mActor_name_t mMP_GetFgBlockName(mMP_Overlay_c* map_ovl, int block_x, int block_z) { - return map_ovl->combination_table[Save_Get(combi_table[block_z][block_x]).combination_type].fg_id; + return map_ovl->combination_table[Save_Get(combi_table[block_z][block_x]).combination_type].fg_id; } static void mMP_set_house_data(mMP_Overlay_c* map_ovl, mSM_MenuInfo_c* menu) { - static u8 akiya_str[PLAYER_NAME_LEN] = { CHAR_f, CHAR_r, CHAR_e, CHAR_e, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE }; + static u8 akiya_str[PLAYER_NAME_LEN] = { CHAR_f, CHAR_r, CHAR_e, CHAR_e, + CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE }; - mMP_ResidentInfo_c* resident_p = &map_ovl->player_info[0]; - mMP_LabelInfo_c* player_block_label = &map_ovl->label_info[1][2]; - Private_c* priv = Save_Get(private); - mMP_HousePos_c* house_pos2; - Animal_c* animal = Save_Get(animals); - int residents; - int i; + mMP_ResidentInfo_c* resident_p = &map_ovl->player_info[0]; + mMP_LabelInfo_c* player_block_label = &map_ovl->label_info[1][2]; + Private_c* priv = Save_Get(private_data); + mMP_HousePos_c* house_pos2; + Animal_c* animal = Save_Get(animals); + int residents; + int i; - /* Process player resident info first */ + /* Process player resident info first */ - player_block_label->label_cnt = PLAYER_NUM; - player_block_label->label_no = mMP_LABEL_PLAYER; + player_block_label->label_cnt = PLAYER_NUM; + player_block_label->label_no = mMP_LABEL_PLAYER; - residents = 0; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_CheckPrivate(priv) == TRUE && - (Common_Get(now_private) != priv || mEv_CheckFirstIntro() == FALSE) - ) { - mPr_CopyPlayerName(resident_p->name, priv->player_ID.player_name); - resident_p->sex = priv->gender; - resident_p->house_layer = 0; - resident_p->house_idx = 0; + residents = 0; + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_CheckPrivate(priv) == TRUE && (Common_Get(now_private) != priv || mEv_CheckFirstIntro() == FALSE)) { + mPr_CopyPlayerName(resident_p->name, priv->player_ID.player_name); + resident_p->sex = priv->gender; + resident_p->house_layer = 0; + resident_p->house_idx = 0; - player_block_label->residents[residents] = resident_p; - residents++; - resident_p++; - } - - priv++; - } - - for (residents; residents < PLAYER_NUM; residents++, resident_p++) { - mPr_CopyPlayerName(resident_p->name, akiya_str); - resident_p->sex = -1; - resident_p->house_layer = 0; - - player_block_label->residents[residents] = resident_p; - } - - house_pos2 = mMP_house_pos_list; - /* Process animal resident info next */ - resident_p = &map_ovl->animal_info[0]; - residents = 0; - - for (i = 0; i < ANIMAL_NUM_MAX; i++, animal++, resident_p++) { - if (mNpc_CheckFreeAnimalInfo(animal) == FALSE) { - Anmhome_c* home = &animal->home_info; - mNpc_GetNpcWorldNameAnm(resident_p->name, &animal->id); - resident_p->sex = mNpc_GetLooks2Sex(animal->id.looks); - resident_p->house_layer = mMP_check_layer(Common_Get(npclist[i].house_position.y)); - - { - mActor_name_t fgblock_name = mMP_GetFgBlockName(map_ovl, home->block_x, home->block_z); - mMP_HousePos_c* house_pos = house_pos2; - mMP_HousePos_Entry_c* pos_info = house_pos[0].entries; - - for (house_pos; house_pos->fgblock_name != 0x03B8; house_pos++) { - if (fgblock_name == house_pos->fgblock_name) { - int j; - pos_info = house_pos->entries; - - for (j = 0; j < 3; j++, pos_info++) { - if (pos_info->ut_x == home->ut_x && pos_info->ut_z == home->ut_z - 1) { - break; - } - } - - if (j == 3) { - pos_info = &house_pos->entries[0]; // default - } - - break; - } + player_block_label->residents[residents] = resident_p; + residents++; + resident_p++; } - resident_p->house_idx = pos_info->idx; - } - - { - int bx = home->block_x - 1; - int bz = home->block_z - 1; - mMP_LabelInfo_c* label_info = &map_ovl->label_info[bz][bx]; - - label_info->residents[label_info->label_cnt] = resident_p; - label_info->label_cnt++; - label_info->label_no = mMP_LABEL_NPC; - } + priv++; } - } - /* Sort villager houses by layer, with lower layers coming first */ - { - mMP_ResidentInfo_c* resident; - mMP_ResidentInfo_c* next_resident; - mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; - for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { - if (label_info->label_no == mMP_LABEL_NPC && label_info->label_cnt > 1) { - - int j; - for (j = 0; j < label_info->label_cnt - 1; j++) { - - resident = label_info->residents[j]; - next_resident = label_info->residents[j + 1]; + for (residents; residents < PLAYER_NUM; residents++, resident_p++) { + mPr_CopyPlayerName(resident_p->name, akiya_str); + resident_p->sex = -1; + resident_p->house_layer = 0; - if (resident->house_layer > next_resident->house_layer) { - label_info->residents[j] = next_resident; - label_info->residents[j + 1] = resident; - j = -1; - } + player_block_label->residents[residents] = resident_p; + } + + house_pos2 = mMP_house_pos_list; + /* Process animal resident info next */ + resident_p = &map_ovl->animal_info[0]; + residents = 0; + + for (i = 0; i < ANIMAL_NUM_MAX; i++, animal++, resident_p++) { + if (mNpc_CheckFreeAnimalInfo(animal) == FALSE) { + Anmhome_c* home = &animal->home_info; + mNpc_GetNpcWorldNameAnm(resident_p->name, &animal->id); + resident_p->sex = mNpc_GetLooks2Sex(animal->id.looks); + resident_p->house_layer = mMP_check_layer(Common_Get(npclist[i].house_position.y)); + + { + mActor_name_t fgblock_name = mMP_GetFgBlockName(map_ovl, home->block_x, home->block_z); + mMP_HousePos_c* house_pos = house_pos2; + mMP_HousePos_Entry_c* pos_info = house_pos[0].entries; + + for (house_pos; house_pos->fgblock_name != 0x03B8; house_pos++) { + if (fgblock_name == house_pos->fgblock_name) { + int j; + pos_info = house_pos->entries; + + for (j = 0; j < 3; j++, pos_info++) { + if (pos_info->ut_x == home->ut_x && pos_info->ut_z == home->ut_z - 1) { + break; + } + } + + if (j == 3) { + pos_info = &house_pos->entries[0]; // default + } + + break; + } + } + + resident_p->house_idx = pos_info->idx; + } + + { + int bx = home->block_x - 1; + int bz = home->block_z - 1; + mMP_LabelInfo_c* label_info = &map_ovl->label_info[bz][bx]; + + label_info->residents[label_info->label_cnt] = resident_p; + label_info->label_cnt++; + label_info->label_no = mMP_LABEL_NPC; + } + } + } + + /* Sort villager houses by layer, with lower layers coming first */ + { + mMP_ResidentInfo_c* resident; + mMP_ResidentInfo_c* next_resident; + mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; + for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { + if (label_info->label_no == mMP_LABEL_NPC && label_info->label_cnt > 1) { + + int j; + for (j = 0; j < label_info->label_cnt - 1; j++) { + + resident = label_info->residents[j]; + next_resident = label_info->residents[j + 1]; + + if (resident->house_layer > next_resident->house_layer) { + label_info->residents[j] = next_resident; + label_info->residents[j + 1] = resident; + j = -1; + } + } + } + + label_info++; } - } - - label_info++; } - } } static void mMP_set_field_data(mMP_Overlay_c* map_ovl) { - mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; - int* block_kind_p = g_block_kind_p + BLOCKXZ_2_BLOCKIDX(1, 1); // start at the first non-border acre - int bx; - int bz; + mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; + int* block_kind_p = g_block_kind_p + BLOCKXZ_2_BLOCKIDX(1, 1); // start at the first non-border acre + int bx; + int bz; + for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { + for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { + if (label_info->label_cnt <= 0) { + int kind = *block_kind_p; - for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { - for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - if (label_info->label_cnt <= 0) { - int kind = *block_kind_p; + if (kind & mRF_BLOCKKIND_SHOP) { + label_info->label_no = mMP_LABEL_SHOP; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_POLICE) { + label_info->label_no = mMP_LABEL_POLICE; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_POSTOFFICE) { + label_info->label_no = mMP_LABEL_POST; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_SHRINE) { + label_info->label_no = mMP_LABEL_SHRINE; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_STATION) { + label_info->label_no = mMP_LABEL_STATION; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_DUMP) { + label_info->label_no = mMP_LABEL_JUNK; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_MUSEUM) { + label_info->label_no = mMP_LABEL_MUSEUM; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_TAILORS) { + label_info->label_no = mMP_LABEL_NEEDLE; + label_info->label_cnt = 2; + } else if (kind & mRF_BLOCKKIND_DOCK) { + label_info->label_no = mMP_LABEL_PORT; + label_info->label_cnt = 2; + } + } - if (kind & mRF_BLOCKKIND_SHOP) { - label_info->label_no = mMP_LABEL_SHOP; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_POLICE) { - label_info->label_no = mMP_LABEL_POLICE; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_POSTOFFICE) { - label_info->label_no = mMP_LABEL_POST; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_SHRINE) { - label_info->label_no = mMP_LABEL_SHRINE; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_STATION) { - label_info->label_no = mMP_LABEL_STATION; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_DUMP) { - label_info->label_no = mMP_LABEL_JUNK; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_MUSEUM) { - label_info->label_no = mMP_LABEL_MUSEUM; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_TAILORS) { - label_info->label_no = mMP_LABEL_NEEDLE; - label_info->label_cnt = 2; - } - else if (kind & mRF_BLOCKKIND_DOCK) { - label_info->label_no = mMP_LABEL_PORT; - label_info->label_cnt = 2; - } - } - - label_info++; - block_kind_p++; + label_info++; + block_kind_p++; + } + + block_kind_p += 2; // skip X border acres } - - block_kind_p += 2; // skip X border acres - } } static void mMP_set_init_data(mMP_Overlay_c* map_ovl, mSM_MenuInfo_c* menu_info) { - mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; - PLAYER_ACTOR* player = get_player_actor_withoutCheck((GAME_PLAY*)gamePT); - int block_x; - int block_z; - int i; + mMP_LabelInfo_c* label_info = (mMP_LabelInfo_c*)map_ovl->label_info; + PLAYER_ACTOR* player = get_player_actor_withoutCheck((GAME_PLAY*)gamePT); + int block_x; + int block_z; + int i; - if (Common_Get(field_type) != mFI_FIELDTYPE2_FG && Common_Get(door_data.next_scene_id) != 0) { - xyz_t pos; + if (Common_Get(field_type) != mFI_FIELDTYPE2_FG && Common_Get(door_data.next_scene_id) != 0) { + xyz_t pos; - xyz_t_move_s_xyz(&pos, Common_GetPointer(structure_exit_door_data.exit_position)); - mFI_Wpos2BlockNum(&block_x, &block_z, pos); - } - else { - mFI_Wpos2BlockNum(&block_x, &block_z, player->actor_class.world.position); - } + xyz_t_move_s_xyz(&pos, Common_GetPointer(structure_exit_door_data.exit_position)); + mFI_Wpos2BlockNum(&block_x, &block_z, pos); + } else { + mFI_Wpos2BlockNum(&block_x, &block_z, player->actor_class.world.position); + } - map_ovl->player_bx = block_x - 1; - map_ovl->player_bz = block_z - 1; + map_ovl->player_bx = block_x - 1; + map_ovl->player_bz = block_z - 1; - map_ovl->sel_bx = map_ovl->player_bx; - map_ovl->sel_bz = map_ovl->player_bz; + map_ovl->sel_bx = map_ovl->player_bx; + map_ovl->sel_bz = map_ovl->player_bz; - map_ovl->map_cursor_current_xpos = (f32)map_ovl->player_bx * mMP_BLOCK_SIZE_F; - map_ovl->map_cursor_current_zpos = -(f32)map_ovl->player_bz * mMP_BLOCK_SIZE_F; + map_ovl->map_cursor_current_xpos = (f32)map_ovl->player_bx * mMP_BLOCK_SIZE_F; + map_ovl->map_cursor_current_zpos = -(f32)map_ovl->player_bz * mMP_BLOCK_SIZE_F; - map_ovl->cursor_frame = 0; - - map_ovl->map_cursor_target_xpos = map_ovl->map_cursor_current_xpos; - map_ovl->map_cursor_target_zpos = map_ovl->map_cursor_current_zpos; + map_ovl->cursor_frame = 0; - mMP_set_map_texture_pal(map_ovl); + map_ovl->map_cursor_target_xpos = map_ovl->map_cursor_current_xpos; + map_ovl->map_cursor_target_zpos = map_ovl->map_cursor_current_zpos; - for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { - label_info->label_cnt = 0; - label_info++; - } + mMP_set_map_texture_pal(map_ovl); - mMP_set_house_data(map_ovl, menu_info); - mMP_set_field_data(map_ovl); + for (i = 0; i < FG_BLOCK_TOTAL_NUM; i++) { + label_info->label_cnt = 0; + label_info++; + } - map_ovl->land_name_str_len = mMl_strlen(Save_Get(land_info.name), LAND_NAME_SIZE, CHAR_SPACE); + mMP_set_house_data(map_ovl, menu_info); + mMP_set_field_data(map_ovl); + + map_ovl->land_name_str_len = mMl_strlen(Save_Get(land_info.name), LAND_NAME_SIZE, CHAR_SPACE); } static void mMP_move_Move(Submenu* submenu, mSM_MenuInfo_c* menu) { - (*submenu->overlay->move_Move_proc)(submenu, menu); + (*submenu->overlay->move_Move_proc)(submenu, menu); } static void mMP_move_Play(Submenu* submenu, mSM_MenuInfo_c* menu) { - Submenu_Overlay_c* ovl = submenu->overlay; - int trigger = ovl->menu_control.trigger; - mMP_Overlay_c* map_ovl = ovl->map_ovl; - int cursor_moved = FALSE; + Submenu_Overlay_c* ovl = submenu->overlay; + int trigger = ovl->menu_control.trigger; + mMP_Overlay_c* map_ovl = ovl->map_ovl; + int cursor_moved = FALSE; - if ((trigger & (BUTTON_A | BUTTON_B | BUTTON_START)) || (menu->data0 == 1 && (trigger & BUTTON_X))) { - (*ovl->move_chg_base_proc)(menu, mSM_MOVE_OUT_TOP); - sAdo_SysTrgStart(0x17D); - } - else if (trigger & BUTTON_CLEFT) { - if (map_ovl->sel_bx != 0) { - map_ovl->sel_bx--; - map_ovl->map_cursor_target_xpos -= mMP_BLOCK_SIZE_F; - cursor_moved = TRUE; + if ((trigger & (BUTTON_A | BUTTON_B | BUTTON_START)) || (menu->data0 == 1 && (trigger & BUTTON_X))) { + (*ovl->move_chg_base_proc)(menu, mSM_MOVE_OUT_TOP); + sAdo_SysTrgStart(0x17D); + } else if (trigger & BUTTON_CLEFT) { + if (map_ovl->sel_bx != 0) { + map_ovl->sel_bx--; + map_ovl->map_cursor_target_xpos -= mMP_BLOCK_SIZE_F; + cursor_moved = TRUE; + } + } else if (trigger & BUTTON_CDOWN) { + if (map_ovl->sel_bz < FG_BLOCK_Z_NUM - 1) { + map_ovl->sel_bz++; + map_ovl->map_cursor_target_zpos -= mMP_BLOCK_SIZE_F; + cursor_moved = TRUE; + } + } else if (trigger & BUTTON_CUP) { + if (map_ovl->sel_bz != 0) { + map_ovl->sel_bz--; + map_ovl->map_cursor_target_zpos += mMP_BLOCK_SIZE_F; + cursor_moved = TRUE; + } + } else if (trigger & BUTTON_CRIGHT) { + if (map_ovl->sel_bx < FG_BLOCK_X_NUM - 1) { + map_ovl->sel_bx++; + map_ovl->map_cursor_target_xpos += mMP_BLOCK_SIZE_F; + cursor_moved = TRUE; + } } - } - else if (trigger & BUTTON_CDOWN) { - if (map_ovl->sel_bz < FG_BLOCK_Z_NUM - 1) { - map_ovl->sel_bz++; - map_ovl->map_cursor_target_zpos -= mMP_BLOCK_SIZE_F; - cursor_moved = TRUE; - } - } - else if (trigger & BUTTON_CUP) { - if (map_ovl->sel_bz != 0) { - map_ovl->sel_bz--; - map_ovl->map_cursor_target_zpos += mMP_BLOCK_SIZE_F; - cursor_moved = TRUE; - } - } - else if (trigger & BUTTON_CRIGHT) { - if (map_ovl->sel_bx < FG_BLOCK_X_NUM - 1) { - map_ovl->sel_bx++; - map_ovl->map_cursor_target_xpos += mMP_BLOCK_SIZE_F; - cursor_moved = TRUE; - } - } - if (cursor_moved == TRUE) { - menu->proc_status = 2; // TODO: enum & name - sAdo_SysTrgStart(NA_SE_CURSOL); - } + if (cursor_moved == TRUE) { + menu->proc_status = 2; // TODO: enum & name + sAdo_SysTrgStart(NA_SE_CURSOL); + } - map_ovl->cursor_frame++; - if (map_ovl->cursor_frame >= mMP_CURSOR_FRAMES) { - map_ovl->cursor_frame %= mMP_CURSOR_FRAMES; - } - else if (map_ovl->cursor_frame < 0) { - map_ovl->cursor_frame = 0; - } + map_ovl->cursor_frame++; + if (map_ovl->cursor_frame >= mMP_CURSOR_FRAMES) { + map_ovl->cursor_frame %= mMP_CURSOR_FRAMES; + } else if (map_ovl->cursor_frame < 0) { + map_ovl->cursor_frame = 0; + } } static void mMP_move_Wait(Submenu* submenu, mSM_MenuInfo_c* menu) { - mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; - f32 x_remain = add_calc(&map_ovl->map_cursor_current_xpos, map_ovl->map_cursor_target_xpos, 0.7f, 19.0f, 1.8f); - f32 z_remain = add_calc(&map_ovl->map_cursor_current_zpos, map_ovl->map_cursor_target_zpos, 0.7f, 19.0f, 1.8f); + mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; + f32 x_remain = add_calc(&map_ovl->map_cursor_current_xpos, map_ovl->map_cursor_target_xpos, 0.7f, 19.0f, 1.8f); + f32 z_remain = add_calc(&map_ovl->map_cursor_current_zpos, map_ovl->map_cursor_target_zpos, 0.7f, 19.0f, 1.8f); - if (fabsf(x_remain) < 0.1f && fabsf(z_remain) < 0.1f) { - menu->proc_status = 1; - } + if (fabsf(x_remain) < 0.1f && fabsf(z_remain) < 0.1f) { + menu->proc_status = 1; + } } static void mMP_move_End(Submenu* submenu, mSM_MenuInfo_c* menu) { - (*submenu->overlay->move_End_proc)(submenu, menu); + (*submenu->overlay->move_End_proc)(submenu, menu); } typedef void (*mMP_MOVE_PROC)(Submenu*, mSM_MenuInfo_c*); static void mMP_map_ovl_move(Submenu* submenu) { - static mMP_MOVE_PROC ovl_move_proc[5] = { - &mMP_move_Move, - &mMP_move_Play, - &mMP_move_Wait, - (mMP_MOVE_PROC)&none_proc1, - &mMP_move_End - }; + static mMP_MOVE_PROC ovl_move_proc[5] = { &mMP_move_Move, &mMP_move_Play, &mMP_move_Wait, + (mMP_MOVE_PROC)&none_proc1, &mMP_move_End }; - Submenu_Overlay_c* ovl = submenu->overlay; - mSM_MenuInfo_c* menu = &ovl->menu_info[mSM_OVL_MAP]; + Submenu_Overlay_c* ovl = submenu->overlay; + mSM_MenuInfo_c* menu = &ovl->menu_info[mSM_OVL_MAP]; - (*menu->pre_move_func)(submenu); - (*ovl_move_proc[menu->proc_status])(submenu, menu); + (*menu->pre_move_func)(submenu); + (*ovl_move_proc[menu->proc_status])(submenu, menu); } static void mMP_map_draw_init() { - kan_win_wakuT_model_p = kan_win_wakuT_model; - kan_win_waku1T_model_p = kan_waku_w1T_model; - kan_win_waku2T_model_p = kan_waku_w2T_model; - kan_win_waku3T_model_p = kan_waku_w3T_model; - kan_win_waku4T_model_p = kan_waku_w4T_model; - kan_win_color0_mode_p = kan_win_color0_mode; - kan_win_color1_mode_p = kan_win_color1_mode; + kan_win_wakuT_model_p = kan_win_wakuT_model; + kan_win_waku1T_model_p = kan_waku_w1T_model; + kan_win_waku2T_model_p = kan_waku_w2T_model; + kan_win_waku3T_model_p = kan_waku_w3T_model; + kan_win_waku4T_model_p = kan_waku_w4T_model; + kan_win_color0_mode_p = kan_win_color0_mode; + kan_win_color1_mode_p = kan_win_color1_mode; } static int mMP_get_label_cnt(mMP_LabelInfo_c* label_info) { - int label_no = label_info->label_no; - if (label_no == mMP_LABEL_NPC || label_no == mMP_LABEL_PLAYER) { - return label_info->label_cnt; - } + int label_no = label_info->label_no; + if (label_no == mMP_LABEL_NPC || label_no == mMP_LABEL_PLAYER) { + return label_info->label_cnt; + } - return 1; + return 1; } static void mMP_set_house_dl(GRAPH* graph, mMP_Overlay_c* map_ovl, f32 pos_x, f32 pos_y) { - static f32 offset_x[3] = { 5.0f, 13.0f, 17.0f }; - static f32 offset_y[3] = { -4.0f, -11.0f, -18.0f }; + static f32 offset_x[3] = { 5.0f, 13.0f, 17.0f }; + static f32 offset_y[3] = { -4.0f, -11.0f, -18.0f }; - mMP_LabelInfo_c* label_info; - f32 y; - f32 base_x; - f32 temp_x; - f32 base_y; - mMP_ResidentInfo_c** resident_p; - int bz; - int bx; - int i; - Gfx* gfx; + mMP_LabelInfo_c* label_info; + f32 y; + f32 base_x; + f32 temp_x; + f32 base_y; + mMP_ResidentInfo_c** resident_p; + int bz; + int bx; + int i; + Gfx* gfx; - label_info = (mMP_LabelInfo_c*)map_ovl->label_info; + label_info = (mMP_LabelInfo_c*)map_ovl->label_info; - base_y = (pos_y + 45.7f) + (0.5f * mMP_BLOCK_SIZE_F); - base_x = (pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F); + base_y = (pos_y + 45.7f) + (0.5f * mMP_BLOCK_SIZE_F); + base_x = (pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F); - OPEN_DISP(graph); + OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; - gSPDisplayList(gfx++, kan_win_mode); + gfx = NOW_POLY_OPA_DISP; + gSPDisplayList(gfx++, kan_win_mode); - /* draw all villager houses */ + /* draw all villager houses */ - for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { - temp_x = (pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F); - for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - if (label_info->label_no == mMP_LABEL_NPC) { - resident_p = label_info->residents; + for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { + temp_x = (pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F); + for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { + if (label_info->label_no == mMP_LABEL_NPC) { + resident_p = label_info->residents; - for (i = 0; i < label_info->label_cnt; i++) { - Matrix_scale(16.0f, 16.0f, 1.0f, 0); - Matrix_translate( - temp_x + offset_x[(*resident_p)->house_idx % 3], - base_y + offset_y[(*resident_p)->house_idx / 3], - 140.0f, - 1 - ); + for (i = 0; i < label_info->label_cnt; i++) { + Matrix_scale(16.0f, 16.0f, 1.0f, 0); + Matrix_translate(temp_x + offset_x[(*resident_p)->house_idx % 3], + base_y + offset_y[(*resident_p)->house_idx / 3], 140.0f, 1); - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, kan_win_npc2T_table[(*resident_p)->house_layer]); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, kan_win_npc2T_table[(*resident_p)->house_layer]); - resident_p++; + resident_p++; + } + } + + temp_x += mMP_BLOCK_SIZE_F; + label_info++; } - } - temp_x += mMP_BLOCK_SIZE_F; - label_info++; + base_y -= mMP_BLOCK_SIZE_F; + // base_x = x_save; } - base_y -= mMP_BLOCK_SIZE_F; - //base_x = x_save; - } + /* draw "current acre" icon */ - /* draw "current acre" icon */ + Matrix_scale(16.0f, 16.0f, 1.0f, 0); + Matrix_translate( + ((pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F) + (f32)map_ovl->player_bx * mMP_BLOCK_SIZE_F) + 3.0f + 5.0f, + (pos_y + 45.7f - (0.5f * mMP_BLOCK_SIZE_F) - (f32)map_ovl->player_bz * mMP_BLOCK_SIZE_F) + 4.0f + 5.0f, 140.0f, + 1); - Matrix_scale(16.0f, 16.0f, 1.0f, 0); - Matrix_translate( - ((pos_x + 11.7f) - (0.5f * mMP_BLOCK_SIZE_F) + (f32)map_ovl->player_bx * mMP_BLOCK_SIZE_F) + 3.0f + 5.0f, - (pos_y + 45.7f - (0.5f * mMP_BLOCK_SIZE_F) - (f32)map_ovl->player_bz * mMP_BLOCK_SIZE_F) + 4.0f + 5.0f, - 140.0f, - 1 - ); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, kan_win_genzaiT_model); - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, kan_win_genzaiT_model); - - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(graph); } static void mMP_set_map_dl(GRAPH* graph, mMP_Overlay_c* map_ovl) { - int bz; - int bx; - int block = 0; - Gfx* gfx; + int bz; + int bx; + int block = 0; + Gfx* gfx; - OPEN_DISP(graph); + OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; - - gDPSetTextureAdjustMode(gfx++, G_TA_DOLPHIN); - gSPDisplayList(gfx++, kan_tizu_mode); - - Matrix_push(); - Matrix_translate(11.7f, 45.7f, 0.0f, 1); + gfx = NOW_POLY_OPA_DISP; - for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { - for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { - gSPSegment(gfx++, G_MWO_SEGMENT_8, map_ovl->map_texture[block]); - gSPSegment(gfx++, G_MWO_SEGMENT_9, l_kan_tizu_pal[map_ovl->map_pal[block]]); - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, kan_tizu_model); + gDPSetTextureAdjustMode(gfx++, G_TA_DOLPHIN); + gSPDisplayList(gfx++, kan_tizu_mode); - /* move right one acre */ - Matrix_translate(mMP_BLOCK_SIZE_F, 0.0f, 0.0f, 1); - block++; + Matrix_push(); + Matrix_translate(11.7f, 45.7f, 0.0f, 1); + + for (bz = 0; bz < FG_BLOCK_Z_NUM; bz++) { + for (bx = 0; bx < FG_BLOCK_X_NUM; bx++) { + gSPSegment(gfx++, G_MWO_SEGMENT_8, map_ovl->map_texture[block]); + gSPSegment(gfx++, G_MWO_SEGMENT_9, l_kan_tizu_pal[map_ovl->map_pal[block]]); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, kan_tizu_model); + + /* move right one acre */ + Matrix_translate(mMP_BLOCK_SIZE_F, 0.0f, 0.0f, 1); + block++; + } + + /* move left to '1' acre and down one acre */ + Matrix_translate((-mMP_BLOCK_SIZE_F) * FG_BLOCK_X_NUM, -mMP_BLOCK_SIZE_F, 0.0f, 1); } - /* move left to '1' acre and down one acre */ - Matrix_translate((-mMP_BLOCK_SIZE_F) * FG_BLOCK_X_NUM, -mMP_BLOCK_SIZE_F, 0.0f, 1); - } + Matrix_pull(); + gDPSetTextureAdjustMode(gfx++, G_TA_N64); - Matrix_pull(); - gDPSetTextureAdjustMode(gfx++, G_TA_N64); - - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(graph); } static void mMP_set_cursol_dl(GRAPH* graph, mMP_Overlay_c* map_ovl, f32 base_x, f32 base_y) { - static int col_g[mMP_CURSOR_FRAMES] = { - 0, - 1, - 2, - 5, - 10, - 20, - 50, - 75, - 90, - 100, - 90, - 75, - 50, - 20, - 10, - 5, - 2, - 1 - }; + static int col_g[mMP_CURSOR_FRAMES] = { 0, 1, 2, 5, 10, 20, 50, 75, 90, 100, 90, 75, 50, 20, 10, 5, 2, 1 }; - static f32 cursol_scale[mMP_CURSOR_FRAMES] = { - 1.0f, - 1.015f, - 1.03f, - 1.04f, - 1.05f, - 1.06f, - 1.07f, - 1.08f, - 1.09f, - 1.1f, - 1.09f, - 1.08f, - 1.07f, - 1.06f, - 1.05f, - 1.04f, - 1.03f, - 1.015f - }; + static f32 cursol_scale[mMP_CURSOR_FRAMES] = { 1.0f, 1.015f, 1.03f, 1.04f, 1.05f, 1.06f, 1.07f, 1.08f, 1.09f, + 1.1f, 1.09f, 1.08f, 1.07f, 1.06f, 1.05f, 1.04f, 1.03f, 1.015f }; - f32 x = map_ovl->map_cursor_current_xpos + base_x; - f32 y = map_ovl->map_cursor_current_zpos + base_y; - int frame = map_ovl->cursor_frame; - Gfx* gfx; + f32 x = map_ovl->map_cursor_current_xpos + base_x; + f32 y = map_ovl->map_cursor_current_zpos + base_y; + int frame = map_ovl->cursor_frame; + Gfx* gfx; - Matrix_scale(16.0f, 16.0f, 1.0f, 0); - Matrix_translate(x + 11.7f, y + 45.7f, 140.0f, 1); + Matrix_scale(16.0f, 16.0f, 1.0f, 0); + Matrix_translate(x + 11.7f, y + 45.7f, 140.0f, 1); - Matrix_scale(cursol_scale[frame], cursol_scale[frame], 1.0f, 1); + Matrix_scale(cursol_scale[frame], cursol_scale[frame], 1.0f, 1); - OPEN_DISP(graph); + OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; + gfx = NOW_POLY_OPA_DISP; - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gDPSetPrimColor(gfx++, 0, 255, 255, col_g[frame], 255, 255); - gSPDisplayList(gfx++, kan_win_cursorT_model); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gDPSetPrimColor(gfx++, 0, 255, 255, col_g[frame], 255, 255); + gSPDisplayList(gfx++, kan_win_cursorT_model); - SET_POLY_OPA_DISP(gfx); + SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); + CLOSE_DISP(graph); } static void mMP_set_label_dl(GAME* game, mMP_LabelInfo_c* label_info, f32 xpos, f32 ypos) { - mMP_Label_c* label = mMP_label_data[label_info->label_no]; + mMP_Label_c* label = mMP_label_data[label_info->label_no]; - if (label != NULL) { - mMP_ResidentInfo_c** resident_p = label_info->residents; - mMP_LabelWord_c* word; - f32 base_x = 160.0f + xpos; - f32 base_y = 120.0f - ypos; - int i; + if (label != NULL) { + mMP_ResidentInfo_c** resident_p = label_info->residents; + mMP_LabelWord_c* word; + f32 base_x = 160.0f + xpos; + f32 base_y = 120.0f - ypos; + int i; - for (i = 0; i < mMP_LABEL_WORD_NUM; i++) { - word = label->words[i]; + for (i = 0; i < mMP_LABEL_WORD_NUM; i++) { + word = label->words[i]; - if (word != NULL) { - if (word->str == NULL) { - /* draw resident name label (villagers, players) */ - int j; + if (word != NULL) { + if (word->str == NULL) { + /* draw resident name label (villagers, players) */ + int j; - for (j = 0; j < label_info->label_cnt; j++) { - int width = mFont_GetStringWidth((*resident_p)->name, PLAYER_NAME_LEN, TRUE); - f32 scale_x = 54.0f / width; + for (j = 0; j < label_info->label_cnt; j++) { + int width = mFont_GetStringWidth((*resident_p)->name, PLAYER_NAME_LEN, TRUE); + f32 scale_x = 54.0f / width; - if (scale_x > 0.75f) { - scale_x = 0.75f; + if (scale_x > 0.75f) { + scale_x = 0.75f; + } + + if (resident_p[0]->sex != -1) { + mFont_SetLineStrings(game, resident_p[0]->name, PLAYER_NAME_LEN, base_x + word->ofs_x, + base_y - word->ofs_y, 255, 75, 40, 255, FALSE, TRUE, scale_x, 0.75f, + mFont_MODE_POLY); + } else { + mFont_SetLineStrings(game, resident_p[0]->name, PLAYER_NAME_LEN, base_x + word->ofs_x, + base_y - word->ofs_y, 165, 145, 140, 255, FALSE, TRUE, scale_x, 0.75f, + mFont_MODE_POLY); + } + + resident_p++; + base_y += 12.0f; + } + } else { + /* draw building name */ + mFont_SetLineStrings(game, word->str, word->str_len, base_x + word->ofs_x, base_y - word->ofs_y, + 120, 95, 205, 255, FALSE, TRUE, 0.75f, 0.75f, mFont_MODE_POLY); + } } - - if (resident_p[0]->sex != -1) { - mFont_SetLineStrings( - game, - resident_p[0]->name, PLAYER_NAME_LEN, - base_x + word->ofs_x, base_y - word->ofs_y, - 255, 75, 40, 255, - FALSE, TRUE, - scale_x, 0.75f, - mFont_MODE_POLY - ); - } - else { - mFont_SetLineStrings( - game, - resident_p[0]->name, PLAYER_NAME_LEN, - base_x + word->ofs_x, base_y - word->ofs_y, - 165, 145, 140, 255, - FALSE, TRUE, - scale_x, 0.75f, - mFont_MODE_POLY - ); - } - - resident_p++; - base_y += 12.0f; - } } - else { - /* draw building name */ - mFont_SetLineStrings( - game, - word->str, word->str_len, - base_x + word->ofs_x, base_y - word->ofs_y, - 120, 95, 205, 255, - FALSE, TRUE, - 0.75f, 0.75f, - mFont_MODE_POLY - ); - } - } } - } } static void mMP_set_base_dl(GRAPH* graph, mSM_MenuInfo_c* menu) { - Gfx* gfx; - - OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; - - if (menu->data0 == 0) { - gSPSegment(gfx++, G_MWO_SEGMENT_B, kan_win_color0_mode_p); - } - else { - gSPSegment(gfx++, G_MWO_SEGMENT_B, kan_win_color1_mode_p); - } - - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, kan_win_model); - - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); -} - -static void mMP_set_win_dl(GRAPH* graph, mMP_Overlay_c* map_ovl, mMP_LabelInfo_c* label_info) { - int label_count = label_info->label_cnt; - Gfx* gfx; - - OPEN_DISP(graph); - gfx = NOW_POLY_OPA_DISP; - - /* move X-acre number texture into segment 8 and Z-acre character texture int segment 9 */ - gSPSegment(gfx++, G_MWO_SEGMENT_8, kan_win_evw_anime_1_tex_table[map_ovl->sel_bx]); - gSPSegment(gfx++, G_MWO_SEGMENT_9, kan_win_evw_anime_2_tex_table[map_ovl->sel_bz]); - - /* move label area texture into segment 10 based on number of labels */ - if (label_count == 4) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku4T_model_p); - } - else if (label_count == 3) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku3T_model_p); - } - else if (label_count == 1) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_wakuT_model_p); - } - else if (label_count == 0) { - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku1T_model_p); - } - else { /* label_count == 2 */ - gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku2T_model_p); - } - - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - gSPDisplayList(gfx++, kan_win_model2); - - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(graph); -} - -static void mMP_set_label_top_dl(GRAPH* graph, mMP_LabelInfo_c* label_info) { - mMP_Label_c* label = mMP_label_data[label_info->label_no]; - mMP_ResidentInfo_c** resident_p; - - if (label != NULL) { - int count = mMP_get_label_cnt(label_info); - int i; Gfx* gfx; OPEN_DISP(graph); gfx = NOW_POLY_OPA_DISP; - Matrix_push(); - Matrix_translate(label->ofs_x, label->ofs_y, 0.0f, 1); - - if (label_info->label_no == mMP_LABEL_NPC) { - resident_p = label_info->residents; - } - else { - resident_p = NULL; + if (menu->data0 == 0) { + gSPSegment(gfx++, G_MWO_SEGMENT_B, kan_win_color0_mode_p); + } else { + gSPSegment(gfx++, G_MWO_SEGMENT_B, kan_win_color1_mode_p); } - for (i = 0; i < count; i++) { - gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); - - if (resident_p != NULL && *resident_p != NULL && (*resident_p)->house_layer != 0) { - gSPDisplayList(gfx++, kan_win_npcT_table[(*resident_p)->house_layer]); - resident_p++; - } - else { - gSPDisplayList(gfx++, label->gfx); - - if (resident_p != NULL) { - resident_p++; - } - } - - Matrix_translate(0.0f, -12.0f, 0.0f, 1); - } - - Matrix_pull(); + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, kan_win_model); SET_POLY_OPA_DISP(gfx); CLOSE_DISP(graph); - } +} + +static void mMP_set_win_dl(GRAPH* graph, mMP_Overlay_c* map_ovl, mMP_LabelInfo_c* label_info) { + int label_count = label_info->label_cnt; + Gfx* gfx; + + OPEN_DISP(graph); + gfx = NOW_POLY_OPA_DISP; + + /* move X-acre number texture into segment 8 and Z-acre character texture int segment 9 */ + gSPSegment(gfx++, G_MWO_SEGMENT_8, kan_win_evw_anime_1_tex_table[map_ovl->sel_bx]); + gSPSegment(gfx++, G_MWO_SEGMENT_9, kan_win_evw_anime_2_tex_table[map_ovl->sel_bz]); + + /* move label area texture into segment 10 based on number of labels */ + if (label_count == 4) { + gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku4T_model_p); + } else if (label_count == 3) { + gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku3T_model_p); + } else if (label_count == 1) { + gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_wakuT_model_p); + } else if (label_count == 0) { + gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku1T_model_p); + } else { /* label_count == 2 */ + gSPSegment(gfx++, G_MWO_SEGMENT_A, kan_win_waku2T_model_p); + } + + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(gfx++, kan_win_model2); + + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(graph); +} + +static void mMP_set_label_top_dl(GRAPH* graph, mMP_LabelInfo_c* label_info) { + mMP_Label_c* label = mMP_label_data[label_info->label_no]; + mMP_ResidentInfo_c** resident_p; + + if (label != NULL) { + int count = mMP_get_label_cnt(label_info); + int i; + Gfx* gfx; + + OPEN_DISP(graph); + gfx = NOW_POLY_OPA_DISP; + + Matrix_push(); + Matrix_translate(label->ofs_x, label->ofs_y, 0.0f, 1); + + if (label_info->label_no == mMP_LABEL_NPC) { + resident_p = label_info->residents; + } else { + resident_p = NULL; + } + + for (i = 0; i < count; i++) { + gSPMatrix(gfx++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + if (resident_p != NULL && *resident_p != NULL && (*resident_p)->house_layer != 0) { + gSPDisplayList(gfx++, kan_win_npcT_table[(*resident_p)->house_layer]); + resident_p++; + } else { + gSPDisplayList(gfx++, label->gfx); + + if (resident_p != NULL) { + resident_p++; + } + } + + Matrix_translate(0.0f, -12.0f, 0.0f, 1); + } + + Matrix_pull(); + + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(graph); + } } static void mMP_set_dl(Submenu* submenu, GAME* game, mSM_MenuInfo_c* menu) { - static u8 land_color[2][4] = { - { 255, 0, 255, 255 }, - { 60, 60, 255, 255 }, - }; + static u8 land_color[2][4] = { + { 255, 0, 255, 255 }, + { 60, 60, 255, 255 }, + }; - GRAPH* graph = game->graph; - mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; - u8* col = land_color[menu->data0]; - mMP_LabelInfo_c* label_info = &map_ovl->label_info[map_ovl->sel_bz][map_ovl->sel_bx]; - u8* land_name; - f32 xpos = menu->position[0]; - f32 ypos = menu->position[1]; - f32 str_xpos; - f32 str_ypos; + GRAPH* graph = game->graph; + mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; + u8* col = land_color[menu->data0]; + mMP_LabelInfo_c* label_info = &map_ovl->label_info[map_ovl->sel_bz][map_ovl->sel_bx]; + u8* land_name; + f32 xpos = menu->position[0]; + f32 ypos = menu->position[1]; + f32 str_xpos; + f32 str_ypos; + Matrix_scale(16.0f, 16.0f, 1.0f, 0); + Matrix_translate(xpos, ypos, 140.0f, 1); - Matrix_scale(16.0f, 16.0f, 1.0f, 0); - Matrix_translate(xpos, ypos, 140.0f, 1); + mMP_set_base_dl(graph, menu); + mMP_set_map_dl(graph, map_ovl); + mMP_set_win_dl(graph, map_ovl, label_info); + mMP_set_label_top_dl(graph, label_info); + mMP_set_house_dl(graph, map_ovl, xpos, ypos); + mMP_set_cursol_dl(graph, map_ovl, xpos, ypos); - mMP_set_base_dl(graph, menu); - mMP_set_map_dl(graph, map_ovl); - mMP_set_win_dl(graph, map_ovl, label_info); - mMP_set_label_top_dl(graph, label_info); - mMP_set_house_dl(graph, map_ovl, xpos, ypos); - mMP_set_cursol_dl(graph, map_ovl, xpos, ypos); + (*submenu->overlay->set_char_matrix_proc)(graph); - (*submenu->overlay->set_char_matrix_proc)(graph); + /* draw town name */ + land_name = Save_Get(land_info.name); + str_xpos = (xpos + -136.0f) + 24.0f; + str_ypos = (ypos + 102.0f) + -29.0f; + mFont_SetLineStrings(game, land_name, map_ovl->land_name_str_len, str_xpos + 160.0f, 120.0f - str_ypos, col[0], + col[1], col[2], 255, FALSE, TRUE, 1.0f, 1.0f, mFont_MODE_POLY); - /* draw town name */ - land_name = Save_Get(land_info.name); - str_xpos = (xpos + -136.0f) + 24.0f; - str_ypos = (ypos + 102.0f) + -29.0f; - mFont_SetLineStrings( - game, - land_name, map_ovl->land_name_str_len, - str_xpos + 160.0f, 120.0f - str_ypos, - col[0], col[1], col[2], 255, - FALSE, TRUE, - 1.0f, 1.0f, - mFont_MODE_POLY - ); - - mMP_set_label_dl(game, label_info, xpos, ypos); + mMP_set_label_dl(game, label_info, xpos, ypos); } static void mMP_map_ovl_draw(Submenu* submenu, GAME* game) { - Submenu_Overlay_c* overlay = submenu->overlay; - mSM_MenuInfo_c* menu = &overlay->menu_info[mSM_OVL_MAP]; + Submenu_Overlay_c* overlay = submenu->overlay; + mSM_MenuInfo_c* menu = &overlay->menu_info[mSM_OVL_MAP]; - (*menu->pre_draw_func)(submenu, game); - mMP_set_dl(submenu, game, menu); + (*menu->pre_draw_func)(submenu, game); + mMP_set_dl(submenu, game, menu); } extern void mMP_map_ovl_set_proc(Submenu* submenu) { - Submenu_Overlay_c* overlay = submenu->overlay; + Submenu_Overlay_c* overlay = submenu->overlay; - overlay->menu_control.menu_move_func = &mMP_map_ovl_move; - overlay->menu_control.menu_draw_func = &mMP_map_ovl_draw; + overlay->menu_control.menu_move_func = &mMP_map_ovl_move; + overlay->menu_control.menu_draw_func = &mMP_map_ovl_draw; } static void mMP_map_ovl_init(Submenu* submenu) { - Submenu_Overlay_c* overlay = submenu->overlay; - mSM_MenuInfo_c* menu = &overlay->menu_info[mSM_OVL_MAP]; + Submenu_Overlay_c* overlay = submenu->overlay; + mSM_MenuInfo_c* menu = &overlay->menu_info[mSM_OVL_MAP]; - overlay->menu_control.animation_flag = FALSE; - (*submenu->overlay->move_chg_base_proc)(menu, mSM_MOVE_IN_TOP); + overlay->menu_control.animation_flag = FALSE; + (*submenu->overlay->move_chg_base_proc)(menu, mSM_MOVE_IN_TOP); - sAdo_SysTrgStart(0x17C); - mMP_set_init_data(submenu->overlay->map_ovl, menu); + sAdo_SysTrgStart(0x17C); + mMP_set_init_data(submenu->overlay->map_ovl, menu); } extern void mMP_map_ovl_construct(Submenu* submenu) { - Submenu_Overlay_c* overlay = submenu->overlay; + Submenu_Overlay_c* overlay = submenu->overlay; - if (overlay->map_ovl == NULL) { - overlay->map_ovl = (mMP_Overlay_c*)zelda_malloc(sizeof(mMP_Overlay_c)); - mem_clear((u8*)overlay->map_ovl, sizeof(mMP_Overlay_c), 0); - overlay->map_ovl->combination_table = data_combi_table; - mMP_map_draw_init(); - } + if (overlay->map_ovl == NULL) { + overlay->map_ovl = (mMP_Overlay_c*)zelda_malloc(sizeof(mMP_Overlay_c)); + mem_clear((u8*)overlay->map_ovl, sizeof(mMP_Overlay_c), 0); + overlay->map_ovl->combination_table = data_combi_table; + mMP_map_draw_init(); + } - mMP_map_ovl_init(submenu); - mMP_map_ovl_set_proc(submenu); + mMP_map_ovl_init(submenu); + mMP_map_ovl_set_proc(submenu); } extern void mMP_map_ovl_destruct(Submenu* submenu) { - mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; + mMP_Overlay_c* map_ovl = submenu->overlay->map_ovl; - if (map_ovl != NULL) { - zelda_free(map_ovl); - } + if (map_ovl != NULL) { + zelda_free(map_ovl); + } - submenu->overlay->map_ovl = NULL; + submenu->overlay->map_ovl = NULL; } diff --git a/src/m_msg_appear.c_inc b/src/m_msg_appear.c_inc index ad6a84e2..c85646ee 100644 --- a/src/m_msg_appear.c_inc +++ b/src/m_msg_appear.c_inc @@ -1,93 +1,89 @@ static int mMsg_Main_Appear_SetScale(mMsg_Window_c* msg_p, GAME* game) { - const f32 max = 18.0f; + if (msg_p->timer < 18.0f) { + f32 scale; - if (msg_p->timer < max) { - f32 scale; - - msg_p->timer += 1.0f; - scale = get_percent_forAccelBrake(msg_p->timer, 0.0f, max, 0.0f, 0.0f); - msg_p->window_scale = scale; - msg_p->text_scale = scale; - return FALSE; - } - else { - msg_p->window_scale = 1.0f; - msg_p->text_scale = 1.0f; - msg_p->timer = 0.0f; - return TRUE; - } + msg_p->timer += 1.0f; + scale = get_percent_forAccelBrake(msg_p->timer, 0.0f, 18.0f, 0.0f, 0.0f); + msg_p->window_scale = scale; + msg_p->text_scale = scale; + return FALSE; + } else { + msg_p->window_scale = 1.0f; + msg_p->text_scale = 1.0f; + msg_p->timer = 0.0f; + return TRUE; + } } static void mMsg_request_main_index_fromAppear(mMsg_Window_c* msg_p, GAME* game, int scale_done_flag) { - if (scale_done_flag && mMsg_request_main_cursol(msg_p, FALSE, 5)) { - mMsg_SetTimer(msg_p, 20.0f); - } + if (scale_done_flag && mMsg_request_main_cursol(msg_p, FALSE, 5)) { + mMsg_SetTimer(msg_p, 20.0f); + } } static void mMsg_Main_Appear(mMsg_Window_c* msg_p, GAME* game) { - int scaling_done_flag = mMsg_Main_Appear_SetScale(msg_p, game); - mMsg_request_main_index_fromAppear(msg_p, game, scaling_done_flag); - mMsg_MainSetup_Window(msg_p, game); + int scaling_done_flag = mMsg_Main_Appear_SetScale(msg_p, game); + mMsg_request_main_index_fromAppear(msg_p, game, scaling_done_flag); + mMsg_MainSetup_Window(msg_p, game); } static void mMsg_MainSetup_Appear(mMsg_Window_c* msg_p, GAME* game) { - mMsg_Request_MainAppear_Data_c* appear_data = &msg_p->request_data.request_main_appear; - int msg_no = appear_data->msg_no; + mMsg_Request_MainAppear_Data_c* appear_data = &msg_p->request_data.request_main_appear; + int msg_no = appear_data->msg_no; - if (mMsg_LoadMsgData(msg_p->msg_data, msg_no, FALSE)) { - ACTOR* actor = appear_data->speaker_actor; - int show_name = appear_data->name_shown_flag; + if (mMsg_LoadMsgData(msg_p->msg_data, msg_no, FALSE)) { + ACTOR* actor = appear_data->speaker_actor; + int show_name = appear_data->name_shown_flag; - mMsg_Set_client_actor_p(msg_p, actor, show_name); - msg_p->window_background_color = appear_data->window_color; - mMsg_sound_spec_change_voice(msg_p); - mMsg_sound_voice_mode(msg_p); - msg_p->main_index = mMsg_INDEX_APPEAR; - msg_p->draw_flag = TRUE; - msg_p->window_scale = 0.0f; - msg_p->text_scale = 0.0f; - msg_p->timer = 0.0f; - msg_p->show_continue_button = FALSE; - msg_p->requested_main_index = -1; - msg_p->requested_priority = 4; - msg_p->start_text_cursor_idx = 0; - msg_p->end_text_cursor_idx = 0; + mMsg_Set_client_actor_p(msg_p, actor, show_name); + msg_p->window_background_color = appear_data->window_color; + mMsg_sound_spec_change_voice(msg_p); + mMsg_sound_voice_mode(msg_p); + msg_p->main_index = mMsg_INDEX_APPEAR; + msg_p->draw_flag = TRUE; + msg_p->window_scale = 0.0f; + msg_p->text_scale = 0.0f; + msg_p->timer = 0.0f; + msg_p->show_continue_button = FALSE; + msg_p->requested_main_index = -1; + msg_p->requested_priority = 4; + msg_p->start_text_cursor_idx = 0; + msg_p->end_text_cursor_idx = 0; - if (msg_p->client_actor_p != NULL) { - switch (mNpc_GetNpcSex(msg_p->client_actor_p)) { - case mPr_SEX_MALE: - msg_p->name_background_color.r = 70; - msg_p->name_background_color.g = 245; - msg_p->name_background_color.b = 255; - msg_p->name_text_color.r = 0; - msg_p->name_text_color.g = 0; - msg_p->name_text_color.b = 15; - break; - - case mPr_SEX_FEMALE: - msg_p->name_background_color.r = 235; - msg_p->name_background_color.g = 140; - msg_p->name_background_color.b = 210; - msg_p->name_text_color.r = 45; - msg_p->name_text_color.g = 0; - msg_p->name_text_color.b = 30; - break; + if (msg_p->client_actor_p != NULL) { + switch (mNpc_GetNpcSex(msg_p->client_actor_p)) { + case mPr_SEX_MALE: + msg_p->name_background_color.r = 70; + msg_p->name_background_color.g = 245; + msg_p->name_background_color.b = 255; + msg_p->name_text_color.r = 0; + msg_p->name_text_color.g = 0; + msg_p->name_text_color.b = 15; + break; - default: - msg_p->name_background_color.r = 185; - msg_p->name_background_color.g = 255; - msg_p->name_background_color.b = 0; - msg_p->name_text_color.r = 0; - msg_p->name_text_color.g = 30; - msg_p->name_text_color.b = 0; - break; - } + case mPr_SEX_FEMALE: + msg_p->name_background_color.r = 235; + msg_p->name_background_color.g = 140; + msg_p->name_background_color.b = 210; + msg_p->name_text_color.r = 45; + msg_p->name_text_color.g = 0; + msg_p->name_text_color.b = 30; + break; + + default: + msg_p->name_background_color.r = 185; + msg_p->name_background_color.g = 255; + msg_p->name_background_color.b = 0; + msg_p->name_text_color.r = 0; + msg_p->name_text_color.g = 30; + msg_p->name_text_color.b = 0; + break; + } + } + + msg_p->data_loaded = TRUE; + emu64_refresh(); + } else { + msg_p->data_loaded = FALSE; } - - msg_p->data_loaded = TRUE; - emu64_refresh(); - } - else { - msg_p->data_loaded = FALSE; - } } diff --git a/src/m_msg_disappear.c_inc b/src/m_msg_disappear.c_inc index 39ba7838..959ef060 100644 --- a/src/m_msg_disappear.c_inc +++ b/src/m_msg_disappear.c_inc @@ -1,53 +1,49 @@ static int mMsg_Main_Disappear_SetScale(mMsg_Window_c* msg_p, GAME* game) { - const f32 max = 18.0f; + if (msg_p->timer < 18.0f) { + f32 scale; - if (msg_p->timer < max) { - f32 scale; - - msg_p->timer += 1.0f; - scale = 1.0f - get_percent_forAccelBrake(msg_p->timer, 0.0f, max, 0.0f, 0.0f); - msg_p->window_scale = scale; - msg_p->text_scale = scale; - return FALSE; - } - else { - msg_p->window_scale = 0.0f; - msg_p->text_scale = 0.0f; - msg_p->timer = 0.0f; - return TRUE; - } + msg_p->timer += 1.0f; + scale = 1.0f - get_percent_forAccelBrake(msg_p->timer, 0.0f, 18.0f, 0.0f, 0.0f); + msg_p->window_scale = scale; + msg_p->text_scale = scale; + return FALSE; + } else { + msg_p->window_scale = 0.0f; + msg_p->text_scale = 0.0f; + msg_p->timer = 0.0f; + return TRUE; + } } static void mMsg_request_main_index_fromDisappear(mMsg_Window_c* msg_p, int scale_done_flag) { - if (scale_done_flag) { - mMsg_Change_request_main_index(msg_p, mMsg_INDEX_HIDE, 5); - } + if (scale_done_flag) { + mMsg_Change_request_main_index(msg_p, mMsg_INDEX_HIDE, 5); + } } static void mMsg_Main_Disappear(mMsg_Window_c* msg_p, GAME* game) { - int scaling_done_flag = mMsg_Main_Disappear_SetScale(msg_p, game); - mMsg_request_main_index_fromDisappear(msg_p, scaling_done_flag); - mMsg_MainSetup_Window(msg_p, game); + int scaling_done_flag = mMsg_Main_Disappear_SetScale(msg_p, game); + mMsg_request_main_index_fromDisappear(msg_p, scaling_done_flag); + mMsg_MainSetup_Window(msg_p, game); } static void mMsg_MainSetup_Disappear(mMsg_Window_c* msg_p, GAME* game) { - mMsg_sound_spec_change_scene(msg_p); - msg_p->main_index = mMsg_INDEX_DISAPPEAR; - msg_p->draw_flag = TRUE; - msg_p->window_scale = 1.0f; - msg_p->text_scale = 1.0f; - msg_p->timer = 0.0f; - msg_p->show_continue_button = FALSE; + mMsg_sound_spec_change_scene(msg_p); + msg_p->main_index = mMsg_INDEX_DISAPPEAR; + msg_p->draw_flag = TRUE; + msg_p->window_scale = 1.0f; + msg_p->text_scale = 1.0f; + msg_p->timer = 0.0f; + msg_p->show_continue_button = FALSE; - if (mDemo_Get_use_zoom_sound()) { - if (mDemo_Get_camera() == FALSE) { - mMsg_sound_ZOOMDOWN_SHORT(msg_p); + if (mDemo_Get_use_zoom_sound()) { + if (mDemo_Get_camera() == FALSE) { + mMsg_sound_ZOOMDOWN_SHORT(msg_p); + } else { + mMsg_sound_ZOOMDOWN_LONG(msg_p); + } } - else { - mMsg_sound_ZOOMDOWN_LONG(msg_p); - } - } - msg_p->requested_main_index = -1; - msg_p->requested_priority = 4; + msg_p->requested_main_index = -1; + msg_p->requested_priority = 4; } diff --git a/src/m_museum.c b/src/m_museum.c index 7ee06e1b..5d8d10fd 100644 --- a/src/m_museum.c +++ b/src/m_museum.c @@ -12,666 +12,653 @@ #include "m_random_field_h.h" #include "m_common_data.h" -static u8 l_museum_name_str[PLAYER_NAME_LEN] = { CHAR_M, CHAR_u, CHAR_s, CHAR_e, CHAR_u, CHAR_m, CHAR_SPACE, CHAR_SPACE }; /* "Museum " */ +static u8 l_museum_name_str[PLAYER_NAME_LEN] = { + CHAR_M, CHAR_u, CHAR_s, CHAR_e, CHAR_u, CHAR_m, CHAR_SPACE, CHAR_SPACE +}; /* "Museum " */ static u8 present_name[mIN_ITEM_NAME_LEN]; /* TODO: reversed bss order */ static Mail_c l_mmsm_mail; extern void mMsm_ClearRecord(mMsm_record_c* record) { - bzero(record, sizeof(mMsm_record_c)); + bzero(record, sizeof(mMsm_record_c)); } extern void mMsm_GetMuseumMailName(Mail_nm_c* name) { - mPr_ClearPersonalID(&name->personalID); - mPr_CopyPlayerName(name->personalID.player_name, l_museum_name_str); - name->type = mMl_NAME_TYPE_MUSEUM; + mPr_ClearPersonalID(&name->personalID); + mPr_CopyPlayerName(name->personalID.player_name, l_museum_name_str); + name->type = mMl_NAME_TYPE_MUSEUM; } static void mMsm_OrderInformationMail() { - Private_c* priv = Save_Get(private); - int i; + Private_c* priv = Save_Get(private_data); + int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && mPr_CheckMuseumAddress(priv) == FALSE) { - priv->museum_record.send_info_mail = TRUE; + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && mPr_CheckMuseumAddress(priv) == FALSE) { + priv->museum_record.send_info_mail = TRUE; + } + + priv++; } - - priv++; - } } extern void mMsm_SendInformationMail() { - Private_c* priv = Save_Get(private); - int i; + Private_c* priv = Save_Get(private_data); + int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && mPr_CheckMuseumInfoMail(priv)) { - if (mMl_send_mail_box(&priv->player_ID, i, &l_mmsm_mail, EMPTY_NO, ITM_PAPER24, mMl_MUSEUM_INFO_MAIL_NO, l_museum_name_str, mMl_DATA2) == TRUE) { - priv->museum_record.contacted = TRUE; - priv->museum_record.send_info_mail = FALSE; - } + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && mPr_CheckMuseumInfoMail(priv)) { + if (mMl_send_mail_box(&priv->player_ID, i, &l_mmsm_mail, EMPTY_NO, ITM_PAPER24, mMl_MUSEUM_INFO_MAIL_NO, + l_museum_name_str, mMl_DATA2) == TRUE) { + priv->museum_record.contacted = TRUE; + priv->museum_record.send_info_mail = FALSE; + } + } + + priv++; } - - priv++; - } } static void mMsm_GetFossil(mActor_name_t* fossil) { - static int hit_table[mMsm_FOSSIL_TYPE_NUM] = { FALSE, TRUE }; + static int hit_table[mMsm_FOSSIL_TYPE_NUM] = { FALSE, TRUE }; - *fossil = mSP_RandomOneFossilSelect(hit_table[RANDOM(mMsm_FOSSIL_TYPE_NUM)]); + *fossil = mSP_RandomOneFossilSelect(hit_table[RANDOM(mMsm_FOSSIL_TYPE_NUM)]); } static int mMsm_GetFossilMailNo(mActor_name_t fossil) { - static int mail_no_table[25] = { - 0x10E, 0x110, 0x10F, 0x111, - 0x113, 0x112, 0x114, 0x116, - 0x115, 0x117, 0x119, 0x118, - 0x11A, 0x11B, 0x11C, 0x11D, - 0x11E, 0x11F, 0x120, 0x121, - 0x126, 0x125, 0x123, 0x124, - 0x122 - }; + static int mail_no_table[25] = { 0x10E, 0x110, 0x10F, 0x111, 0x113, 0x112, 0x114, 0x116, 0x115, + 0x117, 0x119, 0x118, 0x11A, 0x11B, 0x11C, 0x11D, 0x11E, 0x11F, + 0x120, 0x121, 0x126, 0x125, 0x123, 0x124, 0x122 }; - int type = 0; // invalid item - - if (fossil >= FTR_DINO_TRICERA_SKULL && fossil <= FTR_DINO_TRILOBITE_WEST) { - type = 1; // valid fossil - } + int type = 0; // invalid item - return mail_no_table[type != 0 ? (fossil - FTR_DINO_TRICERA_SKULL) >> 2 : 0]; + if (fossil >= FTR_DINO_TRICERA_SKULL && fossil <= FTR_DINO_TRILOBITE_WEST) { + type = 1; // valid fossil + } + + return mail_no_table[type != 0 ? (fossil - FTR_DINO_TRICERA_SKULL) >> 2 : 0]; } static void mMsm_GetRemailAddIdx(int* add, int* shift, int idx) { - *add = (idx << 2) / 8; - *shift = idx - (*add * 2); + *add = (idx << 2) / 8; + *shift = idx - (*add * 2); } static int mMsm_Idx2RemailKind(mMsm_remail_info_c* remail_info, int idx) { - int kind = -1; - int add = 0; - int shift = 0; + int kind = -1; + int add = 0; + int shift = 0; - if (remail_info != NULL && idx >= 0 && idx < mMsm_REMAIL_SLOTS) { - mMsm_GetRemailAddIdx(&add, &shift, idx); - kind = (remail_info->types[add] >> (shift << 2)) & 7; - } + if (remail_info != NULL && idx >= 0 && idx < mMsm_REMAIL_SLOTS) { + mMsm_GetRemailAddIdx(&add, &shift, idx); + kind = (remail_info->types[add] >> (shift << 2)) & 7; + } - return kind; + return kind; } static int mMsm_GetRemailFreeIdx(mMsm_remail_info_c* remail_info) { - int idx = -1; + int idx = -1; - if (remail_info != NULL) { - int i; + if (remail_info != NULL) { + int i; - for (i = 0; i < mMsm_REMAIL_SLOTS; i++) { - int kind = mMsm_Idx2RemailKind(remail_info, i); - - if (kind == mMsm_REMAIL_KIND_CLEAR || kind >= mMsm_REMAIL_KIND_NUM) { - idx = i; - break; - } + for (i = 0; i < mMsm_REMAIL_SLOTS; i++) { + int kind = mMsm_Idx2RemailKind(remail_info, i); + + if (kind == mMsm_REMAIL_KIND_CLEAR || kind >= mMsm_REMAIL_KIND_NUM) { + idx = i; + break; + } + } } - } - return idx; + return idx; } static void mMsm_Idx2SetRemailInfo(mMsm_remail_info_c* remail_info, int idx, int remail_type, mActor_name_t item_no) { - int slot_idx = 0; - int nibble = 0; + int slot_idx = 0; + int nibble = 0; - if (remail_info != NULL && idx >= 0 && idx < mMsm_REMAIL_SLOTS) { - int i; - - mMsm_GetRemailAddIdx(&slot_idx, &nibble, idx); - i = slot_idx; + if (remail_info != NULL && idx >= 0 && idx < mMsm_REMAIL_SLOTS) { + int i; - if (nibble == 0) { - u8 raw = remail_info->types[i]; - remail_info->types[i] = (raw & 0xF0) | remail_type & 7; + mMsm_GetRemailAddIdx(&slot_idx, &nibble, idx); + i = slot_idx; + + if (nibble == 0) { + u8 raw = remail_info->types[i]; + remail_info->types[i] = (raw & 0xF0) | remail_type & 7; + } else { + u8 raw = remail_info->types[i]; + remail_info->types[i] = (raw & 0x0F) | (remail_type & 7) << 4; + } + + remail_info->items[idx] = item_no; } - else { - u8 raw = remail_info->types[i]; - remail_info->types[i] = (raw & 0x0F) | (remail_type & 7) << 4; - } - - remail_info->items[idx] = item_no; - } } static void mMsm_Idx2ClearRemailInfo(mMsm_remail_info_c* remail_info, int idx) { - mMsm_Idx2SetRemailInfo(remail_info, idx, mMsm_REMAIL_KIND_CLEAR, EMPTY_NO); + mMsm_Idx2SetRemailInfo(remail_info, idx, mMsm_REMAIL_KIND_CLEAR, EMPTY_NO); } static void mMsm_PushRemailInfo(mMsm_remail_info_c* remail_info) { - int active = TRUE; + int active = TRUE; - if (remail_info != NULL) { - while (active == TRUE) { - int first_free_idx; - - active = FALSE; - first_free_idx = mMsm_GetRemailFreeIdx(remail_info); + if (remail_info != NULL) { + while (active == TRUE) { + int first_free_idx; - if (first_free_idx != -1) { - int used_slot_idx = first_free_idx + 1; + active = FALSE; + first_free_idx = mMsm_GetRemailFreeIdx(remail_info); - /* Count up until we've found the first used slot or reach the end */ - while (used_slot_idx < mMsm_REMAIL_SLOTS) { - int remail_type = mMsm_Idx2RemailKind(remail_info, used_slot_idx); + if (first_free_idx != -1) { + int used_slot_idx = first_free_idx + 1; - if (remail_type > mMsm_REMAIL_KIND_CLEAR && remail_type < mMsm_REMAIL_KIND_NUM) { - mMsm_Idx2SetRemailInfo(remail_info, first_free_idx, remail_type, remail_info->items[used_slot_idx]); - mMsm_Idx2ClearRemailInfo(remail_info, used_slot_idx); - active = TRUE; /* Continue searching */ - break; - } + /* Count up until we've found the first used slot or reach the end */ + while (used_slot_idx < mMsm_REMAIL_SLOTS) { + int remail_type = mMsm_Idx2RemailKind(remail_info, used_slot_idx); - used_slot_idx++; + if (remail_type > mMsm_REMAIL_KIND_CLEAR && remail_type < mMsm_REMAIL_KIND_NUM) { + mMsm_Idx2SetRemailInfo(remail_info, first_free_idx, remail_type, + remail_info->items[used_slot_idx]); + mMsm_Idx2ClearRemailInfo(remail_info, used_slot_idx); + active = TRUE; /* Continue searching */ + break; + } + + used_slot_idx++; + } + } } - } } - } } static void mMsm_SetRemailInfo(mMsm_remail_info_c* remail_info, Private_c* priv, mActor_name_t item) { - int kind = mMsm_REMAIL_KIND_CLEAR; + int kind = mMsm_REMAIL_KIND_CLEAR; - if (item != EMPTY_NO) { - int free_idx; - int private_idx = mPr_GetPrivateIdx(&priv->player_ID); + if (item != EMPTY_NO) { + int free_idx; + int private_idx = mPr_GetPrivateIdx(&priv->player_ID); - if (private_idx == -1) { - kind = mMsm_REMAIL_KIND_FOREIGNER; - } - else { - switch (mMmd_GetDisplayInfo(item)) { - case mMmd_DISPLAY_CANNOT_DONATE: - { - kind = mMsm_REMAIL_KIND_CANNOT_DONATE; - break; + if (private_idx == -1) { + kind = mMsm_REMAIL_KIND_FOREIGNER; + } else { + switch (mMmd_GetDisplayInfo(item)) { + case mMmd_DISPLAY_CANNOT_DONATE: { + kind = mMsm_REMAIL_KIND_CANNOT_DONATE; + break; + } + + case mMmd_DISPLAY_CAN_DONATE: { + kind = mMsm_REMAIL_KIND_DONATED; + mMmd_RequestMuseumDisplay(item); + break; + } + + case mMmd_DISPLAY_ALREADY_DONATED: { + kind = mMsm_REMAIL_KIND_ALREADY_DONATED; + break; + } + } } - case mMmd_DISPLAY_CAN_DONATE: - { - kind = mMsm_REMAIL_KIND_DONATED; - mMmd_RequestMuseumDisplay(item); - break; + free_idx = mMsm_GetRemailFreeIdx(remail_info); + if (free_idx != -1) { + mMsm_Idx2SetRemailInfo(remail_info, free_idx, kind, item); } - - case mMmd_DISPLAY_ALREADY_DONATED: - { - kind = mMsm_REMAIL_KIND_ALREADY_DONATED; - break; - } - } } - - free_idx = mMsm_GetRemailFreeIdx(remail_info); - if (free_idx != -1) { - mMsm_Idx2SetRemailInfo(remail_info, free_idx, kind, item); - } - } } static void mMsm_SendResultMail() { - static int remail_no_table[mMsm_REMAIL_KIND_NUM - 1] = { 0x22D, 0x22B, 0x22C, 0x22E }; - //static u8 present_name[mIN_ITEM_NAME_LEN]; /* TODO: reversed bss order */ + static int remail_no_table[mMsm_REMAIL_KIND_NUM - 1] = { 0x22D, 0x22B, 0x22C, 0x22E }; + // static u8 present_name[mIN_ITEM_NAME_LEN]; /* TODO: reversed bss order */ - int send_num[PLAYER_NUM]; - Private_c* priv_p = Save_Get(private); - Private_c* priv = priv_p; - mActor_name_t present; - u8 send_flags = 0b1111; - mActor_name_t fossil = EMPTY_NO; - mMsm_remail_info_c* remail_info; - int idx; - int i; + int send_num[PLAYER_NUM]; + Private_c* priv_p = Save_Get(private_data); + Private_c* priv = priv_p; + mActor_name_t present; + u8 send_flags = 0b1111; + mActor_name_t fossil = EMPTY_NO; + mMsm_remail_info_c* remail_info; + int idx; + int i; - bzero(send_num, PLAYER_NUM * sizeof(int)); + bzero(send_num, PLAYER_NUM * sizeof(int)); - /* Send 'remail' info */ - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { - mMsm_record_c* record = &priv->museum_record; - if (record->contacted == TRUE) { - int landname_len; - mActor_name_t item; - - remail_info = &record->remail_info; - for (idx = 0; idx < mMsm_REMAIL_SLOTS; idx++) { - int remail_kind; - - present = EMPTY_NO; - remail_kind = mMsm_Idx2RemailKind(remail_info, idx); - - if (remail_kind <= mMsm_REMAIL_KIND_CLEAR || remail_kind >= mMsm_REMAIL_KIND_NUM) { - break; /* Reached end of populated remail slots */ - } - - landname_len = mMsg_Get_Length_String(Save_Get(land_info.name), LAND_NAME_SIZE); - mHandbill_Set_free_str(mHandbill_FREE_STR0, Save_Get(land_info.name), landname_len); - - item = remail_info->items[idx]; - if (item != EMPTY_NO) { - mIN_copy_name_str(present_name, item); - mHandbill_Set_free_str(mHandbill_FREE_STR1, present_name, mIN_ITEM_NAME_LEN); - - if (remail_kind != mMsm_REMAIL_KIND_DONATED) { - present = remail_info->items[idx]; - } - } - - if (mMl_send_mail(&priv->player_ID, i, present, ITM_PAPER24, remail_no_table[remail_kind - 1], l_museum_name_str, mMl_DATA2)) { - mMsm_Idx2ClearRemailInfo(remail_info, idx); - send_num[i]++; - - if (send_num[i] >= mMsm_MAX_MAIL) { - send_flags &= ~(1 << i); - break; - } - } - else { - /* If attempted mail was unable to be received, remove this player from the send pool and stop processing */ - send_flags &= ~(1 << i); - break; - } - } - - mMsm_PushRemailInfo(remail_info); - } - else { - send_flags &= ~(1 << i); - } - } - else { - send_flags &= ~(1 << i); - } - - priv++; - } - - /* Send fossil mail */ - while (send_flags != 0) { - priv = priv_p; + /* Send 'remail' info */ for (i = 0; i < PLAYER_NUM; i++) { - if (((send_flags >> i) & 1) == 1) { - mMsm_record_c* record = &priv->museum_record; - if (record->stored_fossil_num != 0) { - int mail_no; - - mMsm_GetFossil(&fossil); - mail_no = mMsm_GetFossilMailNo(fossil); + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { + mMsm_record_c* record = &priv->museum_record; + if (record->contacted == TRUE) { + int landname_len; + mActor_name_t item; - if (mMl_send_mail(&priv->player_ID, i, fossil, ITM_PAPER24, mail_no, l_museum_name_str, mMl_DATA2)) { - record->stored_fossil_num--; - send_num[i]++; + remail_info = &record->remail_info; + for (idx = 0; idx < mMsm_REMAIL_SLOTS; idx++) { + int remail_kind; - if (send_num[i] >= mMsm_MAX_MAIL) { - send_flags &= ~(1 << i); + present = EMPTY_NO; + remail_kind = mMsm_Idx2RemailKind(remail_info, idx); + + if (remail_kind <= mMsm_REMAIL_KIND_CLEAR || remail_kind >= mMsm_REMAIL_KIND_NUM) { + break; /* Reached end of populated remail slots */ + } + + landname_len = mMsg_Get_Length_String(Save_Get(land_info.name), LAND_NAME_SIZE); + mHandbill_Set_free_str(mHandbill_FREE_STR0, Save_Get(land_info.name), landname_len); + + item = remail_info->items[idx]; + if (item != EMPTY_NO) { + mIN_copy_name_str(present_name, item); + mHandbill_Set_free_str(mHandbill_FREE_STR1, present_name, mIN_ITEM_NAME_LEN); + + if (remail_kind != mMsm_REMAIL_KIND_DONATED) { + present = remail_info->items[idx]; + } + } + + if (mMl_send_mail(&priv->player_ID, i, present, ITM_PAPER24, remail_no_table[remail_kind - 1], + l_museum_name_str, mMl_DATA2)) { + mMsm_Idx2ClearRemailInfo(remail_info, idx); + send_num[i]++; + + if (send_num[i] >= mMsm_MAX_MAIL) { + send_flags &= ~(1 << i); + break; + } + } else { + /* If attempted mail was unable to be received, remove this player from the send pool and stop + * processing */ + send_flags &= ~(1 << i); + break; + } + } + + mMsm_PushRemailInfo(remail_info); + } else { + send_flags &= ~(1 << i); } - } - else { + } else { send_flags &= ~(1 << i); - } } - else { - send_flags &= ~(1 << i); - } - } - priv++; + priv++; + } + + /* Send fossil mail */ + while (send_flags != 0) { + priv = priv_p; + for (i = 0; i < PLAYER_NUM; i++) { + if (((send_flags >> i) & 1) == 1) { + mMsm_record_c* record = &priv->museum_record; + if (record->stored_fossil_num != 0) { + int mail_no; + + mMsm_GetFossil(&fossil); + mail_no = mMsm_GetFossilMailNo(fossil); + + if (mMl_send_mail(&priv->player_ID, i, fossil, ITM_PAPER24, mail_no, l_museum_name_str, + mMl_DATA2)) { + record->stored_fossil_num--; + send_num[i]++; + + if (send_num[i] >= mMsm_MAX_MAIL) { + send_flags &= ~(1 << i); + } + } else { + send_flags &= ~(1 << i); + } + } else { + send_flags &= ~(1 << i); + } + } + + priv++; + } } - } } extern void mMsm_SendMuseumMail(Mail_c* mail) { - Mail_nm_c* sender_name; - Private_c* priv = NULL; + Mail_nm_c* sender_name; + Private_c* priv = NULL; - if (mail != NULL && Common_Get(now_private) != NULL && mail->header.sender.type == mMl_NAME_TYPE_PLAYER) { - sender_name = &mail->header.sender; + if (mail != NULL && Common_Get(now_private) != NULL && mail->header.sender.type == mMl_NAME_TYPE_PLAYER) { + sender_name = &mail->header.sender; - if (mPr_NullCheckPersonalID(&sender_name->personalID) == FALSE) { - if (mPr_CheckCmpPersonalID(&sender_name->personalID, &Common_Get(now_private)->player_ID) == TRUE) { - priv = Common_Get(now_private); - } - else { - int priv_idx = mPr_GetPrivateIdx(&sender_name->personalID); - - if (priv_idx != -1) { - priv = Save_Get(private + priv_idx); - } - } + if (mPr_NullCheckPersonalID(&sender_name->personalID) == FALSE) { + if (mPr_CheckCmpPersonalID(&sender_name->personalID, &Common_Get(now_private)->player_ID) == TRUE) { + priv = Common_Get(now_private); + } else { + int priv_idx = mPr_GetPrivateIdx(&sender_name->personalID); - if (priv != NULL) { - mActor_name_t present = mail->present; - - if (present != EMPTY_NO && present != RSV_NO) { - mMsm_record_c* record = &priv->museum_record; - - if (present == ITM_FOSSIL) { - u8 stored_fossils = record->stored_fossil_num; - - if (stored_fossils < mMsm_REMAIL_SLOTS) { - record->stored_fossil_num = stored_fossils + 1; + if (priv_idx != -1) { + priv = Save_Get(private_data + priv_idx); + } + } + + if (priv != NULL) { + mActor_name_t present = mail->present; + + if (present != EMPTY_NO && present != RSV_NO) { + mMsm_record_c* record = &priv->museum_record; + + if (present == ITM_FOSSIL) { + u8 stored_fossils = record->stored_fossil_num; + + if (stored_fossils < mMsm_REMAIL_SLOTS) { + record->stored_fossil_num = stored_fossils + 1; + } + } else { + mMsm_SetRemailInfo(&record->remail_info, priv, present); + record->remail_pending = TRUE; + } + } } - } - else { - mMsm_SetRemailInfo(&record->remail_info, priv, present); - record->remail_pending = TRUE; - } } - } } - } } extern int mMsm_GetDepositAbleNum(mActor_name_t* fg_items, mCoBG_Collision_u* col_data) { - int depositable_num = 0; - int i; + int depositable_num = 0; + int i; - if (fg_items != NULL && col_data != NULL) { - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (*fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { - depositable_num++; - } + if (fg_items != NULL && col_data != NULL) { + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (*fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { + depositable_num++; + } - fg_items++; - col_data++; + fg_items++; + col_data++; + } } - } - return depositable_num; + return depositable_num; } static int mMsm_GetDepositAbleNum_cancel(mActor_name_t* fg_items, mCoBG_Collision_u* col_data, u16* cancel_ut) { - int depositable_num = 0; - int ut_z; + int depositable_num = 0; + int ut_z; + + if (fg_items != NULL && col_data != NULL) { + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + int ut_x; + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if ((((*cancel_ut) >> ut_x) & 1) != TRUE && *fg_items == EMPTY_NO && + mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { + depositable_num++; + } + + fg_items++; + col_data++; + } + + cancel_ut++; + } + } + + return depositable_num; +} + +extern void mMsm_DepositItemBlock_cancel(mActor_name_t* fg_items, mActor_name_t deposit_item, + mCoBG_Collision_u* col_data, u16* deposit, u16* cancel_ut, u8 valid_ut_count) { + int deposit_idx = RANDOM(valid_ut_count); + int ut_z; - if (fg_items != NULL && col_data != NULL) { for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - int ut_x; - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if ((((*cancel_ut) >> ut_x) & 1) != TRUE && *fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { - depositable_num++; + int ut_x; + + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if ((((*cancel_ut) >> ut_x) & 1) != TRUE && *fg_items == EMPTY_NO && + mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { + if (deposit_idx == 0) { + *fg_items = deposit_item; + ut_z = UT_Z_NUM; // break out of outer loop + *deposit |= (1 << ut_x); + break; + } else { + deposit_idx--; + } + } + + fg_items++; + col_data++; + } + + deposit++; + cancel_ut++; + } +} + +extern void mMsm_DepositItemBlock(mActor_name_t* fg_items, mActor_name_t item, int block_x, int block_z, u16* deposit, + u8 valid_ut_count) { + mCoBG_Collision_u* col_data = mFI_GetBkNum2ColTop(block_x, block_z); + int deposit_idx = RANDOM(valid_ut_count); + int ut; + + for (ut = 0; ut < UT_TOTAL_NUM; ut++) { + if (*fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { + if (deposit_idx == 0) { + int ut_x = ut & (UT_X_NUM - 1); + int ut_z = ut >> 4; + + if (item != ITM_PITFALL) { + *fg_items = item; + deposit[ut_z] |= (1 << ut_x); + } else { + int hole_num = mCoBG_BnumUnum2HoleNumber(block_x, block_z, ut_x, ut_z); + + if (hole_num != -1) { + *fg_items = BURIED_PITFALL_HOLE_START + hole_num; + } + } + + break; + } else { + deposit_idx--; + } } fg_items++; col_data++; - } - - cancel_ut++; } - } - - return depositable_num; } -extern void mMsm_DepositItemBlock_cancel(mActor_name_t* fg_items, mActor_name_t deposit_item, mCoBG_Collision_u* col_data, u16* deposit, u16* cancel_ut, u8 valid_ut_count) { - int deposit_idx = RANDOM(valid_ut_count); - int ut_z; - - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - int ut_x; - - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if ((((*cancel_ut) >> ut_x) & 1) != TRUE && *fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { - if (deposit_idx == 0) { - *fg_items = deposit_item; - ut_z = UT_Z_NUM; // break out of outer loop - *deposit |= (1 << ut_x); - break; - } - else { - deposit_idx--; - } - } - - fg_items++; - col_data++; - } - - deposit++; - cancel_ut++; - } -} - -extern void mMsm_DepositItemBlock(mActor_name_t* fg_items, mActor_name_t item, int block_x, int block_z, u16* deposit, u8 valid_ut_count) { - mCoBG_Collision_u* col_data = mFI_GetBkNum2ColTop(block_x, block_z); - int deposit_idx = RANDOM(valid_ut_count); - int ut; - - for (ut = 0; ut < UT_TOTAL_NUM; ut++) { - if (*fg_items == EMPTY_NO && mCoBG_CheckHole_OrgAttr(col_data->data.unit_attribute)) { - if (deposit_idx == 0) { - int ut_x = ut & (UT_X_NUM - 1); - int ut_z = ut >> 4; - - if (item != ITM_PITFALL) { - *fg_items = item; - deposit[ut_z] |= (1 << ut_x); - } - else { - int hole_num = mCoBG_BnumUnum2HoleNumber(block_x, block_z, ut_x, ut_z); - - if (hole_num != -1) { - *fg_items = BURIED_PITFALL_START + hole_num; - } - } - - break; - } - else { - deposit_idx--; - } - } - - fg_items++; - col_data++; - } -} - -static void mMsm_DepositFossilBlock(mActor_name_t* fg_items, mCoBG_Collision_u* col_data, u16* deposit, u16* cancel, u8 valid_ut_count) { - mMsm_DepositItemBlock_cancel(fg_items, ITM_FOSSIL, col_data, deposit, cancel, valid_ut_count); +static void mMsm_DepositFossilBlock(mActor_name_t* fg_items, mCoBG_Collision_u* col_data, u16* deposit, u16* cancel, + u8 valid_ut_count) { + mMsm_DepositItemBlock_cancel(fg_items, ITM_FOSSIL, col_data, deposit, cancel, valid_ut_count); } static void mMsm_DepositFossilBlockLine(int line, u16* cancel_ut) { - /* NOTE: line is a column (of Z-acres, for example the 1 column) */ + /* NOTE: line is a column (of Z-acres, for example the 1 column) */ - int depositable_acres; - u8 depositable_line[FG_BLOCK_Z_NUM]; - u16* cancel_ut_p; - int block_x = line + 1; - int block_z; + int depositable_acres; + u8 depositable_line[FG_BLOCK_Z_NUM]; + u16* cancel_ut_p; + int block_x = line + 1; + int block_z; - cancel_ut_p = cancel_ut; - depositable_acres = 0; - bzero(depositable_line, FG_BLOCK_Z_NUM * sizeof(u8)); - - for (block_z = 0; block_z < FG_BLOCK_Z_NUM; block_z++) { - int bad_acre = mFI_CheckBlockKind_OR( - block_x, block_z + 1, - mRF_BLOCKKIND_PLAYER | mRF_BLOCKKIND_SHRINE | mRF_BLOCKKIND_STATION | mRF_BLOCKKIND_POOL | mRF_BLOCKKIND_DUMP - ); - - if (bad_acre == FALSE) { - depositable_line[block_z] = mMsm_GetDepositAbleNum_cancel(Save_Get(fg[block_z][line]).items[0], mFI_GetBkNum2ColTop(block_x, block_z + 1), cancel_ut); - - if (depositable_line[block_z] != 0) { - depositable_acres++; - } - } - - cancel_ut += UT_Z_NUM * FG_BLOCK_X_NUM; - } - - if (depositable_acres > 0) { - int selected_z_acre; - - cancel_ut = cancel_ut_p; - selected_z_acre = RANDOM(depositable_acres); + cancel_ut_p = cancel_ut; + depositable_acres = 0; + bzero(depositable_line, FG_BLOCK_Z_NUM * sizeof(u8)); for (block_z = 0; block_z < FG_BLOCK_Z_NUM; block_z++) { - if (depositable_line[block_z] != 0) { - if (selected_z_acre == 0) { - mMsm_DepositFossilBlock(Save_Get(fg[block_z][line]).items[0], mFI_GetBkNum2ColTop(block_x, block_z + 1), Save_Get(deposit[line + block_z * FG_BLOCK_X_NUM]), cancel_ut, depositable_line[block_z]); - return; - } - else { - selected_z_acre--; - } - } + int bad_acre = mFI_CheckBlockKind_OR(block_x, block_z + 1, + mRF_BLOCKKIND_PLAYER | mRF_BLOCKKIND_SHRINE | mRF_BLOCKKIND_STATION | + mRF_BLOCKKIND_POOL | mRF_BLOCKKIND_DUMP); - cancel_ut += UT_Z_NUM * FG_BLOCK_X_NUM; + if (bad_acre == FALSE) { + depositable_line[block_z] = mMsm_GetDepositAbleNum_cancel( + Save_Get(fg[block_z][line]).items[0], mFI_GetBkNum2ColTop(block_x, block_z + 1), cancel_ut); + + if (depositable_line[block_z] != 0) { + depositable_acres++; + } + } + + cancel_ut += UT_Z_NUM * FG_BLOCK_X_NUM; + } + + if (depositable_acres > 0) { + int selected_z_acre; + + cancel_ut = cancel_ut_p; + selected_z_acre = RANDOM(depositable_acres); + + for (block_z = 0; block_z < FG_BLOCK_Z_NUM; block_z++) { + if (depositable_line[block_z] != 0) { + if (selected_z_acre == 0) { + mMsm_DepositFossilBlock( + Save_Get(fg[block_z][line]).items[0], mFI_GetBkNum2ColTop(block_x, block_z + 1), + Save_Get(deposit[line + block_z * FG_BLOCK_X_NUM]), cancel_ut, depositable_line[block_z]); + return; + } else { + selected_z_acre--; + } + } + + cancel_ut += UT_Z_NUM * FG_BLOCK_X_NUM; + } } - } } extern int mMsm_RecordDepositFossil(u8* record, mActor_name_t item, int block_x) { - int res = FALSE; + int res = FALSE; - if (item == ITM_FOSSIL) { - *record |= (1 << block_x); - res = TRUE; - } + if (item == ITM_FOSSIL) { + *record |= (1 << block_x); + res = TRUE; + } - return res; + return res; } extern u8 mMsm_GetDepositBlockNum(u8 record) { - u8 deposit_block_num = 0; - int block_x; + u8 deposit_block_num = 0; + int block_x; - for (block_x = 0; block_x < FG_BLOCK_X_NUM; block_x++) { - if (((record >> (block_x + 1)) & 1) == TRUE) { - deposit_block_num++; + for (block_x = 0; block_x < FG_BLOCK_X_NUM; block_x++) { + if (((record >> (block_x + 1)) & 1) == TRUE) { + deposit_block_num++; + } } - } - return deposit_block_num; + return deposit_block_num; } extern void mMsm_DepositFossil(u8 deposit_record, int fossil_count, u16* cancel_ut, int send_order_info) { - int deposit_count; - u16* cancel_ut_p = cancel_ut; - u8 already_deposited = mMsm_GetDepositBlockNum(deposit_record); - u8 available_blocks; - - if (fossil_count < mMsm_DEPOSIT_FOSSIL_MAX) { - deposit_count = mMsm_DEPOSIT_FOSSIL_MAX - fossil_count; - available_blocks = FG_BLOCK_X_NUM - already_deposited; + int deposit_count; + u16* cancel_ut_p = cancel_ut; + u8 already_deposited = mMsm_GetDepositBlockNum(deposit_record); + u8 available_blocks; - while (deposit_count > 0 && available_blocks != 0) { - int selected_row; - int block_x; + if (fossil_count < mMsm_DEPOSIT_FOSSIL_MAX) { + deposit_count = mMsm_DEPOSIT_FOSSIL_MAX - fossil_count; + available_blocks = FG_BLOCK_X_NUM - already_deposited; - cancel_ut = cancel_ut_p; - selected_row = RANDOM(available_blocks); - - for (block_x = 0; block_x < FG_BLOCK_X_NUM; block_x++) { - if (((deposit_record >> (block_x + 1)) & 1) == FALSE) { - if (selected_row <= 0) { - mMsm_DepositFossilBlockLine(block_x, cancel_ut); - available_blocks--; - deposit_record |= (1 << (block_x + 1)); - break; - } - else { - selected_row--; - } + while (deposit_count > 0 && available_blocks != 0) { + int selected_row; + int block_x; + + cancel_ut = cancel_ut_p; + selected_row = RANDOM(available_blocks); + + for (block_x = 0; block_x < FG_BLOCK_X_NUM; block_x++) { + if (((deposit_record >> (block_x + 1)) & 1) == FALSE) { + if (selected_row <= 0) { + mMsm_DepositFossilBlockLine(block_x, cancel_ut); + available_blocks--; + deposit_record |= (1 << (block_x + 1)); + break; + } else { + selected_row--; + } + } + + cancel_ut += UT_Z_NUM; + } + + deposit_count--; } - cancel_ut += UT_Z_NUM; - } - - deposit_count--; + if (send_order_info) { + mMsm_OrderInformationMail(); + } } - if (send_order_info) { - mMsm_OrderInformationMail(); - } - } - - mMsm_SendResultMail(); - mMsm_SendInformationMail(); + mMsm_SendResultMail(); + mMsm_SendInformationMail(); } static void mMsm_SetPrivateCompMail(Private_c* priv, int flag) { - if (priv != NULL) { - priv->state_flags |= flag; - } + if (priv != NULL) { + priv->state_flags |= flag; + } } static int mMsm_CheckSendCompMail() { - Private_c* priv = Save_Get(private); - int res = FALSE; - int i; - - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && (priv->state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED)) { - res = TRUE; - break; + Private_c* priv = Save_Get(private_data); + int res = FALSE; + int i; + + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && + (priv->state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED)) { + res = TRUE; + break; + } + + priv++; } - priv++; - } - - return res; + return res; } static void mMsm_SetSendCompMail() { - Private_c* priv = Save_Get(private); - int i; + Private_c* priv = Save_Get(private_data); + int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { - mMsm_SetPrivateCompMail(priv, mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED); + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { + mMsm_SetPrivateCompMail(priv, mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED); + } + + priv++; } - - priv++; - } } extern void mMsm_SetCompMail() { - if ( - mMsm_CheckSendCompMail() == FALSE && - mMmd_CountDisplayedFossil() == mMmd_FOSSIL_NUM && - mMmd_CountDisplayedArt() == mMmd_ART_NUM && - mMmd_CountDisplayedInsect() == mMmd_INSECT_NUM && - mMmd_CountDisplayedFish() == mMmd_FISH_NUM - ) { - mMsm_SetSendCompMail(); - } + if (mMsm_CheckSendCompMail() == FALSE && mMmd_CountDisplayedFossil() == mMmd_FOSSIL_NUM && + mMmd_CountDisplayedArt() == mMmd_ART_NUM && mMmd_CountDisplayedInsect() == mMmd_INSECT_NUM && + mMmd_CountDisplayedFish() == mMmd_FISH_NUM) { + mMsm_SetSendCompMail(); + } } extern void mMsm_SendCompMail() { - Private_c* priv = Save_Get(private); - int state_flags; - int i; + Private_c* priv = Save_Get(private_data); + int state_flags; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - state_flags = priv->state_flags; - if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { - /* Send completion letter & reward if scheduled but not yet received. */ - - if ( - (state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED) != 0 && - (state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED) == 0 - ) { - int land_name_len = mMsg_Get_Length_String(Save_Get(land_info.name), LAND_NAME_SIZE); - - mHandbill_Set_free_str(mHandbill_FREE_STR0, Save_Get(land_info.name), land_name_len); + for (i = 0; i < PLAYER_NUM; i++) { + state_flags = priv->state_flags; + if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { + /* Send completion letter & reward if scheduled but not yet received. */ - if (mMl_send_mail_postoffice(&priv->player_ID, i, FTR_MUSEUM_MODEL, ITM_PAPER24, 0x22F, l_museum_name_str, mMl_DATA2, mMl_TYPE_MAIL) == TRUE) { - mMsm_SetPrivateCompMail(priv, mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED); + if ((state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_SCHEDULED) != 0 && + (state_flags & mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED) == 0) { + int land_name_len = mMsg_Get_Length_String(Save_Get(land_info.name), LAND_NAME_SIZE); + + mHandbill_Set_free_str(mHandbill_FREE_STR0, Save_Get(land_info.name), land_name_len); + + if (mMl_send_mail_postoffice(&priv->player_ID, i, FTR_MUSEUM_MODEL, ITM_PAPER24, 0x22F, + l_museum_name_str, mMl_DATA2, mMl_TYPE_MAIL) == TRUE) { + mMsm_SetPrivateCompMail(priv, mPr_FLAG_MUSEUM_COMP_HANDBILL_RECEIVED); + } + } } - } - } - priv++; - } + priv++; + } } diff --git a/src/m_name_table.c b/src/m_name_table.c index ec73b22d..3be2a062 100644 --- a/src/m_name_table.c +++ b/src/m_name_table.c @@ -315,7 +315,7 @@ extern mActor_name_t bg_item_fg_sub_dig2take_conv(mActor_name_t item) { mActor_name_t dig_item; dig_item = item; - if ((item >= BURIED_PITFALL_START) && (item <= BURIED_PITFALL_END)) { + if ((item >= BURIED_PITFALL_HOLE_START) && (item <= BURIED_PITFALL_HOLE_END)) { dig_item = ITM_PITFALL; } diff --git a/src/m_needlework.c b/src/m_needlework.c index 0d158fc2..e3721607 100644 --- a/src/m_needlework.c +++ b/src/m_needlework.c @@ -9,371 +9,351 @@ /** * @brief Initializes all designs' palette indexes for a player. - * + * * @param player_no The index of the player whose designs will be updated **/ static void mNW_InitMyOriginalPallet(int player_no) { - static u8 pal_table[mPr_ORIGINAL_DESIGN_COUNT] = { - 0, 8, 7, 7, - 0, 0, 0, 0 - }; + static u8 pal_table[mPr_ORIGINAL_DESIGN_COUNT] = { 0, 8, 7, 7, 0, 0, 0, 0 }; - int i; + int i; - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - Save_Set(private[player_no & 3].my_org[i & 7].palette, pal_table[i]); - } + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + Save_Set(private_data[player_no & 3].my_org[i & 7].palette, pal_table[i]); + } } /** * @brief Initializes all designs' names for a player. - * + * * @param player_no The index of the player whose designs will be renamed **/ static void mNW_InitMyOriginalName(int player_no) { - int i; + int i; - player_no &= 3; - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - /* TODO: define for the string index? */ - mString_Load_StringFromRom( - Save_Get(private[player_no].my_org[i & 7].name), - mNW_ORIGINAL_DESIGN_NAME_LEN, - 0x6DF + i - ); - } + player_no &= 3; + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + /* TODO: define for the string index? */ + mString_Load_StringFromRom(Save_Get(private_data[player_no].my_org[i & 7].name), mNW_ORIGINAL_DESIGN_NAME_LEN, + 0x6DF + i); + } } /** * @brief Initializes all designs' textures for a player. - * + * * @param player_no The index of the player whose designs will be updated **/ static void mNW_InitMyOriginalTexture(int player_no) { - int i; + int i; - player_no &= 3; - for (i = 0; i < mNW_DEFAULT_ORIGINAL_TEX_NUM; i++) { - _JW_GetResourceAram( - JW_GetAramAddress(27) + i * mNW_DESIGN_TEX_SIZE, - Save_Get(private[player_no].my_org[i & 7].design.data), - mNW_DESIGN_TEX_SIZE - ); - } + player_no &= 3; + for (i = 0; i < mNW_DEFAULT_ORIGINAL_TEX_NUM; i++) { + _JW_GetResourceAram(JW_GetAramAddress(27) + i * mNW_DESIGN_TEX_SIZE, + Save_Get(private_data[player_no].my_org[i & 7].design.data), mNW_DESIGN_TEX_SIZE); + } } /** * @brief Initializes all designs for all players. **/ extern void mNW_InitMyOriginal() { - int i; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - mNW_InitOneMyOriginal(i); - } + for (i = 0; i < PLAYER_NUM; i++) { + mNW_InitOneMyOriginal(i); + } } /** * @brief Initializes a single player's designs. - * + * * @param player_no The index of the player whose designs will be initialized. **/ extern void mNW_InitOneMyOriginal(int player_no) { - int i; + int i; - mNW_InitMyOriginalPallet(player_no & 3); - mNW_InitMyOriginalName(player_no & 3); - mNW_InitMyOriginalTexture(player_no & 3); + mNW_InitMyOriginalPallet(player_no & 3); + mNW_InitMyOriginalName(player_no & 3); + mNW_InitMyOriginalTexture(player_no & 3); - for (i = mNW_DEFAULT_ORIGINAL_TEX_NUM; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - mNW_InitOriginalData(Save_Get(private[player_no].my_org + (i & 7))); - } + for (i = mNW_DEFAULT_ORIGINAL_TEX_NUM; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + mNW_InitOriginalData(Save_Get(private_data[player_no].my_org + (i & 7))); + } } /** * @brief Copies a default design texture into the supplied buffer. - * + * * @param dst The destination design texture buffer * @param tex_no The index of the texture to retrieve (0-7) **/ static void mNW_CopyNeedleworkDefaultTexture(u8* dst, int tex_no) { - u32 addr = JW_GetAramAddress(28); - _JW_GetResourceAram( - addr + (tex_no & 7) * mNW_DESIGN_TEX_SIZE, - dst, - mNW_DESIGN_TEX_SIZE - ); + u32 addr = JW_GetAramAddress(28); + _JW_GetResourceAram(addr + (tex_no & 7) * mNW_DESIGN_TEX_SIZE, dst, mNW_DESIGN_TEX_SIZE); } /** * @brief Initializes all Able Sisters' designs to their default textures. **/ static void mNW_InitNeedleworkTexture() { - int i; + int i; - for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { - mNW_CopyNeedleworkDefaultTexture(Save_Get(needlework.original_design[i & 7].design.data), i); - } + for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { + mNW_CopyNeedleworkDefaultTexture(Save_Get(needlework.original_design[i & 7].design.data), i); + } } /** * @brief Initializes all Able Sisters' designs to their default palettes. **/ static void mNW_InitNeedleworkPelatteNo() { - static u8 pal_table[mNW_TOTAL_DESIGN_NUM] = { - 7, 1, 10, 3, - 6, 0, 6, 7 - }; + static u8 pal_table[mNW_TOTAL_DESIGN_NUM] = { 7, 1, 10, 3, 6, 0, 6, 7 }; - int i; + int i; - for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { - Save_Set(needlework.original_design[i & 7].palette, pal_table[i]); - } + for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { + Save_Set(needlework.original_design[i & 7].palette, pal_table[i]); + } } /** * @brief Initializes all Able Sisters' designs to their default names. **/ static void mNW_InitNeedleworkTextureName() { - int i; + int i; - for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { - mString_Load_StringFromRom( - Save_Get(needlework.original_design[i & 7].name), - mNW_ORIGINAL_DESIGN_NAME_LEN, - 0x6E7 + i - ); - } + for (i = 0; i < mNW_TOTAL_DESIGN_NUM; i++) { + mString_Load_StringFromRom(Save_Get(needlework.original_design[i & 7].name), mNW_ORIGINAL_DESIGN_NAME_LEN, + 0x6E7 + i); + } } /** * @brief Initializes all Able Sisters' designs to their default data. **/ extern void mNW_InitNeedleworkData() { - mNW_InitNeedleworkTexture(); - mNW_InitNeedleworkPelatteNo(); - mNW_InitNeedleworkTextureName(); + mNW_InitNeedleworkTexture(); + mNW_InitNeedleworkPelatteNo(); + mNW_InitNeedleworkTextureName(); } /** * @brief Converts a design texture from GBA format to GC format. - * + * * @param agb Pointer to the source GBA texture * @param gc Pointer to the destination GC texture **/ extern void mNW_AGB_to_GC_texture(u8* agb, u8* gc) { - int i; + int i; - for (i = 0; i < mNW_DESIGN_TEX_SIZE; i++) { - u8 src = *agb++; - *gc++ = (((src >> 4) & 0xF) | ((src & 0xF) << 4)); - } + for (i = 0; i < mNW_DESIGN_TEX_SIZE; i++) { + u8 src = *agb++; + *gc++ = (((src >> 4) & 0xF) | ((src & 0xF) << 4)); + } } /** * @brief Converts a design texture from GC format to GBA format. - * + * * @param gc Pointer to the source GC texture * @param agb Pointer to the destination GBA texture **/ extern void mNW_GC_to_Agb_texture(u8* gc, u8* agb) { - mNW_AGB_to_GC_texture(gc, agb); + mNW_AGB_to_GC_texture(gc, agb); } /* RGB5A3 color palettes for each pattern palette aligned to 32 bytes */ /* These are aligned to 32 bytes for transfering to-and-from ARAM */ static u16 needlework0_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFCE4A4A), ARGB8_to_RGB5A3(0xFFDE8442), ARGB8_to_RGB5A3(0xFFE7AD18), - ARGB8_to_RGB5A3(0xFFE7C621), ARGB8_to_RGB5A3(0xFFD6DE18), ARGB8_to_RGB5A3(0xFFB5E718), ARGB8_to_RGB5A3(0xFF84D652), - ARGB8_to_RGB5A3(0xFF39C66B), ARGB8_to_RGB5A3(0xFF29ADC6), ARGB8_to_RGB5A3(0xFF427BEF), ARGB8_to_RGB5A3(0xFF6B4AE7), - ARGB8_to_RGB5A3(0xFF945ACE), ARGB8_to_RGB5A3(0xFFBD42B5), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFCE4A4A), ARGB8_to_RGB5A3(0xFFDE8442), ARGB8_to_RGB5A3(0xFFE7AD18), + ARGB8_to_RGB5A3(0xFFE7C621), ARGB8_to_RGB5A3(0xFFD6DE18), ARGB8_to_RGB5A3(0xFFB5E718), ARGB8_to_RGB5A3(0xFF84D652), + ARGB8_to_RGB5A3(0xFF39C66B), ARGB8_to_RGB5A3(0xFF29ADC6), ARGB8_to_RGB5A3(0xFF427BEF), ARGB8_to_RGB5A3(0xFF6B4AE7), + ARGB8_to_RGB5A3(0xFF945ACE), ARGB8_to_RGB5A3(0xFFBD42B5), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework1_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF8C8C), ARGB8_to_RGB5A3(0xFFFFCE84), ARGB8_to_RGB5A3(0xFFFFE75A), - ARGB8_to_RGB5A3(0xFFFFF763), ARGB8_to_RGB5A3(0xFFFFFF84), ARGB8_to_RGB5A3(0xFFDEFF52), ARGB8_to_RGB5A3(0xFFB5FF84), - ARGB8_to_RGB5A3(0xFF7BF7AD), ARGB8_to_RGB5A3(0xFF63E7F7), ARGB8_to_RGB5A3(0xFF84C6FF), ARGB8_to_RGB5A3(0xFFA59CFF), - ARGB8_to_RGB5A3(0xFFD69CFF), ARGB8_to_RGB5A3(0xFFFF9CF7), ARGB8_to_RGB5A3(0xFF8C8C8C), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF8C8C), ARGB8_to_RGB5A3(0xFFFFCE84), ARGB8_to_RGB5A3(0xFFFFE75A), + ARGB8_to_RGB5A3(0xFFFFF763), ARGB8_to_RGB5A3(0xFFFFFF84), ARGB8_to_RGB5A3(0xFFDEFF52), ARGB8_to_RGB5A3(0xFFB5FF84), + ARGB8_to_RGB5A3(0xFF7BF7AD), ARGB8_to_RGB5A3(0xFF63E7F7), ARGB8_to_RGB5A3(0xFF84C6FF), ARGB8_to_RGB5A3(0xFFA59CFF), + ARGB8_to_RGB5A3(0xFFD69CFF), ARGB8_to_RGB5A3(0xFFFF9CF7), ARGB8_to_RGB5A3(0xFF8C8C8C), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework2_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C1818), ARGB8_to_RGB5A3(0xFFAD5208), ARGB8_to_RGB5A3(0xFFB57B00), - ARGB8_to_RGB5A3(0xFFB59400), ARGB8_to_RGB5A3(0xFFA5AD00), ARGB8_to_RGB5A3(0xFF84B500), ARGB8_to_RGB5A3(0xFF52A531), - ARGB8_to_RGB5A3(0xFF089439), ARGB8_to_RGB5A3(0xFF007B94), ARGB8_to_RGB5A3(0xFF104ABD), ARGB8_to_RGB5A3(0xFF3918AD), - ARGB8_to_RGB5A3(0xFF5A2994), ARGB8_to_RGB5A3(0xFF8C087B), ARGB8_to_RGB5A3(0xFF080808), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C1818), ARGB8_to_RGB5A3(0xFFAD5208), ARGB8_to_RGB5A3(0xFFB57B00), + ARGB8_to_RGB5A3(0xFFB59400), ARGB8_to_RGB5A3(0xFFA5AD00), ARGB8_to_RGB5A3(0xFF84B500), ARGB8_to_RGB5A3(0xFF52A531), + ARGB8_to_RGB5A3(0xFF089439), ARGB8_to_RGB5A3(0xFF007B94), ARGB8_to_RGB5A3(0xFF104ABD), ARGB8_to_RGB5A3(0xFF3918AD), + ARGB8_to_RGB5A3(0xFF5A2994), ARGB8_to_RGB5A3(0xFF8C087B), ARGB8_to_RGB5A3(0xFF080808), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework3_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF42945A), ARGB8_to_RGB5A3(0xFF73C68C), ARGB8_to_RGB5A3(0xFF94E7AD), - ARGB8_to_RGB5A3(0xFF008C7B), ARGB8_to_RGB5A3(0xFF5AB5AD), ARGB8_to_RGB5A3(0xFF84C6C6), ARGB8_to_RGB5A3(0xFF2173A5), - ARGB8_to_RGB5A3(0xFF4A9CCE), ARGB8_to_RGB5A3(0xFF6BADDE), ARGB8_to_RGB5A3(0xFF7384BD), ARGB8_to_RGB5A3(0xFF6B73AD), - ARGB8_to_RGB5A3(0xFF525294), ARGB8_to_RGB5A3(0xFF39397B), ARGB8_to_RGB5A3(0xFF181863), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF42945A), ARGB8_to_RGB5A3(0xFF73C68C), ARGB8_to_RGB5A3(0xFF94E7AD), + ARGB8_to_RGB5A3(0xFF008C7B), ARGB8_to_RGB5A3(0xFF5AB5AD), ARGB8_to_RGB5A3(0xFF84C6C6), ARGB8_to_RGB5A3(0xFF2173A5), + ARGB8_to_RGB5A3(0xFF4A9CCE), ARGB8_to_RGB5A3(0xFF6BADDE), ARGB8_to_RGB5A3(0xFF7384BD), ARGB8_to_RGB5A3(0xFF6B73AD), + ARGB8_to_RGB5A3(0xFF525294), ARGB8_to_RGB5A3(0xFF39397B), ARGB8_to_RGB5A3(0xFF181863), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework4_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C8452), ARGB8_to_RGB5A3(0xFFBD945A), ARGB8_to_RGB5A3(0xFFD6BD84), - ARGB8_to_RGB5A3(0xFF9C5252), ARGB8_to_RGB5A3(0xFFCE7363), ARGB8_to_RGB5A3(0xFFEF9C8C), ARGB8_to_RGB5A3(0xFF8C6384), - ARGB8_to_RGB5A3(0xFFA584B5), ARGB8_to_RGB5A3(0xFFDEB5DE), ARGB8_to_RGB5A3(0xFFBD8484), ARGB8_to_RGB5A3(0xFFAD736B), - ARGB8_to_RGB5A3(0xFF945252), ARGB8_to_RGB5A3(0xFF7B3939), ARGB8_to_RGB5A3(0xFF631810), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF9C8452), ARGB8_to_RGB5A3(0xFFBD945A), ARGB8_to_RGB5A3(0xFFD6BD84), + ARGB8_to_RGB5A3(0xFF9C5252), ARGB8_to_RGB5A3(0xFFCE7363), ARGB8_to_RGB5A3(0xFFEF9C8C), ARGB8_to_RGB5A3(0xFF8C6384), + ARGB8_to_RGB5A3(0xFFA584B5), ARGB8_to_RGB5A3(0xFFDEB5DE), ARGB8_to_RGB5A3(0xFFBD8484), ARGB8_to_RGB5A3(0xFFAD736B), + ARGB8_to_RGB5A3(0xFF945252), ARGB8_to_RGB5A3(0xFF7B3939), ARGB8_to_RGB5A3(0xFF631810), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework5_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF5A00), ARGB8_to_RGB5A3(0xFFFF9C42), ARGB8_to_RGB5A3(0xFFFFCE84), - ARGB8_to_RGB5A3(0xFFFFEFA5), ARGB8_to_RGB5A3(0xFF8C4A29), ARGB8_to_RGB5A3(0xFFB57B5A), ARGB8_to_RGB5A3(0xFFE7AD8C), - ARGB8_to_RGB5A3(0xFFFFDEBD), ARGB8_to_RGB5A3(0xFF318CFF), ARGB8_to_RGB5A3(0xFF63B5FF), ARGB8_to_RGB5A3(0xFF9CDEFF), - ARGB8_to_RGB5A3(0xFFC6E7FF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF5A00), ARGB8_to_RGB5A3(0xFFFF9C42), ARGB8_to_RGB5A3(0xFFFFCE84), + ARGB8_to_RGB5A3(0xFFFFEFA5), ARGB8_to_RGB5A3(0xFF8C4A29), ARGB8_to_RGB5A3(0xFFB57B5A), ARGB8_to_RGB5A3(0xFFE7AD8C), + ARGB8_to_RGB5A3(0xFFFFDEBD), ARGB8_to_RGB5A3(0xFF318CFF), ARGB8_to_RGB5A3(0xFF63B5FF), ARGB8_to_RGB5A3(0xFF9CDEFF), + ARGB8_to_RGB5A3(0xFFC6E7FF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework6_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF39B542), ARGB8_to_RGB5A3(0xFF63DE5A), ARGB8_to_RGB5A3(0xFF8CEF84), - ARGB8_to_RGB5A3(0xFFB5FFAD), ARGB8_to_RGB5A3(0xFF2121C6), ARGB8_to_RGB5A3(0xFF5252F7), ARGB8_to_RGB5A3(0xFF8484FF), - ARGB8_to_RGB5A3(0xFFB5B5FF), ARGB8_to_RGB5A3(0xFFCE3939), ARGB8_to_RGB5A3(0xFFDE6B6B), ARGB8_to_RGB5A3(0xFFE78C9C), - ARGB8_to_RGB5A3(0xFFEFBDBD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF39B542), ARGB8_to_RGB5A3(0xFF63DE5A), ARGB8_to_RGB5A3(0xFF8CEF84), + ARGB8_to_RGB5A3(0xFFB5FFAD), ARGB8_to_RGB5A3(0xFF2121C6), ARGB8_to_RGB5A3(0xFF5252F7), ARGB8_to_RGB5A3(0xFF8484FF), + ARGB8_to_RGB5A3(0xFFB5B5FF), ARGB8_to_RGB5A3(0xFFCE3939), ARGB8_to_RGB5A3(0xFFDE6B6B), ARGB8_to_RGB5A3(0xFFE78C9C), + ARGB8_to_RGB5A3(0xFFEFBDBD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework7_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF082100), ARGB8_to_RGB5A3(0xFF425A39), ARGB8_to_RGB5A3(0xFF6B8463), - ARGB8_to_RGB5A3(0xFF9CB594), ARGB8_to_RGB5A3(0xFF5A2900), ARGB8_to_RGB5A3(0xFF7B4A21), ARGB8_to_RGB5A3(0xFFA5734A), - ARGB8_to_RGB5A3(0xFFD6A57B), ARGB8_to_RGB5A3(0xFF947B00), ARGB8_to_RGB5A3(0xFFB59439), ARGB8_to_RGB5A3(0xFFCEB56B), - ARGB8_to_RGB5A3(0xFFDED69C), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF082100), ARGB8_to_RGB5A3(0xFF425A39), ARGB8_to_RGB5A3(0xFF6B8463), + ARGB8_to_RGB5A3(0xFF9CB594), ARGB8_to_RGB5A3(0xFF5A2900), ARGB8_to_RGB5A3(0xFF7B4A21), ARGB8_to_RGB5A3(0xFFA5734A), + ARGB8_to_RGB5A3(0xFFD6A57B), ARGB8_to_RGB5A3(0xFF947B00), ARGB8_to_RGB5A3(0xFFB59439), ARGB8_to_RGB5A3(0xFFCEB56B), + ARGB8_to_RGB5A3(0xFFDED69C), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework8_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF2121FF), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFD6D600), - ARGB8_to_RGB5A3(0xFF6363FF), ARGB8_to_RGB5A3(0xFFFF6363), ARGB8_to_RGB5A3(0xFFD6D663), ARGB8_to_RGB5A3(0xFF9494FF), - ARGB8_to_RGB5A3(0xFFFF9494), ARGB8_to_RGB5A3(0xFFD6D694), ARGB8_to_RGB5A3(0xFFADADFF), ARGB8_to_RGB5A3(0xFFFFADAD), - ARGB8_to_RGB5A3(0xFFE7E7AD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF2121FF), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFD6D600), + ARGB8_to_RGB5A3(0xFF6363FF), ARGB8_to_RGB5A3(0xFFFF6363), ARGB8_to_RGB5A3(0xFFD6D663), ARGB8_to_RGB5A3(0xFF9494FF), + ARGB8_to_RGB5A3(0xFFFF9494), ARGB8_to_RGB5A3(0xFFD6D694), ARGB8_to_RGB5A3(0xFFADADFF), ARGB8_to_RGB5A3(0xFFFFADAD), + ARGB8_to_RGB5A3(0xFFE7E7AD), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework9_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF21A521), ARGB8_to_RGB5A3(0xFF39ADFF), ARGB8_to_RGB5A3(0xFF9C52EF), - ARGB8_to_RGB5A3(0xFF52BD52), ARGB8_to_RGB5A3(0xFF5AC6FF), ARGB8_to_RGB5A3(0xFFB59CFF), ARGB8_to_RGB5A3(0xFF6BD673), - ARGB8_to_RGB5A3(0xFF8CE7FF), ARGB8_to_RGB5A3(0xFFCEB5FF), ARGB8_to_RGB5A3(0xFF94DEAD), ARGB8_to_RGB5A3(0xFFBDF7FF), - ARGB8_to_RGB5A3(0xFFD6CEFF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFF21A521), ARGB8_to_RGB5A3(0xFF39ADFF), ARGB8_to_RGB5A3(0xFF9C52EF), + ARGB8_to_RGB5A3(0xFF52BD52), ARGB8_to_RGB5A3(0xFF5AC6FF), ARGB8_to_RGB5A3(0xFFB59CFF), ARGB8_to_RGB5A3(0xFF6BD673), + ARGB8_to_RGB5A3(0xFF8CE7FF), ARGB8_to_RGB5A3(0xFFCEB5FF), ARGB8_to_RGB5A3(0xFF94DEAD), ARGB8_to_RGB5A3(0xFFBDF7FF), + ARGB8_to_RGB5A3(0xFFD6CEFF), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework10_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFD60000), ARGB8_to_RGB5A3(0xFFFFBD00), ARGB8_to_RGB5A3(0xFFEFF731), - ARGB8_to_RGB5A3(0xFF4ACE42), ARGB8_to_RGB5A3(0xFF299C29), ARGB8_to_RGB5A3(0xFF528CBD), ARGB8_to_RGB5A3(0xFF424AAD), - ARGB8_to_RGB5A3(0xFF9452D6), ARGB8_to_RGB5A3(0xFFF77BDE), ARGB8_to_RGB5A3(0xFFA59439), ARGB8_to_RGB5A3(0xFF9C4242), - ARGB8_to_RGB5A3(0xFF5A3139), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFD60000), ARGB8_to_RGB5A3(0xFFFFBD00), ARGB8_to_RGB5A3(0xFFEFF731), + ARGB8_to_RGB5A3(0xFF4ACE42), ARGB8_to_RGB5A3(0xFF299C29), ARGB8_to_RGB5A3(0xFF528CBD), ARGB8_to_RGB5A3(0xFF424AAD), + ARGB8_to_RGB5A3(0xFF9452D6), ARGB8_to_RGB5A3(0xFFF77BDE), ARGB8_to_RGB5A3(0xFFA59439), ARGB8_to_RGB5A3(0xFF9C4242), + ARGB8_to_RGB5A3(0xFF5A3139), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16 needlework11_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF21C618), ARGB8_to_RGB5A3(0xFFFF6B00), - ARGB8_to_RGB5A3(0xFF0000FF), ARGB8_to_RGB5A3(0xFF9400BD), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF00A500), - ARGB8_to_RGB5A3(0xFFCE4200), ARGB8_to_RGB5A3(0xFF0000D6), ARGB8_to_RGB5A3(0xFF5A008C), ARGB8_to_RGB5A3(0xFF9C8C18), - ARGB8_to_RGB5A3(0xFF008400), ARGB8_to_RGB5A3(0xFFA52100), ARGB8_to_RGB5A3(0xFF0000A5), ARGB8_to_RGB5A3(0xFF4A005A), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF21C618), ARGB8_to_RGB5A3(0xFFFF6B00), + ARGB8_to_RGB5A3(0xFF0000FF), ARGB8_to_RGB5A3(0xFF9400BD), ARGB8_to_RGB5A3(0xFFE7CE18), ARGB8_to_RGB5A3(0xFF00A500), + ARGB8_to_RGB5A3(0xFFCE4200), ARGB8_to_RGB5A3(0xFF0000D6), ARGB8_to_RGB5A3(0xFF5A008C), ARGB8_to_RGB5A3(0xFF9C8C18), + ARGB8_to_RGB5A3(0xFF008400), ARGB8_to_RGB5A3(0xFFA52100), ARGB8_to_RGB5A3(0xFF0000A5), ARGB8_to_RGB5A3(0xFF4A005A), }; static u16 needlework12_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFE7D600), ARGB8_to_RGB5A3(0xFFF739BD), - ARGB8_to_RGB5A3(0xFF00D69C), ARGB8_to_RGB5A3(0xFF107310), ARGB8_to_RGB5A3(0xFFC62121), ARGB8_to_RGB5A3(0xFFBDA500), - ARGB8_to_RGB5A3(0xFFCE3994), ARGB8_to_RGB5A3(0xFF009C6B), ARGB8_to_RGB5A3(0xFF214A21), ARGB8_to_RGB5A3(0xFF8C2121), - ARGB8_to_RGB5A3(0xFF846B00), ARGB8_to_RGB5A3(0xFF941863), ARGB8_to_RGB5A3(0xFF00734A), ARGB8_to_RGB5A3(0xFF183918), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFFF2121), ARGB8_to_RGB5A3(0xFFE7D600), ARGB8_to_RGB5A3(0xFFF739BD), + ARGB8_to_RGB5A3(0xFF00D69C), ARGB8_to_RGB5A3(0xFF107310), ARGB8_to_RGB5A3(0xFFC62121), ARGB8_to_RGB5A3(0xFFBDA500), + ARGB8_to_RGB5A3(0xFFCE3994), ARGB8_to_RGB5A3(0xFF009C6B), ARGB8_to_RGB5A3(0xFF214A21), ARGB8_to_RGB5A3(0xFF8C2121), + ARGB8_to_RGB5A3(0xFF846B00), ARGB8_to_RGB5A3(0xFF941863), ARGB8_to_RGB5A3(0xFF00734A), ARGB8_to_RGB5A3(0xFF183918), }; static u16 needlework13_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFD6D6), ARGB8_to_RGB5A3(0xFFDEC6C6), ARGB8_to_RGB5A3(0xFFCEB5B5), - ARGB8_to_RGB5A3(0xFFBDA5A5), ARGB8_to_RGB5A3(0xFFAD9494), ARGB8_to_RGB5A3(0xFF9C8484), ARGB8_to_RGB5A3(0xFF8C7373), - ARGB8_to_RGB5A3(0xFF7B6363), ARGB8_to_RGB5A3(0xFF6B5252), ARGB8_to_RGB5A3(0xFF5A4242), ARGB8_to_RGB5A3(0xFF4A3131), - ARGB8_to_RGB5A3(0xFF392121), ARGB8_to_RGB5A3(0xFF291010), ARGB8_to_RGB5A3(0xFF180000), ARGB8_to_RGB5A3(0xFF100000), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFD6D6), ARGB8_to_RGB5A3(0xFFDEC6C6), ARGB8_to_RGB5A3(0xFFCEB5B5), + ARGB8_to_RGB5A3(0xFFBDA5A5), ARGB8_to_RGB5A3(0xFFAD9494), ARGB8_to_RGB5A3(0xFF9C8484), ARGB8_to_RGB5A3(0xFF8C7373), + ARGB8_to_RGB5A3(0xFF7B6363), ARGB8_to_RGB5A3(0xFF6B5252), ARGB8_to_RGB5A3(0xFF5A4242), ARGB8_to_RGB5A3(0xFF4A3131), + ARGB8_to_RGB5A3(0xFF392121), ARGB8_to_RGB5A3(0xFF291010), ARGB8_to_RGB5A3(0xFF180000), ARGB8_to_RGB5A3(0xFF100000), }; static u16 needlework14_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFEFEF), ARGB8_to_RGB5A3(0xFFDEDEDE), ARGB8_to_RGB5A3(0xFFCECECE), - ARGB8_to_RGB5A3(0xFFBDBDBD), ARGB8_to_RGB5A3(0xFFADADAD), ARGB8_to_RGB5A3(0xFF9C9C9C), ARGB8_to_RGB5A3(0xFF8C8C8C), - ARGB8_to_RGB5A3(0xFF7B7B7B), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF5A5A5A), ARGB8_to_RGB5A3(0xFF4A4A4A), - ARGB8_to_RGB5A3(0xFF393939), ARGB8_to_RGB5A3(0xFF292929), ARGB8_to_RGB5A3(0xFF181818), ARGB8_to_RGB5A3(0xFF101010), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEFEFEF), ARGB8_to_RGB5A3(0xFFDEDEDE), ARGB8_to_RGB5A3(0xFFCECECE), + ARGB8_to_RGB5A3(0xFFBDBDBD), ARGB8_to_RGB5A3(0xFFADADAD), ARGB8_to_RGB5A3(0xFF9C9C9C), ARGB8_to_RGB5A3(0xFF8C8C8C), + ARGB8_to_RGB5A3(0xFF7B7B7B), ARGB8_to_RGB5A3(0xFF6B6B6B), ARGB8_to_RGB5A3(0xFF5A5A5A), ARGB8_to_RGB5A3(0xFF4A4A4A), + ARGB8_to_RGB5A3(0xFF393939), ARGB8_to_RGB5A3(0xFF292929), ARGB8_to_RGB5A3(0xFF181818), ARGB8_to_RGB5A3(0xFF101010), }; static u16 needlework15_pal[16] ATTRIBUTE_ALIGN(32) = { - ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF7B7B), ARGB8_to_RGB5A3(0xFFD61818), ARGB8_to_RGB5A3(0xFFF79418), - ARGB8_to_RGB5A3(0xFFE7E752), ARGB8_to_RGB5A3(0xFF006B00), ARGB8_to_RGB5A3(0xFF39B539), ARGB8_to_RGB5A3(0xFF0039B5), - ARGB8_to_RGB5A3(0xFF399CFF), ARGB8_to_RGB5A3(0xFF940094), ARGB8_to_RGB5A3(0xFFFF6BFF), ARGB8_to_RGB5A3(0xFF944208), - ARGB8_to_RGB5A3(0xFFEF9C5A), ARGB8_to_RGB5A3(0xFFFFC694), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), + ARGB8_to_RGB5A3(0xFF525252), ARGB8_to_RGB5A3(0xFFEF7B7B), ARGB8_to_RGB5A3(0xFFD61818), ARGB8_to_RGB5A3(0xFFF79418), + ARGB8_to_RGB5A3(0xFFE7E752), ARGB8_to_RGB5A3(0xFF006B00), ARGB8_to_RGB5A3(0xFF39B539), ARGB8_to_RGB5A3(0xFF0039B5), + ARGB8_to_RGB5A3(0xFF399CFF), ARGB8_to_RGB5A3(0xFF940094), ARGB8_to_RGB5A3(0xFFFF6BFF), ARGB8_to_RGB5A3(0xFF944208), + ARGB8_to_RGB5A3(0xFFEF9C5A), ARGB8_to_RGB5A3(0xFFFFC694), ARGB8_to_RGB5A3(0xFF000000), ARGB8_to_RGB5A3(0xFFFFFFFF), }; static u16* mNW_needlework_pallet_table[mNW_PALETTE_COUNT] = { - needlework0_pal, needlework1_pal, needlework2_pal, needlework3_pal, - needlework4_pal, needlework5_pal, needlework6_pal, needlework7_pal, - needlework8_pal, needlework9_pal, needlework10_pal, needlework11_pal, - needlework12_pal, needlework13_pal, needlework14_pal, needlework15_pal + needlework0_pal, needlework1_pal, needlework2_pal, needlework3_pal, needlework4_pal, needlework5_pal, + needlework6_pal, needlework7_pal, needlework8_pal, needlework9_pal, needlework10_pal, needlework11_pal, + needlework12_pal, needlework13_pal, needlework14_pal, needlework15_pal }; /** * @brief Gets a pointer to the requested palette color data. - * + * * @param palette_idx Index of the palette to retrieve (0-15) * @return Palette color data pointer **/ extern u16* mNW_PaletteIdx2Palette(int palette_idx) { - return mNW_needlework_pallet_table[palette_idx & 15]; + return mNW_needlework_pallet_table[palette_idx & 15]; } /** * @brief Copies one design class to another and updates data cache. - * + * * @param dst Destination design class * @param src Source design class **/ extern void mNW_CopyOriginalTextureClass(mNW_original_design_c* dst, mNW_original_design_c* src) { - bcopy(src, dst, sizeof(mNW_original_design_c)); - DCStoreRangeNoSync(dst->design.data, mNW_DESIGN_TEX_SIZE); + bcopy(src, dst, sizeof(mNW_original_design_c)); + DCStoreRangeNoSync(dst->design.data, mNW_DESIGN_TEX_SIZE); } /** * @brief Copies a design's texture data to a block of memory and updates data cache. - * + * * @param dst Destination pointer * @param src Source design class **/ extern void mNW_CopyOriginalTexture(void* dst, mNW_original_design_c* src) { - if (dst != NULL) { - bcopy(src->design.data, dst, mNW_DESIGN_TEX_SIZE); - DCStoreRangeNoSync(dst, mNW_DESIGN_TEX_SIZE); - } + if (dst != NULL) { + bcopy(src->design.data, dst, mNW_DESIGN_TEX_SIZE); + DCStoreRangeNoSync(dst, mNW_DESIGN_TEX_SIZE); + } } /** * @brief Copies a design's palette colors to a block of memory and updates data cache. - * + * * @param dst Destination pointer * @param src Source design class **/ extern void mNW_CopyOriginalPalette(void* dst, mNW_original_design_c* src) { - if (dst != NULL) { - bcopy(mNW_PaletteIdx2Palette(src->palette), dst, 16 * sizeof(u16)); - DCStoreRangeNoSync(dst, 16 * sizeof(u16)); - } + if (dst != NULL) { + bcopy(mNW_PaletteIdx2Palette(src->palette), dst, 16 * sizeof(u16)); + DCStoreRangeNoSync(dst, 16 * sizeof(u16)); + } } /** * @brief Copies a block of memory to a design's texture data and updates data cache. - * + * * @param dst The destination design class * @param src Source data pointer **/ extern void mNW_OverWriteOriginalTexture(mNW_original_design_c* dst, u8* src) { - if (src != NULL) { - u8* tex = dst->design.data; - bcopy(src, tex, mNW_DESIGN_TEX_SIZE); - DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE); - } + if (src != NULL) { + u8* tex = dst->design.data; + bcopy(src, tex, mNW_DESIGN_TEX_SIZE); + DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE); + } } /** * @brief Copies a block of memory to a design's name. - * + * * @param dst The destination design class * @param src Source name pointer **/ extern void mNW_OverWriteOriginalName(mNW_original_design_c* dst, u8* src) { - if (src != NULL) { - bcopy(src, dst->name, mNW_ORIGINAL_DESIGN_NAME_LEN); - } + if (src != NULL) { + bcopy(src, dst->name, mNW_ORIGINAL_DESIGN_NAME_LEN); + } } /* swap buffer for original design */ @@ -381,48 +361,48 @@ static mNW_original_design_c mNW_swap_work; /** * @brief Swaps two design classes' data in memory and updates data cache. - * + * * @param org0 First design class * @param org1 Second design class **/ extern void mNW_SwapOriginalData(mNW_original_design_c* org0, mNW_original_design_c* org1) { - bcopy(org0, &mNW_swap_work, sizeof(mNW_original_design_c)); - bcopy(org1, org0, sizeof(mNW_original_design_c)); - bcopy(&mNW_swap_work, org1, sizeof(mNW_original_design_c)); - DCStoreRangeNoSync(org0->design.data, mNW_DESIGN_TEX_SIZE); - DCStoreRangeNoSync(org1->design.data, mNW_DESIGN_TEX_SIZE); + bcopy(org0, &mNW_swap_work, sizeof(mNW_original_design_c)); + bcopy(org1, org0, sizeof(mNW_original_design_c)); + bcopy(&mNW_swap_work, org1, sizeof(mNW_original_design_c)); + DCStoreRangeNoSync(org0->design.data, mNW_DESIGN_TEX_SIZE); + DCStoreRangeNoSync(org1->design.data, mNW_DESIGN_TEX_SIZE); } /** * @brief Initializes a design class to 'blank' data. - * + * * @param design The design which will be initialized **/ extern void mNW_InitOriginalData(mNW_original_design_c* design) { - static u8 name[mNW_ORIGINAL_DESIGN_NAME_LEN] = "blank "; + static u8 name[mNW_ORIGINAL_DESIGN_NAME_LEN] = "blank "; - u8* tex; - mNW_OverWriteOriginalName(design, name); - tex = design->design.data; - mem_clear(tex, mNW_DESIGN_TEX_SIZE, 0xFF); - DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE); - design->palette = 0; + u8* tex; + mNW_OverWriteOriginalName(design, name); + tex = design->design.data; + mem_clear(tex, mNW_DESIGN_TEX_SIZE, 0xFF); + DCStoreRangeNoSync(tex, mNW_DESIGN_TEX_SIZE); + design->palette = 0; } /** * @brief Initializes a player's design related data to the default state. - * + * * @param player_no The index of the player whose design data will be initialized **/ extern void mNW_InitPrivateOriginalData(int player_no) { - int i; - Private_c* private = Save_Get(private + player_no); + int i; + Private_c* private = Save_Get(private_data + player_no); - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - private->my_org_no_table[i] = i; - } + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + private->my_org_no_table[i] = i; + } - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - mNW_InitOriginalData(private->my_org + i); - } + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + mNW_InitOriginalData(private->my_org + i); + } } diff --git a/src/m_notice.c b/src/m_notice.c index 1e3a57bf..6c4836af 100644 --- a/src/m_notice.c +++ b/src/m_notice.c @@ -42,690 +42,655 @@ /* sizeof(mNtc_date_c) == 2 */ typedef struct notice_date_s { - /* 0x00 */ lbRTC_month_t month; - /* 0x01 */ lbRTC_day_t day; + /* 0x00 */ lbRTC_month_t month; + /* 0x01 */ lbRTC_day_t day; } mNtc_date_c; /* sizeof(mNtc_date_data_c) == 4 */ typedef struct notice_date_data_s { - /* 0x00 */ u16 id; - /* 0x02 */ u16 date; + /* 0x00 */ u16 id; + /* 0x02 */ u16 date; } mNtc_date_data_c; static mNtc_date_data_c mNtc_auto_nwrite_data[48]; static void mNtc_copy_data_list() { - static mNtc_date_data_c auto_nwrite_date_data[mNtc_DATA_LIST_NUM] = { - { 0x00, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 1) }, /* Nook's New Year's post */ - { 0x01, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 15) }, /* Snow weather report */ - { 0x02, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 25) }, /* Groundhog day notice */ - { 0x03, mNtc_TO_MONTHDAY(lbRTC_FEBRUARY, 1) }, /* Valentine's Day notice */ - { 0x04, mNtc_TO_MONTHDAY(lbRTC_FEBRUARY, 15) }, /* Pete's Valentine's Day complaint */ - { 0x05, mNtc_TO_MONTHDAY(lbRTC_MARCH, 15) }, /* Cherry Blossom Festival notice */ - { 0x06, mNtc_TO_MONTHDAY(lbRTC_MARCH, 11) }, /* Spring Sports Fair notice */ - { 0x07, mNtc_TO_MONTHDAY(lbRTC_MARCH, 16) }, /* Spring Sports Fair vernal equinox notice */ - { 0x08, mNtc_TO_MONTHDAY(lbRTC_MARCH, 20) }, /* Spring Sports Fair schedule */ - { 0x09, mNtc_TO_MONTHDAY(lbRTC_APRIL, 3) }, /* Cherry Blossom Festival reminder notice */ - { 0x0A, mNtc_TO_MONTHDAY(lbRTC_APRIL, 21) }, /* Spring weather notice */ - { 0x0B, mNtc_TO_MONTHDAY(lbRTC_MAY, 6) }, /* June weather notice */ - { 0x0C, mNtc_TO_MONTHDAY(lbRTC_MAY, 20) }, /* Summer fishing tourney notice */ - { 0x0D, mNtc_TO_MONTHDAY(lbRTC_JUNE, 8) }, /* Chip's 1st summer fishing tourney post */ - { 0x0E, mNtc_TO_MONTHDAY(lbRTC_JUNE, 23) }, /* Chip's final summer fishing tourney post */ - { 0x0F, mNtc_TO_MONTHDAY(lbRTC_JUNE, 25) }, /* Fireworks Festival notice */ - { 0x10, mNtc_TO_MONTHDAY(lbRTC_JULY, 1) }, /* July weather notice */ - { 0x11, mNtc_TO_MONTHDAY(lbRTC_JULY, 5) }, /* Phyllis? Fireworks Festival complaint */ - { 0x12, mNtc_TO_MONTHDAY(lbRTC_JULY, 15) }, /* Morning aerobics notice */ - { 0x13, mNtc_TO_MONTHDAY(lbRTC_JULY, 25) }, /* Copper morning aerobics post */ - { 0x14, mNtc_TO_MONTHDAY(lbRTC_AUGUST, 1) }, /* Meteor Shower notice */ - { 0x15, mNtc_TO_MONTHDAY(lbRTC_AUGUST, 30) }, /* Copper morning aerobics final day notice */ - { 0x16, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 1) }, /* Moon Viewing notice */ - { 0x17, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 15) }, /* September weather report */ - { 0x18, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 13) }, /* Pete's Fall Sports Fair post */ - { 0x19, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 18) }, /* Fall Sports Fair notice */ - { 0x1A, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 22) }, /* Fall Sports Fair schedule */ - { 0x1B, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 10) }, /* Mushrooming season notice */ - { 0x1C, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 16) }, /* Nook's Halloween candy post */ - { 0x1D, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 20) }, /* Halloween notice */ - { 0x1E, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 25) }, /* Fall fishing tourney notice */ - { 0x1F, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 8) }, /* Chip's 1st fall fishing tourney post */ - { 0x20, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 10) }, /* Harvest Festival notice */ - { 0x21, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 12) }, /* November weather report */ - { 0x22, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 23) }, /* Chip's final fall fishing tourney post */ - { 0x23, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 9) }, /* Winter storm warning */ - { 0x24, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 20) }, /* Jingle's holiday notice */ - { 0x25, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 25) }, /* New Year's Eve countdown notice */ - { 0x26, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 28) }, /* New Year's Day event notice */ - { 0x27, mNTC_UNUSED_DATE }, /* Pete check mailbox info? */ - { 0x28, mNTC_UNUSED_DATE }, /* Anti-litter notice? */ - { 0x29, mNtc_TO_MONTHDAY(lbRTC_MARCH, 31) }, /* Day light savings begin notice */ - { 0x2A, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 31) } /* Day light savings end notice */ - }; + static mNtc_date_data_c auto_nwrite_date_data[mNtc_DATA_LIST_NUM] = { + { 0x00, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 1) }, /* Nook's New Year's post */ + { 0x01, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 15) }, /* Snow weather report */ + { 0x02, mNtc_TO_MONTHDAY(lbRTC_JANUARY, 25) }, /* Groundhog day notice */ + { 0x03, mNtc_TO_MONTHDAY(lbRTC_FEBRUARY, 1) }, /* Valentine's Day notice */ + { 0x04, mNtc_TO_MONTHDAY(lbRTC_FEBRUARY, 15) }, /* Pete's Valentine's Day complaint */ + { 0x05, mNtc_TO_MONTHDAY(lbRTC_MARCH, 15) }, /* Cherry Blossom Festival notice */ + { 0x06, mNtc_TO_MONTHDAY(lbRTC_MARCH, 11) }, /* Spring Sports Fair notice */ + { 0x07, mNtc_TO_MONTHDAY(lbRTC_MARCH, 16) }, /* Spring Sports Fair vernal equinox notice */ + { 0x08, mNtc_TO_MONTHDAY(lbRTC_MARCH, 20) }, /* Spring Sports Fair schedule */ + { 0x09, mNtc_TO_MONTHDAY(lbRTC_APRIL, 3) }, /* Cherry Blossom Festival reminder notice */ + { 0x0A, mNtc_TO_MONTHDAY(lbRTC_APRIL, 21) }, /* Spring weather notice */ + { 0x0B, mNtc_TO_MONTHDAY(lbRTC_MAY, 6) }, /* June weather notice */ + { 0x0C, mNtc_TO_MONTHDAY(lbRTC_MAY, 20) }, /* Summer fishing tourney notice */ + { 0x0D, mNtc_TO_MONTHDAY(lbRTC_JUNE, 8) }, /* Chip's 1st summer fishing tourney post */ + { 0x0E, mNtc_TO_MONTHDAY(lbRTC_JUNE, 23) }, /* Chip's final summer fishing tourney post */ + { 0x0F, mNtc_TO_MONTHDAY(lbRTC_JUNE, 25) }, /* Fireworks Festival notice */ + { 0x10, mNtc_TO_MONTHDAY(lbRTC_JULY, 1) }, /* July weather notice */ + { 0x11, mNtc_TO_MONTHDAY(lbRTC_JULY, 5) }, /* Phyllis? Fireworks Festival complaint */ + { 0x12, mNtc_TO_MONTHDAY(lbRTC_JULY, 15) }, /* Morning aerobics notice */ + { 0x13, mNtc_TO_MONTHDAY(lbRTC_JULY, 25) }, /* Copper morning aerobics post */ + { 0x14, mNtc_TO_MONTHDAY(lbRTC_AUGUST, 1) }, /* Meteor Shower notice */ + { 0x15, mNtc_TO_MONTHDAY(lbRTC_AUGUST, 30) }, /* Copper morning aerobics final day notice */ + { 0x16, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 1) }, /* Moon Viewing notice */ + { 0x17, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 15) }, /* September weather report */ + { 0x18, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 13) }, /* Pete's Fall Sports Fair post */ + { 0x19, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 18) }, /* Fall Sports Fair notice */ + { 0x1A, mNtc_TO_MONTHDAY(lbRTC_SEPTEMBER, 22) }, /* Fall Sports Fair schedule */ + { 0x1B, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 10) }, /* Mushrooming season notice */ + { 0x1C, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 16) }, /* Nook's Halloween candy post */ + { 0x1D, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 20) }, /* Halloween notice */ + { 0x1E, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 25) }, /* Fall fishing tourney notice */ + { 0x1F, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 8) }, /* Chip's 1st fall fishing tourney post */ + { 0x20, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 10) }, /* Harvest Festival notice */ + { 0x21, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 12) }, /* November weather report */ + { 0x22, mNtc_TO_MONTHDAY(lbRTC_NOVEMBER, 23) }, /* Chip's final fall fishing tourney post */ + { 0x23, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 9) }, /* Winter storm warning */ + { 0x24, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 20) }, /* Jingle's holiday notice */ + { 0x25, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 25) }, /* New Year's Eve countdown notice */ + { 0x26, mNtc_TO_MONTHDAY(lbRTC_DECEMBER, 28) }, /* New Year's Day event notice */ + { 0x27, mNTC_UNUSED_DATE }, /* Pete check mailbox info? */ + { 0x28, mNTC_UNUSED_DATE }, /* Anti-litter notice? */ + { 0x29, mNtc_TO_MONTHDAY(lbRTC_MARCH, 31) }, /* Day light savings begin notice */ + { 0x2A, mNtc_TO_MONTHDAY(lbRTC_OCTOBER, 31) } /* Day light savings end notice */ + }; - mem_copy((u8*)mNtc_auto_nwrite_data, (u8*)auto_nwrite_date_data, mNtc_DATA_LIST_NUM * sizeof(mNtc_date_data_c)); + mem_copy((u8*)mNtc_auto_nwrite_data, (u8*)auto_nwrite_date_data, mNtc_DATA_LIST_NUM * sizeof(mNtc_date_data_c)); } static void mNtc_operate_data_list() { - mNtc_date_data_c* data_p; - int day; + mNtc_date_data_c* data_p; + int day; - /* update Spring Sports Fair dates */ - day = lbRk_VernalEquinoxDay(Common_Get(time.rtc_time.year)); - /* month = march, day = vernal equinox day - 10 */ - data_p = mNtc_auto_nwrite_data + 6; - data_p->date = day + 0x2F6; - /* month = march, day = vernal equinox day - 5 */ - data_p = mNtc_auto_nwrite_data + 7; - data_p->date = day + 0x2FB; - /* month = march, day = vernal equinox day - 1 */ - data_p = mNtc_auto_nwrite_data + 8; - data_p->date = day + 0x2FF; + /* update Spring Sports Fair dates */ + day = lbRk_VernalEquinoxDay(Common_Get(time.rtc_time.year)); + /* month = march, day = vernal equinox day - 10 */ + data_p = mNtc_auto_nwrite_data + 6; + data_p->date = day + 0x2F6; + /* month = march, day = vernal equinox day - 5 */ + data_p = mNtc_auto_nwrite_data + 7; + data_p->date = day + 0x2FB; + /* month = march, day = vernal equinox day - 1 */ + data_p = mNtc_auto_nwrite_data + 8; + data_p->date = day + 0x2FF; - /* update Fall Sports Fair dates */ - day = lbRk_AutumnalEquinoxDay(Common_Get(time.rtc_time.year)); - /* month = september, day = autumnal equinox day - 10 */ - data_p = mNtc_auto_nwrite_data + 0x18; - data_p->date = day + 0x8F6; - /* month = september, day = autumnal equinox day - 5 */ - data_p = mNtc_auto_nwrite_data + 0x19; - data_p->date = day + 0x8FB; - /* month = september, day = autumnal equinox day - 1 */ - data_p = mNtc_auto_nwrite_data + 0x1A; - data_p->date = day + 0x8FF; + /* update Fall Sports Fair dates */ + day = lbRk_AutumnalEquinoxDay(Common_Get(time.rtc_time.year)); + /* month = september, day = autumnal equinox day - 10 */ + data_p = mNtc_auto_nwrite_data + 0x18; + data_p->date = day + 0x8F6; + /* month = september, day = autumnal equinox day - 5 */ + data_p = mNtc_auto_nwrite_data + 0x19; + data_p->date = day + 0x8FB; + /* month = september, day = autumnal equinox day - 1 */ + data_p = mNtc_auto_nwrite_data + 0x1A; + data_p->date = day + 0x8FF; - /* update daylight savings time dates */ - mNtc_auto_nwrite_data[0x29].date = mEv_weekday2day(lbRTC_MARCH, mEv_WEEKTYPE_LAST, lbRTC_SUNDAY) + 0x300; /* month = march, day = last sunday */ - mNtc_auto_nwrite_data[0x2A].date = mEv_weekday2day(lbRTC_OCTOBER, mEv_WEEKTYPE_LAST, lbRTC_SUNDAY) + 0x9F9; /* month = october, day = second to last sunday */ + /* update daylight savings time dates */ + mNtc_auto_nwrite_data[0x29].date = + mEv_weekday2day(lbRTC_MARCH, mEv_WEEKTYPE_LAST, lbRTC_SUNDAY) + 0x300; /* month = march, day = last sunday */ + mNtc_auto_nwrite_data[0x2A].date = mEv_weekday2day(lbRTC_OCTOBER, mEv_WEEKTYPE_LAST, lbRTC_SUNDAY) + + 0x9F9; /* month = october, day = second to last sunday */ } static void mNtc_sort_data_list() { - mNtc_date_data_c replace_data; - mNtc_date_data_c now_data; - int replace_idx; - int i, j; + mNtc_date_data_c replace_data; + mNtc_date_data_c now_data; + int replace_idx; + int i, j; - /* sort from earliest to latest dates */ - for (i = 0; i < mNtc_DATA_LIST_NUM; i++) { - now_data = mNtc_auto_nwrite_data[i]; - replace_data = now_data; - replace_idx = i; + /* sort from earliest to latest dates */ + for (i = 0; i < mNtc_DATA_LIST_NUM; i++) { + now_data = mNtc_auto_nwrite_data[i]; + replace_data = now_data; + replace_idx = i; - /* search through all entries ahead and find the next closest date */ - for (j = i + 1; j < mNtc_DATA_LIST_NUM; j++) { - if (mNtc_auto_nwrite_data[j].date < replace_data.date) { - replace_data = mNtc_auto_nwrite_data[j]; - replace_idx = j; - } + /* search through all entries ahead and find the next closest date */ + for (j = i + 1; j < mNtc_DATA_LIST_NUM; j++) { + if (mNtc_auto_nwrite_data[j].date < replace_data.date) { + replace_data = mNtc_auto_nwrite_data[j]; + replace_idx = j; + } + } + + /* swap the entries */ + mNtc_auto_nwrite_data[replace_idx] = now_data; + mNtc_auto_nwrite_data[i] = replace_data; } - - /* swap the entries */ - mNtc_auto_nwrite_data[replace_idx] = now_data; - mNtc_auto_nwrite_data[i] = replace_data; - } } static void mNtc_make_auto_nwrite_data_list() { - mNtc_copy_data_list(); /* copy the base list */ - mNtc_operate_data_list(); /* update dynamic dates */ - mNtc_sort_data_list(); /* sort entries by date */ + mNtc_copy_data_list(); /* copy the base list */ + mNtc_operate_data_list(); /* update dynamic dates */ + mNtc_sort_data_list(); /* sort entries by date */ } static int mNtc_get_auto_nwrite_data_last_idx() { - int i; - int res = mNtc_DATA_LIST_NUM - 1; + int i; + int res = mNtc_DATA_LIST_NUM - 1; - for (i = mNtc_DATA_LIST_NUM - 1; i >= 0; i--) { - if (mNtc_auto_nwrite_data[i].date != 0xFFFF) { - res = i; - break; + for (i = mNtc_DATA_LIST_NUM - 1; i >= 0; i--) { + if (mNtc_auto_nwrite_data[i].date != 0xFFFF) { + res = i; + break; + } } - } - return res; + return res; } static void mNtc_ClearPage(mNtc_board_post_c* page, int count) { - for (count; count != 0; count--) { - page->post_time = mTM_rtcTime_clear_code; - mem_clear(page->message, MAIL_BODY_LEN, CHAR_SPACE); - page++; - } + for (count; count != 0; count--) { + page->post_time = mTM_rtcTime_clear_code; + mem_clear(page->message, MAIL_BODY_LEN, CHAR_SPACE); + page++; + } } extern void mNtc_SetInitData() { - mNtc_board_post_c* post; - lbRTC_time_c rtc_time; - int header_back_pos; - int handbill_no_tbl[4] = { 0x1E, 0x1F, 0x20, 0x21 }; - u8 header[mHandbill_HEADER_LEN]; - u8 footer[mHandbill_FOOTER_LEN]; - int i; - - post = Save_Get(noticeboard); - //handbill_no_tbl[0] = 0x1E; /* noticeboard free to use post */ - //handbill_no_tbl[1] = 0x1F; /* Nook's HRA recruitment post */ - //handbill_no_tbl[2] = 0x20; /* HRA points guide post */ - //handbill_no_tbl[3] = 0x21; /* noticeboard usage post */ + mNtc_board_post_c* post; + lbRTC_time_c rtc_time; + int header_back_pos; + int handbill_no_tbl[4] = { 0x1E, 0x1F, 0x20, 0x21 }; + u8 header[mHandbill_HEADER_LEN]; + u8 footer[mHandbill_FOOTER_LEN]; + int i; - rtc_time = Common_Get(time.rtc_time); + post = Save_Get(noticeboard); + // handbill_no_tbl[0] = 0x1E; /* noticeboard free to use post */ + // handbill_no_tbl[1] = 0x1F; /* Nook's HRA recruitment post */ + // handbill_no_tbl[2] = 0x20; /* HRA points guide post */ + // handbill_no_tbl[3] = 0x21; /* noticeboard usage post */ - for (i = 0; i < 4; i++) { - post->post_time = rtc_time; - mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post->message, handbill_no_tbl[i]); - post++; - } + rtc_time = Common_Get(time.rtc_time); - mNtc_ClearPage(post, mNtc_BOARD_POST_COUNT - 4); + for (i = 0; i < 4; i++) { + post->post_time = rtc_time; + mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post->message, handbill_no_tbl[i]); + post++; + } + + mNtc_ClearPage(post, mNtc_BOARD_POST_COUNT - 4); } extern int mNtc_notice_write_num() { - mNtc_board_post_c* post; - int i; + mNtc_board_post_c* post; + int i; - post = Save_Get(noticeboard); - for (i = 0; i < mNtc_BOARD_POST_COUNT; i++) { - if (lbRTC_IsEqualTime(&post->post_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) == TRUE) { - break; + post = Save_Get(noticeboard); + for (i = 0; i < mNtc_BOARD_POST_COUNT; i++) { + if (lbRTC_IsEqualTime(&post->post_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) == TRUE) { + break; + } + post++; } - post++; - } - return i; + return i; } extern void mNtc_notice_write(mNtc_board_post_c* new_post) { - int write_num = mNtc_notice_write_num(); - if (write_num == mNtc_BOARD_POST_COUNT) { - mNtc_board_post_c* post = Save_Get(noticeboard); - int i; + int write_num = mNtc_notice_write_num(); + if (write_num == mNtc_BOARD_POST_COUNT) { + mNtc_board_post_c* post = Save_Get(noticeboard); + int i; - /* delete first post and move all others down one */ - for (i = 0; i < mNtc_BOARD_POST_COUNT - 1; i++) { - mem_copy(post, post + 1, sizeof(mNtc_board_post_c)); - post++; + /* delete first post and move all others down one */ + for (i = 0; i < mNtc_BOARD_POST_COUNT - 1; i++) { + mem_copy((u8*)post, (u8*)(post + 1), sizeof(mNtc_board_post_c)); + post++; + } + + /* copy new post */ + mem_copy((u8*)post, (u8*)new_post, sizeof(mNtc_board_post_c)); + } else { + /* space available, write to lowest unused slot */ + mem_copy((u8*)(Save_Get(noticeboard) + write_num), (u8*)new_post, sizeof(mNtc_board_post_c)); } - - /* copy new post */ - mem_copy((u8*)post, (u8*)new_post, sizeof(mNtc_board_post_c)); - } - else { - /* space available, write to lowest unused slot */ - mem_copy((u8*)(Save_Get(noticeboard) + write_num), (u8*)new_post, sizeof(mNtc_board_post_c)); - } } static int mNtc_set_landname_string(u8* buf) { - mem_copy(buf, Save_Get(land_info.name), LAND_NAME_SIZE); - return mMl_strlen(Save_Get(land_info.name), LAND_NAME_SIZE, CHAR_SPACE); + mem_copy(buf, Save_Get(land_info.name), LAND_NAME_SIZE); + return mMl_strlen(Save_Get(land_info.name), LAND_NAME_SIZE, CHAR_SPACE); } static void mNtc_set_treasure_string(AnmPersonalID_c* sender_id, mActor_name_t item_no, int block_x, int block_z) { - static u8 choume_str[BLOCK_X_NUM] = "QABCDEF"; + static u8 choume_str[BLOCK_X_NUM] = "QABCDEF"; - int land_name_len; - u8 b_str; - u8 land_name[LAND_NAME_SIZE]; - u8 anm_name[ANIMAL_NAME_LEN]; - u8 item_name[mIN_ITEM_NAME_LEN]; - - mNpc_GetNpcWorldNameAnm(anm_name, sender_id); - mHandbill_Set_free_str(1, anm_name, ANIMAL_NAME_LEN); - mIN_copy_name_str(item_name, item_no); - mHandbill_Set_free_str_art(2, item_name, mIN_ITEM_NAME_LEN, mIN_get_item_article(item_no)); + int land_name_len; + u8 b_str; + u8 land_name[LAND_NAME_SIZE]; + u8 anm_name[ANIMAL_NAME_LEN]; + u8 item_name[mIN_ITEM_NAME_LEN]; - b_str = choume_str[block_z]; - mHandbill_Set_free_str(3, &b_str, 1); /* z-acre friendly name (A-F) */ + mNpc_GetNpcWorldNameAnm(anm_name, sender_id); + mHandbill_Set_free_str(1, anm_name, ANIMAL_NAME_LEN); + mIN_copy_name_str(item_name, item_no); + mHandbill_Set_free_str_art(2, item_name, mIN_ITEM_NAME_LEN, mIN_get_item_article(item_no)); - b_str = mFI_COL_TO_CHARSTR(block_x); - mHandbill_Set_free_str(4, &b_str, 1); /* x-acre friendly name (1-5) */ + b_str = choume_str[block_z]; + mHandbill_Set_free_str(3, &b_str, 1); /* z-acre friendly name (A-F) */ - land_name_len = mNtc_set_landname_string(land_name); - mHandbill_Set_free_str(5, land_name, land_name_len); + b_str = mFI_COL_TO_CHARSTR(block_x); + mHandbill_Set_free_str(4, &b_str, 1); /* x-acre friendly name (1-5) */ + + land_name_len = mNtc_set_landname_string(land_name); + mHandbill_Set_free_str(5, land_name, land_name_len); } -// @nonmatching -/* TODO: match */ static void mNtc_check_treasure() { - int valid_animal_ids[ANIMAL_NUM_MAX]; - lbRTC_time_c rtc_time; - lbRTC_time_c* treasure_checked_time; - lbRTC_time_c* treasure_buried_time; - Animal_c* animal; - mLd_land_info_c* land_info; - u32 comp_time_rtc; - u32 comp_time_buried; - int valid_animal_num; - int interval_days; - - valid_animal_num = 0; - rtc_time = Common_Get(time.rtc_time); - animal = Save_Get(animals); - land_info = Save_GetPointer(land_info); - treasure_buried_time = Save_GetPointer(treasure_buried_time); - treasure_checked_time = Save_GetPointer(treasure_checked_time); + lbRTC_time_c* treasure_buried_time; + lbRTC_time_c* treasure_checked_time; + Animal_c* animal; + mLd_land_info_c* land_info; + u32 comp_time_rtc; + u32 comp_time_buried; + lbRTC_time_c rtc_time; + int valid_animal_ids[ANIMAL_NUM_MAX]; + int valid_animal_num; + int i; + u8 header[mHandbill_FOOTER_LEN]; + u8 footer[mHandbill_FOOTER_LEN]; + int mem; + int interval_days; + int header_back_pos; + mNtc_board_post_c post; + mActor_name_t item; + int b_x; + int b_z; + f32 rng; + int list_type; - if (rtc_time.hour >= mTM_FIELD_RENEW_HOUR) { - comp_time_rtc = lbRTC_TIME_TO_U32(&rtc_time); - comp_time_buried = lbRTC_TIME_TO_U32(treasure_buried_time); - if (comp_time_rtc > comp_time_buried) { - interval_days = lbRTC_GetIntervalDays(treasure_buried_time, &rtc_time); - } - else if (comp_time_rtc < comp_time_buried) { - interval_days = lbRTC_GetIntervalDays(&rtc_time, treasure_buried_time); - } - else { - interval_days = 0; - } + treasure_buried_time = Save_GetPointer(treasure_buried_time); + treasure_checked_time = Save_GetPointer(treasure_checked_time); + animal = Save_Get(animals); + land_info = Save_GetPointer(land_info); + valid_animal_num = 0; + rtc_time = Common_Get(time.rtc_time); - if (lbRTC_IsEqualTime(treasure_buried_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) || - interval_days >= mNtc_MIN_DAYS_BETWEEN_TREASURE - ) { - if (lbRTC_IsEqualTime(treasure_checked_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) || - treasure_checked_time->year != rtc_time.year || - treasure_checked_time->month != rtc_time.month || - treasure_checked_time->day != rtc_time.day - ) { - int i; + if (rtc_time.hour >= mTM_FIELD_RENEW_HOUR) { + comp_time_rtc = lbRTC_TIME_TO_U32(&rtc_time); + comp_time_buried = lbRTC_TIME_TO_U32(treasure_buried_time); + if (comp_time_rtc > comp_time_buried) { + interval_days = lbRTC_GetIntervalDays(treasure_buried_time, &rtc_time); + } else if (comp_time_rtc < comp_time_buried) { + interval_days = lbRTC_GetIntervalDays(&rtc_time, treasure_buried_time); + } else { + interval_days = 0; + } - for (i = 0; i < ANIMAL_NUM_MAX; i++, animal++) { - if (mNpc_CheckFreeAnimalPersonalID(&animal->id) == FALSE) { - int mem; + if (lbRTC_IsEqualTime(treasure_buried_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) || + interval_days >= mNtc_MIN_DAYS_BETWEEN_TREASURE) { + if (lbRTC_IsEqualTime(treasure_checked_time, &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) || + treasure_checked_time->year != rtc_time.year || treasure_checked_time->month != rtc_time.month || + treasure_checked_time->day != rtc_time.day) { + for (i = 0; i < ANIMAL_NUM_MAX; i++, animal++) { + if (mNpc_CheckFreeAnimalPersonalID(&animal->id) == FALSE) { + for (mem = 0; mem < ANIMAL_MEMORY_NUM; mem++) { + if (animal->memories[mem].memory_player_id.land_id == land_info->id && + mLd_CheckCmpLandName(animal->memories[mem].memory_player_id.land_name, + land_info->name)) { + if (valid_animal_num == ANIMAL_NUM_MAX) { + return; + } - for (mem = 0; mem < ANIMAL_MEMORY_NUM; mem++) { - if (animal->memories[mem].memory_player_id.land_id == land_info->id && - mLd_CheckCmpLandName(animal->memories[mem].memory_player_id.land_name, land_info->name) - ) { - if (valid_animal_num == ANIMAL_NUM_MAX) { - return; + valid_animal_ids[valid_animal_num++] = i; + break; + } + } + } } - valid_animal_ids[valid_animal_num++] = i; - break; - } - //memory++; + if (valid_animal_num != 0 && fqrand() < mNtc_TREASURE_CHANCE) { + b_x = 0; + b_z = 0; + + /* 1/3rd chance of pitfall, 2/3rds chance of rare furniture */ + rng = fqrand(); + if (rng < (1.0f / 3.0f)) { + item = ITM_PITFALL; + } else { + list_type = rng < (2.0f / 3.0f) + ? mSP_LISTTYPE_LOTTERY + : mSP_LISTTYPE_EVENT; /* 50/50 to roll redd or lottery furniture*/ + mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, mSP_KIND_FURNITURE, list_type, FALSE); + } + + if (mFI_SetTreasure(&b_x, &b_z, item)) { + animal = + Save_GetPointer(animals[valid_animal_ids[RANDOM(valid_animal_num) % valid_animal_num]]); + mNtc_set_treasure_string(&animal->id, item, b_x, b_z); + lbRTC_TimeCopy(&post.post_time, &rtc_time); + mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, + 0x1F0 + animal->id.looks * 3 + (RANDOM(3) % 3)); + mNtc_notice_write(&post); + lbRTC_TimeCopy(treasure_buried_time, &rtc_time); + } + } } - } } - - if (valid_animal_num != 0 && fqrand() < mNtc_TREASURE_CHANCE) { - f32 rng; - mActor_name_t item; - int b_x = 0; - int b_z = 0; - - - /* 1/3rd chance of pitfall, 2/3rds chance of rare furniture */ - rng = fqrand(); - if (rng < (1.0f / 3.0f)) { - item = ITM_PITFALL; - } - else { - int list_type = rng < (2.0f / 3.0f) ? mSP_LISTTYPE_LOTTERY : mSP_LISTTYPE_EVENT; /* 50/50 to roll redd or lottery furniture*/ - mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, mSP_KIND_FURNITURE, list_type, FALSE); - } - - if (mFI_SetTreasure(&b_x, &b_z, item)) { - u8 header[mHandbill_HEADER_LEN]; - u8 footer[mHandbill_FOOTER_LEN]; - int header_back_pos; - mNtc_board_post_c post; - int selected_animal = (int)(fqrand() * (f32)valid_animal_num); - int selected_animal_idx = valid_animal_ids[selected_animal % valid_animal_num]; - animal = Save_GetPointer(animals[selected_animal_idx]); - - mNtc_set_treasure_string(&animal->id, item, b_x, b_z); - lbRTC_TimeCopy(&post.post_time, &rtc_time); - mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, 0x1F0 + animal->id.looks * 3 + (((int)(fqrand() * 3.0f)) % 3)); - mNtc_notice_write(&post); - lbRTC_TimeCopy(Save_GetPointer(treasure_buried_time), &rtc_time); - } - } - } } - } } static void mNtc_set_near_old_nwrite_data(lbRTC_time_c* nwrite_time, lbRTC_year_t* nwrite_year, u8* nwrite_num) { - mNtc_date_data_c* auto_nwrite_p; - s16 date; - int last_idx; - int i; + mNtc_date_data_c* auto_nwrite_p; + s16 date; + int last_idx; + int i; - date = (nwrite_time->month << 8) + nwrite_time->day; - last_idx = mNtc_DATA_LIST_NUM - 1; - auto_nwrite_p = mNtc_auto_nwrite_data + (mNtc_DATA_LIST_NUM - 1); + date = (nwrite_time->month << 8) + nwrite_time->day; + last_idx = mNtc_DATA_LIST_NUM - 1; + auto_nwrite_p = mNtc_auto_nwrite_data + (mNtc_DATA_LIST_NUM - 1); - for (i = mNtc_DATA_LIST_NUM; i != 0; i--) { - if (date > auto_nwrite_p->date || (date == auto_nwrite_p->date && nwrite_time->hour >= mTM_FIELD_RENEW_HOUR)) { - break; + for (i = mNtc_DATA_LIST_NUM; i != 0; i--) { + if (date > auto_nwrite_p->date || (date == auto_nwrite_p->date && nwrite_time->hour >= mTM_FIELD_RENEW_HOUR)) { + break; + } + + auto_nwrite_p--; + last_idx--; } - auto_nwrite_p--; - last_idx--; - } - - if (last_idx != -1) { - *nwrite_year = nwrite_time->year; - *nwrite_num = last_idx; - } - else { - *nwrite_year = nwrite_time->year - 1; - *nwrite_num = mNtc_get_auto_nwrite_data_last_idx(); - } + if (last_idx != -1) { + *nwrite_year = nwrite_time->year; + *nwrite_num = last_idx; + } else { + *nwrite_year = nwrite_time->year - 1; + *nwrite_num = mNtc_get_auto_nwrite_data_last_idx(); + } } static int mNtc_make_auto_nwrite_day_string(u8* str, int month, int day) { - int month_len; - int day_len; - u8 buf[24]; + int month_len; + int day_len; + u8 buf[24]; - month_len = mString_Load_MonthStringFromRom(buf, month); - mem_copy(str, buf, month_len); - str[month_len] = CHAR_SPACE; - day_len = mString_Load_DayStringFromRom(buf, day); - mem_copy(str + month_len + 1, buf, day_len); - return month_len + day_len + 1; + month_len = mString_Load_MonthStringFromRom(buf, month); + mem_copy(str, buf, month_len); + str[month_len] = CHAR_SPACE; + day_len = mString_Load_DayStringFromRom(buf, day); + mem_copy(str + month_len + 1, buf, day_len); + return month_len + day_len + 1; } static void mNtc_set_auto_nwrite_common_string() { - int land_name_len; - u8 land_name[LAND_NAME_SIZE]; - u8 shop_name[16]; + int land_name_len; + u8 land_name[LAND_NAME_SIZE]; + u8 shop_name[16]; - land_name_len = mNtc_set_landname_string(land_name); - mHandbill_Set_free_str(0, land_name, land_name_len); + land_name_len = mNtc_set_landname_string(land_name); + mHandbill_Set_free_str(0, land_name, land_name_len); - mString_Load_StringFromRom(shop_name, 16, 0x558 + mSP_GetShopLevel()); - mHandbill_Set_free_str(1, shop_name, 16); + mString_Load_StringFromRom(shop_name, 16, 0x558 + mSP_GetShopLevel()); + mHandbill_Set_free_str(1, shop_name, 16); } static void mNtc_set_auto_nwrite_fishing_string(const lbRTC_ymd_c* date) { - u8 month_str[] = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; - u8 day_str[] = { ' ', ' ', ' ', ' ' }; - u8 size_str[] = { ' ', ' ' }; - PersonalID_c winner_pid; - u32 size; - lbRTC_ymd_c win_date = *date; + u8 month_str[] = { ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ', ' ' }; + u8 day_str[] = { ' ', ' ', ' ', ' ' }; + u8 size_str[] = { ' ', ' ' }; + PersonalID_c winner_pid; + u32 size; + lbRTC_ymd_c win_date = *date; - mEv_fishRecord_holder(&winner_pid, &size, &win_date); - mFont_UnintToString(size_str, 2, size, 2, 0, 0, TRUE); - mString_Load_MonthStringFromRom(month_str, date->month); - mHandbill_Set_free_str(0, month_str, 9); - mString_Load_DayStringFromRom(day_str, date->day); - mHandbill_Set_free_str(1, day_str, 4); - mHandbill_Set_free_str(2, winner_pid.player_name, PLAYER_NAME_LEN); - mHandbill_Set_free_str(3, size_str, 2); + mEv_fishRecord_holder(&winner_pid, &size, &win_date); + mFont_UnintToString(size_str, 2, size, 2, 0, 0, TRUE); + mString_Load_MonthStringFromRom(month_str, date->month); + mHandbill_Set_free_str(0, month_str, 9); + mString_Load_DayStringFromRom(day_str, date->day); + mHandbill_Set_free_str(1, day_str, 4); + mHandbill_Set_free_str(2, winner_pid.player_name, PLAYER_NAME_LEN); + mHandbill_Set_free_str(3, size_str, 2); } static void mNtc_set_auto_nwrite_string(lbRTC_year_t year) { - lbRTC_ymd_c harvest_moon_date; - int autumnal_equi_day; - int len; - u8 buf[28]; + lbRTC_ymd_c harvest_moon_date; + int autumnal_equi_day; + int len; + u8 buf[28]; - lbRk_HarvestMoonDay(&harvest_moon_date, year); - len = mNtc_make_auto_nwrite_day_string(buf, harvest_moon_date.month, harvest_moon_date.day); - mHandbill_Set_free_str(2, buf, len); - autumnal_equi_day = lbRk_AutumnalEquinoxDay(year); - len = mNtc_make_auto_nwrite_day_string(buf, lbRTC_SEPTEMBER, autumnal_equi_day); - mHandbill_Set_free_str(4, buf, len); + lbRk_HarvestMoonDay(&harvest_moon_date, year); + len = mNtc_make_auto_nwrite_day_string(buf, harvest_moon_date.month, harvest_moon_date.day); + mHandbill_Set_free_str(2, buf, len); + autumnal_equi_day = lbRk_AutumnalEquinoxDay(year); + len = mNtc_make_auto_nwrite_day_string(buf, lbRTC_SEPTEMBER, autumnal_equi_day); + mHandbill_Set_free_str(4, buf, len); } extern void mNtc_auto_nwrite_time_ct() { - mNtc_make_auto_nwrite_data_list(); + mNtc_make_auto_nwrite_data_list(); - if (lbRTC_IsEqualTime(Save_GetPointer(saved_auto_nwrite_time), &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) == TRUE) { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - mNtc_set_near_old_nwrite_data(&rtc_time, Common_GetPointer(auto_nwrite_year), Common_GetPointer(auto_nwrite_count)); - } - else { - mNtc_set_near_old_nwrite_data(Save_GetPointer(save_check.time), Common_GetPointer(auto_nwrite_year), Common_GetPointer(auto_nwrite_count)); - } + if (lbRTC_IsEqualTime(Save_GetPointer(saved_auto_nwrite_time), &mTM_rtcTime_clear_code, lbRTC_CHECK_ALL) == TRUE) { + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + mNtc_set_near_old_nwrite_data(&rtc_time, Common_GetPointer(auto_nwrite_year), + Common_GetPointer(auto_nwrite_count)); + } else { + mNtc_set_near_old_nwrite_data(Save_GetPointer(save_check.time), Common_GetPointer(auto_nwrite_year), + Common_GetPointer(auto_nwrite_count)); + } } /* TODO: better understand this function & refactor */ static int mNtc_get_fishing_day(lbRTC_ymd_c* ymds, u16* dates, lbRTC_time_c* time, u16* fishing_term_date) { - int notice_year; - int notice_hour; - lbRTC_time_c time_temp; - lbRTC_ymd_c ymd_buf[5]; - int valid_count = 0; - int i; + int notice_year; + int notice_hour; + lbRTC_time_c time_temp; + lbRTC_ymd_c ymd_buf[5]; + int valid_count = 0; + int i; - if (Common_Get(auto_nwrite_set) == FALSE) { - if (mTM_IsTimeCleared(Save_GetPointer(saved_auto_nwrite_time))) { - notice_year = time->year; - notice_hour = time->hour; + if (Common_Get(auto_nwrite_set) == FALSE) { + if (mTM_IsTimeCleared(Save_GetPointer(saved_auto_nwrite_time))) { + notice_year = time->year; + notice_hour = time->hour; + } else { + notice_year = Save_Get(saved_auto_nwrite_time.year); + notice_hour = Save_Get(saved_auto_nwrite_time.hour); + } + } else { + notice_year = Common_Get(auto_nwrite_time.year); + notice_hour = Common_Get(auto_nwrite_time.hour); } - else { - notice_year = Save_Get(saved_auto_nwrite_time.year); - notice_hour = Save_Get(saved_auto_nwrite_time.hour); + + time_temp = *time; + mEv_fishday(ymd_buf, &time_temp); + + for (i = 0; i < 5; i++) { + dates[i] = 0; + ymds[i].year = 0; + ymds[i].month = 0; + ymds[i].day = 0; } - } - else { - notice_year = Common_Get(auto_nwrite_time.year); - notice_hour = Common_Get(auto_nwrite_time.hour); - } - time_temp = *time; - mEv_fishday(ymd_buf, &time_temp); + for (i = 0; i < 5; i++) { + lbRTC_ymd_c* ymd = ymd_buf + i; + u16 month_day = (ymd_buf[i].month << 8) + ymd_buf[i].day; - for (i = 0; i < 5; i++) { - dates[i] = 0; - ymds[i].year = 0; - ymds[i].month = 0; - ymds[i].day = 0; - } - - for (i = 0; i < 5; i++) { - lbRTC_ymd_c* ymd = ymd_buf + i; - u16 month_day = (ymd_buf[i].month << 8) + ymd_buf[i].day; - - if (ymd->year > notice_year || - (notice_year == ymd->year && (month_day > *fishing_term_date || - (month_day == *fishing_term_date && notice_hour < 18))) - ) { - dates[valid_count] = month_day; - ymds[valid_count] = *ymd; - valid_count++; + if (ymd->year > notice_year || + (notice_year == ymd->year && + (month_day > *fishing_term_date || (month_day == *fishing_term_date && notice_hour < 18)))) { + dates[valid_count] = month_day; + ymds[valid_count] = *ymd; + valid_count++; + } } - } - return valid_count; + return valid_count; } static void mNtc_set_fishing_term(u16* date, lbRTC_year_t* year) { - if (Common_Get(auto_nwrite_set) == FALSE) { - if (mTM_IsTimeCleared(Save_GetPointer(saved_auto_nwrite_time))) { - *date = (Common_Get(time.rtc_time.month) << 8) + Common_Get(time.rtc_time.day); - *year = Common_Get(time.rtc_time.year); + if (Common_Get(auto_nwrite_set) == FALSE) { + if (mTM_IsTimeCleared(Save_GetPointer(saved_auto_nwrite_time))) { + *date = (Common_Get(time.rtc_time.month) << 8) + Common_Get(time.rtc_time.day); + *year = Common_Get(time.rtc_time.year); + } else { + *date = (Save_Get(saved_auto_nwrite_time.month) << 8) + Save_Get(saved_auto_nwrite_time.day); + *year = Save_Get(saved_auto_nwrite_time.year); + } + } else { + *date = (Common_Get(auto_nwrite_time.month) << 8) + Common_Get(auto_nwrite_time.day); + *year = Common_Get(auto_nwrite_time.year); } - else { - *date = (Save_Get(saved_auto_nwrite_time.month) << 8) + Save_Get(saved_auto_nwrite_time.day); - *year = Save_Get(saved_auto_nwrite_time.year); - } - } - else { - *date = (Common_Get(auto_nwrite_time.month) << 8) + Common_Get(auto_nwrite_time.day); - *year = Common_Get(auto_nwrite_time.year); - } } -// @nonmatching -/* TODO: match */ -static void mNtc_decide_nwrite_data( - int* write_count, - lbRTC_year_t* nwrite_year, - u8* nwrite_num, - lbRTC_year_t now_nwrite_year, - u8 now_nwrite_num, - lbRTC_year_t* out_nwrite_years, - u8* out_nwrite_nums, - int* fishing_day, - u16 fishing_term_date, - lbRTC_year_t fishing_term_year, - lbRTC_ymd_c* ymds, - u16* month_days -) { +static void mNtc_decide_nwrite_data(int* write_count, lbRTC_year_t* nwrite_year, u8* nwrite_num, + lbRTC_year_t now_nwrite_year, u8 now_nwrite_num, lbRTC_year_t* out_nwrite_years, + u8* out_nwrite_nums, int* fishing_day, u16 fishing_term_date, + lbRTC_year_t fishing_term_year, const lbRTC_ymd_c* ymds, const u16* month_days) { - while (*write_count != 0) { - while (TRUE) { - //fish_day = *fishing_day; - if ((*fishing_day <= 0 || (ymds[*fishing_day - 1].year <= fishing_term_year && (fishing_term_year != ymds[*fishing_day - 1].year || (month_days[*fishing_day - 1] < fishing_term_date)))) || - (ymds[*fishing_day - 1].year <= *nwrite_year && (*nwrite_year != ymds[*fishing_day - 1].year || month_days[*fishing_day - 1] < mNtc_auto_nwrite_data[*nwrite_num].date)) - ) { - break; - } + while (*write_count != 0) { + if (*fishing_day > 0) { + if ((ymds[*fishing_day - 1].year > fishing_term_year || + (fishing_term_year == ymds[*fishing_day - 1].year && + (month_days[*fishing_day - 1] >= fishing_term_date)))) { + if (ymds[*fishing_day - 1].year > *nwrite_year || + (*nwrite_year == ymds[*fishing_day - 1].year && + month_days[*fishing_day - 1] >= mNtc_auto_nwrite_data[*nwrite_num].date)) { + (*write_count)--; + (*fishing_day)--; - (*write_count)--; - (*fishing_day)--; + out_nwrite_years[*write_count] = 0xFFFF; + out_nwrite_nums[*write_count] = 0xFFFF; + continue; + } + } + } - out_nwrite_years[*write_count] = -1; - out_nwrite_nums[*write_count] = -1; + if (*nwrite_year > now_nwrite_year || (*nwrite_year == now_nwrite_year && *nwrite_num > now_nwrite_num)) { + (*write_count)--; + + out_nwrite_years[*write_count] = *nwrite_year; + out_nwrite_nums[*write_count] = *nwrite_num; + + if (*nwrite_num == 0) { + *nwrite_num = mNtc_get_auto_nwrite_data_last_idx(); + (*nwrite_year)--; + } else { + (*nwrite_num)--; + } + } else { + break; + } } - - if (*nwrite_year <= now_nwrite_year) { - if (*nwrite_year != now_nwrite_year) { - return; - } - if (*nwrite_num <= now_nwrite_num) { - return; - } - } - - (*write_count)--; - - out_nwrite_years[*write_count] = *nwrite_year; - out_nwrite_nums[*write_count] = *nwrite_num; - - if (*nwrite_num == 0) { - *nwrite_num = mNtc_get_auto_nwrite_data_last_idx(); - (*nwrite_year)--; - } - else { - (*nwrite_num)--; - } - } } -// @nonmatching -/* TODO: match */ -static void mNtc_set_auto_nwrite(int write_count, u8* nwrite_nums, lbRTC_year_t* nwrite_years, int fishing_day, lbRTC_ymd_c* ymds, u16* month_days) { - mNtc_board_post_c post; - lbRTC_year_t now_year; - int header_back_pos; - u8 footer[MAIL_FOOTER_LEN]; - u8 header[MAIL_HEADER_LEN]; - int year; - int month; - int day; +static void mNtc_set_auto_nwrite(int write_count, u8* nwrite_nums, lbRTC_year_t* nwrite_years, int fishing_day, + lbRTC_ymd_c* ymds, const u16* month_days) { + lbRTC_year_t now_year; + mNtc_board_post_c post; + int header_back_pos; + u8 header[MAIL_FOOTER_LEN]; + u8 footer[MAIL_FOOTER_LEN]; + int year; + lbRTC_month_t month; + lbRTC_day_t day; - post.post_time.sec = 0; - post.post_time.min = 0; - post.post_time.hour = 0; + post.post_time.sec = 0; + post.post_time.min = 0; + post.post_time.hour = 6; - now_year = 0; + now_year = 0; - for (write_count; write_count < 5; write_count++) { - /* write 'fishing day' info */ - if (nwrite_nums[write_count] == mNtc_FISHING_DAY_NUM && nwrite_years[write_count] == mNtc_FISHING_DAY_YEAR) { - lbRTC_ymd_c* post_date = ymds + fishing_day; - lbRTC_ymd_c temp; - int id; - post.post_time.year = post_date->year; - post.post_time.month = mNtc_GET_MONTH(month_days[fishing_day]); - post.post_time.day = mNtc_GET_DAY(month_days[fishing_day]); - post.post_time.weekday = lbRTC_Week(post.post_time.year, post.post_time.month, post.post_time.day); + for (write_count; write_count < 5; write_count++) { + /* write 'fishing day' info */ + if (nwrite_nums[write_count] == mNtc_FISHING_DAY_NUM && nwrite_years[write_count] == mNtc_FISHING_DAY_YEAR) { + lbRTC_ymd_c temp; + lbRTC_ymd_c* post_date = &ymds[fishing_day]; + lbRTC_year_t year = post_date->year; + u8 month = mNtc_GET_MONTH(month_days[fishing_day]); + u8 day = mNtc_GET_DAY(month_days[fishing_day]); + int id = (post_date->day / 7) & 3; - temp = *post_date; - mNtc_set_auto_nwrite_fishing_string(&temp); - now_year = 0; - mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, 0x242 + ((post_date->day / 7u) & 3)); - mNtc_notice_write(&post); + post.post_time.year = year; + post.post_time.month = month; + post.post_time.day = day; + post.post_time.weekday = lbRTC_Week(year, month, day); + + temp = *post_date; + mNtc_set_auto_nwrite_fishing_string(&temp); + now_year = 0; + mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, 0x242 + id); + mNtc_notice_write(&post); + fishing_day++; + } else { /* write standard post */ + mNtc_set_auto_nwrite_common_string(); + /* check if we need to change the year string to a different year */ + if (now_year != nwrite_years[write_count]) { + mNtc_set_auto_nwrite_string(nwrite_years[write_count]); + now_year = nwrite_years[write_count]; + } + + year = nwrite_years[write_count]; + month = mNtc_GET_MONTH(mNtc_auto_nwrite_data[nwrite_nums[write_count]].date); + day = mNtc_GET_DAY(mNtc_auto_nwrite_data[nwrite_nums[write_count]].date); + + post.post_time.year = year; + post.post_time.month = month; + post.post_time.day = day; + post.post_time.weekday = lbRTC_Week(year, month, day); + + mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, + 0x1A4 + mNtc_auto_nwrite_data[nwrite_nums[write_count]].id); + mNtc_notice_write(&post); + } } - else { /* write standard post */ - mNtc_set_auto_nwrite_common_string(); - /* check if we need to change the year string to a different year */ - if (now_year != nwrite_years[write_count]) { - mNtc_set_auto_nwrite_string(nwrite_years[write_count]); - now_year = nwrite_years[write_count]; - } - - year = nwrite_years[write_count]; - month = mNtc_GET_MONTH(mNtc_auto_nwrite_data[nwrite_nums[write_count]].date); - day = mNtc_GET_DAY(mNtc_auto_nwrite_data[nwrite_nums[write_count]].date); - - post.post_time.year = year; - post.post_time.month = month; - post.post_time.day = day; - post.post_time.weekday = lbRTC_Week(year, month, day); - - mHandbill_Load_HandbillFromRom(header, &header_back_pos, footer, post.message, 0x1A4 + mNtc_auto_nwrite_data[nwrite_nums[write_count]].id); - mNtc_notice_write(&post); - } - } } extern void mNtc_set_auto_nwrite_data() { - u8 nwrite_num; - u16 fishing_term_date; - lbRTC_year_t fishing_term_year; - lbRTC_year_t nwrite_year; - lbRTC_year_t now_nwrite_year; - u8 now_nwrite_num; - lbRTC_time_c rtc_time; - u8 set_nwrite_nums[5]; - lbRTC_ymd_c nwrite_ymds[mNtc_NWRITE_NUM]; - u16 nwrite_dates[mNtc_NWRITE_NUM]; - lbRTC_year_t set_nwrite_years[mNtc_NWRITE_NUM]; - int write_count; - - if (mEv_CheckTitleDemo() == FALSE && mFI_GET_TYPE(mFI_GetFieldId()) == mFI_TYPE(mFI_FIELDTYPE_FG)) { - int fishing_day; - now_nwrite_year = Common_Get(auto_nwrite_year); - if (now_nwrite_year != 0) { - write_count = mNtc_NWRITE_NUM; - fishing_day = 0; - rtc_time = Common_Get(time.rtc_time); - now_nwrite_num = Common_Get(auto_nwrite_count); - mNtc_make_auto_nwrite_data_list(); - mNtc_set_fishing_term(&fishing_term_date, &fishing_term_year); - fishing_day = mNtc_get_fishing_day(nwrite_ymds, nwrite_dates, &rtc_time, &fishing_term_date); - mNtc_set_near_old_nwrite_data(&rtc_time, &nwrite_year, &nwrite_num); + u8 nwrite_num; + u16 fishing_term_date; + lbRTC_year_t fishing_term_year; + lbRTC_year_t nwrite_year; + lbRTC_year_t now_nwrite_year; + u8 now_nwrite_num; + lbRTC_time_c rtc_time; + u8 set_nwrite_nums[5]; + lbRTC_ymd_c nwrite_ymds[mNtc_NWRITE_NUM]; + u16 nwrite_dates[mNtc_NWRITE_NUM]; + lbRTC_year_t set_nwrite_years[mNtc_NWRITE_NUM]; + int write_count; - mNtc_decide_nwrite_data( - &write_count, - &nwrite_year, - &nwrite_num, - now_nwrite_year, - now_nwrite_num, - set_nwrite_years, - set_nwrite_nums, - &fishing_day, - fishing_term_date, - fishing_term_year, - nwrite_ymds, - nwrite_dates - ); + if (mEv_CheckTitleDemo() == FALSE && mFI_GET_TYPE(mFI_GetFieldId()) == mFI_TYPE(mFI_FIELDTYPE_FG)) { + int fishing_day; + now_nwrite_year = Common_Get(auto_nwrite_year); + if (now_nwrite_year != 0) { + write_count = mNtc_NWRITE_NUM; + fishing_day = 0; + rtc_time = Common_Get(time.rtc_time); + now_nwrite_num = Common_Get(auto_nwrite_count); + mNtc_make_auto_nwrite_data_list(); + mNtc_set_fishing_term(&fishing_term_date, &fishing_term_year); + fishing_day = mNtc_get_fishing_day(nwrite_ymds, nwrite_dates, &rtc_time, &fishing_term_date); + mNtc_set_near_old_nwrite_data(&rtc_time, &nwrite_year, &nwrite_num); - if (write_count != mNtc_NWRITE_NUM) { - mNtc_set_auto_nwrite(write_count, set_nwrite_nums, set_nwrite_years, fishing_day, nwrite_ymds, nwrite_dates); - } - else { - if (Common_Get(buried_treasure_flag) == FALSE) { - mNtc_check_treasure(); + mNtc_decide_nwrite_data(&write_count, &nwrite_year, &nwrite_num, now_nwrite_year, now_nwrite_num, + set_nwrite_years, set_nwrite_nums, &fishing_day, fishing_term_date, + fishing_term_year, nwrite_ymds, nwrite_dates); + + if (write_count != mNtc_NWRITE_NUM) { + mNtc_set_auto_nwrite(write_count, set_nwrite_nums, set_nwrite_years, fishing_day, nwrite_ymds, + nwrite_dates); + } else { + if (Common_Get(buried_treasure_flag) == FALSE) { + mNtc_check_treasure(); + } + } + + mNtc_set_near_old_nwrite_data(&rtc_time, &nwrite_year, &nwrite_num); + + Common_Set(auto_nwrite_year, nwrite_year); + Common_Set(auto_nwrite_count, nwrite_num); + Common_Set(auto_nwrite_set, TRUE); + Common_Set(auto_nwrite_time, Common_Get(time.rtc_time)); + Save_Set(saved_auto_nwrite_time, Common_Get(time.rtc_time)); + mFR_fishmail(); /* send fishing tourney result mail */ + Common_Set(buried_treasure_flag, TRUE); + lbRTC_TimeCopy(Save_GetPointer(treasure_checked_time), &rtc_time); } - } - - mNtc_set_near_old_nwrite_data(&rtc_time, &nwrite_year, &nwrite_num); - - Common_Set(auto_nwrite_year, nwrite_year); - Common_Set(auto_nwrite_count, nwrite_num); - Common_Set(auto_nwrite_set, TRUE); - Common_Set(auto_nwrite_time, Common_Get(time.rtc_time)); - Save_Set(saved_auto_nwrite_time, Common_Get(time.rtc_time)); - mFR_fishmail(); /* send fishing tourney result mail */ - Common_Set(buried_treasure_flag, TRUE); - lbRTC_TimeCopy(Save_GetPointer(treasure_checked_time), &rtc_time); } - } } diff --git a/src/m_npc.c b/src/m_npc.c index e0af6a8d..ae2679b3 100644 --- a/src/m_npc.c +++ b/src/m_npc.c @@ -362,6 +362,8 @@ extern void mNpc_CopyAnimalMemory(Anmmem_c* dst, Anmmem_c* src) { */ extern void mNpc_AddFriendship(Anmmem_c* memory, int amount) { + int friendship; + /* @BUG - devs checked for memory being NULL *after* deferencing it */ #ifdef BUGFIXES if (memory == NULL) { @@ -369,7 +371,7 @@ extern void mNpc_AddFriendship(Anmmem_c* memory, int amount) { } #endif - int friendship = memory->friendship + amount; + friendship = memory->friendship + amount; #ifndef BUGFIXES if (memory == NULL) { @@ -410,7 +412,7 @@ extern void mNpc_RenewalAnimalMemory() { for (j = 0; j < ANIMAL_MEMORY_NUM; j++) { if (mNpc_CheckFreeAnimalMemory(memory) == FALSE && mLd_CheckThisLand(memory->memory_player_id.land_name, memory->memory_player_id.land_id) == TRUE) { - priv = Save_Get(private); + priv = Save_Get(private_data); for (k = 0; k < PLAYER_NUM; k++) { if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && @@ -481,7 +483,7 @@ extern int mNpc_GetOldPlayerAnimalMemoryIdx(Anmmem_c* memory, int num) { for (i = 0; i < num; i++) { if (mNpc_CheckFreeAnimalMemory(memory) == FALSE && mLd_CheckThisLand(memory->memory_player_id.land_name, memory->memory_player_id.land_id) == TRUE) { - priv = Save_Get(private); + priv = Save_Get(private_data); for (j = 0; j < PLAYER_NUM; j++) { if (mPr_NullCheckPersonalID(&priv->player_ID) == FALSE && @@ -756,7 +758,7 @@ static int mNpc_GetAnimalMemoryFriend_Land_Sex(Anmmem_c* memory, int num, int se if (mNpc_CheckFreeAnimalMemory(memory) == FALSE) { priv_idx = mPr_GetPrivateIdx(&memory->memory_player_id); - if (priv_idx != -1 && Save_Get(private[priv_idx]).gender == sex && + if (priv_idx != -1 && Save_Get(private_data[priv_idx]).gender == sex && mNpc_SelectBestFriend(&best_friend, memory, &best_friendship) == TRUE) { res = i; } @@ -1757,7 +1759,7 @@ static void mNpc_SendEventPresentMailSex(int* selected, u8* type, Animal_c* anim /* this used to be mNpc_SendEventPresentMail_common in DnM and DnM+ (handled both valentine's day & white day) */ -extern int mNpc_SendVtdayMail() { +extern int mNpc_SendVtdayMail(int type) { u8 types[ANIMAL_NUM_MAX]; int other_sex_best_friends[ANIMAL_NUM_MAX]; Animal_c* animal_p; @@ -3176,7 +3178,7 @@ static int mNpc_DecideRemoveAnimalNo_Friend(Animal_c* animal, int ignored_idx, i n_players = 0; num_possible = 0; remove_bitfield = 0; - priv_p = Save_Get(private); + priv_p = Save_Get(private_data); for (i = 0; i < PLAYER_NUM; i++) { if (mPr_NullCheckPersonalID(&priv_p->player_ID) == FALSE) { @@ -3190,7 +3192,7 @@ static int mNpc_DecideRemoveAnimalNo_Friend(Animal_c* animal, int ignored_idx, i for (i = 0; i < ANIMAL_NUM_MAX; i++) { if (mNpc_CheckFreeAnimalInfo(animal) == FALSE && i != ignored_idx) { met = 0; - priv_p = Save_Get(private); + priv_p = Save_Get(private_data); for (j = 0; j < PLAYER_NUM; j++) { if (mPr_NullCheckPersonalID(&priv_p->player_ID) == FALSE) { @@ -3456,7 +3458,7 @@ extern void mNpc_FirstClearGoodbyMail() { } static void mNpc_SetGoodbyAnimalMail(Anm_GoodbyMail_c* goodby_mail, AnmPersonalID_c* anm_id) { - Private_c* priv = Save_Get(private); + Private_c* priv = Save_Get(private_data); int i; if (anm_id != NULL && mNpc_CheckFreeAnimalPersonalID(anm_id) == FALSE) { @@ -3519,7 +3521,7 @@ static int mNpc_SendGoodbyAnimalMailOne(Mail_c* mail, PersonalID_c* pid, int pla } static void mNpc_SendGoodbyAnimalMail(Anm_GoodbyMail_c* goodby_mail) { - Private_c* priv = Save_Get(private); + Private_c* priv = Save_Get(private_data); int i; if (mNpc_CheckFreeAnimalPersonalID(&goodby_mail->id) == FALSE) { @@ -7083,7 +7085,7 @@ static int mNpc_SendHPMail_analysis(PersonalID_c* pid, AnmPersonalID_c* anm_id, } extern void mNpc_SendHPMail() { - Private_c* priv = Save_Get(private); + Private_c* priv = Save_Get(private_data); Private_c* priv_p; Animal_c* animal = Save_Get(animals); AnmHPMail_c* hp_mail; diff --git a/src/m_play.c b/src/m_play.c index 4cd21dbb..7e47f95a 100644 --- a/src/m_play.c +++ b/src/m_play.c @@ -586,7 +586,7 @@ void Game_play_move(GAME_PLAY* play) { play->game.doing_point = 2; mPO_business_proc(play); play->game.doing_point = 3; - mTRC_move(play); + mTRC_move(&play->game); play->game.doing_point = 4; Balloon_move(play); mEnv_ManagePointLight(play, &play->kankyo, &play->global_light); diff --git a/src/m_player.c b/src/m_player.c new file mode 100644 index 00000000..c2fcb463 --- /dev/null +++ b/src/m_player.c @@ -0,0 +1,1643 @@ +#include "m_player_lib.h" + +#include "libultra/libultra.h" +#include "m_play.h" +#include "m_common_data.h" +#include "m_actor_shadow.h" +#include "m_bgm.h" +#include "sys_matrix.h" +#include "ac_tools.h" +#include "m_rcp.h" +#include "ac_my_room.h" +#include "ac_insect.h" +#include "ac_set_ovl_insect.h" +#include "m_house.h" +#include "ac_sign.h" +#include "m_msg.h" +#include "m_choice.h" +#include "ac_ball.h" +#include "ac_snowman.h" +#include "ac_boat_demo.h" +#include "ac_balloon.h" +#include "ac_uki.h" +#include "ac_insect.h" +#include "ac_gyoei.h" +#include "ac_gyo_release.h" +#include "jsyswrap.h" +#include "ac_set_ovl_gyoei.h" +#include "m_vibctl.h" +#include "m_debug.h" + +/* Static function declarations, add as needed for intellisense */ +static void Player_actor_Item_Setup_main(ACTOR* actor, int now, int last); +static mActor_name_t Player_actor_Get_ItemNoSubmenu(void); +static int Player_actor_request_main_broken_axe_type_swing(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + int hit_ut_x, int hit_ut_z, int priority); +static int Player_actor_request_main_swing_axe_all(GAME* game, const xyz_t* pos, mActor_name_t hit_item, u16 damage_no, + int hit_ut_x, int hit_ut_z, int priority); +static int Player_actor_request_main_broken_axe_type_reflect(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + ACTOR* hit_actor, int priority); +static int Player_actor_request_main_reflect_axe_all(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + u16 damage_no, ACTOR* hit_actor, int priority); +static int Player_actor_request_main_air_axe_all(GAME* game, int priority); +static int Player_actor_request_main_rotate_umbrella_all(GAME* game, int prio); +static int Player_actor_request_main_swing_fan_all(GAME* game, int start_swing, int prio); +static int Player_actor_request_main_wade_all(GAME* game, int dir, int priority); +static int Player_actor_request_main_demo_wade_all(GAME* game, int dir, int priority); +static int Player_actor_request_main_demo_geton_boat_wade_all(GAME* game, int dir, f32 border_ofs, int prio); +static int Player_actor_request_main_wade_snowball_all(GAME* game, int dir, const xyz_t* snowball_dist_p, int priority); +static int Player_actor_Check_ItemAnimationToItemKind(int kind, int anim); +static int Player_actor_request_main_dig_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t name, int priority); +static int Player_actor_request_main_fill_scoop_all(GAME* game, const xyz_t* pos, int priority); +static int Player_actor_request_main_reflect_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, + ACTOR* hit_actor, int priority); +static int Player_actor_request_main_air_scoop_all(GAME* game, int priority); +static int Player_actor_request_main_get_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, int priority); +static int Player_actor_request_main_shake_tree_all(GAME* game, const xyz_t* target_pos_p, mActor_name_t item, + int tree_ut_x, int tree_ut_z, int priority); +static int Player_actor_request_main_ready_pitfall_all(GAME* game, const xyz_t* pos_p, int prio); +static int Player_actor_request_main_knock_door(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio); +static s8 Player_actor_Get_ItemKind_fromScene(void); +static int Player_actor_request_main_putin_item(GAME* game, int priority); +static int Player_actor_request_main_takeout_item(GAME* game, int priority); +static void Player_actor_Refuse_pickup_demo_ct(ACTOR* actor); +static int Player_actor_request_main_pickup_jump(GAME* game, int slot_idx, mActor_name_t item, const xyz_t* item_pos_p, + int ftr_flag, int knife_and_fork_flag); +static int Player_actor_request_main_pickup_furniture(GAME* game, int slot_idx, mActor_name_t item, + const xyz_t* item_pos_p); +static int Player_actor_request_main_remove_grass(GAME* game, const xyz_t* target_pos_p, const xyz_t* grass_pos_p); +static int Player_actor_request_main_pickup(GAME* game, mActor_name_t item, const xyz_t* target_pos_p, + const xyz_t* item_pos_p, int slot_idx, int signboard_flag); +static int Player_actor_request_main_radio_exercise_all(GAME* game, int cmd, f32 speed, int prio); +static void Player_actor_request_main_change_from_submenu(ACTOR* actorx, GAME* game); +static void Player_actor_request_change_item(GAME* game); +static int Player_actor_check_request_main_able(GAME* game, int request_main_index, int priority); +static void Player_actor_request_main_index(GAME* game, int request_index, int priority); +static void Player_actor_InitAnimation_Base1(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 anim0_frame, + f32 anim1_frame, f32 frame_speed, f32 morph_counter, int part_table_idx); +static void Player_actor_InitAnimation_Base2(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 anim0_frame, + f32 anim1_frame, f32 frame_speed, f32 morph_counter, int mode, + int part_table_idx); +static void Player_actor_InitAnimation_Base3(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 frame_speed, + f32 morph_counter, int mode, int part_table_idx); +static void Player_actor_SetupItem_Base1(ACTOR* actorx, int anim1_idx, f32 item_morph_speed, int* anim1_idx_p, + int* part_table_idx_p); +static void Player_actor_setup_main_Base(ACTOR* actorx, GAME* game); +static int Player_actor_Movement_Base_Braking_common(ACTOR* actorx, f32 brake_amount); +static int Player_actor_Movement_Base_Braking(ACTOR* actorx); +static void Player_actor_Movement_Base_Stop(ACTOR* actorx, int use_position_speed_y); +static int Player_actor_CulcAnimation_Base2(ACTOR* actorx, f32* last_anim0_current_frame_p); +static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, f32 frame); +static int Player_actor_Check_AnimationFrame(cKF_FrameControl_c* fc_p, f32 target_frame); +static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx); +static void Player_actor_set_eye_pattern_normal(ACTOR* actorx); +static void Player_actor_set_mouth_pattern(ACTOR* actorx, int idx); +static void Player_actor_set_tex_anime_pattern(ACTOR* actorx); +static void Player_actor_Excute_Corect_forBrake(ACTOR* actorx, GAME* game); +static void Player_actor_Excute_Corect_forStand(ACTOR* actorx, GAME* game); +static void Player_actor_BGcheck_common_type1(ACTOR* actorx); +static void Player_actor_BGcheck_common_type2(ACTOR* actorx); +static void Player_actor_BGcheck_common_type3(ACTOR* actorx); +static int Player_actor_RecieveDemoOrder_EffectOrder(void); +static void Player_actor_Reinput_force_position_angle(ACTOR* actorx, GAME* game); +static void Player_actor_recover_lean_angle(ACTOR* actorx); +static int Player_actor_Check_TradingItemMode(u8 mode); +static void Player_actor_SettleRequestMainIndexPriority(ACTOR* actorx); +static int Player_actor_check_item_is_fish(mActor_name_t item); +static void Player_actor_Change_ItemParent(ACTOR* actor); +static void Player_actor_Set_item_matrix_set(ACTOR* actorx); +static void Player_actor_Unset_item_matrix_set(ACTOR* actorx); +static void Player_actor_Birth_TradingItem(ACTOR* actor, mActor_name_t item, int mode, int present_flag); +static void Player_actor_CHange_TradingItemMode(ACTOR* actorx, u8 mode); +static int Player_actor_Check_ItemParent(ACTOR* actor); +static ACTOR* Player_actor_Get_umbrella_p(ACTOR* actor, GAME* game); +static s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind); +static void Player_actor_Set_now_item_main_index(ACTOR* actorx, int item_main_index); +static void Player_actor_SetEffect_forTakeout_item(ACTOR* actorx, GAME* game); +static void Player_actor_Set_FootMark_Base1(ACTOR* actorx, GAME* game, int disable_effect, int disable_sound); +static s8 Player_actor_Get_ItemKind_from_submenu(void); +static int Player_actor_Set_shake_tree_table(ACTOR* actorx, GAME* game, mActor_name_t item, int tree_ut_x, + int tree_ut_z, int little_flag); +static int Player_actor_Check_BirthBee_common(ACTOR* actorx, mActor_name_t item, int tree_ut_x, int tree_ut_z, + s16* angle_y_p); +static void Player_actor_Set_status_for_bee(ACTOR* actorx, s8 v); +static int Player_actor_check_able_request_main_index_for_reset(int request_main_index); +static void Player_actor_putin_item(int slot, mActor_name_t item, xyz_t* pos_p); +static void Player_actor_putin_item_layer2(int slot, mActor_name_t item, xyz_t* pos_p); +static void Player_actor_putin_furniture(GAME* game, int slot, mActor_name_t item); + +static void Player_actor_sound_SetStatus(ACTOR* actor); +static void Player_actor_set_sound_common1(xyz_t* pos, u16 id); +static void Player_actor_set_sound_common2(ACTOR* actor, u16 id); +static void Player_actor_sound_FootStep1(ACTOR* actor, u16 id); +static void Player_actor_sound_FootStep2(ACTOR* actor); +static void Player_actor_sound_Tumble(ACTOR* actor); +static void Player_actor_sound_AMI_FURI(ACTOR* actor); +static void Player_actor_sound_AMI_HIT(ACTOR* actor); +static void Player_actor_sound_AMI_GET(ACTOR* actor); +static void Player_actor_sound_GASAGOSO(ACTOR* actor); +static void Player_actor_sound_AXE_FURI(ACTOR* actor); +static void Player_actor_sound_AXE_HIT(ACTOR* actor, xyz_t* pos); +static void Player_actor_sound_AXE_CUT(ACTOR* actor, xyz_t* pos); +static void Player_actor_sound_SIT(ACTOR* actor, int ftr_idx); +static void Player_actor_sound_STANDUP(ACTOR* actor, int ftr_idx); +static void Player_actor_sound_JUMP(ACTOR* actor); +static void Player_actor_sound_LANDING(ACTOR* actor); +static void Player_actor_sound_ITEM_GET(ACTOR* actor); +static void Player_actor_sound_BED_IN(ACTOR* actor); +static void Player_actor_sound_BED_NEGAERI(ACTOR* actor); +static void Player_actor_sound_BED_OUT(ACTOR* actor); +static void Player_actor_sound_ROD_STROKE(ACTOR* actor); +static void Player_actor_sound_ROD_STROKE_small(ACTOR* actor); +static void Player_actor_sound_ROD_BACK(ACTOR* actor); +static void Player_actor_sound_scoop1(ACTOR* actor); +static void Player_actor_sound_scoop_umeru(ACTOR* actor); +static void Player_actor_sound_scoop_hit(ACTOR* actor); +static void Player_actor_sound_scoop_shigemi(ACTOR* actor); +static void Player_actor_sound_ITEM_HORIDASHI(ACTOR* actor); +static void Player_actor_sound_slip(ACTOR* actor); +static void Player_actor_sound_tree_touch(xyz_t* pos); +static void Player_actor_sound_tree_yurasu(xyz_t* pos); +static void Player_actor_sound_kirikabu_scoop(ACTOR* actor); +static void Player_actor_sound_kirikabu_out(ACTOR* actor); +static void Player_actor_sound_knock(ACTOR* actor); +static void Player_actor_sound_coin_gasagoso(ACTOR* actor); +static void Player_actor_sound_araiiki(ACTOR* actor); +static void Player_actor_sound_zassou_nuku(xyz_t* pos); +static void Player_actor_sound_hachi_sasareru(ACTOR* actor); +static void Player_actor_sound_wear(ACTOR* actor); +static void Player_actor_sound_dai_ue_kakunou(ACTOR* actor); +static void Player_actor_sound_umbrella_rotate(ACTOR* actor); +static u8 Player_actor_sound_Get_bgm_num_forCompletePayment(void); +static u8 Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(int type); +static void Player_actor_sound_camera_move1(void); +static void Player_actor_sound_camera_move2(); +static void Player_actor_sound_karaburi(ACTOR* actor); +static void Player_actor_sound_scoop_tree_hit(ACTOR* actor); +static void Player_actor_sound_scoop_item_hit(ACTOR* actor); +static void Player_actor_sound_axe_ball_hit(ACTOR* actor); +static void Player_actor_sound_axe_broken1(ACTOR* actor); +static void Player_actor_sound_axe_broken2(ACTOR* actor); +static void Player_actor_sound_axe_broken3(ACTOR* actor); +static void Player_actor_sound_uchiwa(ACTOR* actor); +static void Player_actor_sound_move_temochi_kazaguruma(ACTOR* actor); + +static void Player_actor_set_viblation_Shake_tree(void); + +static int Player_actor_Item_main(ACTOR* actorx, GAME* game); +static void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, f32 speed, f32 morph_speed, + f32 frame, int mode); +static int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind); + +static int Player_actor_CheckController_forPickup(GAME* game); +static int Player_actor_CheckController_forAxe(GAME* game); +static int Player_actor_CheckController_forNet(GAME* game); +static int Player_actor_CheckController_forRod(GAME* game); +static int Player_actor_CheckController_forScoop(GAME* game); +static int Player_actor_CheckController_forUmbrella(GAME* game); +static int Player_actor_CheckController_forFan(GAME* game, int type); +static int Player_actor_CheckController_forShake_tree(GAME* game); +static f32 Player_actor_CheckController_forStruggle_pitfall(void); +static int Player_actor_CheckController_forDush(void); +static f32 Player_actor_GetController_move_percentX(void); +static f32 Player_actor_GetController_move_percentY(void); +static f32 Player_actor_GetController_move_percentR(void); +static s16 Player_actor_GetController_move_angle(void); +static s16 Player_actor_GetController_old_move_angle(void); +static f32 Player_actor_GetController_recognize_percentR(void); +static f32 Player_actor_GetController_old_recognize_percentR(void); +static int Player_actor_CheckController_forRadio_exercise(GAME* game); + +static void Player_actor_ct_forCorect(ACTOR* actorx, GAME* game); +static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx); +static void Player_actor_set_mouth_pattern(ACTOR* actorx, int idx); +static void Player_actor_Set_old_sound_frame_counter(ACTOR* actorx); +static void Player_actor_change_proc_index(ACTOR* actorx, GAME* game); + +static int Player_actor_request_main_fail_emu(GAME* game, int prio); +static int Player_actor_request_main_intro_all(GAME* game, int prio); +static int Player_actor_request_main_wait_all(GAME* game, f32 morph_speed, f32 _04, int flags, int priority); + +static int Player_actor_request_main_invade_all(GAME*, int); +// static int Player_actor_request_main_refuse(GAME*, int); +// static int Player_actor_request_main_return_demo_all(GAME*, int, f32, int); +// static int Player_actor_request_main_wait_all(GAME*, f32, f32, int, int); +static int Player_actor_request_main_talk_all(GAME*, ACTOR*, int, f32, int, int); +static int Player_actor_request_main_hold(GAME*, int, int, const xyz_t*, f32, int, int); +static int Player_actor_request_main_recieve_wait(GAME*, ACTOR*, int, int, mActor_name_t, int, int); +static int Player_actor_request_main_give_all(GAME*, ACTOR*, int, int, mActor_name_t, int, int, int, int); +static int Player_actor_request_main_sitdown(GAME*, int, const xyz_t*, int, int); +static int Player_actor_request_main_close_furniture(GAME*, int); +static int Player_actor_request_main_lie_bed(GAME*, int, const xyz_t*, int, int, int); +static int Player_actor_request_main_hide(GAME*, int); +static int Player_actor_request_main_groundhog(GAME*, int); +static int Player_actor_request_main_door(GAME*, const xyz_t*, s16, int, void*, int); +static int Player_actor_request_main_outdoor(GAME*, int, int, int); +static int Player_actor_request_main_wash_car_all(GAME*, const xyz_t*, const xyz_t*, s16, ACTOR*, int); +static int Player_actor_request_main_rotate_octagon_all(GAME*, ACTOR*, int, int, const xyz_t*, s16, int); +static int Player_actor_request_main_throw_money_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_pray_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_mail_jump_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_wait_all(GAME*, int, void*, int); +static int Player_actor_request_main_demo_walk_all(GAME*, f32, f32, f32, int, int); +static int Player_actor_request_main_demo_geton_train(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_getoff_train(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_standing_train_all(GAME*, int); +static int Player_actor_request_main_stung_bee_all(GAME*, int); +static int Player_actor_request_main_shock_all(GAME*, f32, s16, s8, int, int); +static int Player_actor_request_main_change_cloth_forNPC(GAME*, mActor_name_t, u16, int); +static int Player_actor_request_main_push_snowball_all(GAME*, void*, int, int); +static int Player_actor_request_main_stung_mosquito_all(GAME*, void*, int); +static int Player_actor_request_main_switch_on_lighthouse_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_geton_boat_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME*, const xyz_t*, s16, int); +static int Player_actor_request_main_demo_get_golden_item2_all(GAME*, int, int); +static int Player_actor_request_main_demo_get_golden_axe_wait_all(GAME*, int); +static int Player_actor_check_request_main_priority(GAME*, int); +static void* Player_actor_get_door_label(GAME*); +static int Player_actor_Set_Item_net_catch_request_table(ACTOR*, GAME*, u32, s8, const xyz_t*, f32); +static f32 Player_actor_Get_Item_net_catch_swing_timer(ACTOR*, GAME*); +static int Player_actor_Set_Item_net_catch_request_force(ACTOR*, GAME*, u32, s8); +static void Player_actor_Set_force_position_angle(GAME*, const xyz_t*, const s_xyz*, u8); +static u8 Player_actor_Get_force_position_angle(GAME*, xyz_t*, s_xyz*); +static int Player_actor_Get_WadeEndPos(GAME*, xyz_t*); +static int Player_actor_Check_Label_main_push_snowball(GAME*, void*); +static int Player_actor_SetParam_for_push_snowball(GAME*, const xyz_t*, s16, f32); +static int Player_actor_able_submenu_request_main_index(GAME*); +static int Player_actor_check_able_change_camera_normal_index(ACTOR*); +static int Player_actor_Check_able_force_speak_label(GAME*, void*); +static int Player_actor_check_cancel_request_change_proc_index(int); +static u32 Player_actor_Get_item_net_catch_label(ACTOR*); +static int Player_actor_Change_item_net_catch_label(ACTOR*, u32, s8); +static int Player_actor_Check_StopNet(ACTOR*, xyz_t*); +static int Player_actor_Check_HitAxe(ACTOR*, xyz_t*); +static int Player_actor_Check_VibUnit_OneFrame(ACTOR*, const xyz_t*); +static int Player_actor_Check_HitScoop(ACTOR*, xyz_t*); +static int Player_actor_Check_DigScoop(ACTOR*, xyz_t*); +static int Player_actor_check_request_change_item(GAME*); +static int Player_actor_Check_RotateOctagon(GAME*); +static int Player_actor_Check_end_stung_bee(ACTOR*); +static int Player_actor_Get_status_for_bee(ACTOR*); +static int Player_actor_Set_ScrollDemo_forWade_snowball(ACTOR*, int, const xyz_t*); +static int Player_actor_Check_tree_shaken(ACTOR*, const xyz_t*); +static int Player_actor_Check_tree_shaken_little(ACTOR*, const xyz_t*); +static int Player_actor_Check_tree_shaken_big(ACTOR*, const xyz_t*); +static int Player_actor_Check_Label_main_wade_snowball(GAME*, void*); +static int Player_actor_GetSnowballPos_forWadeSnowball(ACTOR*, xyz_t*); +static int Player_actor_CheckCondition_forWadeSnowball(GAME*, const xyz_t*, s16); +static mActor_name_t Player_actor_Get_itemNo_forWindow(ACTOR*); +static int Player_actor_check_cancel_event_without_priority(GAME*); +static int Player_actor_CheckScene_AbleSubmenu(void); +static int Player_actor_Check_stung_mosquito(GAME*, void*); + +static int Player_actor_request_main_walk_all(GAME*, xyz_t*, f32, int, int); +static int Player_actor_request_main_run_all(GAME*, f32, int, int); +static int Player_actor_request_main_dash_all(GAME*, f32, int, int); +static int Player_actor_request_main_return_outdoor2_all(GAME* game, int prev_index, int now_index, f32 time, f32 arg5); +static int Player_actor_request_main_fall_all(GAME* game, f32 speed, int flags, int prio); +static int Player_actor_request_main_ready_net(GAME* game, int priority); +static int Player_actor_request_main_ready_rod(GAME* game, int priority); +static int Player_actor_request_main_slip_net(GAME* game, int priority); +static int Player_actor_request_main_turn_dash_all(GAME* game, s16 angle, int prio); +static int Player_actor_request_main_tumble(GAME* game, int priority); +static int Player_actor_request_main_tumble_getup(GAME* game, int prio); +static int Player_actor_request_main_release_creature_all(GAME* game, int type, int gold_scoop_flag, + mPlayer_request_release_creature_u* release_data, + ACTOR* release_actor_p, int prio); +static int Player_actor_request_main_complete_payment(GAME* game, int prio); +static int Player_actor_request_main_push(GAME* game, int ftr_no, s16 angle_y, xyz_t* pos, int priority); +static int Player_actor_request_main_pull(GAME* game, int ftr_no, s16 angle, xyz_t* start_pos, xyz_t* end_pos, + xyz_t* ofs, int priority); +static int Player_actor_request_main_rotate_furniture(GAME* game, int ftr_no, s16 angle, xyz_t* pos, int type, + int priority); +static int Player_actor_request_main_open_furniture(GAME* game, s16 angle, xyz_t* pos, int anim_idx, int priority); +static int Player_actor_request_main_wait_open_furniture(GAME* game, int priority); +static int Player_actor_request_main_wait_bed(GAME* game, int priority); +static int Player_actor_request_main_roll_bed(GAME* game, int direction, int priority); +static int Player_actor_request_main_standup_bed(GAME* game, int move_direction, int priority); +static int Player_actor_request_main_pickup_exchange(GAME* game, const xyz_t* target_pos_p, mActor_name_t item, + int priority); +static int Player_actor_request_main_demo_get_golden_item_all(GAME* game, int type, int prio); +static int Player_actor_request_main_sitdown_wait(GAME* game, int ftr_no, int priority); +static int Player_actor_request_main_standup(GAME* game, int ftr_no, int priority); +static int Player_actor_request_main_swing_net(GAME* game, int priority); +static int Player_actor_request_main_ready_walk_net(GAME* game, int priority); +static int Player_actor_request_main_pull_net(GAME* game, int priority); +static int Player_actor_request_main_stop_net(GAME* game, int priority); +static int Player_actor_request_main_notice_net(GAME* game, int already_collected, int priority); +static int Player_actor_request_main_putaway_net(GAME* game, int exchange_flag, int priority); +static int Player_actor_request_main_cast_rod(GAME* game, const xyz_t* pos, int priority); +static int Player_actor_request_main_air_rod(GAME* game, int priority); +static int Player_actor_request_main_relax_rod(GAME* game, int priority); +static int Player_actor_request_main_vib_rod(GAME* game, int priority); +static int Player_actor_request_main_collect_rod(GAME* game, int priority); +static int Player_actor_request_main_fly_rod(GAME* game, int priority); +static int Player_actor_request_main_notice_rod(GAME* game, s16 angle, int priority); +static int Player_actor_request_main_putaway_rod(GAME* game, s16 angle, int exchange_flag, int priority); +static int Player_actor_request_main_recieve_stretch(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority); +static int Player_actor_request_main_recieve(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority); +static int Player_actor_request_main_recieve_putaway(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority); +static int Player_actor_request_main_give_wait_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority); +static int Player_actor_request_main_demo_geton_train_wait_all(GAME* game, int prio); +static int Player_actor_request_main_tired_all(GAME* game, int priority); +static int Player_actor_request_main_fall_pitfall_all(GAME* game, int prio); +static int Player_actor_request_main_struggle_pitfall_all(GAME* game, int prio); +static int Player_actor_request_main_climbup_pitfall_all(GAME* game, int prio); +static int Player_actor_request_main_notice_bee_all(GAME* game, int prio); +static int Player_actor_request_main_notice_mosquito(GAME* game, u32 label, int prio); +static int Player_actor_request_main_demo_geton_boat_sitdown_all(GAME* game, int prio); +static int Player_actor_request_main_demo_geton_boat_wait_all(GAME* game, int prio); +static int Player_actor_request_main_demo_getoff_boat_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio); + +#ifdef MUST_MATCH +#ifndef __INTELLISENSE__ +/* Force assetrip to detect these assets. They're used in a .c_inc file. */ +FORCESTRIP static Vtx tol_sponge_1_v_0[] = { +#include "assets/tol_sponge_1_v.inc" +}; +FORCESTRIP static u16 tol_sponge_1_pal_0[] ATTRIBUTE_ALIGN(32) = { +#include "assets/tol_sponge_1_pal.inc" +}; +FORCESTRIP static u8 tol_sponge_1_main1_tex_txt_0[] ATTRIBUTE_ALIGN(32) = { +#include "assets/tol_sponge_1_main1_tex_txt.inc" +}; +#endif +#endif + +/* Tool Models */ +#include "../src/m_player_tools.c_inc" + +/* Common */ +#include "../src/m_player_controller.c_inc" +#include "../src/m_player_vibration.c_inc" +#include "../src/m_player_common.c_inc" +#include "../src/m_player_sound.c_inc" +#include "../src/m_player_other_func.c_inc" + +/* Item */ +#include "../src/m_player_item_common.c_inc" +#include "../src/m_player_item_axe.c_inc" +#include "../src/m_player_item_net.c_inc" +#include "../src/m_player_item_umbrella.c_inc" +#include "../src/m_player_item_rod.c_inc" +#include "../src/m_player_item_scoop.c_inc" +#include "../src/m_player_item_balloon.c_inc" +#include "../src/m_player_item_windmill.c_inc" +#include "../src/m_player_item_fan.c_inc" +#include "../src/m_player_item.c_inc" + +/* Draw */ +#include "../src/m_player_draw.c_inc" + +/* Main Index */ +#include "../src/m_player_main_dma.c_inc" +#include "../src/m_player_main_intro.c_inc" +#include "../src/m_player_main_refuse.c_inc" +#include "../src/m_player_main_refuse_pickup.c_inc" +#include "../src/m_player_main_return_demo.c_inc" +#include "../src/m_player_main_return_outdoor.c_inc" +#include "../src/m_player_main_return_outdoor2.c_inc" +#include "../src/m_player_main_wait.c_inc" +#include "../src/m_player_main_walk.c_inc" +#include "../src/m_player_main_run.c_inc" +#include "../src/m_player_main_dash.c_inc" +#include "../src/m_player_main_tumble.c_inc" +#include "../src/m_player_main_tumble_getup.c_inc" +#include "../src/m_player_main_turn_dash.c_inc" +#include "../src/m_player_main_fall.c_inc" +#include "../src/m_player_main_wade.c_inc" +#include "../src/m_player_main_wade_snowball.c_inc" +#include "../src/m_player_main_door.c_inc" +#include "../src/m_player_main_outdoor.c_inc" +#include "../src/m_player_main_invade.c_inc" +#include "../src/m_player_main_hold.c_inc" +#include "../src/m_player_main_push.c_inc" +#include "../src/m_player_main_pull.c_inc" +#include "../src/m_player_main_rotate_furniture.c_inc" +#include "../src/m_player_main_open_furniture.c_inc" +#include "../src/m_player_main_wait_open_furniture.c_inc" +#include "../src/m_player_main_close_furniture.c_inc" +#include "../src/m_player_main_lie_bed.c_inc" +#include "../src/m_player_main_wait_bed.c_inc" +#include "../src/m_player_main_roll_bed.c_inc" +#include "../src/m_player_main_standup_bed.c_inc" +#include "../src/m_player_main_pickup.c_inc" +#include "../src/m_player_main_pickup_jump.c_inc" +#include "../src/m_player_main_pickup_furniture.c_inc" +#include "../src/m_player_main_pickup_exchange.c_inc" +#include "../src/m_player_main_sitdown.c_inc" +#include "../src/m_player_main_sitdown_wait.c_inc" +#include "../src/m_player_main_standup.c_inc" +#include "../src/m_player_main_swing_axe.c_inc" +#include "../src/m_player_main_air_axe.c_inc" +#include "../src/m_player_main_reflect_axe.c_inc" +#include "../src/m_player_main_broken_axe.c_inc" +#include "../src/m_player_main_slip_net.c_inc" +#include "../src/m_player_main_ready_net.c_inc" +#include "../src/m_player_main_ready_walk_net.c_inc" +#include "../src/m_player_main_swing_net.c_inc" +#include "../src/m_player_main_pull_net.c_inc" +#include "../src/m_player_main_stop_net.c_inc" +#include "../src/m_player_main_notice_net.c_inc" +#include "../src/m_player_main_putaway_net.c_inc" +#include "../src/m_player_main_ready_rod.c_inc" +#include "../src/m_player_main_cast_rod.c_inc" +#include "../src/m_player_main_air_rod.c_inc" +#include "../src/m_player_main_relax_rod.c_inc" +#include "../src/m_player_main_collect_rod.c_inc" +#include "../src/m_player_main_vib_rod.c_inc" +#include "../src/m_player_main_fly_rod.c_inc" +#include "../src/m_player_main_notice_rod.c_inc" +#include "../src/m_player_main_putaway_rod.c_inc" +#include "../src/m_player_main_dig_scoop.c_inc" +#include "../src/m_player_main_fill_scoop.c_inc" +#include "../src/m_player_main_reflect_scoop.c_inc" +#include "../src/m_player_main_air_scoop.c_inc" +#include "../src/m_player_main_putin_scoop.c_inc" +#include "../src/m_player_main_putaway_scoop.c_inc" +#include "../src/m_player_main_get_scoop.c_inc" +#include "../src/m_player_main_talk.c_inc" +#include "../src/m_player_main_recieve_wait.c_inc" +#include "../src/m_player_main_recieve_stretch.c_inc" +#include "../src/m_player_main_recieve.c_inc" +#include "../src/m_player_main_recieve_putaway.c_inc" +#include "../src/m_player_main_give.c_inc" +#include "../src/m_player_main_give_wait.c_inc" +#include "../src/m_player_main_takeout_item.c_inc" +#include "../src/m_player_main_putin_item.c_inc" +#include "../src/m_player_main_demo_wait.c_inc" +#include "../src/m_player_main_demo_walk.c_inc" +#include "../src/m_player_main_demo_geton_train.c_inc" +#include "../src/m_player_main_demo_geton_train_wait.c_inc" +#include "../src/m_player_main_demo_getoff_train.c_inc" +#include "../src/m_player_main_demo_standing_train.c_inc" +#include "../src/m_player_main_demo_wade.c_inc" +#include "../src/m_player_main_hide.c_inc" +#include "../src/m_player_main_groundhog.c_inc" +#include "../src/m_player_main_release_creature.c_inc" +#include "../src/m_player_main_wash_car.c_inc" +#include "../src/m_player_main_tired.c_inc" +#include "../src/m_player_main_rotate_octagon.c_inc" +#include "../src/m_player_main_throw_money.c_inc" +#include "../src/m_player_main_pray.c_inc" +#include "../src/m_player_main_shake_tree.c_inc" +#include "../src/m_player_main_mail_jump.c_inc" +#include "../src/m_player_main_mail_land.c_inc" +#include "../src/m_player_main_ready_pitfall.c_inc" +#include "../src/m_player_main_fall_pitfall.c_inc" +#include "../src/m_player_main_struggle_pitfall.c_inc" +#include "../src/m_player_main_climbup_pitfall.c_inc" +#include "../src/m_player_main_stung_bee.c_inc" +#include "../src/m_player_main_notice_bee.c_inc" +#include "../src/m_player_main_remove_grass.c_inc" +#include "../src/m_player_main_shock.c_inc" +#include "../src/m_player_main_knock_door.c_inc" +#include "../src/m_player_main_change_cloth.c_inc" +#include "../src/m_player_main_push_snowball.c_inc" +#include "../src/m_player_main_rotate_umbrella.c_inc" +#include "../src/m_player_main_complete_payment.c_inc" +#include "../src/m_player_main_fail_emu.c_inc" +#include "../src/m_player_main_stung_mosquito.c_inc" +#include "../src/m_player_main_notice_mosquito.c_inc" +#include "../src/m_player_main_demo_geton_boat.c_inc" +#include "../src/m_player_main_swing_fan.c_inc" +#include "../src/m_player_main_switch_on_lighthouse.c_inc" +#include "../src/m_player_main_radio_exercise.c_inc" +#include "../src/m_player_main_demo_geton_boat_sitdown.c_inc" +#include "../src/m_player_main_demo_geton_boat_wait.c_inc" +#include "../src/m_player_main_demo_geton_boat_wade.c_inc" +#include "../src/m_player_main_demo_getoff_boat_standup.c_inc" +#include "../src/m_player_main_demo_getoff_boat.c_inc" +#include "../src/m_player_main_demo_get_golden_item.c_inc" +#include "../src/m_player_main_demo_get_golden_item2.c_inc" +#include "../src/m_player_main_demo_get_golden_axe_wait.c_inc" + +// static void Player_actor_Refuse_pickup_demo_ct(ACTOR*); + +static void Player_actor_init_value(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + int* shake_tree_table_ut_x_p; + int* shake_tree_table_ut_z_p; + s8* radio_exercise_command_ring_buffer_p; + int i; + + player->actor_class.gravity = -1.0f; + player->actor_class.max_velocity_y = -8.0f; + player->actor_class.scale.x = 0.01f; + player->actor_class.scale.y = 0.01f; + player->actor_class.scale.z = 0.01f; + player->balloon_actor = Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_BALLOON, + actorx->world.position.x, actorx->world.position.y, + actorx->world.position.z, 0, 0, 0, -1, -1, -1, EMPTY_NO, -1, -1, -1); + player->animation0_idx = -1; + player->animation1_idx = -1; + player->part_table_idx = -1; + player->item_shape_type[0] = -1; + player->item_shape_type[1] = -1; + player->item_shape_type[2] = -1; + player->item_shape_type[3] = -1; + + Player_actor_ct_forCorect(actorx, game); + Player_actor_set_eye_pattern(actorx, 0); + Player_actor_set_mouth_pattern(actorx, 0); + + player->request_main_invade_all_proc = &Player_actor_request_main_invade_all; + player->request_main_refuse_all_proc = &Player_actor_request_main_refuse; + player->request_main_return_demo_all_proc = &Player_actor_request_main_return_demo_all; + player->request_main_wait_all_proc = &Player_actor_request_main_wait_all; + player->request_main_talk_all_proc = &Player_actor_request_main_talk_all; + player->request_main_hold_all_proc = &Player_actor_request_main_hold; + player->request_main_recieve_wait_all_proc = &Player_actor_request_main_recieve_wait; + player->request_main_give_all_proc = &Player_actor_request_main_give_all; + player->request_main_sitdown_all_proc = &Player_actor_request_main_sitdown; + player->request_main_close_furniture_all_proc = &Player_actor_request_main_close_furniture; + player->request_main_lie_bed_all_proc = &Player_actor_request_main_lie_bed; + player->request_main_hide_all_proc = &Player_actor_request_main_hide; + player->request_main_groundhog_proc = &Player_actor_request_main_groundhog; + player->request_main_door_all_proc = &Player_actor_request_main_door; + player->request_main_outdoor_all_proc = &Player_actor_request_main_outdoor; + player->request_main_demo_wait_all_proc = &Player_actor_request_main_demo_wait_all; + player->request_main_demo_walk_all_proc = &Player_actor_request_main_demo_walk_all; + player->request_main_demo_geton_train_all_proc = &Player_actor_request_main_demo_geton_train; + player->request_main_demo_getoff_train_all_proc = &Player_actor_request_main_demo_getoff_train; + player->request_main_demo_standing_train_all_proc = &Player_actor_request_main_demo_standing_train_all; + player->request_main_rotate_octagon_all_proc = &Player_actor_request_main_rotate_octagon_all; + player->request_main_wash_car_all_proc = &Player_actor_request_main_wash_car_all; + player->request_main_throw_money_all_proc = &Player_actor_request_main_throw_money_all; + player->request_main_pray_all_proc = &Player_actor_request_main_pray_all; + player->request_main_mail_jump_all_proc = &Player_actor_request_main_mail_jump_all; + player->request_main_stung_bee_all_proc = &Player_actor_request_main_stung_bee_all; + player->request_main_shock_all_proc = &Player_actor_request_main_shock_all; + player->request_main_change_cloth_forNPC_proc = &Player_actor_request_main_change_cloth_forNPC; + player->request_main_push_snowball_all_proc = &Player_actor_request_main_push_snowball_all; + player->request_main_stung_mosquito_all_proc = &Player_actor_request_main_stung_mosquito_all; + player->request_main_switch_on_lighthouse_all_proc = &Player_actor_request_main_switch_on_lighthouse_all; + player->request_main_demo_geton_boat_all_proc = &Player_actor_request_main_demo_geton_boat_all; + player->request_main_demo_getoff_boat_standup_all_proc = &Player_actor_request_main_demo_getoff_boat_standup_all; + player->request_main_demo_get_golden_item2_all_proc = &Player_actor_request_main_demo_get_golden_item2_all; + player->request_main_demo_get_golden_axe_wait_all_proc = &Player_actor_request_main_demo_get_golden_axe_wait_all; + player->check_request_main_priority_proc = &Player_actor_check_request_main_priority; + player->get_door_label_proc = &Player_actor_get_door_label; + player->Set_Item_net_catch_request_table_proc = &Player_actor_Set_Item_net_catch_request_table; + player->Set_Item_net_catch_request_force_proc = &Player_actor_Set_Item_net_catch_request_force; + player->Get_Item_net_catch_swing_timer_proc = &Player_actor_Get_Item_net_catch_swing_timer; + player->Set_force_position_angle_proc = &Player_actor_Set_force_position_angle; + player->Get_force_position_angle_proc = &Player_actor_Get_force_position_angle; + player->Get_WadeEndPos_proc = &Player_actor_Get_WadeEndPos; + player->check_cancel_request_change_proc_index_proc = &Player_actor_check_cancel_request_change_proc_index; + player->Get_item_net_catch_label_proc = &Player_actor_Get_item_net_catch_label; + player->Check_StopNet_proc = &Player_actor_Check_StopNet; + player->Check_HitAxe_proc = &Player_actor_Check_HitAxe; + player->Check_VibUnit_OneFrame_proc = &Player_actor_Check_VibUnit_OneFrame; + player->Check_HitScoop_proc = &Player_actor_Check_HitScoop; + player->Check_DigScoop_proc = &Player_actor_Check_DigScoop; + player->check_request_change_item_proc = &Player_actor_check_request_change_item; + player->Check_RotateOctagon_proc = &Player_actor_Check_RotateOctagon; + player->Change_item_net_catch_label_proc = &Player_actor_Change_item_net_catch_label; + player->Get_status_for_bee_proc = &Player_actor_Get_status_for_bee; + player->Check_end_stung_bee_proc = &Player_actor_Check_end_stung_bee; + player->Check_Label_main_push_snowball_proc = &Player_actor_Check_Label_main_push_snowball; + player->Check_Label_main_wade_snowball_proc = &Player_actor_Check_Label_main_wade_snowball; + player->SetParam_for_push_snowball_proc = &Player_actor_SetParam_for_push_snowball; + player->Set_ScrollDemo_forWade_snowball_proc = &Player_actor_Set_ScrollDemo_forWade_snowball; + player->GetSnowballPos_forWadeSnowball_proc = &Player_actor_GetSnowballPos_forWadeSnowball; + player->CheckCondition_forWadeSnowball_proc = &Player_actor_CheckCondition_forWadeSnowball; + player->Check_tree_shaken_proc = &Player_actor_Check_tree_shaken; + player->Check_tree_shaken_little_proc = &Player_actor_Check_tree_shaken_little; + player->Check_tree_shaken_big_proc = &Player_actor_Check_tree_shaken_big; + player->Get_itemNo_forWindow_proc = &Player_actor_Get_itemNo_forWindow; + player->able_submenu_request_main_index_proc = &Player_actor_able_submenu_request_main_index; + player->check_able_change_camera_normal_index_proc = &Player_actor_check_able_change_camera_normal_index; + player->CheckScene_AbleSubmenu_proc = &Player_actor_CheckScene_AbleSubmenu; + player->check_cancel_event_without_priority_proc = &Player_actor_check_cancel_event_without_priority; + player->Check_able_force_speak_label_proc = &Player_actor_Check_able_force_speak_label; + player->Check_stung_mosquito_proc = &Player_actor_Check_stung_mosquito; + + shake_tree_table_ut_x_p = player->shake_tree_ut_x; + shake_tree_table_ut_z_p = player->shake_tree_ut_z; + for (i = 0; i < 3; i++) { + *shake_tree_table_ut_x_p++ = -1; + *shake_tree_table_ut_z_p++ = -1; + } + + radio_exercise_command_ring_buffer_p = player->radio_exercise_command_ring_buffer; + for (i = 0; i < 8; i++) { + *radio_exercise_command_ring_buffer_p++ = -1; + } + + Player_actor_Set_old_sound_frame_counter(actorx); +} + +extern void Player_actor_ct(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + if (mEv_CheckTitleDemo() > 0) { + actorx->status_data.weight = 255; + } else { + actorx->status_data.weight = 50; + } + + Player_actor_init_value(actorx, game); + Common_Set(player_actor_exists, TRUE); + Player_actor_Check_player_sunburn_for_ct(actorx); // + mPlib_change_player_face(game); // + Player_actor_ct_other_func1(actorx, game); // + Player_actor_set_eye_PositionAndAngle(actorx); // + Camera2_request_main_normal(play, 1, 1); + Shape_Info_init(actorx, 0.0f, &mAc_ActorShadowCircle, 18.0f, 18.0f); + actorx->shape_info.ofs_y = 200.0f; + mPlib_Clear_change_data_from_submenu(); // + Player_actor_request_main_dma(game, 41); // + Player_actor_change_proc_index(actorx, game); // +} + +extern void Player_actor_dt(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_dt_forCorect(actorx, game); // + Common_Set(player_actor_exists, FALSE); + mPlib_cancel_player_warp_forEvent(); // + Player_actor_Reset_bee_chase(actorx); // + Player_actor_Check_player_sunburn_for_dt(actorx); // + + if (mEv_CheckTitleDemo() <= 0 && player->bgm_volume_mode != mPlayer_BGM_VOLUME_MODE_NORMAL) { + switch (player->bgm_volume_mode) { + case mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS: + mBGMPsComp_volume_collect_insects_end(); + break; + case mPlayer_BGM_VOLUME_MODE_FISHING: + mBGMPsComp_volume_fishing_end(); + break; + } + } +} + +typedef void (*mPlayer_REQUEST_MAIN_CHANGE_FROM_SUBMENU_PROC)(ACTOR*, GAME*); + +// static void Player_actor_request_main_wait_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_putin_scoop_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_give_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_demo_wait_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_release_creature_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_mail_land_from_submenu(ACTOR*, GAME*); +static void Player_actor_request_main_demo_get_golden_item_from_submenu(ACTOR*, GAME*); + +static void Player_actor_request_main_change_from_submenu(ACTOR* actorx, GAME* game) { + static const mPlayer_REQUEST_MAIN_CHANGE_FROM_SUBMENU_PROC proc[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_wait_from_submenu, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_putin_scoop_from_submenu, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_give_from_submenu, + NULL, + NULL, + NULL, + &Player_actor_request_main_demo_wait_from_submenu, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_release_creature_from_submenu, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_mail_land_from_submenu, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_request_main_demo_get_golden_item_from_submenu, + NULL, + NULL, + }; + + if (mPlib_Check_SetOrderSubmenu()) { + mPlayer_change_data_from_submenu_c* data = mPlib_Get_change_data_from_submenu_p(); + int idx = data->requested_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) == FALSE || proc[idx] == NULL) { + return; + } + + (*proc[idx])(actorx, game); + } + + mPlib_Clear_change_data_from_submenu(); +} + +static void Player_actor_request_change_item(GAME* game) { + int item_kind = Player_actor_check_request_change_item(game); + + switch (item_kind) { + case mPlayer_ITEM_KIND_AXE_USE_7: + Player_actor_request_main_wait_all(game, 0.0f, 0.0f, 1, 16); + break; + case mPlayer_ITEM_KIND_GOLD_AXE: + Player_actor_request_main_walk_all(game, NULL, 0.0f, 1, 16); + break; + case mPlayer_ITEM_KIND_NET: + Player_actor_request_main_run_all(game, 0.0f, 1, 16); + break; + case mPlayer_ITEM_KIND_GOLD_NET: + Player_actor_request_main_dash_all(game, 0.0f, 1, 16); + break; + } +} + +typedef void (*mPlayer_SETTLE_MAIN_PROC)(ACTOR*, GAME*); + +static void Player_actor_settle_main_Walk(ACTOR*, GAME*); +static void Player_actor_settle_main_Turn_dash(ACTOR*, GAME*); +static void Player_actor_settle_main_Wade(ACTOR*, GAME*); +static void Player_actor_settle_main_Outdoor(ACTOR*, GAME*); +static void Player_actor_settle_main_Push(ACTOR*, GAME*); +static void Player_actor_settle_main_Pull(ACTOR*, GAME*); +static void Player_actor_settle_main_Open_furniture(ACTOR*, GAME*); +static void Player_actor_settle_main_Wait_open_furniture(ACTOR*, GAME*); +static void Player_actor_settle_main_Close_furniture(ACTOR*, GAME*); +static void Player_actor_settle_main_Lie_bed(ACTOR*, GAME*); +static void Player_actor_settle_main_Roll_bed(ACTOR*, GAME*); +static void Player_actor_settle_main_Standup_bed(ACTOR*, GAME*); +static void Player_actor_settle_main_Pickup_jump(ACTOR*, GAME*); +static void Player_actor_settle_main_Pickup_furniture(ACTOR*, GAME*); +static void Player_actor_settle_main_Pickup_exchange(ACTOR*, GAME*); +static void Player_actor_settle_main_Sitdown(ACTOR*, GAME*); +static void Player_actor_settle_main_Standup(ACTOR*, GAME*); +static void Player_actor_settle_main_Reflect_axe(ACTOR*, GAME*); +static void Player_actor_settle_main_Broken_axe(ACTOR*, GAME*); +static void Player_actor_settle_main_Slip_net(ACTOR*, GAME*); +static void Player_actor_settle_main_Swing_net(ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_net(ACTOR*, GAME*); +static void Player_actor_settle_main_Collect_rod(ACTOR*, GAME*); +static void Player_actor_settle_main_Fly_rod(ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_rod(ACTOR*, GAME*); +static void Player_actor_settle_main_Reflect_scoop(ACTOR*, GAME*); +static void Player_actor_settle_main_Get_scoop(ACTOR*, GAME*); +static void Player_actor_settle_main_Talk(ACTOR*, GAME*); +static void Player_actor_settle_main_Recieve_putaway(ACTOR*, GAME*); +static void Player_actor_settle_main_Give_wait(ACTOR*, GAME*); +static void Player_actor_settle_main_Takeout_item(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_wait(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_geton_train(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_getoff_train(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_wade(ACTOR*, GAME*); +static void Player_actor_settle_main_Release_creature(ACTOR*, GAME*); +static void Player_actor_settle_main_Wash_car(ACTOR*, GAME*); +static void Player_actor_settle_main_Rotate_octagon(ACTOR*, GAME*); +static void Player_actor_settle_main_Throw_money(ACTOR*, GAME*); +static void Player_actor_settle_main_Pray(ACTOR*, GAME*); +static void Player_actor_settle_main_Mail_jump(ACTOR*, GAME*); +static void Player_actor_settle_main_Ready_pitfall(ACTOR*, GAME*); +static void Player_actor_settle_main_Fall_pitfall(ACTOR*, GAME*); +static void Player_actor_settle_main_Struggle_pitfall(ACTOR*, GAME*); +static void Player_actor_settle_main_Climbup_pitfall(ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_bee(ACTOR*, GAME*); +static void Player_actor_settle_main_Shock(ACTOR*, GAME*); +static void Player_actor_settle_main_Knock_door(ACTOR*, GAME*); +static void Player_actor_settle_main_Wade_snowball(ACTOR*, GAME*); +static void Player_actor_settle_main_Complete_payment(ACTOR*, GAME*); +static void Player_actor_settle_main_Fail_emu(ACTOR*, GAME*); +static void Player_actor_settle_main_Notice_mosquito(ACTOR*, GAME*); +static void Player_actor_settle_main_Switch_on_lighthouse(ACTOR*, GAME*); +static void Player_actor_settle_main_Radio_exercise(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_geton_boat(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_geton_boat_wade(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_getoff_boat_standup(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_getoff_boat(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_get_golden_item(ACTOR*, GAME*); +static void Player_actor_settle_main_Demo_get_golden_item2(ACTOR*, GAME*); + +static void Player_actor_settle_main(ACTOR* actorx, GAME* game) { + static const mPlayer_SETTLE_MAIN_PROC proc[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Walk, + NULL, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Turn_dash, + NULL, + &Player_actor_settle_main_Wade, + NULL, + &Player_actor_settle_main_Outdoor, + NULL, + NULL, + &Player_actor_settle_main_Push, + &Player_actor_settle_main_Pull, + NULL, + &Player_actor_settle_main_Open_furniture, + &Player_actor_settle_main_Wait_open_furniture, + &Player_actor_settle_main_Close_furniture, + &Player_actor_settle_main_Lie_bed, + NULL, + &Player_actor_settle_main_Roll_bed, + &Player_actor_settle_main_Standup_bed, + NULL, + &Player_actor_settle_main_Pickup_jump, + &Player_actor_settle_main_Pickup_furniture, + &Player_actor_settle_main_Pickup_exchange, + &Player_actor_settle_main_Sitdown, + NULL, + &Player_actor_settle_main_Standup, + NULL, + NULL, + &Player_actor_settle_main_Reflect_axe, + &Player_actor_settle_main_Broken_axe, + &Player_actor_settle_main_Slip_net, + NULL, + NULL, + &Player_actor_settle_main_Swing_net, + NULL, + NULL, + &Player_actor_settle_main_Notice_net, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Collect_rod, + NULL, + &Player_actor_settle_main_Fly_rod, + &Player_actor_settle_main_Notice_rod, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Reflect_scoop, + NULL, + &Player_actor_settle_main_Get_scoop, + NULL, + NULL, + &Player_actor_settle_main_Talk, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Recieve_putaway, + NULL, + &Player_actor_settle_main_Give_wait, + &Player_actor_settle_main_Takeout_item, + NULL, + &Player_actor_settle_main_Demo_wait, + NULL, + &Player_actor_settle_main_Demo_geton_train, + NULL, + &Player_actor_settle_main_Demo_getoff_train, + NULL, + &Player_actor_settle_main_Demo_wade, + NULL, + NULL, + &Player_actor_settle_main_Release_creature, + &Player_actor_settle_main_Wash_car, + NULL, + &Player_actor_settle_main_Rotate_octagon, + &Player_actor_settle_main_Throw_money, + &Player_actor_settle_main_Pray, + NULL, + &Player_actor_settle_main_Mail_jump, + NULL, + &Player_actor_settle_main_Ready_pitfall, + &Player_actor_settle_main_Fall_pitfall, + &Player_actor_settle_main_Struggle_pitfall, + &Player_actor_settle_main_Climbup_pitfall, + NULL, + &Player_actor_settle_main_Notice_bee, + NULL, + &Player_actor_settle_main_Shock, + &Player_actor_settle_main_Knock_door, + NULL, + NULL, + NULL, + &Player_actor_settle_main_Wade_snowball, + &Player_actor_settle_main_Complete_payment, + &Player_actor_settle_main_Fail_emu, + NULL, + &Player_actor_settle_main_Notice_mosquito, + NULL, + &Player_actor_settle_main_Switch_on_lighthouse, + &Player_actor_settle_main_Radio_exercise, + &Player_actor_settle_main_Demo_geton_boat, + NULL, + NULL, + &Player_actor_settle_main_Demo_geton_boat_wade, + &Player_actor_settle_main_Demo_getoff_boat_standup, + &Player_actor_settle_main_Demo_getoff_boat, + &Player_actor_settle_main_Demo_get_golden_item, + &Player_actor_settle_main_Demo_get_golden_item2, + NULL, + }; + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { + if (proc[idx] != NULL) { + (*proc[idx])(actorx, game); + } + + Player_actor_settle_main_other_func2(actorx, game); // + } +} + +typedef void (*mPlayer_SETUP_MAIN_PROC)(ACTOR*, GAME*); + +static void Player_actor_setup_main_Dma(ACTOR*, GAME*); +static void Player_actor_setup_main_Intro(ACTOR*, GAME*); +static void Player_actor_setup_main_Refuse(ACTOR*, GAME*); +static void Player_actor_setup_main_Refuse_pickup(ACTOR*, GAME*); +static void Player_actor_setup_main_Return_demo(ACTOR*, GAME*); +static void Player_actor_setup_main_Return_outdoor(ACTOR*, GAME*); +static void Player_actor_setup_main_Return_outdoor2(ACTOR*, GAME*); +static void Player_actor_setup_main_Wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Walk(ACTOR*, GAME*); +static void Player_actor_setup_main_Run(ACTOR*, GAME*); +static void Player_actor_setup_main_Dash(ACTOR*, GAME*); +static void Player_actor_setup_main_Tumble(ACTOR*, GAME*); +static void Player_actor_setup_main_Tumble_getup(ACTOR*, GAME*); +static void Player_actor_setup_main_Turn_dash(ACTOR*, GAME*); +static void Player_actor_setup_main_Fall(ACTOR*, GAME*); +static void Player_actor_setup_main_Wade(ACTOR*, GAME*); +static void Player_actor_setup_main_Door(ACTOR*, GAME*); +static void Player_actor_setup_main_Outdoor(ACTOR*, GAME*); +static void Player_actor_setup_main_Invade(ACTOR*, GAME*); +static void Player_actor_setup_main_Hold(ACTOR*, GAME*); +static void Player_actor_setup_main_Push(ACTOR*, GAME*); +static void Player_actor_setup_main_Pull(ACTOR*, GAME*); +static void Player_actor_setup_main_Rotate_furniture(ACTOR*, GAME*); +static void Player_actor_setup_main_Open_furniture(ACTOR*, GAME*); +static void Player_actor_setup_main_Wait_open_furniture(ACTOR*, GAME*); +static void Player_actor_setup_main_Close_furniture(ACTOR*, GAME*); +static void Player_actor_setup_main_Lie_bed(ACTOR*, GAME*); +static void Player_actor_setup_main_Wait_bed(ACTOR*, GAME*); +static void Player_actor_setup_main_Roll_bed(ACTOR*, GAME*); +static void Player_actor_setup_main_Standup_bed(ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup(ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup_jump(ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup_furniture(ACTOR*, GAME*); +static void Player_actor_setup_main_Pickup_exchange(ACTOR*, GAME*); +static void Player_actor_setup_main_Sitdown(ACTOR*, GAME*); +static void Player_actor_setup_main_Sitdown_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Standup(ACTOR*, GAME*); +static void Player_actor_setup_main_Swing_axe(ACTOR*, GAME*); +static void Player_actor_setup_main_Air_axe(ACTOR*, GAME*); +static void Player_actor_setup_main_Reflect_axe(ACTOR*, GAME*); +static void Player_actor_setup_main_Broken_axe(ACTOR*, GAME*); +static void Player_actor_setup_main_Slip_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_walk_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Swing_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Pull_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Stop_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Putaway_net(ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Cast_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Air_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Relax_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Collect_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Vib_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Fly_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Putaway_rod(ACTOR*, GAME*); +static void Player_actor_setup_main_Dig_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Fill_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Reflect_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Air_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Get_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Putaway_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Putin_scoop(ACTOR*, GAME*); +static void Player_actor_setup_main_Talk(ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve_stretch(ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve(ACTOR*, GAME*); +static void Player_actor_setup_main_Recieve_putaway(ACTOR*, GAME*); +static void Player_actor_setup_main_Give(ACTOR*, GAME*); +static void Player_actor_setup_main_Give_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Takeout_item(ACTOR*, GAME*); +static void Player_actor_setup_main_Putin_item(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_walk(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_train(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_train_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_getoff_train(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_standing_train(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_wade(ACTOR*, GAME*); +static void Player_actor_setup_main_Hide(ACTOR*, GAME*); +static void Player_actor_setup_main_Groundhog(ACTOR*, GAME*); +static void Player_actor_setup_main_Release_creature(ACTOR*, GAME*); +static void Player_actor_setup_main_Wash_car(ACTOR*, GAME*); +static void Player_actor_setup_main_Tired(ACTOR*, GAME*); +static void Player_actor_setup_main_Rotate_octagon(ACTOR*, GAME*); +static void Player_actor_setup_main_Throw_money(ACTOR*, GAME*); +static void Player_actor_setup_main_Pray(ACTOR*, GAME*); +static void Player_actor_setup_main_Shake_tree(ACTOR*, GAME*); +static void Player_actor_setup_main_Mail_jump(ACTOR*, GAME*); +static void Player_actor_setup_main_Mail_land(ACTOR*, GAME*); +static void Player_actor_setup_main_Ready_pitfall(ACTOR*, GAME*); +static void Player_actor_setup_main_Fall_pitfall(ACTOR*, GAME*); +static void Player_actor_setup_main_Struggle_pitfall(ACTOR*, GAME*); +static void Player_actor_setup_main_Climbup_pitfall(ACTOR*, GAME*); +static void Player_actor_setup_main_Stung_bee(ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_bee(ACTOR*, GAME*); +static void Player_actor_setup_main_Remove_grass(ACTOR*, GAME*); +static void Player_actor_setup_main_Shock(ACTOR*, GAME*); +static void Player_actor_setup_main_Knock_door(ACTOR*, GAME*); +static void Player_actor_setup_main_Change_cloth(ACTOR*, GAME*); +static void Player_actor_setup_main_Push_snowball(ACTOR*, GAME*); +static void Player_actor_setup_main_Rotate_umbrella(ACTOR*, GAME*); +static void Player_actor_setup_main_Wade_snowball(ACTOR*, GAME*); +static void Player_actor_setup_main_Complete_payment(ACTOR*, GAME*); +static void Player_actor_setup_main_Fail_emu(ACTOR*, GAME*); +static void Player_actor_setup_main_Stung_mosquito(ACTOR*, GAME*); +static void Player_actor_setup_main_Notice_mosquito(ACTOR*, GAME*); +static void Player_actor_setup_main_Swing_fan(ACTOR*, GAME*); +static void Player_actor_setup_main_Switch_on_lighthouse(ACTOR*, GAME*); +static void Player_actor_setup_main_Radio_exercise(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat_sitdown(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat_wait(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_geton_boat_wade(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_getoff_boat_standup(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_getoff_boat(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_get_golden_item(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_get_golden_item2(ACTOR*, GAME*); +static void Player_actor_setup_main_Demo_get_golden_axe_wait(ACTOR*, GAME*); + +static int Player_actor_change_main_index(ACTOR* actorx, GAME* game) { + static const mPlayer_SETUP_MAIN_PROC proc[] = { + &Player_actor_setup_main_Dma, + &Player_actor_setup_main_Intro, + &Player_actor_setup_main_Refuse, + &Player_actor_setup_main_Refuse_pickup, + &Player_actor_setup_main_Return_demo, + &Player_actor_setup_main_Return_outdoor, + &Player_actor_setup_main_Return_outdoor2, + &Player_actor_setup_main_Wait, + &Player_actor_setup_main_Walk, + &Player_actor_setup_main_Run, + &Player_actor_setup_main_Dash, + &Player_actor_setup_main_Tumble, + &Player_actor_setup_main_Tumble_getup, + &Player_actor_setup_main_Turn_dash, + &Player_actor_setup_main_Fall, + &Player_actor_setup_main_Wade, + &Player_actor_setup_main_Door, + &Player_actor_setup_main_Outdoor, + &Player_actor_setup_main_Invade, + &Player_actor_setup_main_Hold, + &Player_actor_setup_main_Push, + &Player_actor_setup_main_Pull, + &Player_actor_setup_main_Rotate_furniture, + &Player_actor_setup_main_Open_furniture, + &Player_actor_setup_main_Wait_open_furniture, + &Player_actor_setup_main_Close_furniture, + &Player_actor_setup_main_Lie_bed, + &Player_actor_setup_main_Wait_bed, + &Player_actor_setup_main_Roll_bed, + &Player_actor_setup_main_Standup_bed, + &Player_actor_setup_main_Pickup, + &Player_actor_setup_main_Pickup_jump, + &Player_actor_setup_main_Pickup_furniture, + &Player_actor_setup_main_Pickup_exchange, + &Player_actor_setup_main_Sitdown, + &Player_actor_setup_main_Sitdown_wait, + &Player_actor_setup_main_Standup, + &Player_actor_setup_main_Swing_axe, + &Player_actor_setup_main_Air_axe, + &Player_actor_setup_main_Reflect_axe, + &Player_actor_setup_main_Broken_axe, + &Player_actor_setup_main_Slip_net, + &Player_actor_setup_main_Ready_net, + &Player_actor_setup_main_Ready_walk_net, + &Player_actor_setup_main_Swing_net, + &Player_actor_setup_main_Pull_net, + &Player_actor_setup_main_Stop_net, + &Player_actor_setup_main_Notice_net, + &Player_actor_setup_main_Putaway_net, + &Player_actor_setup_main_Ready_rod, + &Player_actor_setup_main_Cast_rod, + &Player_actor_setup_main_Air_rod, + &Player_actor_setup_main_Relax_rod, + &Player_actor_setup_main_Collect_rod, + &Player_actor_setup_main_Vib_rod, + &Player_actor_setup_main_Fly_rod, + &Player_actor_setup_main_Notice_rod, + &Player_actor_setup_main_Putaway_rod, + &Player_actor_setup_main_Dig_scoop, + &Player_actor_setup_main_Fill_scoop, + &Player_actor_setup_main_Reflect_scoop, + &Player_actor_setup_main_Air_scoop, + &Player_actor_setup_main_Get_scoop, + &Player_actor_setup_main_Putaway_scoop, + &Player_actor_setup_main_Putin_scoop, + &Player_actor_setup_main_Talk, + &Player_actor_setup_main_Recieve_wait, + &Player_actor_setup_main_Recieve_stretch, + &Player_actor_setup_main_Recieve, + &Player_actor_setup_main_Recieve_putaway, + &Player_actor_setup_main_Give, + &Player_actor_setup_main_Give_wait, + &Player_actor_setup_main_Takeout_item, + &Player_actor_setup_main_Putin_item, + &Player_actor_setup_main_Demo_wait, + &Player_actor_setup_main_Demo_walk, + &Player_actor_setup_main_Demo_geton_train, + &Player_actor_setup_main_Demo_geton_train_wait, + &Player_actor_setup_main_Demo_getoff_train, + &Player_actor_setup_main_Demo_standing_train, + &Player_actor_setup_main_Demo_wade, + &Player_actor_setup_main_Hide, + &Player_actor_setup_main_Groundhog, + &Player_actor_setup_main_Release_creature, + &Player_actor_setup_main_Wash_car, + &Player_actor_setup_main_Tired, + &Player_actor_setup_main_Rotate_octagon, + &Player_actor_setup_main_Throw_money, + &Player_actor_setup_main_Pray, + &Player_actor_setup_main_Shake_tree, + &Player_actor_setup_main_Mail_jump, + &Player_actor_setup_main_Mail_land, + &Player_actor_setup_main_Ready_pitfall, + &Player_actor_setup_main_Fall_pitfall, + &Player_actor_setup_main_Struggle_pitfall, + &Player_actor_setup_main_Climbup_pitfall, + &Player_actor_setup_main_Stung_bee, + &Player_actor_setup_main_Notice_bee, + &Player_actor_setup_main_Remove_grass, + &Player_actor_setup_main_Shock, + &Player_actor_setup_main_Knock_door, + &Player_actor_setup_main_Change_cloth, + &Player_actor_setup_main_Push_snowball, + &Player_actor_setup_main_Rotate_umbrella, + &Player_actor_setup_main_Wade_snowball, + &Player_actor_setup_main_Complete_payment, + &Player_actor_setup_main_Fail_emu, + &Player_actor_setup_main_Stung_mosquito, + &Player_actor_setup_main_Notice_mosquito, + &Player_actor_setup_main_Swing_fan, + &Player_actor_setup_main_Switch_on_lighthouse, + &Player_actor_setup_main_Radio_exercise, + &Player_actor_setup_main_Demo_geton_boat, + &Player_actor_setup_main_Demo_geton_boat_sitdown, + &Player_actor_setup_main_Demo_geton_boat_wait, + &Player_actor_setup_main_Demo_geton_boat_wade, + &Player_actor_setup_main_Demo_getoff_boat_standup, + &Player_actor_setup_main_Demo_getoff_boat, + &Player_actor_setup_main_Demo_get_golden_item, + &Player_actor_setup_main_Demo_get_golden_item2, + &Player_actor_setup_main_Demo_get_golden_axe_wait, + }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->requested_main_index_changed) { + int idx = player->requested_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) == FALSE || proc[idx] == NULL) { + return FALSE; + } + + idx = Player_actor_CheckAndRequest_KnockDoor(actorx, game, + Player_actor_CheckAndRequest_ItemInOut(actorx, game, idx)); // + Player_actor_Set_bgm_volume(actorx, idx); // + Player_actor_settle_main(actorx, game); + Player_actor_Reset_unable_hand_item_in_demo(actorx, idx); // + Player_actor_Reset_able_hand_all_item_in_demo(actorx, idx); // + Player_actor_Reset_able_force_speak_label(actorx, idx); // + Player_actor_change_main_index_other_func1(actorx, game); // + (*proc[idx])(actorx, game); + Player_actor_change_main_index_other_func2(actorx, game); // + return TRUE; + } + + return FALSE; +} + +static void Player_actor_change_proc_index(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->changed_main_index = Player_actor_change_main_index(actorx, game); +} + +typedef void (*mPlayer_MAIN_PROC)(ACTOR*, GAME*); + +static void Player_actor_main_Dma(ACTOR*, GAME*); +static void Player_actor_main_Intro(ACTOR*, GAME*); +static void Player_actor_main_Refuse(ACTOR*, GAME*); +static void Player_actor_main_Refuse_pickup(ACTOR*, GAME*); +static void Player_actor_main_Return_demo(ACTOR*, GAME*); +static void Player_actor_main_Return_outdoor(ACTOR*, GAME*); +static void Player_actor_main_Return_outdoor2(ACTOR*, GAME*); +static void Player_actor_main_Wait(ACTOR*, GAME*); +static void Player_actor_main_Walk(ACTOR*, GAME*); +static void Player_actor_main_Run(ACTOR*, GAME*); +static void Player_actor_main_Dash(ACTOR*, GAME*); +static void Player_actor_main_Tumble(ACTOR*, GAME*); +static void Player_actor_main_Tumble_getup(ACTOR*, GAME*); +static void Player_actor_main_Turn_dash(ACTOR*, GAME*); +static void Player_actor_main_Fall(ACTOR*, GAME*); +static void Player_actor_main_Wade(ACTOR*, GAME*); +static void Player_actor_main_Door(ACTOR*, GAME*); +static void Player_actor_main_Outdoor(ACTOR*, GAME*); +static void Player_actor_main_Invade(ACTOR*, GAME*); +static void Player_actor_main_Hold(ACTOR*, GAME*); +static void Player_actor_main_Push(ACTOR*, GAME*); +static void Player_actor_main_Pull(ACTOR*, GAME*); +static void Player_actor_main_Rotate_furniture(ACTOR*, GAME*); +static void Player_actor_main_Open_furniture(ACTOR*, GAME*); +static void Player_actor_main_Wait_open_furniture(ACTOR*, GAME*); +static void Player_actor_main_Close_furniture(ACTOR*, GAME*); +static void Player_actor_main_Lie_bed(ACTOR*, GAME*); +static void Player_actor_main_Wait_bed(ACTOR*, GAME*); +static void Player_actor_main_Roll_bed(ACTOR*, GAME*); +static void Player_actor_main_Standup_bed(ACTOR*, GAME*); +static void Player_actor_main_Pickup(ACTOR*, GAME*); +static void Player_actor_main_Pickup_jump(ACTOR*, GAME*); +static void Player_actor_main_Pickup_furniture(ACTOR*, GAME*); +static void Player_actor_main_Pickup_exchange(ACTOR*, GAME*); +static void Player_actor_main_Sitdown(ACTOR*, GAME*); +static void Player_actor_main_Sitdown_wait(ACTOR*, GAME*); +static void Player_actor_main_Standup(ACTOR*, GAME*); +static void Player_actor_main_Swing_axe(ACTOR*, GAME*); +static void Player_actor_main_Air_axe(ACTOR*, GAME*); +static void Player_actor_main_Reflect_axe(ACTOR*, GAME*); +static void Player_actor_main_Broken_axe(ACTOR*, GAME*); +static void Player_actor_main_Slip_net(ACTOR*, GAME*); +static void Player_actor_main_Ready_net(ACTOR*, GAME*); +static void Player_actor_main_Ready_walk_net(ACTOR*, GAME*); +static void Player_actor_main_Swing_net(ACTOR*, GAME*); +static void Player_actor_main_Pull_net(ACTOR*, GAME*); +static void Player_actor_main_Stop_net(ACTOR*, GAME*); +static void Player_actor_main_Notice_net(ACTOR*, GAME*); +static void Player_actor_main_Putaway_net(ACTOR*, GAME*); +static void Player_actor_main_Ready_rod(ACTOR*, GAME*); +static void Player_actor_main_Cast_rod(ACTOR*, GAME*); +static void Player_actor_main_Air_rod(ACTOR*, GAME*); +static void Player_actor_main_Relax_rod(ACTOR*, GAME*); +static void Player_actor_main_Collect_rod(ACTOR*, GAME*); +static void Player_actor_main_Vib_rod(ACTOR*, GAME*); +static void Player_actor_main_Fly_rod(ACTOR*, GAME*); +static void Player_actor_main_Notice_rod(ACTOR*, GAME*); +static void Player_actor_main_Putaway_rod(ACTOR*, GAME*); +static void Player_actor_main_Dig_scoop(ACTOR*, GAME*); +static void Player_actor_main_Fill_scoop(ACTOR*, GAME*); +static void Player_actor_main_Reflect_scoop(ACTOR*, GAME*); +static void Player_actor_main_Air_scoop(ACTOR*, GAME*); +static void Player_actor_main_Get_scoop(ACTOR*, GAME*); +static void Player_actor_main_Putaway_scoop(ACTOR*, GAME*); +static void Player_actor_main_Putin_scoop(ACTOR*, GAME*); +static void Player_actor_main_Talk(ACTOR*, GAME*); +static void Player_actor_main_Recieve_wait(ACTOR*, GAME*); +static void Player_actor_main_Recieve_stretch(ACTOR*, GAME*); +static void Player_actor_main_Recieve(ACTOR*, GAME*); +static void Player_actor_main_Recieve_putaway(ACTOR*, GAME*); +static void Player_actor_main_Give(ACTOR*, GAME*); +static void Player_actor_main_Give_wait(ACTOR*, GAME*); +static void Player_actor_main_Takeout_item(ACTOR*, GAME*); +static void Player_actor_main_Putin_item(ACTOR*, GAME*); +static void Player_actor_main_Demo_wait(ACTOR*, GAME*); +static void Player_actor_main_Demo_walk(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_train(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_train_wait(ACTOR*, GAME*); +static void Player_actor_main_Demo_getoff_train(ACTOR*, GAME*); +static void Player_actor_main_Demo_standing_train(ACTOR*, GAME*); +static void Player_actor_main_Demo_wade(ACTOR*, GAME*); +static void Player_actor_main_Hide(ACTOR*, GAME*); +static void Player_actor_main_Groundhog(ACTOR*, GAME*); +static void Player_actor_main_Release_creature(ACTOR*, GAME*); +static void Player_actor_main_Wash_car(ACTOR*, GAME*); +static void Player_actor_main_Tired(ACTOR*, GAME*); +static void Player_actor_main_Rotate_octagon(ACTOR*, GAME*); +static void Player_actor_main_Throw_money(ACTOR*, GAME*); +static void Player_actor_main_Pray(ACTOR*, GAME*); +static void Player_actor_main_Shake_tree(ACTOR*, GAME*); +static void Player_actor_main_Mail_jump(ACTOR*, GAME*); +static void Player_actor_main_Mail_land(ACTOR*, GAME*); +static void Player_actor_main_Ready_pitfall(ACTOR*, GAME*); +static void Player_actor_main_Fall_pitfall(ACTOR*, GAME*); +static void Player_actor_main_Struggle_pitfall(ACTOR*, GAME*); +static void Player_actor_main_Climbup_pitfall(ACTOR*, GAME*); +static void Player_actor_main_Stung_bee(ACTOR*, GAME*); +static void Player_actor_main_Notice_bee(ACTOR*, GAME*); +static void Player_actor_main_Remove_grass(ACTOR*, GAME*); +static void Player_actor_main_Shock(ACTOR*, GAME*); +static void Player_actor_main_Knock_door(ACTOR*, GAME*); +static void Player_actor_main_Change_cloth(ACTOR*, GAME*); +static void Player_actor_main_Push_snowball(ACTOR*, GAME*); +static void Player_actor_main_Rotate_umbrella(ACTOR*, GAME*); +static void Player_actor_main_Wade_snowball(ACTOR*, GAME*); +static void Player_actor_main_Complete_payment(ACTOR*, GAME*); +static void Player_actor_main_Fail_emu(ACTOR*, GAME*); +static void Player_actor_main_Stung_mosquito(ACTOR*, GAME*); +static void Player_actor_main_Notice_mosquito(ACTOR*, GAME*); +static void Player_actor_main_Swing_fan(ACTOR*, GAME*); +static void Player_actor_main_Switch_on_lighthouse(ACTOR*, GAME*); +static void Player_actor_main_Radio_exercise(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat_sitdown(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat_wait(ACTOR*, GAME*); +static void Player_actor_main_Demo_geton_boat_wade(ACTOR*, GAME*); +static void Player_actor_main_Demo_getoff_boat_standup(ACTOR*, GAME*); +static void Player_actor_main_Demo_getoff_boat(ACTOR*, GAME*); +static void Player_actor_main_Demo_get_golden_item(ACTOR*, GAME*); +static void Player_actor_main_Demo_get_golden_item2(ACTOR*, GAME*); +static void Player_actor_main_Demo_get_golden_axe_wait(ACTOR*, GAME*); + +extern void Player_actor_move(ACTOR* actorx, GAME* game) { + static const mPlayer_MAIN_PROC proc[] = { + &Player_actor_main_Dma, + &Player_actor_main_Intro, + &Player_actor_main_Refuse, + &Player_actor_main_Refuse_pickup, + &Player_actor_main_Return_demo, + &Player_actor_main_Return_outdoor, + &Player_actor_main_Return_outdoor2, + &Player_actor_main_Wait, + &Player_actor_main_Walk, + &Player_actor_main_Run, + &Player_actor_main_Dash, + &Player_actor_main_Tumble, + &Player_actor_main_Tumble_getup, + &Player_actor_main_Turn_dash, + &Player_actor_main_Fall, + &Player_actor_main_Wade, + &Player_actor_main_Door, + &Player_actor_main_Outdoor, + &Player_actor_main_Invade, + &Player_actor_main_Hold, + &Player_actor_main_Push, + &Player_actor_main_Pull, + &Player_actor_main_Rotate_furniture, + &Player_actor_main_Open_furniture, + &Player_actor_main_Wait_open_furniture, + &Player_actor_main_Close_furniture, + &Player_actor_main_Lie_bed, + &Player_actor_main_Wait_bed, + &Player_actor_main_Roll_bed, + &Player_actor_main_Standup_bed, + &Player_actor_main_Pickup, + &Player_actor_main_Pickup_jump, + &Player_actor_main_Pickup_furniture, + &Player_actor_main_Pickup_exchange, + &Player_actor_main_Sitdown, + &Player_actor_main_Sitdown_wait, + &Player_actor_main_Standup, + &Player_actor_main_Swing_axe, + &Player_actor_main_Air_axe, + &Player_actor_main_Reflect_axe, + &Player_actor_main_Broken_axe, + &Player_actor_main_Slip_net, + &Player_actor_main_Ready_net, + &Player_actor_main_Ready_walk_net, + &Player_actor_main_Swing_net, + &Player_actor_main_Pull_net, + &Player_actor_main_Stop_net, + &Player_actor_main_Notice_net, + &Player_actor_main_Putaway_net, + &Player_actor_main_Ready_rod, + &Player_actor_main_Cast_rod, + &Player_actor_main_Air_rod, + &Player_actor_main_Relax_rod, + &Player_actor_main_Collect_rod, + &Player_actor_main_Vib_rod, + &Player_actor_main_Fly_rod, + &Player_actor_main_Notice_rod, + &Player_actor_main_Putaway_rod, + &Player_actor_main_Dig_scoop, + &Player_actor_main_Fill_scoop, + &Player_actor_main_Reflect_scoop, + &Player_actor_main_Air_scoop, + &Player_actor_main_Get_scoop, + &Player_actor_main_Putaway_scoop, + &Player_actor_main_Putin_scoop, + &Player_actor_main_Talk, + &Player_actor_main_Recieve_wait, + &Player_actor_main_Recieve_stretch, + &Player_actor_main_Recieve, + &Player_actor_main_Recieve_putaway, + &Player_actor_main_Give, + &Player_actor_main_Give_wait, + &Player_actor_main_Takeout_item, + &Player_actor_main_Putin_item, + &Player_actor_main_Demo_wait, + &Player_actor_main_Demo_walk, + &Player_actor_main_Demo_geton_train, + &Player_actor_main_Demo_geton_train_wait, + &Player_actor_main_Demo_getoff_train, + &Player_actor_main_Demo_standing_train, + &Player_actor_main_Demo_wade, + &Player_actor_main_Hide, + &Player_actor_main_Groundhog, + &Player_actor_main_Release_creature, + &Player_actor_main_Wash_car, + &Player_actor_main_Tired, + &Player_actor_main_Rotate_octagon, + &Player_actor_main_Throw_money, + &Player_actor_main_Pray, + &Player_actor_main_Shake_tree, + &Player_actor_main_Mail_jump, + &Player_actor_main_Mail_land, + &Player_actor_main_Ready_pitfall, + &Player_actor_main_Fall_pitfall, + &Player_actor_main_Struggle_pitfall, + &Player_actor_main_Climbup_pitfall, + &Player_actor_main_Stung_bee, + &Player_actor_main_Notice_bee, + &Player_actor_main_Remove_grass, + &Player_actor_main_Shock, + &Player_actor_main_Knock_door, + &Player_actor_main_Change_cloth, + &Player_actor_main_Push_snowball, + &Player_actor_main_Rotate_umbrella, + &Player_actor_main_Wade_snowball, + &Player_actor_main_Complete_payment, + &Player_actor_main_Fail_emu, + &Player_actor_main_Stung_mosquito, + &Player_actor_main_Notice_mosquito, + &Player_actor_main_Swing_fan, + &Player_actor_main_Switch_on_lighthouse, + &Player_actor_main_Radio_exercise, + &Player_actor_main_Demo_geton_boat, + &Player_actor_main_Demo_geton_boat_sitdown, + &Player_actor_main_Demo_geton_boat_wait, + &Player_actor_main_Demo_geton_boat_wade, + &Player_actor_main_Demo_getoff_boat_standup, + &Player_actor_main_Demo_getoff_boat, + &Player_actor_main_Demo_get_golden_item, + &Player_actor_main_Demo_get_golden_item2, + &Player_actor_main_Demo_get_golden_axe_wait, + }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx; + + Player_actor_move_other_func1(actorx, game); // + idx = player->now_main_index; + if (mPlayer_MAIN_INDEX_VALID(idx) == FALSE || proc[idx] == NULL) { + return; + } + + (*proc[idx])(actorx, game); + Player_actor_move_other_func2(actorx, game); // +} + +typedef void (*mPlayer_DRAW_PROC)(ACTOR*, GAME*); + +static void Player_actor_draw_Normal(ACTOR*, GAME*); + +extern void Player_actor_draw(ACTOR* actorx, GAME* game) { + static const s8 data[] = { + mPlayer_DRAW_TYPE_NONE, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NONE, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, mPlayer_DRAW_TYPE_NORMAL, + mPlayer_DRAW_TYPE_NORMAL, + }; + + static const mPlayer_DRAW_PROC proc[] = { + (mPlayer_DRAW_PROC)&none_proc2, + &Player_actor_draw_Normal, + }; + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_idx) != FALSE) { + int draw_idx = data[main_idx]; + + if (draw_idx >= 0 && draw_idx < mPlayer_DRAW_TYPE_NUM && proc[draw_idx] != NULL) { + (*proc[draw_idx])(actorx, game); + Player_actor_draw_other_func2(actorx, game); // + } + } +} diff --git a/src/m_player_call.c b/src/m_player_call.c index fb09332d..f78d58e5 100644 --- a/src/m_player_call.c +++ b/src/m_player_call.c @@ -4,10 +4,10 @@ #include "m_name_table.h" #include "m_play.h" -mActor_proc Player_actor_ct_func; -mActor_proc Player_actor_dt_func; -mActor_proc Player_actor_move_func; -mActor_proc Player_actor_draw_func; +static mActor_proc Player_actor_ct_func; +static mActor_proc Player_actor_dt_func; +static mActor_proc Player_actor_move_func; +static mActor_proc Player_actor_draw_func; void Player_actor_ct_call(ACTOR* actor, GAME* game); void Player_actor_dt_call(ACTOR* actor, GAME* game); diff --git a/src/m_player_common.c_inc b/src/m_player_common.c_inc new file mode 100644 index 00000000..3c78bcb4 --- /dev/null +++ b/src/m_player_common.c_inc @@ -0,0 +1,8549 @@ +static int Player_actor_check_request_main_priority(GAME* game, int priority) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + return priority - player->requested_main_index_priority; +} + +static void Player_actor_request_main_index(GAME* game, int request_index, int priority) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index = request_index; + player->requested_main_index_priority = priority; + player->requested_main_index_changed = TRUE; +} + +static void Player_actor_Set_start_refuse(ACTOR* actorx, GAME* game) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->now_main_index; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { + if (data[idx]) { + play->submenu.start_refuse = FALSE; + } else { + play->submenu.start_refuse = TRUE; + } + } +} + +static void Player_actor_Set_address_able_display(ACTOR* actorx) { + // clang-format off + static const s8 data[] = { + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_READY_NET, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_MOVEMENT, + mPlayer_ADDRESSABLE_TRUE, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + mPlayer_ADDRESSABLE_FALSE_TALKING, + }; + // clang-format on + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { + player->address_able_display = data[idx]; + } +} + +static f32 Player_actor_Get_DemoMoveSpeedF(void) { + return (f32)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 7) * 0.01f; +} + +static void Player_actor_Set_force_shadow_position(ACTOR* actorx, xyz_t* pos) { + mActorShadow_SetForceShadowPos(actorx, pos); +} + +static void Player_actor_Set_force_shadow_position_fromAnimePosition(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0 = &player->keyframe0; + xyz_t* pos_p = &player->shadow_pos; + + cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(pos_p, &actorx->world.position, 0.0f, 1000.0f, 0.0f, + actorx->shape_info.rotation.y, &actorx->scale, kf0, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y); + Player_actor_Set_force_shadow_position(actorx, pos_p); +} + +static void Player_actor_Set_force_shadow_position_fromWorldPosition(ACTOR* actorx) { + Player_actor_Set_force_shadow_position(actorx, &actorx->world.position); +} + +static void Player_actor_SetupShadow(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { + // clang-format off + static const s8 data[] = { + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_WORLD_POS, + mPlayer_SHADOW_TYPE_ANIME_POS, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NONE, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + mPlayer_SHADOW_TYPE_NORMAL, + }; + // clang-format on + + switch (data[idx]) { + case mPlayer_SHADOW_TYPE_ANIME_POS: + actorx->shape_info.draw_shadow = TRUE; + Player_actor_Set_force_shadow_position_fromAnimePosition(actorx); + break; + case mPlayer_SHADOW_TYPE_WORLD_POS: + actorx->shape_info.draw_shadow = TRUE; + Player_actor_Set_force_shadow_position_fromWorldPosition(actorx); + break; + case mPlayer_SHADOW_TYPE_NONE: + actorx->shape_info.draw_shadow = FALSE; + break; + default: + actorx->shape_info.draw_shadow = TRUE; + mActorShadow_UnSetForceShadowPos(actorx); + break; + } + } +} + +static void Player_actor_SetupSpeedF(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(idx) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + if (data[idx] == FALSE) { + actorx->speed = 0.0f; + } + } +} + +static int Player_actor_Get_SetupRequestMainIndexPriority(int main_index) { + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + mPlayer_REQUEST_PRIORITY_41, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_34, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_43, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_11, + mPlayer_REQUEST_PRIORITY_11, + mPlayer_REQUEST_PRIORITY_12, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_27, + mPlayer_REQUEST_PRIORITY_28, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_22, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_27, + mPlayer_REQUEST_PRIORITY_28, + mPlayer_REQUEST_PRIORITY_29, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_21, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_37, + mPlayer_REQUEST_PRIORITY_37, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_43, + mPlayer_REQUEST_PRIORITY_43, + mPlayer_REQUEST_PRIORITY_30, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_27, + mPlayer_REQUEST_PRIORITY_28, + mPlayer_REQUEST_PRIORITY_29, + mPlayer_REQUEST_PRIORITY_25, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_38, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_44, + mPlayer_REQUEST_PRIORITY_43, + mPlayer_REQUEST_PRIORITY_25, + mPlayer_REQUEST_PRIORITY_26, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_20, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_19, + mPlayer_REQUEST_PRIORITY_34, + mPlayer_REQUEST_PRIORITY_34, + mPlayer_REQUEST_PRIORITY_33, + }; + // clang-format on + + int priority = data[main_index]; + + if (mPlayer_REQUEST_PRIORITY_VALID(priority)) { + return priority; + } + } + + return mPlayer_REQUEST_PRIORITY_NONE; +} + +static void Player_actor_SetupRequestMainIndexPriority(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + int priority = Player_actor_Get_SetupRequestMainIndexPriority(main_index); + + if (mPlayer_REQUEST_PRIORITY_VALID(priority)) { + player->requested_main_index_priority = priority; + } +} + +static void Player_actor_SettleRequestMainIndexPriority(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_36, + mPlayer_REQUEST_PRIORITY_36, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_44, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_18, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_0, + mPlayer_REQUEST_PRIORITY_NONE, + }; + // clang-format on + + int priority = data[main_index]; + + if (mPlayer_REQUEST_PRIORITY_VALID(priority) && player->settled_requested_main_index_priority == FALSE && + player->requested_main_index_changed == FALSE) { + int requested_main_index_priority = player->requested_main_index_priority; + + if (requested_main_index_priority == Player_actor_Get_SetupRequestMainIndexPriority(main_index)) { + player->requested_main_index_priority = priority; + player->settled_requested_main_index_priority = TRUE; + } + } + } +} + +static void Player_actor_set_eye_pattern(ACTOR* actorx, int idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->eye_tex_idx = idx; +} + +static void Player_actor_set_eye_pattern_normal(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_eye_pattern_c* eye_pattern_p = &player->eye_pattern_normal; + s16* timer_p = &eye_pattern_p->timer; + s16* pattern_p = &eye_pattern_p->pattern; + int* blink_count_p = &player->blink_count; + int idx; + static const s8 pattern_table[] = { 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 0, 0 }; + + idx = *timer_p; + if (idx == 0) { + idx = 0; + } else { + idx = --(*timer_p); + } + + if (idx == 0) { + if (*blink_count_p <= 0) { + *blink_count_p = get_random_timer(0, 3); + *timer_p = get_random_timer(60, 120); + } else { + *timer_p = 16; + (*blink_count_p)--; + } + } + + *pattern_p = *timer_p; + if (*pattern_p >= 16) { + *pattern_p = 0; + } + + Player_actor_set_eye_pattern(actorx, pattern_table[*pattern_p]); +} + +static u8* Player_actor_Get_eye_tex_p(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->eye_tex_idx; + + return mPlib_Get_eye_tex_p(idx); +} + +static void Player_actor_set_mouth_pattern(ACTOR* actorx, int idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->mouth_tex_idx = idx; +} + +static u8* Player_actor_Get_mouth_tex_p(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int idx = player->mouth_tex_idx; + + return mPlib_Get_mouth_tex_p(idx); +} + +static void Player_actor_set_tex_anime_pattern(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + u8* eye_tex_idx_p = mPlib_Get_PlayerEyeTexAnimation_p(anim0_idx); + u8* mouth_tex_idx_p = mPlib_Get_PlayerMouthTexAnimation_p(anim0_idx); + + if (eye_tex_idx_p != NULL || mouth_tex_idx_p != NULL) { + cKF_SkeletonInfo_R_c* kf_p = &player->keyframe0; + cKF_FrameControl_c* frame_control_p = &kf_p->frame_control; + f32 cur_frame = frame_control_p->current_frame; + f32 max_frame = frame_control_p->max_frames; + + if (1.0f <= cur_frame && cur_frame <= max_frame) { + int pattern = (int)(cur_frame - 1.0f); + + if (eye_tex_idx_p != NULL) { + Player_actor_set_eye_pattern(actorx, (int)eye_tex_idx_p[pattern]); + } + + if (mouth_tex_idx_p != NULL) { + Player_actor_set_mouth_pattern(actorx, (int)mouth_tex_idx_p[pattern]); + } + } + } +} + +static void Player_actor_SetupTextureAnimation(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_idx) != FALSE) { + // clang-format off + static const s8 data[] = { + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_EYE | mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE, + mPlayer_SETUP_TEXTURE_ANIMATION_NONE + }; + // clang-format on + + int flags = data[main_idx]; + + if ((flags & mPlayer_SETUP_TEXTURE_ANIMATION_EYE)) { + Player_actor_set_eye_pattern(actorx, 0); + } + + if ((flags & mPlayer_SETUP_TEXTURE_ANIMATION_MOUTH)) { + Player_actor_set_mouth_pattern(actorx, 0); + } + } +} + +static void Player_actor_Set_now_item_main_index(ACTOR* actorx, int item_main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int last_item_main_index = player->now_item_main_index; + + if (item_main_index >= 0 && item_main_index < mPlayer_ITEM_MAIN_NUM) { + player->now_item_main_index = item_main_index; + Player_actor_Item_Setup_main(actorx, item_main_index, last_item_main_index); + } +} + +static void Player_actor_SetupItem_common(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_idx = player->now_main_index; + int item_kind = Player_actor_Get_ItemKind(actorx, main_idx); + + if (item_kind < 0) { + Player_actor_LoadOrDestruct_Item(actorx, -1, -1, 0.0f, 0.0f, -1.0f, + mPlayer_ITEM_IS_BALLOON(item_kind) == FALSE); + Player_actor_Set_now_item_main_index(actorx, mPlayer_ITEM_MAIN_NONE); + player->item_kind = item_kind; + } +} + +static void Player_actor_SetupItemScale(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32* item_scale_p = &player->item_scale; + + if (mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_TAKEOUT_ITEM) { + *item_scale_p = 1.0f; + } +} + +static void Player_actor_SetupWeight(ACTOR* actorx) { + if (mEv_CheckTitleDemo() <= 0) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_idx) != FALSE) { + // clang-format off + static const u8 data[] = { + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 255, + 50, + 255, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 254, + 254, + 254, + 254, + 254, + 254, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 254, + 254, + 254, + 254, + 254, + 254, + 254, + 50, + 50, + 254, + 255, + 50, + 50, + 50, + 50, + 255, + 50, + 255, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 255, + 255, + 255, + 255, + 50, + 50, + 50, + 50, + 50, + 50, + 255, + 50, + 255, + 50, + 50, + 50, + 50, + 50, + 50, + 50, + 255, + 255, + 255, + 255, + 255, + 255, + 50, + 50, + 50 + }; + // clang-format on + + u8 weight = data[main_idx]; + u8* weight_p = &actorx->status_data.weight; + + if (*weight_p != weight) { + *weight_p = weight; + } + } + } +} + +static int Player_actor_Get_status_for_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + return player->status_for_bee; +} + +static void Player_actor_Set_status_for_bee(ACTOR* actorx, s8 v) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->status_for_bee = v; +} + +static void Player_actor_Setup_status_for_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_idx = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_idx) != FALSE) { + // clang-format off + static const s8 data[] = { + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ENTER_BUILDING, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ATTACK, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_ENTER_BUILDING, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT, + mPlayer_STATUS_FOR_BEE_WAIT + }; + // clang-format on + + player->status_for_bee = data[main_idx]; + } +} + +static void Player_actor_setup_main_Base2(ACTOR* actorx, GAME* game, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->prev_main_index = player->now_main_index; + player->now_main_index = main_index; + player->requested_main_index_changed = FALSE; + player->settled_requested_main_index_priority = FALSE; + + Player_actor_Set_start_refuse(actorx, game); + Player_actor_Set_address_able_display(actorx); + Player_actor_SetupShadow(actorx); + Player_actor_SetupSpeedF(actorx); + Player_actor_SetupRequestMainIndexPriority(actorx); + Player_actor_SetupTextureAnimation(actorx); + Player_actor_SetupItem_common(actorx); + Player_actor_SetupItemScale(actorx, game); + Player_actor_SetupWeight(actorx); + Player_actor_Setup_status_for_bee(actorx); +} + +static void Player_actor_setup_main_Base(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_setup_main_Base2(actorx, game, player->requested_main_index); +} + +/* Common Movement */ + +static void Player_actor_Movement_Base(ACTOR* actorx) { + Actor_position_moveF(actorx); +} + +static int Player_actor_Movement_Base_Braking_common(ACTOR* actorx, f32 brake_amount) { + f32 speed = actorx->speed; + + speed -= brake_amount; + if (speed < 0.0f) { + speed = 0.0f; + } + + actorx->speed = speed; + Player_actor_Movement_Base(actorx); + return speed == 0.0f; +} + +static int Player_actor_Movement_Base_Braking(ACTOR* actorx) { + return Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static void Player_actor_SetPlayerAngle_forUki(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ACTOR* uki_actor = player->fishing_rod_actor_p; + xyz_t* uki_pos_p = &uki_actor->world.position; + xyz_t* player_pos_p = &actorx->world.position; + f32 dx = uki_pos_p->x - player_pos_p->x; + f32 dz = uki_pos_p->z - player_pos_p->z; + + if (dx != 0.0f || dz != 0.0f) { + s16 target_angle_y = atans_table(dz, dx); + + add_calc_short_angle2(&actorx->shape_info.rotation.y, target_angle_y, 1.0f - sqrtf(0.5f), + DEG2SHORT_ANGLE2(13.73291015625f), DEG2SHORT_ANGLE2(0.274658203125f)); + actorx->world.angle.y = actorx->shape_info.rotation.y; + } +} + +static void Player_actor_Movement_Base_Stop(ACTOR* actorx, int use_position_speed_y) { + actorx->speed = 0.0f; + Actor_position_speed_set(actorx); + + if (use_position_speed_y == FALSE) { + actorx->position_speed.y = 0.0f; + } + + Actor_position_move(actorx); +} + +static int Player_actor_Search_exist_npc_inCircle_forWade(GAME* game, xyz_t* origin, f32 radius_sq) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info_p = &play->actor_info; + Actor_list* actor_list_p = &actor_info_p->list[ACTOR_PART_NPC]; + ACTOR* actorx_p = actor_list_p->actor; + f32 origin_x = origin->x; + f32 origin_z = origin->z; + + for (actorx_p; actorx_p != NULL; actorx_p = actorx_p->next_actor) { + xyz_t* pos_p = &actorx_p->world.position; + f32 dx = pos_p->x - origin_x; + f32 dz = pos_p->z - origin_z; + + if (Math3DVecLengthSquare2D(dx, dz) < radius_sq) { + NPC_ACTOR* npc_actor_p = (NPC_ACTOR*)actorx_p; + + if (npc_actor_p->condition_info.hide_flg == FALSE) { + return TRUE; + } + } + } + + return FALSE; +} + +static int Player_actor_CheckAbleMoveWadeBG(GAME* game, const xyz_t* pos_p, int dir, int check_for_npc) { + xyz_t target_pos; + xyz_t local_border_pos = { 0.0f, 0.0f, 0.0f }; + xyz_t world_border_pos; + int bx; + int bz; + + mFI_Wpos2BlockNum(&bx, &bz, *pos_p); + mFI_LposInBKtoWpos(&world_border_pos, local_border_pos, bx, bz); + target_pos = *pos_p; + switch (dir) { + case mFI_MOVEDIR_RIGHT: + target_pos.x = world_border_pos.x + 18.00001f + mFI_BK_WORLDSIZE_X_F; + break; + case mFI_MOVEDIR_LEFT: + target_pos.x = world_border_pos.x - 18.00001f; + break; + case mFI_MOVEDIR_UP: + target_pos.z = world_border_pos.z - 18.00001f; + break; + case mFI_MOVEDIR_DOWN: + target_pos.z = world_border_pos.z + 18.00001f + mFI_BK_WORLDSIZE_Z_F; + break; + default: + return FALSE; + } + + if (check_for_npc == FALSE || Player_actor_Search_exist_npc_inCircle_forWade(game, &target_pos, 36.0f) == FALSE) { + return mCoBG_ScrollCheck(*pos_p, target_pos, 18.0f); + } + + return FALSE; +} + +static int Player_actor_CheckAbleMoveWadeBlock(GAME* game, const xyz_t* pos_p, s16 angle_y, f32 stick_range, + int angle_range, int npc_check_flag) { + f32 move_percentX = Player_actor_GetController_move_percentX(); + f32 move_percentY = Player_actor_GetController_move_percentY(); + xyz_t local_pos; + + mFI_WpostoLposInBK(&local_pos, *pos_p); + if (move_percentX > stick_range && + ((DEG2SHORT_ANGLE2(90.0f) - angle_range) < angle_y && angle_y < (DEG2SHORT_ANGLE2(90.0f) + angle_range)) && + mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_RIGHT)) { + f32 border_x = (mFI_BK_WORLDSIZE_X_F - 18.00001f); + + if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { + border_x -= mFI_UNIT_BASE_SIZE_F; + } + + if (local_pos.x >= border_x) { + if (mPlib_Get_unable_wade() == FALSE) { + if (Player_actor_CheckAbleMoveWadeBG(game, pos_p, mFI_MOVEDIR_RIGHT, npc_check_flag)) { + return mFI_MOVEDIR_RIGHT; + } + } else { + return mFI_MOVEDIR_RIGHT; + } + } + + } else if (move_percentX < -stick_range && + (DEG2SHORT_ANGLE2(-90.0f) - angle_range < (int)angle_y && + (int)angle_y < DEG2SHORT_ANGLE2(-90.0f) + angle_range) && + mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_LEFT)) { + f32 border_x = 18.00001f; + + if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { + border_x += mFI_UNIT_BASE_SIZE_F; + } + + if (local_pos.x <= border_x) { + if (mPlib_Get_unable_wade() == FALSE) { + if (Player_actor_CheckAbleMoveWadeBG(game, pos_p, mFI_MOVEDIR_LEFT, npc_check_flag)) { + return mFI_MOVEDIR_LEFT; + } + } else { + return mFI_MOVEDIR_LEFT; + } + } + } + + else if (move_percentY > stick_range && + ((DEG2SHORT_ANGLE2(180.0f) - angle_range) < (int)angle_y || + (int)angle_y < (DEG2SHORT_ANGLE2(-180.0f) + angle_range)) && + mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_UP)) { + f32 border_z = 18.00001f; + + if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { + border_z += mFI_UNIT_BASE_SIZE_F; + } + + if (local_pos.z <= border_z) { + if (mPlib_Get_unable_wade() == FALSE) { + if (Player_actor_CheckAbleMoveWadeBG(game, pos_p, mFI_MOVEDIR_UP, npc_check_flag)) { + return mFI_MOVEDIR_UP; + } + } else { + return mFI_MOVEDIR_UP; + } + } + } + + else if (move_percentY < -stick_range && + ((-angle_range < (int)angle_y && (int)angle_y <= DEG2SHORT_ANGLE2(0.0f)) || + (int)angle_y >= DEG2SHORT_ANGLE2(0.0f) && (int)angle_y < angle_range) && + mFI_ScrollCheck(*pos_p, mFI_MOVEDIR_DOWN)) { + f32 border_z = (mFI_BK_WORLDSIZE_Z_F - 18.00001f); + + if (mCoBG_GetBlockBgCheckMode() == mCoBG_BLOCK_BGCHECK_MODE_INTRO_DEMO) { + border_z -= mFI_UNIT_BASE_SIZE_F; + } + + if (local_pos.z >= border_z) { + if (mPlib_Get_unable_wade() == FALSE) { + if (Player_actor_CheckAbleMoveWadeBG(game, pos_p, mFI_MOVEDIR_DOWN, npc_check_flag)) { + return mFI_MOVEDIR_DOWN; + } + } else { + return mFI_MOVEDIR_DOWN; + } + } + } + + return mFI_MOVEDIR_NONE; +} + +static int Player_actor_CheckAbleMoveDemoWadeBlock(ACTOR* actorx) { + if (actorx->speed != 0.0f) { + xyz_t local_pos; + s16 angle_y = actorx->shape_info.rotation.y; + f32 dir_x = sin_s(angle_y); + f32 dir_z = cos_s(angle_y); + + mFI_WpostoLposInBK(&local_pos, actorx->world.position); + + if (dir_x > 0.0f && local_pos.x >= (mFI_BK_WORLDSIZE_X_F - 18.00001f)) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_RIGHT)) { + return mFI_MOVEDIR_RIGHT; + } + } + + if (dir_x < 0.0f && local_pos.x <= (18.00001f)) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_LEFT)) { + return mFI_MOVEDIR_LEFT; + } + } + + if (dir_z < 0.0f && local_pos.z <= (18.00001f)) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_UP)) { + return mFI_MOVEDIR_UP; + } + } + + if (dir_z > 0.0f && local_pos.z >= (mFI_BK_WORLDSIZE_Z_F - 18.00001f)) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_DOWN)) { + return mFI_MOVEDIR_DOWN; + } + } + } + + return mFI_MOVEDIR_NONE; +} + +static int Player_actor_CheckAbleMoveDemoWadeBoatBlock(ACTOR* actorx, s16 angle_y, f32 border_start) { + xyz_t local_pos; + f32 dir_z; + + dir_z = cos_s(angle_y); + mFI_WpostoLposInBK(&local_pos, actorx->world.position); + + if (dir_z < 0.0f && local_pos.z <= border_start) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_UP)) { + return mFI_MOVEDIR_UP; + } + } + + if (dir_z > 0.0f && local_pos.z >= (mFI_BK_WORLDSIZE_Z_F - border_start)) { + if (mFI_ScrollCheck(actorx->world.position, mFI_MOVEDIR_DOWN)) { + return mFI_MOVEDIR_DOWN; + } + } + + return mFI_MOVEDIR_NONE; +} + +static void Player_actor_CorrectWadeBlockBorder(ACTOR* actorx) { + mCoBG_UniqueWallCheck(actorx, 18.0f, 0.0f); +} + +/* Animation */ + +static void Player_actor_DMA_Animation(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (anim0_idx >= 0 && anim0_idx != player->animation0_idx) { + player->animation0_idx = anim0_idx; + } + + if (anim1_idx >= 0 && anim1_idx != player->animation1_idx) { + player->animation1_idx = anim1_idx; + } +} + +static void Player_actor_DMA_PartTable(ACTOR* actorx, int part_table_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (part_table_idx != player->part_table_idx) { + player->part_table_idx = part_table_idx; + mPlib_DMA_player_Part_Table(player->part_table, part_table_idx); + } +} + +static int Player_actor_CulcAnimation_Base(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8* part_table = player->part_table; + + if (part_table == NULL) { + return cKF_STATE_NONE; + } + + return cKF_SkeletonInfo_R_combine_play(&player->keyframe0, &player->keyframe1, part_table); +} + +static int Player_actor_CulcAnimation_Base2(ACTOR* actorx, f32* last_anim0_current_frame_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + cKF_SkeletonInfo_R_c* kf1_p = &player->keyframe1; + cKF_FrameControl_c* fc1_p = &kf1_p->frame_control; + + *last_anim0_current_frame_p = fc0_p->current_frame; + if (Player_actor_CulcAnimation_Base(actorx) == cKF_STATE_STOPPED) { + if (fc0_p->speed == 0.0f) { + return TRUE; /* Animation has stopped */ + } + + fc0_p->speed = 0.0f; + fc1_p->speed = 0.0f; + } + + return FALSE; +} + +static int Player_actor_CulcAnimation_Base3(ACTOR* actorx, f32* last_anim0_current_frame_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + *last_anim0_current_frame_p = fc0_p->current_frame; + if (Player_actor_CulcAnimation_Base(actorx) == cKF_STATE_STOPPED) { + return TRUE; + } + + return FALSE; +} + +static int Player_actor_CheckContinueAnimation(ACTOR* actorx, int anim0_idx, int anim1_idx, f32* anim0_frame_p, + f32* anim1_frame_p, f32* morph_counter_p, int part_table_idx, + int continue_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int now_anim0_idx; + int now_anim1_idx; + f32 now_frame0; + f32 now_frame1; + + if (continue_flag == FALSE) { + return FALSE; + } + + if (player->keyframe0.morph_counter != 0.0f) { + return FALSE; + } + + if (*morph_counter_p >= 0.0f) { + return FALSE; + } + + now_anim0_idx = player->animation0_idx; + now_anim1_idx = player->animation1_idx; + if (anim0_idx != now_anim0_idx || anim1_idx != now_anim1_idx) { + return FALSE; + } + + now_frame0 = *anim0_frame_p; + now_frame1 = *anim1_frame_p; + if (now_frame0 != 1.0f || now_frame1 != 1.0f) { + return FALSE; + } + + if (anim0_idx == mPlayer_ANIM_WAIT1) { + if (part_table_idx == mPlayer_PART_TABLE_NORMAL && anim1_idx != mPlayer_ANIM_WAIT1) { + return FALSE; + } + } else { + return FALSE; + } + + *anim0_frame_p = player->keyframe0.frame_control.current_frame; + *anim1_frame_p = player->keyframe1.frame_control.current_frame; + *morph_counter_p = 0.0f; + return TRUE; +} + +static void Player_actor_InitAnimation_Base1(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 anim0_frame, + f32 anim1_frame, f32 frame_speed, f32 morph_counter, int part_table_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p; + cKF_SkeletonInfo_R_c* kf1_p; + + Player_actor_CheckContinueAnimation(actorx, anim0_idx, anim1_idx, &anim0_frame, &anim1_frame, &morph_counter, + part_table_idx, TRUE); + Player_actor_DMA_PartTable(actorx, part_table_idx); + Player_actor_DMA_Animation(actorx, game, anim0_idx, anim1_idx); + + kf0_p = &player->keyframe0; + kf1_p = &player->keyframe1; + + if (anim0_idx >= 0) { + cKF_SkeletonInfo_R_init_standard_repeat_setframeandspeedandmorph(kf0_p, mPlib_Get_Pointer_Animation(anim0_idx), + NULL, anim0_frame, frame_speed, morph_counter); + } else { + kf0_p->morph_counter = morph_counter; + } + + if (anim1_idx >= 0) { + cKF_SkeletonInfo_R_init_standard_repeat_setframeandspeedandmorph(kf1_p, mPlib_Get_Pointer_Animation(anim1_idx), + NULL, anim1_frame, frame_speed, morph_counter); + } else { + kf1_p->morph_counter = morph_counter; + } +} + +static void Player_actor_InitAnimation_Base2(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 anim0_frame, + f32 anim1_frame, f32 frame_speed, f32 morph_counter, int mode, + int part_table_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p; + cKF_SkeletonInfo_R_c* kf1_p; + + Player_actor_CheckContinueAnimation(actorx, anim0_idx, anim1_idx, &anim0_frame, &anim1_frame, &morph_counter, + part_table_idx, TRUE); + Player_actor_DMA_Animation(actorx, game, anim0_idx, anim1_idx); + Player_actor_DMA_PartTable(actorx, part_table_idx); + + kf0_p = &player->keyframe0; + kf1_p = &player->keyframe1; + + if (anim0_idx >= 0) { + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode( + kf0_p, mPlib_Get_Pointer_Animation(anim0_idx), NULL, anim0_frame, frame_speed, morph_counter, mode); + } else { + kf0_p->morph_counter = morph_counter; + } + + if (anim1_idx >= 0) { + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode( + kf1_p, mPlib_Get_Pointer_Animation(anim1_idx), NULL, anim1_frame, frame_speed, morph_counter, mode); + } else { + kf1_p->morph_counter = morph_counter; + } +} + +static void Player_actor_InitAnimation_Base3(ACTOR* actorx, GAME* game, int anim0_idx, int anim1_idx, f32 frame_speed, + f32 morph_counter, int mode, int part_table_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p; + cKF_SkeletonInfo_R_c* kf1_p; + + Player_actor_DMA_Animation(actorx, game, anim0_idx, anim1_idx); + Player_actor_DMA_PartTable(actorx, part_table_idx); + + kf0_p = &player->keyframe0; + kf1_p = &player->keyframe1; + + /* @BUG - shouldn't this be checking anim0_idx ?? */ + if (anim1_idx >= 0) { + cKF_SkeletonInfo_R_init_reverse_setspeedandmorphandmode(kf0_p, mPlib_Get_Pointer_Animation(anim0_idx), NULL, + frame_speed, morph_counter, mode); + } else { + kf0_p->morph_counter = morph_counter; + } + + if (anim1_idx >= 0) { + cKF_SkeletonInfo_R_init_reverse_setspeedandmorphandmode(kf1_p, mPlib_Get_Pointer_Animation(anim1_idx), NULL, + frame_speed, morph_counter, mode); + } else { + kf1_p->morph_counter = morph_counter; + } +} + +/* Collision */ + +static void Player_actor_Get_player_move_position(ACTOR* actorx, xyz_t* pos_p) { + *pos_p = actorx->world.position; +} + +// clang-format off +static ClObjPipeData_c Player_actor_OcInfoData_forStand = { + { 0x39, 0x08, ClObj_TYPE_PIPE }, /* ClObjData_c */ + { 0x01 }, /* ClObjElemData_c */ + { { 20, 60, 0, { 0, 0, 0 } } }, /* ClObjPipeAttrData_c */ +}; +// clang-format on + +// clang-format off +static ClObjTrisElemData_c Player_actor_pclobj_tris_base_forItem[1] = { + { + { 0x00 }, /* ClObjElemData_c */ + { { { -70.0f, 176.0f, 0.0f }, { -70.0f, -4.0f, 0.0f }, { 0.0f, -4.0f, 30.0f } } }, /* ClObjTrisElemAttrData_c */ + }, +}; +// clang-format on + +// clang-format off +static ClObjTrisData_c Player_actor_pclobj_tris_data_forItem = { + { 0x30, 0x02, ClObj_TYPE_TRIS }, /* ClObjData_c */ + 1, /* num */ + Player_actor_pclobj_tris_base_forItem, /* data */ +}; +// clang-format on + +static void Player_actor_ct_forCorect(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjPipe_c* col_pipe_p = &player->col_pipe; + ClObjTris_c* axe_tris_p = &player->item_axe_tris; + ClObjTris_c* net_tris_p = &player->item_net_tris; + + /* Collision Pipe */ + ClObjPipe_ct(game, col_pipe_p); + ClObjPipe_set5(game, col_pipe_p, actorx, &Player_actor_OcInfoData_forStand); + + /* Axe Collision */ + ClObjTris_ct(game, axe_tris_p); + ClObjTris_set5_nzm(game, axe_tris_p, actorx, &Player_actor_pclobj_tris_data_forItem, + player->item_axe_tris_elem_tbl); + + /* Net Collision */ + ClObjTris_ct(game, net_tris_p); + ClObjTris_set5_nzm(game, net_tris_p, actorx, &Player_actor_pclobj_tris_data_forItem, + player->item_net_tris_elem_tbl); +} + +static void Player_actor_dt_forCorect(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjPipe_c* col_pipe_p = &player->col_pipe; + ClObjTris_c* axe_tris_p = &player->item_axe_tris; + ClObjTris_c* net_tris_p = &player->item_net_tris; + + ClObjPipe_dt(game, col_pipe_p); + ClObjTris_dt_nzf(game, axe_tris_p); + ClObjTris_dt_nzf(game, net_tris_p); +} + +static void Player_actor_Excute_Corect_forStand(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjPipe_c* col_pipe_p = &player->col_pipe; + ClObj_c* col_obj_p = &col_pipe_p->collision_obj; + GAME_PLAY* play = (GAME_PLAY*)game; + CollisionCheck_c* col_check_p = &play->collision_check; + + CollisionCheck_Uty_ActorWorldPosSetPipeC(actorx, col_pipe_p); + CollisionCheck_setOC(game, col_check_p, col_obj_p); +} + +static void Player_actor_Excute_Corect_forBrake(ACTOR* actorx, GAME* game) { + f32 speed = actorx->speed; + u8* weight_p = &actorx->status_data.weight; + + if (speed != 0.0f) { + *weight_p = 50; + } else { + *weight_p = MASSTYPE_HEAVY; + } + + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_Excute_Corect_forOutdoor(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + ClObjPipe_c* col_pipe_p = &player->col_pipe; + s_xyz* pipe_center_p = &col_pipe_p->attribute.pipe.center; + ClObj_c* col_obj_p = &col_pipe_p->collision_obj; + GAME_PLAY* play = (GAME_PLAY*)game; + CollisionCheck_c* col_check_p = &play->collision_check; + xyz_t world_pos; + + cKF_SkeletonInfo_R_AnimationMove_CulcTransToWorld(&world_pos, &actorx->world.position, 0.0f, 1000.0f, 0.0f, + actorx->shape_info.rotation.y, &actorx->scale, kf0_p, + cKF_ANIMATION_TRANS_XZ); + + pipe_center_p->x = world_pos.x; + pipe_center_p->y = actorx->world.position.y; + pipe_center_p->z = world_pos.z; + + CollisionCheck_setOC(game, col_check_p, col_obj_p); +} + +static int Player_actor_Check_OBJtoLine_forItem_axe(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjTris_c* axe_tris_p = &player->item_axe_tris; + + return axe_tris_p->collision_obj.collision_flags1 & (1 << 2); +} + +static int Player_actor_Check_OBJtoLine_forItem_net(ACTOR* actorx, ACTOR** hit_actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjTris_c* net_tris_p = &player->item_net_tris; + + if ((net_tris_p->collision_obj.collision_flags1 & (1 << 2)) == 0) { + *hit_actor = NULL; + return FALSE; + } else { + *hit_actor = net_tris_p->collision_obj.collided_actor; + return TRUE; + } +} + +static void Player_actor_SetPosition_OBJtoLine_forItem(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ClObjTris_c* axe_tris_p = &player->item_axe_tris; + ClObjTris_c* net_tris_p = &player->item_net_tris; + + /* Process axe collision */ + { + xyz_t start_pos; + xyz_t right_pos; + xyz_t left_pos; + s16 angle_y = actorx->shape_info.rotation.y; + s16 right_angle_y = angle_y - DEG2SHORT_ANGLE2(8.0255126953125f); + s16 left_angle_y = angle_y + DEG2SHORT_ANGLE2(8.0255126953125f); + + Player_actor_Get_player_move_position(actorx, &start_pos); + start_pos.y += 31.0f; + + right_pos = start_pos; + right_pos.x += 35.0f * sin_s(right_angle_y); + right_pos.z += 35.0f * cos_s(right_angle_y); + + left_pos = start_pos; + left_pos.x += 35.0f * sin_s(left_angle_y); + left_pos.z += 35.0f * cos_s(left_angle_y); + + { + ClObjTrisElem_c* axe_tris_elem_p = axe_tris_p->elements; + ClObjTrisElemAttr_c* axe_tris_elem_attr_p = &axe_tris_elem_p->attribute; + xyz_t* vtx_tbl = axe_tris_elem_attr_p->tri.vtx; + + vtx_tbl[0] = start_pos; + vtx_tbl[1] = right_pos; + vtx_tbl[2] = left_pos; + } + } + + /* Process net collision */ + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET) { + xyz_t* net_start_pos_p = &player->net_start_pos; + xyz_t* net_end_pos_p = &player->net_end_pos; + xyz_t net_top_pos = *net_end_pos_p; + + net_top_pos.y += 10.0f; + + { + ClObjTrisElem_c* net_tris_elem_p = net_tris_p->elements; + ClObjTrisElemAttr_c* net_tris_elem_attr_p = &net_tris_elem_p->attribute; + xyz_t* vtx_tbl = net_tris_elem_attr_p->tri.vtx; + + vtx_tbl[0] = *net_start_pos_p; + vtx_tbl[1] = *net_end_pos_p; + vtx_tbl[2] = net_top_pos; + } + } + + /* Update collision check */ + { + GAME_PLAY* play = (GAME_PLAY*)game; + CollisionCheck_c* col_check_p = &play->collision_check; + ClObj_c* axe_col_obj_p = &axe_tris_p->collision_obj; + ClObj_c* net_col_obj_p = &net_tris_p->collision_obj; + + CollisionCheck_setOCC(game, col_check_p, axe_col_obj_p); + CollisionCheck_setOCC(game, col_check_p, net_col_obj_p); + } +} + +static f32 Player_actor_Culc_over_speed_normalize_NoneZero(ACTOR* actorx, const xyz_t* pos_p) { + f32 over_speed_normalize; + xyz_t ground_norm; + + mCoBG_GetBgNorm_FromWpos(&ground_norm, *pos_p); + over_speed_normalize = 1.0f; + + if (ground_norm.x != 0.0f || ground_norm.z != 0.0f) { + xyz_t move_vec; + s16 angle_y = actorx->world.angle.y; + + move_vec.x = sin_s(angle_y); + move_vec.z = cos_s(angle_y); + + if (ground_norm.y != 0.0f) { + move_vec.y = (ground_norm.x * move_vec.x + ground_norm.z * move_vec.z) / -ground_norm.y; + + if (move_vec.y > 0.0f) { + over_speed_normalize = Math3DVecLengthSquare(&move_vec); + } + } + } + + if (over_speed_normalize == 0.0f) { + over_speed_normalize = 1.0f; + } + + return over_speed_normalize; +} + +static void Player_actor_set_eye_PositionAndAngle(ACTOR* actorx) { + Actor_world_to_eye(actorx, 33.0f); +} + +static void Player_actor_set_lean_angle(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + f32 speed; + f32 lean_angle; + + speed = SQ(kf0_p->frame_control.speed) / 0.36f; + lean_angle = SQ(speed); + lean_angle = lean_angle * lean_angle * lean_angle * DEG2SHORT_ANGLE2(20.0f); + if (lean_angle > DEG2SHORT_ANGLE2(20.0f)) { + lean_angle = DEG2SHORT_ANGLE2(20.0f); + } + + add_calc_short_angle2(&actorx->shape_info.rotation.x, lean_angle, 1.0f - sqrtf(0.5f), DEG2SHORT_ANGLE2(10.0f), + DEG2SHORT_ANGLE2(0.0f)); +} + +static void Player_actor_recover_lean_angle(ACTOR* actorx) { + add_calc_short_angle2(&actorx->shape_info.rotation.x, DEG2SHORT_ANGLE2(0.0f), 1.0f - sqrtf(0.5f), + DEG2SHORT_ANGLE2(10.0f), DEG2SHORT_ANGLE2(0.0f)); +} + +static const s16 Player_actor_wall_angle[] = { + DEG2SHORT_ANGLE2(-180.0f), + DEG2SHORT_ANGLE2(-90.0f), + DEG2SHORT_ANGLE2(0.0f), + DEG2SHORT_ANGLE2(90.0f), +}; + +static s16 Player_actor_Get_Angle_fromIndex(int idx) { + if (idx >= 0 && idx < aMR_CONTACT_DIR_NUM) { + return Player_actor_wall_angle[idx]; + } + + return DEG2SHORT_ANGLE2(0.0f); +} + +static s16 Player_actor_Get_Angle_fromDirection(int direction) { + static const s16 angle[] = { + DEG2SHORT_ANGLE2(90.0f), + DEG2SHORT_ANGLE2(-90.0f), + DEG2SHORT_ANGLE2(-180.0f), + DEG2SHORT_ANGLE2(0.0f), + }; + + if (direction > mFI_MOVEDIR_NONE && direction < mFI_MOVEDIR_NUM) { + return angle[direction - mFI_MOVEDIR_RIGHT]; + } + + return DEG2SHORT_ANGLE2(0.0f); +} + +static int Player_actor_Get_Direction_fromAngle(s16 angle) { + switch (angle) { + case DEG2SHORT_ANGLE2(90.0f): + return mFI_MOVEDIR_RIGHT; + case DEG2SHORT_ANGLE2(-90.0f): + return mFI_MOVEDIR_LEFT; + case DEG2SHORT_ANGLE2(-180.0f): + return mFI_MOVEDIR_UP; + case DEG2SHORT_ANGLE2(0.0f): + return mFI_MOVEDIR_DOWN; + default: + return mFI_MOVEDIR_NONE; + } +} + +static int Player_actor_Get_Index_fromAngle(s16 angle) { + int i; + + for (i = 0; i < aMR_CONTACT_DIR_NUM; i++) { + if (angle == Player_actor_wall_angle[i]) { + return i; + } + } + + return aMR_CONTACT_DIR_BACK; +} + +static int Player_actor_RecieveDemoOrder_EffectOrder(void) { + int order = mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 0); + + if (order > 0) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 0, 0); + } + + return order; +} + +static s16 Player_actor_Get_ControllerAngle(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + int angle = DEG2SHORT_ANGLE2(270.0f) + (s16)Player_actor_GetController_move_angle() + (s16)getCamera2AngleY(play); + + return angle; +} + +static int Player_actor_Get_DiffWorldAngleToControllerAngle(ACTOR* actorx) { + s16 angle_y = actorx->world.angle.y; + s16 controller_y = DEG2SHORT_ANGLE2(90.0f) + Player_actor_GetController_move_angle(); + int diff_y = (s16)(angle_y - controller_y); + + diff_y = diff_y < 0 ? -diff_y : diff_y; + + return diff_y; +} + +static void Player_actor_putin(int slot, mActor_name_t item) { + if (slot >= 0) { + mPr_SetPossessionItem(Now_Private, slot, item, mPr_ITEM_COND_NORMAL); + } +} + +static void Player_actor_putin_item(int slot, mActor_name_t item, xyz_t* pos_p) { + Player_actor_putin(slot, item); + + if (pos_p != NULL) { + mFI_SetFG_common(EMPTY_NO, *pos_p, TRUE); + } +} + +static void Player_actor_putin_item_layer2(int slot, mActor_name_t item, xyz_t* pos_p) { + Player_actor_putin(slot, item); + + if (pos_p != NULL) { + mFI_SetFG2(EMPTY_NO, *pos_p); + } +} + +static void Player_actor_putin_furniture(GAME* game, int slot, mActor_name_t item) { + if (!ITEM_IS_MYMANNIQUIN(item) && !ITEM_IS_MYUMBRELLA(item)) { + Player_actor_putin(slot, item); + } + + if (Common_Get(clip).my_room_clip != NULL) { + Common_Get(clip).my_room_clip->ftr2itemBag_proc(game); + } +} + +static int Player_actor_Check_AnimationFrame_PerfectEquel(ACTOR* actorx, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc_p = &kf0_p->frame_control; + f32 cur_frame = fc_p->current_frame; + + return cur_frame == frame; +} + +static int Player_actor_Check_AnimationFrame_Common(f32 cur_frame, f32 frame_speed, f32 end_frame, f32 target_frame) { + f32 last_frame = cur_frame - frame_speed; + + if (frame_speed > 0.0f) { + if (last_frame < 1.0f) { + if (((end_frame + last_frame) - 1.0f < target_frame && target_frame <= end_frame) || + (1.0f <= target_frame && target_frame <= cur_frame)) { + return TRUE; + } + } else { + if (last_frame < target_frame && target_frame <= cur_frame) { + return TRUE; + } + } + } else if (frame_speed < 0.0f) { + if (last_frame > end_frame) { + if (((end_frame - last_frame) + 1.0f < target_frame && target_frame <= cur_frame) || + (1.0f <= target_frame && target_frame <= cur_frame)) { + return TRUE; + } + } else { + if (cur_frame <= target_frame && target_frame < last_frame) { + return TRUE; + } + } + } else { + if (cur_frame == target_frame) { + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Check_AnimationFrame(cKF_FrameControl_c* fc_p, f32 target_frame) { + f32 frame_speed = fc_p->speed; + f32 cur_frame = fc_p->current_frame; + f32 end_frame = fc_p->end_frame; + + return Player_actor_Check_AnimationFrame_Common(cur_frame, frame_speed, end_frame, target_frame); +} + +static int Player_actor_Check_TradingItemMode(u8 mode) { + if (Common_Get(clip).handOverItem_clip->request_mode == mode) { + return TRUE; + } + + return FALSE; +} + +static void Player_actor_CHange_TradingItemMode(ACTOR* actorx, u8 mode) { + Common_Get(clip).handOverItem_clip->chg_request_mode_proc(actorx, mode); +} + +static void Player_actor_Set_item_matrix_set(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->item_matrix_set = TRUE; +} + +static void Player_actor_Unset_item_matrix_set(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->item_matrix_set = FALSE; +} + +static void Player_actor_Change_ItemParent(ACTOR* actor) { + ACTOR* item_actor = Common_Get(clip).handOverItem_clip->chg_master_proc(actor); + + if (item_actor != NULL) { + Common_Get(clip).handOverItem_clip->chg_request_mode_proc(actor, aHOI_REQUEST_GET_PULL); + } +} + +static int Player_actor_Check_ItemParent(ACTOR* actor) { + return Common_Get(clip).handOverItem_clip->master_actor == actor; +} + +static void Player_actor_Birth_TradingItem(ACTOR* actor, mActor_name_t item, int mode, int present_flag) { + if (Common_Get(clip).handOverItem_clip != NULL) { + ACTOR* item_actor = Common_Get(clip).handOverItem_clip->birth_proc(item, mode, present_flag, actor); + + if (item_actor != NULL) { + Player_actor_CHange_TradingItemMode(actor, aHOI_REQUEST_TRANSFER); + } + } +} + +static void Player_actor_ItemBank_ct(ACTOR* actorx, GAME* game) { + // stubbed +} + +static int Player_actor_Change_ItemBank(ACTOR* actorx, int item_idx, int anim_idx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int last_bank = player->item_bank_idx; + int cur_bank_idx = last_bank ^ 1; + int last_item_idx = player->item_shape_type[cur_bank_idx]; + int res = FALSE; + + player->item_bank_idx = cur_bank_idx; + + if (item_idx >= 0) { + if (item_idx != last_item_idx) { + player->item_shape_type[cur_bank_idx] = item_idx; + } + } else { + player->item_shape_type[cur_bank_idx] = -1; + player->item_shape_segaddr[cur_bank_idx] = 0; + } + + if (anim_idx >= 0) { + if (anim_idx != player->item_animation_idx[cur_bank_idx]) { + player->item_animation_idx[cur_bank_idx] = anim_idx; + } + + if (player->item_animation_idx[cur_bank_idx] == player->item_animation_idx[cur_bank_idx ^ 1]) { + res = TRUE; + } + } else { + player->item_anim_addr[cur_bank_idx] = 0; + player->item_anim_segaddr[cur_bank_idx] = 0; + player->item_animation_idx[cur_bank_idx] = -1; + } + + return res; +} + +static void Player_actor_Set_OldAngle(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s_xyz* world_angle_p = &actorx->world.angle; + s_xyz* shape_rot_p = &actorx->shape_info.rotation; + s_xyz* old_world_angle_p = &player->old_world_angle; + s_xyz* old_shape_angle_p = &player->old_shape_angle; + + player->world_angle_delta.x = (s16)(world_angle_p->x - old_world_angle_p->x); + player->world_angle_delta.y = (s16)(world_angle_p->y - old_world_angle_p->y); + player->world_angle_delta.z = (s16)(world_angle_p->z - old_world_angle_p->z); + + player->shape_angle_delta.x = (s16)(shape_rot_p->x - old_shape_angle_p->x); + player->shape_angle_delta.y = (s16)(shape_rot_p->y - old_shape_angle_p->y); + player->shape_angle_delta.z = (s16)(shape_rot_p->z - old_shape_angle_p->z); + + *old_world_angle_p = *world_angle_p; + *old_shape_angle_p = *shape_rot_p; +} + +static void Player_actor_Reset_Item_net_catch_request_table(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->item_net_catch_request_use_count = 0; + player->item_net_catch_label_request_force = 0; +} + +static int Player_actor_Set_Item_net_catch_request_table(ACTOR* actorx, GAME* game, u32 label, s8 type, + const xyz_t* pos_p, f32 radius) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET) { + int catch_num = player->item_net_catch_request_use_count; + + if ((catch_num >= 0 && catch_num < mPlayer_NET_CATCH_TABLE_COUNT) && + (type >= 0 && type < mPlayer_NET_CATCH_TYPE_NUM) && pos_p != NULL && 0.0f <= radius) { + player->item_net_catch_label_request_table[catch_num] = label; + player->item_net_catch_type_request_table[catch_num] = type; + player->item_net_catch_pos_request_table[catch_num] = *pos_p; + player->item_net_catch_radius_request_table[catch_num] = radius; + player->item_net_catch_request_use_count = catch_num + 1; + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Set_Item_net_catch_request_force(ACTOR* actorx, GAME* game, u32 label, s8 type) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET && + player->item_net_catch_label_request_force == 0) { + player->item_net_catch_label_request_force = label; + player->item_net_catch_type_request_force = type; + return TRUE; + } + + return FALSE; +} + +static f32 Player_actor_Get_Item_net_catch_swing_timer(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET) { + return player->main_data.swing_net.swing_timer; + } + + return 0.0f; +} + +static void Player_actor_DisappearShadow_fromAnimationFrame(ACTOR* actorx, f32 start_frame, f32 end_frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32 cur_frame = player->keyframe0.frame_control.current_frame; + + if (cur_frame < start_frame) { + return; + } + + if (cur_frame < end_frame) { + f32 p = 1.0f - ((cur_frame - start_frame) - 1.0f) / ((end_frame - start_frame) - 1.0f); + + if (p < 0.0f) { + p = 0.0f; + } else if (p > 1.0f) { + p = 1.0f; + } + + actorx->shape_info.shadow_size_change_rate = p; + actorx->shape_info.shadow_alpha_change_rate = p; + } else { + actorx->shape_info.shadow_size_change_rate = 0.0f; + actorx->shape_info.shadow_alpha_change_rate = 0.0f; + actorx->shape_info.draw_shadow = FALSE; + } +} + +static void Player_actor_AppearShadow_fromAnimationFrame(ACTOR* actorx, f32 appear_start_frame, f32 appear_end_frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32 cur_frame = player->keyframe0.frame_control.current_frame; + f32 end_frame = player->keyframe0.frame_control.end_frame; + + if (cur_frame > end_frame - appear_end_frame) { + actorx->shape_info.shadow_size_change_rate = 1.0f; + actorx->shape_info.shadow_alpha_change_rate = 1.0f; + } else if (cur_frame > (end_frame - appear_start_frame) - appear_end_frame) { + f32 p = 1.0f - ((end_frame - cur_frame) - appear_end_frame) / (appear_start_frame - 1.0f); + + if (p < 0.0f) { + p = 0.0f; + } else if (p > 1.0f) { + p = 1.0f; + } + + actorx->shape_info.shadow_size_change_rate = p; + actorx->shape_info.shadow_alpha_change_rate = p; + } else { + actorx->shape_info.shadow_size_change_rate = 0.0f; + actorx->shape_info.shadow_alpha_change_rate = 0.0f; + actorx->shape_info.draw_shadow = TRUE; + } +} + +static void* Player_actor_get_door_label(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DOOR) { + return (void*)GET_PLAYER_ACTOR_GAME(game)->main_data.door.label; + } + + return 0; +} + +static void Player_actor_BGcheck_common_type1(ACTOR* actorx) { + mCoBG_BgCheckControll(NULL, actorx, 18.0f, 0.0f, TRUE, FALSE, 1); + Player_actor_CorrectWadeBlockBorder(actorx); +} + +static void Player_actor_BGcheck_common_type2(ACTOR* actorx) { + mCoBG_BgCheckControll(NULL, actorx, 18.0f, 0.0f, TRUE, FALSE, 1); +} + +static void Player_actor_BGcheck_common_type3(ACTOR* actorx) { + mCoBG_GroundCheckOnly(NULL, actorx, 18.0f, 0.0f, 0); +} + +static void Player_actor_Set_force_position_angle(GAME* game, const xyz_t* pos_p, const s_xyz* angle_p, u8 flags) { + if (flags != mPlayer_FORCE_POSITION_ANGLE_NONE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (pos_p != NULL) { + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSX)) { + player->force_position.x = pos_p->x; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSY)) { + player->force_position.y = pos_p->y; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSZ)) { + player->force_position.z = pos_p->z; + } + } + + if (angle_p != NULL) { + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTX)) { + player->force_angle.x = angle_p->x; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTY)) { + player->force_angle.y = angle_p->y; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTZ)) { + player->force_angle.z = angle_p->z; + } + } + + player->force_position_angle_flag |= flags; + } +} + +static void Player_actor_Reset_force_position_angle(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->force_position_angle_flag = mPlayer_FORCE_POSITION_ANGLE_NONE; +} + +static u8 Player_actor_Get_force_position_angle(GAME* game, xyz_t* pos_p, s_xyz* angle_p) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + u8 flags = player->force_position_angle_flag; + + if (flags != mPlayer_FORCE_POSITION_ANGLE_NONE) { + if (pos_p != NULL) { + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSX)) { + pos_p->x = player->force_position.x; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSY)) { + pos_p->y = player->force_position.y; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_POSZ)) { + pos_p->z = player->force_position.z; + } + } + + if (angle_p != NULL) { + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTX)) { + angle_p->x = player->force_angle.x; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTY)) { + angle_p->y = player->force_angle.y; + } + + if ((flags & mPlayer_FORCE_POSITION_ANGLE_ROTZ)) { + angle_p->z = player->force_angle.z; + } + } + } + + return flags; +} + +static void Player_actor_Reinput_force_position_angle(ACTOR* actorx, GAME* game) { + Player_actor_Get_force_position_angle(game, &actorx->world.position, &actorx->world.angle); + Player_actor_Get_force_position_angle(game, NULL, &actorx->shape_info.rotation); + Player_actor_Reset_force_position_angle(actorx); +} + +static int Player_actor_Get_DemoOrder(void) { + return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 1); +} + +static void Player_actor_Set_DemoOrder(u16 value) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 1, value); +} + +static void Player_actor_Get_DemoPosition(xyz_t* pos_p) { + f32 x = (s16)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 2); + f32 y = (s16)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 3); + f32 z = (s16)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 4); + + pos_p->x = x; + pos_p->y = y; + pos_p->z = z; +} + +static int Player_actor_Get_DemoChangeAngleY(void) { + return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 5); +} + +static void Player_actor_Set_DemoChangeAngleY(u16 value) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 5, value); +} + +static s16 Player_actor_Get_DemoAngleY(void) { + return (s16)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 6); +} + +static int Player_actor_CheckScene_AbleOutItem(int scene_no) { + // clang-format off + static const s8 data[] = { + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + if (!(scene_no >= 0 && scene_no < SCENE_NUM)) { + return FALSE; + } + + return data[scene_no]; +} + +static int Player_actor_CheckPlayer_AbleOutItem(int main_index) { + if (mPlayer_MAIN_INDEX_VALID(main_index) == FALSE) { + return mPlayer_ABLE_ITEM_CAN_USE_ALL; + } else { + // clang-format off + static const s8 data[] = { + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_RESTRICTED, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + }; + // clang-format on + + return data[main_index]; + } +} + +static int Player_actor_CheckPlayer_AbleLoadItem(int main_index) { + if (mPlayer_MAIN_INDEX_VALID(main_index) == FALSE) { + return mPlayer_ABLE_ITEM_CAN_USE_ALL; + } else { + // clang-format off + static const s8 data[] = { + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_NONE, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_ALL, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA, + }; + // clang-format on + + return data[main_index]; + } +} + +static int Player_actor_Check_is_demo_mode(int main_index) { + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + }; + // clang-format on + + return data[main_index]; + } + + return FALSE; +} + +static int Player_actor_Check_axe_after(ACTOR* actorx, xyz_t* target_pos_p, mActor_name_t* fg_p, + ACTOR** reflect_actor_pp) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + *fg_p = EMPTY_NO; + *reflect_actor_pp = NULL; + + if (Player_actor_Check_OBJtoLine_forItem_axe(actorx)) { + ClObjTris_c* axe_tris_p = &player->item_axe_tris; + ClObjTrisElem_c* axe_tris_elem_p = axe_tris_p->elements; + ClObjTrisElemAttr_c* axe_tris_elem_attr_p = &axe_tris_elem_p->attribute; + xyz_t* cross_p = &axe_tris_elem_attr_p->t; + ACTOR* reflect_actor = axe_tris_p->collision_obj.collided_actor; + + *target_pos_p = *cross_p; + *reflect_actor_pp = reflect_actor; + + if (reflect_actor != NULL) { + if (reflect_actor->id == mAc_PROFILE_BALL) { + if (reflect_actor->speed == 0.0f) { + return mPlayer_AXE_HIT_REFLECT; + } + } else { + return mPlayer_AXE_HIT_REFLECT; + } + } else { + return mPlayer_AXE_HIT_REFLECT; + } + } + + { + xyz_t* unit_center_p; + s16 player_angle_y = actorx->shape_info.rotation.y; + xyz_t player_move_pos; + int player_pos_x; + int player_pos_z; + xyz_t unit_center_pos[8]; + xyz_t unit_pos[8]; + int unit_exist_table[8]; + int unit_center_angle_table[8]; + f32 unit_center_dist_table[8]; + int unit_count; + int i; + int right_idx = -1; + int left_idx = -1; + int up_idx = -1; + int down_idx = -1; + f32 x; + f32 z; + + Player_actor_Get_player_move_position(actorx, &player_move_pos); + player_pos_x = (int)(player_move_pos.x / mFI_UT_WORLDSIZE_X_F); + player_pos_z = (int)(player_move_pos.z / mFI_UT_WORLDSIZE_Z_F); + + x = player_pos_x * mFI_UT_WORLDSIZE_X_F; + z = player_pos_z * mFI_UT_WORLDSIZE_Z_F; + + if (x == player_move_pos.x && z == player_move_pos.z) { + return 0; + } else if (x == player_move_pos.x) { + unit_count = 4; + unit_pos[0].x = unit_pos[2].x = player_move_pos.x + mFI_UT_WORLDSIZE_HALF_X_F; + unit_pos[1].x = unit_pos[3].x = player_move_pos.x - mFI_UT_WORLDSIZE_HALF_X_F; + unit_pos[0].z = unit_pos[1].z = player_move_pos.z - mFI_UT_WORLDSIZE_Z_F; + unit_pos[2].z = unit_pos[3].z = player_move_pos.z + mFI_UT_WORLDSIZE_Z_F; + } else if (z == player_move_pos.z) { + unit_count = 4; + unit_pos[0].x = unit_pos[2].x = player_move_pos.x + mFI_UT_WORLDSIZE_X_F; + unit_pos[1].x = unit_pos[3].x = player_move_pos.x - mFI_UT_WORLDSIZE_X_F; + unit_pos[0].z = unit_pos[1].z = player_move_pos.z - mFI_UT_WORLDSIZE_HALF_Z_F; + unit_pos[2].z = unit_pos[3].z = player_move_pos.z + mFI_UT_WORLDSIZE_HALF_Z_F; + } else { + right_idx = 3; + left_idx = 4; + up_idx = 1; + down_idx = 6; + unit_count = 8; + + unit_pos[6].x = player_move_pos.x; + unit_pos[1].x = player_move_pos.x; + unit_pos[4].z = player_move_pos.z; + unit_pos[0].x = unit_pos[3].x = unit_pos[5].x = player_move_pos.x - mFI_UT_WORLDSIZE_X_F; + unit_pos[2].x = unit_pos[4].x = unit_pos[7].x = player_move_pos.x + mFI_UT_WORLDSIZE_X_F; + unit_pos[0].z = unit_pos[1].z = unit_pos[2].z = player_move_pos.z - mFI_UT_WORLDSIZE_Z_F; + unit_pos[3].z = player_move_pos.z; + unit_pos[5].z = unit_pos[6].z = unit_pos[7].z = player_move_pos.z + mFI_UT_WORLDSIZE_Z_F; + } + + for (i = 0; i < unit_count; i++) { + unit_center_p = &unit_center_pos[i]; + unit_exist_table[i] = mFI_Wpos2UtCenterWpos(unit_center_p, unit_pos[i]); + if (unit_exist_table[i] != FALSE) { + f32 dx = unit_center_p->x - player_move_pos.x; + f32 dz = unit_center_p->z - player_move_pos.z; + f32 dist_center = Math3DVecLength2D(dx, dz); + int angle_center = atans_table(dz, dx) - player_angle_y; + int abs_angle_center = ABS(angle_center); + + if (abs_angle_center > DEG2SHORT_ANGLE2(180.0f)) { + abs_angle_center = DEG2SHORT_ANGLE2(360.0f) - abs_angle_center; + } + + unit_center_angle_table[i] = abs_angle_center; + unit_center_dist_table[i] = dist_center; + } + } + + { + int tree_exist_table[8] = { FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }; + mActor_name_t tree_fg_table[8]; + mActor_name_t* unit_fg_p; + + for (i = 0; i < unit_count; i++) { + if (unit_exist_table[i] != FALSE) { + unit_center_p = &unit_center_pos[i]; + unit_fg_p = mFI_GetUnitFG(*unit_center_p); + + if (unit_fg_p != NULL) { + mActor_name_t item = *unit_fg_p; + + if (IS_ITEM_COLLIDEABLE_TREE(item) != FALSE || IS_ITEM_ROCK(item) != FALSE) { + f32 diff_y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*unit_center_p, 0.0f) - player_move_pos.y; + f32 abs_diff_y = ABS(diff_y); + + if (abs_diff_y < (mFI_UNIT_BASE_SIZE_F * 0.5f)) { + tree_fg_table[i] = item; + tree_exist_table[i] = TRUE; + } + } + } + } + } + + for (i = 0; i < unit_count; i++) { + if (tree_exist_table[i] != FALSE) { + if (unit_center_dist_table[i] > (mFI_UNIT_BASE_SIZE_F * 1.5f)) { + tree_exist_table[i] = FALSE; + } + } + } + + for (i = 0; i < unit_count; i++) { + if (tree_exist_table[i] != FALSE) { + if (unit_center_angle_table[i] > DEG2SHORT_ANGLE2(75.0f)) { + tree_exist_table[i] = FALSE; + } + } + } + + { + int selected_idx = -1; + int min_angle_y = DEG2SHORT_ANGLE2(360.0f); + + if (right_idx >= 0 && tree_exist_table[right_idx] != FALSE && + min_angle_y > unit_center_angle_table[right_idx]) { + min_angle_y = unit_center_angle_table[right_idx]; + selected_idx = right_idx; + } + + if (left_idx >= 0 && tree_exist_table[left_idx] != FALSE && + min_angle_y > unit_center_angle_table[left_idx]) { + min_angle_y = unit_center_angle_table[left_idx]; + selected_idx = left_idx; + } + + if (up_idx >= 0 && tree_exist_table[up_idx] != FALSE && min_angle_y > unit_center_angle_table[up_idx]) { + min_angle_y = unit_center_angle_table[up_idx]; + selected_idx = up_idx; + } + + if (down_idx >= 0 && tree_exist_table[down_idx] != FALSE && + min_angle_y > unit_center_angle_table[down_idx]) { + min_angle_y = unit_center_angle_table[down_idx]; + selected_idx = down_idx; + } + + if (selected_idx >= 0) { + mActor_name_t item = tree_fg_table[selected_idx]; + + target_pos_p->x = unit_center_pos[selected_idx].x; + target_pos_p->y = player_move_pos.y; + target_pos_p->z = unit_center_pos[selected_idx].z; + *fg_p = item; + + if (IS_ITEM_COLLIDEABLE_TREE(item) != FALSE) { + return mPlayer_AXE_HIT_TREE; /* Hit item was a tree */ + } else { + return mPlayer_AXE_HIT_REFLECT; /* Hit item was a rock, reflect it */ + } + } else { + int selected_idx = -1; + int min_angle_y = DEG2SHORT_ANGLE2(360.0f); + + for (i = 0; i < unit_count; i++) { + if (tree_exist_table[i] != FALSE && min_angle_y > unit_center_angle_table[i]) { + min_angle_y = unit_center_angle_table[i]; + selected_idx = i; + } + } + + if (selected_idx >= 0) { + mActor_name_t item = tree_fg_table[selected_idx]; + + target_pos_p->x = unit_center_pos[selected_idx].x; + target_pos_p->y = player_move_pos.y; + target_pos_p->z = unit_center_pos[selected_idx].z; + *fg_p = item; + + if (IS_ITEM_COLLIDEABLE_TREE(item) != FALSE) { + return mPlayer_AXE_HIT_TREE; /* Hit item was a tree */ + } else { + return mPlayer_AXE_HIT_REFLECT; /* Hit item was a rock, reflect it */ + } + } else { + int exist_table[8] = { FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE }; + + for (i = 0; i < unit_count; i++) { + if (unit_exist_table[i] != FALSE) { + if (unit_center_dist_table[i] < (mFI_UNIT_BASE_SIZE_F * 1.5f)) { + exist_table[i] = TRUE; + } + } + } + + for (i = 0; i < unit_count; i++) { + if (exist_table[i] != FALSE) { + if (unit_center_angle_table[i] > DEG2SHORT_ANGLE2(75.0f)) { + exist_table[i] = FALSE; + } + } + } + + { + int selected_idx = -1; + int min_angle_y = DEG2SHORT_ANGLE2(360.0f); + + for (i = 0; i < unit_count; i++) { + if (exist_table[i] != FALSE && min_angle_y > unit_center_angle_table[i]) { + min_angle_y = unit_center_angle_table[i]; + selected_idx = i; + } + } + + if (selected_idx >= 0) { + f32 bg_y = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_center_pos[selected_idx]); + f32 diff_y = bg_y - player_move_pos.y; + + if (diff_y >= 31.0f) { + target_pos_p->x = unit_center_pos[selected_idx].x; + target_pos_p->y = player_move_pos.y; + target_pos_p->z = unit_center_pos[selected_idx].z; + *reflect_actor_pp = NULL; + return mPlayer_AXE_HIT_REFLECT; + } + } + } + } + } + } + } + } + + return mPlayer_AXE_HIT_NONE; +} + +static mActor_name_t Player_actor_GetitemNo_forDamageAxe(mActor_name_t itemNo, int reflected) { + if (mEv_CheckTitleDemo() > 0) { + return itemNo; + } + + if (IS_ITEM_AXE(itemNo) != FALSE) { + if (IS_ITEM_GOLDEN_TOOL(itemNo) == FALSE) { + // clang-format off + static mActor_name_t data[] = { + ITM_AXE_USE_1, + ITM_AXE_USE_2, + ITM_AXE_USE_3, + ITM_AXE_USE_4, + ITM_AXE_USE_5, + ITM_AXE_USE_6, + ITM_AXE_USE_7, + EMPTY_NO, + }; + // clang-format on + + int prev_damage; + int axe_damage; + int damage_idx; + + switch (itemNo) { + case ITM_AXE: + damage_idx = 0; + break; + case ITM_AXE_USE_1: + damage_idx = 1; + break; + case ITM_AXE_USE_2: + damage_idx = 2; + break; + case ITM_AXE_USE_3: + damage_idx = 3; + break; + case ITM_AXE_USE_4: + damage_idx = 4; + break; + case ITM_AXE_USE_5: + damage_idx = 5; + break; + case ITM_AXE_USE_6: + damage_idx = 6; + break; + case ITM_AXE_USE_7: + damage_idx = 7; + break; + default: + return itemNo; + } + + if (damage_idx < 0 || damage_idx >= 8) { + damage_idx = 7; + } + + prev_damage = Common_Get(axe_damage); + if (reflected) { + axe_damage = prev_damage + 3; + } else { + axe_damage = prev_damage + 1; + } + + Common_Set(axe_damage, axe_damage); + + switch (axe_damage >= 9) { + default: + return data[damage_idx]; + case FALSE: + return itemNo; + } + } + } + + return itemNo; +} + +static int Player_actor_CheckAndRequest_main_axe_all(GAME* game, int prio) { + xyz_t target_pos; + mActor_name_t item; + ACTOR* reflect_actor_p; + + if (Player_actor_CheckController_forAxe(game)) { + int result = + Player_actor_Check_axe_after(GET_PLAYER_ACTOR_GAME_ACTOR(game), &target_pos, &item, &reflect_actor_p); + + if (result == mPlayer_AXE_HIT_TREE) { + int tree_ut_x; + int tree_ut_z; + + if (mFI_Wpos2UtNum(&tree_ut_x, &tree_ut_z, target_pos)) { + mActor_name_t damage_itemNo = + Player_actor_GetitemNo_forDamageAxe(Player_actor_Get_ItemNoSubmenu(), FALSE); + + if (damage_itemNo == EMPTY_NO) { + return Player_actor_request_main_broken_axe_type_swing(game, &target_pos, item, tree_ut_x, + tree_ut_z, prio); + } else { + return Player_actor_request_main_swing_axe_all(game, &target_pos, item, damage_itemNo, tree_ut_x, + tree_ut_z, prio); + } + } + + return FALSE; + } else if (result == mPlayer_AXE_HIT_REFLECT) { + mActor_name_t damage_itemNo = Player_actor_GetitemNo_forDamageAxe(Player_actor_Get_ItemNoSubmenu(), TRUE); + + if (damage_itemNo == EMPTY_NO) { + return Player_actor_request_main_broken_axe_type_reflect(game, &target_pos, item, reflect_actor_p, + prio); + } else { + return Player_actor_request_main_reflect_axe_all(game, &target_pos, item, damage_itemNo, + reflect_actor_p, prio); + } + } else { + return Player_actor_request_main_air_axe_all(game, prio); + } + } + + return FALSE; +} + +static int Player_actor_CheckAbleSpeed_forItem(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + switch (player->now_main_index) { + case mPlayer_INDEX_WALK: + case mPlayer_INDEX_RUN: + case mPlayer_INDEX_DASH: + if (player->keyframe0.frame_control.speed >= 0.5f) { + return FALSE; + } + break; + } + + return TRUE; +} + +static int Player_actor_CheckAndRequest_main_umbrella_all(GAME* game, int prio) { + if (Player_actor_CheckController_forUmbrella(game) && Player_actor_CheckAbleSpeed_forItem(game)) { + return Player_actor_request_main_rotate_umbrella_all(game, prio); + } + + return FALSE; +} + +static int Player_actor_CheckAndRequest_main_fan_all(GAME* game, int check_trigger, int start_swing, int prio) { + if (Player_actor_CheckController_forFan(game, check_trigger) && Player_actor_CheckAbleSpeed_forItem(game)) { + return Player_actor_request_main_swing_fan_all(game, start_swing, prio); + } + + return FALSE; +} + +static void Player_actor_SetEffectStart_axe_common(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 12.0f)) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_SWING_AXE, actorx->world.position, 2, actorx->shape_info.rotation.y, game, + RSV_NO, actorx->bg_collision_check.result.unit_attribute, 1); + } +} + +static int Player_actor_Get_WadeEndPos(GAME* game, xyz_t* end_pos_p) { + if (end_pos_p != NULL) { + if (Common_Get(player_actor_exists)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE) { + *end_pos_p = player->main_data.wade.end_pos; + return TRUE; + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WADE) { + *end_pos_p = player->main_data.demo_wade.end_pos; + return TRUE; + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) { + *end_pos_p = player->main_data.wade_snowball.end_pos; + return TRUE; + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) { + *end_pos_p = player->main_data.demo_geton_boat_wade.end_pos; + return TRUE; + } + + *end_pos_p = GET_PLAYER_ACTOR_GAME_ACTOR(game)->world.position; + } else { + *end_pos_p = ZeroVec; + } + } + + return FALSE; +} + +static void Player_actor_Init_ScrollDemo_forWade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_request_main_wade_all(gamePT, player->request_wade_dir, mPlayer_REQUEST_PRIORITY_2); + mPlib_strength_request_main_wade_priority(gamePT); +} + +static void Player_actor_Init_ScrollDemo_forDemo_wade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_request_main_demo_wade_all(gamePT, player->request_wade_dir, mPlayer_REQUEST_PRIORITY_19); + mPlib_strength_request_main_demo_wade_priority(gamePT); +} + +static void Player_actor_Init_ScrollDemo_forDemo_geton_boat_wade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_request_main_demo_geton_boat_wade_all( + gamePT, player->request_wade_dir, player->geton_boat_wade_border_start, mPlayer_REQUEST_PRIORITY_19); + mPlib_strength_request_main_demo_geton_boat_wade_priority(gamePT); +} + +static void Player_actor_Init_ScrollDemo_forWade_snowball(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_request_main_wade_snowball_all(gamePT, player->request_wade_dir, &player->snowball_dist, + mPlayer_REQUEST_PRIORITY_2); + mPlib_strength_request_main_wade_snowball_priority(gamePT); +} + +static int Player_actor_Set_ScrollDemo_forWade(ACTOR* actorx, GAME* game, int npc_check_flag) { + xyz_t* player_pos_p = &actorx->world.position; + s16 player_angle_y = actorx->shape_info.rotation.y; + int dir = Player_actor_CheckAbleMoveWadeBlock(game, player_pos_p, player_angle_y, 0.65f, DEG2SHORT_ANGLE2(40.0f), + npc_check_flag); + + if (dir != mFI_MOVEDIR_NONE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mPlib_Get_unable_wade() == FALSE) { + player->request_wade_dir = dir; + mDemo_Request(mDemo_TYPE_SCROLL, actorx, &Player_actor_Init_ScrollDemo_forWade); + return TRUE; + } + + player->cancel_wade_timer = player->player_frame_counter; + player->excute_cancel_wade = TRUE; + } + + return FALSE; +} + +static int Player_actor_Set_ScrollDemo_forDemo_wade(ACTOR* actorx) { + int dir = Player_actor_CheckAbleMoveDemoWadeBlock(actorx); + + if (dir != mFI_MOVEDIR_NONE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->request_wade_dir = dir; + mDemo_Request(mDemo_TYPE_SCROLL2, actorx, &Player_actor_Init_ScrollDemo_forDemo_wade); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Set_ScrollDemo_forDemo_geton_boat_wade(ACTOR* actorx, s16 angle_y, f32 border_start) { + int dir = Player_actor_CheckAbleMoveDemoWadeBoatBlock(actorx, angle_y, border_start); + + if (dir != mFI_MOVEDIR_NONE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->request_wade_dir = dir; + player->geton_boat_wade_border_start = border_start; + mDemo_Request(mDemo_TYPE_SCROLL3, actorx, &Player_actor_Init_ScrollDemo_forDemo_geton_boat_wade); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Set_ScrollDemo_forWade_snowball(ACTOR* actorx, int request_dir, const xyz_t* snowball_dist) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mPlib_Get_unable_wade() == FALSE) { + player->request_wade_dir = request_dir; + player->snowball_dist = *snowball_dist; + mDemo_Request(mDemo_TYPE_SCROLL, actorx, &Player_actor_Init_ScrollDemo_forWade_snowball); + return TRUE; + } else { + player->cancel_wade_timer = player->player_frame_counter; + player->excute_cancel_wade = TRUE; + } + + return FALSE; +} + +static void Player_actor_SetFootMark_for_settle_main(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 value[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + if (value[main_index] != FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_FOOTPRINT, player->left_foot_pos, 2, player->left_foot_angle.y, game, + RSV_NO, actorx->bg_collision_check.result.unit_attribute, 0); + + eEC_CLIP->effect_make_proc(eEC_EFFECT_FOOTPRINT, player->right_foot_pos, 2, player->right_foot_angle.y, + game, RSV_NO, actorx->bg_collision_check.result.unit_attribute, 0); + } + } +} + +static void Player_actor_SetupItem_Base0(ACTOR* actorx, int anim1_idx, int item_anim_idx, f32 item_anim_speed, + f32 item_morph_speed, f32 start_frame, int* anim1_idx_p, + int* part_table_idx_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + + Player_actor_LoadOrDestruct_Item(actorx, item_kind, item_anim_idx, item_anim_speed, item_morph_speed, start_frame, + mPlayer_ITEM_IS_BALLOON(item_kind) == FALSE); + + if (item_kind >= 0) { + *anim1_idx_p = mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(item_kind); + } else { + *anim1_idx_p = anim1_idx; + } + + Player_actor_Set_now_item_main_index(actorx, Player_actor_Get_BasicItemMainIndex_fromItemKind(item_kind)); + player->item_kind = item_kind; + *part_table_idx_p = mPlib_Get_BasicPartTableIndex_fromAnimeIndex(*anim1_idx_p); +} + +static int Player_actor_SetupItem_Base_windmill(ACTOR* actorx, int requested_item_kind, int current_item_kind, + int anim1_idx, int* anim1_idx_p, int* part_table_idx_p) { + if (mPlayer_ITEM_IS_WINDMILL(requested_item_kind) != FALSE) { + if (requested_item_kind != current_item_kind) { + Player_actor_SetupItem_Base0(actorx, anim1_idx, + mPlib_Get_BasicItemAnimeIndex_fromItemKind(requested_item_kind), 0.0f, 0.0f, + 1.0f, anim1_idx_p, part_table_idx_p); + } else { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_FrameControl_c* item_fc = &player->item_keyframe.frame_control; + + Player_actor_SetupItem_Base0(actorx, anim1_idx, + mPlib_Get_BasicItemAnimeIndex_fromItemKind(requested_item_kind), + item_fc->speed, 0.0f, item_fc->current_frame, anim1_idx_p, part_table_idx_p); + } + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_SetupItem_Base1(ACTOR* actorx, int anim1_idx, f32 item_morph_speed, int* anim1_idx_p, + int* part_table_idx_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + + if (Player_actor_SetupItem_Base_windmill(actorx, item_kind, player->item_kind, anim1_idx, anim1_idx_p, + part_table_idx_p) == FALSE) { + int item_anime_idx = mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind); + + Player_actor_SetupItem_Base0(actorx, anim1_idx, item_anime_idx, 0.5f, item_morph_speed, -1.0f, anim1_idx_p, + part_table_idx_p); + } +} + +// Usage in the calls seem wrong (fairly random indexes), for anim_idx and item_main_index +static void Player_actor_SetupItem_Base2(ACTOR* actorx, int item_kind, int anim_idx, int item_main_index, + f32 morph_speed, f32 start_frame, int mode) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int request_item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + + if (item_kind == request_item_kind && Player_actor_Check_ItemAnimationToItemKind(item_kind, anim_idx) != FALSE) { + Player_actor_LoadOrDestruct_Item(actorx, item_kind, anim_idx, 0.5f, morph_speed, start_frame, mode); + Player_actor_Set_now_item_main_index(actorx, item_main_index); + player->item_kind = item_kind; + } +} + +static void Player_actor_SetupItem_Base3(ACTOR* actorx, int anim1_idx, f32 morph_speed, int* anim1_idx_p, + int* part_table_idx_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + + if (Player_actor_SetupItem_Base_windmill(actorx, item_kind, player->item_kind, anim1_idx, anim1_idx_p, + part_table_idx_p) == FALSE) { + if (mPlayer_ITEM_IS_ROD(item_kind) == FALSE) { + int item_anime_idx = mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind); + + Player_actor_SetupItem_Base0(actorx, anim1_idx, item_anime_idx, 0.5f, morph_speed, -1.0f, anim1_idx_p, + part_table_idx_p); + } else { + Player_actor_SetupItem_Base0(actorx, anim1_idx, mPlayer_ITEM_DATA_ROD_MOVE, 0.5f, morph_speed, -1.0f, + anim1_idx_p, part_table_idx_p); + } + } +} + +static void Player_actor_Get_ItemRodTopInitPos(ACTOR* actorx, xyz_t* pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->item_rod_top_pos_set != FALSE) { + *pos_p = player->item_rod_top_pos; + } else { + xyz_t pos = actorx->world.position; + s_xyz* player_rot_p = &actorx->shape_info.rotation; + + pos.x += 25.5456f; + pos.y += 271.9735f; + pos.z -= 21.69f; + + Matrix_push(); + Matrix_translate(pos.x, pos.y, pos.z, 0); + Matrix_RotateZ(player_rot_p->z, 1); + Matrix_RotateX(player_rot_p->x, 1); + Matrix_RotateY(player_rot_p->y, 1); + Matrix_Position(&pos, pos_p); + Matrix_pull(); + } +} + +static void Player_actor_Get_ItemRodVirtualTopPos(ACTOR* actorx, xyz_t* pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->item_rod_top_pos_set != FALSE) { + *pos_p = player->item_rod_virtual_top_pos; + } else { + Player_actor_Get_ItemRodTopInitPos(actorx, pos_p); + } +} + +static int Player_actor_check_cancel_request_change_proc_index(int requested_main_index) { + if (mPlib_check_player_warp_forEvent() != FALSE && mPlayer_MAIN_INDEX_VALID(requested_main_index) != FALSE) { + // clang-format off + static const s8 value[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return value[requested_main_index]; + } + + return FALSE; +} + +static int Player_actor_able_request_main_index_for_reset(int request_main_index) { + if (mPlayer_MAIN_INDEX_VALID(request_main_index) != FALSE) { + // clang-format off + static const s8 value[] = { + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return value[request_main_index]; + } + + return FALSE; +} + +static int Player_actor_check_able_request_main_index_for_reset(int request_main_index) { + if (Common_Get(reset_flag) && Now_Private->reset_count == 2 && + Player_actor_able_request_main_index_for_reset(request_main_index) != FALSE) { + if (Common_Get(reset_type) != 3) { + Common_Set(reset_type, 3); + } + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_check_request_main_able(GAME* game, int request_main_index, int priority) { + if (Player_actor_check_cancel_request_change_proc_index(request_main_index) == FALSE && + Player_actor_check_able_request_main_index_for_reset(request_main_index) == FALSE && + Player_actor_check_request_main_priority(game, priority) > 0) { + return TRUE; + } + + return FALSE; +} + +static int Player_actor_cancel_request_change_proc_index(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->requested_main_index_changed != FALSE && + Player_actor_check_cancel_request_change_proc_index(player->requested_main_index) != FALSE) { + player->requested_main_index_priority = mPlayer_REQUEST_PRIORITY_NONE; + player->requested_main_index_changed = FALSE; + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Check_scoop_after(GAME* game, xyz_t* target_pos_p, mActor_name_t* fg_p, + ACTOR** reflect_actor_pp, int gold_shovel) { + return mPlib_Check_scoop_after(game, target_pos_p, fg_p, reflect_actor_pp, gold_shovel); +} + +static int Player_actor_Search_STONE_TC(ACTOR* actorx, xyz_t* target_pos_p) { + mActor_name_t* fg_p = mFI_GetUnitFG(*target_pos_p); + + if (fg_p != NULL && IS_ITEM_STONE_TC(*fg_p) != FALSE && Common_Get(clip).bg_item_clip != NULL && + Common_Get(clip).bg_item_clip->ten_coin_entry_ex_proc != NULL) { + Common_Get(clip).bg_item_clip->ten_coin_entry_ex_proc(target_pos_p, actorx->shape_info.rotation.y); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_CheckAndRequest_main_scoop_all(GAME* game, int priority) { + if (Player_actor_CheckController_forScoop(game) != FALSE) { + xyz_t target_pos; + mActor_name_t item; + ACTOR* reflect_actor_p; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int gold_shovel = player->item_kind == mPlayer_ITEM_KIND_GOLD_SHOVEL; + int scoop_request_index = + Player_actor_Check_scoop_after(game, &target_pos, &item, &reflect_actor_p, gold_shovel); + + if (scoop_request_index == mPlayer_INDEX_DIG_SCOOP) { + if (Player_actor_request_main_dig_scoop_all(game, &target_pos, item, priority)) { + return TRUE; + } + } else if (scoop_request_index == mPlayer_INDEX_FILL_SCOOP) { + if (Player_actor_request_main_fill_scoop_all(game, &target_pos, priority)) { + return TRUE; + } + } else if (scoop_request_index == mPlayer_INDEX_REFLECT_SCOOP) { + if (Player_actor_request_main_reflect_scoop_all(game, &target_pos, item, reflect_actor_p, priority)) { + return TRUE; + } + } else if (scoop_request_index == mPlayer_INDEX_AIR_SCOOP) { + if (Player_actor_request_main_air_scoop_all(game, priority)) { + return TRUE; + } + } else if (scoop_request_index == mPlayer_INDEX_GET_SCOOP) { + if (Player_actor_request_main_get_scoop_all(game, &target_pos, item, priority)) { + return TRUE; + } + } + } + + return FALSE; +} + +static void Player_actor_cancel_request_change_proc_index_by_A_btn(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->a_btn_triggers_submenu != FALSE) { + int request_main_index = player->requested_main_index; + + if (mPlayer_MAIN_INDEX_VALID(request_main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + if (data[request_main_index] != FALSE) { + player->requested_main_index_priority = mPlayer_REQUEST_PRIORITY_NONE; + player->requested_main_index_changed = FALSE; + } + } + + player->a_btn_triggers_submenu = FALSE; + } +} + +static u32 Player_actor_Get_item_net_catch_label(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + switch (player->now_main_index) { + case mPlayer_INDEX_SWING_NET: + case mPlayer_INDEX_PULL_NET: + case mPlayer_INDEX_NOTICE_NET: + case mPlayer_INDEX_PUTAWAY_NET: + return player->item_net_catch_label; + default: + return 0; + } +} + +static int Player_actor_Change_item_net_catch_label(ACTOR* actorx, u32 label, s8 insect_type) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + aINS_INSECT_ACTOR* insect_actor = (aINS_INSECT_ACTOR*)label; + + if (player->item_net_has_catch == FALSE) { + switch (player->now_main_index) { + case mPlayer_INDEX_SWING_NET: + case mPlayer_INDEX_PULL_NET: + case mPlayer_INDEX_NOTICE_NET: + case mPlayer_INDEX_PUTAWAY_NET: + player->item_net_catch_label = label; + player->item_net_catch_type = insect_type; + if (insect_type == 0 && insect_actor != NULL) { + player->item_net_catch_insect_idx = insect_actor->type; + } else if (insect_actor != NULL) { + if (insect_actor->tools_actor.actor_class.id == mAc_PROFILE_BEE) { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_BEE; + } else { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_ANT; + } + } else { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_INVALID; + } + + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Check_StopNet(ACTOR* actorx, xyz_t* net_pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->changed_main_index != FALSE) { + switch (player->now_main_index) { + case mPlayer_INDEX_PULL_NET: + case mPlayer_INDEX_STOP_NET: + if (net_pos_p != NULL) { + *net_pos_p = player->net_pos; + } + + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Check_HitAxe(ACTOR* actorx, xyz_t* axe_pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_swing_axe_c* swing_axe_p = NULL; + mPlayer_main_reflect_axe_c* reflect_axe_p = NULL; + xyz_t* pos_p; + + switch (player->now_main_index) { + case mPlayer_INDEX_SWING_AXE: + swing_axe_p = &player->main_data.swing_axe; + break; + case mPlayer_INDEX_REFLECT_AXE: + reflect_axe_p = &player->main_data.reflect_axe; + break; + case mPlayer_INDEX_BROKEN_AXE: { + mPlayer_main_broken_axe_c* broken_axe_p = &player->main_data.broken_axe; + + if (broken_axe_p->break_type != mPlayer_AXE_BREAK_FROM_SWING) { + reflect_axe_p = &broken_axe_p->axe.reflect_axe; + } else { + swing_axe_p = &broken_axe_p->axe.swing_axe; + } + break; + } + default: + return FALSE; + } + + if (swing_axe_p != NULL) { + pos_p = &swing_axe_p->axe_common.target_pos; + } else { + pos_p = &reflect_axe_p->axe_common.target_pos; + } + + if (pos_p != NULL && Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f) != FALSE) { + if (axe_pos_p != NULL) { + *axe_pos_p = *pos_p; + } + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Check_VibUnit_OneFrame(ACTOR* actorx, const xyz_t* check_pos_p) { + xyz_t target_pos; + + if (Player_actor_Check_HitAxe(actorx, &target_pos)) { + int check_bx; + int check_bz; + int target_bx; + int target_bz; + + if (mFI_Wpos2BlockNum(&check_bx, &check_bz, *check_pos_p) == FALSE) { + return FALSE; + } + + if (mFI_Wpos2BlockNum(&target_bx, &target_bz, target_pos) == FALSE) { + return FALSE; + } + + if (check_bx == target_bx && check_bz == target_bz) { + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Check_HitScoop(ACTOR* actorx, xyz_t* scoop_pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + xyz_t* target_pos_p = NULL; + f32 check_frame = 0.0f; + + switch (player->now_main_index) { + case mPlayer_INDEX_DIG_SCOOP: + target_pos_p = &player->main_data.dig_scoop.target_pos; + check_frame = 20.0f; + break; + case mPlayer_INDEX_REFLECT_SCOOP: + target_pos_p = &player->main_data.reflect_scoop.target_pos; + check_frame = 20.0f; + break; + case mPlayer_INDEX_GET_SCOOP: + target_pos_p = &player->main_data.get_scoop.target_pos; + check_frame = 20.0f; + break; + case mPlayer_INDEX_FILL_SCOOP: + target_pos_p = &player->main_data.fill_scoop.target_pos; + check_frame = 40.0f; + break; + case mPlayer_INDEX_PUTIN_SCOOP: + target_pos_p = &player->main_data.putin_scoop.target_pos; + check_frame = 47.0f; + break; + } + + if (target_pos_p != NULL && Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, check_frame)) { + if (scoop_pos_p != NULL) { + *scoop_pos_p = *target_pos_p; + } + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Check_DigScoop(ACTOR* actorx, xyz_t* scoop_pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + xyz_t* target_pos_p = NULL; + + switch (player->now_main_index) { + case mPlayer_INDEX_DIG_SCOOP: + target_pos_p = &player->main_data.dig_scoop.target_pos; + break; + case mPlayer_INDEX_REFLECT_SCOOP: + target_pos_p = &player->main_data.reflect_scoop.target_pos; + break; + case mPlayer_INDEX_GET_SCOOP: + target_pos_p = &player->main_data.get_scoop.target_pos; + break; + case mPlayer_INDEX_FILL_SCOOP: + target_pos_p = &player->main_data.fill_scoop.target_pos; + break; + case mPlayer_INDEX_PUTIN_SCOOP: + target_pos_p = &player->main_data.putin_scoop.target_pos; + break; + } + + if (target_pos_p != NULL) { + if (scoop_pos_p != NULL) { + *scoop_pos_p = *target_pos_p; + } + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_camera2_main_simple_fishing(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + ACTOR* uki_actor = player->fishing_rod_actor_p; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (uki_actor != NULL) { + Camera2_change_priority(play, 0); + Camera2_request_main_simple_fishing(play, &actorx->eye.position, &uki_actor->world.position, 5); + } +} + +static void Player_actor_request_camera2_main_simple_return(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + Camera2_change_priority(play, 0); + Camera2_request_main_simple_fishing_return(play, &actorx->eye.position, 5); +} + +static void Player_actor_request_camera2_main_normal(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + Camera2_change_priority(play, 0); + Camera2_request_main_normal(play, 0, 5); +} + +static void Player_actor_request_camera2_change_priority(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + Camera2_change_priority(play, 0); +} + +static int Player_actor_SearchPosition_npc_forStand(GAME* game, const xyz_t* pos_p) { + if (pos_p != NULL) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info = &play->actor_info; + Actor_list* actor_list = &actor_info->list[ACTOR_PART_NPC]; + ACTOR* actor = actor_list->actor; + f32 x = pos_p->x; + f32 z = pos_p->z; + f32 sq_rad = SQ(30.0f); + + for (actor; actor != NULL; actor = actor->next_actor) { + f32 dx = actor->world.position.x - x; + f32 dz = actor->world.position.z - z; + + if (Math3DVecLengthSquare2D(dx, dz) < sq_rad) { + NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor; + + if (npc_actor->condition_info.hide_flg == FALSE) { + return TRUE; + } + } + } + } + + return FALSE; +} + +static void Player_actor_SetEffect_forTakeout_item(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 item_kind = player->item_kind; + + if (mPlayer_ITEM_IS_AXE(item_kind) != FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_KIGAE_LIGHT, actorx->world.position, 2, actorx->shape_info.rotation.y, + game, RSV_NO, 1, 0); + } else if (mPlayer_ITEM_IS_SHOVEL(item_kind) != FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_KIGAE_LIGHT, actorx->world.position, 2, actorx->shape_info.rotation.y, + game, RSV_NO, 2, 0); + } +} + +static int Player_actor_check_request_change_item(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 item_kind = player->item_kind; + s8 requested_item_kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); + int idx; + + if (item_kind != requested_item_kind) { + switch (player->now_main_index) { + case mPlayer_INDEX_WAIT: + case mPlayer_INDEX_WALK: + case mPlayer_INDEX_RUN: + case mPlayer_INDEX_DASH: + return player->now_main_index; + } + } + + return -1; +} + +static int Player_actor_check_item_is_fish(mActor_name_t item) { +#if defined(BUGFIXES) + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_FISH) { + return TRUE; + } +#else + // @BUG - these macros should be swapped + if (ITEM_NAME_GET_CAT(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_TYPE(item) == ITEM1_CAT_FISH) { + return TRUE; + } +#endif + + return FALSE; +} + +static int Player_actor_Check_CommonFootMark_AnimeFrame_fromAnimeIndex(f32 cur_frame, f32 speed, f32 end_frame, + int anim_idx, const s16* const* data_table_p, + const u8* len_table_p) { + if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) { + const s16* data_p = data_table_p[anim_idx]; + + if (data_p != NULL) { + const int len = len_table_p[anim_idx]; + int i; + + for (i = 0; i < len; i++) { + const f32 frame = *data_p; + + /* Negative frames signal end */ + if (frame < 0.0f) { + return FALSE; + } + + if (Player_actor_Check_AnimationFrame_Common(cur_frame, speed, end_frame, frame)) { + return TRUE; + } + + data_p++; + } + } + } + + return FALSE; +} + +static int Player_actor_Check_RightFootMark_AnimeFrame_fromAnimeIndex(f32 cur_frame, f32 speed, f32 end_frame, + int anime_index) { + static const s16 right_data_wait1[] = { -1 }; + static const s16 right_data_walk1[] = { 9 }; + static const s16 right_data_axe1[] = { -1 }; + static const s16 right_data_run1[] = { 9 }; + static const s16 right_data_push1[] = { 23 }; + static const s16 right_data_pull1[] = { 11, 24 }; + static const s16 right_data_hold_wait1[] = { -1 }; + static const s16 right_data_pickup1[] = { -1 }; + static const s16 right_data_Lturn1[] = { -1 }; + static const s16 right_data_Rturn1[] = { -1 }; + static const s16 right_data_get1[] = { -1 }; + static const s16 right_data_get_change1[] = { 26 }; + static const s16 right_data_get_putaway1[] = { -1 }; + static const s16 right_data_open1[] = { -1 }; + static const s16 right_data_putaway1[] = { -1 }; + static const s16 right_data_trans_wait1[] = { -1 }; + static const s16 right_data_transfer1[] = { -1 }; + static const s16 right_data_umb_open1[] = { -1 }; + static const s16 right_data_umbrella1[] = { -1 }; + static const s16 right_data_dash1[] = { 9 }; + static const s16 right_data_run_slip1[] = { -1 }; + static const s16 right_data_get_pull1[] = { -1 }; + static const s16 right_data_get_m1[] = { -1 }; + static const s16 right_data_kamae_move_m1[] = { 9 }; + static const s16 right_data_kamae_wait_m1[] = { -1 }; + static const s16 right_data_kokeru_a1[] = { -1 }; + static const s16 right_data_kokeru_getup_a1[] = { -1 }; + static const s16 right_data_kokeru_getup_n1[] = { -1 }; + static const s16 right_data_kokeru_n1[] = { -1 }; + static const s16 right_data_net1[] = { -1 }; + static const s16 right_data_net_swing1[] = { 10 }; + static const s16 right_data_axe_swing1[] = { 5, 23 }; + static const s16 right_data_kamae_slip_m1[] = { -1 }; + static const s16 right_data_kokeru1[] = { -1 }; + static const s16 right_data_kokeru_getup1[] = { -1 }; + static const s16 right_data_sitdown1[] = { -1 }; + static const s16 right_data_sitdown_wait1[] = { -1 }; + static const s16 right_data_standup1[] = { -1 }; + static const s16 right_data_putaway_m1[] = { -1 }; + static const s16 right_data_bed_wait1[] = { -1 }; + static const s16 right_data_inbed_L1[] = { -1 }; + static const s16 right_data_inbed_R1[] = { -1 }; + static const s16 right_data_intrain1[] = { 8, 28, 50, 71, 88, 111 }; + static const s16 right_data_kagu_open_d1[] = { 12 }; + static const s16 right_data_kagu_open_h1[] = { -1 }; + static const s16 right_data_kagu_open_k1[] = { -1 }; + static const s16 right_data_negaeri_L1[] = { -1 }; + static const s16 right_data_negaeri_R1[] = { -1 }; + static const s16 right_data_outbed_L1[] = { -1 }; + static const s16 right_data_outbed_R1[] = { -1 }; + static const s16 right_data_outtrain1[] = { 21 }; + static const s16 right_data_kagu_close_d1[] = { 16 }; + static const s16 right_data_kagu_close_h1[] = { 6 }; + static const s16 right_data_kagu_close_k1[] = { 6 }; + static const s16 right_data_kagu_wait_d1[] = { -1 }; + static const s16 right_data_kagu_wait_h1[] = { -1 }; + static const s16 right_data_kagu_wait_k1[] = { -1 }; + static const s16 right_data_go_out_o1[] = { -1 }; + static const s16 right_data_go_out_s1[] = { -1 }; + static const s16 right_data_into_s1[] = { -1 }; + static const s16 right_data_axe_hane1[] = { 5, 24, 37 }; + static const s16 right_data_axe_suka1[] = { 5, 40 }; + static const s16 right_data_hold_wait_h1[] = { -1 }; + static const s16 right_data_hold_wait_o1[] = { -1 }; + static const s16 right_data_get_t1[] = { -1 }; + static const s16 right_data_get_t2[] = { 31 }; + static const s16 right_data_putaway_t1[] = { 17 }; + static const s16 right_data_sao1[] = { -1 }; + static const s16 right_data_sao_swing1[] = { -1 }; + static const s16 right_data_turi_hiki1[] = { -1 }; + static const s16 right_data_turi_wait1[] = { -1 }; + static const s16 right_data_not_get_t1[] = { -1 }; + static const s16 right_data_menu_catch1[] = { -1 }; + static const s16 right_data_menu_change1[] = { -1 }; + static const s16 right_data_umb_close1[] = { 13, 27 }; + static const s16 right_data_not_sao_swing1[] = { -1 }; + static const s16 right_data_intrain_wait1[] = { -1 }; + static const s16 right_data_clear_table1[] = { -1 }; + static const s16 right_data_dig1[] = { 13, 41 }; + static const s16 right_data_fill_up1[] = { 14, 41, 51 }; + static const s16 right_data_not_dig1[] = { 13, 29 }; + static const s16 right_data_clear_table_l1[] = { -1 }; + static const s16 right_data_pickup_l1[] = { -1 }; + static const s16 right_data_scoop1[] = { -1 }; + static const s16 right_data_confirm1[] = { 10, 22 }; + static const s16 right_data_dig_suka1[] = { 15, 41 }; + static const s16 right_data_get_d1[] = { 13, 43, 51 }; + static const s16 right_data_putaway_d1[] = { 12 }; + static const s16 right_data_dig_kabu1[] = { 33, 61 }; + static const s16 right_data_fill_up_i1[] = { 21, 48, 58 }; + static const s16 right_data_send_mail1[] = { -1 }; + static const s16 right_data_get_f1[] = { -1 }; + static const s16 right_data_get_pull_f1[] = { -1 }; + static const s16 right_data_get_putaway_f1[] = { -1 }; + static const s16 right_data_trans_wait_f1[] = { -1 }; + static const s16 right_data_transfer_f1[] = { -1 }; + static const s16 right_data_shake1[] = { -1 }; + static const s16 right_data_tired1[] = { -1 }; + static const s16 right_data_wash1[] = { -1 }; + static const s16 right_data_wash2[] = { -1 }; + static const s16 right_data_wash3[] = { -1 }; + static const s16 right_data_wash4[] = { -1 }; + static const s16 right_data_wash5[] = { -1 }; + static const s16 right_data_fukubiki1[] = { -1 }; + static const s16 right_data_omairi1[] = { -1 }; + static const s16 right_data_saisen1[] = { -1 }; + static const s16 right_data_return_mail1[] = { -1 }; + static const s16 right_data_return_mail2[] = { -1 }; + static const s16 right_data_return_mail3[] = { -1 }; + static const s16 right_data_eat1[] = { -1 }; + static const s16 right_data_gaaan1[] = { -1 }; + static const s16 right_data_gaaan2[] = { -1 }; + static const s16 right_data_deru1[] = { -1 }; + static const s16 right_data_guratuku1[] = { -1 }; + static const s16 right_data_mogaku1[] = { -1 }; + static const s16 right_data_otiru1[] = { -1 }; + static const s16 right_data_zassou1[] = { -1 }; + static const s16 right_data_knock1[] = { -1 }; + static const s16 right_data_biku1[] = { -1 }; + static const s16 right_data_hati1[] = { -1 }; + static const s16 right_data_hati2[] = { -1 }; + static const s16 right_data_hati3[] = { -1 }; + static const s16 right_data_push_yuki1[] = { 9 }; + static const s16 right_data_deru2[] = { -1 }; + static const s16 right_data_otiru2[] = { -1 }; + static const s16 right_data_itazura1[] = { -1 }; + static const s16 right_data_umb_rot1[] = { -1 }; + static const s16 right_data_pickup_wait1[] = { -1 }; + static const s16 right_data_yatta1[] = { -1 }; + static const s16 right_data_yatta2[] = { -1 }; + static const s16 right_data_yatta3[] = { -1 }; + static const s16 right_data_kaze1[] = { -1 }; + static const s16 right_data_mosquito1[] = { -1 }; + static const s16 right_data_mosquito2[] = { -1 }; + static const s16 right_data_ride1[] = { 9 }; + static const s16 right_data_ride2[] = { -1 }; + static const s16 right_data_ridewait[] = { -1 }; + static const s16 right_data_getoff1[] = { -1 }; + static const s16 right_data_getoff2[] = { -1 }; + static const s16 right_data_utiwa_wait1[] = { -1 }; + static const s16 right_data_utiwa_d1[] = { -1 }; + static const s16 right_data_axe_break1[] = { 5, 24, 37 }; + static const s16 right_data_axe_breakwait1[] = { -1 }; + static const s16 right_data_light_on1[] = { -1 }; + static const s16 right_data_taisou1[] = { -1 }; + static const s16 right_data_taisou2_1[] = { -1 }; + static const s16 right_data_taisou2_2[] = { -1 }; + static const s16 right_data_taisou3[] = { -1 }; + static const s16 right_data_taisou4_1[] = { -1 }; + static const s16 right_data_taisou4_2[] = { -1 }; + static const s16 right_data_taisou5_1[] = { -1 }; + static const s16 right_data_taisou5_2[] = { -1 }; + static const s16 right_data_taisou6_1[] = { -1 }; + static const s16 right_data_taisou6_2[] = { -1 }; + static const s16 right_data_taisou7_1[] = { -1 }; + static const s16 right_data_taisou7_2[] = { -1 }; + static const s16 right_data_omairi_us1[] = { -1 }; + + static const s16* const data_p_table[] = { + right_data_wait1, + right_data_walk1, + right_data_axe1, + right_data_run1, + right_data_push1, + right_data_pull1, + right_data_hold_wait1, + right_data_pickup1, + right_data_Lturn1, + right_data_Rturn1, + right_data_get1, + right_data_get_change1, + right_data_get_putaway1, + right_data_open1, + right_data_putaway1, + right_data_trans_wait1, + right_data_transfer1, + right_data_umb_open1, + right_data_umbrella1, + right_data_dash1, + right_data_run_slip1, + right_data_get_pull1, + right_data_get_m1, + right_data_kamae_move_m1, + right_data_kamae_wait_m1, + right_data_kokeru_a1, + right_data_kokeru_getup_a1, + right_data_kokeru_getup_n1, + right_data_kokeru_n1, + right_data_net1, + right_data_net_swing1, + right_data_axe_swing1, + right_data_kamae_slip_m1, + right_data_kokeru1, + right_data_kokeru_getup1, + right_data_sitdown1, + right_data_sitdown_wait1, + right_data_standup1, + right_data_putaway_m1, + right_data_bed_wait1, + right_data_inbed_L1, + right_data_inbed_R1, + right_data_intrain1, + right_data_kagu_open_d1, + right_data_kagu_open_h1, + right_data_kagu_open_k1, + right_data_negaeri_L1, + right_data_negaeri_R1, + right_data_outbed_L1, + right_data_outbed_R1, + right_data_outtrain1, + right_data_kagu_close_d1, + right_data_kagu_close_h1, + right_data_kagu_close_k1, + right_data_kagu_wait_d1, + right_data_kagu_wait_h1, + right_data_kagu_wait_k1, + right_data_go_out_o1, + right_data_go_out_s1, + right_data_into_s1, + right_data_axe_hane1, + right_data_axe_suka1, + right_data_hold_wait_h1, + right_data_hold_wait_o1, + right_data_get_t1, + right_data_get_t2, + right_data_putaway_t1, + right_data_sao1, + right_data_sao_swing1, + right_data_turi_hiki1, + right_data_turi_wait1, + right_data_not_get_t1, + right_data_menu_catch1, + right_data_menu_change1, + right_data_umb_close1, + right_data_not_sao_swing1, + right_data_intrain_wait1, + right_data_clear_table1, + right_data_dig1, + right_data_fill_up1, + right_data_not_dig1, + right_data_clear_table_l1, + right_data_pickup_l1, + right_data_scoop1, + right_data_confirm1, + right_data_dig_suka1, + right_data_get_d1, + right_data_putaway_d1, + right_data_dig_kabu1, + right_data_fill_up_i1, + right_data_send_mail1, + right_data_get_f1, + right_data_get_pull_f1, + right_data_get_putaway_f1, + right_data_trans_wait_f1, + right_data_transfer_f1, + right_data_shake1, + right_data_tired1, + right_data_wash1, + right_data_wash2, + right_data_wash3, + right_data_wash4, + right_data_wash5, + right_data_fukubiki1, + right_data_omairi1, + right_data_saisen1, + right_data_return_mail1, + right_data_return_mail2, + right_data_return_mail3, + right_data_eat1, + right_data_gaaan1, + right_data_gaaan2, + right_data_deru1, + right_data_guratuku1, + right_data_mogaku1, + right_data_otiru1, + right_data_zassou1, + right_data_knock1, + right_data_biku1, + right_data_hati1, + right_data_hati2, + right_data_hati3, + right_data_push_yuki1, + right_data_deru2, + right_data_otiru2, + right_data_itazura1, + right_data_umb_rot1, + right_data_pickup_wait1, + right_data_yatta1, + right_data_yatta2, + right_data_yatta3, + right_data_kaze1, + right_data_mosquito1, + right_data_mosquito2, + right_data_ride1, + right_data_ride2, + right_data_ridewait, + right_data_getoff1, + right_data_getoff2, + right_data_utiwa_wait1, + right_data_utiwa_d1, + right_data_axe_break1, + right_data_axe_breakwait1, + right_data_light_on1, + right_data_taisou1, + right_data_taisou2_1, + right_data_taisou2_2, + right_data_taisou3, + right_data_taisou4_1, + right_data_taisou4_2, + right_data_taisou5_1, + right_data_taisou5_2, + right_data_taisou6_1, + right_data_taisou6_2, + right_data_taisou7_1, + right_data_taisou7_2, + right_data_omairi_us1, + }; + + // clang-format off + static const u8 size_table[] = { + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 6, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 3, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 2, + 3, + 2, + 1, + 1, + 1, + 2, + 2, + 3, + 1, + 2, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + }; + // clang-format on + + return Player_actor_Check_CommonFootMark_AnimeFrame_fromAnimeIndex(cur_frame, speed, end_frame, anime_index, + data_p_table, size_table); +} + +static int Player_actor_Check_LeftFootMark_AnimeFrame_fromAnimeIndex(f32 cur_frame, f32 speed, f32 end_frame, + int anime_index) { + static const s16 left_data_wait1[] = { -1 }; + static const s16 left_data_walk1[] = { 1 }; + static const s16 left_data_axe1[] = { -1 }; + static const s16 left_data_run1[] = { 1 }; + static const s16 left_data_push1[] = { 15 }; + static const s16 left_data_pull1[] = { 6, 17 }; + static const s16 left_data_hold_wait1[] = { -1 }; + static const s16 left_data_pickup1[] = { 9, 20 }; + static const s16 left_data_Lturn1[] = { -1 }; + static const s16 left_data_Rturn1[] = { -1 }; + static const s16 left_data_get1[] = { -1 }; + static const s16 left_data_get_change1[] = { 26 }; + static const s16 left_data_get_putaway1[] = { -1 }; + static const s16 left_data_open1[] = { -1 }; + static const s16 left_data_putaway1[] = { -1 }; + static const s16 left_data_trans_wait1[] = { -1 }; + static const s16 left_data_transfer1[] = { -1 }; + static const s16 left_data_umb_open1[] = { -1 }; + static const s16 left_data_umbrella1[] = { -1 }; + static const s16 left_data_dash1[] = { 1 }; + static const s16 left_data_run_slip1[] = { -1 }; + static const s16 left_data_get_pull1[] = { -1 }; + static const s16 left_data_get_m1[] = { 25, 43 }; + static const s16 left_data_kamae_move_m1[] = { 6 }; + static const s16 left_data_kamae_wait_m1[] = { -1 }; + static const s16 left_data_kokeru_a1[] = { -1 }; + static const s16 left_data_kokeru_getup_a1[] = { -1 }; + static const s16 left_data_kokeru_getup_n1[] = { -1 }; + static const s16 left_data_kokeru_n1[] = { -1 }; + static const s16 left_data_net1[] = { -1 }; + static const s16 left_data_net_swing1[] = { 7 }; + static const s16 left_data_axe_swing1[] = { 13, 29 }; + static const s16 left_data_kamae_slip_m1[] = { -1 }; + static const s16 left_data_kokeru1[] = { -1 }; + static const s16 left_data_kokeru_getup1[] = { -1 }; + static const s16 left_data_sitdown1[] = { -1 }; + static const s16 left_data_sitdown_wait1[] = { -1 }; + static const s16 left_data_standup1[] = { -1 }; + static const s16 left_data_putaway_m1[] = { -1 }; + static const s16 left_data_bed_wait1[] = { -1 }; + static const s16 left_data_inbed_L1[] = { -1 }; + static const s16 left_data_inbed_R1[] = { -1 }; + static const s16 left_data_intrain1[] = { 19, 40, 61, 82, 101 }; + static const s16 left_data_kagu_open_d1[] = { 6 }; + static const s16 left_data_kagu_open_h1[] = { 7 }; + static const s16 left_data_kagu_open_k1[] = { 7 }; + static const s16 left_data_negaeri_L1[] = { -1 }; + static const s16 left_data_negaeri_R1[] = { -1 }; + static const s16 left_data_outbed_L1[] = { -1 }; + static const s16 left_data_outbed_R1[] = { -1 }; + static const s16 left_data_outtrain1[] = { 5, 21 }; + static const s16 left_data_kagu_close_d1[] = { -1 }; + static const s16 left_data_kagu_close_h1[] = { -1 }; + static const s16 left_data_kagu_close_k1[] = { -1 }; + static const s16 left_data_kagu_wait_d1[] = { -1 }; + static const s16 left_data_kagu_wait_h1[] = { -1 }; + static const s16 left_data_kagu_wait_k1[] = { -1 }; + static const s16 left_data_go_out_o1[] = { -1 }; + static const s16 left_data_go_out_s1[] = { -1 }; + static const s16 left_data_into_s1[] = { -1 }; + static const s16 left_data_axe_hane1[] = { 12, 33 }; + static const s16 left_data_axe_suka1[] = { 14 }; + static const s16 left_data_hold_wait_h1[] = { -1 }; + static const s16 left_data_hold_wait_o1[] = { -1 }; + static const s16 left_data_get_t1[] = { 23 }; + static const s16 left_data_get_t2[] = { 21 }; + static const s16 left_data_putaway_t1[] = { 10 }; + static const s16 left_data_sao1[] = { -1 }; + static const s16 left_data_sao_swing1[] = { 18 }; + static const s16 left_data_turi_hiki1[] = { -1 }; + static const s16 left_data_turi_wait1[] = { -1 }; + static const s16 left_data_not_get_t1[] = { 27 }; + static const s16 left_data_menu_catch1[] = { -1 }; + static const s16 left_data_menu_change1[] = { -1 }; + static const s16 left_data_umb_close1[] = { 9, 33 }; + static const s16 left_data_not_sao_swing1[] = { 21 }; + static const s16 left_data_intrain_wait1[] = { -1 }; + static const s16 left_data_clear_table1[] = { -1 }; + static const s16 left_data_dig1[] = { 10, 25 }; + static const s16 left_data_fill_up1[] = { 10, 23, 48 }; + static const s16 left_data_not_dig1[] = { 10, 17, 35 }; + static const s16 left_data_clear_table_l1[] = { -1 }; + static const s16 left_data_pickup_l1[] = { -1 }; + static const s16 left_data_scoop1[] = { -1 }; + static const s16 left_data_confirm1[] = { 15 }; + static const s16 left_data_dig_suka1[] = { 10, 38 }; + static const s16 left_data_get_d1[] = { 10, 27, 51 }; + static const s16 left_data_putaway_d1[] = { 16 }; + static const s16 left_data_dig_kabu1[] = { 30, 45 }; + static const s16 left_data_fill_up_i1[] = { 17, 30, 55 }; + static const s16 left_data_send_mail1[] = { -1 }; + static const s16 left_data_get_f1[] = { -1 }; + static const s16 left_data_get_pull_f1[] = { -1 }; + static const s16 left_data_get_putaway_f1[] = { -1 }; + static const s16 left_data_trans_wait_f1[] = { -1 }; + static const s16 left_data_transfer_f1[] = { -1 }; + static const s16 left_data_shake1[] = { -1 }; + static const s16 left_data_tired1[] = { -1 }; + static const s16 left_data_wash1[] = { -1 }; + static const s16 left_data_wash2[] = { -1 }; + static const s16 left_data_wash3[] = { -1 }; + static const s16 left_data_wash4[] = { -1 }; + static const s16 left_data_wash5[] = { -1 }; + static const s16 left_data_fukubiki1[] = { -1 }; + static const s16 left_data_omairi1[] = { -1 }; + static const s16 left_data_saisen1[] = { -1 }; + static const s16 left_data_return_mail1[] = { -1 }; + static const s16 left_data_return_mail2[] = { -1 }; + static const s16 left_data_return_mail3[] = { -1 }; + static const s16 left_data_eat1[] = { -1 }; + static const s16 left_data_gaaan1[] = { -1 }; + static const s16 left_data_gaaan2[] = { -1 }; + static const s16 left_data_deru1[] = { -1 }; + static const s16 left_data_guratuku1[] = { -1 }; + static const s16 left_data_mogaku1[] = { -1 }; + static const s16 left_data_otiru1[] = { -1 }; + static const s16 left_data_zassou1[] = { -1 }; + static const s16 left_data_knock1[] = { -1 }; + static const s16 left_data_biku1[] = { -1 }; + static const s16 left_data_hati1[] = { -1 }; + static const s16 left_data_hati2[] = { -1 }; + static const s16 left_data_hati3[] = { -1 }; + static const s16 left_data_push_yuki1[] = { 1 }; + static const s16 left_data_deru2[] = { -1 }; + static const s16 left_data_otiru2[] = { -1 }; + static const s16 left_data_itazura1[] = { -1 }; + static const s16 left_data_umb_rot1[] = { -1 }; + static const s16 left_data_pickup_wait1[] = { -1 }; + static const s16 left_data_yatta1[] = { -1 }; + static const s16 left_data_yatta2[] = { -1 }; + static const s16 left_data_yatta3[] = { -1 }; + static const s16 left_data_kaze1[] = { -1 }; + static const s16 left_data_mosquito1[] = { -1 }; + static const s16 left_data_mosquito2[] = { -1 }; + static const s16 left_data_ride1[] = { -1 }; + static const s16 left_data_ride2[] = { -1 }; + static const s16 left_data_ridewait[] = { -1 }; + static const s16 left_data_getoff1[] = { -1 }; + static const s16 left_data_getoff2[] = { -1 }; + static const s16 left_data_utiwa_wait1[] = { -1 }; + static const s16 left_data_utiwa_d1[] = { -1 }; + static const s16 left_data_axe_break1[] = { 12, 33 }; + static const s16 left_data_axe_breakwait1[] = { -1 }; + static const s16 left_data_light_on1[] = { -1 }; + static const s16 left_data_taisou1[] = { -1 }; + static const s16 left_data_taisou2_1[] = { -1 }; + static const s16 left_data_taisou2_2[] = { -1 }; + static const s16 left_data_taisou3[] = { -1 }; + static const s16 left_data_taisou4_1[] = { -1 }; + static const s16 left_data_taisou4_2[] = { -1 }; + static const s16 left_data_taisou5_1[] = { -1 }; + static const s16 left_data_taisou5_2[] = { -1 }; + static const s16 left_data_taisou6_1[] = { -1 }; + static const s16 left_data_taisou6_2[] = { -1 }; + static const s16 left_data_taisou7_1[] = { -1 }; + static const s16 left_data_taisou7_2[] = { -1 }; + static const s16 left_data_omairi_us1[] = { -1 }; + + static const s16* const data_p_table[] = { + left_data_wait1, + left_data_walk1, + left_data_axe1, + left_data_run1, + left_data_push1, + left_data_pull1, + left_data_hold_wait1, + left_data_pickup1, + left_data_Lturn1, + left_data_Rturn1, + left_data_get1, + left_data_get_change1, + left_data_get_putaway1, + left_data_open1, + left_data_putaway1, + left_data_trans_wait1, + left_data_transfer1, + left_data_umb_open1, + left_data_umbrella1, + left_data_dash1, + left_data_run_slip1, + left_data_get_pull1, + left_data_get_m1, + left_data_kamae_move_m1, + left_data_kamae_wait_m1, + left_data_kokeru_a1, + left_data_kokeru_getup_a1, + left_data_kokeru_getup_n1, + left_data_kokeru_n1, + left_data_net1, + left_data_net_swing1, + left_data_axe_swing1, + left_data_kamae_slip_m1, + left_data_kokeru1, + left_data_kokeru_getup1, + left_data_sitdown1, + left_data_sitdown_wait1, + left_data_standup1, + left_data_putaway_m1, + left_data_bed_wait1, + left_data_inbed_L1, + left_data_inbed_R1, + left_data_intrain1, + left_data_kagu_open_d1, + left_data_kagu_open_h1, + left_data_kagu_open_k1, + left_data_negaeri_L1, + left_data_negaeri_R1, + left_data_outbed_L1, + left_data_outbed_R1, + left_data_outtrain1, + left_data_kagu_close_d1, + left_data_kagu_close_h1, + left_data_kagu_close_k1, + left_data_kagu_wait_d1, + left_data_kagu_wait_h1, + left_data_kagu_wait_k1, + left_data_go_out_o1, + left_data_go_out_s1, + left_data_into_s1, + left_data_axe_hane1, + left_data_axe_suka1, + left_data_hold_wait_h1, + left_data_hold_wait_o1, + left_data_get_t1, + left_data_get_t2, + left_data_putaway_t1, + left_data_sao1, + left_data_sao_swing1, + left_data_turi_hiki1, + left_data_turi_wait1, + left_data_not_get_t1, + left_data_menu_catch1, + left_data_menu_change1, + left_data_umb_close1, + left_data_not_sao_swing1, + left_data_intrain_wait1, + left_data_clear_table1, + left_data_dig1, + left_data_fill_up1, + left_data_not_dig1, + left_data_clear_table_l1, + left_data_pickup_l1, + left_data_scoop1, + left_data_confirm1, + left_data_dig_suka1, + left_data_get_d1, + left_data_putaway_d1, + left_data_dig_kabu1, + left_data_fill_up_i1, + left_data_send_mail1, + left_data_get_f1, + left_data_get_pull_f1, + left_data_get_putaway_f1, + left_data_trans_wait_f1, + left_data_transfer_f1, + left_data_shake1, + left_data_tired1, + left_data_wash1, + left_data_wash2, + left_data_wash3, + left_data_wash4, + left_data_wash5, + left_data_fukubiki1, + left_data_omairi1, + left_data_saisen1, + left_data_return_mail1, + left_data_return_mail2, + left_data_return_mail3, + left_data_eat1, + left_data_gaaan1, + left_data_gaaan2, + left_data_deru1, + left_data_guratuku1, + left_data_mogaku1, + left_data_otiru1, + left_data_zassou1, + left_data_knock1, + left_data_biku1, + left_data_hati1, + left_data_hati2, + left_data_hati3, + left_data_push_yuki1, + left_data_deru2, + left_data_otiru2, + left_data_itazura1, + left_data_umb_rot1, + left_data_pickup_wait1, + left_data_yatta1, + left_data_yatta2, + left_data_yatta3, + left_data_kaze1, + left_data_mosquito1, + left_data_mosquito2, + left_data_ride1, + left_data_ride2, + left_data_ridewait, + left_data_getoff1, + left_data_getoff2, + left_data_utiwa_wait1, + left_data_utiwa_d1, + left_data_axe_break1, + left_data_axe_breakwait1, + left_data_light_on1, + left_data_taisou1, + left_data_taisou2_1, + left_data_taisou2_2, + left_data_taisou3, + left_data_taisou4_1, + left_data_taisou4_2, + left_data_taisou5_1, + left_data_taisou5_2, + left_data_taisou6_1, + left_data_taisou6_2, + left_data_taisou7_1, + left_data_taisou7_2, + left_data_omairi_us1, + }; + + // clang-format off + static const u8 size_table[] = { + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 5, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 2, + 3, + 3, + 1, + 1, + 1, + 1, + 2, + 3, + 1, + 2, + 3, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 2, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1, + 1. + }; + // clang-format on + + return Player_actor_Check_CommonFootMark_AnimeFrame_fromAnimeIndex(cur_frame, speed, end_frame, anime_index, + data_p_table, size_table); +} + +static int Player_actor_Set_FootMark_MarkOnly(ACTOR* actorx, GAME* game, int disable_footprint) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32 cur_frame = fc0_p->current_frame; + f32 speed = fc0_p->speed; + f32 end_frame = fc0_p->end_frame; + int anime_index = player->animation0_idx; + int res = FALSE; + + if (Player_actor_Check_RightFootMark_AnimeFrame_fromAnimeIndex(cur_frame, speed, end_frame, anime_index)) { + if (disable_footprint == FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_FOOTPRINT, player->right_foot_pos, 2, player->right_foot_angle.y, + game, RSV_NO, actorx->bg_collision_check.result.unit_attribute, 0); + } + + res = TRUE; + } + + if (Player_actor_Check_LeftFootMark_AnimeFrame_fromAnimeIndex(cur_frame, speed, end_frame, anime_index)) { + if (disable_footprint == FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_FOOTPRINT, player->left_foot_pos, 2, player->left_foot_angle.y, game, + RSV_NO, actorx->bg_collision_check.result.unit_attribute, 0); + } + + res = TRUE; + } + + return res; +} + +static int Player_actor_CheckAble_FootMark_Sound(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anime_index = player->animation0_idx; + + if (anime_index >= 0 && anime_index < mPlayer_ANIM_NUM) { + // clang-format off + static const u8 data[] = { + FALSE, + TRUE, + FALSE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return data[anime_index]; + } + + return FALSE; +} + +static void Player_actor_Set_FootMark_Base1(ACTOR* actorx, GAME* game, int disable_effect, int disable_sound) { + int footprint_res = Player_actor_Set_FootMark_MarkOnly(actorx, game, disable_effect); + + if (disable_sound == FALSE && Player_actor_CheckAble_FootMark_Sound(actorx) && footprint_res) { + Player_actor_sound_FootStep2(actorx); + } +} + +static void Player_actor_Set_FootMark_Base2(ACTOR* actorx, GAME* game, int disable_effect, u16 type) { + if (Player_actor_Set_FootMark_MarkOnly(actorx, game, disable_effect) && + Player_actor_CheckAble_FootMark_Sound(actorx)) { + Player_actor_sound_FootStep1(actorx, type); + } +} + +static int Player_actor_Check_RotateOctagon(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_ROTATE_OCTAGON) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->keyframe0.frame_control.current_frame >= 9.0f) { + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_Reset_unable_hand_item_in_demo(ACTOR* actorx, int main_index) { + if (Player_actor_Check_is_demo_mode(main_index) == FALSE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->unable_hand_item_in_demo = FALSE; + } +} + +static void Player_actor_Reset_able_hand_all_item_in_demo(ACTOR* actorx, int main_index) { + if (Player_actor_Check_is_demo_mode(main_index) == FALSE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->able_hand_all_item_in_demo = FALSE; + } +} + +static void Player_actor_Set_EffectBgTree(GAME* game, mActor_name_t item, s16 bg_ef_type, int ut_x, int ut_z) { + xyz_t pos; + + if (mFI_UtNum2CenterWpos(&pos, ut_x, ut_z)) { + s16 variant; + pos.y = mCoBG_UtNum2UtCenterY_Keep(ut_x, ut_z); + + if (IS_ITEM_XMAS_TREE(item) != FALSE) { + if (FGTreeType_check(item) == mNT_TREE_TYPE_CEDAR) { + variant = 12; + } else { + variant = 3; + } + } else if (IS_ITEM_SMALL_TREE(item) != FALSE) { + if (FGTreeType_check(item) == mNT_TREE_TYPE_PALM) { + variant = 4; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_CEDAR) { + variant = 8; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_GOLD) { + variant = 13; + } else { + variant = -1; + } + } else if (IS_ITEM_MED_TREE(item) != FALSE) { + if (FGTreeType_check(item) == mNT_TREE_TYPE_PALM) { + variant = 5; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_CEDAR) { + variant = 9; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_GOLD) { + variant = 14; + } else { + variant = 0; + } + } else if (IS_ITEM_LARGE_TREE(item) != FALSE) { + if (FGTreeType_check(item) == mNT_TREE_TYPE_PALM) { + variant = 6; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_CEDAR) { + variant = 10; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_GOLD) { + variant = 15; + } else { + variant = 1; + } + } else { + if (FGTreeType_check(item) == mNT_TREE_TYPE_PALM) { + variant = 7; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_CEDAR) { + variant = 11; + } else if (FGTreeType_check(item) == mNT_TREE_TYPE_GOLD) { + variant = 16; + } else { + variant = 2; + } + } + + if (Common_Get(clip).make_effect_bg_proc != NULL) { + Common_Get(clip).make_effect_bg_proc(game, bg_ef_type, variant, &pos); + } + } +} + +static mActor_name_t Player_actor_Get_shake_tree_position_and_itemNo(ACTOR* actorx, xyz_t* pos_p) { + xyz_t* player_pos_p = &actorx->world.position; + xyz_t center_pos; + + if (mFI_Wpos2UtCenterWpos(¢er_pos, *player_pos_p)) { + static const f32 add_X[] = { + -mFI_UT_WORLDSIZE_X_F, 0.0f, mFI_UT_WORLDSIZE_X_F, -mFI_UT_WORLDSIZE_X_F, mFI_UT_WORLDSIZE_X_F, + -mFI_UT_WORLDSIZE_X_F, 0.0f, mFI_UT_WORLDSIZE_X_F, + }; + static const f32 add_Z[] = { + -mFI_UT_WORLDSIZE_Z_F, -mFI_UT_WORLDSIZE_Z_F, -mFI_UT_WORLDSIZE_Z_F, 0.0f, 0.0f, + mFI_UT_WORLDSIZE_Z_F, mFI_UT_WORLDSIZE_Z_F, mFI_UT_WORLDSIZE_Z_F, + }; + mActor_name_t unit_item[8]; + xyz_t unit_pos[8]; + int select_index = -1; + int i; + + for (i = 0; i < 8; i++) { + unit_pos[i].x = center_pos.x + add_X[i]; + unit_pos[i].z = center_pos.z + add_Z[i]; + } + + for (i = 0; i < 8; i++) { + mActor_name_t* fg_p = mFI_GetUnitFG(unit_pos[i]); + + if (fg_p != NULL) { + if (IS_ITEM_COLLIDEABLE_TREE(*fg_p) == FALSE) { + unit_item[i] = EMPTY_NO; + } else { + unit_item[i] = *fg_p; + } + } else { + unit_item[i] = EMPTY_NO; + } + } + + for (i = 0; i < 8; i++) { + if (unit_item[i] != EMPTY_NO) { + f32 dy; + + unit_pos[i].y = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[i], 0.0f); + dy = ABS(unit_pos[i].y - player_pos_p->y); + + if (dy > 10.0f) { + unit_item[i] = EMPTY_NO; + } + } + } + + for (i = 0; i < 8; i++) { + if (unit_item[i] != EMPTY_NO) { + f32 dist_sq = Math3DLengthSquare2D(unit_pos[i].x, unit_pos[i].z, player_pos_p->x, player_pos_p->z); + + if (dist_sq >= SQ(mFI_UNIT_BASE_SIZE_F)) { + unit_item[i] = EMPTY_NO; + } + } + } + + { + int min_angle = DEG2SHORT_ANGLE2(45.0f); + int player_angle_y = actorx->shape_info.rotation.y; + + for (i = 0; i < 8; i++) { + if (unit_item[i] != EMPTY_NO) { + f32 dx = unit_pos[i].x - player_pos_p->x; + f32 dz = unit_pos[i].z - player_pos_p->z; + int angle = (s16)(atans_table(dz, dx) - player_angle_y); + int abs_angle = ABS(angle); + + if (abs_angle < min_angle) { + select_index = i; + min_angle = abs_angle; + } + } + } + } + + if (select_index >= 0 && select_index < 8) { + *pos_p = unit_pos[select_index]; + return unit_item[select_index]; + } + } + + *pos_p = *player_pos_p; + return EMPTY_NO; +} + +static mActor_name_t Player_actor_check_fg_little_shake_tree(ACTOR* actorx, int* ut_x_p, int* ut_z_p, xyz_t* pos_p) { + mActor_name_t item = Player_actor_Get_shake_tree_position_and_itemNo(actorx, pos_p); + + if (item != EMPTY_NO && mFI_Wpos2UtNum(ut_x_p, ut_z_p, *pos_p)) { + return item; + } + + *ut_x_p = -1; + *ut_z_p = -1; + return EMPTY_NO; +} + +static int Player_actor_Check_able_shake_tree_table(ACTOR* actorx, int tree_ut_x, int tree_ut_z, int little_flag, + f32 time) { + if (tree_ut_x < 0 || tree_ut_z < 0) { + return FALSE; + } else { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32* shake_timer_p = player->shake_tree_timer; + int* shake_ut_x_p = player->shake_tree_ut_x; + int* shake_ut_z_p = player->shake_tree_ut_z; + int i; + + for (i = 0; i < 3; i++) { + if (tree_ut_x == *shake_ut_x_p && tree_ut_z == *shake_ut_z_p) { + if (little_flag != FALSE) { + return FALSE; + } + + if (*shake_timer_p > time) { + return FALSE; + } + } + + shake_timer_p++; + shake_ut_x_p++; + shake_ut_z_p++; + } + } + + return TRUE; +} + +static int Player_actor_Set_shake_tree_table(ACTOR* actorx, GAME* game, mActor_name_t item, int tree_ut_x, + int tree_ut_z, int little_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_able_shake_tree_table(actorx, tree_ut_x, tree_ut_z, little_flag, 0.0f) == FALSE) { + return FALSE; + } else { + f32* shake_timer_p = player->shake_tree_timer; + int* shake_ut_x_p = player->shake_tree_ut_x; + int* shake_ut_z_p = player->shake_tree_ut_z; + int* shake_tree_little_p = player->shake_tree_little; + int i; + + if (little_flag == FALSE) { + for (i = 0; i < 3; i++) { +#if defined(BUGFIXES) + if ((*shake_ut_x_p == tree_ut_x) && (*shake_ut_z_p == tree_ut_z)) { + Player_actor_Set_EffectBgTree(game, item, EffectBG_EFFECT_SHAKE_LARGE, tree_ut_x, tree_ut_z); + *shake_timer_p = 84.0f; + *shake_tree_little_p = FALSE; + return TRUE; + } + +#else + // @BUG - *shake_ut_z_p is missing an = sign + if ((*shake_ut_x_p == tree_ut_x) && (*shake_ut_z_p = tree_ut_z)) { + Player_actor_Set_EffectBgTree(game, item, EffectBG_EFFECT_SHAKE_LARGE, tree_ut_x, tree_ut_z); + *shake_timer_p = 84.0f; + *shake_tree_little_p = FALSE; + return TRUE; + } +#endif + + shake_timer_p++; + shake_ut_x_p++; + shake_ut_z_p++; + shake_tree_little_p++; + } + + shake_timer_p = player->shake_tree_timer; + shake_ut_x_p = player->shake_tree_ut_x; + shake_ut_z_p = player->shake_tree_ut_z; + shake_tree_little_p = player->shake_tree_little; + } + + { + s16 bg_ef_type; + int i; + + for (i = 0; i < 3; i++) { + if (*shake_ut_x_p < 0 || *shake_ut_z_p < 0) { + bg_ef_type = little_flag ? EffectBG_EFFECT_SHAKE_SMALL : EffectBG_EFFECT_SHAKE_LARGE; + *shake_ut_x_p = tree_ut_x; + *shake_ut_z_p = tree_ut_z; + + if (little_flag) { + *shake_timer_p = 16.0f; + } else { + *shake_timer_p = 84.0f; + } + + *shake_tree_little_p = little_flag; + Player_actor_Set_EffectBgTree(game, item, bg_ef_type, tree_ut_x, tree_ut_z); + return TRUE; + } + + shake_timer_p++; + shake_ut_x_p++; + shake_ut_z_p++; + shake_tree_little_p++; + } + } + } + + return FALSE; +} + +static void Player_actor_check_little_shake_tree(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + int tree_ut_x = -1; + int tree_ut_z = -1; + + switch (main_index) { + default: { + xyz_t pos; + mActor_name_t item; + + item = Player_actor_check_fg_little_shake_tree(actorx, &tree_ut_x, &tree_ut_z, &pos); + if (item != EMPTY_NO && Player_actor_Set_shake_tree_table(actorx, game, item, tree_ut_x, tree_ut_z, TRUE)) { + if (IS_ITEM_SHAKEABLE_TREE(item) != FALSE) { + Player_actor_sound_tree_touch(&pos); + } + } + break; + } + case mPlayer_INDEX_SHAKE_TREE: + tree_ut_x = player->main_data.shake_tree.tree_ut_x; + tree_ut_z = player->main_data.shake_tree.tree_ut_z; + break; + } + + { + f32* shake_timer_p = player->shake_tree_timer; + int* shake_ut_x_p = player->shake_tree_ut_x; + int* shake_ut_z_p = player->shake_tree_ut_z; + int shake_ut_x; + int shake_ut_z; + int i; + + for (i = 0; i < 3; i++) { + if (*shake_timer_p <= 0.0f) { + shake_ut_x = *shake_ut_x_p; + shake_ut_z = *shake_ut_z_p; + + if ((shake_ut_x >= 0 || shake_ut_z >= 0) && (shake_ut_x != tree_ut_x || shake_ut_z != tree_ut_z)) { + *shake_ut_x_p = -1; + *shake_ut_z_p = -1; + } + } + + shake_timer_p++; + shake_ut_x_p++; + shake_ut_z_p++; + } + } +} + +static void Player_actor_check_shake_tree_timer(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32* shake_timer_p = player->shake_tree_timer; + int i; + + for (i = 0; i < 3; i++) { + if (*shake_timer_p > 0.0f) { + *shake_timer_p -= 1.0f; + if (*shake_timer_p < 0.0f) { + *shake_timer_p = 0.0f; + } + } + + shake_timer_p++; + } +} + +static int Player_actor_CheckAndRequest_main_shake_tree_all(GAME* game) { + if (Player_actor_CheckController_forShake_tree(game)) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + xyz_t pos; + mActor_name_t item; + + item = Player_actor_Get_shake_tree_position_and_itemNo(actorx, &pos); + if (item != EMPTY_NO) { + int tree_ut_x; + int tree_ut_z; + + if (mFI_Wpos2UtNum(&tree_ut_x, &tree_ut_z, pos) && + Player_actor_Check_able_shake_tree_table(actorx, tree_ut_x, tree_ut_z, FALSE, 16.0f)) { + return Player_actor_request_main_shake_tree_all(game, &pos, item, tree_ut_x, tree_ut_z, + mPlayer_REQUEST_PRIORITY_5); + } + } + } + + return FALSE; +} + +static int Player_actor_Get_tree_shaken_table_index(ACTOR* actorx, const xyz_t* pos_p) { + int tree_ut_x; + int tree_ut_z; + + if (mFI_Wpos2UtNum(&tree_ut_x, &tree_ut_z, *pos_p)) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32* shake_timer_p = player->shake_tree_timer; + int* shake_ut_x_p = player->shake_tree_ut_x; + int* shake_ut_z_p = player->shake_tree_ut_z; + int i; + + for (i = 0; i < 3; i++) { + if (*shake_timer_p > 0.0f && *shake_ut_x_p == tree_ut_x && *shake_ut_z_p == tree_ut_z) { + return i; + } + + shake_timer_p++; + shake_ut_x_p++; + shake_ut_z_p++; + } + } + + return -1; +} + +static int Player_actor_Check_tree_shaken_little(ACTOR* actorx, const xyz_t* pos_p) { + int idx = Player_actor_Get_tree_shaken_table_index(actorx, pos_p); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (idx >= 0 && idx < 3 && player->shake_tree_little[idx] != FALSE) { + return TRUE; + } else { + xyz_t scoop_pos; + + if (Player_actor_Check_HitScoop(actorx, &scoop_pos)) { + xyz_t ut_center_pos; + + if (mFI_Wpos2UtCenterWpos(&ut_center_pos, *pos_p)) { + if (scoop_pos.x == ut_center_pos.x && scoop_pos.z == ut_center_pos.z) { + return TRUE; + } + } + } + } + + return FALSE; +} + +static int Player_actor_Check_tree_shaken_big(ACTOR* actorx, const xyz_t* pos_p) { + int idx = Player_actor_Get_tree_shaken_table_index(actorx, pos_p); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (idx >= 0 && idx < 3 && player->shake_tree_little[idx] == FALSE) { + return TRUE; + } else { + xyz_t axe_pos; + + if (Player_actor_Check_HitAxe(actorx, &axe_pos)) { + xyz_t ut_center_pos; + + if (mFI_Wpos2UtCenterWpos(&ut_center_pos, *pos_p)) { + if (axe_pos.x == ut_center_pos.x && axe_pos.z == ut_center_pos.z) { + return TRUE; + } + } + } + } + + return FALSE; +} + +static int Player_actor_Check_tree_shaken(ACTOR* actorx, const xyz_t* pos_p) { + if (Player_actor_Check_tree_shaken_little(actorx, pos_p) || Player_actor_Check_tree_shaken_big(actorx, pos_p)) { + return TRUE; + } + + return FALSE; +} + +static void Player_actor_reset_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->pitfall_flag) { + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->pit_fall_stop_proc != NULL) { + xyz_t* pitfall_pos_p = &player->pitfall_pos; + mActor_name_t* fg_p = mFI_GetUnitFG(*pitfall_pos_p); + + if (fg_p != NULL) { + mActor_name_t item = *fg_p; + + if (ITEM_IS_BURIED_PITFALL_HOLE_RSV(item)) { + int ut_x; + int ut_z; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, *pitfall_pos_p)) { + Common_Get(clip).bg_item_clip->pit_fall_stop_proc(item, ut_x, ut_z, EMPTY_NO); + } + } + } + } + + player->pitfall_flag = FALSE; + } +} + +static void Player_actor_check_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_reset_pitfall(actorx); + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->pit_fall_proc != NULL) { + int main_index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + if (data[main_index] != FALSE) { + xyz_t* player_pos_p = &actorx->world.position; + xyz_t pitfall_check_pos; + + if (mFI_Wpos2UtCenterWpos(&pitfall_check_pos, *player_pos_p)) { + f32 dist = Math3DLengthSquare2D(pitfall_check_pos.x, pitfall_check_pos.y, player_pos_p->x, + player_pos_p->y); + + if (dist <= SQ(19.0f)) { + mActor_name_t* fg_p = mFI_GetUnitFG(pitfall_check_pos); + + if (fg_p != NULL) { + mActor_name_t item = *fg_p; + + if (ITEM_IS_BURIED_PITFALL_HOLE(item)) { + pitfall_check_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(pitfall_check_pos, 0.0f); + if (Player_actor_request_main_ready_pitfall_all(game, &pitfall_check_pos, + mPlayer_REQUEST_PRIORITY_26)) { + int ut_x; + int ut_z; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, pitfall_check_pos)) { + Common_Get(clip).bg_item_clip->pit_fall_proc(item, ut_x, ut_z, EMPTY_NO); + player->pitfall_pos = pitfall_check_pos; + player->pitfall_flag = TRUE; + } + } + } + } + } + } + } + } + } +} + +static int Player_actor_Check_end_stung_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->now_main_index == mPlayer_INDEX_STUNG_BEE) { + if (player->main_data.stung_bee.timer <= 162.0f) { + return FALSE; + } + } + + return TRUE; +} + +static int Player_actor_Check_BirthBee_common(ACTOR* actorx, mActor_name_t item, int tree_ut_x, int tree_ut_z, + s16* angle_y_p) { + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->item_tree_fruit_drop_proc != NULL) { + if (tree_ut_x >= 0 && tree_ut_z >= 0) { + if (IS_ITEM_BEE_TREE(item)) { + xyz_t item_drop_pos; + + Common_Get(clip).bg_item_clip->item_tree_fruit_drop_proc(item, tree_ut_x, tree_ut_z, &item_drop_pos); + if (item_drop_pos.x >= 0.0f && item_drop_pos.z >= 0.0f) { + if (angle_y_p != NULL) { + f32 dx = item_drop_pos.x - actorx->world.position.x; + f32 dz = item_drop_pos.z - actorx->world.position.z; + + if (dx != 0.0f || dz != 0.0f) { + *angle_y_p = atans_table(dz, dx); + } else { + *angle_y_p = actorx->shape_info.rotation.y; + } + } + + return TRUE; + } + } + } + } + + return FALSE; +} + +static void Player_actor_set_ripple(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (eEC_CLIP != NULL) { + f32* ripple_timer_p = &player->ripple_timer; + + *ripple_timer_p += 1.0f; + if (*ripple_timer_p >= 8.0f) { + s16 attr = actorx->bg_collision_check.result.unit_attribute; + + if (player->ripple_foot_idx != 0) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_WAIT_ASIMOTO, player->right_foot_pos, 2, + player->right_foot_angle.y, game, RSV_NO, attr, 0); + player->ripple_foot_idx = 0; + } else { + eEC_CLIP->effect_make_proc(eEC_EFFECT_WAIT_ASIMOTO, player->left_foot_pos, 2, player->left_foot_angle.y, + game, RSV_NO, attr, 0); + player->ripple_foot_idx = 1; + } + + *ripple_timer_p = 0.0f; + } + } +} + +static int Player_actor_Check_NecessaryDoorKnock(ACTOR* actorx) { + mActor_name_t item = actorx->npc_id; + + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_STRUCT) { + if (ITEM_IS_PLAYER_HOUSE(item)) { + + if (mEv_CheckFirstIntro()) { + return TRUE; + } else { + int arrange_idx = item - HOUSE0; + + if (mLd_PlayerManKindCheck() == FALSE) { + if (arrange_idx != mHS_get_arrange_idx(Common_Get(player_no))) { + return TRUE; + } + } else { + return TRUE; + } + } + } else if (ITEM_IS_NPC_HOUSE(item) || ITEM_IS_ISLAND_NPC_HOUSE(item)) { + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_CheckAndRequest_KnockDoor(ACTOR* actorx, GAME* game, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (main_index == mPlayer_INDEX_DOOR) { + mPlayer_request_door_c* req_door_data_p = &player->requested_main_index_data.door; + ACTOR* door_actor = (ACTOR*)req_door_data_p->label; + + if (door_actor != NULL && Player_actor_Check_NecessaryDoorKnock(door_actor)) { + if (Player_actor_request_main_knock_door(game, &req_door_data_p->player_pos, req_door_data_p->angle_y, + mPlayer_REQUEST_PRIORITY_38)) { + return mPlayer_INDEX_KNOCK_DOOR; + } + } + } + + return main_index; +} + +static int Player_actor_CheckAndRequest_ItemInOut(ACTOR* actorx, GAME* game, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 able_hand_all_item_in_demo = player->able_hand_all_item_in_demo; + int item_kind = Player_actor_Get_ItemKind_fromScene(); + + if (item_kind >= 0 && able_hand_all_item_in_demo == FALSE) { + int request_main_index = player->requested_main_index; + int now_main_index = player->now_main_index; + int request_able_out_item = Player_actor_CheckPlayer_AbleOutItem(request_main_index); + int main_able_out_item = Player_actor_CheckPlayer_AbleOutItem(now_main_index); + + if (request_able_out_item == mPlayer_ABLE_ITEM_NONE || main_able_out_item == mPlayer_ABLE_ITEM_NONE) { + return main_index; + } + + if (mPlayer_ITEM_IS_NOT_TOOL(item_kind) == FALSE) { + if ((request_able_out_item == mPlayer_ABLE_ITEM_RESTRICTED || + request_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA) && + main_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_ALL) { + if (Player_actor_request_main_putin_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_PUTIN_ITEM; + } + } else if ((request_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_ALL) && + (main_able_out_item == mPlayer_ABLE_ITEM_RESTRICTED || + main_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA)) { + if (Player_actor_request_main_takeout_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_TAKEOUT_ITEM; + } + } + } else { + if (mPlayer_ITEM_IS_NOT_TOOL(item_kind) != FALSE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); // we already have the player???? + int umbrella_flag = FALSE; + + if (request_main_index == mPlayer_INDEX_TALK) { + umbrella_flag = player->requested_main_index_data.talk.umbrella_flag; + } else if (request_main_index == mPlayer_INDEX_DEMO_WAIT) { + umbrella_flag = player->requested_main_index_data.demo_wait.umbrella_flag; + } + + if (umbrella_flag != FALSE && Player_actor_request_main_putin_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_PUTIN_ITEM; + } + } + + { + int in_demo_mode = Player_actor_Check_is_demo_mode(now_main_index); + int will_be_in_demo_mode = Player_actor_Check_is_demo_mode(request_main_index); + s8 unable_hand_item_in_demo = player->unable_hand_item_in_demo; + + if (in_demo_mode && !will_be_in_demo_mode && unable_hand_item_in_demo && + Player_actor_request_main_takeout_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_TAKEOUT_ITEM; + } else if (request_able_out_item == mPlayer_ABLE_ITEM_RESTRICTED && + (main_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_ALL || + main_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA)) { + if (Player_actor_request_main_putin_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_PUTIN_ITEM; + } + } else if ((request_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_ALL || + request_able_out_item == mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA) && + main_able_out_item == mPlayer_ABLE_ITEM_RESTRICTED) { + if (Player_actor_request_main_takeout_item(game, mPlayer_REQUEST_PRIORITY_37)) { + return mPlayer_INDEX_TAKEOUT_ITEM; + } + } + } + } + } + + return main_index; +} + +static void Player_actor_Set_bgm_volume(ACTOR* actorx, int main_index) { + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE && mEv_CheckTitleDemo() <= 0) { + // clang-format off + static const s8 data[] = { + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_FISHING, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + mPlayer_BGM_VOLUME_MODE_NORMAL, + }; + // clang-format on + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 last_bgm_volume_mode = player->bgm_volume_mode; + s8 next_bgm_volume_mode = data[main_index]; + + if (last_bgm_volume_mode != next_bgm_volume_mode) { + if (next_bgm_volume_mode == mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS) { + mBGMPsComp_volume_collect_insects_start(); + } else if (next_bgm_volume_mode == mPlayer_BGM_VOLUME_MODE_FISHING) { + mBGMPsComp_volume_fishing_start(); + } + + if (last_bgm_volume_mode == mPlayer_BGM_VOLUME_MODE_COLLECT_INSECTS) { + mBGMPsComp_volume_collect_insects_end(); + } else if (last_bgm_volume_mode == mPlayer_BGM_VOLUME_MODE_FISHING) { + mBGMPsComp_volume_fishing_end(); + } + + player->bgm_volume_mode = next_bgm_volume_mode; + } + } +} + +static int Player_actor_Check_Label_main_push_snowball(GAME* game, void* label) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->now_main_index == mPlayer_INDEX_PUSH_SNOWBALL && player->main_data.push_snowball.label == (u32)label) { + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Check_Label_main_wade_snowball(GAME* game, void* label) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->now_main_index == mPlayer_INDEX_WADE_SNOWBALL && + player->main_data.wade_snowball.snowball_label == (u32)label) { + return TRUE; + } + + return FALSE; +} + +static int Player_actor_SetParam_for_push_snowball(GAME* game, const xyz_t* pos_p, s16 angle_y, f32 anim_speed) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->now_main_index == mPlayer_INDEX_PUSH_SNOWBALL) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(gamePT); + + actorx->world.position = *pos_p; + actorx->shape_info.rotation.y = angle_y; + actorx->world.angle.y = angle_y; + player->keyframe0.frame_control.speed = anim_speed; + player->keyframe1.frame_control.speed = anim_speed; + return TRUE; + } + + return FALSE; +} + +static int Player_actor_GetSnowballPos_forWadeSnowball(ACTOR* actorx, xyz_t* pos_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->now_main_index == mPlayer_INDEX_WADE_SNOWBALL) { + xyz_t* snowball_dist_p = &player->main_data.wade_snowball.snowball_dist; + + pos_p->x = actorx->world.position.x + snowball_dist_p->x; + pos_p->y = actorx->world.position.y + snowball_dist_p->y; + pos_p->z = actorx->world.position.z + snowball_dist_p->z; + } + + return FALSE; +} + +static int Player_actor_CheckCondition_forWadeSnowball(GAME* game, const xyz_t* pos_p, s16 angle_y) { + return Player_actor_CheckAbleMoveWadeBlock(game, pos_p, angle_y, 0.65f, DEG2SHORT_ANGLE2(5.0f), + mEv_CheckTitleDemo() <= 0); +} + +static void Player_actor_Culc_player_frame_counter(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->player_frame_counter++; +} + +static void Player_actor_Reset_excute_cancel_wade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->excute_cancel_wade) { + if (mPlib_Get_unable_wade()) { + int dFrame = player->player_frame_counter - player->cancel_wade_timer; + + if (dFrame < 0) { + dFrame = 0xFFFF - dFrame; + } + + if (dFrame > 0) { + player->excute_cancel_wade = FALSE; + } + } else { + player->excute_cancel_wade = FALSE; + } + } +} + +static void Player_actor_Culc_wade_end_pos(const xyz_t* src_pos_p, xyz_t* wade_end_pos_p, int direction, + f32 border_adjust) { + int bx; + int bz; + + *wade_end_pos_p = *src_pos_p; + if (mFI_Wpos2BlockNum(&bx, &bz, *src_pos_p)) { + xyz_t wpos; + xyz_t lpos = { 0.0f, 0.0f, 0.0f }; + + mFI_LposInBKtoWpos(&wpos, lpos, bx, bz); + switch (direction) { + case mFI_MOVEDIR_RIGHT: + case mFI_MOVEDIR_LEFT: { + f32 z_up = (wpos.z + border_adjust); + f32 z_down = (wpos.z - border_adjust) + mFI_BK_WORLDSIZE_Z_F; + + if (wade_end_pos_p->z < z_up) { + wade_end_pos_p->z = z_up; + } else if (wade_end_pos_p->z > z_down) { + wade_end_pos_p->z = z_down; + } + break; + } + + case mFI_MOVEDIR_UP: + default: { + f32 x_left = (wpos.x + border_adjust); + f32 x_right = (wpos.x - border_adjust) + mFI_BK_WORLDSIZE_X_F; + + if (wade_end_pos_p->x < x_left) { + wade_end_pos_p->x = x_left; + } else if (wade_end_pos_p->x > x_right) { + wade_end_pos_p->x = x_right; + } + break; + } + } + + switch (direction) { + case mFI_MOVEDIR_RIGHT: + wade_end_pos_p->x = (wpos.x + border_adjust) + mFI_BK_WORLDSIZE_X_F; + break; + case mFI_MOVEDIR_LEFT: + wade_end_pos_p->x = (wpos.x - border_adjust); + break; + case mFI_MOVEDIR_UP: + wade_end_pos_p->z = (wpos.z - border_adjust); + break; + default: + wade_end_pos_p->z = (wpos.z + border_adjust) + mFI_BK_WORLDSIZE_Z_F; + break; + } + } +} + +static void Player_actor_Get_PickupHandPosition(ACTOR* actorx, xyz_t* pos_p, f32 dist) { + s16 angle_y = actorx->shape_info.rotation.y; + f32 x = dist * sin_s(angle_y); + f32 z = dist * cos_s(angle_y); + + *pos_p = actorx->world.position; + pos_p->x += x; + pos_p->z += z; +} + +static void Player_actor_Get_ItemDisplayPos(xyz_t* item_pos_p, xyz_t* center_pos_p) { + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->rand_pos_get_proc != NULL) { + const xyz_t pos = *center_pos_p; + + Common_Get(clip).bg_item_clip->rand_pos_get_proc(item_pos_p, &pos); + } else { + *item_pos_p = *center_pos_p; + } +} + +static int Player_actor_CheckItemPosition_forPickup(const xyz_t* pos_p, f32 max_dist_sq, f32 max_dist_y, + xyz_t* target_pos_p, xyz_t* item_pos_p) { + mFI_Wpos2UtCenterWpos(target_pos_p, *pos_p); + if (Common_Get(field_type) != mFI_FIELDTYPE2_FG) { + target_pos_p->y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*target_pos_p, 0.0f); + } else { + target_pos_p->y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*target_pos_p, -1.0f); + } + + Player_actor_Get_ItemDisplayPos(item_pos_p, target_pos_p); + + target_pos_p->y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*target_pos_p, 0.0f); + if (Math3DLengthSquare2D(item_pos_p->x, item_pos_p->z, pos_p->x, pos_p->z) <= max_dist_sq) { + f32 dy = target_pos_p->y - pos_p->y; + + if (ABS(dy) <= max_dist_y) { + return TRUE; + } + } + + return FALSE; +} + +static mActor_name_t* Player_actor_CheckItem_fromPosition(const xyz_t* pos_p, f32 max_dist_sq, f32 max_dist_y, + xyz_t* target_pos_p, xyz_t* item_pos_p) { + if (mFI_Wpos2DepositGet(*pos_p) == FALSE) { + mActor_name_t* fg_p = mFI_GetUnitFG(*pos_p); + + if (fg_p != NULL) { + if (IS_ITEM_GRASS(*fg_p) != FALSE) { + if (Player_actor_CheckItemPosition_forPickup(pos_p, max_dist_sq, max_dist_y, target_pos_p, + item_pos_p)) { + return fg_p; + } + } else { + int field_type = Common_Get(field_type); + + switch (ITEM_NAME_GET_TYPE(*fg_p)) { + case NAME_TYPE_FTR0: + case NAME_TYPE_FTR1: + if (field_type != mFI_FIELDTYPE2_FG) { + break; + } + /* Fallthrough */ + case NAME_TYPE_ITEM1: + if (Player_actor_CheckItemPosition_forPickup(pos_p, max_dist_sq, max_dist_y, target_pos_p, + item_pos_p)) { + return fg_p; + } + break; + default: + if (ITEM_IS_SIGNBOARD(*fg_p) != FALSE) { + if (Player_actor_CheckItemPosition_forPickup(pos_p, max_dist_sq, max_dist_y, target_pos_p, + item_pos_p)) { + return fg_p; + } + } + break; + } + } + } + } + + return NULL; +} + +static mActor_name_t* Player_actor_Search_putin_item(ACTOR* actorx, xyz_t* target_pos_p, xyz_t* item_pos_p) { + xyz_t pos; + mActor_name_t* fg_p; + + /* Check for signboards first */ + Player_actor_Get_PickupHandPosition(actorx, &pos, 35.0f); + fg_p = Player_actor_CheckItem_fromPosition(&pos, SQ(15.0f), 15.0f, target_pos_p, item_pos_p); + if (fg_p != NULL && ITEM_IS_SIGNBOARD(*fg_p) != FALSE) { + return fg_p; + } + + /* Now look for regular items */ + Player_actor_Get_PickupHandPosition(actorx, &pos, 20.0f); + fg_p = Player_actor_CheckItem_fromPosition(&pos, SQ(15.0f), 15.0f, target_pos_p, item_pos_p); + if (fg_p != NULL) { + return fg_p; + } + + /* Search even closer */ + Player_actor_Get_PickupHandPosition(actorx, &pos, 10.0f); + fg_p = Player_actor_CheckItem_fromPosition(&pos, SQ(15.0f), 15.0f, target_pos_p, item_pos_p); + return fg_p; +} + +static int Player_actor_check_putin_item(ACTOR* actorx, mActor_name_t* item_p, xyz_t* target_pos_p, xyz_t* item_pos_p) { + mActor_name_t* fg_p = Player_actor_Search_putin_item(actorx, target_pos_p, item_pos_p); + + if (fg_p != NULL) { + *item_p = *fg_p; + return TRUE; + } else { + *item_p = EMPTY_NO; + return FALSE; + } +} + +static mActor_name_t Player_actor_Get_itemNo_forWindow(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + + if (main_index == mPlayer_INDEX_WAIT) { + mActor_name_t itemNo = EMPTY_NO; + xyz_t item_pos; + xyz_t target_pos; + + if (Player_actor_check_putin_item(actorx, &itemNo, &target_pos, &item_pos)) { + if (IS_ITEM_GRASS(itemNo) == FALSE) { + return itemNo; + } + } + } + + return EMPTY_NO; +} + +static int Player_actor_able_submenu_request_main_index(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int res; + + if (player->requested_main_index_changed) { + int request_main_index = player->requested_main_index; + + if (mPlayer_MAIN_INDEX_VALID(request_main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + request_main_index = data[request_main_index]; + return request_main_index; + } + } else { + return TRUE; + } + + return FALSE; +} + +static void Player_actor_Request_main_refuse_pickup_all(GAME* game, int refuse_pickup_knife_fork) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->refuse_pickup_knife_fork_flag = refuse_pickup_knife_fork; + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Refuse_pickup_demo_ct); +} + +static int Player_actor_CheckAndRequest_main_pickup_all(GAME* game) { + int field_type = Common_Get(field_type); + + if ((field_type == mFI_FIELDTYPE2_FG || field_type == mFI_FIELDTYPE2_PLAYER_ROOM) && + Player_actor_CheckController_forPickup(game) && + Player_actor_check_request_main_priority(game, mPlayer_REQUEST_PRIORITY_8) > 0 && + Player_actor_check_cancel_request_change_proc_index(mPlayer_INDEX_PICKUP) == FALSE) { + int can_exchange = field_type == mFI_FIELDTYPE2_FG; + + if (mEv_CheckTitleDemo() <= 0) { + /* Check for picking up items in your house */ + if (Common_Get(clip).my_room_clip != NULL) { + mActor_name_t item = Common_Get(clip).my_room_clip->search_pickup_ftr_proc(game); + int item_slot = mPlib_Get_space_putin_item_forTICKET(&item); + + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1) { + xyz_t item_pos; + + Common_Get(clip).my_room_clip->leaf_start_pos_proc(&item_pos); + if (item_slot >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item) || can_exchange) { + if (Player_actor_request_main_pickup_jump(game, item_slot, item, &item_pos, FALSE, FALSE)) { + return TRUE; + } + } else { + Player_actor_Request_main_refuse_pickup_all(game, FALSE); + } + } else if (item != EMPTY_NO) { + xyz_t ftr_pos; + + Common_Get(clip).my_room_clip->leaf_start_pos_proc(&ftr_pos); + if (Common_Get(clip).my_room_clip->pickup_ftr_layer_proc() == mCoBG_LAYER1) { + if (item_slot >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item) || can_exchange) { + if (Player_actor_request_main_pickup_jump( + game, item_slot, mRmTp_FtrItemNo2Item1ItemNo(item, TRUE), &ftr_pos, TRUE, FALSE)) { + return TRUE; + } + } else { + Player_actor_Request_main_refuse_pickup_all(game, FALSE); + } + } else { + if (item_slot >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item) || can_exchange) { + if (Player_actor_request_main_pickup_furniture( + game, item_slot, mRmTp_FtrItemNo2Item1ItemNo(item, TRUE), &ftr_pos)) { + return TRUE; + } + } else { + Player_actor_Request_main_refuse_pickup_all(game, FALSE); + } + } + } + } + + /* Check for knife & fork */ + if (Common_Get(clip).htbl_clip != NULL) { + mActor_name_t htbl_item = Common_Get(clip).htbl_clip->search_pick_up_item_layer2_proc(game); + + if (htbl_item == ITM_KNIFE_AND_FORK) { + int item_slot = mPr_GetPossessionItemIdxWithCond(Now_Private, EMPTY_NO, mPr_ITEM_COND_NORMAL); + + if (item_slot >= 0) { + xyz_t pickup_pos = Common_Get(clip).htbl_clip->pickup_pos; + + if (Player_actor_request_main_pickup_jump(game, item_slot, htbl_item, &pickup_pos, FALSE, + TRUE)) { + return TRUE; + } + } else { + Player_actor_Request_main_refuse_pickup_all(game, TRUE); + } + } + } + } + + /* Check for outdoor items */ + { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + mActor_name_t item; + xyz_t item_pos; + xyz_t target_pos; + + if (Player_actor_check_putin_item(actorx, &item, &target_pos, &item_pos)) { + int slot_idx = mPlib_Get_space_putin_item_forTICKET(&item); + + if (IS_ITEM_GRASS(item) != FALSE) { + if (Player_actor_request_main_remove_grass(game, &target_pos, &item_pos)) { + return TRUE; + } + } else { + mActor_name_t changed_item = ITEM_IS_SIGNBOARD(item) ? ITM_SIGNBOARD : item; + int item_is_signboard = item != changed_item; + + if (mEv_CheckTitleDemo() > 0) { + if (Player_actor_request_main_pickup(game, changed_item, &target_pos, &item_pos, -1, + item_is_signboard)) { + return TRUE; + } + } else { + if (slot_idx >= 0 || can_exchange) { + if (Player_actor_request_main_pickup(game, changed_item, &target_pos, &item_pos, slot_idx, + item_is_signboard)) { + return TRUE; + } + } else { + Player_actor_Request_main_refuse_pickup_all(game, FALSE); + } + } + } + } + } + } + + return FALSE; +} + +static int Player_actor_CheckScene_AbleSubmenu(void) { + int scene_no = Save_Get(scene_no); + + if (!(scene_no >= 0 && scene_no < SCENE_NUM)) { + return FALSE; + } else { + // clang-format off + static const s8 data[] = { + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + TRUE, + TRUE, + }; + // clang-format on + + return data[scene_no]; + } +} + +/* Why does this function even exist? It returns FALSE for every player state. */ +static int Player_actor_check_cancel_event_without_priority(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int main_index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return data[main_index]; + } + + return FALSE; +} + +static int Player_actor_Check_able_force_speak_label(GAME* game, void* label) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + u32 able_force_speak_label = (u32)player->able_force_speak_label; + + if (able_force_speak_label == 0) { + return TRUE; + } + + if (able_force_speak_label == (u32)label) { + return TRUE; + } + + return FALSE; +} + +static void Player_actor_Reset_able_force_speak_label(ACTOR* actorx, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_is_demo_mode(main_index) == FALSE) { + player->able_force_speak_label = 0; + } +} + +static int Player_actor_CheckAndSet_UZAI_forNpc(ACTOR* actorx) { + if (actorx != NULL && actorx->part == ACTOR_PART_NPC) { + NPC_ACTOR* npc_actor = (NPC_ACTOR*)actorx; + Animal_c* animal = npc_actor->npc_info.animal; + + if (animal != NULL && + mNpc_GetAnimalMemoryIdx(&Now_Private->player_ID, animal->memories, ANIMAL_MEMORY_NUM) != -1) { + if (ITEM_NAME_GET_TYPE(actorx->npc_id) == NAME_TYPE_NPC && + (npc_actor->condition_info.demo_flg & aNPC_COND_DEMO_SKIP_UZAI_CHECK) == 0) { + npc_actor->uzai.counter++; + npc_actor->uzai.flag = TRUE; + } + } + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Check_stung_mosquito(GAME* game, void* label) { + int main_index = GET_PLAYER_ACTOR_GAME(game)->now_main_index; + + switch (main_index) { + case mPlayer_INDEX_STUNG_MOSQUITO: { + u32 stung_label = GET_PLAYER_ACTOR_GAME(game)->requested_main_index_data.stung_mosquito.label; + + if (stung_label == (u32)label) { + return TRUE; + } + break; + } + case mPlayer_INDEX_NOTICE_MOSQUITO: { + u32 notice_label = GET_PLAYER_ACTOR_GAME(game)->requested_main_index_data.notice_mosquito.label; + + if (notice_label == (u32)label) { + return TRUE; + } + break; + } + } + + return FALSE; +} + +static void Player_actor_Reset_bee_chase(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Common_Set(player_bee_chase_flag, FALSE); + if (player->bee_chase_bgm_flag) { + player->bee_chase_bgm_flag = FALSE; + mBGMPsComp_delete_ps_happening(BGM_BEE_CHASE, 0); + } +} + +static void Player_actor_Check_player_sunburn_ChangeDay(void) { + if (mEv_CheckTitleDemo() <= 0) { + mActor_name_t field_id = mFI_GetFieldId(); + + if (mFI_GET_TYPE(field_id) == mFI_FIELD_FG) { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + + if (sunburn->rank > 0) { + lbRTC_ymd_c now_ymd; + int days; + + mTM_set_renew_time(&now_ymd, Common_GetPointer(time.rtc_time)); + days = lbRTC_GetIntervalDays2(&sunburn->last_changed_date, &now_ymd); + if (days < 0) { + sunburn->last_changed_date = now_ymd; + } + } + } + } +} + +static void Player_actor_Check_player_sunburn_rankdown_interval(ACTOR* actorx) { + if (mEv_CheckTitleDemo() <= 0) { + mActor_name_t field_id = mFI_GetFieldId(); + + if (mFI_GET_TYPE(field_id) == mFI_FIELD_FG) { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + + if (sunburn->rank > 0) { + int rankdown_days = sunburn->rankdown_days; + + if (rankdown_days > 0) { + lbRTC_ymd_c now_ymd; + int days; + + mTM_set_renew_time(&now_ymd, Common_GetPointer(time.rtc_time)); + days = lbRTC_GetIntervalDays2(&sunburn->last_changed_date, &now_ymd); + if (days > 0) { + if (rankdown_days >= 2) { + lbRTC_time_c add_time = { 0, 0, 0, 1, 0, 0, 0 }; // @BUG - should be 'static' + lbRTC_time_c last_changed_time; + + mTM_ymd_2_time(&last_changed_time, &sunburn->last_changed_date); + lbRTC_Add_Date(&last_changed_time, &add_time); + mTM_set_renew_time(&sunburn->last_changed_date, &last_changed_time); + } + + if (days == 1) { + rankdown_days -= 1; + } else { + rankdown_days -= 2; + } + + if (rankdown_days < 0) { + rankdown_days = 0; + } + + sunburn->rankdown_days = rankdown_days; + } + } + } + } + } +} + +static void Player_actor_Check_player_sunburn_rankdown(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (mEv_CheckTitleDemo() <= 0) { + mActor_name_t field_id = mFI_GetFieldId(); + + if (mFI_GET_TYPE(field_id) == mFI_FIELD_FG) { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + + if (sunburn->rank > 0 && player->player_sunburn_rankdown == FALSE) { + lbRTC_ymd_c now_ymd; + int days; + int diff_days; + + mTM_set_renew_time(&now_ymd, Common_GetPointer(time.rtc_time)); + days = lbRTC_GetIntervalDays2(&sunburn->last_changed_date, &now_ymd); + diff_days = days - sunburn->rankdown_days; + if (diff_days > 0) { + player->player_sunburn_rankdown = TRUE; + } + } + } + } +} + +static void Player_actor_Check_player_sunburn_rankup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->player_sunburn_rankup == FALSE && mEv_CheckTitleDemo() <= 0) { + mActor_name_t field_id = mFI_GetFieldId(); + + if (mFI_GET_TYPE(field_id) == mFI_FIELD_FG) { + if (mEv_CheckFirstIntro() == FALSE && mEnv_NowWeather() == mEnv_WEATHER_CLEAR) { + int item_kind = mPlib_Check_now_handin_item_kind(); + + /* Player can use umbrellas to prevent sunburn */ + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) == FALSE) { + lbRTC_time_c* time_p = Common_GetPointer(time.rtc_time); + int hour = time_p->hour; + + if (!(hour >= 10 && hour < 17)) { + return; + } + + if (mFI_CheckInIsland() == FALSE) { + int month = time_p->month; + int day = time_p->day; + + /* Sunburn will occur in town between July 16th and September 15th */ + if (month != lbRTC_AUGUST) { + if (month == lbRTC_JULY) { + if (day < 16) { + return; + } + } else if (month == lbRTC_SEPTEMBER) { + if (day > 15) { + return; + } + } else { + return; + } + } + + { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + + if (sunburn->rank > 0 && sunburn->rankdown_days >= 2) { + return; + } + } + } + + if (player->player_sunburn_rankdown == FALSE) { + int last_sunburn_time = Common_Get(sunburn_time); + int max_sunburn_time = mFI_CheckInIsland() == FALSE ? (s16)mPlayer_SUNBURN_TIME_VILLAGE + : mPlayer_SUNBURN_TIME_ISLAND; + if (last_sunburn_time >= max_sunburn_time) { + player->player_sunburn_rankup = TRUE; + } + + Common_Set(sunburn_time, last_sunburn_time + 1); + } + } + } + } + } +} + +static int Player_actor_Set_player_sunburn_rankdown(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->player_sunburn_rankdown != FALSE) { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + lbRTC_ymd_c now_date; + int days; + int diff_days; + + mTM_set_renew_time(&now_date, Common_GetPointer(time.rtc_time)); + days = lbRTC_GetIntervalDays2(&sunburn->last_changed_date, &now_date); + diff_days = days - sunburn->rankdown_days; + + if (diff_days > 0) { + int i; + + for (i = 0; i < diff_days; i++) { + sunburn->rank--; + + if (sunburn->rank < 0) { + sunburn->rank = 0; + break; + } + } + + sunburn->last_changed_date = now_date; + return TRUE; + } + + player->player_sunburn_rankdown = FALSE; /* @BUG? - shouldn't this be set to false in the above case too? */ + } + + return FALSE; +} + +static int Player_actor_Set_player_sunburn_rankup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->player_sunburn_rankup != FALSE) { + mPr_sunburn_c* sunburn = &Now_Private->sunburn; + lbRTC_ymd_c now_date; + + mTM_set_renew_time(&now_date, Common_GetPointer(time.rtc_time)); + sunburn->rank++; + if (sunburn->rank >= (mPlayer_SUNBURN_MAX_RANK + 1)) { + sunburn->rank = mPlayer_SUNBURN_MAX_RANK; + } + + sunburn->last_changed_date = now_date; + sunburn->rankdown_days = 2; + Common_Set(sunburn_time, 0); + player->player_sunburn_rankup = FALSE; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_Check_player_sunburn_for_dt(ACTOR* actorx) { + Player_actor_Check_player_sunburn_ChangeDay(); + Player_actor_Check_player_sunburn_rankdown_interval(actorx); + Player_actor_Check_player_sunburn_rankdown(actorx); + Player_actor_Set_player_sunburn_rankup(actorx); + Player_actor_Set_player_sunburn_rankdown(actorx); +} + +static void Player_actor_Check_player_sunburn_for_main(ACTOR* actorx) { + Player_actor_Check_player_sunburn_ChangeDay(); + Player_actor_Check_player_sunburn_rankdown_interval(actorx); + Player_actor_Check_player_sunburn_rankdown(actorx); + Player_actor_Check_player_sunburn_rankup(actorx); +} + +static void Player_actor_Check_player_sunburn_for_ct(ACTOR* actorx) { + Player_actor_Check_player_sunburn_ChangeDay(); + Player_actor_Check_player_sunburn_rankdown_interval(actorx); + Player_actor_Check_player_sunburn_rankdown(actorx); + Player_actor_Set_player_sunburn_rankdown(actorx); +} + +static void Player_actor_Check_player_change_color_for_main(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->change_color_request) { + player->change_color_request = FALSE; + if (player->change_color_flag) { + player->change_color_timer += 1.0f; + if (player->change_color_timer >= 79.68f) { + player->change_color_timer = 0.0f; + } + } else { + player->change_color_flag = TRUE; + player->change_color_timer = 0.0f; + } + } else { + if (player->change_color_flag) { + player->change_color_flag = FALSE; + } + } +} + +static int Player_actor_Check_InBlockRadioExercise(ACTOR* actorx) { + if (mEv_check_status(mEv_EVENT_MORNING_AEROBICS, mEv_STATUS_RUN) || + mEv_check_status(mEv_EVENT_SPORTS_FAIR_AEROBICS, mEv_STATUS_RUN)) { + int bx; + int bz; + + if (mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_SHRINE)) { + int player_bx; + int player_bz; + + if (mFI_Wpos2BlockNum(&player_bx, &player_bz, actorx->world.position)) { + if (player_bx == bx && player_bz == bz) { + return TRUE; + } + } + } + } else { + /* Check if the aerobics radio is playing in the house */ + int field_type = Common_Get(field_type); + + if (field_type != mFI_FIELDTYPE2_FG && aMR_RadioBgmNow()) { + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Check_AbleRadioExercise(ACTOR* actorx) { + /* Player must be in the same block as aerobics radio, or in a house room with one playing */ + if (Player_actor_Check_InBlockRadioExercise(actorx) == FALSE) { + return FALSE; + } + + /* Player must not be holding any item */ + if (mPlib_Check_now_handin_item() != FALSE) { + return FALSE; + } + + return TRUE; +} + +static int Player_actor_Get_RadioExerciseCommandRingBufferIndex(int base_idx, int ofs) { + base_idx += ofs; + if (base_idx >= mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE) { + return base_idx - mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE; + } else { + return base_idx; + } +} + +static s8 Player_actor_Get_RadioExerciseCommand(int base_idx, s8* command_ring_buffer_p, int ofs) { + int idx = Player_actor_Get_RadioExerciseCommandRingBufferIndex(base_idx, ofs); + + /* @BUG - this should probably be || idx >= mPlayer_RADIO_EXCERCISE_COMMAND_RING_BUFFER_SIZE */ + if (idx < 0 && idx < mPlayer_RADIO_EXERCISE_COMMAND_RING_BUFFER_SIZE) { + idx = 0; + } + + return command_ring_buffer_p[idx]; +} + +static void Player_actor_Set_RadioExerciseCommandRingBuffer(ACTOR* actorx, s8 command) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int* buffer_idx_p = &player->radio_exercise_command_ring_buffer_index; + s8* ring_buffer_p = player->radio_exercise_command_ring_buffer; + s8* ring_buf_timer_p = &player->radio_exercise_ring_buffer_cmd_timer; + int now_buffer_idx = *buffer_idx_p; + + if (command >= 0) { + int cmd = Player_actor_Get_RadioExerciseCommand(0, ring_buffer_p, now_buffer_idx); + + if (cmd == command && !(*ring_buf_timer_p >= 50.0f)) { + (*ring_buf_timer_p)++; + return; + } + } + { + int new_buffer_idx = Player_actor_Get_RadioExerciseCommandRingBufferIndex(7, now_buffer_idx); + + *buffer_idx_p = new_buffer_idx; + ring_buffer_p[Player_actor_Get_RadioExerciseCommandRingBufferIndex(0, new_buffer_idx)] = command; + *ring_buf_timer_p = 0; + } +} + +static void Player_actor_Set_RadioExerciseCommand(ACTOR* actorx, GAME* game, int skip_input_flag) { + int command = -1; + + if (skip_input_flag == FALSE && Player_actor_Check_AbleRadioExercise(actorx)) { + command = Player_actor_CheckController_forRadio_exercise(game); + } + + Player_actor_Set_RadioExerciseCommandRingBuffer(actorx, command); +} + +static s8 Player_actor_radio_exercise_command_key_data_type1[] = { 6, 0, 3 }; +static s8 Player_actor_radio_exercise_command_key_data_type2_1[] = { 1, 4, 3, 5, 2 }; +static s8 Player_actor_radio_exercise_command_key_data_type2_2[] = { 2, 5, 3, 4, 1 }; +static s8 Player_actor_radio_exercise_command_key_data_type3[] = { 3, 0, 3 }; +static s8 Player_actor_radio_exercise_command_key_data_type4_1_1[] = { 5, 0, 5 }; +static s8 Player_actor_radio_exercise_command_key_data_type4_1_2[] = { 7, 0, 5 }; +static s8 Player_actor_radio_exercise_command_key_data_type4_2_1[] = { 4, 0, 4 }; +static s8 Player_actor_radio_exercise_command_key_data_type4_2_2[] = { 8, 0, 4 }; +static s8 Player_actor_radio_exercise_command_key_data_type5_1_1[] = { 2, 0, 2 }; +static s8 Player_actor_radio_exercise_command_key_data_type5_1_2[] = { 1, 0, 2 }; +static s8 Player_actor_radio_exercise_command_key_data_type5_2_1[] = { 1, 0, 1 }; +static s8 Player_actor_radio_exercise_command_key_data_type5_2_2[] = { 2, 0, 1 }; +static s8 Player_actor_radio_exercise_command_key_data_type6_1_1[] = { 8, 0, 8 }; +static s8 Player_actor_radio_exercise_command_key_data_type6_1_2[] = { 4, 0, 8 }; +static s8 Player_actor_radio_exercise_command_key_data_type6_2_1[] = { 7, 0, 7 }; +static s8 Player_actor_radio_exercise_command_key_data_type6_2_2[] = { 5, 0, 7 }; +static s8 Player_actor_radio_exercise_command_key_data_type7_1[] = { 6, 8, 2, 5, 3, 4, 1, 7 }; +static s8 Player_actor_radio_exercise_command_key_data_type7_2[] = { 6, 7, 1, 4, 3, 5, 2, 8 }; + +static int Player_actor_Check_radio_exercise_command(ACTOR* actorx, int continue_idx, f32* timer_p) { + // clang-format off + static s8* command_key_p_data[] = { + Player_actor_radio_exercise_command_key_data_type1, + Player_actor_radio_exercise_command_key_data_type2_1, + Player_actor_radio_exercise_command_key_data_type2_2, + Player_actor_radio_exercise_command_key_data_type3, + Player_actor_radio_exercise_command_key_data_type4_1_1, + Player_actor_radio_exercise_command_key_data_type4_1_2, + Player_actor_radio_exercise_command_key_data_type4_2_1, + Player_actor_radio_exercise_command_key_data_type4_2_2, + Player_actor_radio_exercise_command_key_data_type5_1_1, + Player_actor_radio_exercise_command_key_data_type5_1_2, + Player_actor_radio_exercise_command_key_data_type5_2_1, + Player_actor_radio_exercise_command_key_data_type5_2_2, + Player_actor_radio_exercise_command_key_data_type6_1_1, + Player_actor_radio_exercise_command_key_data_type6_1_2, + Player_actor_radio_exercise_command_key_data_type6_2_1, + Player_actor_radio_exercise_command_key_data_type6_2_2, + Player_actor_radio_exercise_command_key_data_type7_1, + Player_actor_radio_exercise_command_key_data_type7_2, + }; + // clang-format on + + // clang-format off + static int total_command_key_element_data[] = { + 3, + 5, + 5, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 3, + 8, + 8, + }; + // clang-format on + + // clang-format off + static s8 continue_command_data[] = { + -1, + 17, + 16, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + }; + // clang-format on + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int continue_command; + s8* ring_buffer_p = player->radio_exercise_command_ring_buffer; + int ring_buffer_idx = player->radio_exercise_command_ring_buffer_index; + s8** key_data_table = command_key_p_data; + int* len_table = total_command_key_element_data; + int i; + + if (continue_idx >= 0) { + continue_command = continue_command_data[continue_idx]; + } else { + continue_command = -1; + } + + *timer_p = 0.0f; + for (i = 0; i < ARRAY_COUNT(command_key_p_data); i++) { + s8* data_p = &(*key_data_table)[(*len_table) - 1]; + + if (continue_command < 0 || i == continue_command) { + int j = 0; + int n = (*len_table) - 1; + + while (n >= 0) { + s8 cmd = Player_actor_Get_RadioExerciseCommand(j, ring_buffer_p, ring_buffer_idx); + + if (cmd != *data_p || cmd < 0) { + break; + } + + data_p--; + j++; + n--; + } + + if (n < 0) { + if (continue_command_data[i] >= 0) { + *timer_p = 6.0f; + } + + return i; + } + } + + len_table++; + key_data_table++; + } + + return -1; +} + +static int Player_actor_CheckAndRequest_main_radio_exercise_all(GAME* game, int skip_request_flag) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AbleRadioExercise(actorx) == FALSE) { + return FALSE; + } else { + int cmd_idx; + f32 timer; + + player->radio_exercise_cmd_timer -= 1.0f; + if (player->radio_exercise_cmd_timer < 0.0f) { + player->radio_exercise_cmd_timer = 0.0f; + } + + cmd_idx = Player_actor_Check_radio_exercise_command(actorx, player->radio_exercise_continue_cmd_idx, &timer); + if (cmd_idx >= 0) { + if (player->radio_exercise_continue_cmd_idx >= 0) { + if (player->radio_exercise_cmd_timer > 0.0f) { + player->radio_exercise_continue_cmd_idx = cmd_idx; + player->radio_exercise_cmd_timer = timer; + } + } else { + player->radio_exercise_continue_cmd_idx = cmd_idx; + player->radio_exercise_cmd_timer = timer; + } + } + + if (skip_request_flag == FALSE && player->radio_exercise_continue_cmd_idx >= 0) { + if (player->radio_exercise_cmd_timer <= 0.0f) { + if (Player_actor_request_main_radio_exercise_all(game, player->radio_exercise_continue_cmd_idx, 0.0f, + mPlayer_REQUEST_PRIORITY_4)) { + return TRUE; + } + } + } + } + + return FALSE; +} + +static void Player_actor_Set_old_sound_frame_counter(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->old_sound_frame_counter = sAdo_GetSoundFrameCounter(); +} + +static int Player_actor_check_able_change_camera_normal_index(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AbleRadioExercise(actorx)) { + return FALSE; + } + + if (mEv_CheckTitleDemo() <= 0 && mPlib_Check_scene_able_change_camera_pos()) { + int main_index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return data[main_index]; + } + } + + return FALSE; +} + +static void Player_actor_Set_Indoor_Camera_Index(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Camera2* camera = &play->camera; + + if (Player_actor_check_able_change_camera_normal_index(actorx)) { + int dist_add_idx = camera->indoor_distance_addition_idx; + int dir_add_idx = camera->indoor_direction_addition_idx; + + if (chkTrigger(BUTTON_CUP)) { + if ((dist_add_idx - 1) >= 0) { + camera->indoor_distance_addition_idx = dist_add_idx - 1; + Player_actor_sound_camera_move1(); + } + } else if (chkTrigger(BUTTON_CDOWN)) { + if ((dist_add_idx + 1) < 3) { + camera->indoor_distance_addition_idx = dist_add_idx + 1; + Player_actor_sound_camera_move2(); + } + } + + if (chkTrigger(BUTTON_CLEFT)) { + if ((dir_add_idx - 1) >= 0) { + camera->indoor_direction_addition_idx = dir_add_idx - 1; + Player_actor_sound_camera_move1(); + } + } else if (chkTrigger(BUTTON_CRIGHT)) { + if ((dir_add_idx + 1) < 3) { + camera->indoor_direction_addition_idx = dir_add_idx + 1; + Player_actor_sound_camera_move1(); + } + } + } +} diff --git a/src/m_player_controller.c_inc b/src/m_player_controller.c_inc new file mode 100644 index 00000000..3b93d478 --- /dev/null +++ b/src/m_player_controller.c_inc @@ -0,0 +1,216 @@ +static int Player_actor_CheckController_forPickup(GAME* game) { + if (mEv_CheckTitleDemo() > 0) { + mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); + + return !mPlayer_ITEM_KIND_CHECK(kind, 0, mPlayer_ITEM_KIND_NUM) && (data->trigger_btn_a != 0) && + (data->btn_b != 0); + } + + return chkTrigger(BUTTON_B); +} + +static int Player_actor_CheckController_forAxe(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); + + if (mPlayer_ITEM_IS_AXE(kind) != FALSE) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->trigger_btn_a; + } + return chkTrigger(BUTTON_A); + } + + return FALSE; +} + +static int Player_actor_CheckController_forNet(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); + + if (mPlayer_ITEM_IS_NET(kind) != FALSE) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->btn_a; + } + return chkButton(BUTTON_A); + } + + return FALSE; +} + +static int Player_actor_CheckController_forRod(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); + + if (mPlayer_ITEM_IS_ROD(kind) != FALSE) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->trigger_btn_a; + } + return chkTrigger(BUTTON_A); + } + + return FALSE; +} + +static int Player_actor_CheckController_forScoop(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); + + if (mPlayer_ITEM_IS_SHOVEL(kind) != FALSE) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->trigger_btn_a; + } + return chkTrigger(BUTTON_A); + } + + return FALSE; +} + +static int Player_actor_CheckController_forUmbrella(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); + + if (mPlayer_ITEM_IS_UMBRELLA(kind) != FALSE) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->trigger_btn_a; + } + return chkTrigger(BUTTON_A); + } + + return FALSE; +} + +static int Player_actor_CheckController_forFan(GAME* game, int type) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); + + if (mPlayer_ITEM_IS_FAN(kind) != FALSE) { + if (mEv_CheckTitleDemo() > 0) { + mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); + if (type != 0) { + return data->trigger_btn_a; + } else { + return data->btn_a; + } + } + if (type != 0) { + return chkTrigger(BUTTON_A); + } else { + return chkButton(BUTTON_A); + } + } + + return FALSE; +} + +static int Player_actor_CheckController_forShake_tree(GAME* game) { + ACTOR* actorx = GET_PLAYER_ACTOR_GAME_ACTOR(game); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s8 kind = Player_actor_Get_ItemKind(actorx, player->now_main_index); + + if (!mPlayer_ITEM_KIND_CHECK(kind, 0, mPlayer_ITEM_KIND_NUM) || mPlayer_ITEM_IS_NOT_TOOL(kind) != FALSE) { + if (mEv_CheckTitleDemo() > 0) { + mPlayer_Controller_Data_c* data = mPlib_Get_controller_data_for_title_demo_p(); + return (data->trigger_btn_a != 0) && (data->btn_b == 0); + } else { + return chkTrigger(BUTTON_A); + } + } + return FALSE; +} + +static f32 Player_actor_CheckController_forStruggle_pitfall(void) { + return (chkTrigger(BUTTON_A) != 0) ? 1.0f : 0.0f; +} + +static int Player_actor_CheckController_forDush(void) { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->btn_b + : mPlib_CheckButtonOnly_forDush(); +} + +static f32 Player_actor_GetController_move_percentX(void) { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_pX + : gamePT->mcon.move_pX; +} + +static f32 Player_actor_GetController_move_percentY(void) { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_pY + : gamePT->mcon.move_pY; +} + +static f32 Player_actor_GetController_move_percentR(void) { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_pR + : gamePT->mcon.move_pR; +} + +static s16 Player_actor_GetController_move_angle(void) { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.move_angle + : gamePT->mcon.move_angle; +} + +static s16 Player_actor_GetController_old_move_angle(void) { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.last_move_angle + : gamePT->mcon.last_move_angle; +} + +static f32 Player_actor_GetController_recognize_percentR(void) { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.adjusted_pR + : gamePT->mcon.adjusted_pR; +} + +static f32 Player_actor_GetController_old_recognize_percentR(void) { + return (mEv_CheckTitleDemo() > 0) ? mPlib_Get_controller_data_for_title_demo_p()->mcon.last_adjusted_pR + : gamePT->mcon.last_adjusted_pR; +} + +static int Player_actor_CheckController_forRadio_exercise(GAME* game) { + if (mEv_CheckTitleDemo() > 0) { + return -1; + } + + if ((mPlib_Check_now_handin_item() != 0) || (Player_actor_GetController_old_recognize_percentR() != 0.0f) || + (Player_actor_CheckController_forPickup(game) != 0) || + (Player_actor_CheckController_forShake_tree(game) != 0)) { + return -1; + } + + if (JW_JUTGamepad_getSubStickValue() > 0.6f) { + s16 angle = JW_JUTGamepad_getSubStickAngle(); + + if (angle >= 0) { + if (angle < DEG2SHORT_ANGLE2(22.5f)) { + return 6; + } else if (angle < DEG2SHORT_ANGLE2(67.5f)) { + return 7; + } else if (angle < DEG2SHORT_ANGLE2(112.5f)) { + return 1; + } else if (angle < DEG2SHORT_ANGLE2(157.5f)) { + return 4; + } else { + return 3; + } + } else { + if (angle > -DEG2SHORT_ANGLE2(22.5f)) { + return 6; + } else if (angle > -DEG2SHORT_ANGLE2(67.5f)) { + return 8; + } else if (angle > -DEG2SHORT_ANGLE2(112.5f)) { + return 2; + } else if (angle > -DEG2SHORT_ANGLE2(157.5f)) { + return 5; + } else { + return 3; + } + } + } else { + return 0; + } +} diff --git a/src/m_player_draw.c_inc b/src/m_player_draw.c_inc new file mode 100644 index 00000000..3b1167c7 --- /dev/null +++ b/src/m_player_draw.c_inc @@ -0,0 +1,377 @@ +static void Player_actor_draw_Before_head(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + s_xyz* head_angle = &player->head_angle; + + if (head_angle->x != 0 || head_angle->y != 0 || head_angle->z != 0) { + Matrix_push(); + Matrix_mult(&MtxF_clear, 0); + Matrix_softcv3_mult(&ZeroVec, rot); + Matrix_RotateX(head_angle->x, 1); + Matrix_RotateY(head_angle->y, 1); + Matrix_to_rotate2_new(get_Matrix_now(), rot, 0); + Matrix_pull(); + } +} + +typedef void (*mPlayer_DRAW_BEFORE_PROC)(ACTOR*, GAME*, cKF_SkeletonInfo_R_c*, Gfx**, u8*, s_xyz*, xyz_t*); + +static int Player_actor_draw_Before(GAME* game, cKF_SkeletonInfo_R_c* kf, int joint_no, Gfx** gfx_pp, u8* work_flag, + void* arg, s_xyz* rot, xyz_t* pos) { + // clang-format off + static const mPlayer_DRAW_BEFORE_PROC proc[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_draw_Before_head, + NULL, + }; + // clang-format on + + ACTOR* actorx = (ACTOR*)arg; + + if (joint_no >= 0 && joint_no < mPlayer_JOINT_NUM && proc[joint_no] != NULL) { + (*proc[joint_no])(actorx, game, kf, gfx_pp, work_flag, rot, pos); + } + + return TRUE; +} + +static void Player_actor_draw_After_Culc_FootMarkPos(xyz_t* pos, s_xyz* rot) { + Matrix_Position_Zero(pos); + Matrix_to_rotate_new(get_Matrix_now(), rot, 0); +} + +static void Player_actor_draw_After_head(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Matrix_Position_Zero(&player->head_pos); +} + +static void Player_actor_draw_After_Lfoot3(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_draw_After_Culc_FootMarkPos(&player->left_foot_pos, &player->left_foot_angle); +} + +static void Player_actor_draw_After_Larm2(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->item_matrix_set) { + HANDOVERITEM_ACTOR* hoi_actor = Common_Get(clip).handOverItem_clip->handOverItem_p; + + if (hoi_actor != NULL) { + Matrix_get(&hoi_actor->tools_class.matrix_work); + hoi_actor->tools_class.init_matrix = TRUE; + } + + player->item_matrix_set = FALSE; + } + + Matrix_Position_VecX(&player->left_hand_pos, 1100.0f); + Matrix_get(&player->left_hand_mtx); +} + +static void Player_actor_draw_After_Rfoot3(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_draw_After_Culc_FootMarkPos(&player->right_foot_pos, &player->right_foot_angle); +} + +static void Player_actor_draw_After_feel(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + xyz_t* feel_pos = &player->feel_pos; + + Matrix_Position_Zero(feel_pos); + if (player->draw_effect_idx > 0) { + Common_Get(clip).effect_clip->effect_make_proc(player->draw_effect_idx - 1, *feel_pos, 2, + player->actor_class.shape_info.rotation.y, game, RSV_NO, 0, 0); + player->draw_effect_idx = 0; + } + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WASH_CAR) { + mPlayer_main_wash_car_c* wash_car = &player->main_data.wash_car; + + if (wash_car->effect_flag) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_ASE2, *feel_pos, 2, 0, game, RSV_NO, 0, 0); + wash_car->effect_flag = FALSE; + } + } +} + +static void Player_actor_draw_After_hand(ACTOR* actorx, GAME* game, cKF_SkeletonInfo_R_c* kf, Gfx** gfx_pp, u8* flag, + s_xyz* rot, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + xyz_t last_hand_pos = player->right_hand_pos; + + Matrix_Position_Zero(&player->right_hand_pos); + player->right_hand_move.x = player->right_hand_pos.x - last_hand_pos.x; + player->right_hand_move.y = player->right_hand_pos.y - last_hand_pos.y; + player->right_hand_move.z = player->right_hand_pos.z - last_hand_pos.z; + Matrix_get(&player->right_hand_mtx); +} + +typedef void (*mPlayer_DRAW_AFTER_PROC)(ACTOR*, GAME*, cKF_SkeletonInfo_R_c*, Gfx**, u8*, s_xyz*, xyz_t*); + +static int Player_actor_draw_After(GAME* game, cKF_SkeletonInfo_R_c* kf, int joint_no, Gfx** gfx_pp, u8* work_flag, + void* arg, s_xyz* rot, xyz_t* pos) { + // clang-format off + static const mPlayer_DRAW_AFTER_PROC proc[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_draw_After_Lfoot3, + NULL, + NULL, + NULL, + &Player_actor_draw_After_Rfoot3, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &Player_actor_draw_After_Larm2, + NULL, + NULL, + NULL, + &Player_actor_draw_After_hand, + NULL, + NULL, + NULL, + &Player_actor_draw_After_head, + &Player_actor_draw_After_feel, + }; + // clang-format on + + ACTOR* actorx = (ACTOR*)arg; + + if (joint_no >= 0 && joint_no < mPlayer_JOINT_NUM && proc[joint_no] != NULL) { + (*proc[joint_no])(actorx, game, kf, gfx_pp, work_flag, rot, pos); + } + + return TRUE; +} + +static void Player_actor_draw_Normal(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int buf_idx = game->frame_counter % 2; + int now_main_index = player->now_main_index; + cKF_SkeletonInfo_R_c* kf = &player->keyframe0; + Mtx* mtx = player->work_mtx[buf_idx]; + u8* eye_tex_p; + u8* mouth_tex_p; + GRAPH* graph; + int moving_in_boat; + GAME_PLAY* play = (GAME_PLAY*)game; + + eye_tex_p = Player_actor_Get_eye_tex_p(actorx); + mouth_tex_p = Player_actor_Get_mouth_tex_p(actorx); + graph = game->graph; + moving_in_boat = FALSE; + + _texture_z_light_fog_prim(graph); + OPEN_POLY_OPA_DISP(graph); + + if (now_main_index == mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN || + now_main_index == mPlayer_INDEX_DEMO_GETON_BOAT_WAIT || now_main_index == mPlayer_INDEX_DEMO_GETON_BOAT_WADE || + now_main_index == mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP) { + moving_in_boat = TRUE; + } + + if (moving_in_boat) { + s16 boat_angle_z; + + if (now_main_index == mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN) { + boat_angle_z = -player->main_data.demo_geton_boat_sitdown.angle_z; + } else if (now_main_index == mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP) { + boat_angle_z = -player->main_data.demo_getoff_boat_standup.angle_z; + } else { + boat_angle_z = -player->boat_angleZ; + } + + Matrix_push(); + Matrix_RotateZ(boat_angle_z, 1); + } + + gSPSegment(POLY_OPA_DISP++, ANIME_1_TXT_SEG, eye_tex_p); + gSPSegment(POLY_OPA_DISP++, ANIME_2_TXT_SEG, mouth_tex_p); + gSPSegment(POLY_OPA_DISP++, ANIME_3_TXT_SEG, mPlib_get_player_tex_p(game)); + gSPSegment(POLY_OPA_DISP++, ANIME_4_TXT_SEG, mPlib_get_player_pallet_p(game)); + gSPSegment(POLY_OPA_DISP++, ANIME_5_TXT_SEG, mPlib_get_player_face_pallet_p(game)); + + CLOSE_POLY_OPA_DISP(graph); + + if (player->change_color_flag) { + int color_frame = (int)(player->change_color_timer / 9.96f); + + if ((color_frame & 1)) { + player->change_color_near = 1; + player->change_color_far = 1; + } else { + static const int color_data[4][3] = { + { 255, 255, 100 }, // r + { 100, 255, 100 }, // g + { 255, 255, 100 }, // b + { 255, 100, 100 }, // a? + }; + + int color_idx = color_frame / 2; + + if (color_idx >= 0 && color_idx < 4) { + xyz_t diff; + f32 diff_len; + View* v = &play->view; + xyz_t* eye_p = &v->eye; + + player->change_color_rgb[0] = color_data[0][color_idx]; + player->change_color_rgb[1] = color_data[1][color_idx]; + player->change_color_rgb[2] = color_data[2][color_idx]; + + diff.x = v->center.x - eye_p->x; + diff.y = v->center.y - eye_p->y; + diff.z = v->center.z - eye_p->z; + diff_len = Math3DVecLength(&diff); + + if (diff_len > 0.0f) { + f32 dx = player->actor_class.world.position.x - eye_p->x; + f32 dy = player->actor_class.world.position.y - eye_p->y; + f32 dz = player->actor_class.world.position.z - eye_p->z; + + f32 percent = (dx * diff.x + dy * diff.y + dz * diff.z) / diff_len; + f32 t0; + f32 t1; + f32 t2; + + t0 = diff_len - 352.0f; + t1 = diff_len * 0.25f; + t2 = 2.0f / 14.1f; + + player->change_color_near = (int)(210.0f + (diff_len - percent) / diff_len); + player->change_color_far = + player->change_color_near + (int)(780.0f + t0 * (t2 / 2.0f) + t1 * (t2 / 2.0f)); + } else { + player->change_color_near = 1; + player->change_color_far = 1; + } + } else { + player->change_color_near = 1; + player->change_color_far = 1; + } + } + + OPEN_DISP(graph); + SET_POLY_OPA_DISP(gfx_set_fog_nosync(NOW_POLY_OPA_DISP, player->change_color_rgb[0], + player->change_color_rgb[1], player->change_color_rgb[2], 255, + player->change_color_near, player->change_color_far)); + CLOSE_DISP(graph); + } + + cKF_Si3_draw_R_SV(game, kf, mtx, &Player_actor_draw_Before, &Player_actor_draw_After, player); + + if (player->change_color_flag) { + /* Revert to standard fog color */ + OPEN_DISP(graph); + SET_POLY_OPA_DISP(gfx_set_fog_nosync(NOW_POLY_OPA_DISP, play->global_light.fogColor[0], + play->global_light.fogColor[1], play->global_light.fogColor[2], 0, + play->global_light.fogNear, play->global_light.fogFar)); + CLOSE_DISP(graph); + } + + Player_actor_Item_draw(actorx, game); + + { + mActor_name_t item = EMPTY_NO; + f32 item_scale = 0.0f; + xyz_t* item_pos_p = NULL; + int flag = FALSE; + mPlayer_main_pickup_jump_c* main_pickup_jump = NULL; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PICKUP) { + if (player->main_data.pickup.signboard_flag == FALSE) { + item = player->main_data.pickup.item; + item_scale = player->main_data.pickup.scale; + item_pos_p = &player->main_data.pickup.item_pos; + } + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PICKUP_JUMP) { + mPlayer_main_pickup_jump_c* main_pickup_jump2 = &player->main_data.pickup_jump; + + if (main_pickup_jump2->ftr_flag == FALSE) { + main_pickup_jump = main_pickup_jump2; + item = main_pickup_jump2->item; + item_scale = main_pickup_jump2->scale; + item_pos_p = &main_pickup_jump2->item_pos; + flag = TRUE; + } + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_GET_SCOOP) { + item = player->main_data.get_scoop.item; + item_scale = player->main_data.get_scoop.scale; + if (player->keyframe0.frame_control.current_frame <= 42.0f) { + item_pos_p = &player->scoop_pos; + } else { + item_pos_p = &player->left_hand_pos; + } + } else if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTAWAY_SCOOP) { + item = player->main_data.putaway_scoop.item; + item_scale = player->main_data.putaway_scoop.scale; + item_pos_p = &player->left_hand_pos; + } + + if (item_scale > 0.0f && item != EMPTY_NO && item_pos_p != NULL) { + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_FG) { + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->single_draw_proc != NULL) { + Common_Get(clip).bg_item_clip->single_draw_proc(game, item, item_pos_p, item_scale, NULL, NULL, + NULL); + } + } else { + if (Common_Get(clip).shop_goods_clip != NULL && + Common_Get(clip).shop_goods_clip->single_draw_proc != NULL) { + s16 item_angle_y; + int uz; + int ux; + + if (main_pickup_jump != NULL && mFI_Wpos2UtNum(&ux, &uz, main_pickup_jump->target_pos)) { + item_angle_y = Common_Get(clip).shop_goods_clip->single_get_angle_y_proc(uz, ux, flag); + } else { + item_angle_y = 0; + } + + Common_Get(clip).shop_goods_clip->single_draw_proc(game, item, item_pos_p, item_scale, item_angle_y, + flag); + } + } + } + } + + if (moving_in_boat) { + Matrix_pull(); + } +} diff --git a/src/m_player_item.c_inc b/src/m_player_item.c_inc new file mode 100644 index 00000000..8bab419e --- /dev/null +++ b/src/m_player_item.c_inc @@ -0,0 +1,147 @@ +typedef void (*mPlayer_item_proc)(ACTOR* actor, int, int); + +static void Player_actor_Item_Setup_main(ACTOR* actor, int now, int last) { + static const mPlayer_item_proc proc[] = { + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, &Player_actor_Item_Setup_main_balloon_normal, + NULL, NULL, + }; + + if (now != last) { + if (proc[now] != NULL) { + proc[now](actor, now, last); + } + } +} +typedef int (*mPlayer_item_main_proc)(ACTOR* actor, GAME*); + +static int Player_actor_Item_main(ACTOR* actor, GAME* game) { + static const mPlayer_item_main_proc proc[] = { + NULL, + Player_actor_Item_main_axe_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_stop, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_net_normal, + Player_actor_Item_main_umbrella_normal, + Player_actor_Item_main_rod_normal, + Player_actor_Item_main_rod_ready, + Player_actor_Item_main_rod_cast, + Player_actor_Item_main_rod_air, + Player_actor_Item_main_rod_relax, + Player_actor_Item_main_rod_collect, + Player_actor_Item_main_rod_vib, + Player_actor_Item_main_rod_fly, + Player_actor_Item_main_rod_putaway, + Player_actor_Item_main_scoop_normal, + Player_actor_Item_main_balloon_normal, + Player_actor_Item_main_windmill_normal, + Player_actor_Item_main_fan_normal, + }; + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int now_index = player->now_item_main_index; + + if (mPlayer_ITEM_MAIN_VALID(now_index)) { + Player_actor_Item_main_other_func1(actor, game); + if (now_index == mPlayer_ITEM_MAIN_NONE) { + Player_actor_Item_Set_Command_forUki(actor, 0); + } else { + if (proc[now_index] != NULL) { + return proc[now_index](actor, game); + } + } + } + + return FALSE; +} + +typedef void (*mPlayer_item_draw_proc)(ACTOR* actor, GAME*); + +static void Player_actor_Item_draw(ACTOR* actor, GAME* game) { + static const mPlayer_item_draw_proc proc[] = { + NULL, + Player_actor_Item_draw_axe, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_net, + Player_actor_Item_draw_umbrella, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_rod, + Player_actor_Item_draw_scoop, + Player_actor_Item_draw_balloon, + Player_actor_Item_draw_windmill, + Player_actor_Item_draw_fan, + }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int now_index = player->now_item_main_index; + + if (mPlayer_ITEM_MAIN_VALID(now_index)) { + GRAPH* graph = game->graph; + + if (now_index == mPlayer_ITEM_MAIN_NONE) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WASH_CAR) { + Mtx* mtx; + + _texture_z_light_fog_prim(graph); + Matrix_push(); + Matrix_put(&player->right_hand_mtx); + mtx = _Matrix_to_Mtx_new(game->graph); + + if (mtx != NULL) { + OPEN_POLY_OPA_DISP(graph); + + gSPMatrix(__polyOpa++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + gSPDisplayList(__polyOpa++, tol_sponge_1_model); + + CLOSE_POLY_OPA_DISP(graph); + + Matrix_pull(); + } + } + player->item_rod_top_pos_set = 0; + player->balloon_start_pos_set_flag = 0; + } else { + if (proc[now_index] != NULL) { + f32 scale = player->item_scale; + Mtx* mtx; + + Matrix_push(); + Matrix_put(&player->right_hand_mtx); + + if (scale != 1.0f) { + Matrix_scale(scale, scale, scale, 1); + } + mtx = _Matrix_to_Mtx_new(game->graph); + + if (mtx != NULL) { + _texture_z_light_fog_prim(graph); + + OPEN_POLY_OPA_DISP(graph); + + gSPMatrix(__polyOpa++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_POLY_OPA_DISP(graph); + proc[now_index](actor, game); + } + Matrix_pull(); + } + } + } +} diff --git a/src/m_player_item_axe.c_inc b/src/m_player_item_axe.c_inc new file mode 100644 index 00000000..197de9be --- /dev/null +++ b/src/m_player_item_axe.c_inc @@ -0,0 +1,25 @@ +static int Player_actor_Item_main_axe_normal(ACTOR* actor, GAME* game) { + return 0; +} + +static void Player_actor_Item_draw_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int shape_type; + + Matrix_push(); + Matrix_Position_VecZ(&player->axe_pos, 1500.0f); + Matrix_pull(); + + shape_type = player->item_shape_type[player->item_bank_idx]; + + if (mPlayer_ITEM_DATA_VALID(shape_type)) { + OPEN_POLY_OPA_DISP(game->graph); + + gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(shape_type)); + + CLOSE_POLY_OPA_DISP(game->graph); + } + + player->item_rod_top_pos_set = FALSE; + player->balloon_start_pos_set_flag = FALSE; +} diff --git a/src/m_player_item_balloon.c_inc b/src/m_player_item_balloon.c_inc new file mode 100644 index 00000000..c1388e00 --- /dev/null +++ b/src/m_player_item_balloon.c_inc @@ -0,0 +1,285 @@ +static s16 Player_actor_Item_Get_goal_balloon_lean_angle(ACTOR* actor) { + return -actor->shape_info.rotation.x; +} + +static void Player_actor_Item_Setup_main_balloon_normal(ACTOR* actor, int item_kind, int kind) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (mPlayer_ITEM_IS_BALLOON(kind) == FALSE) { + player->balloon_lean_angle = Player_actor_Item_Get_goal_balloon_lean_angle(actor); + player->balloon_angle = ZeroSVec; + player->balloon_anim_max_frame = player->item_keyframe.frame_control.max_frames; + player->balloon_anim_speed = 0.0f; + player->balloon_stop_movement_flag = TRUE; + player->balloon_add_rot_z = 30.0f; + player->ballon_add_rot_x = 0; + player->balloon_add_rot_x_counter = 0; + player->balloon_current_frame = 0.0f; + } + + player->item_keyframe.frame_control.current_frame = player->balloon_anim_max_frame; + player->item_keyframe.frame_control.speed = player->balloon_anim_speed; +} + +static void Player_actor_Item_set_balloon_lean_angle(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s16 angle = Player_actor_Item_Get_goal_balloon_lean_angle(actor); + add_calc_short_angle2(&player->balloon_lean_angle, angle, 1.0f - sqrtf(0.90999999f), 250, 0); +} + +static void Player_actor_Item_CulcAnimation_balloon_normal(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 speed = player->item_keyframe.frame_control.speed; + f32 cur = player->item_keyframe.frame_control.current_frame; + f32 max = player->item_keyframe.frame_control.max_frames; + + player->balloon_anim_max_frame = cur; + cur += speed; + player->balloon_anim_speed = speed; + + if (cur > max) { + cur = max; + } else if (cur < 0.5f * max) { + cur = 0.5f * max; + } + + player->item_keyframe.frame_control.current_frame = cur; +} + +static void Player_actor_Item_Movement_balloon_normal(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 max = player->item_keyframe.frame_control.max_frames; + int index; + + if (player->item_scale == 1.0f) { + f32 speed = (26.0f * (player->item_keyframe.frame_control.current_frame - 1.0f)) / (max - 1.0f); + xyz_t pos = ZeroVec; + + if (player->balloon_stop_movement_flag == FALSE) { + s16 ang = player->balloon_lean_angle; + s16 rot = actor->shape_info.rotation.y; + s16 target; + f32 cos = cos_s(ang); + xyz_t right_hand = player->right_hand_move; + + pos.y -= right_hand.y * cos; + + { + f32 cos = cos_s(DEG2SHORT_ANGLE2(90.0f) - ang); + f32 sin = sin_s(rot); + f32 cos2 = cos_s(rot); + f32 poscalc = ((sin * right_hand.x) + (cos2 * right_hand.z)); + + pos.y -= poscalc * cos; + } + + { + f32 balloon_add_rot_z = player->balloon_add_rot_z; + s16 add_z_angle; + + balloon_add_rot_z -= (0.0014f * player->balloon_angle.z); + add_z_angle = player->balloon_angle.z + (int)balloon_add_rot_z; + + if (add_z_angle > 0x800) { + add_z_angle = 0x800; + } else if (add_z_angle < -0x800) { + add_z_angle = -0x800; + } + + player->balloon_angle.z = add_z_angle; + player->balloon_add_rot_z = balloon_add_rot_z; + } + + { + f32 sin = sin_s(rot); + f32 cos2 = cos_s(rot); + s16 balloon_angle_z = (s16)(-1200.0f * ((sin * right_hand.x) + (cos2 * right_hand.z))); + s16 balloon_angle_x = player->balloon_angle.x; + int xang = ABS(balloon_angle_x); + int zang = ABS(balloon_angle_z); + + if (zang - xang < 0) { + add_calc_short_angle2(&player->balloon_angle.x, balloon_angle_z, 1.0f - sqrtf(0.9f), 2500, 0); + } else { + add_calc_short_angle2(&player->balloon_angle.x, balloon_angle_z, 1.0f - sqrtf(0.6f), 2500, 0); + } + } + + { + int index = player->now_main_index; + s16 add_x_angle = player->ballon_add_rot_x; + + if (index == mPlayer_INDEX_WALK || index == mPlayer_INDEX_RUN) { + s16 counter = player->balloon_add_rot_x_counter; + f32 sin; + + counter += (s16)(400.0f * actor->speed); + sin = sin_s(counter); + player->balloon_add_rot_x_counter = counter; + + target = (s16)(1000.0f * sin); + } else { + target = 0; + } + + add_calc_short_angle2(&add_x_angle, target, 1.0f - sqrtf(0.6f), 2500, 0); + player->ballon_add_rot_x = add_x_angle; + } + } + + speed += pos.y; + if (speed < 13.0f) { + speed = 13.0f; + } else if (speed > 26.0f) { + speed = 26.0f; + } + + player->item_keyframe.frame_control.current_frame = 1.0f + ((speed * (max - 1.0f)) / 26.0f); + } else { + player->balloon_angle.z = 0; + } + + { + f32 item_speed = player->item_keyframe.frame_control.speed; + f32 cur = player->item_keyframe.frame_control.current_frame; + f32 curmax = 0.7f * max; + + if (cur >= max) { + item_speed = -0.085f; + } else if (item_speed <= 0.0f && cur <= curmax) { + item_speed = 0.0f; + } else { + item_speed += 0.0039585f; + } + + player->item_keyframe.frame_control.speed = item_speed; + } +} + +static void Player_actor_Item_PlayAnimation_balloon_normal(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 cur = player->item_keyframe.frame_control.current_frame; + f32 max = player->item_keyframe.frame_control.max_frames; + + if (player->balloon_current_frame != cur) { + f32 cur_diff = cur - player->balloon_current_frame; + f32 old_speed = player->item_keyframe.frame_control.speed; + + if (cur_diff >= 0.0f) { + player->item_keyframe.frame_control.start_frame = 1.0f; + player->item_keyframe.frame_control.end_frame = max; + } else { + player->item_keyframe.frame_control.end_frame = 1.0f; + player->item_keyframe.frame_control.start_frame = max; + } + + player->item_keyframe.frame_control.speed = cur_diff; + Player_actor_Item_CulcAnimation_Base(actor); + player->item_keyframe.frame_control.current_frame = cur; + player->balloon_current_frame = cur; + player->item_keyframe.frame_control.speed = old_speed; + } +} + +static int Player_actor_Item_main_balloon_normal(ACTOR* actor, GAME* game) { + Player_actor_Item_set_balloon_lean_angle(actor); + Player_actor_Item_CulcAnimation_balloon_normal(actor); + return 0; +} + +static int Player_actor_Item_draw_balloon_Before(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { + + switch (joint_idx) { + case 1: + case 2: + case 3: + + OPEN_POLY_OPA_DISP(game->graph); + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetTexEdgeAlpha(POLY_OPA_DISP++, 80); + + CLOSE_POLY_OPA_DISP(game->graph); + + break; + } + + return 1; +} + +static int Player_actor_Item_draw_balloon_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { + switch (joint_idx) { + case 1: + case 2: + case 3: + + OPEN_POLY_OPA_DISP(game->graph); + + gDPPipeSync(POLY_OPA_DISP++); + gDPSetTexEdgeAlpha(POLY_OPA_DISP++, 144); + + CLOSE_POLY_OPA_DISP(game->graph); + + break; + } + + return 1; +} +static void Player_actor_Item_draw_balloon(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Mtx* item_mtx; + GAME_PLAY* play = (GAME_PLAY*)game; + s16 angle; + s16 rot; + GRAPH* graph; + f32 scale; + s_xyz* angle_p = &player->balloon_angle; + + if (!_Game_play_isPause(play)) { + Player_actor_Item_Movement_balloon_normal(actor); + Player_actor_Item_PlayAnimation_balloon_normal(actor); + } + + item_mtx = player->item_work_mtx[play->game.frame_counter % 2]; + graph = play->game.graph; + + Matrix_push(); + + rot = actor->shape_info.rotation.y; + scale = player->item_scale; + angle = DEG2SHORT_ANGLE2(-90.0f) + player->balloon_lean_angle + angle_p->x + player->ballon_add_rot_x; + + Matrix_translate(player->right_hand_pos.x, player->right_hand_pos.y, player->right_hand_pos.z, 0); + Matrix_RotateY(rot, 1); + Matrix_RotateX(angle, 1); + Matrix_RotateZ(0x4000, 1); + Matrix_RotateX(player->balloon_angle.z, 1); + Matrix_scale(actor->scale.x * scale, actor->scale.y * scale, actor->scale.z * scale, 1); + + OPEN_POLY_OPA_DISP(graph); + + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_POLY_OPA_DISP(graph); + + Setpos_HiliteReflect_init(&player->right_hand_pos, play); + + cKF_Si3_draw_R_SV(&play->game, &player->item_keyframe, item_mtx, Player_actor_Item_draw_balloon_Before, + Player_actor_Item_draw_balloon_After, actor); + Matrix_pull(); + + player->item_rod_top_pos_set = FALSE; + + if (player->balloon_start_pos_set_flag == FALSE) { + player->other_item_start_pos = player->other_item_end_pos; + player->balloon_start_pos_set_flag = TRUE; + } + + if (player->balloon_stop_movement_flag != FALSE) { + player->balloon_stop_movement_flag = FALSE; + } +} diff --git a/src/m_player_item_common.c_inc b/src/m_player_item_common.c_inc new file mode 100644 index 00000000..35246136 --- /dev/null +++ b/src/m_player_item_common.c_inc @@ -0,0 +1,422 @@ +static void Player_actor_Set_ItemNoSubmenu(mActor_name_t item) { + if (mEv_CheckTitleDemo() <= 0) { + Common_Get(now_private)->equipment = item; + } +} + +static mActor_name_t Player_actor_Get_ItemNoSubmenu(void) { + if (mEv_CheckTitleDemo() > 0) { + return mPlib_Get_controller_data_for_title_demo_p()->equipped_item; + } else { + return Common_Get(now_private)->equipment; + } +} + +static s8 Player_actor_Get_ItemKind_from_submenu(void) { + return mPlib_Get_ItemNoToItemKind(Player_actor_Get_ItemNoSubmenu()); +} + +static s8 Player_actor_Get_ItemKind_fromScene(void) { + if (Player_actor_CheckScene_AbleOutItem(Save_Get(scene_no))) { + return Player_actor_Get_ItemKind_from_submenu(); + } + return -1; +} + +static s8 Player_actor_Get_ItemKind(ACTOR* actor, int kind) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int able = Player_actor_CheckPlayer_AbleLoadItem(kind); + s8 scene_kind = Player_actor_Get_ItemKind_fromScene(); + + if (player->unable_hand_item_in_demo != FALSE) { + return -1; + } else if (player->able_hand_all_item_in_demo != FALSE) { + return scene_kind; + } else { + if (able == mPlayer_ABLE_ITEM_CAN_USE_ALL) { + return scene_kind; + } else if (able == mPlayer_ABLE_ITEM_CAN_USE_UMBRELLA) { + if ((mPlayer_ITEM_IS_UMBRELLA(scene_kind) || mPlayer_ITEM_IS_BALLOON(scene_kind) || + mPlayer_ITEM_IS_WINDMILL(scene_kind) || mPlayer_ITEM_IS_FAN(scene_kind)) != FALSE) { + return scene_kind; + } + } + } + return -1; +} + +static int Player_actor_Get_BasicItemMainIndex_fromItemKind(int kind) { + // clang-format off + static const s8 data[] = { + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_AXE_NORMAL, + mPlayer_ITEM_MAIN_NET_NORMAL, + mPlayer_ITEM_MAIN_NET_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_UMBRELLA_NORMAL, + mPlayer_ITEM_MAIN_ROD_NORMAL, + mPlayer_ITEM_MAIN_ROD_NORMAL, + mPlayer_ITEM_MAIN_SCOOP_NORMAL, + mPlayer_ITEM_MAIN_SCOOP_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_BALLOON_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_WINDMILL_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + mPlayer_ITEM_MAIN_FAN_NORMAL, + }; + // clang-format on + + if (mPlayer_ITEM_KIND_VALID(kind)) { + return data[kind]; + } else { + return mPlayer_ITEM_MAIN_NONE; + } +} + +static void Player_actor_birth_umbrella(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + aTOL_Clip_c* tools; + s8 kind; + + if (player->umbrella_actor == NULL) { + tools = Common_Get(clip).tools_clip; + if (tools != NULL && + (player->umbrella_state == aTOL_ACTION_TAKEOUT || player->umbrella_state == aTOL_ACTION_S_TAKEOUT || + player->umbrella_state == aTOL_ACTION_PUTAWAY)) { + kind = player->item_kind; + + if (mPlayer_ITEM_IS_UMBRELLA(kind) != FALSE) { + player->umbrella_actor = tools->aTOL_birth_proc(kind - mPlayer_ITEM_KIND_UMBRELLA00, + player->umbrella_state, actor, game, -1, 0); + + if (player->umbrella_actor != NULL) { + player->umbrella_actor->world.position = actor->world.position; + player->umbrella_actor->skip_drawing = TRUE; + } + } + } + } +} + +ACTOR* Player_actor_Get_umbrella_p(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + ACTOR* umbrella; + Player_actor_birth_umbrella(actor, game); + + umbrella = player->umbrella_actor; + if (umbrella != NULL) { + umbrella->skip_drawing = FALSE; + return umbrella; + } + + return NULL; +} + +static int Player_actor_Item_CulcAnimation_Base(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + return cKF_SkeletonInfo_R_play(&player->item_keyframe); +} + +static int Player_actor_Item_CulcAnimation_Base2(ACTOR* actor) { + return Player_actor_Item_CulcAnimation_Base(actor) == 1; +} + +static void Player_actor_Item_SetAnimation_Base(ACTOR* actor, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf = &player->item_keyframe; + + keyf->frame_control.current_frame = frame; + cKF_SkeletonInfo_R_play(keyf); + keyf->frame_control.current_frame = frame; +} + +static void Player_actor_Item_DMA_Data(ACTOR* actor, int skl_idx, int anim_idx, int mode, f32 speed, f32 morph_speed, + f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int change_bank = Player_actor_Change_ItemBank(actor, skl_idx, anim_idx); + + if ((skl_idx >= 0) && (mPlib_Get_Item_DataPointerType(skl_idx) != mPlayer_ITEM_DATA_TYPE_GFX)) { + cKF_Skeleton_R_c* skeleton; + cKF_SkeletonInfo_R_c* keyf; + s_xyz* joint_work; + s_xyz* morph_work; + cKF_SkeletonInfo_R_c* key2; + + keyf = &player->item_keyframe; + joint_work = player->item_joint_data; + morph_work = player->item_morph_data; + skeleton = mPlib_Get_Item_DataPointer(skl_idx); + + if (frame >= 0.0f) { + cKF_SkeletonInfo_R_ct(keyf, skeleton, NULL, joint_work, morph_work); + keyf->frame_control.current_frame = frame; + } else if (change_bank != 0) { + keyf->skeleton = skeleton; + keyf->animation = NULL; + } else { + cKF_SkeletonInfo_R_ct(keyf, skeleton, NULL, joint_work, morph_work); + } + key2 = &player->item_keyframe; + cKF_SkeletonInfo_R_init_standard_setframeandspeedandmorphandmode(key2, mPlib_Get_Item_DataPointer(anim_idx), + NULL, key2->frame_control.current_frame, speed, + morph_speed, mode); + } +} + +static void Player_actor_Item_Set_Command_forUki(ACTOR* actor, int command) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + rod->command = command; + } +} + +static void Player_actor_Item_Set_RightHandPos_forUki(ACTOR* actor, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + s16 rot; + xyz_t pos; + f32 sin; + f32 cos; + switch (main_index) { + case mPlayer_INDEX_COLLECT_ROD: + case mPlayer_INDEX_VIB_ROD: + case mPlayer_INDEX_FLY_ROD: + pos = actor->world.position; + rot = actor->shape_info.rotation.y; + + cos = cos_s(rot); + sin = sin_s(rot); + + pos.z += (12.0f * cos) - (-2.0f * sin); + pos.x += (-2.0f * cos) + (12.0f * sin); + pos.y += 17.5f; + + rod->right_hand_pos = pos; + break; + default: + rod->right_hand_pos = player->right_hand_pos; + break; + } + } +} + +static void Player_actor_Item_Set_LeftHandPos_forUki(ACTOR* actor, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + s16 rot; + xyz_t pos; + f32 sin; + f32 cos; + switch (main_index) { + case mPlayer_INDEX_COLLECT_ROD: + case mPlayer_INDEX_VIB_ROD: + case mPlayer_INDEX_FLY_ROD: + pos = actor->world.position; + rot = actor->shape_info.rotation.y; + + cos = cos_s(rot); + sin = sin_s(rot); + + pos.z += (10.0f * cos) - (8.0f * sin); + pos.x += (8.0f * cos) + (10.0f * sin); + pos.y += 24.0f; + + rod->left_hand_pos = pos; + break; + default: + rod->left_hand_pos = player->left_hand_pos; + break; + } + } +} + +static void Player_actor_Item_Set_PosSpeed_forUki(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + rod->position_speed = actor->position_speed; + } +} + +static void Player_actor_Item_Set_AngleSpeedY_forUki(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + int y = player->shape_angle_delta.y; + + if (y > 0) { + if (y > DEG2SHORT_ANGLE2(180.0f)) { + y = -(DEG2SHORT_ANGLE2(360.0f) - y); + } + } else if (y < DEG2SHORT_ANGLE2(-180.0f)) { + y += DEG2SHORT_ANGLE2(360.0f); + } + + rod->angle_speed_y = y; + } +} + +static void Player_actor_Item_Set_RodTopPos_forUki(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + Player_actor_Get_ItemRodTopInitPos(actor, &rod->rod_top_position); + } +} + +static void Player_actor_LoadOrDestruct_Item(ACTOR* actor, int kind, int anim_idx, f32 speed, f32 morph_speed, + f32 frame, int mode) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int umbrella; + int rod; + + if (kind >= 0) { + Player_actor_Item_DMA_Data(actor, mPlib_Get_BasicItemShapeIndex_fromItemKind(kind), anim_idx, mode, speed, + morph_speed, frame); + } + umbrella = FALSE; + if (mPlayer_ITEM_IS_UMBRELLA(kind)) { + umbrella = TRUE; + } + + if (!umbrella) { + if (player->umbrella_actor != NULL && Common_Get(clip).tools_clip != NULL) { + Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, + aTOL_ACTION_DESTRUCT); + player->umbrella_actor = NULL; + } + + player->umbrella_state = aTOL_ACTION_S_TAKEOUT; + } else { + TOOLS_ACTOR* tool = (TOOLS_ACTOR*)player->umbrella_actor; + if (tool != NULL && (kind - mPlayer_ITEM_KIND_UMBRELLA00) != tool->tool_name) { + if (Common_Get(clip).tools_clip != NULL) { + Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actor, player->umbrella_actor, + aTOL_ACTION_DESTRUCT); + player->umbrella_actor = NULL; + } + + player->umbrella_state = aTOL_ACTION_S_TAKEOUT; + } + } + + rod = FALSE; + if (mPlayer_ITEM_IS_ROD(kind)) { + rod = TRUE; + } + + if (!rod) { + Player_actor_Item_Set_Command_forUki(actor, 0); + } +} + +static void Player_actor_CorrectSomething_net(ACTOR* actor, xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + TOOLS_ACTOR* label = (TOOLS_ACTOR*)player->item_net_catch_label; + + if (label != NULL && player->item_net_catch_type == mPlayer_NET_CATCH_TYPE_INSECT) { + Matrix_push(); + Matrix_translate(pos->x, pos->y, pos->z, FALSE); + Matrix_get(&label->matrix_work); + Matrix_pull(); + label->init_matrix = TRUE; + } +} + +static int Player_actor_Check_ItemAnimationToItemKind(int kind, int anim) { + int res; + + if (mPlayer_ITEM_IS_AXE(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_NET(kind) != FALSE) { + res = mPlib_Get_Item_DataPointerType(anim) == mPlayer_ITEM_DATA_TYPE_NET_ANIMATION; + } else if (mPlayer_ITEM_IS_UMBRELLA(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_ROD(kind) != FALSE) { + res = mPlib_Get_Item_DataPointerType(anim) == mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION; + } else if (mPlayer_ITEM_IS_SHOVEL(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_BALLOON(kind) != FALSE) { + res = anim < 0; + } else if (mPlayer_ITEM_IS_WINDMILL(kind) != FALSE) { + res = anim < 0; + } else { + res = FALSE; + } + + return res; +} diff --git a/src/m_player_item_fan.c_inc b/src/m_player_item_fan.c_inc new file mode 100644 index 00000000..f4a5d000 --- /dev/null +++ b/src/m_player_item_fan.c_inc @@ -0,0 +1,17 @@ +static int Player_actor_Item_main_fan_normal(ACTOR* actor, GAME* game) { + return 0; +} + +static void Player_actor_Item_draw_fan(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int type; + + type = player->item_shape_type[player->item_bank_idx]; + + OPEN_POLY_OPA_DISP(game->graph); + gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(type)); + + CLOSE_POLY_OPA_DISP(game->graph); + player->item_rod_top_pos_set = FALSE; + player->balloon_start_pos_set_flag = FALSE; +} diff --git a/src/m_player_item_net.c_inc b/src/m_player_item_net.c_inc new file mode 100644 index 00000000..6bae78f9 --- /dev/null +++ b/src/m_player_item_net.c_inc @@ -0,0 +1,254 @@ +static void Player_actor_Item_net_CulcJointAngle_dummy_net_base(s_xyz* angle, const s_xyz* base, s16 min, s16 max, + f32 frac) { + + add_calc_short_angle2(&angle->x, base->x, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); + add_calc_short_angle2(&angle->y, base->y, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); + add_calc_short_angle2(&angle->z, base->z, 1.0f - sqrtf(1.0f - frac), min >> 1, max >> 1); +} + +static void Player_actor_Item_net_CulcJointAngle_dummy_net_reset(ACTOR* actor) { + static const s_xyz basic_angle = { 0, 182, -7281 }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle, &basic_angle, 2730, 100, 0.2f); +} + +static void Player_actor_Item_net_CulcJointAngle_dummy_net_ready(ACTOR* actor) { + static const s_xyz basic_angle = { 0, 364, -11832 }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle, &basic_angle, 2730, 100, 0.2f); +} + +static void Player_actor_Item_net_CulcJointAngle_dummy_net_common(ACTOR* actor, const xyz_t* start_angle, + const xyz_t* arg2, const xyz_t* end_left_angle, + const xyz_t* end_right_angle) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 sp = (player->keyframe0.frame_control.speed - 0.22f) / 0.37999996f; + s_xyz base; + f32 angle_y; + f32 fac; + s_xyz* net_angle = &player->net_angle; + + if (sp > 1.0f) { + sp = 1.0f; + } else if (sp < 0.0f) { + sp = 0.0f; + } + + base.x = (s16)(int)(start_angle->x + (sp * (arg2->x - start_angle->x))); + base.y = (s16)(int)(start_angle->y + (sp * (arg2->y - start_angle->y))); + base.z = (s16)(int)(start_angle->z + (sp * (arg2->z - start_angle->z))); + + angle_y = player->shape_angle_delta.y; + + if (angle_y > 0.0f) { + if (angle_y > 32768.0f) { + angle_y = -(65536.0f - angle_y); + } + } else if (angle_y < -32768.0f) { + angle_y = angle_y + 65536.0f; + } + + fac = angle_y / 1820.0f; + + if (fac > 1.0f) { + fac = 1.0f; + } else if (fac < -1.0f) { + fac = -1.0f; + } + + if (fac > 0.0f) { + base.x += (s16)(int)(fac * (end_left_angle->x - start_angle->x)); + base.y += (s16)(int)(fac * (end_left_angle->y - start_angle->y)); + base.z += (s16)(int)(fac * (end_left_angle->z - start_angle->z)); + + } else if (fac < 0.0f) { + base.x += (s16)(int)(-fac * (end_right_angle->x - start_angle->x)); + base.y += (s16)(int)(-fac * (end_right_angle->y - start_angle->y)); + base.z += (s16)(int)(-fac * (end_right_angle->z - start_angle->z)); + } + + Player_actor_Item_net_CulcJointAngle_dummy_net_base(net_angle, &base, 2730, 100, 0.2f); +} + +static void Player_actor_Item_net_CulcJointAngle_dummy_net_walk(ACTOR* actor) { + static const xyz_t basic_start_move_angle = { 0, DEG2SHORT_ANGLE3(1.0f), DEG2SHORT_ANGLE3(-40.0f) }; + static const xyz_t basic_end_left_turn_angle = { 0, DEG2SHORT_ANGLE3(-25.0f), DEG2SHORT_ANGLE3(-25.0f) }; + static const xyz_t basic_end_right_turn_angle = { 0, DEG2SHORT_ANGLE3(25.0f), DEG2SHORT_ANGLE3(-25.0f) }; + + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_start_move_angle, &ZeroVec, + &basic_end_left_turn_angle, &basic_end_right_turn_angle); +} + +static void Player_actor_Item_net_CulcJointAngle_dummy_net_zero(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_net_CulcJointAngle_dummy_net_base(&player->net_angle, &ZeroSVec, 2730, 100, 0.2f); +} + +static void Player_actor_Item_net_CulcJointAngle_dummy_net_ready_walk(ACTOR* actor) { + static const xyz_t basic_start_move_angle = { 0.0f, DEG2SHORT_ANGLE3(2.0f), DEG2SHORT_ANGLE3(-65.0f) }; + static const xyz_t basic_end_left_turn_angle = { 0, DEG2SHORT_ANGLE3(-25.0f), DEG2SHORT_ANGLE3(-25.0f) }; + static const xyz_t basic_end_right_turn_angle = { 0, DEG2SHORT_ANGLE3(25.0f), DEG2SHORT_ANGLE3(-25.0f) }; + + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_start_move_angle, &ZeroVec, + &basic_end_left_turn_angle, &basic_end_right_turn_angle); +} + +static void Player_actor_Item_net_CulcJointAngle_dummy_net_turn(ACTOR* actor) { + static const xyz_t basic_angle = { 0, DEG2SHORT_ANGLE3(-25.0f), DEG2SHORT_ANGLE3(-25.0f) }; + + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_angle, &basic_angle, &basic_angle, + &basic_angle); +} + +static void Player_actor_Item_net_CulcJointAngle_dummy_net_slip(ACTOR* actor) { + static const xyz_t basic_angle = { 0.0f, 0.0f, DEG2SHORT_ANGLE3(-65.0f) }; + + Player_actor_Item_net_CulcJointAngle_dummy_net_common(actor, &basic_angle, &basic_angle, &basic_angle, + &basic_angle); +} + +static void Player_actor_Item_net_CulcJointAngle_dummy_net_swing(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->keyframe0.frame_control.current_frame >= 5.0f) { + Player_actor_Item_net_CulcJointAngle_dummy_net_zero(actor); + } else { + Player_actor_Item_net_CulcJointAngle_dummy_net_ready(actor); + } +} + +typedef void (*mPlayer_item_net_proc)(ACTOR*); + +static void Player_actor_Item_net_CulcJointAngle_dummy_net(ACTOR* actor) { + static const mPlayer_item_net_proc proc[] = { + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_walk, Player_actor_Item_net_CulcJointAngle_dummy_net_walk, + Player_actor_Item_net_CulcJointAngle_dummy_net_walk, Player_actor_Item_net_CulcJointAngle_dummy_net_zero, + Player_actor_Item_net_CulcJointAngle_dummy_net_zero, Player_actor_Item_net_CulcJointAngle_dummy_net_turn, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_slip, + Player_actor_Item_net_CulcJointAngle_dummy_net_ready, Player_actor_Item_net_CulcJointAngle_dummy_net_ready_walk, + Player_actor_Item_net_CulcJointAngle_dummy_net_swing, Player_actor_Item_net_CulcJointAngle_dummy_net_zero, + Player_actor_Item_net_CulcJointAngle_dummy_net_zero, Player_actor_Item_net_CulcJointAngle_dummy_net_zero, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_walk, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_zero, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + Player_actor_Item_net_CulcJointAngle_dummy_net_reset, + + }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int index = player->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(index) == FALSE || proc[index] == NULL) { + return; + } else { + proc[index](actor); + } +} + +static int Player_actor_Item_main_net_normal(ACTOR* actor, GAME* game) { + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_net_CulcJointAngle_dummy_net(actor); + return 0; +} + +static int Player_actor_Item_main_net_stop(ACTOR* actor, GAME* game) { + int ret = Player_actor_Item_CulcAnimation_Base2(actor); + + Player_actor_Item_net_CulcJointAngle_dummy_net(actor); + return ret; +} + +static void Player_actor_Item_draw_net_After_dummy_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Matrix_rotateXYZ(player->net_angle.x, player->net_angle.y, player->net_angle.z, 1); +} + +typedef void (*mPlayer_item_net_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, + u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); + +static int Player_actor_Item_draw_net_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { + static const mPlayer_item_net_draw_proc proc[] = { + NULL, NULL, NULL, (mPlayer_item_net_draw_proc)Player_actor_Item_draw_net_After_dummy_net, NULL, NULL, + }; + + if (joint_idx >= 0 && joint_idx < 6) { + if (proc[joint_idx] != NULL) { + proc[joint_idx](arg, game, keyframe, joint_shape, joint_flags, joint_rot, joint_pos); + } + } + + return TRUE; +} + +static void Player_actor_Item_draw_net(ACTOR* actor, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Matrix_push(); + Matrix_rotateXYZ(0, 3000, 0, 1); + Matrix_Position_VecZ(&player->net_start_pos, -2400.0f); + Matrix_Position_VecZ(&player->net_end_pos, 5500.0f); + Matrix_Position_VecZ(&player->net_pos, 4000.0f); + Matrix_Position_VecZ(&player->net_top_col_pos, 4000.0f); + Matrix_Position_VecZ(&player->net_bot_col_pos, 4000.0f); + Matrix_pull(); + cKF_Si3_draw_R_SV(&play->game, &player->item_keyframe, player->item_work_mtx[game->frame_counter % 2], NULL, + Player_actor_Item_draw_net_After, &player->actor_class); + player->item_rod_top_pos_set = FALSE; + player->balloon_start_pos_set_flag = FALSE; +} diff --git a/src/m_player_item_rod.c_inc b/src/m_player_item_rod.c_inc new file mode 100644 index 00000000..64d85bdf --- /dev/null +++ b/src/m_player_item_rod.c_inc @@ -0,0 +1,388 @@ +static void Player_actor_Item_Set_Scale_forUki_normal(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + ACTOR* rod = player->fishing_rod_actor_p; + f32 scale = 0.01f; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TAKEOUT_ITEM || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTIN_ITEM) { + scale *= player->item_scale; + } + + if (rod != NULL) { + rod->scale.x = rod->scale.y = rod->scale.z = scale; + } +} + +static void Player_actor_Item_Set_Value_forUki_normal(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 1); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); + Player_actor_Item_Set_Scale_forUki_normal(actor, game); +} + +static int Player_actor_Item_main_rod_normal(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_normal(actor, game); + return 0; +} + +static void Player_actor_Item_Set_Value_forUki_ready(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 2); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +static int Player_actor_Item_main_rod_ready(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_ready(actor); + return 0; +} + +static void Player_actor_Item_Set_CastGoalPoint_forUki_cast(ACTOR* actor, int index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (index == mPlayer_INDEX_CAST_ROD) { + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + rod->cast_goal_point = player->main_data.uki.cast_goal_point; + } + } +} + +static void Player_actor_Item_Set_Value_forUki_cast(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 3); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +static int Player_actor_Item_Check_Status_forUki_cast(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + switch (rod->status) { + case aUKI_STATUS_FLOAT: + case aUKI_STATUS_VIB: + return TRUE; + } + } + + return FALSE; +} + +static int Player_actor_Item_main_rod_cast(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int status; + + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_cast(actor); + status = Player_actor_Item_Check_Status_forUki_cast(actor); + Player_actor_Item_Set_CastGoalPoint_forUki_cast(actor, player->now_main_index); + return status; +} + +static void Player_actor_Item_Set_Value_forUki_air(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 4); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +static int Player_actor_Item_main_rod_air(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_air(actor); + return 0; +} + +static void Player_actor_Item_SetFrame_forUki_relax(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + f32 frame = player->item_keyframe.frame_control.current_frame; + f32 target; + xyz_t pos; + if (rod->status != aUKI_STATUS_CAST) { + f32 end_pos = 2.0f + (61.5f + actor->world.position.y); + + Player_actor_Get_ItemRodVirtualTopPos(actor, &pos); + target = 200.0f + (9.1f * (pos.y - end_pos)); + } else { + target = 180.0f; + } + + add_calc2(&frame, target, 1.0f - sqrtf(0.25f), 360.0f); + Player_actor_Item_SetAnimation_Base(actor, frame); + } +} + +static void Player_actor_Item_Set_Value_forUki_relax(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +static int Player_actor_Item_Check_Status_forUki_relax(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + return rod->status; + } else { + return 6; + } +} + +static int Player_actor_Item_main_rod_relax(ACTOR* actor, GAME* game) { + Player_actor_Item_SetFrame_forUki_relax(actor, game); + Player_actor_Item_Set_Value_forUki_relax(actor); + return Player_actor_Item_Check_Status_forUki_relax(actor); +} + +static void Player_actor_Item_Set_Value_forUki_collect(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 6); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +static int Player_actor_Item_Check_Status_forUki_collect(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + switch (rod->status) { + case 7: + return 0; + } + } + + return 1; +} + +static int Player_actor_Item_main_rod_collect(ACTOR* actor, GAME* game) { + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_collect(actor); + return Player_actor_Item_Check_Status_forUki_collect(actor); +} + +static void Player_actor_Item_SetFrame_forUki_vib(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + f32 frame = player->item_keyframe.frame_control.current_frame; + f32 target; + xyz_t* left_hand; + xyz_t* wpos; + xyz_t pos; + f32 left_hand_len; + f32 wpos_len; + f32 diff; + + left_hand = &player->left_hand_pos; + wpos = &rod->actor_class.world.position; + Player_actor_Get_ItemRodVirtualTopPos(actor, &pos); + left_hand_len = Math3DLengthSquare(left_hand, &pos); + wpos_len = Math3DLengthSquare(wpos, &pos); + + diff = (left_hand_len + wpos_len) - Math3DLengthSquare(wpos, left_hand); + if (diff <= 0.0f) { + target = 180.0f; + } else { + target = 180.0f + (0.01f * diff); + } + + add_calc2(&frame, target, 1.0f - sqrtf(0.25f), 360.0f); + Player_actor_Item_SetAnimation_Base(actor, frame); + } +} + +static void Player_actor_Item_Set_Value_forUki_vib(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 6); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_LeftHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +static int Player_actor_Item_Check_Status_forUki_vib(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + switch (rod->status) { + case 6: + return 1; + } + } + + return 0; +} + +static int Player_actor_Item_main_rod_vib(ACTOR* actor, GAME* game) { + Player_actor_Item_SetFrame_forUki_vib(actor); + Player_actor_Item_Set_Value_forUki_vib(actor); + return Player_actor_Item_Check_Status_forUki_vib(actor); +} + +static void Player_actor_Item_Set_Value_forUki_fly(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 6); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_LeftHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +static int Player_actor_Item_Check_Status_forUki_fly(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + switch (rod->status) { + case 7: + return 1; + } + } + + return 0; +} + +static int Player_actor_Item_main_rod_fly(ACTOR* actor, GAME* game) { + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_fly(actor); + return Player_actor_Item_Check_Status_forUki_fly(actor); +} + +static void Player_actor_Item_Set_GyoeiScale_forUki_putaway(ACTOR* actor, int index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (index == mPlayer_INDEX_PUTAWAY_ROD) { + UKI_ACTOR* rod = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (rod != NULL) { + f32 scale = (30.0f - player->main_data.putaway_uki.unk0) / 30.0f; + + if (scale > 1.0f) { + scale = 1.0f; + } else if (scale < 0.0f) { + scale = 0.0f; + } + + rod->gyo_scale = scale; + } + } +} + +static void Player_actor_Item_Set_Value_forUki_putaway(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_Set_Command_forUki(actor, 5); + Player_actor_Item_Set_RightHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_LeftHandPos_forUki(actor, player->now_main_index); + Player_actor_Item_Set_PosSpeed_forUki(actor); + Player_actor_Item_Set_AngleSpeedY_forUki(actor); + Player_actor_Item_Set_RodTopPos_forUki(actor); +} + +static int Player_actor_Item_main_rod_putaway(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_Item_Set_Value_forUki_putaway(actor); + Player_actor_Item_Set_GyoeiScale_forUki_putaway(actor, player->now_main_index); + return 0; +} + +static void Player_actor_Item_draw_net_After_main4_sao(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Matrix_Position_VecX(&player->item_rod_top_pos, 1050.0f); +} + +typedef void (*mPlayer_item_rod_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, Gfx** joint_shape, + u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); + +static int Player_actor_Item_draw_rod_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { + static const mPlayer_item_net_draw_proc proc[] = { + NULL, NULL, NULL, NULL, (mPlayer_item_rod_draw_proc)Player_actor_Item_draw_net_After_main4_sao, + }; + + if (joint_idx >= 0 && joint_idx < 5) { + if (proc[joint_idx] != NULL) { + proc[joint_idx](arg, game, keyframe, joint_shape, joint_flags, joint_rot, joint_pos); + } + } + + return 1; +} + +static void Player_actor_Item_draw_rod(ACTOR* actor, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Mtx* mtx; + cKF_SkeletonInfo_R_c* keyf; + Mtx* item_mtx; + GRAPH* graph; + + item_mtx = player->item_work_mtx[play->game.frame_counter % 2]; + graph = play->game.graph; + keyf = &player->item_keyframe; + + Matrix_Position_VecZ(&player->item_rod_virtual_top_pos, 6000.0f); + Matrix_push(); + Matrix_RotateZ(player->item_rod_angle_z, 1); + + mtx = _Matrix_to_Mtx_new(play->game.graph); + + if (mtx != NULL) { + OPEN_POLY_OPA_DISP(graph); + + gSPMatrix(POLY_OPA_DISP++, mtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_POLY_OPA_DISP(graph); + + cKF_Si3_draw_R_SV(game, keyf, item_mtx, NULL, Player_actor_Item_draw_rod_After, &player->actor_class); + player->item_rod_top_pos_set = TRUE; + } + + player->balloon_start_pos_set_flag = FALSE; + + Matrix_pull(); +} diff --git a/src/m_player_item_scoop.c_inc b/src/m_player_item_scoop.c_inc new file mode 100644 index 00000000..3fddf37a --- /dev/null +++ b/src/m_player_item_scoop.c_inc @@ -0,0 +1,21 @@ +static int Player_actor_Item_main_scoop_normal(ACTOR* actor, GAME* game) { + return 0; +} + +static void Player_actor_Item_draw_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int type; + + Matrix_push(); + Matrix_Position_VecZ(&player->scoop_pos, 2200.0f); + Matrix_pull(); + + type = player->item_shape_type[player->item_bank_idx]; + + OPEN_POLY_OPA_DISP(game->graph); + gSPDisplayList(POLY_OPA_DISP++, mPlib_Get_Item_DataPointer(type)); + + CLOSE_POLY_OPA_DISP(game->graph); + player->item_rod_top_pos_set = FALSE; + player->balloon_start_pos_set_flag = FALSE; +} diff --git a/src/m_player_item_umbrella.c_inc b/src/m_player_item_umbrella.c_inc new file mode 100644 index 00000000..a47caff7 --- /dev/null +++ b/src/m_player_item_umbrella.c_inc @@ -0,0 +1,17 @@ +static int Player_actor_Item_main_umbrella_normal(ACTOR* actor, GAME* game) { + Player_actor_Get_umbrella_p(actor, game); + return 0; +} + +static void Player_actor_Item_draw_umbrella(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + TOOLS_ACTOR* umbrella = (TOOLS_ACTOR*)Player_actor_Get_umbrella_p(actor, game); + + if (umbrella != NULL) { + Matrix_get(&umbrella->matrix_work); + umbrella->init_matrix = TRUE; + } + + player->item_rod_top_pos_set = FALSE; + player->balloon_start_pos_set_flag = FALSE; +} diff --git a/src/m_player_item_windmill.c_inc b/src/m_player_item_windmill.c_inc new file mode 100644 index 00000000..a172627f --- /dev/null +++ b/src/m_player_item_windmill.c_inc @@ -0,0 +1,179 @@ +static void Player_actor_Item_windmill_CulcParam(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t pos; + + if (player->balloon_start_pos_set_flag != FALSE) { + pos.x = player->other_item_end_pos.x - player->other_item_start_pos.x; + pos.y = player->other_item_end_pos.y - player->other_item_start_pos.y; + pos.z = player->other_item_end_pos.z - player->other_item_start_pos.z; + + } else { + pos = ZeroVec; + } + + if (pos.x != 0.0f || pos.y != 0.0f || pos.z != 0.0f) { + f32 len; + f32 dist; + f32 sq_len; + + len = Math3DVecLengthSquare2D(pos.x, pos.z); + dist = sqrtf(len + (pos.y * pos.y)); + + player->other_item_move_dist = dist; + + sq_len = sqrtf(len); + player->windmill_param.x = atans_table(sq_len, pos.y); + player->windmill_param.y = atans_table(pos.z, pos.x); + + } else { + player->other_item_move_dist = 0.0f; + player->windmill_param.x = 0; + player->windmill_param.y = 0; + } +} +static void Player_actor_Item_windmill_CulcRotationSpeed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int angle_x; + int angle_y; + s16 n_angle_x; + f32 target; + cKF_SkeletonInfo_R_c* kf_p = &player->item_keyframe; + xyz_t* wpos_p = &actor->world.position; + xyz_t* last_wpos_p = &actor->last_world_position; + xyz_t* shape_angle_delta_p = &player->shape_angle_delta; + s_xyz* windmill_angle_p = &player->windmill_angle; + s_xyz* windmill_param_p = &player->windmill_param; + f32 power; + + angle_x = windmill_angle_p->x; + angle_y = windmill_angle_p->y; + target = 0.0f; + + if ((wpos_p->x != last_wpos_p->x || wpos_p->y != last_wpos_p->y || wpos_p->z != last_wpos_p->z || + shape_angle_delta_p->x != 0.0f || shape_angle_delta_p->y != 0.0f || shape_angle_delta_p->z != 0.0f) && + (!mPlib_check_player_actor_main_index_AllWade(game))) { + f32 dist = player->other_item_move_dist; + + if (dist != 0.0f) { + s16 y_diff = (s16)(windmill_param_p->y - angle_y); + s16 x_diff = (s16)(windmill_param_p->x - angle_x); + + target += 0.0f + (8.0f * (dist * (ABS(cos_s(x_diff)) * cos_s(y_diff)))); + } + } + + power = mEnv_GetWindPowerF_Windmill(); + if (power != 0.0f) { + f32 targetm; + s16 wind_angle = (s16)mEnv_GetWindAngleS(); + s16 ty = wind_angle - angle_y; + s16 tx = 0 - angle_x; + + targetm = 10.0f * (power * (cos_s(ty) * ABS(cos_s(tx)))); + if (target * targetm >= 0.0f) { + target += targetm; + } + } + + { + f32 fracmv; + f32 minm; + f32 maxm; + f32 speed; + + fracmv = 0.005f * target; + minm = 0.005f * target; + maxm = 0.03f * target; + + fracmv = ABS(fracmv); + minm = ABS(minm); + maxm = ABS(maxm); + + fracmv += 0.02f; + minm += 0.1f; + maxm += 0.3f; + + speed = kf_p->frame_control.speed; + add_calc(&speed, target, 1.0f - sqrtf(1.0f - fracmv), maxm * 0.5f, minm * 0.5f); + kf_p->frame_control.speed = speed; + } +} + +static int Player_actor_Item_main_windmill_normal(ACTOR* actor, GAME* game) { + Player_actor_Item_windmill_CulcParam(actor); + Player_actor_Item_windmill_CulcRotationSpeed(actor, game); + Player_actor_Item_CulcAnimation_Base(actor); + Player_actor_sound_move_temochi_kazaguruma(actor); + + return 0; +} + +static void Player_actor_Item_draw_windmill_After_kaza1_fan(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s_xyz* angle = &player->windmill_angle; + xyz_t* item_end = &player->other_item_end_pos; + + player->other_item_start_pos = *item_end; + + Matrix_Position_Zero(item_end); + + Matrix_to_rotate_new(get_Matrix_now(), angle, 0); + + angle->x *= -1; + angle->y += 0x8000; +} + +typedef void (*mPlayer_item_windmill_draw_proc)(void* arg, GAME* game, cKF_SkeletonInfo_R_c* keyframe, + Gfx** joint_shape, u8* joint_flags, s_xyz* joint_rot, xyz_t* joint_pos); + +static int Player_actor_Item_draw_windmill_After(GAME* game, cKF_SkeletonInfo_R_c* keyframe, int joint_idx, + Gfx** joint_shape, u8* joint_flags, void* arg, s_xyz* joint_rot, + xyz_t* joint_pos) { + static const mPlayer_item_windmill_draw_proc proc[] = { + NULL, + NULL, + (mPlayer_item_windmill_draw_proc)Player_actor_Item_draw_windmill_After_kaza1_fan, + }; + + if (joint_idx >= 0 && joint_idx < 3) { + if (proc[joint_idx] != NULL) { + proc[joint_idx](arg, game, keyframe, joint_shape, joint_flags, joint_rot, joint_pos); + } + } + + return 1; +} + +static void Player_actor_Item_draw_windmill(ACTOR* actor, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Mtx* mtx; + cKF_SkeletonInfo_R_c* keyf; + Mtx* item_mtx; + GRAPH* graph; + int ang; + + item_mtx = player->item_work_mtx[play->game.frame_counter % 2]; + graph = play->game.graph; + keyf = &player->item_keyframe; + + Matrix_push(); + OPEN_POLY_OPA_DISP(graph); + ang = (s16)(-0.5f * actor->shape_info.rotation.x); + + Matrix_RotateY(ang, 1); + + gSPMatrix(POLY_OPA_DISP++, _Matrix_to_Mtx_new(graph), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW); + + CLOSE_POLY_OPA_DISP(graph); + + cKF_Si3_draw_R_SV(game, keyf, item_mtx, NULL, Player_actor_Item_draw_windmill_After, &player->actor_class); + Matrix_pull(); + + player->item_rod_top_pos_set = FALSE; + + if (player->balloon_start_pos_set_flag == FALSE) { + player->other_item_start_pos = player->other_item_end_pos; + player->balloon_start_pos_set_flag = TRUE; + } +} diff --git a/src/m_player_lib.c b/src/m_player_lib.c new file mode 100644 index 00000000..21c246cf --- /dev/null +++ b/src/m_player_lib.c @@ -0,0 +1,3710 @@ +#include "m_player_lib.h" + +#include "m_play.h" +#include "m_actor.h" +#include "m_common_data.h" +#include "jsyswrap.h" +#include "libultra/libultra.h" +#include "ac_t_umbrella.h" +#include "ac_snowman.h" +#include "ac_uki.h" + +extern cKF_Animation_R_c cKF_ba_r_ply_1_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_walk1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_run1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_push1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_pull1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_Lturn1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_Rturn1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_change1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_putaway1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_open1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_trans_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_transfer1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_open1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_umbrella1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_dash1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_run_slip1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_pull1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_m1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_move_m1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_wait_m1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_a1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup_a1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup_n1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_n1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_net1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_net_swing1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_swing1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kamae_slip_m1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kokeru_getup1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_sitdown1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_sitdown_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_standup1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_m1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_bed_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_inbed_L1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_inbed_R1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_intrain1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_h1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_open_k1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_negaeri_L1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_negaeri_R1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_outbed_L1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_outbed_R1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_outtrain1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_h1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_close_k1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_h1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kagu_wait_k1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_go_out_o1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_go_out_s1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_into_s1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_hane1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_suka1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait_h1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hold_wait_o1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_t1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_t2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_t1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_sao1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_sao_swing1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_turi_hiki1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_turi_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_not_get_t1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_menu_catch1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_menu_change1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_close1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_not_sao_swing1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_intrain_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_clear_table1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_dig1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_fill_up1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_not_dig1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_clear_table_l1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup_l1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_scoop1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_confirm1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_dig_suka1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_putaway_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_dig_kabu1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_fill_up_i1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_send_mail1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_f1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_pull_f1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_get_putaway_f1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_trans_wait_f1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_transfer_f1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_shake1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_tired1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_wash1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_wash2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_wash3; +extern cKF_Animation_R_c cKF_ba_r_ply_1_wash4; +extern cKF_Animation_R_c cKF_ba_r_ply_1_wash5; +extern cKF_Animation_R_c cKF_ba_r_ply_1_fukubiki1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_omairi1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_saisen1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_return_mail3; +extern cKF_Animation_R_c cKF_ba_r_ply_1_eat1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_gaaan1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_gaaan2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_deru1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_guratuku1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_mogaku1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_otiru1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_zassou1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_knock1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_biku1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hati1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hati2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_hati3; +extern cKF_Animation_R_c cKF_ba_r_ply_1_push_yuki1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_deru2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_otiru2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_itazura1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_umb_rot1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_pickup_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_yatta3; +extern cKF_Animation_R_c cKF_ba_r_ply_1_kaza1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_mosquito1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_mosquito2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_ride1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_ride2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_ridewait; +extern cKF_Animation_R_c cKF_ba_r_ply_1_getoff1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_getoff2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_utiwa_wait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_utiwa_d1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_break1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_axe_breakwait1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_light_on1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou2_1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou2_2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou3; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou4_1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou4_2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou5_1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou5_2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou6_1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou6_2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou7_1; +extern cKF_Animation_R_c cKF_ba_r_ply_1_taisou7_2; +extern cKF_Animation_R_c cKF_ba_r_ply_1_omairi_us1; + +extern cKF_Animation_R_c* mPlib_Get_Pointer_Animation(int anim_idx) { + static cKF_Animation_R_c* data[] = { + &cKF_ba_r_ply_1_wait1, + &cKF_ba_r_ply_1_walk1, + &cKF_ba_r_ply_1_axe1, + &cKF_ba_r_ply_1_run1, + &cKF_ba_r_ply_1_push1, + &cKF_ba_r_ply_1_pull1, + &cKF_ba_r_ply_1_hold_wait1, + &cKF_ba_r_ply_1_pickup1, + &cKF_ba_r_ply_1_Lturn1, + &cKF_ba_r_ply_1_Rturn1, + &cKF_ba_r_ply_1_get1, + &cKF_ba_r_ply_1_get_change1, + &cKF_ba_r_ply_1_get_putaway1, + &cKF_ba_r_ply_1_open1, + &cKF_ba_r_ply_1_putaway1, + &cKF_ba_r_ply_1_trans_wait1, + &cKF_ba_r_ply_1_transfer1, + &cKF_ba_r_ply_1_umb_open1, + &cKF_ba_r_ply_1_umbrella1, + &cKF_ba_r_ply_1_dash1, + &cKF_ba_r_ply_1_run_slip1, + &cKF_ba_r_ply_1_get_pull1, + &cKF_ba_r_ply_1_get_m1, + &cKF_ba_r_ply_1_kamae_move_m1, + &cKF_ba_r_ply_1_kamae_wait_m1, + &cKF_ba_r_ply_1_kokeru_a1, + &cKF_ba_r_ply_1_kokeru_getup_a1, + &cKF_ba_r_ply_1_kokeru_getup_n1, + &cKF_ba_r_ply_1_kokeru_n1, + &cKF_ba_r_ply_1_net1, + &cKF_ba_r_ply_1_net_swing1, + &cKF_ba_r_ply_1_axe_swing1, + &cKF_ba_r_ply_1_kamae_slip_m1, + &cKF_ba_r_ply_1_kokeru1, + &cKF_ba_r_ply_1_kokeru_getup1, + &cKF_ba_r_ply_1_sitdown1, + &cKF_ba_r_ply_1_sitdown_wait1, + &cKF_ba_r_ply_1_standup1, + &cKF_ba_r_ply_1_putaway_m1, + &cKF_ba_r_ply_1_bed_wait1, + &cKF_ba_r_ply_1_inbed_L1, + &cKF_ba_r_ply_1_inbed_R1, + &cKF_ba_r_ply_1_intrain1, + &cKF_ba_r_ply_1_kagu_open_d1, + &cKF_ba_r_ply_1_kagu_open_h1, + &cKF_ba_r_ply_1_kagu_open_k1, + &cKF_ba_r_ply_1_negaeri_L1, + &cKF_ba_r_ply_1_negaeri_R1, + &cKF_ba_r_ply_1_outbed_L1, + &cKF_ba_r_ply_1_outbed_R1, + &cKF_ba_r_ply_1_outtrain1, + &cKF_ba_r_ply_1_kagu_close_d1, + &cKF_ba_r_ply_1_kagu_close_h1, + &cKF_ba_r_ply_1_kagu_close_k1, + &cKF_ba_r_ply_1_kagu_wait_d1, + &cKF_ba_r_ply_1_kagu_wait_h1, + &cKF_ba_r_ply_1_kagu_wait_k1, + &cKF_ba_r_ply_1_go_out_o1, + &cKF_ba_r_ply_1_go_out_s1, + &cKF_ba_r_ply_1_into_s1, + &cKF_ba_r_ply_1_axe_hane1, + &cKF_ba_r_ply_1_axe_suka1, + &cKF_ba_r_ply_1_hold_wait_h1, + &cKF_ba_r_ply_1_hold_wait_o1, + &cKF_ba_r_ply_1_get_t1, + &cKF_ba_r_ply_1_get_t2, + &cKF_ba_r_ply_1_putaway_t1, + &cKF_ba_r_ply_1_sao1, + &cKF_ba_r_ply_1_sao_swing1, + &cKF_ba_r_ply_1_turi_hiki1, + &cKF_ba_r_ply_1_turi_wait1, + &cKF_ba_r_ply_1_not_get_t1, + &cKF_ba_r_ply_1_menu_catch1, + &cKF_ba_r_ply_1_menu_change1, + &cKF_ba_r_ply_1_umb_close1, + &cKF_ba_r_ply_1_not_sao_swing1, + &cKF_ba_r_ply_1_intrain_wait1, + &cKF_ba_r_ply_1_clear_table1, + &cKF_ba_r_ply_1_dig1, + &cKF_ba_r_ply_1_fill_up1, + &cKF_ba_r_ply_1_not_dig1, + &cKF_ba_r_ply_1_clear_table_l1, + &cKF_ba_r_ply_1_pickup_l1, + &cKF_ba_r_ply_1_scoop1, + &cKF_ba_r_ply_1_confirm1, + &cKF_ba_r_ply_1_dig_suka1, + &cKF_ba_r_ply_1_get_d1, + &cKF_ba_r_ply_1_putaway_d1, + &cKF_ba_r_ply_1_dig_kabu1, + &cKF_ba_r_ply_1_fill_up_i1, + &cKF_ba_r_ply_1_send_mail1, + &cKF_ba_r_ply_1_get_f1, + &cKF_ba_r_ply_1_get_pull_f1, + &cKF_ba_r_ply_1_get_putaway_f1, + &cKF_ba_r_ply_1_trans_wait_f1, + &cKF_ba_r_ply_1_transfer_f1, + &cKF_ba_r_ply_1_shake1, + &cKF_ba_r_ply_1_tired1, + &cKF_ba_r_ply_1_wash1, + &cKF_ba_r_ply_1_wash2, + &cKF_ba_r_ply_1_wash3, + &cKF_ba_r_ply_1_wash4, + &cKF_ba_r_ply_1_wash5, + &cKF_ba_r_ply_1_fukubiki1, + &cKF_ba_r_ply_1_omairi1, + &cKF_ba_r_ply_1_saisen1, + &cKF_ba_r_ply_1_return_mail1, + &cKF_ba_r_ply_1_return_mail2, + &cKF_ba_r_ply_1_return_mail3, + &cKF_ba_r_ply_1_eat1, + &cKF_ba_r_ply_1_gaaan1, + &cKF_ba_r_ply_1_gaaan2, + &cKF_ba_r_ply_1_deru1, + &cKF_ba_r_ply_1_guratuku1, + &cKF_ba_r_ply_1_mogaku1, + &cKF_ba_r_ply_1_otiru1, + &cKF_ba_r_ply_1_zassou1, + &cKF_ba_r_ply_1_knock1, + &cKF_ba_r_ply_1_biku1, + &cKF_ba_r_ply_1_hati1, + &cKF_ba_r_ply_1_hati2, + &cKF_ba_r_ply_1_hati3, + &cKF_ba_r_ply_1_push_yuki1, + &cKF_ba_r_ply_1_deru2, + &cKF_ba_r_ply_1_otiru2, + &cKF_ba_r_ply_1_itazura1, + &cKF_ba_r_ply_1_umb_rot1, + &cKF_ba_r_ply_1_pickup_wait1, + &cKF_ba_r_ply_1_yatta1, + &cKF_ba_r_ply_1_yatta2, + &cKF_ba_r_ply_1_yatta3, + &cKF_ba_r_ply_1_kaza1, + &cKF_ba_r_ply_1_mosquito1, + &cKF_ba_r_ply_1_mosquito2, + &cKF_ba_r_ply_1_ride1, + &cKF_ba_r_ply_1_ride2, + &cKF_ba_r_ply_1_ridewait, + &cKF_ba_r_ply_1_getoff1, + &cKF_ba_r_ply_1_getoff2, + &cKF_ba_r_ply_1_utiwa_wait1, + &cKF_ba_r_ply_1_utiwa_d1, + &cKF_ba_r_ply_1_axe_break1, + &cKF_ba_r_ply_1_axe_breakwait1, + &cKF_ba_r_ply_1_light_on1, + &cKF_ba_r_ply_1_taisou1, + &cKF_ba_r_ply_1_taisou2_1, + &cKF_ba_r_ply_1_taisou2_2, + &cKF_ba_r_ply_1_taisou3, + &cKF_ba_r_ply_1_taisou4_1, + &cKF_ba_r_ply_1_taisou4_2, + &cKF_ba_r_ply_1_taisou5_1, + &cKF_ba_r_ply_1_taisou5_2, + &cKF_ba_r_ply_1_taisou6_1, + &cKF_ba_r_ply_1_taisou6_2, + &cKF_ba_r_ply_1_taisou7_1, + &cKF_ba_r_ply_1_taisou7_2, + &cKF_ba_r_ply_1_omairi_us1, + }; + + if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM && data[anim_idx] != NULL) { + return data[anim_idx]; + } + + return NULL; +} + +extern int mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(int item_kind) { + if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) { + // clang-format off + static const u8 data[] = { + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_AXE1, + mPlayer_ANIM_NET1, + mPlayer_ANIM_NET1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_UMBRELLA1, + mPlayer_ANIM_SAO1, + mPlayer_ANIM_SAO1, + mPlayer_ANIM_SCOOP1, + mPlayer_ANIM_SCOOP1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_KAZA1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_UTIWA_WAIT1, + mPlayer_ANIM_WAIT1, + }; + // clang-format on + + return data[item_kind]; + } + + return -1; +} + +extern int mPlib_Get_BasicPartTableIndex_fromAnimeIndex(int anim_idx) { + if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) { + // clang-format off + static const s8 data[] = { + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_AXE, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_AXE, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_AXE, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_PICK_UP, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_NET, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + mPlayer_PART_TABLE_NORMAL, + }; + // clang-format on + + return data[anim_idx]; + } + + return -1; +} + +extern Gfx tol_axe_1_model[]; +extern Gfx tol_axe_1_b_model[]; +extern Gfx tol_axe_1_c_model[]; +extern Gfx tol_axe_2_model[]; +extern cKF_Skeleton_R_c cKF_bs_r_tol_net_1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_net_2; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_get_m1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_net_swing1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kamae_main_m1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kokeru_getup_n1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_kokeru_n1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_swing_wait1; +extern cKF_Animation_R_c cKF_ba_r_tol_net_1_yatta_m1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_sao_1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_sao_2; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_get_t1; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_move1; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_sinari1; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_swing1; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_sao_wait1; +extern cKF_Animation_R_c cKF_ba_r_tol_sao_1_not_sao_swing1; +extern Gfx tol_scoop_1_model[]; +extern Gfx tol_scoop_2_model[]; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon2; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon3; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon4; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon5; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon6; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon7; +extern cKF_Skeleton_R_c cKF_bs_r_tol_balloon8; +extern cKF_Animation_R_c cKF_ba_r_tol_balloon1_wait; +extern cKF_Animation_R_c cKF_ba_r_tol_balloon1_gyaza1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza1; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza2; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza3; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza4; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza5; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza6; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza7; +extern cKF_Skeleton_R_c cKF_bs_r_tol_kaza8; +extern cKF_Animation_R_c cKF_ba_r_tol_kaza1_wait; +extern Gfx tol_fan1_model[]; +extern Gfx tol_fan2_model[]; +extern Gfx tol_fan3_model[]; +extern Gfx tol_fan4_model[]; +extern Gfx tol_fan5_model[]; +extern Gfx tol_fan6_model[]; +extern Gfx tol_fan7_model[]; +extern Gfx tol_fan8_model[]; + +extern void* mPlib_Get_Item_DataPointer(int data_kind) { + if (mPlayer_ITEM_DATA_VALID(data_kind)) { + static void* mPlib_Item_DataPointer[] = { + tol_axe_1_model, + tol_axe_1_b_model, + tol_axe_1_c_model, + tol_axe_2_model, + &cKF_bs_r_tol_net_1, + &cKF_bs_r_tol_net_2, + &cKF_ba_r_tol_net_1_get_m1, + &cKF_ba_r_tol_net_1_net_swing1, + &cKF_ba_r_tol_net_1_kamae_main_m1, + &cKF_ba_r_tol_net_1_kokeru_getup_n1, + &cKF_ba_r_tol_net_1_kokeru_n1, + &cKF_ba_r_tol_net_1_swing_wait1, + &cKF_ba_r_tol_net_1_yatta_m1, + &cKF_bs_r_tol_sao_1, + &cKF_bs_r_tol_sao_2, + &cKF_ba_r_tol_sao_1_sao_get_t1, + &cKF_ba_r_tol_sao_1_sao_move1, + &cKF_ba_r_tol_sao_1_sao_sinari1, + &cKF_ba_r_tol_sao_1_sao_swing1, + &cKF_ba_r_tol_sao_1_sao_wait1, + &cKF_ba_r_tol_sao_1_not_sao_swing1, + tol_scoop_1_model, + tol_scoop_2_model, + &cKF_bs_r_tol_balloon1, + &cKF_bs_r_tol_balloon2, + &cKF_bs_r_tol_balloon3, + &cKF_bs_r_tol_balloon4, + &cKF_bs_r_tol_balloon5, + &cKF_bs_r_tol_balloon6, + &cKF_bs_r_tol_balloon7, + &cKF_bs_r_tol_balloon8, + &cKF_ba_r_tol_balloon1_wait, + &cKF_ba_r_tol_balloon1_gyaza1, + &cKF_bs_r_tol_kaza1, + &cKF_bs_r_tol_kaza2, + &cKF_bs_r_tol_kaza3, + &cKF_bs_r_tol_kaza4, + &cKF_bs_r_tol_kaza5, + &cKF_bs_r_tol_kaza6, + &cKF_bs_r_tol_kaza7, + &cKF_bs_r_tol_kaza8, + &cKF_ba_r_tol_kaza1_wait, + tol_fan1_model, + tol_fan2_model, + tol_fan3_model, + tol_fan4_model, + tol_fan5_model, + tol_fan6_model, + tol_fan7_model, + tol_fan8_model, + }; + + return mPlib_Item_DataPointer[data_kind]; + } + + return NULL; +} + +extern int mPlib_Get_BasicItemShapeIndex_fromItemKind(int item_kind) { + if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) { + // clang-format off + static const s8 data[] = { + mPlayer_ITEM_DATA_AXE, + mPlayer_ITEM_DATA_AXE, + mPlayer_ITEM_DATA_AXE_B, + mPlayer_ITEM_DATA_AXE_B, + mPlayer_ITEM_DATA_AXE_B, + mPlayer_ITEM_DATA_AXE_C, + mPlayer_ITEM_DATA_AXE_C, + mPlayer_ITEM_DATA_AXE_C, + mPlayer_ITEM_DATA_GOLD_AXE, + mPlayer_ITEM_DATA_NET, + mPlayer_ITEM_DATA_GOLD_NET, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + mPlayer_ITEM_DATA_ROD, + mPlayer_ITEM_DATA_GOLD_ROD, + mPlayer_ITEM_DATA_SHOVEL, + mPlayer_ITEM_DATA_GOLD_SHOVEL, + mPlayer_ITEM_DATA_BALLOON1, + mPlayer_ITEM_DATA_BALLOON2, + mPlayer_ITEM_DATA_BALLOON3, + mPlayer_ITEM_DATA_BALLOON4, + mPlayer_ITEM_DATA_BALLOON5, + mPlayer_ITEM_DATA_BALLOON6, + mPlayer_ITEM_DATA_BALLOON7, + mPlayer_ITEM_DATA_BALLOON8, + mPlayer_ITEM_DATA_PINWHEEL1, + mPlayer_ITEM_DATA_PINWHEEL2, + mPlayer_ITEM_DATA_PINWHEEL3, + mPlayer_ITEM_DATA_PINWHEEL4, + mPlayer_ITEM_DATA_PINWHEEL5, + mPlayer_ITEM_DATA_PINWHEEL6, + mPlayer_ITEM_DATA_PINWHEEL7, + mPlayer_ITEM_DATA_PINWHEEL8, + mPlayer_ITEM_DATA_FAN1, + mPlayer_ITEM_DATA_FAN2, + mPlayer_ITEM_DATA_FAN3, + mPlayer_ITEM_DATA_FAN4, + mPlayer_ITEM_DATA_FAN5, + mPlayer_ITEM_DATA_FAN6, + mPlayer_ITEM_DATA_FAN7, + mPlayer_ITEM_DATA_FAN8, + 0x00, + }; + // clang-format on + + return data[item_kind]; + } + + return -1; +} + +extern int mPlib_Get_BasicItemAnimeIndex_fromItemKind(int item_kind) { + if (item_kind >= 0 && item_kind < (mPlayer_ITEM_KIND_NUM + 1)) { + // clang-format off + static const s8 data[] = { + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + mPlayer_ITEM_DATA_KAMAE_MAIN_M, + mPlayer_ITEM_DATA_KAMAE_MAIN_M, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + -1, + mPlayer_ITEM_DATA_ROD_WAIT, + mPlayer_ITEM_DATA_ROD_WAIT, + -1, + -1, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_BALLOON_GYAZA, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + mPlayer_ITEM_DATA_PINWHEEL_WAIT, + -1, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00, + 0x00 + }; + // clang-format on + + return data[item_kind]; + } + + return -1; +} + +extern u8 mPlib_Get_Item_DataPointerType(int data_idx) { + if (data_idx >= 0 && data_idx < mPlayer_ITEM_DATA_NUM) { + // clang-format off + static const u8 mPlib_Item_DataPointerType[] = { + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_NET_ANIMATION, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_ROD_ANIMATION, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION, + mPlayer_ITEM_DATA_TYPE_BALLOON_ANIMATION, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_SKELETON, + mPlayer_ITEM_DATA_TYPE_PINWHEEL_ANIMATION, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + mPlayer_ITEM_DATA_TYPE_GFX, + }; + // clang-format on + + return mPlib_Item_DataPointerType[data_idx]; + } + + return mPlayer_ITEM_DATA_TYPE_GFX; +} + +static u32 mPlib_Get_UseFaceRom_index(int sex, int face_type, int swell, int decoy, int res_type) { + int swell_flag = swell != FALSE; + int decoy_flag = decoy != FALSE; + int ofs; + + if (res_type != mPlayer_USE_FACE_ROM_TYPE_TEX) { + ofs = face_type * 8; + ofs += sex * 64; + ofs += swell_flag * 128; + } else { + ofs = decoy_flag * 32; + ofs += face_type; + ofs += sex * 8; + ofs += swell_flag * 16; + } + + return ofs; +} + +static u32 mPlib_Get_UseFaceTexRom_p_common(int sex, int face_type, int swell, int decoy) { + u32 idx = mPlib_Get_UseFaceRom_index(sex, face_type, swell, decoy, mPlayer_USE_FACE_ROM_TYPE_TEX); + u32 base_address = JW_GetAramAddress(RESOURCE_FACE_BOY); + + return base_address + idx * 0xE20; +} + +static u32 mPlib_Get_UseFaceTexRom_p(void) { + return mPlib_Get_UseFaceTexRom_p_common(Now_Private->gender, Now_Private->face, Common_Get(player_bee_swell_flag), + Common_Get(player_decoy_flag)); +} + +static u32 mPlib_Get_UseFacePalletRom_p(void) { + int sunburn_rank = Now_Private->sunburn.rank; + int decoy_flag = Common_Get(player_decoy_flag); + u32 base; + u32 ofs; + + if (sunburn_rank > 0 && decoy_flag == FALSE) { + u32 idx = mPlib_Get_UseFaceRom_index(Now_Private->gender, Now_Private->face, Common_Get(player_bee_swell_flag), + FALSE, mPlayer_USE_FACE_ROM_TYPE_PAL); + + base = mPlib_Get_UseFaceTexRom_p_common(mPr_SEX_FEMALE, mPr_FACE_TYPE7, TRUE, TRUE); + ofs = 0xE00 + (sunburn_rank + idx) * 0x20; + } else { + base = mPlib_Get_UseFaceTexRom_p(); + ofs = 0xE00; + } + + return base + ofs; +} + +extern void mPlib_Object_Exchange_keep_new_PlayerMdl(GAME_PLAY* play) { + Actor_data* player_data = play->player_data; + + actor_dlftbls[player_data->profile].profile->obj_bank_id = mPlib_get_player_Object_Bank(); +} + +static int mPlib_Object_Exchange_keep_new(GAME_PLAY* play, s16 bank, u32 src, u32 size, int aram_flag) { + Object_Exchange_c* obj_ex = &play->object_exchange; + Object_Bank_c* bank_p = &obj_ex->banks[obj_ex->bank_idx]; + + bank_p->bank_id = bank; + bank_p->dma_start = obj_ex->next_bank_ram_address; + bank_p->ram_start = obj_ex->next_bank_ram_address; + bank_p->size = size; + + if (src != 0) { + if (aram_flag) { + _JW_GetResourceAram(src, (u8*)bank_p->dma_start, size); + } else { + bcopy((void*)src, bank_p->dma_start, size); + } + + DCStoreRangeNoSync(bank_p->ram_start, size); + } + + if (obj_ex->bank_idx < (mSc_OBJECT_BANK_NUM - 1)) { + obj_ex->next_bank_ram_address = (char*)ALIGN_NEXT((u32)obj_ex->next_bank_ram_address + size, 32); + obj_ex->bank_idx++; + } + + return mSc_bank_regist_check(obj_ex, bank); +} + +static int Player_bank_ID_Index = 0; + +static int Change_Player_bank_ID_Index(void) { + Player_bank_ID_Index ^= 1; + return Player_bank_ID_Index; +} + +static int Player_face_bank_ID_Index = 0; + +static int Change_Player_face_bank_ID_Index(void) { + Player_face_bank_ID_Index ^= 1; + return Player_face_bank_ID_Index; +} + +extern u32 mPlib_Get_PlayerTexRom_p(int idx) { + if (mPlib_Check_PlayerClothInAram(idx)) { + u32 addr = JW_GetAramAddress(RESOURCE_TEX_BOY); + addr += idx * mNW_DESIGN_TEX_SIZE; + return addr; + } else { + int org_idx = idx - (CLOTH_NUM + 1); + + if (!mPr_ORIGINAL_DESIGN_IDX_VALID(org_idx)) { + org_idx = 0; + } + + return (u32)Now_Private->my_org[org_idx & 7].design.data; + } +} + +static u32 mPlib_Get_UseTexRom_p(void) { + return mPlib_Get_PlayerTexRom_p(Now_Private->cloth.idx); +} + +static int Player_Tex_bank_ID[] = { -1, -1 }; + +extern void mPlib_Object_Exchange_keep_new_PlayerTex(GAME_PLAY* play, int bank_idx, int bank) { + u32 tex = mPlib_Get_UseTexRom_p(); + int idx = mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_14, tex, mNW_DESIGN_TEX_SIZE, + mPlib_Check_PlayerClothInAram(Now_Private->cloth.idx)); + + Player_Tex_bank_ID[bank_idx] = bank + idx; +} + +extern u32 mPlib_Get_PlayerPalletRom_p(int idx) { + if (mPlib_Check_PlayerClothInAram(idx)) { + u32 addr = JW_GetAramAddress(RESOURCE_PALLET_BOY); + addr += idx * mNW_PALETTE_SIZE; + return addr; + } else { + int org_idx = idx - (CLOTH_NUM + 1); + + if (!mPr_ORIGINAL_DESIGN_IDX_VALID(org_idx)) { + org_idx = 0; + } + + return (u32)mNW_PaletteIdx2Palette(Now_Private->my_org[org_idx & 7].palette); + } +} + +static u32 mPlib_Get_UsePalletRom_p(void) { + return mPlib_Get_PlayerPalletRom_p(Now_Private->cloth.idx); +} + +static int Player_Pallet_bank_ID[] = { -1, -1 }; + +extern void mPlib_Object_Exchange_keep_new_PlayerPallet(GAME_PLAY* play, int bank_idx, int bank) { + u32 pal = mPlib_Get_UsePalletRom_p(); + + Player_Pallet_bank_ID[bank_idx] = + bank + mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_15, pal, mNW_PALETTE_SIZE, + mPlib_Check_PlayerClothInAram(Now_Private->cloth.idx)); +} + +extern int mPlib_Check_PlayerClothInAram(int idx) { + if (idx < (CLOTH_NUM + 1)) { + return TRUE; + } + + return FALSE; +} + +static int Player_face_tex_bank_ID = -1; + +extern void mPlib_Object_Exchange_keep_new_PlayerFaceTex(GAME_PLAY* play) { + Player_face_tex_bank_ID = mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_52, 0, 0xE00, TRUE); +} + +static int Player_face_pallet_bank_ID[] = { -1, -1 }; + +extern void mPlib_Object_Exchange_keep_new_PlayerFacePallet(GAME_PLAY* play, int bank, int bank_idx) { + Player_face_pallet_bank_ID[bank_idx] = + bank + mPlib_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_52, 0, mNW_PALETTE_SIZE, TRUE); +} + +extern void mPlib_Object_Exchange_keep_Player_dt(GAME_PLAY* play) { + Player_face_tex_bank_ID = -1; + Player_face_pallet_bank_ID[0] = -1; + Player_face_pallet_bank_ID[1] = -1; + Player_bank_ID_Index = 0; + Player_face_bank_ID_Index = 0; + Player_Tex_bank_ID[0] = -1; + Player_Tex_bank_ID[1] = -1; + Player_Pallet_bank_ID[0] = -1; + Player_Pallet_bank_ID[1] = -1; +} + +extern u8* mPlib_get_player_tex_p(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Object_Exchange_c* obj_ex = &play->object_exchange; + int bank_no = Player_Tex_bank_ID[Player_bank_ID_Index]; + + if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) { + return (u8*)obj_ex->banks[bank_no].ram_start; + } + + return NULL; +} + +extern u16* mPlib_get_player_pallet_p(GAME* game) { + u8* tex_p = mPlib_get_player_tex_p(game); + + if (tex_p != NULL) { + tex_p = tex_p + mNW_DESIGN_TEX_SIZE; + } + + return (u16*)tex_p; +} + +extern u8* mPlib_get_player_face_p(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Object_Exchange_c* obj_ex = &play->object_exchange; + int bank_no = Player_face_tex_bank_ID; + + if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) { + return (u8*)obj_ex->banks[bank_no].ram_start; + } + + return NULL; +} + +extern u16* mPlib_get_player_face_pallet_p(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Object_Exchange_c* obj_ex = &play->object_exchange; + int bank_no = Player_face_pallet_bank_ID[Player_face_bank_ID_Index]; + + if (bank_no >= 0 && obj_ex->banks[bank_no].bank_id > 0) { + return (u16*)obj_ex->banks[bank_no].ram_start; + } + + return NULL; +} + +extern void mPlib_change_player_cloth(GAME* game, u16 cloth_idx) { + int idx = cloth_idx; + Change_Player_bank_ID_Index(); + + { + u8* player_tex_p = mPlib_get_player_tex_p(game); + u32 player_tex_rom_p = mPlib_Get_PlayerTexRom_p(idx); + + if (mPlib_Check_PlayerClothInAram(idx)) { + _JW_GetResourceAram(player_tex_rom_p, player_tex_p, mNW_DESIGN_TEX_SIZE); + } else { + bcopy((u8*)player_tex_rom_p, player_tex_p, mNW_DESIGN_TEX_SIZE); + } + + DCStoreRangeNoSync(player_tex_p, mNW_DESIGN_TEX_SIZE); + } + + { + u16* player_pallet_p = mPlib_get_player_pallet_p(game); + u32 player_pallet_rom_p = mPlib_Get_PlayerPalletRom_p(idx); + + if (mPlib_Check_PlayerClothInAram(idx)) { + _JW_GetResourceAram(player_pallet_rom_p, (u8*)player_pallet_p, mNW_PALETTE_SIZE); + } else { + bcopy((u16*)player_pallet_rom_p, player_pallet_p, mNW_PALETTE_SIZE); + } + + DCStoreRangeNoSync(player_pallet_p, mNW_PALETTE_SIZE); + } +} + +extern void mPlib_change_player_face_pallet(GAME* game) { + Change_Player_face_bank_ID_Index(); + + { + u16* player_face_pallet_p = mPlib_get_player_face_pallet_p(game); + u32 player_face_pallet_rom_p = mPlib_Get_UseFacePalletRom_p(); + + if (player_face_pallet_p != NULL && player_face_pallet_rom_p != 0) { + _JW_GetResourceAram(player_face_pallet_rom_p, (u8*)player_face_pallet_p, mNW_PALETTE_SIZE); + DCStoreRangeNoSync(player_face_pallet_p, mNW_PALETTE_SIZE); + } + } +} + +extern void mPlib_change_player_face(GAME* game) { + u8* player_face_p = mPlib_get_player_face_p(game); + u32 player_face_rom_p = mPlib_Get_UseFaceTexRom_p(); + + if (player_face_p != NULL && player_face_rom_p != 0) { + _JW_GetResourceAram(player_face_rom_p, player_face_p, 0xE00); + DCStoreRangeNoSync(player_face_p, 0xE00); + } + + mPlib_change_player_face_pallet(game); +} + +extern PLAYER_ACTOR* get_player_actor_withoutCheck(GAME_PLAY* play) { + return (PLAYER_ACTOR*)&play->actor_info.list[ACTOR_PART_PLAYER].actor[0]; +} + +static int mPlib_check_DynamicLinkFile_m_player(void) { + return SubmenuArea_IsPlayer() != FALSE; +} + +extern int mPlib_get_player_actor_main_index(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->now_main_index; +} + +extern int mPlib_get_player_actor_request_main_index(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->requested_main_index_changed) { + return player->requested_main_index; + } + + return -1; +} + +extern cKF_Skeleton_R_c cKF_bs_r_boy_1; +extern cKF_Skeleton_R_c cKF_bs_r_grl_1; + +extern cKF_Skeleton_R_c* mPlib_get_player_mdl_p(void) { + if (Now_Private->gender == mPr_SEX_MALE) { + return &cKF_bs_r_boy_1; + } else { + return &cKF_bs_r_grl_1; + } +} + +extern s16 mPlib_get_player_Object_Bank(void) { + if (Now_Private->gender == mPr_SEX_MALE) { + return ACTOR_OBJ_BANK_8; + } else { + return ACTOR_OBJ_BANK_51; + } +} + +extern s8 BOY_part_data[][mPlayer_JOINT_NUM + 1]; + +extern void mPlib_DMA_player_Part_Table(s8* part_table_p, int idx) { + if (idx >= 0 && idx < mPlayer_PART_TABLE_NUM) { + bcopy(&BOY_part_data[idx], part_table_p, sizeof(BOY_part_data[idx])); + } +} + +extern void mPlib_change_player_cloth_info(mPr_cloth_c* cloth_p, mActor_name_t item) { + cloth_p->item = item; + cloth_p->idx = ITEM_IS_CLOTH(item) ? (item - ITM_CLOTH_START) : 0; +} + +extern void mPlib_change_player_cloth_info_lv2(Private_c* priv, mActor_name_t item) { + mPlib_change_player_cloth_info(&priv->cloth, item); +} + +extern void mPlib_Load_PlayerTexAndPallet(void* tex_p, void* pal_p, int idx) { + if (idx >= 0 && idx < (CLOTH_NUM + 1 + mPr_ORIGINAL_DESIGN_COUNT) && tex_p != NULL && pal_p != NULL) { + u32 tex_rom_p = mPlib_Get_PlayerTexRom_p(idx); + u32 pal_rom_p = mPlib_Get_PlayerPalletRom_p(idx); + + if (mPlib_Check_PlayerClothInAram(idx)) { + _JW_GetResourceAram(tex_rom_p, (u8*)tex_p, mNW_DESIGN_TEX_SIZE); + _JW_GetResourceAram(pal_rom_p, (u8*)pal_p, mNW_PALETTE_SIZE); + } else { + bcopy((u8*)tex_rom_p, tex_p, mNW_DESIGN_TEX_SIZE); + bcopy((u16*)pal_rom_p, pal_p, mNW_PALETTE_SIZE); + } + + DCStoreRangeNoSync(tex_p, mNW_DESIGN_TEX_SIZE); + DCStoreRangeNoSync(pal_p, mNW_PALETTE_SIZE); + } +} + +static mPlayer_change_data_from_submenu_c change_data_from_submenu; + +extern mPlayer_change_data_from_submenu_c* mPlib_Get_change_data_from_submenu_p(void) { + return &change_data_from_submenu; +} + +extern void mPlib_Clear_change_data_from_submenu(void) { + bzero(&change_data_from_submenu, sizeof(change_data_from_submenu)); +} + +extern void mPlib_request_main_give_from_submenu(mActor_name_t item, int after_mode, int present_flag, + int surface_flag) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_give_c* req_give_p = &change_data_from_submenu_p->request_main_data.give; + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_GIVE; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_give_p->item = item; + req_give_p->mode = after_mode; + req_give_p->present_flag = present_flag; + req_give_p->on_surface_flag = surface_flag; +} + +extern void mPlib_request_main_putin_scoop_from_submenu(const xyz_t* pos_p, mActor_name_t item, int gold_scoop_flag) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_putin_scoop_c* req_putin_scoop_p = &change_data_from_submenu_p->request_main_data.putin_scoop; + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_PUTIN_SCOOP; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_putin_scoop_p->dig_pos = *pos_p; + req_putin_scoop_p->item = item; + req_putin_scoop_p->get_gold_scoop_flag = gold_scoop_flag; +} + +extern void mPlib_request_main_release_creature_gyoei_from_submenu(s16 angle_y, s16 item, int gold_scoop_flag) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_release_creature_c* req_release_creature_p = + &change_data_from_submenu_p->request_main_data.release_creature; + mPlayer_request_release_creature_gyoei_c* release_gyoei_p = &req_release_creature_p->data.gyoei; + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_release_creature_p->type = mPlayer_CREATURE_GYOEI; + req_release_creature_p->gold_scoop_flag = gold_scoop_flag; + + release_gyoei_p->angle_y = angle_y; + release_gyoei_p->_02 = item; +} + +extern void mPlib_request_main_release_creature_insect_from_submenu(int insect_type, int gold_scoop_flag) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_release_creature_c* req_release_creature_p = + &change_data_from_submenu_p->request_main_data.release_creature; + mPlayer_request_release_creature_insect_c* release_insect_p = &req_release_creature_p->data.insect; + ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR(); + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_release_creature_p->type = mPlayer_CREATURE_INSECT; + req_release_creature_p->gold_scoop_flag = gold_scoop_flag; + + release_insect_p->pos.x = actorx->world.position.x + 7.0f * sin_s(actorx->shape_info.rotation.y); + release_insect_p->pos.y = actorx->world.position.y + 13.0f; + release_insect_p->pos.z = actorx->world.position.z + 7.0f * cos_s(actorx->shape_info.rotation.y); + release_insect_p->type = insect_type; +} + +extern s8 mPlib_Get_ItemNoToItemKind(mActor_name_t itemNo) { + switch (itemNo) { + case ITM_NET: + return mPlayer_ITEM_KIND_NET; + case ITM_GOLDEN_NET: + return mPlayer_ITEM_KIND_GOLD_NET; + case ITM_AXE: + return mPlayer_ITEM_KIND_AXE; + case ITM_AXE_USE_1: + return mPlayer_ITEM_KIND_AXE_USE_1; + case ITM_AXE_USE_2: + return mPlayer_ITEM_KIND_AXE_USE_2; + case ITM_AXE_USE_3: + return mPlayer_ITEM_KIND_AXE_USE_3; + case ITM_AXE_USE_4: + return mPlayer_ITEM_KIND_AXE_USE_4; + case ITM_AXE_USE_5: + return mPlayer_ITEM_KIND_AXE_USE_5; + case ITM_AXE_USE_6: + return mPlayer_ITEM_KIND_AXE_USE_6; + case ITM_AXE_USE_7: + return mPlayer_ITEM_KIND_AXE_USE_7; + case ITM_GOLDEN_AXE: + return mPlayer_ITEM_KIND_GOLD_AXE; + case ITM_UMBRELLA00: + return mPlayer_ITEM_KIND_UMBRELLA00; + case ITM_UMBRELLA01: + return mPlayer_ITEM_KIND_UMBRELLA01; + case ITM_UMBRELLA02: + return mPlayer_ITEM_KIND_UMBRELLA02; + case ITM_UMBRELLA03: + return mPlayer_ITEM_KIND_UMBRELLA03; + case ITM_UMBRELLA04: + return mPlayer_ITEM_KIND_UMBRELLA04; + case ITM_UMBRELLA05: + return mPlayer_ITEM_KIND_UMBRELLA05; + case ITM_UMBRELLA06: + return mPlayer_ITEM_KIND_UMBRELLA06; + case ITM_UMBRELLA07: + return mPlayer_ITEM_KIND_UMBRELLA07; + case ITM_UMBRELLA08: + return mPlayer_ITEM_KIND_UMBRELLA08; + case ITM_UMBRELLA09: + return mPlayer_ITEM_KIND_UMBRELLA09; + case ITM_UMBRELLA10: + return mPlayer_ITEM_KIND_UMBRELLA10; + case ITM_UMBRELLA11: + return mPlayer_ITEM_KIND_UMBRELLA11; + case ITM_UMBRELLA12: + return mPlayer_ITEM_KIND_UMBRELLA12; + case ITM_UMBRELLA13: + return mPlayer_ITEM_KIND_UMBRELLA13; + case ITM_UMBRELLA14: + return mPlayer_ITEM_KIND_UMBRELLA14; + case ITM_UMBRELLA15: + return mPlayer_ITEM_KIND_UMBRELLA15; + case ITM_UMBRELLA16: + return mPlayer_ITEM_KIND_UMBRELLA16; + case ITM_UMBRELLA17: + return mPlayer_ITEM_KIND_UMBRELLA17; + case ITM_UMBRELLA18: + return mPlayer_ITEM_KIND_UMBRELLA18; + case ITM_UMBRELLA19: + return mPlayer_ITEM_KIND_UMBRELLA19; + case ITM_UMBRELLA20: + return mPlayer_ITEM_KIND_UMBRELLA20; + case ITM_UMBRELLA21: + return mPlayer_ITEM_KIND_UMBRELLA21; + case ITM_UMBRELLA22: + return mPlayer_ITEM_KIND_UMBRELLA22; + case ITM_UMBRELLA23: + return mPlayer_ITEM_KIND_UMBRELLA23; + case ITM_UMBRELLA24: + return mPlayer_ITEM_KIND_UMBRELLA24; + case ITM_UMBRELLA25: + return mPlayer_ITEM_KIND_UMBRELLA25; + case ITM_UMBRELLA26: + return mPlayer_ITEM_KIND_UMBRELLA26; + case ITM_UMBRELLA27: + return mPlayer_ITEM_KIND_UMBRELLA27; + case ITM_UMBRELLA28: + return mPlayer_ITEM_KIND_UMBRELLA28; + case ITM_UMBRELLA29: + return mPlayer_ITEM_KIND_UMBRELLA29; + case ITM_UMBRELLA30: + return mPlayer_ITEM_KIND_UMBRELLA30; + case ITM_UMBRELLA31: + return mPlayer_ITEM_KIND_UMBRELLA31; + case ITM_MY_ORG_UMBRELLA0: + return mPlayer_ITEM_KIND_ORG_UMBRELLA00; + case ITM_MY_ORG_UMBRELLA1: + return mPlayer_ITEM_KIND_ORG_UMBRELLA01; + case ITM_MY_ORG_UMBRELLA2: + return mPlayer_ITEM_KIND_ORG_UMBRELLA02; + case ITM_MY_ORG_UMBRELLA3: + return mPlayer_ITEM_KIND_ORG_UMBRELLA03; + case ITM_MY_ORG_UMBRELLA4: + return mPlayer_ITEM_KIND_ORG_UMBRELLA04; + case ITM_MY_ORG_UMBRELLA5: + return mPlayer_ITEM_KIND_ORG_UMBRELLA05; + case ITM_MY_ORG_UMBRELLA6: + return mPlayer_ITEM_KIND_ORG_UMBRELLA06; + case ITM_MY_ORG_UMBRELLA7: + return mPlayer_ITEM_KIND_ORG_UMBRELLA07; + case ITM_ROD: + return mPlayer_ITEM_KIND_ROD; + case ITM_GOLDEN_ROD: + return mPlayer_ITEM_KIND_GOLD_ROD; + case ITM_SHOVEL: + return mPlayer_ITEM_KIND_SHOVEL; + case ITM_GOLDEN_SHOVEL: + return mPlayer_ITEM_KIND_GOLD_SHOVEL; + case ITM_RED_BALLOON: + return mPlayer_ITEM_KIND_RED_BALLOON; + case ITM_YELLOW_BALLOON: + return mPlayer_ITEM_KIND_YELLOW_BALLOON; + case ITM_BLUE_BALLOON: + return mPlayer_ITEM_KIND_BLUE_BALLOON; + case ITM_GREEN_BALLOON: + return mPlayer_ITEM_KIND_GREEN_BALLOON; + case ITM_PURPLE_BALLOON: + return mPlayer_ITEM_KIND_PURPLE_BALLOON; + case ITM_BUNNY_P_BALLOON: + return mPlayer_ITEM_KIND_BUNNY_P_BALLOON; + case ITM_BUNNY_B_BALLOON: + return mPlayer_ITEM_KIND_BUNNY_B_BALLOON; + case ITM_BUNNY_O_BALLOON: + return mPlayer_ITEM_KIND_BUNNY_O_BALLOON; + case ITM_YELLOW_PINWHEEL: + return mPlayer_ITEM_KIND_YELLOW_PINWHEEL; + case ITM_RED_PINWHEEL: + return mPlayer_ITEM_KIND_RED_PINWHEEL; + case ITM_TIGER_PINWHEEL: + return mPlayer_ITEM_KIND_TIGER_PINWHEEL; + case ITM_GREEN_PINWHEEL: + return mPlayer_ITEM_KIND_GREEN_PINWHEEL; + case ITM_PINK_PINWHEEL: + return mPlayer_ITEM_KIND_PINK_PINWHEEL; + case ITM_STRIPED_PINWHEEL: + return mPlayer_ITEM_KIND_STRIPED_PINWHEEL; + case ITM_FLOWER_PINWHEEL: + return mPlayer_ITEM_KIND_FLOWER_PINWHEEL; + case ITM_FANCY_PINWHEEL: + return mPlayer_ITEM_KIND_FANCY_PINWHEEL; + case ITM_BLUEBELL_FAN: + return mPlayer_ITEM_KIND_BLUEBELL_FAN; + case ITM_PLUM_FAN: + return mPlayer_ITEM_KIND_PLUM_FAN; + case ITM_BAMBOO_FAN: + return mPlayer_ITEM_KIND_BAMBOO_FAN; + case ITM_CLOUD_FAN: + return mPlayer_ITEM_KIND_CLOUD_FAN; + case ITM_MAPLE_FAN: + return mPlayer_ITEM_KIND_MAPLE_FAN; + case ITM_FAN_FAN: + return mPlayer_ITEM_KIND_FAN_FAN; + case ITM_FLOWER_FAN: + return mPlayer_ITEM_KIND_FLOWER_FAN; + case ITM_LEAF_FAN: + return mPlayer_ITEM_KIND_LEAF_FAN; + default: + return -1; + } +} + +extern int mPlib_Get_ItemKindTOBalloonShapeType(int item_kind) { + if (mPlayer_ITEM_IS_BALLOON(item_kind) != FALSE) { + return item_kind - mPlayer_ITEM_KIND_RED_BALLOON; + } + + return 0; +} + +static int mPlib_Get_itemNOTOBalloonShapeType(mActor_name_t itemNo) { + return mPlib_Get_ItemKindTOBalloonShapeType(mPlib_Get_ItemNoToItemKind(itemNo)); +} + +extern void mPlib_request_main_release_creature_balloon_from_submenu(mActor_name_t itemNo, int gold_scoop_flag) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_release_creature_c* req_release_creature_p = + &change_data_from_submenu_p->request_main_data.release_creature; + mPlayer_request_release_creature_balloon_c* release_balloon_p = &req_release_creature_p->data.balloon; + ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR(); /* @unused */ + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_RELEASE_CREATURE; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_release_creature_p->type = mPlayer_CREATURE_BALLOON; + req_release_creature_p->gold_scoop_flag = gold_scoop_flag; + + release_balloon_p->balloon_type = mPlib_Get_itemNOTOBalloonShapeType(itemNo); +} + +extern void mPlib_request_main_wait_from_submenu(void) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_WAIT; + change_data_from_submenu_p->requested_index_pending = TRUE; +} + +extern void mPlib_request_main_demo_get_golden_item_from_submenu(void) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM; + change_data_from_submenu_p->requested_index_pending = TRUE; +} + +extern void mPlib_request_main_mail_land_from_submenu(void) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_MAIL_LAND; + change_data_from_submenu_p->requested_index_pending = TRUE; +} + +extern void mPlib_request_main_demo_wait_from_submenu(ACTOR* speak_actor_p) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_demo_wait_c* req_demo_wait_p = &change_data_from_submenu_p->request_main_data.demo_wait; + + change_data_from_submenu_p->requested_main_index = mPlayer_INDEX_DEMO_WAIT; + change_data_from_submenu_p->requested_index_pending = TRUE; + + req_demo_wait_p->umbrella_flag = FALSE; + req_demo_wait_p->label = (u32)speak_actor_p; + + if (speak_actor_p != NULL) { + mPlib_Set_able_force_speak_label(speak_actor_p); + } +} + +extern void mPlib_Set_unable_wade(int v) { + Common_Set(unable_wade, v); +} + +extern int mPlib_Get_unable_wade(void) { + return Common_Get(unable_wade); +} + +extern int mPlib_Check_able_force_speak_label(GAME* game, ACTOR* label) { + if (Common_Get(player_actor_exists) == FALSE) { + return FALSE; + } + + return GET_PLAYER_ACTOR_GAME(game)->Check_able_force_speak_label_proc(game, label); +} + +extern void mPlib_Set_able_force_speak_label(ACTOR* label) { + if (Common_Get(player_actor_exists)) { + GET_PLAYER_ACTOR_NOW()->able_force_speak_label = (u32)label; + } +} + +extern void mPlib_Reset_able_force_speak_label(void) { + mPlib_Set_able_force_speak_label(NULL); +} + +extern u8 ply_1_get_change12_tex_index[]; +extern u8 ply_1_kokeru_a12_tex_index[]; +extern u8 ply_1_kokeru_getup_a12_tex_index[]; +extern u8 ply_1_kokeru_getup_n12_tex_index[]; +extern u8 ply_1_kokeru_n12_tex_index[]; +extern u8 ply_1_axe_swing12_tex_index[]; +extern u8 ply_1_kokeru12_tex_index[]; +extern u8 ply_1_kokeru_getup12_tex_index[]; +extern u8 ply_1_axe_hane12_tex_index[]; +extern u8 ply_1_axe_suka12_tex_index[]; +extern u8 ply_1_get_t12_tex_index[]; +extern u8 ply_1_menu_change12_tex_index[]; +extern u8 ply_1_not_sao_swing12_tex_index[]; +extern u8 ply_1_not_dig12_tex_index[]; +extern u8 ply_1_dig_suka12_tex_index[]; +extern u8 ply_1_shake12_tex_index[]; +extern u8 ply_1_eat12_tex_index[]; +extern u8 ply_1_gaaan12_tex_index[]; +extern u8 ply_1_deru12_tex_index[]; +extern u8 ply_1_guratuku12_tex_index[]; +extern u8 ply_1_otiru12_tex_index[]; +extern u8 ply_1_biku12_tex_index[]; +extern u8 ply_1_hati12_tex_index[]; +extern u8 ply_1_hati22_tex_index[]; +extern u8 ply_1_hati32_tex_index[]; +extern u8 ply_1_deru22_tex_index[]; +extern u8 ply_1_otiru22_tex_index[]; +extern u8 ply_1_itazura12_tex_index[]; +extern u8 ply_1_yatta12_tex_index[]; +extern u8 ply_1_yatta22_tex_index[]; +extern u8 ply_1_yatta32_tex_index[]; +extern u8 ply_1_mosquito12_tex_index[]; +extern u8 ply_1_axe_break12_tex_index[]; + +extern u8* mPlib_Get_PlayerEyeTexAnimation_p(int anim_idx) { + if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) { + static u8* const eye_tex_index_table[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_get_change12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_kokeru_a12_tex_index, + ply_1_kokeru_getup_a12_tex_index, + ply_1_kokeru_getup_n12_tex_index, + ply_1_kokeru_n12_tex_index, + NULL, + NULL, + ply_1_axe_swing12_tex_index, + NULL, + ply_1_kokeru12_tex_index, + ply_1_kokeru_getup12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_axe_hane12_tex_index, + ply_1_axe_suka12_tex_index, + NULL, + NULL, + ply_1_get_t12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_menu_change12_tex_index, + NULL, + ply_1_not_sao_swing12_tex_index, + NULL, + NULL, + NULL, + NULL, + ply_1_not_dig12_tex_index, + NULL, + NULL, + NULL, + NULL, + ply_1_dig_suka12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_shake12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_eat12_tex_index, + ply_1_gaaan12_tex_index, + NULL, + ply_1_deru12_tex_index, + ply_1_guratuku12_tex_index, + NULL, + ply_1_otiru12_tex_index, + NULL, + NULL, + ply_1_biku12_tex_index, + ply_1_hati12_tex_index, + ply_1_hati22_tex_index, + ply_1_hati32_tex_index, + NULL, + ply_1_deru22_tex_index, + ply_1_otiru22_tex_index, + ply_1_itazura12_tex_index, + NULL, + NULL, + ply_1_yatta12_tex_index, + ply_1_yatta22_tex_index, + ply_1_yatta32_tex_index, + NULL, + ply_1_mosquito12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_axe_break12_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }; + + return eye_tex_index_table[anim_idx]; + } + + return NULL; +} + +extern u8 ply_1_get_change11_tex_index[]; +extern u8 ply_1_kokeru_a11_tex_index[]; +extern u8 ply_1_kokeru_getup_a11_tex_index[]; +extern u8 ply_1_kokeru_getup_n11_tex_index[]; +extern u8 ply_1_kokeru_n11_tex_index[]; +extern u8 ply_1_axe_swing11_tex_index[]; +extern u8 ply_1_kokeru11_tex_index[]; +extern u8 ply_1_kokeru_getup11_tex_index[]; +extern u8 ply_1_axe_hane11_tex_index[]; +extern u8 ply_1_axe_suka11_tex_index[]; +extern u8 ply_1_get_t11_tex_index[]; +extern u8 ply_1_get_t21_tex_index[]; +extern u8 ply_1_not_get_t11_tex_index[]; +extern u8 ply_1_menu_change11_tex_index[]; +extern u8 ply_1_not_sao_swing11_tex_index[]; +extern u8 ply_1_not_dig11_tex_index[]; +extern u8 ply_1_dig_suka11_tex_index[]; +extern u8 ply_1_eat11_tex_index[]; +extern u8 ply_1_gaaan11_tex_index[]; +extern u8 ply_1_deru11_tex_index[]; +extern u8 ply_1_guratuku11_tex_index[]; +extern u8 ply_1_mogaku11_tex_index[]; +extern u8 ply_1_otiru11_tex_index[]; +extern u8 ply_1_biku11_tex_index[]; +extern u8 ply_1_hati11_tex_index[]; +extern u8 ply_1_hati21_tex_index[]; +extern u8 ply_1_hati31_tex_index[]; +extern u8 ply_1_deru21_tex_index[]; +extern u8 ply_1_otiru21_tex_index[]; +extern u8 ply_1_itazura11_tex_index[]; +extern u8 ply_1_yatta11_tex_index[]; +extern u8 ply_1_yatta21_tex_index[]; +extern u8 ply_1_yatta31_tex_index[]; +extern u8 ply_1_mosquito11_tex_index[]; +extern u8 ply_1_axe_break11_tex_index[]; + +extern u8* mPlib_Get_PlayerMouthTexAnimation_p(int anim_idx) { + if (anim_idx >= 0 && anim_idx < mPlayer_ANIM_NUM) { + static u8* const mouth_tex_index_table[] = { + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_get_change11_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_kokeru_a11_tex_index, + ply_1_kokeru_getup_a11_tex_index, + ply_1_kokeru_getup_n11_tex_index, + ply_1_kokeru_n11_tex_index, + NULL, + NULL, + ply_1_axe_swing11_tex_index, + NULL, + ply_1_kokeru11_tex_index, + ply_1_kokeru_getup11_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_axe_hane11_tex_index, + ply_1_axe_suka11_tex_index, + NULL, + NULL, + ply_1_get_t11_tex_index, + ply_1_get_t21_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_not_get_t11_tex_index, + NULL, + ply_1_menu_change11_tex_index, + NULL, + ply_1_not_sao_swing11_tex_index, + NULL, + NULL, + NULL, + NULL, + ply_1_not_dig11_tex_index, + NULL, + NULL, + NULL, + NULL, + ply_1_dig_suka11_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_eat11_tex_index, + ply_1_gaaan11_tex_index, + NULL, + ply_1_deru11_tex_index, + ply_1_guratuku11_tex_index, + ply_1_mogaku11_tex_index, + ply_1_otiru11_tex_index, + NULL, + NULL, + ply_1_biku11_tex_index, + ply_1_hati11_tex_index, + ply_1_hati21_tex_index, + ply_1_hati31_tex_index, + NULL, + ply_1_deru21_tex_index, + ply_1_otiru21_tex_index, + ply_1_itazura11_tex_index, + NULL, + NULL, + ply_1_yatta11_tex_index, + ply_1_yatta21_tex_index, + ply_1_yatta31_tex_index, + NULL, + ply_1_mosquito11_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + ply_1_axe_break11_tex_index, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + }; + + return mouth_tex_index_table[anim_idx]; + } + + return NULL; +} + +extern u8* mPlib_Get_eye_tex_p(int idx) { + if (idx >= 0 && idx < mPlayer_EYE_TEX_NUM) { + u8* face_tex_p = mPlib_get_player_face_p(gamePT); + + if (face_tex_p != NULL) { + return face_tex_p + idx * 0x100; + } + } + + return NULL; +} + +extern u8* mPlib_Get_mouth_tex_p(int idx) { + if (idx >= 0 && idx < mPlayer_MOUTH_TEX_NUM) { + u8* face_tex_p = mPlib_get_player_face_p(gamePT); + + if (face_tex_p != NULL) { + face_tex_p += (mPlayer_EYE_TEX_NUM * 0x100) + idx * 0x100; + return face_tex_p; + } + } + + return NULL; +} + +extern int mPlib_request_main_invade_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_invade_all_proc(game, mPlayer_REQUEST_PRIORITY_2); +} + +extern int mPlib_request_main_refuse_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_refuse_all_proc(game, mPlayer_REQUEST_PRIORITY_34); +} + +extern int mPlib_request_main_wait_type3(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_return_demo_all_proc(game, mPlayer_INDEX_WAIT, 3.0f, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_get_golden_item2_type1(GAME* game, int golden_item_type) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_get_golden_item2_all_proc(game, golden_item_type, + mPlayer_REQUEST_PRIORITY_34); +} + +extern int mPlib_request_main_talk_end_type1(GAME* game, int wait_demo, int demo_get_golden_axe) { + if (wait_demo == FALSE) { + if (demo_get_golden_axe == FALSE) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_return_demo_all_proc(game, mPlayer_INDEX_WAIT, 3.0f, + mPlayer_REQUEST_PRIORITY_19); + } else { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_get_golden_axe_wait_all_proc( + game, mPlayer_REQUEST_PRIORITY_33); + } + } else { + return mPlib_request_main_demo_wait_type1(game, FALSE, NULL); + } +} + +extern int mPlib_request_main_talk_type1(GAME* game, ACTOR* talk_actor_p, int turn_flag, int umbrella_flag) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_talk_all_proc(game, talk_actor_p, turn_flag, -5.0f, umbrella_flag, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_hold_type1(GAME* game, int ftr_no, int player_direct, const xyz_t* player_pos_p) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_hold_all_proc(game, ftr_no, player_direct, player_pos_p, -5.0f, 1, + mPlayer_REQUEST_PRIORITY_9); +} + +extern int mPlib_request_main_recieve_wait_type1(GAME* game, mActor_name_t item, int counter_flag) { + GET_PLAYER_ACTOR_GAME(game)->request_main_recieve_wait_all_proc( + game, GET_PLAYER_ACTOR_GAME(game)->main_data.talk.talk_actor_p, + GET_PLAYER_ACTOR_GAME(game)->main_data.talk.turn_flag, GET_PLAYER_ACTOR_GAME(game)->now_main_index, item, + counter_flag, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_give_type1(GAME* game, mActor_name_t item, int mode, int present, int on_surface) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int return_main_index = player->now_main_index; + ACTOR* talk_actor_p; + int turn_flag; + + if (return_main_index == mPlayer_INDEX_TALK) { + talk_actor_p = player->main_data.talk.talk_actor_p; + turn_flag = player->main_data.talk.turn_flag; + } else { + talk_actor_p = NULL; + turn_flag = FALSE; + } + + GET_PLAYER_ACTOR_GAME(game)->request_main_give_all_proc(game, talk_actor_p, turn_flag, return_main_index, item, + mode, present, on_surface, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_sitdown_type1(GAME* game, int direct, const xyz_t* pos_p, int ftr_no) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_sitdown_all_proc(game, direct, pos_p, ftr_no, + mPlayer_REQUEST_PRIORITY_2); +} + +extern int mPlib_request_main_close_furniture_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_close_furniture_all_proc(game, mPlayer_REQUEST_PRIORITY_23); +} + +extern int mPlib_request_main_lie_bed_type1(GAME* game, int direct, const xyz_t* pos_p, int head_direct, int ftr_no) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_lie_bed_all_proc(game, direct, pos_p, head_direct, ftr_no, + mPlayer_REQUEST_PRIORITY_9); +} + +extern int mPlib_request_main_hide_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_hide_all_proc(game, mPlayer_REQUEST_PRIORITY_43); +} + +extern int mPlib_request_main_groundhog_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_groundhog_proc(game, mPlayer_REQUEST_PRIORITY_43); +} + +extern int mPlib_request_main_door_type1(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_door_all_proc(game, pos_p, angle_y, door_type, door_label, + mPlayer_REQUEST_PRIORITY_7) != FALSE; +} + +extern int mPlib_request_main_door_type2(GAME* game, const xyz_t* pos_p, s16 angle_y, int door_type, void* door_label) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_door_all_proc(game, pos_p, angle_y, door_type, door_label, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_outdoor_type1(GAME* game, int is_start_demo, int door_type) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_outdoor_all_proc(game, is_start_demo, door_type, + mPlayer_REQUEST_PRIORITY_43); +} + +extern int mPlib_request_main_wash_car_type1(GAME* game, const xyz_t* car_pos_p, const xyz_t* ret_pos_p, + s16 ret_angle_y, ACTOR* ctrl_actor_p) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_wash_car_all_proc(game, car_pos_p, ret_pos_p, ret_angle_y, + ctrl_actor_p, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_rotate_octagon_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TALK) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_rotate_octagon_all_proc( + game, GET_PLAYER_ACTOR_GAME(game)->main_data.talk.talk_actor_p, + GET_PLAYER_ACTOR_GAME(game)->main_data.talk.turn_flag, GET_PLAYER_ACTOR_GAME(game)->now_main_index, pos_p, + angle_y, mPlayer_REQUEST_PRIORITY_19); + } else { + return GET_PLAYER_ACTOR_GAME(game)->request_main_rotate_octagon_all_proc( + game, NULL, FALSE, GET_PLAYER_ACTOR_GAME(game)->now_main_index, pos_p, angle_y, + mPlayer_REQUEST_PRIORITY_19); + } +} + +extern int mPlib_request_main_throw_money_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_throw_money_all_proc(game, pos_p, angle_y, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_pray_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_pray_all_proc(game, pos_p, angle_y, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_mail_jump_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_mail_jump_all_proc(game, pos_p, angle_y, + mPlayer_REQUEST_PRIORITY_9); +} + +extern int mPlib_request_main_stung_bee_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_stung_bee_all_proc(game, mPlayer_REQUEST_PRIORITY_25); +} + +extern int mPlib_request_main_stung_mosquito_type1(void* label) { + return GET_PLAYER_ACTOR_NOW()->request_main_stung_mosquito_all_proc(gamePT, label, mPlayer_REQUEST_PRIORITY_25); +} + +extern int mPlib_request_main_switch_on_lighthouse_type1(GAME* game, const xyz_t* pos_p, s16 angle_y) { + return GET_PLAYER_ACTOR_NOW()->request_main_switch_on_lighthouse_all_proc(game, pos_p, angle_y, + mPlayer_REQUEST_PRIORITY_9); +} + +extern int mPlib_request_main_demo_geton_boat_type1(f32 goal_x, f32 goal_z, s16 angleY) { + ACTOR* actorx = GET_PLAYER_ACTOR_NOW_ACTOR(); + xyz_t goal_pos; + + goal_pos.x = goal_x; + goal_pos.z = goal_z; + goal_pos.y = actorx->world.position.y; + + return GET_PLAYER_ACTOR_NOW()->request_main_demo_geton_boat_all_proc(gamePT, &goal_pos, angleY, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_getoff_boat_standup_type1(const xyz_t* pos_p, s16 angleY) { + return GET_PLAYER_ACTOR_NOW()->request_main_demo_getoff_boat_standup_all_proc(gamePT, pos_p, angleY, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_shock_type1(GAME* game, f32 time, s16 angle_y, int axe_swing) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_shock_all_proc(game, time, angle_y, FALSE, axe_swing, + mPlayer_REQUEST_PRIORITY_14); +} + +extern int mPlib_request_main_change_cloth_forNPC_type1(GAME* game, mActor_name_t cloth_item, u16 cloth_idx, + int try_on_flag) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_change_cloth_forNPC_proc(game, cloth_item, cloth_idx, try_on_flag); +} + +extern int mPlib_request_main_push_snowball_type1(GAME* game, void* label) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_push_snowball_all_proc(game, label, FALSE, + mPlayer_REQUEST_PRIORITY_2); +} + +extern int mPlib_request_main_push_snowball_end_type1(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUSH_SNOWBALL) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_wait_all_proc(game, -5.0f, 0.0f, 0, + mPlayer_REQUEST_PRIORITY_1); + } + + return FALSE; +} + +extern int mPlib_request_main_demo_wait_type1(GAME* game, int umbrella_flag, void* label) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_wait_all_proc(game, umbrella_flag, label, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_walk_type1(GAME* game, f32 goal_x, f32 goal_z, f32 speed, int wait_flag) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_walk_all_proc(game, goal_x, goal_z, speed, wait_flag, + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_geton_train_type1(GAME* game, const xyz_t* pos_p) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_geton_train_all_proc(game, pos_p, DEG2SHORT_ANGLE2(180.0f), + mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_getoff_train_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_getoff_train_all_proc( + game, &GET_PLAYER_ACTOR_GAME_ACTOR(game)->world.position, + GET_PLAYER_ACTOR_GAME_ACTOR(game)->shape_info.rotation.y, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_request_main_demo_standing_train_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->request_main_demo_standing_train_all_proc(game, mPlayer_REQUEST_PRIORITY_19); +} + +extern int mPlib_check_request_main_talk_type1_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_TALK) == FALSE) { + if (mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_WAIT && + mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_WALK && + mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_TIRED && + mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_TALK && + mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_WASH_CAR && + mPlib_get_player_actor_main_index(game) != mPlayer_INDEX_DEMO_STANDING_TRAIN) { + res = TRUE; + } + } + } + + return res; +} + +extern int mPlib_check_request_main_speak_type1_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_TALK) == FALSE) { + res = TRUE; + } + } + + return res; +} + +extern int mPlib_check_request_main_door_type1_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_7) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DOOR) == FALSE) { + res = TRUE; + } + } + + return res; +} + +extern int mPlib_check_request_main_door_type2_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DOOR) == FALSE) { + res = TRUE; + } + } + + return res; +} + +extern int mPlib_check_request_main_wade_priority(GAME* game) { + int res; + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) { + res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_2) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_WADE_SNOWBALL) == + FALSE) { + res = TRUE; + } + } + } else { + res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_2) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_WADE) == FALSE) { + res = TRUE; + } + } + } + + return res; +} + +extern int mPlib_check_request_main_demo_wade_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc(mPlayer_INDEX_DEMO_WADE) == + FALSE) { + res = TRUE; + } + } + + return res; +} + +extern int mPlib_check_request_main_demo_geton_boat_wade_priority(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0) { + if (GET_PLAYER_ACTOR_GAME(game)->check_cancel_request_change_proc_index_proc( + mPlayer_INDEX_DEMO_GETON_BOAT_WADE) == FALSE) { + res = TRUE; + } + } + + return res; +} + +static int mPlib_strength_request_main_index_priority(GAME* game, int priority) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->requested_main_index_priority < priority) { + player->requested_main_index_priority = priority; + return TRUE; + } + + return FALSE; +} + +extern int mPlib_strength_request_main_wade_priority(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE) { + return TRUE; + } + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE) { + mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19); + return TRUE; + } + + return FALSE; +} + +extern int mPlib_strength_request_main_demo_wade_priority(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WADE) { + return TRUE; + } + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DEMO_WADE) { + mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19); + return TRUE; + } + + return FALSE; +} + +extern int mPlib_strength_request_main_wade_snowball_priority(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) { + return TRUE; + } + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL) { + mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19); + return TRUE; + } + + return FALSE; +} + +extern int mPlib_strength_request_main_demo_geton_boat_wade_priority(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) { + return TRUE; + } + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) { + mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19); + return TRUE; + } + + return FALSE; +} + +extern int mPlib_strength_request_main_door_priority(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DOOR) { + return TRUE; + } + + if (mPlib_get_player_actor_request_main_index(game) == mPlayer_INDEX_DOOR) { + mPlib_strength_request_main_index_priority(game, mPlayer_REQUEST_PRIORITY_19); + return TRUE; + } + + return FALSE; +} + +extern int mPlib_check_request_main_outdoor_priority(GAME* game) { + return TRUE; +} + +extern int mPlib_Check_SetOrderSubmenu(void) { + mPlayer_change_data_from_submenu_c* change_data_from_submenu_p = mPlib_Get_change_data_from_submenu_p(); + + return change_data_from_submenu_p->requested_index_pending != FALSE; +} + +static int mPlib_check_request_change_item(void) { + int idx; + + if (Common_Get(player_actor_exists) == FALSE) { + return TRUE; + } + + if (mPlib_check_DynamicLinkFile_m_player() == FALSE) { + return TRUE; + } + + idx = GET_PLAYER_ACTOR_GAME(gamePT)->check_request_change_item_proc(gamePT); + return mPlayer_MAIN_INDEX_VALID(idx); +} + +static int mPlib_CheckScene_AbleSubmenu(void) { + + if (Common_Get(player_actor_exists) == FALSE) { + return FALSE; + } + + if (mPlib_check_DynamicLinkFile_m_player() == FALSE) { + return FALSE; + } + + return GET_PLAYER_ACTOR_GAME(gamePT)->CheckScene_AbleSubmenu_proc(); +} + +extern int mPlib_able_submenu_type1(GAME* game) { + int res = FALSE; + + if (GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_19) > 0 && + mPlib_Check_SetOrderSubmenu() == FALSE && mPlib_check_request_change_item() == FALSE && + mPlib_check_player_warp_forEvent() == FALSE && + GET_PLAYER_ACTOR_GAME(game)->able_submenu_request_main_index_proc(game) && mPlib_CheckScene_AbleSubmenu()) { + res = TRUE; + } + + return res; +} + +static int mPlib_check_priority_event_type1(GAME* game) { + return GET_PLAYER_ACTOR_GAME(game)->check_request_main_priority_proc(game, mPlayer_REQUEST_PRIORITY_17) > 0; +} + +extern int mPlib_check_player_open_umbrella(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + if (player->umbrella_actor != NULL) { + UMBRELLA_ACTOR* umbrella_actor = (UMBRELLA_ACTOR*)player->umbrella_actor; + + if (umbrella_actor->opened_fully) { + return TRUE; + } + } + + return FALSE; +} + +extern int mPlib_check_player_outdoor_start(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR) { + mPlayer_main_outdoor_c* outdoor_p = &GET_PLAYER_ACTOR_GAME(game)->main_data.outdoor; + + if (outdoor_p->is_demo) { + return TRUE; + } + } + + return FALSE; +} + +extern int mPlib_check_label_player_demo_wait(GAME* game, void* label) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WAIT) { + mPlayer_main_demo_wait_c* demo_wait_p = &GET_PLAYER_ACTOR_GAME(game)->main_data.demo_wait; + + if (demo_wait_p->label == (u32)label) { + return TRUE; + } + } + + return FALSE; +} + +extern void mPlib_Set_goal_player_demo_walk(f32 pos_x, f32 pos_z, f32 speed) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 2, (int)pos_x); + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 4, (int)pos_z); + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 7, (int)(speed * 100.0f)); +} + +extern void mPlib_Get_goal_player_demo_walk(f32* pos_x_p, f32* pos_z_p, f32* speed_p) { + *pos_x_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 2); + *pos_z_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 4); + *speed_p = (f32)(int)mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 7) * 0.01f; +} + +extern void mPlib_Set_continue_player_after_demo_walk(int value) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 8, value); +} + +extern int mPlib_Get_continue_player_after_demo_walk(void) { + return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 8); +} + +extern void mPlib_Set_end_player_demo_walk(int value) { + mDemo_Set_OrderValue(mDemo_ORDER_PLAYER, 9, value); +} + +extern int mPlib_Get_end_player_demo_walk(void) { + return mDemo_Get_OrderValue(mDemo_ORDER_PLAYER, 9); +} + +extern int mPlib_Get_space_putin_item(void) { + return mPr_GetPossessionItemIdxWithCond(Now_Private, EMPTY_NO, mPr_ITEM_COND_NORMAL); +} + +extern int mPlib_Get_space_putin_item_forTICKET(mActor_name_t* item_p) { + mActor_name_t item = *item_p; + + if (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_TICKET) { + int ticket_month = (item >> 3) & 0xF; + int ticket_count = 1 + (item & 7); + int ticket_begin = ITM_TICKET_START | (ticket_month << 3); + int ticket_end = ticket_begin + (5 - ticket_count); + int idx = mPr_GetPossessionItemIdxKindWithCond(Now_Private, ticket_begin, ticket_end, mPr_ITEM_COND_NORMAL); + + if (idx >= 0) { + *item_p = Now_Private->inventory.pockets[idx] + ticket_count; + return idx; + } + } else if (ITEM_IS_PAPER(item)) { + int paper_base = item - ITM_PAPER_START; + int paper_type = PAPER2TYPE(paper_base); + int paper_num = PAPER2STACK(paper_base) + 1; + int i; + + for (i = 4 - paper_num; i > 0; i--) { + mActor_name_t paper_item = ITM_PAPER_START + paper_type + (i - 1) * PAPER_UNIQUE_NUM; + int idx = mPr_GetPossessionItemIdxWithCond(Now_Private, paper_item, mPr_ITEM_COND_NORMAL); + + if (idx != -1) { + *item_p = (mActor_name_t)(ITM_PAPER_START + paper_type + (i + paper_num - 1) * PAPER_UNIQUE_NUM); + return idx; + } + } + } + + return mPlib_Get_space_putin_item(); +} + +extern int mPlib_Get_space_putin_item_forHITODAMA(mActor_name_t* item_p) { + mActor_name_t item = *item_p; + + if (ITEM_IS_WISP(item)) { + int hitodama_count = ITEM_IS_WISP(item) ? (1 + (item - ITM_SPIRIT0)) : 0; + mActor_name_t hitodama_begin = ITM_SPIRIT0; + mActor_name_t hitodama_end = hitodama_begin + (5 - hitodama_count); + int idx = mPr_GetPossessionItemIdxKindWithCond(Now_Private, hitodama_begin, hitodama_end, mPr_ITEM_COND_NORMAL); + + if (idx >= 0) { + *item_p = Now_Private->inventory.pockets[idx] + hitodama_count; + return idx; + } + } + + return mPlib_Get_space_putin_item(); +} + +extern int mPlib_able_player_warp_forEvent(void) { + if (mPlib_check_DynamicLinkFile_m_player() == FALSE) { + return FALSE; + } + + if (mPlib_check_player_warp_forEvent()) { + return FALSE; + } + + if (mEv_CheckFirstIntro()) { + return FALSE; + } + + if (Common_Get(player_actor_exists) == FALSE) { + return FALSE; + } + + if (Common_Get(complete_payment_type) != mPlayer_COMPLETE_PAYMENT_TYPE_NONE) { + return FALSE; + } + + if (Common_Get(fail_emu_flag) != FALSE) { + return FALSE; + } + + if (mPlib_Check_SetOrderSubmenu()) { + return FALSE; + } + + if (mPlib_check_request_change_item()) { + return FALSE; + } + + if (mPlib_check_priority_event_type1(gamePT)) { + return GET_PLAYER_ACTOR_NOW()->check_cancel_event_without_priority_proc(gamePT) == FALSE; + } + + if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_RELAX_ROD || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_READY_NET || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_READY_WALK_NET || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_HOLD || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_SITDOWN_WAIT || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WAIT_BED || + mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_STRUGGLE_PITFALL) { + if (GET_PLAYER_ACTOR_NOW()->requested_main_index_changed == FALSE) { + return TRUE; + } + } + + return FALSE; +} + +extern int mPlib_request_player_warp_forEvent(void) { + Common_Set(player_warp_request, TRUE); + return TRUE; +} + +extern int mPlib_cancel_player_warp_forEvent(void) { + Common_Set(player_warp_request, FALSE); + return TRUE; +} + +extern int mPlib_check_player_warp_forEvent(void) { + return Common_Get(player_warp_request); +} + +extern int mPlib_Check_HitAxe(xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_HitAxe_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Check_VibUnit_OneFrame(const xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_VibUnit_OneFrame_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Check_StopNet(xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_StopNet_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern u32 mPlib_Get_item_net_catch_label(void) { + return GET_PLAYER_ACTOR_NOW()->Get_item_net_catch_label_proc(GET_PLAYER_ACTOR_NOW_ACTOR()); +} + +extern int mPlib_Change_item_net_catch_label(u32 label, s8 type) { + return GET_PLAYER_ACTOR_NOW()->Change_item_net_catch_label_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), label, type); +} + +extern int mPlib_Check_HitScoop(xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_HitScoop_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Check_DigScoop(xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_DigScoop_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Get_address_able_display(void) { + return GET_PLAYER_ACTOR_NOW()->address_able_display; +} + +static ACTOR* mPlib_Search_exist_npc_inCircle_forScoop(GAME* game, const xyz_t* pos_p, f32 radius_sq) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info = &play->actor_info; + Actor_list* npc_actor_list = &actor_info->list[ACTOR_PART_NPC]; + ACTOR* actor = npc_actor_list->actor; + f32 pos_x = pos_p->x; + f32 pos_z = pos_p->z; + + for (actor; actor != NULL; actor = actor->next_actor) { + f32 dx = actor->world.position.x - pos_x; + f32 dz = actor->world.position.z - pos_z; + + if (Math3DVecLengthSquare2D(dx, dz) < radius_sq) { + NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor; + + if (npc_actor->condition_info.hide_flg == FALSE) { + return actor; + } + } + } + + return NULL; +} + +static ACTOR* mPlib_Search_exist_psnowman_inCircle_forScoop(GAME* game, const xyz_t* pos_p, f32 radius_sq) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info = &play->actor_info; + Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG]; + ACTOR* actor = bg_actor_list->actor; + f32 pos_x = pos_p->x; + f32 pos_z = pos_p->z; + + for (actor; actor != NULL; actor = actor->next_actor) { + if (actor->id == mAc_PROFILE_PSNOWMAN) { + f32 dx = actor->world.position.x - pos_x; + f32 dz = actor->world.position.z - pos_z; + + if (Math3DVecLengthSquare2D(dx, dz) < radius_sq) { + return actor; + } + } + } + + return NULL; +} + +static ACTOR* mPlib_Search_exist_snowball_forScoop(GAME* game, const xyz_t* pos_p) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info = &play->actor_info; + Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG]; + ACTOR* actor = bg_actor_list->actor; + f32 pos_x = pos_p->x; + f32 pos_y = pos_p->y; + f32 pos_z = pos_p->z; + + for (actor; actor != NULL; actor = actor->next_actor) { + if (actor->id == mAc_PROFILE_SNOWMAN) { + SNOWMAN_ACTOR* snowball = (SNOWMAN_ACTOR*)actor; + f32 dy = actor->world.position.y - pos_y; + f32 abs_dy = ABS(dy); + f32 radius = MIN(10.0f + 20.0f * snowball->normalized_scale, 19.0f); + + if (abs_dy <= 35.0f) { + f32 dx = actor->world.position.x - pos_x; + f32 dz = actor->world.position.z - pos_z; + f32 len; + f32 sq_radius; + + radius += 19.0f; + len = Math3DVecLengthSquare2D(dx, dz); + sq_radius = SQ(radius); + + if (len < sq_radius) { + return actor; + } + } + } + } + + return NULL; +} + +static ACTOR* mPlib_Search_exist_ball_forScoop(GAME* game, const xyz_t* pos_p) { + GAME_PLAY* play = (GAME_PLAY*)game; + Actor_info* actor_info = &play->actor_info; + Actor_list* bg_actor_list = &actor_info->list[ACTOR_PART_BG]; + ACTOR* actor = bg_actor_list->actor; + f32 pos_x = pos_p->x; + f32 pos_y = pos_p->y; + f32 pos_z = pos_p->z; + + for (actor; actor != NULL; actor = actor->next_actor) { + if (actor->id == mAc_PROFILE_BALL) { + f32 dy = actor->world.position.y - pos_y; + f32 abs_dy = ABS(dy); + + if (abs_dy <= 20.0f) { + f32 dx = actor->world.position.x - pos_x; + f32 dz = actor->world.position.z - pos_z; + + if (Math3DVecLengthSquare2D(dx, dz) < SQ(39.0f)) { + return actor; + } + } + } + } + + return NULL; +} + +extern int mPlib_Check_scoop_after(GAME* game, xyz_t* pos_p, mActor_name_t* item_p, ACTOR** reflect_actor_pp, + int gold_scoop) { + ACTOR* player_actor = GET_PLAYER_ACTOR_GAME_ACTOR(game); + xyz_t* player_pos_p = &player_actor->world.position; + int player_ux; + int player_uz; + int field_type = Common_Get(field_type); + + if (reflect_actor_pp != NULL) { + *reflect_actor_pp = NULL; + } + + *item_p = EMPTY_NO; + + if (field_type == mFI_FIELDTYPE2_FG) { + if (mFI_Wpos2UtNum(&player_ux, &player_uz, *player_pos_p)) { + // clang-format off + static const int add_num[8][2] = { + { -1, -1 }, + { 0, -1 }, + { 1, -1 }, + { -1, 0 }, + // { 0, 0 }, <--- player pos + { 1, 0 }, + { -1, 1 }, + { 0, 1 }, + { 1, 1 }, + }; + // clang-format on + xyz_t unit_pos[8]; + int unit_num[8][2]; + int unit_exist[8]; + xyz_t center_ut_pos; + xyz_t unit_dist[8]; + s16 unit_angle_y[8]; + int unit_abs_diff_angle_y[8]; + f32 player_pos_x = player_pos_p->x; + f32 player_pos_y = player_pos_p->y; + f32 player_pos_z = player_pos_p->z; + int idx = 0; + int min_angle_y; + int player_angle_y; + int i; + + mFI_UtNum2CenterWpos(¢er_ut_pos, player_ux, player_uz); + + /* Get the center position for each surrounding unit and if it exists or not */ + for (i = 0; i < 8; i++) { + unit_num[i][0] = player_ux + add_num[i][0]; + unit_num[i][1] = player_uz + add_num[i][1]; + unit_exist[i] = mFI_UtNum2CenterWpos(&unit_pos[i], unit_num[i][0], unit_num[i][1]); + unit_pos[i].y = player_pos_y; + + if (unit_exist[i] == FALSE) { + unit_pos[i].x = center_ut_pos.x + unit_num[i][0] * mFI_UT_WORLDSIZE_X_F; + unit_pos[i].z = center_ut_pos.z + unit_num[i][1] * mFI_UT_WORLDSIZE_Z_F; + } + } + + /* Calculate distance and angle to center of each surrounding unit */ + for (i = 0; i < 8; i++) { + unit_dist[i].x = unit_pos[i].x - player_pos_x; + unit_dist[i].z = unit_pos[i].z - player_pos_z; + unit_angle_y[i] = atans_table(unit_dist[i].z, unit_dist[i].x); + } + + player_angle_y = player_actor->shape_info.rotation.y; + min_angle_y = DEG2SHORT_ANGLE2(360.0f); + + /* Find the closest unit in relation to player's rotation */ + for (i = 0; i < 8; i++) { + int diff_angle_y = unit_angle_y[i] - player_angle_y; + + unit_abs_diff_angle_y[i] = ABS(diff_angle_y); + + if (unit_abs_diff_angle_y[i] > DEG2SHORT_ANGLE2(180.0f)) { + unit_abs_diff_angle_y[i] = DEG2SHORT_ANGLE2(360.0f) - unit_abs_diff_angle_y[i]; + } + + if (min_angle_y > unit_abs_diff_angle_y[i]) { + min_angle_y = unit_abs_diff_angle_y[i]; + idx = i; + } + } + + /* Special handling for diagonal units */ + if (idx == 0 || idx == 2 || idx == 5 || idx == 7) { + int near_wall; + int too_far_away = FALSE; + int check_ut0; + int check_ut1; + int wall0 = FALSE; + int wall1 = FALSE; + f32 base_ut_y = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[idx], 0.0f); + + if (idx == 0) { + check_ut0 = 1; + check_ut1 = 3; + } else if (idx == 2) { + check_ut0 = 1; + check_ut1 = 4; + } else if (idx == 5) { + check_ut0 = 3; + check_ut1 = 6; + } else { + check_ut0 = 4; + check_ut1 = 6; + } + + if (unit_exist[check_ut0]) { + f32 ground0 = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[check_ut0], 0.0f); + f32 ground1 = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[check_ut0]); + + /* If the base ground position and the 'column' height aren't the same, and our ground position is + * less than the 'column' height, there must be a wall in front of us. */ + if (ground0 != ground1 && base_ut_y < ground1) { + wall0 = TRUE; + } + } + + if (unit_exist[check_ut1]) { + f32 ground0 = mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[check_ut1], 0.0f); + f32 ground1 = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[check_ut1]); + + /* If the base ground position and the 'column' height aren't the same, and our ground position is + * less than the 'column' height, there must be a wall in front of us. */ + if (ground0 != ground1 && base_ut_y < ground1) { + wall1 = TRUE; + } + } + + /* If both units diagonally have a wall then we've definitely hit a wall */ + if (wall0 && wall1) { + near_wall = TRUE; + } else { + near_wall = FALSE; + } + + if (near_wall == FALSE) { + f32 dist = Math3DVecLengthSquare2D(unit_dist[idx].z, unit_dist[idx].x); + + if (SQ(63.245553f) > dist) { + too_far_away = FALSE; + } else { + too_far_away = TRUE; + } + } + + if (too_far_away || near_wall) { + min_angle_y = DEG2SHORT_ANGLE2(360.0f); + + if (min_angle_y > unit_abs_diff_angle_y[1]) { + min_angle_y = unit_abs_diff_angle_y[1]; + idx = 1; + } + + if (min_angle_y > unit_abs_diff_angle_y[3]) { + min_angle_y = unit_abs_diff_angle_y[3]; + idx = 3; + } + + if (min_angle_y > unit_abs_diff_angle_y[4]) { + min_angle_y = unit_abs_diff_angle_y[4]; + idx = 4; + } + + if (min_angle_y > unit_abs_diff_angle_y[6]) { + min_angle_y = unit_abs_diff_angle_y[6]; + idx = 6; + } + } + } + + if (unit_exist[idx] == FALSE) { + *pos_p = unit_pos[idx]; + return mPlayer_INDEX_AIR_SCOOP; + } else { + mActor_name_t* scoop_fg_p = mFI_UtNum2UtFG(unit_num[idx][0], unit_num[idx][1]); + mActor_name_t scoop_fg = scoop_fg_p == NULL ? EMPTY_NO : *scoop_fg_p; + int is_stump; + int is_stone_tencoin; + int is_tree; + int is_rsv; + int is_special_scoop_item; + + is_stump = FALSE; + is_stone_tencoin = FALSE; + is_tree = FALSE; + is_rsv = FALSE; + is_special_scoop_item = TRUE; + + if (IS_ITEM_TREE_STUMP(scoop_fg) != FALSE) { + is_stump = TRUE; + } else if (IS_ITEM_STONE_TC(scoop_fg) != FALSE) { + is_stone_tencoin = TRUE; + } else if (IS_ITEM_HITTABLE_TREE(scoop_fg) != FALSE) { + is_tree = TRUE; + } else if (scoop_fg == DUMMY_RESERVE) { + is_rsv = TRUE; + } else { + is_special_scoop_item = FALSE; + } + + { + f32 diff_col_y; + f32 diff_pos_y; + f32 tmp_y; + + unit_pos[idx].y = mCoBG_Wpos2BgUtCenterHeight_AddColumn(unit_pos[idx]); + diff_col_y = unit_pos[idx].y - mCoBG_GetBgY_OnlyCenter_FromWpos2(unit_pos[idx], 0.0f); + diff_pos_y = unit_pos[idx].y - player_pos_p->y; + *pos_p = unit_pos[idx]; + + if (is_special_scoop_item && diff_pos_y > diff_col_y) { + return mPlayer_INDEX_REFLECT_SCOOP; + } + + if (is_special_scoop_item && diff_pos_y < -diff_col_y) { + return mPlayer_INDEX_AIR_SCOOP; + } + + if (!is_special_scoop_item && diff_pos_y > 63.245552f) { + return mPlayer_INDEX_REFLECT_SCOOP; + } + + if (!is_special_scoop_item && diff_pos_y < -63.245552f) { + return mPlayer_INDEX_AIR_SCOOP; + } + + if (is_stump || is_stone_tencoin || is_tree || is_rsv) { + pos_p->y = mCoBG_GetBgY_OnlyCenter_FromWpos2(*pos_p, 0.0f); + diff_pos_y = pos_p->y - player_pos_p->y; + } + + { + xyz_t start_pos = *player_pos_p; + xyz_t end_pos = *pos_p; + xyz_t rev_pos; + xyz_t start2_pos = *player_pos_p; + xyz_t end2_pos = *pos_p; + xyz_t rev2_pos; + xyz_t rev3_pos; + xyz_t rev4_pos; + + start_pos.y += 1.0f; + end_pos.y += 1.0f; + start2_pos.y -= 1.0f; + end2_pos.y -= 1.0f; + + if (is_stump) { + mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsStump, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsStump, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsStump, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsStump, + mCoBG_LINECHECK_CAT_WALL); + } else if (is_stone_tencoin) { + mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsStoneCoin10, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsStoneCoin10, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsStoneCoin10, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsStoneCoin10, + mCoBG_LINECHECK_CAT_WALL); + } else if (is_rsv) { + mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, &mNT_ItIsReserveDummy, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, &mNT_ItIsReserveDummy, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, &mNT_ItIsReserveDummy, + mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, &mNT_ItIsReserveDummy, + mCoBG_LINECHECK_CAT_WALL); + } else if (!is_tree) { + mCoBG_LineCheck_RemoveFg(&rev_pos, start_pos, end_pos, NULL, mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev3_pos, end_pos, start_pos, NULL, mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev2_pos, start2_pos, end2_pos, NULL, mCoBG_LINECHECK_CAT_WALL); + mCoBG_LineCheck_RemoveFg(&rev4_pos, end2_pos, start2_pos, NULL, mCoBG_LINECHECK_CAT_WALL); + } + + if (!is_tree) { + if (((rev_pos.x != 0.0f || rev_pos.y != 0.0f || rev_pos.z != 0.0f) && + (rev2_pos.x != 0.0f || rev2_pos.y != 0.0f || rev2_pos.z != 0.0f)) || + ((rev3_pos.x != 0.0f || rev3_pos.y != 0.0f || rev3_pos.z != 0.0f) && + (rev4_pos.x != 0.0f || rev4_pos.y != 0.0f || rev4_pos.z != 0.0f))) { + if (diff_pos_y >= 0.0f) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else { + return mPlayer_INDEX_AIR_SCOOP; + } + } + } + + { + int dig_status; + int hit_flag = FALSE; + ACTOR* hit_actor_p; + mActor_name_t hit_item; + + dig_status = mFI_GetDigStatus(&hit_item, *pos_p, gold_scoop); + + /* Don't let the player hit NPCs with the shovel */ + hit_actor_p = mPlib_Search_exist_npc_inCircle_forScoop(game, pos_p, SQ(39.0f)); + if (hit_actor_p != NULL) { + return mPlayer_INDEX_AIR_SCOOP; + } + + hit_actor_p = mPlib_Search_exist_psnowman_inCircle_forScoop(game, pos_p, SQ(39.0f)); + if (hit_actor_p != NULL) { + hit_flag = TRUE; + } + + if (hit_actor_p == NULL) { + hit_actor_p = mPlib_Search_exist_snowball_forScoop(game, pos_p); + if (hit_actor_p != NULL) { + hit_flag = TRUE; + } + } + + if (hit_actor_p == NULL) { + hit_actor_p = mPlib_Search_exist_ball_forScoop(game, pos_p); + if (hit_actor_p != NULL) { + hit_flag = TRUE; + } + } + + if (reflect_actor_pp != NULL) { + *reflect_actor_pp = hit_actor_p; + } + + if (scoop_fg != hit_item) { + *item_p = hit_item; + } else { + *item_p = scoop_fg; + } + + if (is_tree) { + return mPlayer_INDEX_REFLECT_SCOOP; + } + + if (is_rsv) { + return mPlayer_INDEX_REFLECT_SCOOP; + } + + switch (dig_status) { + case mFI_DIGSTATUS_FILLIN: + if (hit_flag) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else if (is_stone_tencoin) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else { + return mPlayer_INDEX_FILL_SCOOP; + } + break; + case mFI_DIGSTATUS_DIG: + case mFI_DIGSTATUS_PUT_ITEM: + if (hit_flag) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else if (is_stone_tencoin) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else { + return mPlayer_INDEX_DIG_SCOOP; + } + break; + case mFI_DIGSTATUS_GET_ITEM: + if (hit_flag) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else if (is_stone_tencoin) { + return mPlayer_INDEX_REFLECT_SCOOP; + } else { + return mPlayer_INDEX_GET_SCOOP; + } + break; + case mFI_DIGSTATUS_MISS: + return mPlayer_INDEX_AIR_SCOOP; + default: + if (is_stone_tencoin) { + *item_p = scoop_fg; + } + return mPlayer_INDEX_REFLECT_SCOOP; + } + } + } + } + } + } + } + + return -1; +} + +extern int mPlib_Check_scene_able_change_camera_pos(void) { + if (mFI_CheckFieldData()) { + int field_type = mFI_GET_TYPE(mFI_GetFieldId()); + + return (field_type == mFI_FIELD_NPCROOM0 || field_type == mFI_FIELD_PLAYER0_ROOM || + Save_Get(scene_no) == SCENE_MUSEUM_ROOM_FOSSIL || Save_Get(scene_no) == SCENE_MUSEUM_ROOM_PAINTING || + Save_Get(scene_no) == SCENE_MUSEUM_ROOM_INSECT || Save_Get(scene_no) == SCENE_MUSEUM_ROOM_FISH); + } + + return FALSE; +} + +extern int mPlib_Check_RotateOctagon(void) { + return GET_PLAYER_ACTOR_NOW()->Check_RotateOctagon_proc(gamePT); +} + +extern int mPlib_Set_EndWashCar(void) { + if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WASH_CAR) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + + wash_car_p->ret_order = TRUE; + return TRUE; + } + + return FALSE; +} + +extern int mPlib_Set_AnimeSpeedWashCar(f32 anime_speed) { + if (mPlib_get_player_actor_main_index(gamePT) == mPlayer_INDEX_WASH_CAR) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + + player->keyframe0.frame_control.speed = anime_speed; + player->keyframe1.frame_control.speed = anime_speed; + return TRUE; + } + + return FALSE; +} + +extern int mPlib_Check_now_handin_item_kind(void) { + return GET_PLAYER_ACTOR_NOW()->item_kind; +} + +extern int mPlib_Check_now_handin_item(void) { + return GET_PLAYER_ACTOR_NOW()->item_kind >= 0; +} + +extern void mPlib_Set_able_hand_all_item_in_demo(s8 v) { + GET_PLAYER_ACTOR_NOW()->able_hand_all_item_in_demo = v; +} + +extern int mPlib_Get_status_for_bee(void) { + return GET_PLAYER_ACTOR_NOW()->Get_status_for_bee_proc(GET_PLAYER_ACTOR_NOW_ACTOR()); +} + +extern int mPlib_Check_end_stung_bee(void) { + return GET_PLAYER_ACTOR_NOW()->Check_end_stung_bee_proc(GET_PLAYER_ACTOR_NOW_ACTOR()); +} + +extern int mPlib_Check_Label_main_push_snowball(void* label) { + return GET_PLAYER_ACTOR_NOW()->Check_Label_main_push_snowball_proc(gamePT, label); +} + +extern int mPlib_Check_Label_main_wade_snowball(void* label) { + return GET_PLAYER_ACTOR_NOW()->Check_Label_main_wade_snowball_proc(gamePT, label); +} + +extern int mPlib_Set_ScrollDemo_forWade_snowball(int dir, const xyz_t* snowball_dist_p) { + return GET_PLAYER_ACTOR_NOW()->Set_ScrollDemo_forWade_snowball_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), dir, + snowball_dist_p); +} + +extern int mPlib_GetSnowballPos_forWadeSnowball(xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->GetSnowballPos_forWadeSnowball_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_CheckCondition_forWadeSnowball(const xyz_t* pos_p, s16 angle_y) { + return GET_PLAYER_ACTOR_NOW()->CheckCondition_forWadeSnowball_proc(gamePT, pos_p, angle_y); +} + +extern int mPlib_SetParam_for_push_snowball(const xyz_t* pos_p, s16 angle_y, f32 anim_speed) { + return GET_PLAYER_ACTOR_NOW()->SetParam_for_push_snowball_proc(gamePT, pos_p, angle_y, anim_speed); +} + +extern void mPlib_Set_crash_snowball_for_wade(int v) { + GET_PLAYER_ACTOR_NOW()->crash_snowball_for_wade = v; +} + +static mPlayer_Controller_Data_c controller_data_for_title_demo; + +extern mPlayer_Controller_Data_c* mPlib_Get_controller_data_for_title_demo_p(void) { + return &controller_data_for_title_demo; +} + +extern void mPlib_Clear_controller_data_for_title_demo(void) { + bzero(&controller_data_for_title_demo, sizeof(controller_data_for_title_demo)); + controller_data_for_title_demo.equipped_item = ITM_PAPER_START; /* @BUG - this should be a tool, not paper */ +} + +extern void mPlib_SetData1_controller_data_for_title_demo(int btn_a, int btn_b, f32 stick_x, f32 stick_y) { + mCon_calc(&controller_data_for_title_demo.mcon, stick_x, stick_y); + + if (controller_data_for_title_demo.trigger_btn_a == FALSE && btn_a != FALSE) { + controller_data_for_title_demo.trigger_btn_a = TRUE; + } else { + controller_data_for_title_demo.trigger_btn_a = FALSE; + } + controller_data_for_title_demo.btn_a = btn_a; + + if (controller_data_for_title_demo.trigger_btn_b == FALSE && btn_b != FALSE) { + controller_data_for_title_demo.trigger_btn_b = TRUE; + } else { + controller_data_for_title_demo.trigger_btn_b = FALSE; + } + controller_data_for_title_demo.btn_b = btn_b; +} + +extern void mPlib_SetData2_controller_data_for_title_demo(mActor_name_t item) { + controller_data_for_title_demo.equipped_item = item; +} + +extern int mPlib_Check_CorrectPlayerPos_forEvent(void) { + if (Common_Get(player_actor_exists)) { + int main_index = GET_PLAYER_ACTOR_NOW()->now_main_index; + + if (mPlayer_MAIN_INDEX_VALID(main_index) != FALSE) { + // clang-format off + static const s8 data[] = { + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + TRUE, + TRUE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + FALSE, + }; + // clang-format on + + return data[main_index]; + } + } + + return FALSE; +} + +extern int mPlib_Check_UKI_COMEBACK_STATUS(void) { + if (Common_Get(player_actor_exists)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + + if (player->fishing_rod_actor_p) { + UKI_ACTOR* uki_actor = (UKI_ACTOR*)player->fishing_rod_actor_p; + + return uki_actor->status == aUKI_STATUS_COMEBACK; + } + } + + return FALSE; +} + +extern int mPlib_Check_tree_shaken(const xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Check_tree_shaken_little(const xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_little_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern int mPlib_Check_tree_shaken_big(const xyz_t* pos_p) { + return GET_PLAYER_ACTOR_NOW()->Check_tree_shaken_big_proc(GET_PLAYER_ACTOR_NOW_ACTOR(), pos_p); +} + +extern mActor_name_t mPlib_Get_itemNo_forWindow(void) { + if (Common_Get(player_actor_exists) == FALSE) { + return EMPTY_NO; + } + + if (SubmenuArea_IsPlayer() == FALSE) { + return EMPTY_NO; + } + + return GET_PLAYER_ACTOR_NOW()->Get_itemNo_forWindow_proc(GET_PLAYER_ACTOR_NOW_ACTOR()); +} + +extern int mPlib_able_birth_bee(void) { + if (mEv_CheckFirstIntro() != FALSE || Common_Get(reset_flag) != FALSE || + Common_Get(player_bee_chase_flag) != FALSE || mEv_CheckTitleDemo() > 0) { + return FALSE; + } + + return TRUE; +} + +extern int mPlib_check_able_change_camera_normal_index(void) { + if (Common_Get(player_actor_exists) == FALSE) { + return EMPTY_NO; + } + + if (SubmenuArea_IsPlayer() == FALSE) { + return EMPTY_NO; + } + + return GET_PLAYER_ACTOR_NOW()->check_able_change_camera_normal_index_proc(GET_PLAYER_ACTOR_NOW_ACTOR()); +} + +extern int mPlib_check_player_actor_main_index_Furniture_Move(GAME* game) { + int res = FALSE; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUSH || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PULL) { + res = TRUE; + } + + return res; +} + +extern int mPlib_check_player_actor_main_index_RecieveMove(GAME* game) { + int res = FALSE; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_WAIT || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_STRETCH || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RECIEVE_PUTAWAY) { + res = TRUE; + } + + return res; +} + +extern int mPlib_check_player_actor_main_index_Pitfall(GAME* game) { + int res = FALSE; + + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_READY_PITFALL || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_FALL_PITFALL || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_STRUGGLE_PITFALL || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_CLIMBUP_PITFALL) { + res = TRUE; + } + + return res; +} + +extern int mPlib_check_player_actor_main_index_OutDoorMove(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DMA || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_INTRO || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_COMPLETE_PAYMENT || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR2 || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TAKEOUT_ITEM) { + return TRUE; + } + + return FALSE; +} + +extern int mPlib_check_player_actor_main_index_OutDoorMove2(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DMA || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_INTRO || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_OUTDOOR || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_RETURN_OUTDOOR || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_COMPLETE_PAYMENT || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_TAKEOUT_ITEM) { + return TRUE; + } + + return FALSE; +} + +extern int mPlib_check_player_actor_main_index_AllWade(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_WADE || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WADE_SNOWBALL || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_DEMO_GETON_BOAT_WADE) { + return TRUE; + } + + return FALSE; +} + +extern int mPlib_check_player_actor_main_index_catch_insect(GAME* game) { + return (mPlib_Get_item_net_catch_label() != 0 && + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWING_NET) || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PULL_NET || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_NOTICE_NET || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTAWAY_NET; +} + +extern int mPlib_check_player_actor_main_index_catch_fish(GAME* game) { + return mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_FLY_ROD || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_NOTICE_ROD || + mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_PUTAWAY_ROD; +} + +extern int mPlib_check_player_actor_start_switch_on_lighthouse(GAME* game) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE && + GET_PLAYER_ACTOR_GAME(game)->keyframe0.frame_control.current_frame > 1.0f) { + return TRUE; + } + + return FALSE; +} + +extern int mPlib_Check_stung_mosquito(void* label) { + return GET_PLAYER_ACTOR_NOW()->Check_stung_mosquito_proc(gamePT, label); +} + +extern void mPlib_Set_boat_angleZ(s16 angle_z) { + GET_PLAYER_ACTOR_NOW()->boat_angleZ = angle_z; +} + +extern int mPlib_CheckButtonOnly_forDush(void) { + return chkButton(BUTTON_B) || chkButton(BUTTON_L) || chkButton(BUTTON_R); +} + +extern int mPlib_Check_golden_item_get_demo_end(int gold_item_type) { + static u8 data[] = { + (1 << mPlayer_GOLDEN_ITEM_TYPE_AXE), + (1 << mPlayer_GOLDEN_ITEM_TYPE_NET), + (1 << mPlayer_GOLDEN_ITEM_TYPE_ROD), + (1 << mPlayer_GOLDEN_ITEM_TYPE_SHOVEL), + }; + + return data[gold_item_type] & Now_Private->golden_items_collected; +} + +extern void mPlib_Set_change_color_request(void) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + + player->change_color_request = TRUE; +} diff --git a/src/m_player_main_air_axe.c_inc b/src/m_player_main_air_axe.c_inc new file mode 100644 index 00000000..d5e643c2 --- /dev/null +++ b/src/m_player_main_air_axe.c_inc @@ -0,0 +1,89 @@ +static int Player_actor_request_main_air_axe_all(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_AIR_AXE, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_AIR_AXE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Air_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + mPlayer_request_swing_axe_c* req_axe = &player->requested_main_index_data.swing_axe; + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_AXE_SUKA1, mPlayer_ANIM_AXE_SUKA1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_SetEffectStart_axe_common(actor, game); + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Air_axe(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625002f); +} + +static int Player_actor_CulcAnimation_Air_axe(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Air_axe(ACTOR* actor, GAME* game) { + Player_actor_SetEffectStart_axe_common(actor, game); +} + +static void Player_actor_SetSound_Air_axe(ACTOR* actor) { + Player_actor_SetSound_AXE_FURI_Swing_axe(actor, 0); +} + +static void Player_actor_SearchAnimation_Air_axe(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Air_axe(actor, game); + Player_actor_SetSound_Air_axe(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Air_axe(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Air_axe(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromAir_axe(ACTOR* actor, GAME* game, int arg) { + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_c* kf = &player->keyframe0; + + if (Player_actor_Check_AnimationFrame(&kf->frame_control, 35.5f)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, TRUE); + } else if ((kf->frame_control.current_frame >= 36.0f) && + (!Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4)) && + ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY()))) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } +} + +static void Player_actor_main_Air_axe(ACTOR* actor, GAME* game) { + int arg; + f32 frame_calc; + + Player_actor_Movement_Air_axe(actor); + Player_actor_Reinput_force_position_angle(actor, game); + arg = Player_actor_CulcAnimation_Air_axe(actor, &frame_calc); + Player_actor_SearchAnimation_Air_axe(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Air_axe(actor, game); + Player_actor_BGcheck_Air_axe(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromAir_axe(actor, game, arg); +} diff --git a/src/m_player_main_air_rod.c_inc b/src/m_player_main_air_rod.c_inc new file mode 100644 index 00000000..00c5b1c7 --- /dev/null +++ b/src/m_player_main_air_rod.c_inc @@ -0,0 +1,81 @@ +static int Player_actor_request_main_air_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_AIR_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_AIR_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Air_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 player_frame = player->keyframe0.frame_control.current_frame; + f32 frame = player->item_keyframe.frame_control.current_frame; + + int kind; + + kind = Player_actor_Get_ItemKind_from_submenu(); + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_RUN_SLIP1, mPlayer_INDEX_FALL, 0.0f, frame, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_NOT_SAO_SWING1, mPlayer_ANIM_NOT_SAO_SWING1, + player_frame, player_frame, 0.5f, 0.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_ROD, actor->world.position, 2, + actor->shape_info.rotation.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_Movement_Air_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Air_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Air_rod(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + Player_actor_sound_ROD_STROKE_small(actor); + } +} + +static void Player_actor_SearchAnimation_Air_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Air_rod(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} +static void Player_actor_ObjCheck_Air_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Air_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromAir_rod(ACTOR* actor, GAME* game, int ready) { + if (ready) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Air_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Air_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Air_rod(actor, &frame_calc); + Player_actor_SearchAnimation_Air_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Air_rod(actor, game); + Player_actor_BGcheck_Air_rod(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromAir_rod(actor, game, end_flag); +} diff --git a/src/m_player_main_air_scoop.c_inc b/src/m_player_main_air_scoop.c_inc new file mode 100644 index 00000000..d41079d1 --- /dev/null +++ b/src/m_player_main_air_scoop.c_inc @@ -0,0 +1,71 @@ +static int Player_actor_request_main_air_scoop_all(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_AIR_SCOOP, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_AIR_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Air_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_DIG_SUKA1, mPlayer_ANIM_DIG_SUKA1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Air_scoop(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Air_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Air_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 13.0f)) { + Player_actor_sound_karaburi(actor); + } +} + +static void Player_actor_SearchAnimation_Air_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Air_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Air_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Air_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromAir_scoop(ACTOR* actor, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Air_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Air_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Air_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Air_scoop(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Air_scoop(actor, game); + Player_actor_BGcheck_Air_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromAir_scoop(actor, game, end_flag); +} diff --git a/src/m_player_main_broken_axe.c_inc b/src/m_player_main_broken_axe.c_inc new file mode 100644 index 00000000..c126ae1e --- /dev/null +++ b/src/m_player_main_broken_axe.c_inc @@ -0,0 +1,212 @@ +static int Player_actor_request_main_broken_axe_type_reflect(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + ACTOR* hit_actor, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_BROKEN_AXE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_reflect_axe_c* main_axe = &player->requested_main_index_data.reflect_axe; + + main_axe->break_flag = TRUE; + Player_actor_request_main_reflect_axe_common(main_axe, pos, hit_item, 0, hit_actor); + Player_actor_request_main_index(game, mPlayer_INDEX_BROKEN_AXE, priority); + + return TRUE; + } + + return FALSE; +} +static int Player_actor_request_main_broken_axe_type_swing(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + int hit_ut_x, int hit_ut_z, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_BROKEN_AXE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_swing_axe_c* main_axe = &player->requested_main_index_data.swing_axe; + + main_axe->break_flag = FALSE; + Player_actor_request_main_swing_axe_common(main_axe, pos, hit_item, 0, hit_ut_x, hit_ut_z); + Player_actor_request_main_index(game, mPlayer_INDEX_BROKEN_AXE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Broken_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_request_reflect_axe_c* req_ref; + mPlayer_main_broken_axe_c* main_axe = &player->main_data.broken_axe; + mPlayer_request_swing_axe_c* req_swing; + + int break_type; + + req_swing = &player->requested_main_index_data.swing_axe; + req_ref = &player->requested_main_index_data.reflect_axe; + break_type = req_ref->break_flag; + + main_axe->break_type = req_swing->break_flag; + main_axe->_28 = 0.0f; + main_axe->_2C = 0; + + if (break_type != mPlayer_AXE_BREAK_FROM_SWING) { + Player_actor_setup_main_Reflect_axe_common(req_ref, &main_axe->axe.reflect_axe); + } else { + Player_actor_setup_main_Swing_axe_common(req_swing, &main_axe->axe.swing_axe); + } + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_AXE_BREAK1, mPlayer_ANIM_AXE_BREAK1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Broken_axe(ACTOR* actor, GAME* game) { + mBGMPsComp_delete_ps_demo(125, 0x168); + actor->speed = 0.0f; +} + +static void Player_actor_Movement_Broken_axe(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 cur = player->keyframe0.frame_control.current_frame; + + if (player->animation0_idx == mPlayer_ANIM_AXE_BREAK1 && cur < 15.0f) { + mPlayer_main_broken_axe_c* main_axe = &player->main_data.broken_axe; + mPlayer_main_axe_common_c* axe_data_p; + + switch (main_axe->break_type) { + default: + axe_data_p = &main_axe->axe.reflect_axe.axe_common; + break; + case mPlayer_AXE_BREAK_FROM_SWING: + axe_data_p = &main_axe->axe.swing_axe.axe_common; + break; + } + Player_actor_Movement_Reflect_axe_common(actor, axe_data_p, mPlayer_REQUEST_PRIORITY_1); + } else { + add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50); + actor->world.angle.y = actor->shape_info.rotation.y; + } +} + +static int Player_actor_CulcAnimation_Broken_axe(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Broken_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t pos; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + s16 rot = actor->world.angle.y; + + pos = actor->world.position; + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_AXE, pos, 2, actor->shape_info.rotation.y, game, + RSV_NO, actor->bg_collision_check.result.unit_attribute, 3); + } +} + +static void Player_actor_SearchAnimation_Broken_axe(ACTOR* actor, GAME* game, int flag, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->animation0_idx == mPlayer_ANIM_AXE_BREAK1) { + mPlayer_main_broken_axe_c* main_axe = &player->main_data.broken_axe; + + if (main_axe->break_type != mPlayer_AXE_BREAK_FROM_SWING) { + Player_actor_SearchAnimation_Reflect_axe(actor, game, &main_axe->axe.reflect_axe, 1, frame); + } else { + Player_actor_SetAngleSpeedF_Reflect_axe(actor, 1); + Player_actor_SearchAnimation_Swing_axe(actor, game, &main_axe->axe.swing_axe, 1, frame); + } + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Broken_axe(actor, game); + } + if (flag != 0) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_AXE_BREAKWAIT1, mPlayer_ANIM_AXE_BREAKWAIT1, + 1.0f, 1.0f, 0.5f, 0.0f, 0); + } + } +} + +static void Player_actor_ObjCheck_Broken_axe(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Broken_axe(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_Broken_axe_demo_ct(ACTOR* actor) { + rgba_t color; + + mDemo_Set_msg_num(0x3067); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + + color.r = 225; + color.g = 165; + color.b = 255; + color.a = 255; + + mDemo_Set_talk_window_color(&color); + mBGMPsComp_make_ps_demo(125, 0x168); +} + +static int Player_actor_MessageControl_Broken_axe(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_broken_axe_c* main_axe = &player->main_data.broken_axe; + + int* _2Cp = &main_axe->_2C; + + switch (main_axe->_2C) { + f32* _28p; + case 0: + _28p = &main_axe->_28; + if (*_28p < 80.0f) { + *_28p += 1.0f; + } else { + *_2Cp = 1; + } + break; + case 1: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + mDemo_Request(mDemo_TYPE_REPORT, actor, Player_actor_Broken_axe_demo_ct); + } else { + *_2Cp = 2; + } + break; + + case 2: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + *_2Cp = 3; + } + break; + + default: + return 1; + } + + return 0; +} + +static void Player_actor_request_proc_index_fromBroken_axe(ACTOR* actor, GAME* game, int arg) { + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Broken_axe(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg; + int cnt; + + Player_actor_Movement_Broken_axe(actor); + Player_actor_Reinput_force_position_angle(actor, game); + arg = Player_actor_CulcAnimation_Broken_axe(actor, &frame_calc); + Player_actor_SearchAnimation_Broken_axe(actor, game, arg, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Broken_axe(actor, game); + Player_actor_BGcheck_Broken_axe(actor); + Player_actor_Item_main(actor, game); + cnt = Player_actor_MessageControl_Broken_axe(actor); + Player_actor_request_proc_index_fromBroken_axe(actor, game, cnt); +} diff --git a/src/m_player_main_cast_rod.c_inc b/src/m_player_main_cast_rod.c_inc new file mode 100644 index 00000000..8b09eea5 --- /dev/null +++ b/src/m_player_main_cast_rod.c_inc @@ -0,0 +1,82 @@ +static int Player_actor_request_main_cast_rod(GAME* game, const xyz_t* pos, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_CAST_ROD, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.cast_rod.bobber_target_pos = *pos; + Player_actor_request_main_index(game, mPlayer_INDEX_CAST_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Cast_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + f32 frame = player->item_keyframe.frame_control.current_frame; + mPlayer_request_cast_rod_c* req_cast = &player->requested_main_index_data.cast_rod; + mPlayer_main_cast_rod_c* main_cast = &player->main_data.cast_rod; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + main_cast->bobber_target_pos = req_cast->bobber_target_pos; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMBRELLA1, mPlayer_INDEX_TURN_DASH, 0.0f, frame, 0); + Player_actor_setup_main_Base(actor, game); + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_ROD, actor->world.position, 2, + actor->shape_info.rotation.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_Movement_Cast_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Cast_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Cast_rod(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + Player_actor_sound_ROD_STROKE(actor); + } +} + +static void Player_actor_SearchAnimation_Cast_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Cast_rod(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Cast_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Cast_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromCast_rod(GAME* game, int ready) { + if (ready) { + Player_actor_request_main_relax_rod(game, mPlayer_REQUEST_PRIORITY_22); + } +} + +static void Player_actor_main_Cast_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Cast_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Cast_rod(actor, &frame_calc); + Player_actor_SearchAnimation_Cast_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Cast_rod(actor, game); + Player_actor_BGcheck_Cast_rod(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromCast_rod(game, end_flag); +} diff --git a/src/m_player_main_change_cloth.c_inc b/src/m_player_main_change_cloth.c_inc new file mode 100644 index 00000000..d3f50ce8 --- /dev/null +++ b/src/m_player_main_change_cloth.c_inc @@ -0,0 +1,175 @@ +static int Player_actor_request_main_change_cloth_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, + int prev_main_index, mActor_name_t cloth_item, u16 cloth_idx, + int try_on_flag, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_CHANGE_CLOTH, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_change_cloth_c* req_change_cloth_p = &player->requested_main_index_data.change_cloth; + + req_change_cloth_p->talk_actor = talk_actor_p; + req_change_cloth_p->turn_flag = turn_flag; + req_change_cloth_p->prev_main_index = prev_main_index; + req_change_cloth_p->cloth_item = cloth_item; + req_change_cloth_p->cloth_idx = cloth_idx; + req_change_cloth_p->try_on_flag = try_on_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_CHANGE_CLOTH, prio); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_request_main_change_cloth_forNPC(GAME* game, mActor_name_t cloth_item, u16 cloth_idx, + int try_on_flag) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + ACTOR* talk_actor_p; + int turn_flag; + int prev_main_index = player->now_main_index; + + if (prev_main_index == mPlayer_INDEX_TALK) { + mPlayer_main_talk_c* talk_p = &player->main_data.talk; + + talk_actor_p = talk_p->talk_actor_p; + turn_flag = talk_p->turn_flag; + } else { + talk_actor_p = NULL; + turn_flag = FALSE; + } + + return Player_actor_request_main_change_cloth_all(game, talk_actor_p, turn_flag, prev_main_index, cloth_item, + cloth_idx, try_on_flag, mPlayer_REQUEST_PRIORITY_19); +} + +static void Player_actor_setup_main_Change_cloth(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_change_cloth_c* req_change_cloth_p = &player->requested_main_index_data.change_cloth; + mPlayer_main_change_cloth_c* change_cloth_p = &player->main_data.change_cloth; + int try_on_flag = req_change_cloth_p->try_on_flag; + int anim0_idx = try_on_flag ? mPlayer_ANIM_MENU_CHANGE1 : mPlayer_ANIM_ITAZURA1; + int anim1_idx; + int part_table_idx; + f32 speed = try_on_flag ? 1.0f : 0.5f; + + change_cloth_p->talk_actor = req_change_cloth_p->talk_actor; + change_cloth_p->turn_flag = req_change_cloth_p->turn_flag; + change_cloth_p->prev_main_index = req_change_cloth_p->prev_main_index; + change_cloth_p->cloth_item = req_change_cloth_p->cloth_item; + change_cloth_p->cloth_idx = req_change_cloth_p->cloth_idx; + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, speed, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + + if (try_on_flag == FALSE) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_HALLOWEEN, player->feel_pos, 2, actorx->shape_info.rotation.y, game, + RSV_NO, 0, 0); + } +} + +static void Player_actor_Movement_Change_cloth(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + + if (anim0_idx != mPlayer_ANIM_MENU_CHANGE1) { + Player_actor_Movement_Base_Stop(actorx, FALSE); + } else { + GAME_PLAY* play = (GAME_PLAY*)game; + Camera2* camera2_p = &play->camera; + s_xyz* dir_p = &camera2_p->direction; + s16 dir_y = dir_p->y + DEG2SHORT_ANGLE2(180.0f); + + add_calc_short_angle2(&actorx->shape_info.rotation.y, dir_y, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; + Player_actor_Movement_Base_Stop(actorx, FALSE); + } +} + +static int Player_actor_CulcAnimation_Change_cloth(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_SetEffect_Change_cloth(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + + if (anim0_idx == mPlayer_ANIM_MENU_CHANGE1) { + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 16.0f)) { + Player_actor_sound_wear(actorx); + eEC_CLIP->effect_make_proc(eEC_EFFECT_KIGAE, player->feel_pos, 2, actorx->shape_info.rotation.y, game, + RSV_NO, 0, 0); + } + } +} + +static void Player_actor_SetTexPallet_Change_cloth(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + int menu_flag = anim0_idx == mPlayer_ANIM_MENU_CHANGE1; + f32 frame = menu_flag ? 36.0f : 18.0f; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, frame)) { + mPlayer_main_change_cloth_c* change_cloth_p = &player->main_data.change_cloth; + mActor_name_t cloth_item = change_cloth_p->cloth_item; + u16 cloth_idx = change_cloth_p->cloth_idx; + + if (menu_flag == FALSE) { + mPlib_change_player_cloth_info(&Now_Private->cloth, cloth_item); + mPr_SetItemCollectBit(cloth_item); + } + + mPlib_change_player_cloth(game, cloth_idx); + } +} + +static void Player_actor_SearchAnimation_Change_cloth(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetEffect_Change_cloth(actorx, game); + Player_actor_SetTexPallet_Change_cloth(actorx, game); + } +} + +static void Player_actor_set_eye_pattern_Change_cloth(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); +} + +static void Player_actor_ObjCheck_Change_cloth(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromChange_cloth(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_change_cloth_c* change_cloth_p = &player->main_data.change_cloth; + int prev_main_index = change_cloth_p->prev_main_index; + + Player_actor_SettleRequestMainIndexPriority(actorx); + if (prev_main_index != mPlayer_INDEX_TALK) { + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } else { + Player_actor_request_main_talk_all(game, change_cloth_p->talk_actor, change_cloth_p->turn_flag, -12.0f, + FALSE, mPlayer_REQUEST_PRIORITY_19); + } + } +} + +static void Player_actor_main_Change_cloth(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Change_cloth(actorx, game); + end_flag = Player_actor_CulcAnimation_Change_cloth(actorx, &last_anim0_cur_frame); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Change_cloth(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Change_cloth(actorx); + Player_actor_ObjCheck_Change_cloth(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromChange_cloth(actorx, game, end_flag); +} diff --git a/src/m_player_main_climbup_pitfall.c_inc b/src/m_player_main_climbup_pitfall.c_inc new file mode 100644 index 00000000..8d28c107 --- /dev/null +++ b/src/m_player_main_climbup_pitfall.c_inc @@ -0,0 +1,103 @@ +static int Player_actor_request_main_climbup_pitfall_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_CLIMBUP_PITFALL, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_CLIMBUP_PITFALL, prio); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Get_PlayerAnimeIndex_fromItemKind_Climbup_pitfall(int item_kind) { + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { + return mPlayer_ANIM_DERU2; + } else { + return mPlayer_ANIM_DERU1; + } +} + +static void Player_actor_setup_main_Climbup_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + int item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + int anim0_idx = Player_actor_Get_PlayerAnimeIndex_fromItemKind_Climbup_pitfall(item_kind); + int anim1_idx; + int part_table_idx; + + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->pit_exit_proc != NULL) { + xyz_t* player_pos_p = &actorx->world.position; + int ut_x; + int ut_z; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, *player_pos_p)) { + mActor_name_t* fg_p = mFI_GetUnitFG(*player_pos_p); + + if (fg_p != NULL) { + Common_Get(clip).bg_item_clip->pit_exit_proc(*fg_p, ut_x, ut_z, EMPTY_NO); + } + } + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &actorx->world.position, + actorx->shape_info.rotation.y, actorx->shape_info.rotation.y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim0_idx, 1.0f, 1.0f, 1.0f, -5.0f, cKF_FRAMECONTROL_STOP, + mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Climbup_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); +} + +static int Player_actor_CulcAnimation_Climbup_pitfall(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Climbup_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_SearchAnimation_Climbup_pitfall(ACTOR* actorx) { + Player_actor_AppearShadow_fromAnimationFrame(actorx, 12.0f, 44.0f); +} + +static void Player_actor_set_eye_pattern_Climbup_pitfall(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); +} + +static void Player_actor_ObjCheck_Climbup_pitfall(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromClimbup_pitfall(ACTOR* actorx, GAME* game, int end_flag) { + + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Climbup_pitfall(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Climbup_pitfall(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Climbup_pitfall(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Climbup_pitfall(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Climbup_pitfall(actorx); + Player_actor_ObjCheck_Climbup_pitfall(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromClimbup_pitfall(actorx, game, end_flag); +} diff --git a/src/m_player_main_close_furniture.c_inc b/src/m_player_main_close_furniture.c_inc new file mode 100644 index 00000000..323a3908 --- /dev/null +++ b/src/m_player_main_close_furniture.c_inc @@ -0,0 +1,100 @@ +static int Player_actor_request_main_close_furniture(GAME* game, int priority) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_WAIT_OPEN_FURNITURE && + Player_actor_check_request_main_able(game, mPlayer_INDEX_CLOSE_FURNITURE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int anim_idx; + switch (player->animation0_idx) { + case mPlayer_ANIM_KAGU_WAIT_D1: + anim_idx = mPlayer_ANIM_KAGU_CLOSE_D1; + break; + case mPlayer_ANIM_KAGU_WAIT_H1: + anim_idx = mPlayer_ANIM_KAGU_CLOSE_H1; + break; + default: + anim_idx = mPlayer_ANIM_KAGU_CLOSE_K1; + break; + } + + player->requested_main_index_data.close_furniture.anim_idx = anim_idx; + Player_actor_request_main_index(game, mPlayer_INDEX_CLOSE_FURNITURE, priority); + + return TRUE; + } + return FALSE; +} + +static void Player_actor_settle_main_Close_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); +} + +static void Player_actor_setup_main_Close_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_close_furniture_c* req_close = &player->requested_main_index_data.close_furniture; + int anim_idx; + + keyf = &player->keyframe0; + anim_idx = req_close->anim_idx; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 5.0f, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} +static int Player_actor_CulcAnimation_Close_furniture(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Movement_Close_furniture(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Actor_position_moveF(actor); +} + +static void Player_actor_SearchAnimation_Close_furniture(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Close_furniture(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Close_furniture(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromClose_furniture(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + if (player->keyframe0.frame_control.speed == 0.0f) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -10.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + player->keyframe0.frame_control.speed = 0.0f; + player->keyframe1.frame_control.speed = 0.0f; + } + } +} + +static void Player_actor_main_Close_furniture(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Close_furniture(actor, &frame_calc); + + Player_actor_Movement_Close_furniture(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Close_furniture(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Close_furniture(actor, game); + Player_actor_BGcheck_Close_furniture(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromClose_furniture(actor, game, arg); +} diff --git a/src/m_player_main_collect_rod.c_inc b/src/m_player_main_collect_rod.c_inc new file mode 100644 index 00000000..ff970433 --- /dev/null +++ b/src/m_player_main_collect_rod.c_inc @@ -0,0 +1,75 @@ +static int Player_actor_request_main_collect_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_COLLECT_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_COLLECT_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Collect_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_TRANS_WAIT1, mPlayer_INDEX_DOOR, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_NOT_GET_T1, mPlayer_ANIM_NOT_GET_T1, 1.0f, 1.0f, 0.5f, + 0.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_ROD_BACK(actor); + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_ROD, actor->world.position, 2, + actor->shape_info.rotation.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_settle_main_Collect_rod(ACTOR* actorx, GAME* game) { + Player_actor_settle_main_Collect_rod_other_func2(actorx, game); +} + +static void Player_actor_Movement_Collect_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Collect_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SearchAnimation_Collect_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Collect_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Collect_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromCollect_rod(ACTOR* actor, GAME* game, int ready, int status) { + if (ready && status != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Collect_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + int status; + + Player_actor_Movement_Collect_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Collect_rod(actor, &frame_calc); + Player_actor_SearchAnimation_Collect_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Collect_rod(actor, game); + Player_actor_BGcheck_Collect_rod(actor); + status = Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromCollect_rod(actor, game, end_flag, status); + Player_actor_main_Collect_rod_other_func2(actor, game); +} diff --git a/src/m_player_main_complete_payment.c_inc b/src/m_player_main_complete_payment.c_inc new file mode 100644 index 00000000..939382c6 --- /dev/null +++ b/src/m_player_main_complete_payment.c_inc @@ -0,0 +1,150 @@ +static int Player_actor_request_main_complete_payment(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_COMPLETE_PAYMENT, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_COMPLETE_PAYMENT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Complete_payment(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_complete_payment_c* complete_payment_p = &player->main_data.complete_payment; + u8 bgm_num; + + complete_payment_p->timer = 0.0f; + complete_payment_p->msg_mode = 0; + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_YATTA1, mPlayer_ANIM_YATTA1, 1.0f, 1.0f, 0.5f, 0.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + bgm_num = Player_actor_sound_Get_bgm_num_forCompletePayment(); + mBGMPsComp_make_ps_fanfare(bgm_num, 0x168); +} + +static void Player_actor_settle_main_Complete_payment(ACTOR* actorx, GAME* game) { + u8 bgm_num; + + bgm_num = Player_actor_sound_Get_bgm_num_forCompletePayment(); + mBGMPsComp_delete_ps_fanfare(bgm_num, 0x168); + Common_Set(complete_payment_type, mPlayer_COMPLETE_PAYMENT_TYPE_NONE); +} + +static int Player_actor_CulcAnimation_Complete_payment(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Complete_payment(ACTOR* actorx) { + add_calc_short_angle2(&actorx->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static void Player_actor_set_eye_pattern_Complete_payment(ACTOR* actorx, int end_flag) { + if (end_flag) { + Player_actor_set_eye_pattern_normal(actorx); + } else { + Player_actor_set_tex_anime_pattern(actorx); + } +} + +static void Player_actor_ObjCheck_Complete_payment(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Complete_payment(ACTOR* actorx) { + Player_actor_BGcheck_common_type2(actorx); +} + +static void Player_actor_Complete_payment_demo_ct(ACTOR* actorx) { + rgba_t window_color; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + int msg_no; + + switch (Common_Get(complete_payment_type)) { + case mPlayer_COMPLETE_PAYMENT_TYPE_ARBEIT: + msg_no = 0x17B6; + break; + default: + msg_no = 0x17B7; + break; + } + + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + mMsg_Set_LockContinue(msg_p); + + window_color.r = 185; + window_color.g = 245; + window_color.b = 80; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mChoice_CLEAR_CHOSENUM(); +} + +static int Player_actor_MessageControl_Complete_payment(ACTOR* actorx, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_complete_payment_c* complete_payment_p = &player->main_data.complete_payment; + f32* timer_p = &complete_payment_p->timer; + int* msg_mode_p = &complete_payment_p->msg_mode; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (*timer_p < 42.0f) { + (*timer_p) += 1.0f; + return FALSE; + } + + switch (*msg_mode_p) { + case 0: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Complete_payment_demo_ct); + } else { + *msg_mode_p = 1; + } + + return FALSE; + } + case 1: { + if (end_flag) { + mMsg_Unset_LockContinue(msg_p); + *msg_mode_p = 2; + } + + return FALSE; + } + case 2: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + *msg_mode_p = 3; + } + return FALSE; + } + default: { + return TRUE; + } + } +} + +static void Player_actor_request_proc_index_fromComplete_payment(GAME* game, int end_flag) { + if (end_flag) { + Player_actor_request_main_return_outdoor_all(game, mPlayer_INDEX_WAIT, 3.0f, -5.0f, + mPlayer_REQUEST_PRIORITY_45); + } +} + +static void Player_actor_main_Complete_payment(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int anim_end_flag; + int msg_end_flag; + + anim_end_flag = Player_actor_CulcAnimation_Complete_payment(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Complete_payment(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Complete_payment(actorx, anim_end_flag); + Player_actor_ObjCheck_Complete_payment(actorx, game); + Player_actor_BGcheck_Complete_payment(actorx); + msg_end_flag = Player_actor_MessageControl_Complete_payment(actorx, anim_end_flag); + Player_actor_request_proc_index_fromComplete_payment(game, msg_end_flag); +} diff --git a/src/m_player_main_dash.c_inc b/src/m_player_main_dash.c_inc new file mode 100644 index 00000000..4c80cda4 --- /dev/null +++ b/src/m_player_main_dash.c_inc @@ -0,0 +1,208 @@ +static int Player_actor_request_main_dash_all(GAME* game, f32 speed, int flags, int priority) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DASH, priority)) { + player = GET_PLAYER_ACTOR_GAME(game); + Player_actor_request_main_index(game, mPlayer_INDEX_DASH, priority); + + player->requested_main_index_data.dash.morph_speed = speed; + player->requested_main_index_data.dash.flags = flags; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Dash(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.dash.flags; + int anim_idx; + int part_table_idx; + f32 speed = player->requested_main_index_data.dash.morph_speed; + f32 absspeed; + f32 frame = player->keyframe0.frame_control.current_frame; + + absspeed = ABS(speed); + + Player_actor_SetupItem_Base3(actor, mPlayer_ANIM_DASH1, -absspeed, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_DASH1, anim_idx, frame, 1.0f, 0.5f, speed, + part_table_idx); + + if (flags & 1) { + Player_actor_SetEffect_forTakeout_item(actor, game); + } + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_CulcAnimation_Dash(ACTOR* actor, f32* frame_calc, f32 frame) { + Player_actor_CulcAnimation_Run(actor, frame, frame_calc); +} + +static int Player_actor_SetEffectRemoveFlower_Dash(ACTOR* actor, GAME* game, s16 angle) { + if (RANDOM(4) == 0) { + xyz_t* actor_pos = &actor->world.position; + mActor_name_t* name_p = mFI_GetUnitFG(*actor_pos); + + if (name_p != NULL) { + mActor_name_t name = *name_p; + + if ((IS_ITEM_FLOWER(name) ? TRUE : FALSE)) { + xyz_t pos; + if (mFI_Wpos2UtCenterWpos(&pos, *actor_pos)) { + pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(pos, 0.0f); + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_HANATIRI, pos, 2, angle, game, 0xFFFF, + (s16)name, 0); + + if (Common_Get(clip).bg_item_clip != NULL) { + if (Common_Get(clip).bg_item_clip->fade_entry_proc != NULL) { + Common_Get(clip).bg_item_clip->fade_entry_proc(name, actor_pos); + } + } + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_TRAMPLE_FLOWER); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_TRAMPLE_ALL_FLOWERS); + + return TRUE; + } + } + } + } + return FALSE; +} + +static void Player_actor_SetEffect_Dash(ACTOR* actor, GAME* game, f32 left_target_frame, f32 right_target_frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, left_target_frame) != FALSE) { + if (!Player_actor_SetEffectRemoveFlower_Dash(actor, game, player->left_foot_angle.y)) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_DASH_ASIMOTO, player->left_foot_pos, 2, + player->left_foot_angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + } + } else if (Player_actor_Check_AnimationFrame(fc, right_target_frame) != FALSE) { + if (!Player_actor_SetEffectRemoveFlower_Dash(actor, game, player->right_foot_angle.y)) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_DASH_ASIMOTO, player->right_foot_pos, 2, + player->right_foot_angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + } + } +} + +static void Player_actor_SearchAnimation_Dash(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_SetEffect_Dash(actor, game, 1.0f, 9.0f); + } +} + +static void Player_actor_Movement_Dash(ACTOR* actor, GAME* game, f32* frame) { + Player_actor_Movement_Run(actor, game, frame); +} + +static void Player_actor_ObjCheck_Dash(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Dash(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static int Player_actor_Check_FlatPlace(ACTOR* actor) { + static const xy_t offset[] = { + { 0.0f, 0.0f }, { 20.0f, 0.0f }, { -20.0f, 0.0f }, { 0.0f, 28.284271f }, + { 20.0f, 28.284271f }, { -20.0f, 28.284271f }, { 0.0f, 56.568542f }, { 20.0f, 56.568542f }, + { -20, 56.568542f }, { 0.0f, 84.85281f }, { 20.0f, 84.85281f }, { -20.0f, 84.85281f }, + }; + xyz_t norm; + s16 angle = actor->shape_info.rotation.y; + xyz_t pos = actor->world.position; + f32 sin = sin_s(angle); + f32 cos = cos_s(angle); + int i; + + for (i = 0; i < 12; i++) { + f32 x = offset[i].x; + f32 y = offset[i].y; + + pos.x = actor->world.position.x + (y * sin) + (x * cos); + pos.z = actor->world.position.z + (y * cos) - (x * sin); + + mCoBG_GetBgNorm_FromWpos(&norm, pos); + + if (norm.x != 0.0f || norm.z != 0.0f) { + return 0; + } + } + + return 1; +} + +static void Player_actor_request_proc_index_fromDash_common(ACTOR* actor, GAME* game) { + f32 speed; + + GAME_PLAY* play; + PLAYER_ACTOR* player; + + player = (PLAYER_ACTOR*)actor; + play = (GAME_PLAY*)game; + Player_actor_Set_ScrollDemo_forWade(actor, game, mEv_CheckTitleDemo() <= 0); + + if (!player->actor_class.bg_collision_check.result.on_ground) { + Player_actor_request_main_fall_all(game, -5.0f, 1, mPlayer_REQUEST_PRIORITY_1); + } + + Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4); + + if (Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_slip_net(game, mPlayer_REQUEST_PRIORITY_4); + } + + if (Player_actor_CheckController_forRod(game) != 0) { + Player_actor_request_main_ready_rod(game, mPlayer_REQUEST_PRIORITY_4); + } + + Player_actor_CheckAndRequest_main_scoop_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_umbrella_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_shake_tree_all(game); + Player_actor_CheckAndRequest_main_pickup_all(game); + + speed = (player->keyframe0.frame_control.speed * player->keyframe0.frame_control.speed) / 0.048f; + + if (Player_actor_Get_DiffWorldAngleToControllerAngle(actor) >= 18204) { + Player_actor_request_main_turn_dash_all(game, Player_actor_Get_ControllerAngle(game), + mPlayer_REQUEST_PRIORITY_3); + } + + if (speed < 4.875f) { + Player_actor_request_main_run_all(game, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + + if (mEv_CheckTitleDemo() <= 0 && + (Common_Get(now_private)->destiny.type == 3 && Player_actor_Check_FlatPlace(actor))) { + if (player->actor_class.speed / 7.5f >= 0.75f && !((int)(RANDOM_F(32768) * 2.0f) % 600)) { + Player_actor_request_main_tumble(game, mPlayer_REQUEST_PRIORITY_6); + } + } +} + +static void Player_actor_request_proc_index_fromDash(ACTOR* actor, GAME* game) { + Player_actor_request_proc_index_fromDash_common(actor, game); +} + +static void Player_actor_main_Dash(ACTOR* actor, GAME* game) { + f32 frame; + f32 frame_calc; + + Player_actor_Movement_Dash(actor, game, &frame); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Dash(actor, &frame_calc, frame); + Player_actor_SearchAnimation_Dash(actor, game, frame_calc); + Player_actor_set_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Dash(actor, game); + Player_actor_BGcheck_Dash(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromDash(actor, game); +} diff --git a/src/m_player_main_demo_get_golden_axe_wait.c_inc b/src/m_player_main_demo_get_golden_axe_wait.c_inc new file mode 100644 index 00000000..13d2fa4b --- /dev/null +++ b/src/m_player_main_demo_get_golden_axe_wait.c_inc @@ -0,0 +1,61 @@ +static int Player_actor_request_main_demo_get_golden_axe_wait_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GET_GOLDEN_AXE_WAIT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_get_golden_axe_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_get_golden_axe_wait_c* demo_get_golden_axe_wait_p; + int anim1_idx; + int part_table_idx; + + demo_get_golden_axe_wait_p = &player->main_data.demo_get_golden_axe_wait; + demo_get_golden_axe_wait_p->timer = 0.0f; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static int Player_actor_CulcAnimation_Demo_get_golden_axe_wait(ACTOR* actorx) { + return Player_actor_CulcAnimation_Base(actorx); +} + +static void Player_actor_ObjCheck_Demo_get_golden_axe_wait(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Demo_get_golden_axe_wait(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromDemo_get_golden_axe_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_get_golden_axe_wait_c* demo_get_golden_axe_wait_p; + f32* timer_p; + + demo_get_golden_axe_wait_p = &player->main_data.demo_get_golden_axe_wait; + timer_p = &demo_get_golden_axe_wait_p->timer; + + if (*timer_p < 320.0f) { + (*timer_p) += 1.0f; + } else { + mPlib_request_main_demo_get_golden_item2_type1(game, mPlayer_GOLDEN_ITEM_TYPE_AXE); + } +} + +static void Player_actor_main_Demo_get_golden_axe_wait(ACTOR* actorx, GAME* game) { + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_get_golden_axe_wait(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_get_golden_axe_wait(actorx, game); + Player_actor_BGcheck_Demo_get_golden_axe_wait(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_get_golden_axe_wait(actorx, game); +} diff --git a/src/m_player_main_demo_get_golden_item.c_inc b/src/m_player_main_demo_get_golden_item.c_inc new file mode 100644 index 00000000..81e84ae0 --- /dev/null +++ b/src/m_player_main_demo_get_golden_item.c_inc @@ -0,0 +1,203 @@ +static int Player_actor_request_main_demo_get_golden_item_common(GAME* game, int main_index, int type, int prio) { + if (Player_actor_check_request_main_able(game, main_index, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_get_golden_item_c* req_demo_get_golden_item_p = + &player->requested_main_index_data.demo_get_golden_item; + + Player_actor_request_main_index(game, main_index, prio); + req_demo_get_golden_item_p->type = type; + return TRUE; + } + + return FALSE; +} + +static int Player_actor_request_main_demo_get_golden_item_all(GAME* game, int type, int prio) { + return Player_actor_request_main_demo_get_golden_item_common(game, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM, type, prio); +} + +static void Player_actor_request_main_demo_get_golden_item_from_submenu(ACTOR* actorx, GAME* game) { + Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Demo_get_golden_item(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_demo_get_golden_item_c* req_demo_get_golden_item_p; + mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p; + s16 item_kind; + int anim0_idx; + int anim1_idx; + int part_table_idx; + int dummy; + int type; + + item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + anim0_idx = mPlayer_ANIM_YATTA1; + part_table_idx = mPlayer_PART_TABLE_NET; + req_demo_get_golden_item_p = &player->requested_main_index_data.demo_get_golden_item; + demo_get_golden_item_p = &player->main_data.demo_get_golden_item; + type = player->requested_main_index_data.demo_get_golden_item.type; + + demo_get_golden_item_p->timer = 0.0f; + demo_get_golden_item_p->msg_mode = 0; + demo_get_golden_item_p->type = type; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_YATTA1, -5.0f, &anim1_idx, &dummy); + + if (mPlayer_ITEM_IS_BALLOON(item_kind) != FALSE) { + anim0_idx = mPlayer_ANIM_YATTA3; + anim1_idx = mPlayer_ANIM_YATTA3; + part_table_idx = mPlayer_PART_TABLE_NORMAL; + } + + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); + + if (type >= 0 && type < mPlayer_GOLDEN_ITEM_TYPE_NUM) { + u8 bgm_num = Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(type); + + mBGMPsComp_make_ps_fanfare(bgm_num, 0x168); + } +} + +static void Player_actor_settle_main_Demo_get_golden_item(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p = &player->main_data.demo_get_golden_item; + int type = demo_get_golden_item_p->type; + + if (type >= 0 && type < mPlayer_GOLDEN_ITEM_TYPE_NUM) { + static u8 data[] = { (1 << 0), (1 << 1), (1 << 2), (1 << 3) }; + u8 bgm_num = Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(type); + + mBGMPsComp_delete_ps_fanfare(bgm_num, 0x168); + Now_Private->golden_items_collected |= data[type]; + } +} + +static int Player_actor_CulcAnimation_Demo_get_golden_item(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_Movement_Demo_get_golden_item(ACTOR* actorx) { + add_calc_short_angle2(&actorx->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static void Player_actor_set_eye_pattern_Demo_get_golden_item(ACTOR* actorx, int end_flag) { + if (end_flag) { + Player_actor_set_eye_pattern_normal(actorx); + } else { + Player_actor_set_tex_anime_pattern(actorx); + } +} + +static void Player_actor_ObjCheck_Demo_get_golden_item(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Demo_get_golden_item(ACTOR* actorx) { + Player_actor_BGcheck_common_type2(actorx); +} + +static void Player_actor_Demo_get_golden_item_demo_ct(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p = &player->main_data.demo_get_golden_item; + int type = demo_get_golden_item_p->type; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + rgba_t window_color; + int msg_no; + + switch (type) { + case mPlayer_GOLDEN_ITEM_TYPE_AXE: + msg_no = 0x306F; + break; + case mPlayer_GOLDEN_ITEM_TYPE_NET: + msg_no = 0x306D; + break; + case mPlayer_GOLDEN_ITEM_TYPE_ROD: + msg_no = 0x306E; + break; + default: + msg_no = 0x3070; + break; + } + + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + mMsg_Set_LockContinue(msg_p); + + window_color.r = 185; + window_color.g = 245; + window_color.b = 80; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mChoice_CLEAR_CHOSENUM(); +} + +static int Player_actor_MessageControl_Demo_get_golden_item(ACTOR* actorx, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_get_golden_item_c* demo_get_golden_item_p = &player->main_data.demo_get_golden_item; + f32* timer_p = &demo_get_golden_item_p->timer; + int* msg_mode_p = &demo_get_golden_item_p->msg_mode; + mMsg_Window_c* msg_p = mMsg_Get_base_window_p(); + + if (*timer_p < 42.0f) { + (*timer_p) += 1.0f; + return FALSE; + } + + switch (*msg_mode_p) { + case 0: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Demo_get_golden_item_demo_ct); + } else { + *msg_mode_p = 1; + } + return FALSE; + } + case 1: { + if (end_flag) { + mMsg_Unset_LockContinue(msg_p); + *msg_mode_p = 2; + } + return FALSE; + } + case 2: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + *msg_mode_p = 3; + } + return FALSE; + } + default: + return TRUE; + } +} + +static void Player_actor_request_proc_index_fromDemo_get_golden_item(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Demo_get_golden_item(ACTOR* actorx, GAME* game) { + int anim_end_flag; + int msg_end_flag; + + anim_end_flag = Player_actor_CulcAnimation_Demo_get_golden_item(actorx); + Player_actor_Movement_Demo_get_golden_item(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Demo_get_golden_item(actorx, anim_end_flag); + Player_actor_ObjCheck_Demo_get_golden_item(actorx, game); + Player_actor_BGcheck_Demo_get_golden_item(actorx); + Player_actor_Item_main(actorx, game); + msg_end_flag = Player_actor_MessageControl_Demo_get_golden_item(actorx, anim_end_flag); + Player_actor_request_proc_index_fromDemo_get_golden_item(actorx, game, msg_end_flag); +} diff --git a/src/m_player_main_demo_get_golden_item2.c_inc b/src/m_player_main_demo_get_golden_item2.c_inc new file mode 100644 index 00000000..60912dfa --- /dev/null +++ b/src/m_player_main_demo_get_golden_item2.c_inc @@ -0,0 +1,15 @@ +static int Player_actor_request_main_demo_get_golden_item2_all(GAME* game, int type, int prio) { + return Player_actor_request_main_demo_get_golden_item_common(game, mPlayer_INDEX_DEMO_GET_GOLDEN_ITEM2, type, prio); +} + +static void Player_actor_setup_main_Demo_get_golden_item2(ACTOR* actorx, GAME* game) { + Player_actor_setup_main_Demo_get_golden_item(actorx, game); +} + +static void Player_actor_settle_main_Demo_get_golden_item2(ACTOR* actorx, GAME* game) { + Player_actor_settle_main_Demo_get_golden_item(actorx, game); +} + +static void Player_actor_main_Demo_get_golden_item2(ACTOR* actorx, GAME* game) { + Player_actor_main_Demo_get_golden_item(actorx, game); +} diff --git a/src/m_player_main_demo_getoff_boat.c_inc b/src/m_player_main_demo_getoff_boat.c_inc new file mode 100644 index 00000000..f7c04404 --- /dev/null +++ b/src/m_player_main_demo_getoff_boat.c_inc @@ -0,0 +1,127 @@ +static int Player_actor_request_main_demo_getoff_boat_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETOFF_BOAT, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_getoff_boat_c* req_demo_getoff_boat_p = + &player->requested_main_index_data.demo_getoff_boat; + + req_demo_getoff_boat_p->pos = *pos_p; + req_demo_getoff_boat_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETOFF_BOAT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_getoff_boat(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_demo_getoff_boat_c* req_demo_getoff_boat_p = &player->requested_main_index_data.demo_getoff_boat; + int anim1_idx; + int part_table_idx; + xyz_t pos; + s16 angle_y; + f32 cos; + f32 sin; + f32 cos_x; + f32 cos_z; + f32 sin_x; + f32 sin_z; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_GETOFF2, -5.0f, &anim1_idx, &part_table_idx); + + pos = req_demo_getoff_boat_p->pos; + angle_y = req_demo_getoff_boat_p->angle_y; + cos = cos_s(angle_y); + cos_x = cos; + cos_z = cos; + sin = sin_s(angle_y); + sin_x = sin; + sin_z = sin; + + /* @hack - TODO: look for a better way to match these float operations */ + pos.x -= (sin_x *= 45.0f) + (cos_x *= -2.0f); + pos.y -= 18.0f; + pos.z -= (cos_z *= 45.0f) - (sin_z *= -2.0f); + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &pos, actorx->shape_info.rotation.y, + actorx->world.angle.y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_GETOFF2, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_sound_JUMP(actorx); +} + +static void Player_actor_settle_main_Demo_getoff_boat(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; + actorx->shape_info.shadow_size_change_rate = 1.0f; + actorx->shape_info.shadow_alpha_change_rate = 1.0f; +} + +static int Player_actor_CulcAnimation_Demo_getoff_boat(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetSound_Demo_getoff_boat(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 15.0f)) { + Player_actor_sound_LANDING(actorx); + } +} + +static void Player_actor_ControlShadow_Demo_getoff_boat(ACTOR* actorx) { + Player_actor_AppearShadow_fromAnimationFrame(actorx, 8.0f, 16.0f); +} + +static void Player_actor_SearchAnimation_Demo_getoff_boat(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Demo_getoff_boat(actorx); + } + + Player_actor_ControlShadow_Demo_getoff_boat(actorx); +} + +static void Player_actor_Movement_Demo_getoff_boat(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Demo_getoff_boat(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromDemo_getoff_boat(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_getoff_boat(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Demo_getoff_boat(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_getoff_boat(actorx, last_anim0_cur_frame); + Player_actor_Movement_Demo_getoff_boat(actorx); + Player_actor_Reset_force_position_angle(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_getoff_boat(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_getoff_boat(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_getoff_boat_standup.c_inc b/src/m_player_main_demo_getoff_boat_standup.c_inc new file mode 100644 index 00000000..60fc790b --- /dev/null +++ b/src/m_player_main_demo_getoff_boat_standup.c_inc @@ -0,0 +1,118 @@ +static int Player_actor_request_main_demo_getoff_boat_standup_all(GAME* game, const xyz_t* pos_p, s16 angle_y, + int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_getoff_boat_standup_c* req_demo_getoff_boat_standup_p = + &player->requested_main_index_data.demo_getoff_boat_standup; + + req_demo_getoff_boat_standup_p->pos = *pos_p; + req_demo_getoff_boat_standup_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETOFF_BOAT_STANDUP, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + xyz_t pos = actorx->world.position; + mPlayer_request_demo_getoff_boat_standup_c* req_demo_getoff_boat_standup_p = + &player->requested_main_index_data.demo_getoff_boat_standup; + mPlayer_main_demo_getoff_boat_standup_c* demo_getoff_boat_standup_p = &player->main_data.demo_getoff_boat_standup; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_GETOFF1, -18.0f, &anim1_idx, &part_table_idx); + demo_getoff_boat_standup_p->pos = req_demo_getoff_boat_standup_p->pos; + demo_getoff_boat_standup_p->angle_y = req_demo_getoff_boat_standup_p->angle_y; + demo_getoff_boat_standup_p->angle_z = player->boat_angleZ; + + pos.y = 23.0f; + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &pos, actorx->shape_info.rotation.y, + actorx->world.angle.y, 18.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_GETOFF1, anim1_idx, 1.0f, 1.0f, 0.5f, -18.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Demo_getoff_boat_standup(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetSound_Demo_getoff_boat_standup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 6.0f)) { + Player_actor_sound_STANDUP(actorx, -1); + } else if (Player_actor_Check_AnimationFrame(fc0_p, 21.0f)) { + Player_actor_sound_LANDING(actorx); + } +} + +static void Player_actor_SearchAnimation_Demo_getoff_boat_standup(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Demo_getoff_boat_standup(actorx); + } +} + +static void Player_actor_Movement_Demo_getoff_boat_standup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); + + { + mPlayer_main_demo_getoff_boat_standup_c* demo_getoff_boat_standup_p = + &player->main_data.demo_getoff_boat_standup; + s16* angle_z_p = &demo_getoff_boat_standup_p->angle_z; + + add_calc_short_angle2(angle_z_p, 0, 1.0f - sqrtf(0.19999999f), 150, 100); + } +} + +static void Player_actor_ObjCheck_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromDemo_getoff_boat_standup(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_getoff_boat_standup_c* demo_getoff_boat_standup_p = + &player->main_data.demo_getoff_boat_standup; + + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_getoff_boat_all( + game, &demo_getoff_boat_standup_p->pos, demo_getoff_boat_standup_p->angle_y, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_getoff_boat_standup(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Demo_getoff_boat_standup(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_getoff_boat_standup(actorx, last_anim0_cur_frame); + Player_actor_Movement_Demo_getoff_boat_standup(actorx); + Player_actor_Reset_force_position_angle(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_getoff_boat_standup(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_getoff_boat_standup(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_getoff_train.c_inc b/src/m_player_main_demo_getoff_train.c_inc new file mode 100644 index 00000000..9ee11d23 --- /dev/null +++ b/src/m_player_main_demo_getoff_train.c_inc @@ -0,0 +1,86 @@ +static int Player_actor_request_main_demo_getoff_train(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETOFF_TRAIN, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_getoff_train_c* req_demo_getoff_train_p = + &player->requested_main_index_data.demo_getoff_train; + + req_demo_getoff_train_p->player_pos = *pos_p; + req_demo_getoff_train_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETOFF_TRAIN, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_getoff_train(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_demo_getoff_train_c* req_demo_getoff_train_p = &player->requested_main_index_data.demo_getoff_train; + + actorx->world.angle.y = req_demo_getoff_train_p->angle_y; + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_demo_getoff_train_p->player_pos, + actorx->shape_info.rotation.y, req_demo_getoff_train_p->angle_y, 5.0f, + kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_OUTTRAIN1, mPlayer_ANIM_OUTTRAIN1, 1.0f, 1.0f, 0.5f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Demo_getoff_train(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Demo_getoff_train(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SearchAnimation_Demo_getoff_train(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FootMark_Base1(actorx, game, TRUE, FALSE); + } +} + +static void Player_actor_Movement_Demo_getoff_train(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_request_proc_index_fromDemo_getoff_train(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + + if (Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19)) { + if (Player_actor_Get_DemoOrder() == 3) { + Player_actor_Set_DemoOrder(0); + } + } + } +} + +static void Player_actor_main_Demo_getoff_train(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Demo_getoff_train(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Demo_getoff_train(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Demo_getoff_train(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_getoff_train(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_geton_boat.c_inc b/src/m_player_main_demo_geton_boat.c_inc new file mode 100644 index 00000000..bd862f91 --- /dev/null +++ b/src/m_player_main_demo_geton_boat.c_inc @@ -0,0 +1,106 @@ +static int Player_actor_request_main_demo_geton_boat_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_geton_boat_c* req_demo_geton_boat_p = &player->requested_main_index_data.demo_geton_boat; + + req_demo_geton_boat_p->pos = *pos_p; + req_demo_geton_boat_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_boat(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_demo_geton_boat_c* req_demo_geton_boat_p = &player->requested_main_index_data.demo_geton_boat; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDE1, -5.0f, &anim1_idx, &part_table_idx); + actorx->world.angle.y = req_demo_geton_boat_p->angle_y; + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_demo_geton_boat_p->pos, + actorx->shape_info.rotation.y, req_demo_geton_boat_p->angle_y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_RIDE1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_setup_main_Demo_geton_boat_other_func2(actorx, game); +} + +static void Player_actor_settle_main_Demo_geton_boat(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->shape_info.rotation.y += DEG2SHORT_ANGLE2(-90.0f); + actorx->world.angle.y = actorx->shape_info.rotation.y; + Player_actor_Reset_bee_chase(actorx); + actorx->shape_info.shadow_size_change_rate = 0.0f; + actorx->shape_info.shadow_alpha_change_rate = 0.0f; + Player_actor_sound_LANDING(actorx); +} + +static int Player_actor_CulcAnimation_Demo_geton_boat(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetSound_Demo_geton_boat(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 15.0f)) { + Player_actor_sound_JUMP(actorx); + } +} + +static void Player_actor_ControlShadow_Demo_geton_boat(ACTOR* actorx) { + Player_actor_DisappearShadow_fromAnimationFrame(actorx, 10.0f, 19.0f); +} + +static void Player_actor_SearchAnimation_Demo_geton_boat(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Demo_geton_boat(actorx); + } + + Player_actor_ControlShadow_Demo_geton_boat(actorx); +} + +static void Player_actor_Movement_Demo_geton_boat(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Demo_geton_boat(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromDemo_geton_boat(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_geton_boat_sitdown_all(game, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_geton_boat(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Demo_geton_boat(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_geton_boat(actorx, last_anim0_cur_frame); + Player_actor_Movement_Demo_geton_boat(actorx); + Player_actor_Reset_force_position_angle(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_geton_boat(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_geton_boat(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_geton_boat_sitdown.c_inc b/src/m_player_main_demo_geton_boat_sitdown.c_inc new file mode 100644 index 00000000..bc527b9d --- /dev/null +++ b/src/m_player_main_demo_geton_boat_sitdown.c_inc @@ -0,0 +1,89 @@ +static int Player_actor_request_main_demo_geton_boat_sitdown_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT_SITDOWN, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_geton_boat_sitdown_c* demo_geton_boat_sitdown_p = &player->main_data.demo_geton_boat_sitdown; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDE2, -5.0f, &anim1_idx, &part_table_idx); + demo_geton_boat_sitdown_p->angle_z = 0; + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_RIDE2, anim1_idx, 1.0f, 1.0f, 0.5f, 0.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if ((player->force_position_angle_flag & mPlayer_FORCE_POSITION_ANGLE_POSX) && + (player->force_position_angle_flag & mPlayer_FORCE_POSITION_ANGLE_POSY) && + (player->force_position_angle_flag & mPlayer_FORCE_POSITION_ANGLE_POSZ)) { + xyz_t* pos_p = &actorx->world.position; + + add_calc(&pos_p->x, player->force_position.x, 1.0f - sqrtf(0.19999999f), 0.2f, 0.15f); + add_calc(&pos_p->y, player->force_position.y, 1.0f - sqrtf(0.19999999f), 0.2f, 0.15f); + add_calc(&pos_p->z, player->force_position.z, 1.0f - sqrtf(0.19999999f), 0.2f, 0.15f); + + Player_actor_Get_force_position_angle(game, NULL, &actorx->world.angle); + Player_actor_Get_force_position_angle(game, NULL, &actorx->shape_info.rotation); + } + + { + mPlayer_main_demo_geton_boat_sitdown_c* demo_geton_boat_sitdown_p = &player->main_data.demo_geton_boat_sitdown; + s16 boat_angle_z = player->boat_angleZ; + s16* angle_z_p = &demo_geton_boat_sitdown_p->angle_z; + + add_calc_short_angle2(angle_z_p, boat_angle_z, 1.0f - sqrtf(0.19999999f), 150, 100); + } +} + +static int Player_actor_CulcAnimation_Demo_geton_boat_sitdown(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetSound_Demo_geton_boat_sitdown(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 15.0f)) { + Player_actor_sound_JUMP(actorx); + } else if (Player_actor_Check_AnimationFrame(fc0_p, 28.0f)) { + Player_actor_sound_SIT(actorx, -1); + } +} + +static void Player_actor_SearchAnimation_Demo_geton_boat_sitdown(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Demo_geton_boat_sitdown(actorx); + } +} + +static void Player_actor_request_proc_index_fromDemo_geton_boat_sitdown(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_geton_boat_wait_all(game, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_geton_boat_sitdown(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Demo_geton_boat_sitdown(actorx, game); + Player_actor_Reset_force_position_angle(actorx); + end_flag = Player_actor_CulcAnimation_Demo_geton_boat_sitdown(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_geton_boat_sitdown(actorx, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_geton_boat_sitdown(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_geton_boat_wade.c_inc b/src/m_player_main_demo_geton_boat_wade.c_inc new file mode 100644 index 00000000..2839e1e6 --- /dev/null +++ b/src/m_player_main_demo_geton_boat_wade.c_inc @@ -0,0 +1,87 @@ +static int Player_actor_request_main_demo_geton_boat_wade_all(GAME* game, int dir, f32 border_ofs, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT_WADE, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_geton_boat_wade_c* req_demo_geton_boat_wade_p = + &player->requested_main_index_data.demo_geton_boat_wade; + + req_demo_geton_boat_wade_p->dir = dir; + req_demo_geton_boat_wade_p->border_ofs = border_ofs; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT_WADE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_boat_wade(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + GAME_PLAY* play = (GAME_PLAY*)game; + mPlayer_request_demo_geton_boat_wade_c* req_demo_geton_boat_wade_p = + &player->requested_main_index_data.demo_geton_boat_wade; + mPlayer_main_demo_geton_boat_wade_c* demo_geton_boat_wade_p = &player->main_data.demo_geton_boat_wade; + xyz_t* pos_p = &actorx->world.position; + int dir = req_demo_geton_boat_wade_p->dir; + f32 border_ofs = req_demo_geton_boat_wade_p->border_ofs; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDEWAIT, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_RIDEWAIT, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + demo_geton_boat_wade_p->dir = dir; + demo_geton_boat_wade_p->start_pos = *pos_p; + Player_actor_Culc_wade_end_pos(pos_p, &demo_geton_boat_wade_p->end_pos, dir, border_ofs); + demo_geton_boat_wade_p->timer = 0.0f; + Player_actor_setup_main_Base(actorx, game); + + { + xyz_t camera_pos = demo_geton_boat_wade_p->end_pos; + + camera_pos.y += actorx->eye.position.y - pos_p->y; + Camera2_request_main_wade(play, &camera_pos, 9, 36.0f); + } + + Player_actor_setup_main_Demo_geton_boat_wade_other_func2(actorx, game); +} + +static void Player_actor_settle_main_Demo_geton_boat_wade(ACTOR* actorx, GAME* game) { + mDemo_End(actorx); +} + +static void Player_actor_Movement_Demo_geton_boat_wade(ACTOR* actorx) { + Player_actor_Movement_Demo_geton_boat_wait(actorx); +} + +static int Player_actor_CulcAnimation_Demo_geton_boat_wade(ACTOR* actorx) { + return Player_actor_CulcAnimation_Demo_geton_boat_wait(actorx); +} + +static int Player_actor_able_request_proc_index_fromDemo_geton_boat_wade_common(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_geton_boat_wade_c* demo_geton_boat_wade_p = &player->main_data.demo_geton_boat_wade; + + if (demo_geton_boat_wade_p->timer > 36.0f) { + return TRUE; + } + + demo_geton_boat_wade_p->timer += 1.0f; + return FALSE; +} + +static void Player_actor_request_proc_index_fromDemo_geton_boat_wade(ACTOR* actorx, GAME* game) { + if (Player_actor_able_request_proc_index_fromDemo_geton_boat_wade_common(actorx)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_geton_boat_wait_all(game, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_geton_boat_wade(ACTOR* actorx, GAME* game) { + Player_actor_main_Demo_geton_boat_wade_other_func1(actorx, game); + Player_actor_Movement_Demo_geton_boat_wade(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_geton_boat_wade(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_geton_boat_wade(actorx, game); +} diff --git a/src/m_player_main_demo_geton_boat_wait.c_inc b/src/m_player_main_demo_geton_boat_wait.c_inc new file mode 100644 index 00000000..ff05d449 --- /dev/null +++ b/src/m_player_main_demo_geton_boat_wait.c_inc @@ -0,0 +1,55 @@ +static int Player_actor_request_main_demo_geton_boat_wait_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_BOAT_WAIT, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_BOAT_WAIT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_boat_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_RIDEWAIT, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_RIDEWAIT, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Demo_geton_boat_wait(ACTOR* actorx) { + // nothing +} + +static int Player_actor_CulcAnimation_Demo_geton_boat_wait(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_request_proc_index_fromDemo_geton_boat_wait(ACTOR* actorx) { + s16 angle_y = actorx->shape_info.rotation.y; + f32 speed; + + if (Common_Get(clip).demo_clip2 != NULL && Common_Get(clip).demo_clip2->type == mDemo_CLIP_TYPE_BOAT_DEMO) { + BOAT_DEMO_ACTOR* boat_demo = (BOAT_DEMO_ACTOR*)Common_Get(clip).demo_clip2->demo_class; + + speed = boat_demo->boat_speed; + } else { + speed = 0.625f; + } + + angle_y += DEG2SHORT_ANGLE2(180.0f); + Player_actor_Set_ScrollDemo_forDemo_geton_boat_wade(actorx, angle_y, ((speed * 0.5f) * 36.0f) * 0.05f); +} + +static void Player_actor_main_Demo_geton_boat_wait(ACTOR* actorx, GAME* game) { + Player_actor_Movement_Demo_geton_boat_wait(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_geton_boat_wait(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_geton_boat_wait(actorx); +} diff --git a/src/m_player_main_demo_geton_train.c_inc b/src/m_player_main_demo_geton_train.c_inc new file mode 100644 index 00000000..9873e042 --- /dev/null +++ b/src/m_player_main_demo_geton_train.c_inc @@ -0,0 +1,81 @@ +static int Player_actor_request_main_demo_geton_train(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_TRAIN, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_geton_train_c* req_demo_geton_train_p = + &player->requested_main_index_data.demo_geton_train; + + req_demo_geton_train_p->player_pos = *pos_p; + req_demo_geton_train_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_TRAIN, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_train(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_demo_geton_train_c* req_demo_geton_train_p = &player->requested_main_index_data.demo_geton_train; + + actorx->world.angle.y = req_demo_geton_train_p->angle_y; + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_demo_geton_train_p->player_pos, + actorx->shape_info.rotation.y, req_demo_geton_train_p->angle_y, 5.0f, + kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_INTRAIN1, mPlayer_ANIM_INTRAIN1, 1.0f, 1.0f, 0.5f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Demo_geton_train(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Demo_geton_train(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SearchAnimation_Demo_geton_train(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FootMark_Base2(actorx, game, TRUE, 0x4204); + } +} + +static void Player_actor_Movement_Demo_geton_train(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_request_proc_index_fromDemo_geton_train(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_geton_train_wait_all(game, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_geton_train(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Demo_geton_train(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Demo_geton_train(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Demo_geton_train(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_geton_train(actorx, game, end_flag); +} diff --git a/src/m_player_main_demo_geton_train_wait.c_inc b/src/m_player_main_demo_geton_train_wait.c_inc new file mode 100644 index 00000000..b01c7992 --- /dev/null +++ b/src/m_player_main_demo_geton_train_wait.c_inc @@ -0,0 +1,32 @@ +static int Player_actor_request_main_demo_geton_train_wait_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_GETON_TRAIN_WAIT, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_GETON_TRAIN_WAIT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_geton_train_wait(ACTOR* actorx, GAME* game) { + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_INTRAIN_WAIT1, mPlayer_ANIM_INTRAIN_WAIT1, 1.0f, 1.0f, + 0.5f, -5.0f, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Demo_geton_train_wait(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_CulcAnimation_Demo_geton_train_wait(ACTOR* actorx) { + f32 dummy; + + Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_main_Demo_geton_train_wait(ACTOR* actorx, GAME* game) { + Player_actor_Movement_Demo_geton_train_wait(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_geton_train_wait(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); +} diff --git a/src/m_player_main_demo_standing_train.c_inc b/src/m_player_main_demo_standing_train.c_inc new file mode 100644 index 00000000..7b04dd78 --- /dev/null +++ b/src/m_player_main_demo_standing_train.c_inc @@ -0,0 +1,47 @@ +static int Player_actor_request_main_demo_standing_train_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_STANDING_TRAIN, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_STANDING_TRAIN, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_standing_train(ACTOR* actorx, GAME* game) { + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_CulcAnimation_Demo_standing_train(ACTOR* actorx) { + f32 dummy; + + Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_Movement_Demo_standing_train(ACTOR* actorx) { + if (Player_actor_Get_DemoChangeAngleY()) { + s16 goal_angle_y = Player_actor_Get_DemoAngleY(); + + add_calc_short_angle2(&actorx->world.angle.y, goal_angle_y, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->shape_info.rotation.y = actorx->world.angle.y; + if (goal_angle_y == actorx->world.angle.y) { + Player_actor_Set_DemoChangeAngleY(FALSE); + } + } + + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_main_Demo_standing_train(ACTOR* actorx, GAME* game) { + Player_actor_Movement_Demo_standing_train(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_standing_train(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); +} diff --git a/src/m_player_main_demo_wade.c_inc b/src/m_player_main_demo_wade.c_inc new file mode 100644 index 00000000..9c1bff06 --- /dev/null +++ b/src/m_player_main_demo_wade.c_inc @@ -0,0 +1,117 @@ +static int Player_actor_request_main_demo_wade_all(GAME* game, int dir, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_WADE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_wade_c* request_demo_wade_p = &player->requested_main_index_data.demo_wade; + + request_demo_wade_p->dir = dir; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_WADE, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_wade(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_demo_wade_c* request_demo_wade_p = &player->requested_main_index_data.demo_wade; + mPlayer_main_demo_wade_c* main_demo_wade_p = &player->main_data.demo_wade; + xyz_t* pos_p; + int anim1_idx; + int part_table_idx; + int dir; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t eye_pos; + + dir = request_demo_wade_p->dir; + pos_p = &actorx->world.position; + Player_actor_SetupItem_Base1(actorx, 0, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + main_demo_wade_p->dir = dir; + main_demo_wade_p->start_pos = *pos_p; + + Player_actor_Culc_wade_end_pos(pos_p, &main_demo_wade_p->end_pos, dir, 18.00001f); + main_demo_wade_p->timer = 0.0f; + Player_actor_setup_main_Base(actorx, game); + + eye_pos = main_demo_wade_p->end_pos; + eye_pos.y += actorx->eye.position.y - pos_p->y; + Camera2_request_main_wade(play, &eye_pos, 9, 36.0f); + Player_actor_setup_main_Demo_wade_other_func2(actorx, game); +} + +static void Player_actor_settle_main_Demo_wade(ACTOR* actorx, GAME* game) { + mDemo_End(actorx); +} + +static void Player_actor_CulcAnimation_Demo_wade(ACTOR* actorx) { + f32 last_kf0_current_frame; + + Player_actor_CulcAnimation_Base2(actorx, &last_kf0_current_frame); +} + +static void Player_actor_Movement_Demo_wade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wade_c* main_demo_wade_p = &player->main_data.demo_wade; + xyz_t* start_pos_p = &main_demo_wade_p->start_pos; + xyz_t* end_pos_p = &main_demo_wade_p->end_pos; + xyz_t* pos_p = &actorx->world.position; + f32 timer = main_demo_wade_p->timer; + f32 percent = get_percent_forAccelBrake(timer, 0.0f, 36.0f, 1.1999999f, 34.8f); + + pos_p->x = start_pos_p->x + percent * (end_pos_p->x - start_pos_p->x); + pos_p->y = start_pos_p->y + percent * (end_pos_p->y - start_pos_p->y); + pos_p->z = start_pos_p->z + percent * (end_pos_p->z - start_pos_p->z); + + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Demo_wade(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Demo_wade(ACTOR* actorx) { + Player_actor_BGcheck_common_type2(actorx); +} + +static int Player_actor_able_request_proc_index_fromDemo_wade_common(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wade_c* main_demo_wade_p = &player->main_data.demo_wade; + f32* timer_p = &main_demo_wade_p->timer; + + if (*timer_p > 36.0f) { + return TRUE; + } + + *timer_p += 1.0f; + return FALSE; +} + +static void Player_actor_request_proc_index_fromDemo_wade(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wade_c* main_demo_wade_p = &player->main_data.demo_wade; + + if (Player_actor_able_request_proc_index_fromDemo_wade_common(actorx)) { + f32 goal_pos_x; + f32 goal_pos_z; + f32 speed; + + Player_actor_SettleRequestMainIndexPriority(actorx); + mPlib_Get_goal_player_demo_walk(&goal_pos_x, &goal_pos_z, &speed); + Player_actor_request_main_demo_walk_all(game, goal_pos_x, goal_pos_z, speed, mPlib_Get_end_player_demo_walk(), + mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_wade(ACTOR* actorx, GAME* game) { + Player_actor_main_Demo_wade_other_func1(actorx, game); + Player_actor_Movement_Demo_wade(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_wade(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_wade(actorx, game); + Player_actor_BGcheck_Demo_wade(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_wade(actorx, game); +} diff --git a/src/m_player_main_demo_wait.c_inc b/src/m_player_main_demo_wait.c_inc new file mode 100644 index 00000000..b71b5397 --- /dev/null +++ b/src/m_player_main_demo_wait.c_inc @@ -0,0 +1,127 @@ +static int Player_actor_request_main_demo_wait_all(GAME* game, int umbrella_flag, void* label, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_WAIT, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_wait_c* req_demo_wait_p = &player->requested_main_index_data.demo_wait; + + req_demo_wait_p->umbrella_flag = umbrella_flag; + req_demo_wait_p->label = (u32)label; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_WAIT, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_main_demo_wait_from_submenu(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_change_data_from_submenu_c* change_data_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_demo_wait_c* req_demo_wait_p = &change_data_p->request_main_data.demo_wait; + + Player_actor_request_main_demo_wait_all(game, req_demo_wait_p->umbrella_flag, (void*)req_demo_wait_p->label, + mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Demo_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_demo_wait_c* req_demo_wait_p = &player->requested_main_index_data.demo_wait; + mPlayer_main_demo_wait_c* demo_wait_p = &player->main_data.demo_wait; + int anim1_idx; + int part_table_idx; + + if (req_demo_wait_p->umbrella_flag) { + player->unable_hand_item_in_demo = TRUE; + } + + demo_wait_p->effect_id = 0; + demo_wait_p->label = req_demo_wait_p->label; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Demo_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wait_c* demo_wait_p = &player->main_data.demo_wait; + + if (demo_wait_p->effect_id > 0) { + eEC_CLIP->effect_kill_proc(demo_wait_p->effect_id - 1, RSV_NO); + } +} + +static void Player_actor_Movement_Demo_wait(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Get_DemoChangeAngleY()) { + s16 target_angle_y = Player_actor_Get_DemoAngleY(); + + add_calc_short_angle2(&actorx->world.angle.y, target_angle_y, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->shape_info.rotation.y = actorx->world.angle.y; + if (target_angle_y == actorx->world.angle.y) { + Player_actor_Set_DemoChangeAngleY(FALSE); + } + } + + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Demo_wait(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SearchAnimation_Demo_wait(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wait_c* demo_wait_p = &player->main_data.demo_wait; + + Player_actor_Set_FeelEffect_common(actorx, &demo_wait_p->effect_id); + } +} + +static void Player_actor_ChangeAnimation_FromDemoOrder_Demo_wait(ACTOR* actorx, GAME* game, int order, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_demo_wait_c* demo_wait_p = &player->main_data.demo_wait; + + Player_actor_ChangeAnimation_FromDemoOrder_common(actorx, game, order, end_flag, &demo_wait_p->effect_id); +} + +static void Player_actor_SetEffect_FromDemoOrder_Demo_wait(ACTOR* actorx, GAME* game, int order) { + Player_actor_SetEffect_FromDemoOrder_common(actorx, game, order); +} + +static void Player_actor_ObjCheck_Demo_wait(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forBrake(actorx, game); +} + +static void Player_actor_request_proc_index_fromDemo_wait(GAME* game) { + if (Player_actor_Get_DemoOrder() == 1) { + f32 pos_x; + f32 pos_z; + f32 speed; + + mPlib_Get_goal_player_demo_walk(&pos_x, &pos_z, &speed); + Player_actor_request_main_demo_walk_all(game, pos_x, pos_z, speed, mPlib_Get_end_player_demo_walk(), + mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Demo_wait(ACTOR* actorx, GAME* game) { + int effect_order; + f32 last_anim0_cur_frame; + int end_flag; + + effect_order = Player_actor_RecieveDemoOrder_EffectOrder(); + Player_actor_Movement_Demo_wait(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Demo_wait(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_wait(actorx, last_anim0_cur_frame); + Player_actor_ChangeAnimation_FromDemoOrder_Demo_wait(actorx, game, effect_order, end_flag); + Player_actor_SetEffect_FromDemoOrder_Demo_wait(actorx, game, effect_order); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_wait(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_wait(game); +} diff --git a/src/m_player_main_demo_walk.c_inc b/src/m_player_main_demo_walk.c_inc new file mode 100644 index 00000000..beb88035 --- /dev/null +++ b/src/m_player_main_demo_walk.c_inc @@ -0,0 +1,230 @@ +static int Player_actor_request_main_demo_walk_all(GAME* game, f32 goal_pos_x, f32 goal_pos_z, f32 speed, int wait_flag, + int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DEMO_WALK, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_demo_walk_c* req_demo_walk_p = &player->requested_main_index_data.demo_walk; + + req_demo_walk_p->goal_pos_x = goal_pos_x; + req_demo_walk_p->goal_pos_z = goal_pos_z; + req_demo_walk_p->speed = speed; + req_demo_walk_p->wait_flag = wait_flag; + Player_actor_request_main_index(game, mPlayer_INDEX_DEMO_WALK, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Demo_walk(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_demo_walk_c* req_demo_walk_p = &player->requested_main_index_data.demo_walk; + int anim0_idx = mPlayer_ANIM_WALK1; + int anim1_idx; + int part_table_idx; + + mPlib_Set_goal_player_demo_walk(req_demo_walk_p->goal_pos_x, req_demo_walk_p->goal_pos_z, req_demo_walk_p->speed); + mPlib_Set_continue_player_after_demo_walk(req_demo_walk_p->wait_flag); + mPlib_Set_end_player_demo_walk(FALSE); + + if (mPlib_Get_continue_player_after_demo_walk() == FALSE) { + xyz_t demo_pos; + f32 dist; + + Player_actor_Get_DemoPosition(&demo_pos); + dist = Math3DLengthSquare2D(demo_pos.x, demo_pos.z, actorx->world.position.x, actorx->world.position.z); + if (dist < SQ(10.0f)) { + anim0_idx = mPlayer_ANIM_WAIT1; + } + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_CulcAnimation_Demo_walk(ACTOR* actorx, f32 over_speed_normalize_NoneZero, + f32* last_anim0_cur_frame_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32 dummy; + + if (player->animation0_idx != mPlayer_ANIM_WAIT1) { + Player_actor_CulcAnimation_Walk(actorx, over_speed_normalize_NoneZero, last_anim0_cur_frame_p); + } else { + Player_actor_CulcAnimation_Base2(actorx, &dummy); + } +} + +static void Player_actor_SearchAnimation_Demo_walk(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->animation0_idx != mPlayer_ANIM_WAIT1) { + Player_actor_SearchAnimation_Walk(actorx, game, frame); + } +} + +static int Player_actor_Movement_Demo_walk(ACTOR* actorx, f32* over_speed_normalize_NoneZero_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32 over_speed_normalize_NoneZero = + Player_actor_Culc_over_speed_normalize_NoneZero(actorx, &actorx->world.position); + xyz_t demo_pos; + f32 demo_posX; + f32 demo_posZ; + f32 dx; + f32 dz; + f32 speed; + s16 goal_angle_y; + + Player_actor_Get_DemoPosition(&demo_pos); + demo_posX = demo_pos.x; + demo_posZ = demo_pos.z; + dx = demo_posX - actorx->world.position.x; + dz = demo_posZ - actorx->world.position.z; + speed = Player_actor_Get_DemoMoveSpeedF(); + goal_angle_y = actorx->world.angle.y; + + if (dx != 0.0f || dz != 0.0f) { + f32 speed_mod = speed / 3.525f; + + goal_angle_y = atans_table(dz, dx); + if (speed_mod >= 1.0f) { + speed_mod = 0.5f; + } else if (speed_mod <= 0.05f) { + speed_mod = 0.01f; + } else { + speed_mod = 0.01f + (speed_mod - 0.05f) * 0.5157895f; + } + + speed_mod = sqrtf(1.0f - speed_mod); + add_calc_short_angle2(&actorx->world.angle.y, goal_angle_y, 1.0f - speed_mod, 2500, 50); + if (player->animation0_idx != mPlayer_ANIM_WAIT1) { + actorx->shape_info.rotation.y = actorx->world.angle.y; + } + } + + { + f32 cos; + f32 now_speed; + + speed /= over_speed_normalize_NoneZero; + cos = cos_s(goal_angle_y - actorx->world.angle.y); + + if (cos <= 0.0f) { + speed = 0.0f; + } else { + speed *= cos; + } + + now_speed = actorx->speed; + if (now_speed != speed) { + if (now_speed < speed) { + now_speed += 0.60899997f; + + if (now_speed > speed) { + now_speed = speed; + } + } else if (now_speed > speed) { + now_speed -= 0.32625001f; + if (now_speed < speed) { + now_speed = speed; + } + } + + actorx->speed = now_speed; + } + } + + { + f32 dist = sqrtf(SQ(dx) + SQ(dz)); + + if (actorx->speed < 0.5f) { + actorx->speed = 0.5f; + speed = 0.5f; + } + + if (dist >= speed * 2.0f) { + if (over_speed_normalize_NoneZero == 1.0f) { + xyz_t wpos = actorx->world.position; + s16 angle_y = actorx->world.angle.y; + f32 speed = actorx->speed; + f32 speedX = (speed * 0.5f) * sin_s(angle_y); + f32 speedZ = (speed * 0.5f) * cos_s(angle_y); + f32 tmp; + + wpos.x += speedX; + wpos.z += speedZ; + tmp = Player_actor_Culc_over_speed_normalize_NoneZero(actorx, &wpos); + if (tmp != 1.0f) { + actorx->speed /= tmp; + over_speed_normalize_NoneZero = tmp; + } + } + } else if (dist < 0.5f) { + actorx->speed = dist; + } else { + actorx->speed = dist / 2.0f; + } + } + + Player_actor_Movement_Base(actorx); + { + f32 now_dx = demo_posX - actorx->world.position.x; + f32 now_dz = demo_posZ - actorx->world.position.z; + + now_dx = ABS(now_dx); + if (now_dx < 0.5f) { + actorx->world.position.x = demo_posX; + } + + now_dz = ABS(now_dz); + if (now_dz < 0.5f) { + actorx->world.position.z = demo_posZ; + } + + *over_speed_normalize_NoneZero_p = over_speed_normalize_NoneZero; + if (demo_posX == actorx->world.position.x && demo_posZ == actorx->world.position.z) { + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_ObjCheck_Demo_walk(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Demo_walk(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromDemo_walk(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + mPlib_Set_end_player_demo_walk(TRUE); + if (mPlib_Get_continue_player_after_demo_walk() == FALSE) { + if (Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19)) { + if (Player_actor_Get_DemoOrder() == 1) { + Player_actor_Set_DemoOrder(0); + } + } + } + } else { + Player_actor_Set_ScrollDemo_forDemo_wade(actorx); + } +} + +static void Player_actor_main_Demo_walk(ACTOR* actorx, GAME* game) { + f32 over_speed_normalize_NoneZero; + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_Movement_Demo_walk(actorx, &over_speed_normalize_NoneZero); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Demo_walk(actorx, over_speed_normalize_NoneZero, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Demo_walk(actorx, game, last_anim0_cur_frame); + Player_actor_set_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Demo_walk(actorx, game); + Player_actor_BGcheck_Demo_walk(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromDemo_walk(actorx, game, end_flag); +} diff --git a/src/m_player_main_dig_scoop.c_inc b/src/m_player_main_dig_scoop.c_inc new file mode 100644 index 00000000..e6dbc7f9 --- /dev/null +++ b/src/m_player_main_dig_scoop.c_inc @@ -0,0 +1,279 @@ +static int Player_actor_request_main_dig_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t name, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DIG_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.dig_scoop.dig_pos = *pos; + player->requested_main_index_data.dig_scoop.item = name; + + Player_actor_request_main_index(game, mPlayer_INDEX_DIG_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Dig_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_dig_scoop_c* main_scoop = &player->main_data.dig_scoop; + mPlayer_request_dig_scoop_c* req_scoop = &player->requested_main_index_data.dig_scoop; + mActor_name_t item = req_scoop->item; + int stump = FALSE; + int anim_idx; + + if (IS_ITEM_TREE_STUMP(item)) { + stump = TRUE; + } + + anim_idx = mPlayer_ANIM_DIG1; + + if (stump) { + anim_idx = mPlayer_ANIM_DIG_KABU1; + } + + main_scoop->target_pos = req_scoop->dig_pos; + main_scoop->item = item; + + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_DIG_SCOOP); +} + +static void Player_actor_Movement_Dig_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_fill_scoop_c* main_scoop = &player->main_data.fill_scoop; + + Player_actor_Movement_axe_common(actor, &main_scoop->target_pos); + + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Dig_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffectHit_Dig_scoop(ACTOR* actor, GAME* game, const xyz_t* pos, int main_index) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + int effect_idx; + s16 arg; + + if (player->animation0_idx == mPlayer_ANIM_DIG_KABU1) { + if (Player_actor_Check_AnimationFrame(fc, 42.0f)) { + effect_idx = eEC_EFFECT_DIG_SCOOP; + if (main_index != mPlayer_INDEX_GET_SCOOP) { + arg = 0; + } else { + arg = 3; + } + } else { + return; + } + } else { + if (Player_actor_Check_AnimationFrame(fc, 14.0f)) { + effect_idx = eEC_EFFECT_DIG_HOLE; + arg = 0; + } else if (Player_actor_Check_AnimationFrame(fc, 15.0f)) { + effect_idx = eEC_EFFECT_DIG_HOLE; + arg = 1; + } else if (Player_actor_Check_AnimationFrame(fc, 16.0f)) { + effect_idx = eEC_EFFECT_DIG_HOLE; + arg = 2; + } else if (Player_actor_Check_AnimationFrame(fc, 22.0f)) { + effect_idx = eEC_EFFECT_DIG_SCOOP; + if (main_index != mPlayer_INDEX_GET_SCOOP) { + arg = 0; + } else { + arg = 3; + } + } else { + return; + } + } + + Common_Get(clip).effect_clip->effect_make_proc(effect_idx, *pos, 2, actor->shape_info.rotation.y, game, RSV_NO, + mCoBG_Wpos2Attribute(*pos, NULL), arg); +} + +static void Player_actor_SetEffect_Dig_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_dig_scoop_c* main_scoop = &player->main_data.dig_scoop; + + Player_actor_SetEffectHit_Dig_scoop(actor, game, &main_scoop->target_pos, player->now_main_index); +} + +static void Player_actor_Put_Hole_Dig_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 mod; + + if (Common_Get(clip).bg_item_clip != NULL) { + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (player->animation0_idx == mPlayer_ANIM_DIG_KABU1) { + mod = 20.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, mod + 20.0f)) { + mPlayer_main_dig_scoop_c* main_scoop = &player->main_data.dig_scoop; + xyz_t* pos = &main_scoop->target_pos; + mActor_name_t item = main_scoop->item; + + if (Common_Get(clip).bg_item_clip->dig_hole_effect_entry_proc(item, pos, 12, 0)) { + mCoBG_RegistDecalCircle(pos, 0.0f, 19.0f, 12); + if (item != EMPTY_NO) { + int spot = FALSE; + + if (item != EMPTY_NO && item != SHINE_SPOT) { + spot = TRUE; + } + + if (spot) { + Common_Get(clip).bg_item_clip->fly_entry_proc(item, pos, actor->shape_info.rotation.y); + } + } + } + } + } +} + +static void Player_actor_SetSound_Dig_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 mod; + int anim; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + int anim_idx; + + anim_idx = player->animation0_idx; + anim = anim_idx == mPlayer_ANIM_DIG_KABU1; + + if (anim) { + mod = 20.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, (mod + 20.0f) - 5.0f)) { + if (anim) { + Player_actor_sound_kirikabu_out(actor); + } else { + Player_actor_sound_scoop1(actor); + Player_actor_set_viblation_Dig_scoop(); + } + } + + if (anim && Player_actor_Check_AnimationFrame(fc, 15.0f)) { + Player_actor_sound_kirikabu_scoop(actor); + Player_actor_set_viblation_Dig_scoop_stump(); + } + if (anim_idx == mPlayer_ANIM_GET_D1 && Player_actor_Check_AnimationFrame(fc, 21.0f)) { + Player_actor_sound_ITEM_HORIDASHI(actor); + } +} + +static void Player_actor_informed_insects_Dig_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 14.0f) && + Common_Get(clip).insect_clip != NULL && Common_Get(clip).insect_clip->set_pl_act_tim_proc != NULL) { + int ut_x; + int ut_z; + mPlayer_main_dig_scoop_c* main_scoop = &player->main_data.dig_scoop; + xyz_t* pos = &main_scoop->target_pos; + + mFI_Wpos2UtNum(&ut_x, &ut_z, *pos); + Common_Get(clip).insect_clip->set_pl_act_tim_proc(3, ut_x, ut_z); + } +} + +static void Player_actor_SearchAnimation_Dig_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Dig_scoop(actor, game); + Player_actor_Put_Hole_Dig_scoop(actor); + Player_actor_SetSound_Dig_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_informed_insects_Dig_scoop(actor); + } +} + +static void Player_actor_ObjCheck_Dig_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Dig_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static int Player_actor_lean_angle_scoop_common(ACTOR* actor, const xyz_t* pos, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s16 ang = 0; + + if (player->keyframe0.frame_control.current_frame < frame) { + f32 x; + f32 y; + f32 z; + + x = pos->x - actor->world.position.x; + y = pos->y - actor->world.position.y; + z = pos->z - actor->world.position.z; + + if (x != 0.0f || z != 0.0f) { + ang = atans_table(Math3DVecLength2D(x, z), -y); + } + } + + add_calc_short_angle2(&actor->shape_info.rotation.x, ang, 1.0f - sqrtf(0.5), 273, 0); +} + +static void Player_actor_lean_angle_Dig_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_dig_scoop_c* main_scoop = &player->main_data.dig_scoop; + + Player_actor_lean_angle_scoop_common(actor, &main_scoop->target_pos, 21.0f); +} + +static void Player_actor_request_proc_index_fromDig_scoop(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (end_flag != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + f32 mod; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (player->animation0_idx == mPlayer_ANIM_DIG_KABU1) { + mod = 20.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, 34.5f + mod)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, TRUE); + } else { + f32 cur_frame = fc->current_frame; + + if (cur_frame >= (35.0f + mod) && !Player_actor_CheckAndRequest_main_scoop_all(game, 4) && + (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} +static void Player_actor_main_Dig_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Dig_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Dig_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Dig_scoop(actor, game, frame_calc); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Dig_scoop(actor, game); + Player_actor_BGcheck_Dig_scoop(actor); + Player_actor_lean_angle_Dig_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromDig_scoop(actor, game, end_flag); +} diff --git a/src/m_player_main_dma.c_inc b/src/m_player_main_dma.c_inc new file mode 100644 index 00000000..c9153bac --- /dev/null +++ b/src/m_player_main_dma.c_inc @@ -0,0 +1,62 @@ + +static int Player_actor_request_main_dma(GAME* game, int flag) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DMA, flag) != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_DMA, flag); + return TRUE; + } + return FALSE; +} + +static void Player_actor_setup_main_Dma(ACTOR* actorx, GAME* game) { + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_request_proc_index_fromDma(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + Object_Exchange_c* exchange = &play->object_exchange; + int bank_idx = mSc_bank_regist_check(exchange, ACTOR_OBJ_BANK_14); + PLAYER_ACTOR* actor = (PLAYER_ACTOR*)actorx; + int i; + cKF_SkeletonInfo_R_c* keyf; + u16 type; + + if (exchange->banks[bank_idx].bank_id > 0) { + if (exchange->banks[bank_idx + 1].bank_id > 0 && exchange->banks[bank_idx + 2].bank_id > 0 && + exchange->banks[bank_idx + 3].bank_id > 0 && exchange->banks[bank_idx + 4].bank_id > 0 && + exchange->banks[bank_idx + 5].bank_id > 0 && exchange->banks[bank_idx + 6].bank_id > 0) { + Player_actor_ItemBank_ct(actorx, game); + if (actor->requested_main_index_priority == mPlayer_REQUEST_PRIORITY_41) { + Player_actor_SettleRequestMainIndexPriority(actorx); + } + keyf = &actor->keyframe0; + type = actor->actor_class.actor_specific; + cKF_SkeletonInfo_R_ct(keyf, mPlib_get_player_mdl_p(), NULL, actor->joint_data, actor->morph_data); + + actor->keyframe1 = *keyf; + + if ((type & 7) == 1) { + mPlib_request_main_outdoor_type1(game, 1, 0); + } else if ((type & 7) == 2) { + mPlib_request_main_outdoor_type1(game, 0, 0); + } else if ((type & 7) == 3) { + mPlib_request_main_outdoor_type1(game, 0, 1); + } else if ((type & 7) == 4) { + mPlib_request_main_hide_type1(game); + } else if ((type & 7) == 5) { + mPlib_request_main_groundhog_type1(game); + } else { + if (Common_Get(fail_emu_flag) == TRUE) { + Player_actor_request_main_fail_emu(game, mPlayer_REQUEST_PRIORITY_43); + } else { + Player_actor_request_main_intro_all(game, mPlayer_REQUEST_PRIORITY_43); + } + } + Camera2_request_main_normal(play, 1, 1); + } + } +} + +static void Player_actor_main_Dma(ACTOR* actor, GAME* game) { + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_request_proc_index_fromDma(actor, game); +} diff --git a/src/m_player_main_door.c_inc b/src/m_player_main_door.c_inc new file mode 100644 index 00000000..8221c6ea --- /dev/null +++ b/src/m_player_main_door.c_inc @@ -0,0 +1,66 @@ +static int Player_actor_request_main_door(GAME* game, const xyz_t* pos, s16 angle_y, int type, void* label, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_DOOR, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.door.player_pos = *pos; + player->requested_main_index_data.door.player_pos.y = player->actor_class.world.position.y; + player->requested_main_index_data.door.angle_y = angle_y; + player->requested_main_index_data.door.type = type; + player->requested_main_index_data.door.label = (u32)label; + + Player_actor_request_main_index(game, mPlayer_INDEX_DOOR, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Door(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx = mPlayer_ANIM_INTO_S1; + cKF_SkeletonInfo_R_c* keyf = &player->keyframe0; + + if (player->requested_main_index_data.door.type == 0) { + anim_idx = mPlayer_ANIM_OPEN1; + } + player->main_data.door.label = player->requested_main_index_data.door.label; + actor->world.angle.y = player->requested_main_index_data.door.angle_y; + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &player->requested_main_index_data.door.player_pos, + actor->shape_info.rotation.y, + player->requested_main_index_data.door.angle_y, 9.0f, keyf, 5); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -9.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + mBGMPsComp_scene_mode(12); +} + +static int Player_actor_CulcAnimation_Door(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Movement_Door(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); + Player_actor_Set_force_shadow_position_fromWorldPosition(actor); +} + +static void Player_actor_ObjCheck_Door(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_main_Door(ACTOR* actor, GAME* game) { + f32 frame_calc; + + Player_actor_CulcAnimation_Door(actor, &frame_calc); + Player_actor_Movement_Door(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Door(actor, game); + Player_actor_Item_main(actor, game); +} diff --git a/src/m_player_main_fail_emu.c_inc b/src/m_player_main_fail_emu.c_inc new file mode 100644 index 00000000..3f6a34a0 --- /dev/null +++ b/src/m_player_main_fail_emu.c_inc @@ -0,0 +1,111 @@ +static int Player_actor_request_main_fail_emu(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FAIL_EMU, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_FAIL_EMU, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Fail_emu(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_fail_emu_c* fail_emu_p = &player->main_data.fail_emu; + + fail_emu_p->timer = 0.0f; + fail_emu_p->msg_mode = 0; + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_WAIT1, mPlayer_ANIM_WAIT1, 1.0f, 1.0f, 0.5f, 0.0f, + cKF_FRAMECONTROL_REPEAT, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Fail_emu(ACTOR* actorx, GAME* game) { + Common_Set(fail_emu_flag, FALSE); +} + +static void Player_actor_Movement_Fail_emu(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.23925f); +} + +static int Player_actor_CulcAnimation_Fail_emu(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Fail_emu(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Fail_emu(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_Fail_emu_demo_ct(ACTOR* actorx) { + rgba_t window_color; + + mDemo_Set_msg_num(0x2B6A); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_ListenAble(); + + window_color.r = 255; + window_color.g = 255; + window_color.b = 20; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mChoice_CLEAR_CHOSENUM(); +} + +static int Player_actor_MessageControl_Fail_emu(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_fail_emu_c* fail_emu_p = &player->main_data.fail_emu; + f32* timer_p = &fail_emu_p->timer; + int* msg_mode_p = &fail_emu_p->msg_mode; + + if (*timer_p < 42.0f) { + (*timer_p) += 1.0f; + return FALSE; + } + + switch (*msg_mode_p) { + case 0: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Fail_emu_demo_ct); + } else { + *msg_mode_p = 1; + } + + return FALSE; + } + case 1: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + *msg_mode_p = 2; + } + return FALSE; + } + default: { + return TRUE; + } + } +} + +static void Player_actor_request_proc_index_fromFail_emu(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Fail_emu(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Fail_emu(actorx); + Player_actor_CulcAnimation_Fail_emu(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_ObjCheck_Fail_emu(actorx, game); + Player_actor_BGcheck_Fail_emu(actorx); + end_flag = Player_actor_MessageControl_Fail_emu(actorx); + Player_actor_request_proc_index_fromFail_emu(actorx, game, end_flag); +} diff --git a/src/m_player_main_fall.c_inc b/src/m_player_main_fall.c_inc new file mode 100644 index 00000000..b8fa446b --- /dev/null +++ b/src/m_player_main_fall.c_inc @@ -0,0 +1,84 @@ +static int Player_actor_request_main_fall_all(GAME* game, f32 speed, int flags, int prio) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FALL, prio)) { + player = GET_PLAYER_ACTOR_GAME(game); + Player_actor_request_main_index(game, mPlayer_INDEX_FALL, prio); + + player->requested_main_index_data.fall.morph_speed = speed; + + player->requested_main_index_data.fall.flags = flags; + + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Fall(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + f32 speed = player->requested_main_index_data.fall.morph_speed; + + int flags = player->requested_main_index_data.fall.flags; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_WAIT1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, speed, + part_table_idx); + + if (flags & 1) { + actor->position_speed.y = 0.0f; + } + + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_CulcAnimation_Fall(ACTOR* actor) { + f32 frame_calc; + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_Movement_Fall(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + +static void Player_actor_ObjCheck_Fall(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Fall(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromFall_common(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s8 kind; + s8 player_kind; + + if (actor->bg_collision_check.result.on_ground) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 4, mPlayer_REQUEST_PRIORITY_1); + } + kind = player->item_kind; + player_kind = Player_actor_Get_ItemKind(actor, player->now_main_index); + + if (kind != player_kind) { + Player_actor_request_main_fall_all(game, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_request_proc_index_fromFall(ACTOR* actor, GAME* game) { + Player_actor_request_proc_index_fromFall_common(actor, game); +} + +static void Player_actor_main_Fall(ACTOR* actor, GAME* game) { + Player_actor_Movement_Fall(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Fall(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Fall(actor, game); + Player_actor_BGcheck_Fall(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromFall(actor, game); +} diff --git a/src/m_player_main_fall_pitfall.c_inc b/src/m_player_main_fall_pitfall.c_inc new file mode 100644 index 00000000..2a179446 --- /dev/null +++ b/src/m_player_main_fall_pitfall.c_inc @@ -0,0 +1,84 @@ +static int Player_actor_request_main_fall_pitfall_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FALL_PITFALL, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_FALL_PITFALL, prio); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Get_PlayerAnimeIndex_fromItemKind_Fall_pitfall(int item_kind) { + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { + return mPlayer_ANIM_OTIRU2; + } else { + return mPlayer_ANIM_OTIRU1; + } +} + +static void Player_actor_setup_main_Fall_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + int item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + int anim0_idx = Player_actor_Get_PlayerAnimeIndex_fromItemKind_Fall_pitfall(item_kind); + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &actorx->world.position, + actorx->shape_info.rotation.y, actorx->shape_info.rotation.y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim0_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_FALL_PITFALL); +} + +static void Player_actor_settle_main_Fall_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); +} + +static int Player_actor_CulcAnimation_Fall_pitfall(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Fall_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_set_eye_pattern_Fall_pitfall(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); +} + +static void Player_actor_ObjCheck_Fall_pitfall(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromFall_pitfall(GAME* game, int end_flag) { + + if (end_flag) { + Player_actor_request_main_struggle_pitfall_all(game, mPlayer_REQUEST_PRIORITY_28); + } +} + +static void Player_actor_main_Fall_pitfall(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Fall_pitfall(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Fall_pitfall(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Fall_pitfall(actorx); + Player_actor_ObjCheck_Fall_pitfall(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromFall_pitfall(game, end_flag); +} diff --git a/src/m_player_main_fill_scoop.c_inc b/src/m_player_main_fill_scoop.c_inc new file mode 100644 index 00000000..2275c26b --- /dev/null +++ b/src/m_player_main_fill_scoop.c_inc @@ -0,0 +1,196 @@ +static int Player_actor_request_main_fill_scoop_all(GAME* game, const xyz_t* pos, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FILL_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.fill_scoop.dig_pos = *pos; + + Player_actor_request_main_index(game, mPlayer_INDEX_FILL_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Fill_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_fill_scoop_c* main_scoop = &player->main_data.fill_scoop; + mPlayer_request_fill_scoop_c* req_scoop = &player->requested_main_index_data.fill_scoop; + + main_scoop->target_pos = req_scoop->dig_pos; + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_FILL_UP1, mPlayer_ANIM_FILL_UP1, 1.0f, 1.0f, 0.5f, -5.0f, + 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Fill_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_fill_scoop_c* main_scoop = &player->main_data.fill_scoop; + + Player_actor_Movement_axe_common(actor, &main_scoop->target_pos); + + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Fill_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Reset_Hole_Fill_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 mod = 0.0f; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (player->animation0_idx == mPlayer_ANIM_FILL_UP_I1) { + mod = 7.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, 18.0f + mod) && Common_Get(clip).bg_item_clip != NULL) { + mPlayer_main_fill_scoop_c* main_scoop = &player->main_data.fill_scoop; + xyz_t* pos = &main_scoop->target_pos; + Common_Get(clip).bg_item_clip->bury_hole_effect_entry_proc(EMPTY_NO, pos, 46); + } +} + +static void Player_actor_SetEffectHit_Fill_scoop(ACTOR* actor, GAME* game, const xyz_t* pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + s16 arg; + f32 mod; + f32 c1; + f32 c2; + f32 c3; + f32 c4; + + if (player->animation0_idx == mPlayer_ANIM_FILL_UP_I1) { + mod = 7.0f; + } else { + mod = 0.0f; + } + c1 = 13.0f + mod; + c2 = 19.0f + mod; + c3 = 25.0f + mod; + c4 = 40.0f + mod; + if (Player_actor_Check_AnimationFrame(fc, c1)) { + arg = 3; + } else if (Player_actor_Check_AnimationFrame(fc, c2)) { + arg = 4; + } else if (Player_actor_Check_AnimationFrame(fc, c3)) { + arg = 5; + } else { + if (Player_actor_Check_AnimationFrame(fc, c4)) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_DIG_SCOOP, *pos, 2, actor->shape_info.rotation.y, + game, RSV_NO, mCoBG_Wpos2Attribute(*pos, NULL), 2); + return; + } else { + return; + } + } + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_DIG_HOLE, *pos, 2, actor->shape_info.rotation.y, game, + RSV_NO, mCoBG_Wpos2Attribute(*pos, NULL), arg); +} + +static void Player_actor_SetEffect_Fill_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + mPlayer_main_fill_scoop_c* main_scoop = &player->main_data.fill_scoop; + + Player_actor_SetEffectHit_Fill_scoop(actor, game, &main_scoop->target_pos); +} + +static void Player_actor_SetSound_Fill_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 mod = 0.0f; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (player->animation0_idx == mPlayer_ANIM_FILL_UP_I1) { + mod = 7.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, (18.0f + mod) - 7.0f)) { + Player_actor_sound_scoop_umeru(actor); + Player_actor_set_viblation_Fill_scoop(); + } +} + +static void Player_actor_SearchAnimation_Fill_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Reset_Hole_Fill_scoop(actor); + Player_actor_SetEffect_Fill_scoop(actor, game); + Player_actor_SetSound_Fill_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Fill_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Fill_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static int Player_actor_lean_angle_Fill_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 mod = 0.0f; + + if (player->animation0_idx == mPlayer_ANIM_FILL_UP_I1) { + mod = 7.0f; + } else { + mod = 0.0f; + } + + Player_actor_lean_angle_scoop_common(actor, &player->main_data.fill_scoop.target_pos, 42.0f + mod); +} + +static void Player_actor_request_proc_index_fromFill_scoop(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (end_flag != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + f32 mod; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (player->animation0_idx == mPlayer_ANIM_FILL_UP_I1) { + mod = 7.0f; + } else { + mod = 0.0f; + } + + if (Player_actor_Check_AnimationFrame(fc, 44.5f + mod)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, TRUE); + } else { + f32 cur_frame = fc->current_frame; + + if (cur_frame >= (45.0f + mod) && !Player_actor_CheckAndRequest_main_scoop_all(game, 4) && + (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Fill_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Fill_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Fill_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Fill_scoop(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Fill_scoop(actor, game); + Player_actor_BGcheck_Fill_scoop(actor); + Player_actor_lean_angle_Fill_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromFill_scoop(actor, game, end_flag); +} diff --git a/src/m_player_main_fly_rod.c_inc b/src/m_player_main_fly_rod.c_inc new file mode 100644 index 00000000..6e4dca2b --- /dev/null +++ b/src/m_player_main_fly_rod.c_inc @@ -0,0 +1,70 @@ +static int Player_actor_request_main_fly_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_FLY_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_FLY_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Fly_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_TRANS_WAIT1, mPlayer_INDEX_INVADE, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_GET_T1, mPlayer_ANIM_GET_T1, 1.0f, 1.0f, 0.5f, 0.0f, 0, + 0); + Player_actor_sound_ROD_BACK(actor); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Fly_rod(ACTOR* actor, GAME* game) { + Player_actor_settle_main_Fly_rod_other_func2(actor, game); +} + +static void Player_actor_Movement_Fly_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Fly_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SearchAnimation_Fly_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Fly_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Fly_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromFly_rod(ACTOR* actor, GAME* game, int ready, int status) { + if (ready && status != 0) { + Player_actor_request_main_notice_rod(game, actor->shape_info.rotation.y, mPlayer_REQUEST_PRIORITY_28); + } +} + +static void Player_actor_main_Fly_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + int status; + + Player_actor_Movement_Fly_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Fly_rod(actor, &frame_calc); + Player_actor_SearchAnimation_Fly_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Fly_rod(actor, game); + Player_actor_BGcheck_Fly_rod(actor); + status = Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromFly_rod(actor, game, end_flag, status); + Player_actor_main_Fly_rod_other_func2(actor, game); +} diff --git a/src/m_player_main_get_scoop.c_inc b/src/m_player_main_get_scoop.c_inc new file mode 100644 index 00000000..5781e0dd --- /dev/null +++ b/src/m_player_main_get_scoop.c_inc @@ -0,0 +1,291 @@ +static int Player_actor_request_main_get_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_GET_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.get_scoop.dig_pos = *pos; + player->requested_main_index_data.get_scoop.item = item; + + Player_actor_request_main_index(game, mPlayer_INDEX_GET_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Get_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int free_space; + mActor_name_t item; + mActor_name_t* fg_unit; + mActor_name_t fg_item; + xyz_t* pos; + mPlayer_request_get_scoop_c* req_scoop = &player->requested_main_index_data.get_scoop; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + item = req_scoop->item; + pos = &req_scoop->dig_pos; + + main_scoop->target_pos = *pos; + main_scoop->scale = 0.0f; + main_scoop->timer = 0.0f; + main_scoop->msg_mode = 0; + main_scoop->submenu_flag = FALSE; + + free_space = mPlib_Get_space_putin_item_forTICKET(&item); + + fg_unit = mFI_GetUnitFG(req_scoop->dig_pos); + main_scoop->item = item; + + fg_item = item; + if (fg_unit != NULL && *fg_unit == SHINE_SPOT) { + fg_item = SHINE_SPOT; + } + + Common_Get(clip).bg_item_clip->dig_hole_effect_entry_proc(fg_item, &req_scoop->dig_pos, 12, 40); + + if (free_space >= 0) { + Player_actor_putin_item(free_space, item, NULL); + main_scoop->success_flag = TRUE; + } else { + main_scoop->success_flag = FALSE; + } + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_GET_D1, mPlayer_ANIM_GET_D1, 1.0f, 1.0f, 0.5f, -5.0f, 0, + 0); + Player_actor_setup_main_Base(actor, game); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_DIG_SCOOP); +} + +static void Player_actor_settle_main_Get_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Common_Get(clip).bg_item_clip) { + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + xyz_t* left_hand = &player->left_hand_pos; + mActor_name_t item = main_scoop->item; + + if (!main_scoop->success_flag && !main_scoop->submenu_flag && main_scoop->item) { + Common_Get(clip).bg_item_clip->drop_entry_v1_proc(item, left_hand, &main_scoop->target_pos); + } + } + mBGMPsComp_delete_ps_fanfare(0x28, 0x168); +} + +static void Player_actor_Movement_Get_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + f32 timer = main_scoop->timer; + xyz_t* pos = &main_scoop->target_pos; + + if (timer < 86.0f) { + Player_actor_Movement_axe_common(actor, pos); + } else { + add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50); + } + + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Get_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Get_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + Player_actor_SetEffectHit_Dig_scoop(actor, game, &main_scoop->target_pos, player->now_main_index); +} + +static void Player_actor_Put_Hole_Get_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 20.0f) && Common_Get(clip).bg_item_clip) { + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + mCoBG_RegistDecalCircle(&main_scoop->target_pos, 0.0f, 19.0f, 12); + } +} + +static void Player_actor_SearchAnimation_Get_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Get_scoop(actor, game); + Player_actor_Put_Hole_Get_scoop(actor); + Player_actor_SetSound_Dig_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_set_eye_pattern_Get_scoop(ACTOR* actor, int end_flag) { + if (end_flag) { + Player_actor_set_eye_pattern_normal(actor); + } else { + Player_actor_set_tex_anime_pattern(actor); + } +} + +static void Player_actor_ObjCheck_Get_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Get_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static int Player_actor_lean_angle_Get_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s16 ang = 0; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + if (player->keyframe0.frame_control.current_frame < 21.0f) { + f32 x; + f32 y; + f32 z; + + x = main_scoop->target_pos.x - actor->world.position.x; + y = main_scoop->target_pos.y - actor->world.position.y; + z = main_scoop->target_pos.z - actor->world.position.z; + + if (x != 0.0f || z != 0.0f) { + ang = atans_table(Math3DVecLength2D(x, z), -y); + } + } + + add_calc_short_angle2(&actor->shape_info.rotation.x, ang, 1.0f - sqrtf(0.5), 273, 0); +} + +static void Player_actor_Get_scoop_demo_ct(ACTOR* actor) { + rgba_t color; + mMsg_Window_c* win = mMsg_Get_base_window_p(); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + u8 str[16]; + mActor_name_t item = main_scoop->item; + + mIN_copy_name_str(str, item); + mMsg_Set_item_str_art(win, 0, str, sizeof(str), mIN_get_item_article(item)); + mDemo_Set_msg_num(0x17AF); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + mMsg_Set_LockContinue(win); + + color.r = 185; + color.g = 245; + color.b = 80; + color.a = 255; + + mDemo_Set_talk_window_color(&color); + mChoice_Clear_ChoseNum(mChoice_Get_base_window_p()); + mBGMPsComp_make_ps_fanfare(0x28, 0x168); +} + +static int Player_actor_MessageControl_Get_scoop(ACTOR* actor, int end_flag) { + mMsg_Window_c* win = mMsg_Get_base_window_p(); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + int choice; + + if (main_scoop->timer < 86.0f) { + main_scoop->timer += 1.0f; + return -1; + } + + switch (main_scoop->msg_mode) { + case 0: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + mDemo_Request(mDemo_TYPE_REPORT, actor, Player_actor_Get_scoop_demo_ct); + } else { + main_scoop->msg_mode = 1; + } + return -1; + + case 1: + if (end_flag) { + if (main_scoop->success_flag) { + mMsg_Set_CancelNormalContinue(win); + + main_scoop->msg_mode = 3; + } else { + mMsg_Set_continue_msg_num(win, 0x17B3); + + main_scoop->msg_mode = 2; + } + mMsg_Unset_LockContinue(win); + } + return -1; + + case 2: + choice = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); + + if (choice == mChoice_CHOICE0) { + main_scoop->submenu_flag = TRUE; + main_scoop->msg_mode = 3; + } else if (choice == mChoice_CHOICE1) { + main_scoop->submenu_flag = FALSE; + main_scoop->msg_mode = 3; + } + + return -1; + default: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + if (main_scoop->success_flag) { + return 0x3F; + } else { + return !main_scoop->submenu_flag + 0x3F; + } + } + return -1; + } +} + +static void Player_actor_Set_Item_Get_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + if (fc->current_frame <= 21.0f) { + main_scoop->scale = 0.0f; + } else if (fc->current_frame < 27.0f) { + main_scoop->scale = (0.0016666666f * (fc->current_frame - 21.0f)); + } else { + main_scoop->scale = 0.01f; + } +} + +static void Player_actor_request_proc_index_fromGet_scoop(ACTOR* actor, GAME* game, int cntrl) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_get_scoop_c* main_scoop = &player->main_data.get_scoop; + + switch (cntrl) { + case 0x3F: + Player_actor_request_main_putaway_scoop_all(game, &main_scoop->target_pos, main_scoop->item, + main_scoop->submenu_flag, mPlayer_REQUEST_PRIORITY_21); + break; + case 0x40: + Player_actor_request_main_putin_scoop_all(game, &main_scoop->target_pos, EMPTY_NO, FALSE, + mPlayer_REQUEST_PRIORITY_21); + break; + } +} + +static void Player_actor_main_Get_scoop(ACTOR* actor, GAME* game) { + int end_flag; + f32 frame_calc; + int cntrl; + + Player_actor_Movement_Get_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Get_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Get_scoop(actor, game, frame_calc); + Player_actor_set_eye_pattern_Get_scoop(actor, end_flag); + Player_actor_ObjCheck_Get_scoop(actor, game); + Player_actor_BGcheck_Get_scoop(actor); + Player_actor_lean_angle_Get_scoop(actor); + Player_actor_Set_Item_Get_scoop(actor); + cntrl = Player_actor_MessageControl_Get_scoop(actor, end_flag); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromGet_scoop(actor, game, cntrl); +} diff --git a/src/m_player_main_give.c_inc b/src/m_player_main_give.c_inc new file mode 100644 index 00000000..66283d5f --- /dev/null +++ b/src/m_player_main_give.c_inc @@ -0,0 +1,124 @@ +static int Player_actor_request_main_give_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int mode, int present_flag, int surface_flag, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_GIVE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_give_c* req_give_p = &player->requested_main_index_data.give; + + Player_actor_request_main_index(game, mPlayer_INDEX_GIVE, priority); + req_give_p->talk_actor = talk_actor_p; + req_give_p->turn_flag = turn_flag; + req_give_p->prev_main_index = ret_main_index; + req_give_p->item = item; + req_give_p->mode = mode; + req_give_p->present_flag = present_flag; + req_give_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_main_give_from_submenu(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int main_index = player->now_main_index; + ACTOR* talk_actor_p; + int turn_flag; + mPlayer_request_give_from_submenu_c* req_give_from_submenu_p; + + req_give_from_submenu_p = &mPlib_Get_change_data_from_submenu_p()->request_main_data.give_from_submenu; + if (main_index == mPlayer_INDEX_TALK) { + talk_actor_p = player->main_data.talk.talk_actor_p; + turn_flag = player->main_data.talk.turn_flag; + } else { + talk_actor_p = NULL; + turn_flag = FALSE; + } + + Player_actor_request_main_give_all(game, talk_actor_p, turn_flag, main_index, req_give_from_submenu_p->item, + req_give_from_submenu_p->mode_after, req_give_from_submenu_p->present_flag, + req_give_from_submenu_p->counter_flag, mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Give(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_give_c* req_give_p = &player->requested_main_index_data.give; + mPlayer_main_give_c* main_give_p = &player->main_data.give; + mActor_name_t item; + int mode; + int present_flag; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + item = req_give_p->item; + mode = req_give_p->mode; + present_flag = req_give_p->present_flag; + + main_give_p->talk_actor_p = req_give_p->talk_actor; + main_give_p->turn_flag = req_give_p->turn_flag; + main_give_p->ret_main_index = req_give_p->prev_main_index; + main_give_p->item = req_give_p->item; + main_give_p->surface_flag = req_give_p->on_surface_flag; + + if (Player_actor_check_item_is_fish(item)) { + anim0_idx = mPlayer_ANIM_TRANSFER_F1; + } else if (main_give_p->surface_flag) { + anim0_idx = mPlayer_ANIM_SEND_MAIL1; + } else { + anim0_idx = mPlayer_ANIM_TRANSFER1; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_Birth_TradingItem(actorx, item, mode, present_flag); + Player_actor_Set_item_matrix_set(actorx); + Player_actor_sound_GASAGOSO(actorx); +} + +static void Player_actor_Movement_Give(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Give(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Give(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromGive(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + int after_mode = Common_Get(clip).handOverItem_clip->player_after_mode; + mPlayer_main_give_c* main_give_p = &player->main_data.give; + ACTOR* talk_actor_p = main_give_p->talk_actor_p; + int turn_flag = main_give_p->turn_flag; + int ret_main_index = main_give_p->ret_main_index; + + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_give_wait_all(game, talk_actor_p, turn_flag, ret_main_index, main_give_p->item, + main_give_p->surface_flag, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Give(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Give(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Give(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Give(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Set_item_matrix_set(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromGive(actorx, game, end_flag); +} diff --git a/src/m_player_main_give_wait.c_inc b/src/m_player_main_give_wait.c_inc new file mode 100644 index 00000000..ed2f9a35 --- /dev/null +++ b/src/m_player_main_give_wait.c_inc @@ -0,0 +1,119 @@ +static int Player_actor_request_main_give_wait_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_GIVE_WAIT, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_give_wait_c* req_give_wait_p = &player->requested_main_index_data.give_wait; + + Player_actor_request_main_index(game, mPlayer_INDEX_GIVE_WAIT, priority); + req_give_wait_p->talk_actor = talk_actor_p; + req_give_wait_p->turn_flag = turn_flag; + req_give_wait_p->prev_main_index = ret_main_index; + req_give_wait_p->item = item; + req_give_wait_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Give_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_give_wait_c* req_give_wait_p = &player->requested_main_index_data.give_wait; + mPlayer_main_give_wait_c* main_give_wait_p = &player->main_data.give_wait; + mActor_name_t item; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + item = req_give_wait_p->item; + + main_give_wait_p->talk_actor_p = req_give_wait_p->talk_actor; + main_give_wait_p->turn_flag = req_give_wait_p->turn_flag; + main_give_wait_p->ret_main_index = req_give_wait_p->prev_main_index; + main_give_wait_p->surface_flag = req_give_wait_p->on_surface_flag; + + if (Player_actor_check_item_is_fish(item)) { + anim0_idx = mPlayer_ANIM_TRANS_WAIT_F1; + } else if (main_give_wait_p->surface_flag) { + anim0_idx = mPlayer_ANIM_WAIT1; + } else { + anim0_idx = mPlayer_ANIM_TRANS_WAIT1; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_CHange_TradingItemMode(actorx, aHOI_REQUEST_TRANS_WAIT); + + /* Handing items over a surface (like the mail counter), item does not need to be attached to player's hand */ + if (main_give_wait_p->surface_flag == FALSE) { + Player_actor_Set_item_matrix_set(actorx); + } +} + +static void Player_actor_settle_main_Give_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_give_wait_c* main_give_wait_p = &player->main_data.give_wait; + + /* Handing items over a surface (like the mail counter), item does not need to be attached to player's hand */ + if (main_give_wait_p->surface_flag == FALSE) { + Player_actor_Unset_item_matrix_set(actorx); + } +} + +static void Player_actor_Movement_Give_wait(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Give_wait(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Give_wait(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_Set_item_matrix_set_Give_wait(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_give_wait_c* main_give_wait_p = &player->main_data.give_wait; + + /* Handing items over a surface (like the mail counter), item does not need to be attached to player's hand */ + if (main_give_wait_p->surface_flag == FALSE) { + Player_actor_Set_item_matrix_set(actorx); + } +} + +static void Player_actor_request_proc_index_fromGive_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_ItemParent(actorx) == FALSE) { + mPlayer_main_give_wait_c* main_give_wait_p = &player->main_data.give_wait; + int ret_main_index = main_give_wait_p->ret_main_index; + + Player_actor_SettleRequestMainIndexPriority(actorx); + + if (ret_main_index != mPlayer_INDEX_TALK) { + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } else { + ACTOR* talk_actor_p = main_give_wait_p->talk_actor_p; + int turn_flag = main_give_wait_p->turn_flag; + Player_actor_request_main_talk_all(game, talk_actor_p, turn_flag, -12.0f, FALSE, + mPlayer_REQUEST_PRIORITY_19); + } + } +} + +static void Player_actor_main_Give_wait(ACTOR* actorx, GAME* game) { + Player_actor_Movement_Give_wait(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Give_wait(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Give_wait(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Set_item_matrix_set_Give_wait(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromGive_wait(actorx, game); +} diff --git a/src/m_player_main_groundhog.c_inc b/src/m_player_main_groundhog.c_inc new file mode 100644 index 00000000..5c5b9208 --- /dev/null +++ b/src/m_player_main_groundhog.c_inc @@ -0,0 +1,40 @@ +static int Player_actor_request_main_groundhog(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_GROUNDHOG, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_GROUNDHOG, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Groundhog(ACTOR* actorx, GAME* game) { + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, 0.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, 0.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_CulcAnimation_Groundhog(ACTOR* actorx) { + Player_actor_CulcAnimation_Base(actorx); +} + +static void Player_actor_ObjCheck_Groundhog(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Groundhog(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_main_Groundhog(ACTOR* actorx, GAME* game) { + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Groundhog(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Groundhog(actorx, game); + Player_actor_BGcheck_Groundhog(actorx); + Player_actor_Item_main(actorx, game); +} diff --git a/src/m_player_main_hide.c_inc b/src/m_player_main_hide.c_inc new file mode 100644 index 00000000..a5e9f316 --- /dev/null +++ b/src/m_player_main_hide.c_inc @@ -0,0 +1,17 @@ +static int Player_actor_request_main_hide(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_HIDE, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_HIDE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Hide(ACTOR* actorx, GAME* game) { + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_main_Hide(ACTOR* actorx, GAME* game) { + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); +} diff --git a/src/m_player_main_hold.c_inc b/src/m_player_main_hold.c_inc new file mode 100644 index 00000000..b9b33daf --- /dev/null +++ b/src/m_player_main_hold.c_inc @@ -0,0 +1,169 @@ +static int Player_actor_Check_able_request_main_hold(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + switch (player->now_main_index) { + case mPlayer_INDEX_WAIT: + case mPlayer_INDEX_WALK: + case mPlayer_INDEX_RUN: + case mPlayer_INDEX_DASH: + case mPlayer_INDEX_HOLD: + case mPlayer_INDEX_PUSH: + case mPlayer_INDEX_PULL: + case mPlayer_INDEX_ROTATE_FURNITURE: + return TRUE; + + case mPlayer_INDEX_TUMBLE: + case mPlayer_INDEX_TUMBLE_GETUP: + case mPlayer_INDEX_TURN_DASH: + case mPlayer_INDEX_FALL: + case mPlayer_INDEX_WADE: + case mPlayer_INDEX_DOOR: + case mPlayer_INDEX_OUTDOOR: + case mPlayer_INDEX_INVADE: + default: + + return FALSE; + } +} + +static Player_actor_request_main_hold(GAME* game, int ftr_no, int index, const xyz_t* pos, f32 speed, int flags, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_HOLD, priority) && + Player_actor_Check_able_request_main_hold(game)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.hold.ftr_no = ftr_no; + player->requested_main_index_data.hold.angle_y = Player_actor_Get_Angle_fromIndex(index); + player->requested_main_index_data.hold.player_pos = *pos; + player->requested_main_index_data.hold.morph_speed = speed; + player->requested_main_index_data.hold.flags = flags; + + Player_actor_request_main_index(game, mPlayer_INDEX_HOLD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Hold(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.hold.flags; + + player->main_data.hold.ftr_no = player->requested_main_index_data.hold.ftr_no; + player->main_data.hold.angle_y = player->requested_main_index_data.hold.angle_y; + player->main_data.hold.player_pos = player->requested_main_index_data.hold.player_pos; + + if (flags & 1) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_HOLD_WAIT1, mPlayer_ANIM_HOLD_WAIT1, 1.0f, 1.0f, + 0.5f, player->requested_main_index_data.hold.morph_speed, 0); + } + + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_CulcAnimation_Hold(ACTOR* actor) { + f32 calc_frame; + + return Player_actor_CulcAnimation_Base2(actor, &calc_frame); +} + +static void Player_actor_Movement_Hold(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 x = player->main_data.hold.player_pos.x; + f32 z = player->main_data.hold.player_pos.z; + s16 angle = player->main_data.hold.angle_y; + + add_calc_short_angle2(&actor->shape_info.rotation.y, angle, 1.0f - sqrtf(0.5), 8192, 50); + actor->world.angle.y = actor->shape_info.rotation.y; + add_calc(&actor->world.position.x, x, 1.0f - sqrtf(0.9), 500.0f, 0.5f); + add_calc(&actor->world.position.z, z, 1.0f - sqrtf(0.9), 500.0f, 0.5f); + + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_ObjCheck_Hold(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Hold(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromHold(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Common_Get(clip).my_room_clip != NULL) { + int state; + xyz_t wpos0; + xyz_t wpos1; + xyz_t pull_pos; + int ftr_no; + xyz_t* pos; + s16 angle; + + ftr_no = player->main_data.hold.ftr_no; + state = Common_Get(clip).my_room_clip->judge_player_action_proc(&wpos0, &wpos1, ftr_no); + angle = player->main_data.hold.angle_y; + pos = &player->main_data.hold.player_pos; + switch (state) { + case 0: + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + break; + case 2: + Player_actor_request_main_push(game, ftr_no, angle, pos, mPlayer_REQUEST_PRIORITY_21); + break; + case 3: + pull_pos.x = wpos1.x - wpos0.x; + pull_pos.z = wpos1.z - wpos0.z; + + Player_actor_request_main_pull(game, ftr_no, angle, pos, &wpos1, &pull_pos, + mPlayer_REQUEST_PRIORITY_21); + break; + case 4: + case 5: + Player_actor_request_main_rotate_furniture(game, ftr_no, angle, pos, state, + mPlayer_REQUEST_PRIORITY_21); + break; + case 6: + Player_actor_request_main_open_furniture(game, angle, pos, 0x2D, mPlayer_REQUEST_PRIORITY_21); + break; + case 7: + Player_actor_request_main_open_furniture(game, angle, pos, 0x2B, mPlayer_REQUEST_PRIORITY_21); + break; + case 8: + Player_actor_request_main_open_furniture(game, angle, pos, 0x2C, mPlayer_REQUEST_PRIORITY_21); + break; + case 9: + if (player->animation0_idx != mPlayer_ANIM_HOLD_WAIT_O1) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_HOLD_WAIT_O1, mPlayer_ANIM_HOLD_WAIT_O1, + 1.0f, 1.0f, 0.5f, -4.0f, 0); + } + break; + case 10: + if (player->animation0_idx != mPlayer_ANIM_HOLD_WAIT_H1) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_HOLD_WAIT_H1, mPlayer_ANIM_HOLD_WAIT_H1, + 1.0f, 1.0f, 0.5f, -4.0f, 0); + } + break; + case 1: + if (player->animation0_idx != mPlayer_ANIM_HOLD_WAIT1) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_HOLD_WAIT1, mPlayer_ANIM_HOLD_WAIT1, + 1.0f, 1.0f, 0.5f, -4.0f, 0); + } + break; + } + } +} + +static void Player_actor_main_Hold(ACTOR* actor, GAME* game) { + Player_actor_Movement_Hold(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Hold(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Hold(actor, game); + Player_actor_BGcheck_Hold(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromHold(actor, game); +} diff --git a/src/m_player_main_intro.c_inc b/src/m_player_main_intro.c_inc new file mode 100644 index 00000000..eb8dacb0 --- /dev/null +++ b/src/m_player_main_intro.c_inc @@ -0,0 +1,66 @@ +static int Player_actor_request_main_intro_all(GAME* game, int flag) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_INTRO, flag) != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_INTRO, flag); + return TRUE; + } + return FALSE; +} + +static void Player_actor_setup_main_Intro(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + player->main_data.intro.timer = 0.0f; + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, 0.0f, part_table_idx); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_CulcAnimation_Intro(ACTOR* actor) { + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +static void Player_actor_Movement_Intro(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + +static void Player_actor_ObjCheck_Intro(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Intro(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_ResetCameraPos_Intro(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + if (Camera2_Check_main_index(play, mPlayer_INDEX_INTRO) != 0) { + Camera2_request_main_normal(play, 1, 1); + } +} + +static void Player_actor_request_proc_index_fromIntro(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + player->main_data.intro.timer += 1.0f; + if (player->main_data.intro.timer >= 4.0f) { + Player_actor_request_main_wait_all(game, 0.0f, 0.0f, 0, 1); + } +} + +static void Player_actor_main_Intro(ACTOR* actor, GAME* game) { + Player_actor_Movement_Intro(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Intro(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Intro(actor, game); + Player_actor_BGcheck_Intro(actor); + Player_actor_ResetCameraPos_Intro(game); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromIntro(actor, game); +} diff --git a/src/m_player_main_invade.c_inc b/src/m_player_main_invade.c_inc new file mode 100644 index 00000000..9227dbff --- /dev/null +++ b/src/m_player_main_invade.c_inc @@ -0,0 +1,51 @@ +static int Player_actor_request_main_invade(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_INVADE, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_INVADE, priority); + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_request_main_invade_all(GAME* game, int priority) { + return Player_actor_request_main_invade(game, priority) != 0; +} + +static void Player_actor_setup_main_Invade(ACTOR* actor, GAME* game) { + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_WAIT1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, 0, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, part_table_idx); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Invade(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + +static void Player_actor_CulcAnimation_Invade(ACTOR* actor) { + f32 frame_calc; + + Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Invade(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Invade(ACTOR* actor) { + Player_actor_BGcheck_common_type2(actor); +} + +static void Player_actor_main_Invade(ACTOR* actor, GAME* game) { + Player_actor_Movement_Invade(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Invade(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Invade(actor, game); + Player_actor_BGcheck_Invade(actor); + Player_actor_Item_main(actor, game); +} diff --git a/src/m_player_main_knock_door.c_inc b/src/m_player_main_knock_door.c_inc new file mode 100644 index 00000000..cb95c7e9 --- /dev/null +++ b/src/m_player_main_knock_door.c_inc @@ -0,0 +1,107 @@ +static int Player_actor_request_main_knock_door(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_KNOCK_DOOR, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_knock_door_c* req_knock_door_p = &player->requested_main_index_data.knock_door; + + req_knock_door_p->request_main_index = player->requested_main_index; + req_knock_door_p->pos = *pos_p; + req_knock_door_p->angle_y = angle_y; + + Player_actor_request_main_index(game, mPlayer_INDEX_KNOCK_DOOR, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Knock_door(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_knock_door_c* req_knock_door_p = &player->requested_main_index_data.knock_door; + mPlayer_main_knock_door_c* knock_door_p = &player->main_data.knock_door; + int anim1_idx; + int part_table_idx; + + knock_door_p->request_data = *req_knock_door_p; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_KNOCK1, -5.0f, &anim1_idx, &part_table_idx); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_knock_door_p->pos, + actorx->shape_info.rotation.y, req_knock_door_p->angle_y, 5.0f, kf0_p, + cKF_ANIMATION_ROT_Y | cKF_ANIMATION_TRANS_XZ); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_KNOCK1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Knock_door(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Knock_door(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Knock_door(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_SetSound_Knock_door(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 13.0f) || Player_actor_Check_AnimationFrame(fc0_p, 20.0f)) { + Player_actor_sound_knock(actorx); + } +} + +static void Player_actor_SearchAnimation_Knock_door(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Knock_door(actorx); + } +} + +static void Player_actor_ObjCheck_Knock_door(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Knock_door(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromKnock_door(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_knock_door_c* knock_door_p = &player->main_data.knock_door; + bcopy(&knock_door_p->request_data.request_data, &player->requested_main_index_data, + sizeof(knock_door_p->request_data.request_data)); + Player_actor_request_main_index(game, knock_door_p->request_data.request_main_index, + mPlayer_REQUEST_PRIORITY_39); + } +} + +static void Player_actor_main_Knock_door(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Knock_door(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Knock_door(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Knock_door(actorx, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Knock_door(actorx, game); + Player_actor_BGcheck_Knock_door(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromKnock_door(actorx, game, end_flag); +} diff --git a/src/m_player_main_lie_bed.c_inc b/src/m_player_main_lie_bed.c_inc new file mode 100644 index 00000000..121cf051 --- /dev/null +++ b/src/m_player_main_lie_bed.c_inc @@ -0,0 +1,176 @@ +static int Player_actor_Check_able_request_main_lie_bed(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int index = player->now_main_index; + + switch (index) { + case mPlayer_INDEX_WAIT: + case mPlayer_INDEX_WALK: + case mPlayer_INDEX_RUN: + case mPlayer_INDEX_DASH: + return TRUE; + + default: + return FALSE; + } +} + +static int Player_actor_request_main_lie_bed(GAME* game, int direction, const xyz_t* pos, int dir, int flags, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_LIE_BED, priority) && + Player_actor_Check_able_request_main_lie_bed(game)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.lie_bed.direction = dir; + player->requested_main_index_data.lie_bed.angle = Player_actor_Get_Angle_fromDirection(direction); + player->requested_main_index_data.lie_bed.wpos = *pos; + player->requested_main_index_data.lie_bed.wpos.y = player->actor_class.world.position.y; + player->requested_main_index_data.lie_bed.flags = flags; + + Player_actor_request_main_index(game, mPlayer_INDEX_LIE_BED, priority); + + return TRUE; + } + + return FALSE; +} + +static int Player_actor_Get_BasicPlayerAnimeIndex_Lie_bed(int direction, s16 angle) { + if (angle == 0) { + if (direction == 1) { + return mPlayer_ANIM_INBED_L1; + } + if (direction == 2) { + return mPlayer_ANIM_INBED_R1; + } + } else if (angle == 0x4000) { + if (direction == 3) { + return mPlayer_ANIM_INBED_L1; + } + if (direction == 4) { + return mPlayer_ANIM_INBED_R1; + } + } else if (angle == -0x8000) { + if (direction == 1) { + return mPlayer_ANIM_INBED_R1; + } + if (direction == 2) { + return mPlayer_ANIM_INBED_L1; + } + } else if (angle == -0x4000) { + if (direction == 3) { + return mPlayer_ANIM_INBED_R1; + } + if (direction == 4) { + return mPlayer_ANIM_INBED_L1; + } + } + + return mPlayer_ANIM_INBED_R1; +} + +static void Player_actor_setup_main_Lie_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_main_lie_bed_c* main_lie = &player->main_data.lie_bed; + mPlayer_request_lie_bed_c* req_lie = &player->requested_main_index_data.lie_bed; + int anim_idx; + s16 angle; + + keyf = &player->keyframe0; + anim_idx = Player_actor_Get_BasicPlayerAnimeIndex_Lie_bed(req_lie->direction, req_lie->angle); + + main_lie->flags = req_lie->flags; + angle = req_lie->angle; + + actor->world.angle.y = angle; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &req_lie->wpos, actor->shape_info.rotation.y, + req_lie->angle, 17.0f, keyf, 3); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_JUMP(actor); +} + +static void Player_actor_settle_main_Lie_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); + actor->shape_info.rotation.x = -0x4000; + actor->world.angle.y = actor->shape_info.rotation.y; + actor->shape_info.shadow_size_change_rate = 0.0f; + actor->shape_info.shadow_alpha_change_rate = 0.0f; +} + +static int Player_actor_CulcAnimation_Lie_bed(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Lie_bed(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 20.0f)) { + Player_actor_sound_BED_IN(actor); + } +} + +static void Player_actor_SearchAnimation_Lie_bed(ACTOR* actor, f32 frame) { + f32 per; + f32 mod; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32 cur; + s16 target_x; + s16 target_y; + int angle; + + Player_actor_DisappearShadow_fromAnimationFrame(actor, 0.0f, 15.0f); + cur = fc0_p->current_frame; + per = sqrtf(get_percent_forAccelBrake(cur, 4.0f, 19.0f, 0.0f, 0.0f)); + + target_x = (int)(-16384.0f * per); + add_calc_short_angle2(&actor->shape_info.rotation.x, target_x, 1.0f - sqrtf(0.5), 1820, 50); + per = (get_percent_forAccelBrake(cur, 4.0f, 19.0f, 0.0f, 0.0f)); + per = sqrtf(per); + target_y = actor->world.angle.y; + + if (player->animation0_idx == mPlayer_ANIM_INBED_R1) { + mod = 16384.0f; + } else { + mod = -16384.0f; + } + + angle = (s16)(mod * per); + target_y += angle; + add_calc_short_angle2(&actor->shape_info.rotation.y, target_y, 1.0f - sqrtf(0.5), 1820, 50); + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Lie_bed(actor); + } +} + +static void Player_actor_Movement_Lie_bed(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_request_proc_index_fromLie_bed(GAME* game, int arg) { + if (arg != 0) { + Player_actor_request_main_wait_bed(game, mPlayer_REQUEST_PRIORITY_21); + } +} + +static void Player_actor_main_Lie_bed(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Lie_bed(actor, &frame_calc); + + Player_actor_SearchAnimation_Lie_bed(actor, frame_calc); + Player_actor_Movement_Lie_bed(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromLie_bed(game, arg); +} diff --git a/src/m_player_main_mail_jump.c_inc b/src/m_player_main_mail_jump.c_inc new file mode 100644 index 00000000..872b392b --- /dev/null +++ b/src/m_player_main_mail_jump.c_inc @@ -0,0 +1,78 @@ +static int Player_actor_request_main_mail_jump_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_MAIL_JUMP, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_mail_jump_c* req_mail_jump_p = &player->requested_main_index_data.mail_jump; + + Player_actor_request_main_index(game, mPlayer_INDEX_MAIL_JUMP, prio); + req_mail_jump_p->pos = *pos_p; + req_mail_jump_p->angle_y = angle_y; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Mail_jump(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_mail_jump_c* req_mail_jump_p = &player->requested_main_index_data.mail_jump; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_CONFIRM1, -8.0f, &anim1_idx, &part_table_idx); + + if (part_table_idx != mPlayer_PART_TABLE_NORMAL) { + part_table_idx = mPlayer_PART_TABLE_NET; + } + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_mail_jump_p->pos, + actorx->shape_info.rotation.y, req_mail_jump_p->angle_y, 8.0f, kf0_p, + cKF_ANIMATION_ROT_Y | cKF_ANIMATION_TRANS_XZ); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_CONFIRM1, anim1_idx, 1.0f, 1.0f, 0.5f, -8.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Mail_jump(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Mail_jump(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_Movement_Mail_jump(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Mail_jump(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Mail_jump(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_main_Mail_jump(ACTOR* actorx, GAME* game) { + Player_actor_CulcAnimation_Mail_jump(actorx); + Player_actor_Movement_Mail_jump(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Mail_jump(actorx, game); + Player_actor_BGcheck_Mail_jump(actorx); + Player_actor_Item_main(actorx, game); +} diff --git a/src/m_player_main_mail_land.c_inc b/src/m_player_main_mail_land.c_inc new file mode 100644 index 00000000..096b8deb --- /dev/null +++ b/src/m_player_main_mail_land.c_inc @@ -0,0 +1,74 @@ +static int Player_actor_request_main_mail_land_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_MAIL_LAND, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_MAIL_LAND, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_main_mail_land_from_submenu(ACTOR* actorx, GAME* game) { + Player_actor_request_main_mail_land_all(game, mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Mail_land(ACTOR* actorx, GAME* game) { + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_CONFIRM1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base3(actorx, game, mPlayer_ANIM_CONFIRM1, anim1_idx, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Mail_land(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.23925f); +} + +static int Player_actor_CulcAnimation_Mail_land(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Mail_land(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Mail_land(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromMail_land(ACTOR* actorx, GAME* game, int end_flag) { + + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 16.5f)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_Set_status_for_bee(actorx, TRUE); + } else if (fc0_p->current_frame <= 16.0f && + (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } +} + +static void Player_actor_main_Mail_land(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Mail_land(actorx); + end_flag = Player_actor_CulcAnimation_Mail_land(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Mail_land(actorx, game); + Player_actor_BGcheck_Mail_land(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromMail_land(actorx, game, end_flag); +} diff --git a/src/m_player_main_notice_bee.c_inc b/src/m_player_main_notice_bee.c_inc new file mode 100644 index 00000000..05b75b20 --- /dev/null +++ b/src/m_player_main_notice_bee.c_inc @@ -0,0 +1,148 @@ +static int Player_actor_request_main_notice_bee_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_NOTICE_BEE, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_NOTICE_BEE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Notice_bee(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_notice_bee_c* notice_bee_p = &player->main_data.notice_bee; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + int anim1_idx; + int part_table_idx; + + notice_bee_p->timer = 0.0f; + notice_bee_p->msg_mode = 0; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_HATI3, -5.0f, &anim1_idx, &part_table_idx); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &actorx->world.position, + actorx->shape_info.rotation.y, actorx->shape_info.rotation.y, 5.0f, kf0_p, + cKF_ANIMATION_ROT_Y); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_HATI3, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Notice_bee(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; + mBGMPsComp_delete_ps_demo(BGM_BEE_STUNG, 0x168); +} + +static int Player_actor_CulcAnimation_Notice_bee(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Notice_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_set_eye_pattern_Notice_bee(ACTOR* actorx, int end_flag) { + if (end_flag) { + if (Common_Get(player_decoy_flag) == FALSE) { + Player_actor_set_eye_pattern_normal(actorx); + } + } else { + Player_actor_set_tex_anime_pattern(actorx); + } +} + +static void Player_actor_ObjCheck_Notice_bee(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Notice_bee(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_Notice_bee_demo_ct(ACTOR* actorx) { + rgba_t window_color; + + mDemo_Set_msg_num(0x17B4); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + window_color.r = 225; + window_color.g = 165; + window_color.b = 255; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mBGMPsComp_make_ps_demo(BGM_BEE_STUNG, 0x168); + mBGMPsComp_delete_ps_quiet(); +} + +static int Player_actor_MessageControl_Notice_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_notice_bee_c* notice_bee_p = &player->main_data.notice_bee; + int* msg_mode_p = ¬ice_bee_p->msg_mode; + f32* timer_p = ¬ice_bee_p->timer; + + switch (*msg_mode_p) { + case 0: { + if (*timer_p < 0.0f) { + (*timer_p) += 1.0f; + } else { + *msg_mode_p = 1; + } + break; + } + + case 1: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Notice_bee_demo_ct); + } else { + *msg_mode_p = 2; + } + break; + } + + case 2: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + *msg_mode_p = 3; + } + break; + } + + default: { + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_request_proc_index_fromNotice_bee(ACTOR* actorx, GAME* game, int anim_end_flag, + int msg_end_flag) { + if (anim_end_flag && msg_end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Notice_bee(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int anim_end_flag; + int msg_end_flag; + + anim_end_flag = Player_actor_CulcAnimation_Notice_bee(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Notice_bee(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Notice_bee(actorx, anim_end_flag); + Player_actor_ObjCheck_Notice_bee(actorx, game); + Player_actor_BGcheck_Notice_bee(actorx); + Player_actor_Item_main(actorx, game); + msg_end_flag = Player_actor_MessageControl_Notice_bee(actorx); + Player_actor_request_proc_index_fromNotice_bee(actorx, game, anim_end_flag, msg_end_flag); +} diff --git a/src/m_player_main_notice_mosquito.c_inc b/src/m_player_main_notice_mosquito.c_inc new file mode 100644 index 00000000..6e72c235 --- /dev/null +++ b/src/m_player_main_notice_mosquito.c_inc @@ -0,0 +1,140 @@ +static int Player_actor_request_main_notice_mosquito(GAME* game, u32 label, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_NOTICE_MOSQUITO, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_notice_mosquito_c* req_notice_mosquito_p = &player->requested_main_index_data.notice_mosquito; + + req_notice_mosquito_p->label = label; + Player_actor_request_main_index(game, mPlayer_INDEX_NOTICE_MOSQUITO, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Notice_mosquito(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_notice_mosquito_c* req_notice_mosquito_p = &player->requested_main_index_data.notice_mosquito; + mPlayer_main_notice_mosquito_c* notice_mosquito_p = &player->main_data.notice_mosquito; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + int anim1_idx; + int part_table_idx; + + notice_mosquito_p->label = req_notice_mosquito_p->label; + notice_mosquito_p->timer = 0.0f; + notice_mosquito_p->msg_mode = 0; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_MOSQUITO2, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_MOSQUITO2, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + mPlayer_PART_TABLE_PICK_UP); + Player_actor_set_eye_pattern(actorx, 4); + Player_actor_set_mouth_pattern(actorx, 4); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Notice_mosquito(ACTOR* actorx, GAME* game) { + mBGMPsComp_delete_ps_demo(BGM_BEE_STUNG, 0x168); + + if (Save_Get(scene_no) == SCENE_MUSEUM_ROOM_INSECT) { + mBGMPsComp_museum_status(4); + } +} + +static void Player_actor_Movement_Notice_mosquito(ACTOR* actorx) { + add_calc_short_angle2(&actorx->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Notice_mosquito(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Notice_mosquito(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Notice_mosquito(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_Notice_mosquito_demo_ct(ACTOR* actorx) { + rgba_t window_color; + + mDemo_Set_msg_num(0x3063); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + window_color.r = 225; + window_color.g = 165; + window_color.b = 255; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mBGMPsComp_make_ps_demo(BGM_BEE_STUNG, 0x168); + + if (Save_Get(scene_no) == SCENE_MUSEUM_ROOM_INSECT) { + mBGMPsComp_museum_status(0); + } +} + +static int Player_actor_MessageControl_Notice_mosquito(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_notice_mosquito_c* notice_mosquito_p = &player->main_data.notice_mosquito; + int* msg_mode_p = ¬ice_mosquito_p->msg_mode; + + switch (*msg_mode_p) { + case 0: { + f32* timer_p = ¬ice_mosquito_p->timer; + + if (*timer_p < 0.0f) { + (*timer_p) += 1.0f; + } else { + *msg_mode_p = 1; + } + break; + } + + case 1: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Notice_mosquito_demo_ct); + } else { + *msg_mode_p = 2; + } + break; + } + + case 2: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + *msg_mode_p = 3; + } + break; + } + + default: { + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_request_proc_index_fromNotice_mosquito(ACTOR* actorx, GAME* game, int msg_end_flag) { + if (msg_end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Notice_mosquito(ACTOR* actorx, GAME* game) { + int msg_end_flag; + + Player_actor_Movement_Notice_mosquito(actorx); + Player_actor_CulcAnimation_Notice_mosquito(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_ObjCheck_Notice_mosquito(actorx, game); + Player_actor_BGcheck_Notice_mosquito(actorx); + msg_end_flag = Player_actor_MessageControl_Notice_mosquito(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromNotice_mosquito(actorx, game, msg_end_flag); +} diff --git a/src/m_player_main_notice_net.c_inc b/src/m_player_main_notice_net.c_inc new file mode 100644 index 00000000..9189f029 --- /dev/null +++ b/src/m_player_main_notice_net.c_inc @@ -0,0 +1,275 @@ +static int Player_actor_request_main_notice_net(GAME* game, int already_collected, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_NOTICE_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.notice_net.already_collected = already_collected; + + Player_actor_request_main_index(game, mPlayer_INDEX_NOTICE_NET, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Notice_net(ACTOR* actor, GAME* game) { + static int use_mark_insect_type[] = { + aSOI_INSECT_TYPE_ANT, + aSOI_INSECT_TYPE_MOSQUITO, + }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_net_c* main_notice = &player->main_data.notice_net; + mPlayer_request_notice_net_c* req_notice = &player->requested_main_index_data.notice_net; + u32 label; + + main_notice->state = 0; + main_notice->exchange_flag = FALSE; + main_notice->already_collected = req_notice->already_collected; + + main_notice->end_effect_flag = FALSE; + + label = player->item_net_catch_label; + + if (label != 0) { + mActor_name_t item; + int idx = player->item_net_catch_insect_idx; + s8 type = player->item_net_catch_type; + + if (type == 0) { + item = ((aINS_INSECT_ACTOR*)label)->item; + } else if (player->item_net_catch_insect_idx == aSOI_INSECT_TYPE_BEE) { + item = ITM_INSECT08; + } else { + item = ITM_INSECT38; + } + + if (idx < 0) { + main_notice->not_full_pocket = FALSE; + } else { + int free_space = mPlib_Get_space_putin_item_forHITODAMA(&item); + int i; + int mark_check; + + if (free_space >= 0) { + Player_actor_putin_item(free_space, item, NULL); + main_notice->not_full_pocket = TRUE; + } else { + main_notice->not_full_pocket = FALSE; + } + + if (idx != aSOI_INSECT_TYPE_SPIRIT) { + mSM_COLLECT_INSECT_SET(idx); + } + + mark_check = FALSE; + for (i = 0; i < 2; i++) { + if (idx == use_mark_insect_type[i]) { + mark_check = TRUE; + } + } + + if (mark_check) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_YAJIRUSHI, player->left_hand_pos, 2, 0, game, + RSV_NO, 0, 0); + main_notice->end_effect_flag = TRUE; + } + } + } else { + main_notice->not_full_pocket = FALSE; + } + actor->shape_info.rotation.y = 0; + actor->world.angle.y = 0; + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Notice_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int idx = player->item_net_catch_insect_idx; + mPlayer_main_notice_net_c* main_notice = &player->main_data.notice_net; + + if (idx < 0) { + idx = aSOI_INSECT_TYPE_BEE; + } + + if (main_notice->already_collected != FALSE) { + mBGMPsComp_delete_ps_fanfare(0x4B, 0x168); + } else { + mBGMPsComp_delete_ps_fanfare(0x28, 0x168); + } + + if (idx == aSOI_INSECT_TYPE_BEE) { + Common_Set(player_bee_chase_flag, FALSE); + + if (player->bee_chase_bgm_flag != FALSE) { + player->bee_chase_bgm_flag = FALSE; + mBGMPsComp_delete_ps_happening(0x43, FALSE); + } + } + + if (!main_notice->not_full_pocket) { + u32 label = player->item_net_catch_label; + + if (label != 0 && player->item_net_catch_type == 0) { + ((aINS_INSECT_ACTOR*)label)->patience = 100.0f; + ((ACTOR*)label)->drawn = TRUE; + ((ACTOR*)label)->actor_specific = 1; + } + } +} + +static void Player_actor_Movement_Notice_net(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static void Player_actor_CorrectSomething_Notice_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_CorrectSomething_net(actor, &player->left_hand_pos); +} + +static int Player_actor_CulcAnimation_Notice_net(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_set_eye_pattern_Notice_net(ACTOR* actor, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (end_flag) { + Player_actor_set_eye_pattern_normal(actor); + } else if (player->animation0_idx == mPlayer_ANIM_YATTA2) { + Player_actor_set_tex_anime_pattern(actor); + } else { + Player_actor_set_eye_pattern_normal(actor); + } +} + +static void Player_actor_ObjCheck_Notice_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Notice_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_DeleteMark_Notice_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_net_c* main_notice = &player->main_data.notice_net; + + if (main_notice->end_effect_flag) { + Common_Get(clip).effect_clip->effect_kill_proc(eEC_EFFECT_YAJIRUSHI, RSV_NO); + main_notice->end_effect_flag = FALSE; + } +} + +static int Player_actor_MessageControl_Notice_net(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mMsg_Window_c* win = mMsg_Get_base_window_p(); + mPlayer_main_notice_net_c* main_notice = &player->main_data.notice_net; + int choice; + switch (main_notice->state) { + case 0: + if (main_notice->already_collected) { + if (end_flag != FALSE && mMsg_Check_MainNormalContinue(win)) { + mMsg_Set_continue_msg_num(win, 0xA4F); + mMsg_Unset_LockContinue(win); + main_notice->state = 1; + } + } else { + main_notice->state = 2; + } + return -1; + + case 1: + if (!mMsg_Check_MainNormal(win)) { + Player_actor_SetupItem_Base2(actor, Player_actor_Get_ItemKind_from_submenu(), mPlayer_ANIM_GET_PUTAWAY1, + mPlayer_INDEX_RUN, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_YATTA2, mPlayer_ANIM_YATTA2, 1.0f, 1.0f, + 0.5f, -5.0f, 0, 0); + mBGMPsComp_delete_ps_fanfare(0x28, 0x168); + mBGMPsComp_make_ps_fanfare(0x4B, 0x168); + mMsg_Set_LockContinue(win); + Player_actor_DeleteMark_Notice_net(actor); + + main_notice->state = 2; + } + return -1; + + case 2: + + if (main_notice->not_full_pocket) { + mMsg_Set_CancelNormalContinue(win); + main_notice->state = 4; + } else { + mMsg_Set_continue_msg_num(win, 0xA4D); + main_notice->state = 3; + } + mMsg_Unset_LockContinue(win); + return -1; + + case 3: + choice = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); + + if (choice == mChoice_CHOICE0) { + main_notice->exchange_flag = TRUE; + main_notice->state = 4; + } else if (choice == mChoice_CHOICE1) { + main_notice->exchange_flag = FALSE; + main_notice->state = 4; + } + + return -1; + + case 4: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + main_notice->state = 5; + Player_actor_DeleteMark_Notice_net(actor); + } + return -1; + + default: + if (main_notice->not_full_pocket) { + return 0x30; + } else { + return !main_notice->exchange_flag ? 0x53 : 0x30; + } + } +} + +static void Player_actor_request_proc_index_fromNotice_net(ACTOR* actor, GAME* game, int msg_control) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_net_c* main_notice = &player->main_data.notice_net; + + if (msg_control == 0x30) { + Player_actor_request_main_putaway_net(game, main_notice->exchange_flag, mPlayer_REQUEST_PRIORITY_28); + } else if (msg_control == 0x53) { + if (player->item_net_catch_type == 0) { + u32 label = player->item_net_catch_label; + mPlayer_request_release_creature_u release_data; + + bzero(&release_data, sizeof(mPlayer_request_release_creature_u)); + Player_actor_request_main_release_creature_all(game, 0, 0, &release_data, (ACTOR*)label, + mPlayer_REQUEST_PRIORITY_30); + } else { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + } + } +} + +static void Player_actor_main_Notice_net(ACTOR* actor, GAME* game) { + int end_flag; + int msg_cntrl; + + Player_actor_Movement_Notice_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CorrectSomething_Notice_net(actor); + end_flag = Player_actor_CulcAnimation_Notice_net(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_Notice_net(actor, end_flag); + Player_actor_ObjCheck_Notice_net(actor, game); + Player_actor_BGcheck_Notice_net(actor); + msg_cntrl = Player_actor_MessageControl_Notice_net(actor, game, end_flag); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromNotice_net(actor, game, msg_cntrl); +} diff --git a/src/m_player_main_notice_rod.c_inc b/src/m_player_main_notice_rod.c_inc new file mode 100644 index 00000000..554ee0b8 --- /dev/null +++ b/src/m_player_main_notice_rod.c_inc @@ -0,0 +1,337 @@ +static int Player_actor_request_main_notice_rod(GAME* game, s16 angle, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_NOTICE_ROD, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_index(game, mPlayer_INDEX_NOTICE_ROD, priority); + + player->requested_main_index_data.notice_rod.angle_y = angle; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Notice_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + mPlayer_request_notice_rod_c* req_notice = &player->requested_main_index_data.notice_rod; + UKI_ACTOR* uki; + int type; + + main_notice->timer = 0.0f; + main_notice->state = 0; + main_notice->angle_y = req_notice->angle_y; + main_notice->exchange_flag = FALSE; + main_notice->already_collected = FALSE; + main_notice->end_effect_flag = FALSE; + + uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + type = uki->gyo_type; + + if (uki != NULL && type >= aSOG_FISH_TYPE_CRUCIAN_CARP) { + int free_space = mPlib_Get_space_putin_item(); + + if (free_space >= 0) { + Player_actor_putin_item(free_space, uki->get_fish_type_proc(&uki->actor_class), NULL); + main_notice->not_full_pocket = TRUE; + } else { + main_notice->not_full_pocket = FALSE; + } + + if (type < aSOG_FISH_TYPE_NUM + 1) { + main_notice->already_collected = mSM_CHECK_LAST_FISH_GET(type); + mSM_COLLECT_FISH_SET(type); + } + } else { + main_notice->not_full_pocket = FALSE; + } + + if (type == aSOG_FISH_TYPE_BARRED_KNIFEJAW) { + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_NOTICE_FISHING_ROD); + } + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_GET_T2, mPlayer_ANIM_GET_T2, 1.0f, 1.0f, 0.5f, -3.0f, 0, + 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Notice_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + + if (!main_notice->already_collected) { + mBGMPsComp_delete_ps_fanfare(0x28, 0x168); + } else { + mBGMPsComp_delete_ps_fanfare(0x4C, 0x168); + } +} + +static void Player_actor_Movement_Notice_rod(ACTOR* actor) { + add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50); + actor->world.angle.y = actor->shape_info.rotation.y; + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Notice_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_set_eye_pattern_Notice_rod(ACTOR* actor, int end_flag) { + if (end_flag) { + Player_actor_set_eye_pattern_normal(actor); + } else { + Player_actor_set_tex_anime_pattern(actor); + } +} + +static void Player_actor_ObjCheck_Notice_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Notice_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Notice_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_AppearMark_Notice_rod(ACTOR* actor) { + static int use_mark_gyoei_type = aSOG_FISH_TYPE_KILLIFISH; + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + + if (!main_notice->end_effect_flag) { + UKI_ACTOR* uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (uki != NULL) { + int type = uki->gyo_type; + + if (type >= aSOG_FISH_TYPE_CRUCIAN_CARP) { + int killfish = FALSE; + + if (type == use_mark_gyoei_type) { + killfish = TRUE; + } + + if (killfish) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_YAJIRUSHI, player->left_hand_pos, 2, 0, + gamePT, RSV_NO, 0, 0); + main_notice->end_effect_flag = TRUE; + } + } + } + } +} + +static void Player_actor_DeleteMark_Notice_rod(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + + if (main_notice->end_effect_flag) { + Common_Get(clip).effect_clip->effect_kill_proc(eEC_EFFECT_YAJIRUSHI, RSV_NO); + main_notice->end_effect_flag = FALSE; + } +} + +static int Player_actor_Get_sakana_msg_num(int msg_offs) { + int ret_msg_no = msg_offs + 0x2FA9; + + if (msg_offs < 0x20) { + ret_msg_no = msg_offs + 0x1327; + } + + return ret_msg_no; +} + +static void Player_actor_Notice_rod_demo_ct(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + rgba_t color; + mMsg_Window_c* win = mMsg_Get_base_window_p(); + UKI_ACTOR* uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + int msg_no = 0x1327; + + if (uki != NULL) { + int type = uki->gyo_type; + + if (type >= aSOG_FISH_TYPE_CRUCIAN_CARP) { + if (type < aSOG_FISH_TYPE_NUM + 1) { + if (player->now_main_index == mPlayer_INDEX_NOTICE_ROD) { + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + u8 str[16]; + + if (main_notice->already_collected) { + mIN_copy_name_str(str, uki->get_fish_type_proc(&uki->actor_class)); + mMsg_Set_item_str_art(win, mMsg_ITEM_STR0, str, sizeof(str), + mIN_get_item_article(uki->get_fish_type_proc(&uki->actor_class))); + msg_no = 0x1349; + } else { + msg_no = Player_actor_Get_sakana_msg_num(type); + } + } else { + msg_no = Player_actor_Get_sakana_msg_num(type); + } + } else { + msg_no = type + 0x1997; + } + } + } + + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + mMsg_Set_LockContinue(win); + + color.r = 185; + color.g = 245; + color.b = 80; + color.a = 255; + + mDemo_Set_talk_window_color(&color); + mChoice_Clear_ChoseNum(mChoice_Get_base_window_p()); + mBGMPsComp_make_ps_fanfare(0x28, 0x168); +} + +static int Player_actor_MessageControl_Notice_rod(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + int* state_p = &main_notice->state; + mMsg_Window_c* win = mMsg_Get_base_window_p(); + int choice; + + if (main_notice->timer < 42.0f) { + main_notice->timer += 1.0f; + return -1; + } + + switch (*state_p) { + case 0: + + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + mDemo_Request(mDemo_TYPE_REPORT, actor, Player_actor_Notice_rod_demo_ct); + } else if (main_notice->already_collected) { + *state_p = 1; + } else { + *state_p = 3; + } + + return -1; + + case 1: + if (end_flag) { + Player_actor_AppearMark_Notice_rod(actor); + if (mMsg_Check_MainNormalContinue(win)) { + mMsg_Set_continue_msg_num(win, 0x134A); + mMsg_Unset_LockContinue(win); + *state_p = 2; + } + } + return -1; + + case 2: + if (!mMsg_Check_MainNormal(win)) { + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_YATTA2, mPlayer_ANIM_YATTA2, 1.0f, 1.0f, + 0.5f, -5.0f, 0, 0); + mBGMPsComp_delete_ps_fanfare(0x28, 0x168); + mBGMPsComp_make_ps_fanfare(0x4C, 0x168); + mMsg_Set_LockContinue(win); + Player_actor_DeleteMark_Notice_rod(actor); + + *state_p = 3; + } + return -1; + + case 3: + + if (end_flag) { + if (!main_notice->already_collected) { + Player_actor_AppearMark_Notice_rod(actor); + } + if (main_notice->not_full_pocket) { + mMsg_Set_CancelNormalContinue(win); + *state_p = 5; + } else { + mMsg_Set_continue_msg_num(win, 0x1348); + *state_p = 4; + } + mMsg_Unset_LockContinue(win); + } + return -1; + + case 4: + choice = mChoice_Get_ChoseNum(mChoice_Get_base_window_p()); + + if (choice == mChoice_CHOICE0) { + main_notice->exchange_flag = TRUE; + *state_p = 5; + } else if (choice == mChoice_CHOICE1) { + main_notice->exchange_flag = FALSE; + *state_p = 5; + } + + return -1; + + case 5: + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + *state_p = 6; + Player_actor_DeleteMark_Notice_rod(actor); + } + return -1; + + default: + if (main_notice->not_full_pocket) { + return 0x39; + } else { + return !main_notice->exchange_flag ? 0x53 : 0x39; + } + } +} + +static void Player_actor_request_proc_index_fromNotice_rod(ACTOR* actor, GAME* game, int msg_control) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_notice_rod_c* main_notice = &player->main_data.notice_rod; + UKI_ACTOR* uki; + + switch (msg_control) { + case 0x39: + Player_actor_request_main_putaway_rod(game, main_notice->angle_y, main_notice->exchange_flag, + mPlayer_REQUEST_PRIORITY_29); + break; + + case 0x53: + uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (uki != NULL) { + mPlayer_request_release_creature_u release_data; + ACTOR* fish = uki->child_actor; + + bzero(&release_data, sizeof(mPlayer_request_release_creature_u)); + Player_actor_request_main_release_creature_all(game, 1, 0, &release_data, fish, + mPlayer_REQUEST_PRIORITY_30); + } + + break; + } +} + +static void Player_actor_main_Notice_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + int cntrl; + + Player_actor_Movement_Notice_rod(actor); + end_flag = Player_actor_CulcAnimation_Notice_rod(actor, &frame_calc); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Notice_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_Notice_rod(actor, end_flag); + Player_actor_ObjCheck_Notice_rod(actor, game); + Player_actor_BGcheck_Notice_rod(actor); + cntrl = Player_actor_MessageControl_Notice_rod(actor, game, end_flag); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromNotice_rod(actor, game, cntrl); +} diff --git a/src/m_player_main_open_furniture.c_inc b/src/m_player_main_open_furniture.c_inc new file mode 100644 index 00000000..635f529e --- /dev/null +++ b/src/m_player_main_open_furniture.c_inc @@ -0,0 +1,102 @@ +static int Player_actor_request_main_open_furniture(GAME* game, s16 angle, xyz_t* pos, int anim_idx, int priority) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_HOLD && + Player_actor_check_request_main_able(game, mPlayer_INDEX_OPEN_FURNITURE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.open_furniture.angle_y = angle; + player->requested_main_index_data.open_furniture.player_pos = *pos; + player->requested_main_index_data.open_furniture.anim_idx = anim_idx; + + Player_actor_request_main_index(game, mPlayer_INDEX_OPEN_FURNITURE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Open_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); +} + +static void Player_actor_setup_main_Open_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s16 angle; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_open_furniture_c* req_open = &player->requested_main_index_data.open_furniture; + f32 x; + f32 z; + int anim_idx; + + keyf = &player->keyframe0; + anim_idx = req_open->anim_idx; + angle = req_open->angle_y; + x = req_open->player_pos.x; + z = req_open->player_pos.z; + + actor->world.angle.y = angle; + actor->shape_info.rotation.y = angle; + actor->world.position.x = x; + actor->world.position.z = z; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 5.0f, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_CulcAnimation_Open_furniture(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Movement_Open_furniture(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, TRUE); +} + +static void Player_actor_SearchAnimation_Open_furniture(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Open_furniture(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Open_furniture(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromOpen_furniture(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + if (player->keyframe0.frame_control.speed == 0.0f) { + Player_actor_request_main_wait_open_furniture(game, mPlayer_REQUEST_PRIORITY_22); + } else { + player->keyframe0.frame_control.speed = 0.0f; + player->keyframe1.frame_control.speed = 0.0f; + } + } +} + +static void Player_actor_main_Open_furniture(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Open_furniture(actor, &frame_calc); + + Player_actor_Movement_Open_furniture(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Open_furniture(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Open_furniture(actor, game); + Player_actor_BGcheck_Open_furniture(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromOpen_furniture(actor, game, arg); +} diff --git a/src/m_player_main_outdoor.c_inc b/src/m_player_main_outdoor.c_inc new file mode 100644 index 00000000..b8ef2de3 --- /dev/null +++ b/src/m_player_main_outdoor.c_inc @@ -0,0 +1,103 @@ +static int Player_actor_request_main_outdoor(GAME* game, int type, int is_start_demo, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_OUTDOOR, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.outdoor.type = type; + player->requested_main_index_data.outdoor.is_start_demo = is_start_demo; + + Player_actor_request_main_index(game, mPlayer_INDEX_OUTDOOR, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Outdoor(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + f32 anim_frame; + int type = player->requested_main_index_data.outdoor.type; + int demo = player->requested_main_index_data.outdoor.is_start_demo; + + player->main_data.outdoor.is_demo = FALSE; + + if (!demo) { + anim_idx = mPlayer_ANIM_GO_OUT_O1; + if (type != 0) { + anim_frame = 1.0f; + } else { + anim_frame = 25.0f; + } + } else { + anim_idx = mPlayer_ANIM_GO_OUT_S1; + anim_frame = 1.0f; + } + + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, anim_frame, anim_frame, 0.5f, 0.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Outdoor(ACTOR* actor, GAME* game) { + mDemo_End(actor); +} + +static int Player_actor_CulcAnimation_Outdoor(ACTOR* actor, f32* calc_frame) { + return Player_actor_CulcAnimation_Base2(actor, calc_frame); +} + +static int Player_actor_Movement_Outdoor(ACTOR* actor, int calc) { + Player_actor_Set_force_shadow_position_fromAnimePosition(actor); + Player_actor_Movement_Base_Stop(actor, FALSE); + return calc; +} + +static void Player_actor_ObjCheck_Outdoor(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forOutdoor(actor, game); +} + +static void Player_actor_request_proc_index_fromOutdoor(GAME* game, int arg1) { + if (arg1 != 0) { + if (Common_Get(complete_payment_type) != 0) { + Player_actor_request_main_complete_payment(game, mPlayer_REQUEST_PRIORITY_44); + } else { + Player_actor_request_main_return_outdoor_all(game, mPlayer_INDEX_WAIT, 3.0f, 0.0f, + mPlayer_REQUEST_PRIORITY_45); + } + } +} + +static void Player_actor_Demo_Outdoor_Demo_ct(ACTOR* actor) { +} + +static int Player_actor_Request_Demo_Outdoor(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->main_data.outdoor.is_demo == FALSE) { + if (mDemo_Check(mDemo_TYPE_OUTDOOR, actor)) { + player->main_data.outdoor.is_demo = TRUE; + return FALSE; + } else { + mDemo_Request(mDemo_TYPE_OUTDOOR, actor, Player_actor_Demo_Outdoor_Demo_ct); + return FALSE; + } + } + + return TRUE; +} + +static void Player_actor_main_Outdoor(ACTOR* actor, GAME* game) { + int arg1; + f32 frame_calc; + + if (Player_actor_Request_Demo_Outdoor(actor)) { + int calc = Player_actor_CulcAnimation_Outdoor(actor, &frame_calc); + arg1 = Player_actor_Movement_Outdoor(actor, calc); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Outdoor(actor, game); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromOutdoor(game, arg1); + } +} diff --git a/src/m_player_main_pickup.c_inc b/src/m_player_main_pickup.c_inc new file mode 100644 index 00000000..4d36f93e --- /dev/null +++ b/src/m_player_main_pickup.c_inc @@ -0,0 +1,183 @@ +static int Player_actor_request_main_pickup(GAME* game, mActor_name_t item, const xyz_t* target_pos_p, + const xyz_t* item_pos_p, int slot_idx, int signboard_flag) { + if (Player_actor_check_able_request_main_index_for_reset(mPlayer_INDEX_PICKUP) == FALSE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_pickup_c* req_pickup_p = &player->requested_main_index_data.pickup; + + req_pickup_p->inv_slot = slot_idx; + req_pickup_p->item = item; + req_pickup_p->target_pos = *target_pos_p; + req_pickup_p->item_pos = *item_pos_p; + req_pickup_p->flag = signboard_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_PICKUP, mPlayer_REQUEST_PRIORITY_8); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Pickup(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + f32 morph_counter; + mPlayer_request_pickup_c* req_pickup_p = &player->requested_main_index_data.pickup; + mPlayer_main_pickup_c* main_pickup_p = &player->main_data.pickup; + int slot_idx; + mActor_name_t item; + xyz_t* target_pos_p; + xyz_t* item_pos_p; + int signboard_flag; + int anim1_idx; + int part_table_idx; + + slot_idx = req_pickup_p->inv_slot; + item = req_pickup_p->item; + target_pos_p = &req_pickup_p->target_pos; + item_pos_p = &req_pickup_p->item_pos; + signboard_flag = req_pickup_p->flag; + + main_pickup_p->target_pos = *target_pos_p; + main_pickup_p->item_pos = *item_pos_p; + main_pickup_p->signboard_flag = signboard_flag; + main_pickup_p->scale = 0.01f; + main_pickup_p->timer = 0.0f; + main_pickup_p->item = item; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PICKUP1, -6.0f, &anim1_idx, &part_table_idx); + + if (signboard_flag) { + aSIGN_erase_white_sign(game, target_pos_p); + } + + Player_actor_putin_item(slot_idx, item, target_pos_p); + + if (slot_idx >= 0) { + main_pickup_p->exchange_flag = FALSE; + } else if (mEv_CheckTitleDemo() > 0) { + main_pickup_p->exchange_flag = FALSE; + } else { + main_pickup_p->exchange_flag = TRUE; + } + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_PICKUP1, anim1_idx, 1.0f, 1.0f, 0.5f, -6.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); + Player_actor_setup_main_Base(actorx, game); + + if (item == ITM_FOOD_COCONUT) { + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_PICKUP_COCONUT); + } +} + +static void Player_actor_Movement_Pickup(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Pickup(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Pickup(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Pickup(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_SetSound_Pickup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 10.0f)) { + Player_actor_sound_ITEM_GET(actorx); + } + + if (Player_actor_Check_AnimationFrame(fc0_p, 20.0f)) { + Player_actor_sound_GASAGOSO(actorx); + } +} + +static void Player_actor_SearchAnimation_Pickup(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Pickup(actorx); + Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); + } +} + +static void Player_actor_Set_Item_Pickup(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_c* main_pickup_p = &player->main_data.pickup; + f32* scale_p = &main_pickup_p->scale; + xyz_t* item_pos_p = &main_pickup_p->item_pos; + xyz_t* left_hand_pos_p = &player->left_hand_pos; + f32* timer_p = &main_pickup_p->timer; + + (*timer_p) += 1.0f; + if (*timer_p > 40.0f) { + *timer_p = 40.0f; + *scale_p = 0.0f; + *item_pos_p = *left_hand_pos_p; + } else { + xyz_t* item_ofs_p = &main_pickup_p->item_offset; + + if (*timer_p < 20.0f) { + item_ofs_p->x = item_pos_p->x - left_hand_pos_p->x; + item_ofs_p->y = item_pos_p->y - left_hand_pos_p->y; + item_ofs_p->z = item_pos_p->z - left_hand_pos_p->z; + } else { + f32 p = 1.0f - (*timer_p - 20.0f) / 20.0f; + + if (p < 0.0f) { + p = 0.0f; + } else if (p > 1.0f) { + p = 1.0f; + } + + *scale_p = p * 0.01f; + item_pos_p->x = left_hand_pos_p->x + p * item_ofs_p->x; + item_pos_p->y = left_hand_pos_p->y + p * item_ofs_p->y; + item_pos_p->z = left_hand_pos_p->z + p * item_ofs_p->z; + } + } +} + +static void Player_actor_request_proc_index_fromPickup(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + mPlayer_main_pickup_c* main_pickup_p = &player->main_data.pickup; + + if (main_pickup_p->exchange_flag) { + Player_actor_request_main_pickup_exchange(game, &main_pickup_p->target_pos, main_pickup_p->item, + mPlayer_REQUEST_PRIORITY_21); + } else { + Player_actor_SettleRequestMainIndexPriority(actorx); + + if (main_pickup_p->item == ITM_GOLDEN_SHOVEL && mPlib_Check_golden_item_get_demo_end(3) == FALSE) { + Player_actor_request_main_demo_get_golden_item_all(game, 3, mPlayer_REQUEST_PRIORITY_34); + } else { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Pickup(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Pickup(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Pickup(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Pickup(actorx, game, last_anim0_cur_frame); + Player_actor_Set_Item_Pickup(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Pickup(actorx, game); + Player_actor_BGcheck_Pickup(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPickup(actorx, game, end_flag); +} diff --git a/src/m_player_main_pickup_exchange.c_inc b/src/m_player_main_pickup_exchange.c_inc new file mode 100644 index 00000000..d2ef4b91 --- /dev/null +++ b/src/m_player_main_pickup_exchange.c_inc @@ -0,0 +1,170 @@ +static int Player_actor_request_main_pickup_exchange(GAME* game, const xyz_t* target_pos_p, mActor_name_t item, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PICKUP_EXCHANGE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_pickup_exchange_c* req_pickup_exchange_p = &player->requested_main_index_data.pickup_exchange; + + Player_actor_request_main_index(game, mPlayer_INDEX_PICKUP_EXCHANGE, priority); + req_pickup_exchange_p->target_pos = *target_pos_p; + req_pickup_exchange_p->item = item; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Pickup_exchange(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_pickup_exchange_c* req_pickup_exchange_p = &player->requested_main_index_data.pickup_exchange; + mPlayer_main_pickup_exchange_c* main_pickup_exchange_p = &player->main_data.pickup_exchange; + int anim1_idx; + int part_table_idx; + + main_pickup_exchange_p->target_pos = req_pickup_exchange_p->target_pos; + main_pickup_exchange_p->item = req_pickup_exchange_p->item; + main_pickup_exchange_p->msg_mode = 0; + main_pickup_exchange_p->submenu_flag = FALSE; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PICKUP_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + + if (anim1_idx != mPlayer_ANIM_PICKUP_WAIT1) { + part_table_idx = mPlayer_PART_TABLE_NET; + } + + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_PICKUP_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Pickup_exchange(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_exchange_c* main_pickup_exchange_p = &player->main_data.pickup_exchange; + + if (main_pickup_exchange_p->submenu_flag == FALSE) { + mActor_name_t item = main_pickup_exchange_p->item; + xyz_t* target_pos_p = &main_pickup_exchange_p->target_pos; + + if (item == ITM_SIGNBOARD) { + aSIGN_set_white_sign(game, target_pos_p); + } else if (Common_Get(clip).bg_item_clip != NULL && + Common_Get(clip).bg_item_clip->player_drop_entry_proc != NULL) { + int ut_x; + int ut_z; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, *target_pos_p)) { + Common_Get(clip).bg_item_clip->player_drop_entry_proc(game, item, ut_x, ut_z, mCoBG_LAYER0); + } + } + } +} + +static void Player_actor_Movement_Pickup_exchange(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.23925f); +} + +static int Player_actor_CulcAnimation_Pickup_exchange(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Pickup_exchange(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Pickup_exchange(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_Pickup_exchange_demo_ct(ACTOR* actorx) { + int msg_no; + rgba_t window_color; + + if (Common_Get(field_type) == mFI_FIELDTYPE2_FG) { + msg_no = 0x17B2; + } else { + msg_no = 0x17B3; + } + + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_ListenAble(); + + window_color.r = 255; + window_color.g = 255; + window_color.b = 20; + window_color.a = 255; + mDemo_Set_talk_window_color(&window_color); + mChoice_CLEAR_CHOSENUM(); +} + +static int Player_actor_MessageControl_Pickup_exchange(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_exchange_c* main_pickup_exchange_p = &player->main_data.pickup_exchange; + int* msg_mode_p = &main_pickup_exchange_p->msg_mode; + + switch (*msg_mode_p) { + case 0: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + mDemo_Request(mDemo_TYPE_REPORT, actorx, &Player_actor_Pickup_exchange_demo_ct); + } else { + *msg_mode_p = 1; + } + return -1; + } + case 1: { + int choice_no = mChoice_GET_CHOSENUM(); + + if (choice_no == mChoice_CHOICE0) { + *msg_mode_p = 2; + main_pickup_exchange_p->submenu_flag = TRUE; + } else if (choice_no == mChoice_CHOICE1) { + *msg_mode_p = 3; + main_pickup_exchange_p->submenu_flag = FALSE; + } + return -1; + } + case 2: { + + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + GAME_PLAY* play = (GAME_PLAY*)game; + Submenu* submenu = &play->submenu; + + mSM_open_submenu_new2(submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_EXCHANGE, main_pickup_exchange_p->item, + NULL, actorx->shape_info.rotation.y); + } + return -1; + } + case 3: { + if (mDemo_Check(mDemo_TYPE_REPORT, actorx) == FALSE) { + return mPlayer_INDEX_WAIT; + } + return -1; + } + default: { + return -1; + } + } +} + +static void Player_actor_request_proc_index_fromPickup_exchange(GAME* game, int request_main_index) { + if (request_main_index == mPlayer_INDEX_WAIT) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + } +} + +static void Player_actor_main_Pickup_exchange(ACTOR* actorx, GAME* game) { + int request_main_index; + + Player_actor_Movement_Pickup_exchange(actorx); + Player_actor_CulcAnimation_Pickup_exchange(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_ObjCheck_Pickup_exchange(actorx, game); + Player_actor_BGcheck_Pickup_exchange(actorx); + request_main_index = Player_actor_MessageControl_Pickup_exchange(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPickup_exchange(game, request_main_index); +} diff --git a/src/m_player_main_pickup_furniture.c_inc b/src/m_player_main_pickup_furniture.c_inc new file mode 100644 index 00000000..1a0f2299 --- /dev/null +++ b/src/m_player_main_pickup_furniture.c_inc @@ -0,0 +1,198 @@ +static int Player_actor_request_main_pickup_furniture(GAME* game, int slot_idx, mActor_name_t item, + const xyz_t* item_pos_p) { + if (Player_actor_check_able_request_main_index_for_reset(mPlayer_INDEX_PICKUP_FURNITURE) == FALSE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_pickup_furniture_c* req_pickup_furniture_p = + &player->requested_main_index_data.pickup_furniture; + + req_pickup_furniture_p->inv_slot = slot_idx; + req_pickup_furniture_p->item = item; + req_pickup_furniture_p->item_pos = *item_pos_p; + + Player_actor_request_main_index(game, mPlayer_INDEX_PICKUP_FURNITURE, mPlayer_REQUEST_PRIORITY_8); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Pickup_furniture(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_pickup_furniture_c* req_pickup_furniture_p = &player->requested_main_index_data.pickup_furniture; + mPlayer_main_pickup_furniture_c* main_pickup_furniture_p = &player->main_data.pickup_furniture; + int slot_idx; + mActor_name_t item; + xyz_t* item_pos_p; + int anim1_idx; + int part_table_idx; + + slot_idx = req_pickup_furniture_p->inv_slot; + item = req_pickup_furniture_p->item; + item_pos_p = &req_pickup_furniture_p->item_pos; + + main_pickup_furniture_p->target_pos = main_pickup_furniture_p->item_pos = *item_pos_p; + main_pickup_furniture_p->scale = 0.01f; + main_pickup_furniture_p->item = item; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PICKUP1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_putin_furniture(game, slot_idx, item); + + if (slot_idx >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item)) { + main_pickup_furniture_p->exchange_flag = FALSE; + } else { + main_pickup_furniture_p->exchange_flag = TRUE; + } + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_PICKUP1, anim1_idx, 1.0f, 1.0f, 0.5f, 0.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Pickup_furniture(ACTOR* actorx, GAME* game) { + if (Common_Get(clip).my_room_clip != NULL) { + Common_Get(clip).my_room_clip->leaf_pickuped_proc(); + } +} + +static void Player_actor_Movement_Pickup_furniture_common(ACTOR* actorx, xyz_t* target_pos_p) { + xyz_t* player_pos_p = &actorx->world.position; + f32 dx = target_pos_p->x - player_pos_p->x; + f32 dz = target_pos_p->z - player_pos_p->z; + + if (dx != 0.0f || dz != 0.0f) { + s16 target_angle_y = atans_table(dz, dx); + + add_calc_short_angle2(&actorx->shape_info.rotation.y, target_angle_y, 1.0f - sqrtf(0.5f), + DEG2SHORT_ANGLE2(13.73291015625f), DEG2SHORT_ANGLE2(0.274658203125f)); + } + + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static void Player_actor_Movement_Pickup_furniture(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_furniture_c* main_pickup_furniture_p = &player->main_data.pickup_furniture; + + Player_actor_Movement_Pickup_furniture_common(actorx, &main_pickup_furniture_p->target_pos); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Pickup_furniture(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Pickup_furniture(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Pickup_furniture(ACTOR* actorx) { + Player_actor_BGcheck_common_type3(actorx); +} + +static void Player_actor_Set_Item_Pickup_furniture(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_furniture_c* main_pickup_furniture_p = &player->main_data.pickup_furniture; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + f32 cur_frame = kf0_p->frame_control.current_frame; + xyz_t* item_pos_p = &main_pickup_furniture_p->item_pos; + f32* scale_p = &main_pickup_furniture_p->scale; + xyz_t* left_hand_pos_p = &player->left_hand_pos; + xyz_t* item_ofs_p = &main_pickup_furniture_p->item_offset; + + if (cur_frame <= 10.0f) { + if (Common_Get(clip).my_room_clip->ftr2leaf_proc()) { + Common_Get(clip).my_room_clip->leaf_start_pos_proc(item_pos_p); + } + + item_ofs_p->x = item_pos_p->x - left_hand_pos_p->x; + item_ofs_p->y = item_pos_p->y - left_hand_pos_p->y; + item_ofs_p->z = item_pos_p->z - left_hand_pos_p->z; + } else if (cur_frame <= 20.0f) { + f32 p = 1.0f - (cur_frame - 10.0f) * 0.1f; + + item_pos_p->x = left_hand_pos_p->x + p * item_ofs_p->x; + item_pos_p->y = left_hand_pos_p->y + p * item_ofs_p->y; + item_pos_p->z = left_hand_pos_p->z + p * item_ofs_p->z; + } else { + *item_pos_p = *left_hand_pos_p; + } + + if (cur_frame <= 10.0f) { + *scale_p = 0.01f; + } else if (cur_frame <= 20.0f) { + *scale_p = 0.01f - ((cur_frame - 10.0f) * 0.01f) * 0.1f; + } else { + *scale_p = 0.0f; + } + + if (*scale_p > 0.01f) { + *scale_p = 0.01f; + } else if (*scale_p < 0.0f) { + *scale_p = 0.0f; + } + + if (Common_Get(clip).my_room_clip != NULL) { + if (Common_Get(clip).my_room_clip->ftr2leaf_proc()) { + Common_Get(clip).my_room_clip->set_leaf_proc(item_pos_p, *scale_p); + } + } +} + +static void Player_actor_SetSound_Pickup_furniture(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 10.0f)) { + Player_actor_sound_ITEM_GET(actorx); + } + + if (Player_actor_Check_AnimationFrame(fc0_p, 20.0f)) { + Player_actor_sound_GASAGOSO(actorx); + } +} + +static void Player_actor_SearchAnimation_Pickup_furniture(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_Item_Pickup_furniture(actorx); + Player_actor_SetSound_Pickup_furniture(actorx, game); + Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); + } +} + +static void Player_actor_request_proc_index_fromPickup_furniture(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + mPlayer_main_pickup_furniture_c* main_pickup_furniture_p = &player->main_data.pickup_furniture; + + if (main_pickup_furniture_p->exchange_flag) { + Player_actor_request_main_pickup_exchange(game, &main_pickup_furniture_p->target_pos, + main_pickup_furniture_p->item, mPlayer_REQUEST_PRIORITY_21); + } else { + if (main_pickup_furniture_p->item == ITM_GOLDEN_SHOVEL && + mPlib_Check_golden_item_get_demo_end(3) == FALSE) { + Player_actor_request_main_demo_get_golden_item_all(game, 3, mPlayer_REQUEST_PRIORITY_34); + } else { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Pickup_furniture(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Pickup_furniture(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Pickup_furniture(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Pickup_furniture(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Pickup_furniture(actorx, game); + Player_actor_BGcheck_Pickup_furniture(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPickup_furniture(actorx, game, end_flag); +} diff --git a/src/m_player_main_pickup_jump.c_inc b/src/m_player_main_pickup_jump.c_inc new file mode 100644 index 00000000..004d508c --- /dev/null +++ b/src/m_player_main_pickup_jump.c_inc @@ -0,0 +1,209 @@ +static int Player_actor_request_main_pickup_jump(GAME* game, int slot_idx, mActor_name_t item, const xyz_t* item_pos_p, + int ftr_flag, int knife_and_fork_flag) { + if (Player_actor_check_able_request_main_index_for_reset(mPlayer_INDEX_PICKUP_JUMP) == FALSE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_pickup_jump_c* req_pickup_jump_p = &player->requested_main_index_data.pickup_jump; + + req_pickup_jump_p->inv_slot = slot_idx; + req_pickup_jump_p->item = item; + req_pickup_jump_p->ftr_flag = ftr_flag; + req_pickup_jump_p->knife_and_fork_flag = knife_and_fork_flag; + req_pickup_jump_p->item_pos = *item_pos_p; + + Player_actor_request_main_index(game, mPlayer_INDEX_PICKUP_JUMP, mPlayer_REQUEST_PRIORITY_8); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Pickup_jump(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_pickup_jump_c* req_pickup_jump_p = &player->requested_main_index_data.pickup_jump; + mPlayer_main_pickup_jump_c* main_pickup_jump_p = &player->main_data.pickup_jump; + int slot_idx; + mActor_name_t item; + xyz_t* item_pos_p; + int ftr_flag; + int knife_and_fork_flag; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + slot_idx = req_pickup_jump_p->inv_slot; + item = req_pickup_jump_p->item; + item_pos_p = &req_pickup_jump_p->item_pos; + ftr_flag = req_pickup_jump_p->ftr_flag; + knife_and_fork_flag = req_pickup_jump_p->knife_and_fork_flag; + + if (ftr_flag) { + anim0_idx = mPlayer_ANIM_CLEAR_TABLE_L1; + } else { + anim0_idx = mPlayer_ANIM_CLEAR_TABLE1; + } + + main_pickup_jump_p->ftr_flag = ftr_flag; + main_pickup_jump_p->target_pos = main_pickup_jump_p->item_pos = *item_pos_p; + main_pickup_jump_p->scale = 0.01f; + main_pickup_jump_p->item = item; + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + + if (ftr_flag == FALSE) { + Player_actor_putin_item_layer2(slot_idx, item, item_pos_p); + } else { + Player_actor_putin_furniture(game, slot_idx, item); + } + + if (slot_idx >= 0 || ITEM_IS_MYMANNIQUIN(item) || ITEM_IS_MYUMBRELLA(item)) { + main_pickup_jump_p->exchange_flag = FALSE; + } else { + main_pickup_jump_p->exchange_flag = TRUE; + } + + if (knife_and_fork_flag) { + Common_Get(clip).htbl_clip->pickup_counter = 2; + } + + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, 0.0f, cKF_FRAMECONTROL_STOP, + mPlayer_PART_TABLE_PICK_UP); + Player_actor_setup_main_Base(actorx, game); + Player_actor_sound_dai_ue_kakunou(actorx); +} + +static void Player_actor_settle_main_Pickup_jump(ACTOR* actorx, GAME* game) { + if (Common_Get(clip).my_room_clip != NULL) { + Common_Get(clip).my_room_clip->leaf_pickuped_proc(); + } +} + +static void Player_actor_Movement_Pickup_jump_common(ACTOR* actorx, xyz_t* target_pos_p) { + xyz_t* player_pos_p = &actorx->world.position; + f32 dx = target_pos_p->x - player_pos_p->x; + f32 dz = target_pos_p->z - player_pos_p->z; + + if (dx != 0.0f || dz != 0.0f) { + s16 target_angle_y = atans_table(dz, dx); + + add_calc_short_angle2(&actorx->shape_info.rotation.y, target_angle_y, 1.0f - sqrtf(0.5f), + DEG2SHORT_ANGLE2(13.73291015625f), DEG2SHORT_ANGLE2(0.274658203125f)); + } + + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static void Player_actor_Movement_Pickup_jump(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_jump_c* main_pickup_jump_p = &player->main_data.pickup_jump; + + Player_actor_Movement_Pickup_jump_common(actorx, &main_pickup_jump_p->target_pos); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Pickup_jump(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Pickup_jump(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Pickup_jump(ACTOR* actorx) { + Player_actor_BGcheck_common_type3(actorx); +} + +static void Player_actor_Set_Item_Pickup_jump(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_pickup_jump_c* main_pickup_jump_p = &player->main_data.pickup_jump; + int ftr_flag = main_pickup_jump_p->ftr_flag; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + f32 cur_frame = kf0_p->frame_control.current_frame - (f32)(ftr_flag ? 0.0f : 0.0f); + xyz_t* item_pos_p = &main_pickup_jump_p->item_pos; + f32* scale_p = &main_pickup_jump_p->scale; + xyz_t* left_hand_pos_p = &player->left_hand_pos; + xyz_t* item_ofs_p = &main_pickup_jump_p->item_offset; + + if (cur_frame <= 11.0f) { + if (ftr_flag && Common_Get(clip).my_room_clip != NULL) { + if (Common_Get(clip).my_room_clip->ftr2leaf_proc()) { + Common_Get(clip).my_room_clip->leaf_start_pos_proc(item_pos_p); + } + } + + item_ofs_p->x = item_pos_p->x - left_hand_pos_p->x; + item_ofs_p->y = item_pos_p->y - left_hand_pos_p->y; + item_ofs_p->z = item_pos_p->z - left_hand_pos_p->z; + } else if (cur_frame <= 16.0f) { + f32 p = 1.0f - (cur_frame - 11.0f) * 0.2f; + + item_pos_p->x = left_hand_pos_p->x + p * item_ofs_p->x; + item_pos_p->y = left_hand_pos_p->y + p * item_ofs_p->y; + item_pos_p->z = left_hand_pos_p->z + p * item_ofs_p->z; + } else { + *item_pos_p = *left_hand_pos_p; + } + + if (cur_frame <= 11.0f) { + *scale_p = 0.01f; + } else if (cur_frame <= 16.0f) { + *scale_p = 0.01f - ((cur_frame - 11.0f) * 0.0025f) * 0.2f; + } else if (cur_frame <= 30.0f) { + *scale_p = 0.0075f - ((cur_frame - 16.0f) * 0.0075f) * (1.0f / 14.0f); + } else { + *scale_p = 0.0f; + } + + if (*scale_p > 0.01f) { + *scale_p = 0.01f; + } else if (*scale_p < 0.0f) { + *scale_p = 0.0f; + } + + if (ftr_flag && Common_Get(clip).my_room_clip != NULL) { + if (Common_Get(clip).my_room_clip->ftr2leaf_proc()) { + Common_Get(clip).my_room_clip->set_leaf_proc(item_pos_p, *scale_p); + } + } +} + +static void Player_actor_SearchAnimation_Pickup_jump(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_Item_Pickup_jump(actorx); + } +} + +static void Player_actor_request_proc_index_fromPickup_jump(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + mPlayer_main_pickup_jump_c* main_pickup_jump_p = &player->main_data.pickup_jump; + + if (main_pickup_jump_p->exchange_flag) { + Player_actor_request_main_pickup_exchange(game, &main_pickup_jump_p->target_pos, main_pickup_jump_p->item, + mPlayer_REQUEST_PRIORITY_21); + } else { + if (main_pickup_jump_p->item == ITM_GOLDEN_SHOVEL && mPlib_Check_golden_item_get_demo_end(3) == FALSE) { + Player_actor_request_main_demo_get_golden_item_all(game, 3, mPlayer_REQUEST_PRIORITY_34); + } else { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Pickup_jump(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Pickup_jump(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Pickup_jump(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Pickup_jump(actorx, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Pickup_jump(actorx, game); + Player_actor_BGcheck_Pickup_jump(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPickup_jump(actorx, game, end_flag); +} diff --git a/src/m_player_main_pray.c_inc b/src/m_player_main_pray.c_inc new file mode 100644 index 00000000..81d6175d --- /dev/null +++ b/src/m_player_main_pray.c_inc @@ -0,0 +1,93 @@ +static int Player_actor_request_main_pray_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PRAY, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_pray_c* req_pray_p = &player->requested_main_index_data.pray; + + Player_actor_request_main_index(game, mPlayer_INDEX_PRAY, priority); + + req_pray_p->pos = *pos_p; + req_pray_p->angle_y = angle_y; + + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Pray(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_pray_c* req_pray_p = &player->requested_main_index_data.pray; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_pray_p->pos, actorx->shape_info.rotation.y, + req_pray_p->angle_y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_OMAIRI_US1, mPlayer_ANIM_OMAIRI_US1, 1.0f, 1.0f, 0.5f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + + if (Camera2_Check_main_index(play, CAMERA2_PROCESS_NORMAL)) { + Camera2_request_main_simple(play, &play->camera.lookat.center, &play->camera.direction, + play->camera.focus_distance, 0, 9); + } +} + +static void Player_actor_settle_main_Pray(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; + + if (Camera2_Check_main_index(play, CAMERA2_PROCESS_SIMPLE)) { + Camera2_change_priority(play, 0); + Camera2_request_main_normal(play, 0, 9); + } +} + +static int Player_actor_CulcAnimation_Pray(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_Movement_Pray(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Pray(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Pray(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromPray(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Pray(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Pray(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Pray(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Pray(actorx, game); + Player_actor_BGcheck_Pray(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPray(actorx, game, end_flag); +} diff --git a/src/m_player_main_pull.c_inc b/src/m_player_main_pull.c_inc new file mode 100644 index 00000000..62cc6531 --- /dev/null +++ b/src/m_player_main_pull.c_inc @@ -0,0 +1,137 @@ +static int Player_actor_request_main_pull(GAME* game, int ftr_no, s16 angle, xyz_t* start_pos, xyz_t* end_pos, + xyz_t* ofs, int priority) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_HOLD && + Player_actor_check_request_main_able(game, mPlayer_INDEX_PULL, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.pull.ftrNo = ftr_no; + player->requested_main_index_data.pull.angle_y = angle; + player->requested_main_index_data.pull.start_pos = *start_pos; + player->requested_main_index_data.pull.end_pos = *end_pos; + player->requested_main_index_data.pull.ofs = *ofs; + + Player_actor_request_main_index(game, mPlayer_INDEX_PULL, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Pull(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); + actor->world.position.x = player->main_data.pull.start_pos.x; + actor->world.position.z = player->main_data.pull.start_pos.z; +} + +static void Player_actor_setup_main_Pull(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_pull_c* main_pull = &player->main_data.pull; + s16 angle; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_pull_c* req_pull = &player->requested_main_index_data.pull; + f32 x; + f32 z; + + keyf = &player->keyframe0; + main_pull->ftr_no = req_pull->ftrNo; + main_pull->start_pos = req_pull->end_pos; + main_pull->ofs = req_pull->ofs; + main_pull->timer = 0.0f; + + angle = req_pull->angle_y; + x = req_pull->start_pos.x; + z = req_pull->start_pos.z; + + actor->world.angle.y = angle; + actor->shape_info.rotation.y = angle; + actor->world.position.x = x; + actor->world.position.z = z; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PULL1, mPlayer_ANIM_PULL1, 1.0f, 1.0f, 0.5f, -5.0f, 0, + 0); + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_CulcAnimation_Pull(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Movement_Pull(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t* ofs; + f32* timer_p; + mPlayer_main_pull_c* main_pull = &player->main_data.pull; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + + timer_p = &main_pull->timer; + ofs = &main_pull->ofs; + *timer_p += 1.0f; + + if (*timer_p >= 6.0f) { + f32 dis; + + if (*timer_p > 34.0f) { + *timer_p = 34.0f; + } + + dis = (*timer_p - 6.0f) / 28.0f; + + if (dis >= 1.0f) { + actor->world.position.x += ofs->x; + actor->world.position.z += ofs->z; + } else if (dis > 0.0f) { + actor->world.position.x += ofs->x * dis; + actor->world.position.z += ofs->z * dis; + } + } + + Actor_position_moveF(actor); +} + +static void Player_actor_SearchAnimation_Pull(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Pull(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Pull(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromPull(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + int ftr = player->main_data.pull.ftr_no; + int angle = Player_actor_Get_Index_fromAngle(actor->world.angle.y); + Player_actor_request_main_hold(game, ftr, angle, &actor->world.position, -12.0f, 1, + mPlayer_REQUEST_PRIORITY_22); + } +} + +static void Player_actor_main_Pull(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Pull(actor, &frame_calc); + + Player_actor_Movement_Pull(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Pull(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Pull(actor, game); + Player_actor_BGcheck_Pull(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPull(actor, game, arg); +} diff --git a/src/m_player_main_pull_net.c_inc b/src/m_player_main_pull_net.c_inc new file mode 100644 index 00000000..a64e87c5 --- /dev/null +++ b/src/m_player_main_pull_net.c_inc @@ -0,0 +1,217 @@ +static int Player_actor_request_main_pull_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PULL_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + s8 kind = Player_actor_Get_ItemKind(&player->actor_class, player->now_main_index); + int net = FALSE; + + if (mPlayer_ITEM_IS_NET(kind)) { + net = TRUE; + } + + if (net) { + Player_actor_request_main_index(game, mPlayer_INDEX_PULL_NET, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Pull_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + mPlayer_main_pull_net_c* main_pull = &player->main_data.pull_net; + + main_pull->timer = 0.0f; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_HOLD_WAIT1, mPlayer_INDEX_WAIT, -10.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_GET_M1, mPlayer_ANIM_GET_M1, 1.0f, 1.0f, 0.5f, 10.0f, 0, + 0); + + if (player->item_net_catch_label != 0) { + int idx = player->item_net_catch_insect_idx; + + if (idx == aSOI_INSECT_TYPE_SPIRIT) { + main_pull->already_collected = FALSE; + } else { + main_pull->already_collected = mSM_CHECK_LAST_INSECT_GET(idx); + } + } else { + main_pull->already_collected = FALSE; + } + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Pull_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->keyframe0.frame_control.current_frame > 17.0f) { + add_calc_short_angle2(&actor->shape_info.rotation.y, 0, 1.0f - sqrtf(0.5), 2500, 50); + actor->world.angle.y = actor->shape_info.rotation.y; + } + + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static void Player_actor_CorrectSomething_Pull_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t* pos; + + if (player->keyframe0.frame_control.current_frame > 15.0f) { + u32 label = player->item_net_catch_label; + + if (label != 0 && player->item_net_catch_type == 0) { + ((ACTOR*)label)->drawn = TRUE; + } + pos = &player->left_hand_pos; + + } else { + pos = &player->net_pos; + } + + Player_actor_CorrectSomething_net(actor, pos); +} + +static int Player_actor_CulcAnimation_Pull_net(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_ObjCheck_Pull_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Pull_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Pull_net(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static int Player_actor_Get_mushi_msg_num(int msg_offs) { + int ret_msg_no = msg_offs + 0x2FA1; + + if (msg_offs < 0x20) { + ret_msg_no = msg_offs + 0xA2C; + } + + return ret_msg_no; +} + +static void Player_actor_Pull_net_demo_ct(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + rgba_t color; + mMsg_Window_c* win = mMsg_Get_base_window_p(); + u32 label = player->item_net_catch_label; + s8 type = player->item_net_catch_type; + int msg_no = 0xA2C; + + if (label != 0) { + int idx = player->item_net_catch_insect_idx; + int main_index = player->now_main_index; + + if (type != 0) { + player->item_net_has_catch = TRUE; + } + if (idx == aSOI_INSECT_TYPE_SPIRIT) { + int item_idx = mPr_GetPossessionItemIdxKindWithCond(Save_GetPointer(private_data[Common_Get(player_no)]), + ITM_SPIRIT0, ITM_SPIRIT4, FALSE); + + if (item_idx == -1) { + msg_no = 0x2F03; + } else { + msg_no = Common_Get(now_private)->inventory.pockets[item_idx] + 0x1DC; + } + } else if (main_index == mPlayer_INDEX_PULL_NET) { + u8 str[16]; + mActor_name_t item; + mPlayer_main_pull_net_c* main_pull = &player->main_data.pull_net; + + if (main_pull->already_collected) { + if (type != 0) { + if (idx != aSOI_INSECT_TYPE_COMMON_BUTTERFLY) { + mIN_copy_name_str(str, ITM_INSECT08); + item = ITM_INSECT08; + } else { + mIN_copy_name_str(str, ITM_INSECT38); + item = ITM_INSECT38; + } + } else { + mIN_copy_name_str(str, ((aINS_INSECT_ACTOR*)label)->item); + item = ((aINS_INSECT_ACTOR*)label)->item; + } + mMsg_Set_item_str_art(win, mMsg_ITEM_STR0, str, sizeof(str), mIN_get_item_article(item)); + msg_no = 0xA4E; + } else { + msg_no = Player_actor_Get_mushi_msg_num(idx); + } + } else { + msg_no = Player_actor_Get_mushi_msg_num(idx); + } + } + mDemo_Set_msg_num(msg_no); + mDemo_Set_talk_display_name(FALSE); + mDemo_Set_camera(CAMERA2_PROCESS_ITEM); + mDemo_Set_ListenAble(); + mMsg_Set_LockContinue(win); + + color.r = 185; + color.g = 245; + color.b = 80; + color.a = 255; + + mDemo_Set_talk_window_color(&color); + mChoice_Clear_ChoseNum(mChoice_Get_base_window_p()); + mBGMPsComp_make_ps_fanfare(0x28, 0x168); +} + +static int Player_actor_MessageControl_Pull_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_pull_net_c* main_pull = &player->main_data.pull_net; + + main_pull->timer += 1.0f; + + if (main_pull->timer > 50.0f) { + main_pull->timer = 50.0f; + } + + if (main_pull->timer >= 50.0f) { + if (!mDemo_Check(mDemo_TYPE_REPORT, actor)) { + mDemo_Request(mDemo_TYPE_REPORT, actor, Player_actor_Pull_net_demo_ct); + } else { + return TRUE; + } + } + return FALSE; +} + +static void Player_actor_request_proc_index_fromPull_net(ACTOR* actor, GAME* game, int end_flag, int pull) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_pull_net_c* main_pull = &player->main_data.pull_net; + + if (end_flag != FALSE && pull != FALSE) { + Player_actor_request_main_notice_net(game, main_pull->already_collected, mPlayer_REQUEST_PRIORITY_27); + } +} + +static void Player_actor_main_Pull_net(ACTOR* actor, GAME* game) { + int end_flag; + f32 frame_calc; + int cntrl; + + Player_actor_Movement_Pull_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CorrectSomething_Pull_net(actor); + end_flag = Player_actor_CulcAnimation_Pull_net(actor, &frame_calc); + Player_actor_SearchAnimation_Pull_net(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Pull_net(actor, game); + Player_actor_BGcheck_Pull_net(actor); + cntrl = Player_actor_MessageControl_Pull_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPull_net(actor, game, end_flag, cntrl); +} diff --git a/src/m_player_main_push.c_inc b/src/m_player_main_push.c_inc new file mode 100644 index 00000000..a68e6de4 --- /dev/null +++ b/src/m_player_main_push.c_inc @@ -0,0 +1,102 @@ +static int Player_actor_request_main_push(GAME* game, int ftr_no, s16 angle_y, xyz_t* pos, int priority) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_HOLD && + Player_actor_check_request_main_able(game, mPlayer_INDEX_PUSH, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.push.ftrNo = ftr_no; + player->requested_main_index_data.push.angle_y = angle_y; + player->requested_main_index_data.push.player_pos = *pos; + + Player_actor_request_main_index(game, mPlayer_INDEX_PUSH, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Push(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); +} + +static void Player_actor_setup_main_Push(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_push_c* main_push = &player->main_data.push; + s16 angle; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_push_c* req_push = &player->requested_main_index_data.push; + f32 x; + f32 z; + + keyf = &player->keyframe0; + main_push->ftr_no = req_push->ftrNo; + angle = req_push->angle_y; + x = req_push->player_pos.x; + z = req_push->player_pos.z; + + actor->world.angle.y = angle; + actor->shape_info.rotation.y = angle; + actor->world.position.x = x; + actor->world.position.z = z; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUSH1, mPlayer_ANIM_PUSH1, 1.0f, 1.0f, 0.5f, -5.0f, 0, + 0); + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_CulcAnimation_Push(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_Movement_Push(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Actor_position_moveF(actor); +} + +static void Player_actor_SearchAnimation_Push(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Push(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Push(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromPush(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + int ftr = player->main_data.push.ftr_no; + int angle = Player_actor_Get_Index_fromAngle(actor->world.angle.y); + Player_actor_request_main_hold(game, ftr, angle, &actor->world.position, -12.0f, 1, + mPlayer_REQUEST_PRIORITY_22); + } +} + +static void Player_actor_main_Push(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Push(actor, &frame_calc); + + Player_actor_Movement_Push(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Push(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Push(actor, game); + Player_actor_BGcheck_Push(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPush(actor, game, arg); +} diff --git a/src/m_player_main_push_snowball.c_inc b/src/m_player_main_push_snowball.c_inc new file mode 100644 index 00000000..70428d67 --- /dev/null +++ b/src/m_player_main_push_snowball.c_inc @@ -0,0 +1,89 @@ +static int Player_actor_request_main_push_snowball_all(GAME* game, void* label, int wade_flag, int prio) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_push_snowball_c* req_push_snowball_p = &player->requested_main_index_data.push_snowball; + int main_index = player->now_main_index; + + if (main_index == mPlayer_INDEX_PUSH_SNOWBALL) { + return FALSE; + } + + if (main_index == mPlayer_INDEX_WADE_SNOWBALL) { + mPlayer_main_wade_snowball_c* wade_snowball_p = &player->main_data.wade_snowball; + + /* When wading between acres, check the snowball label is the same as the one pushed */ + if (wade_snowball_p->snowball_label != (u32)label) { + return FALSE; + } + } + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUSH_SNOWBALL, prio)) { + req_push_snowball_p->label = (u32)label; + req_push_snowball_p->wade_flag = wade_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_PUSH_SNOWBALL, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Push_snowball(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_push_snowball_c* req_push_snowball_p = &player->requested_main_index_data.push_snowball; + mPlayer_main_push_snowball_c* push_snowball_p = &player->main_data.push_snowball; + int anim1_idx; + int part_table_idx; + + push_snowball_p->label = req_push_snowball_p->label; + + if (req_push_snowball_p->wade_flag == FALSE) { + player->crash_snowball_for_wade = FALSE; + } + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_PUSH_YUKI1, -5.0f, &anim1_idx, &part_table_idx); + + if (anim1_idx != mPlayer_ANIM_PUSH_YUKI1) { + part_table_idx = mPlayer_PART_TABLE_NET; + } + + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_PUSH_YUKI1, anim1_idx, 0.0f, 0.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static int Player_actor_CulcAnimation_Push_snowball(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_SetEffect_Push_snowball(ACTOR* actorx, GAME* game, f32 l_target_frame, f32 r_target_frame) { + Player_actor_SetEffect_Run(actorx, game, l_target_frame, r_target_frame); +} + +static void Player_actor_SearchAnimation_Push_snowball(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); + Player_actor_SetEffect_Push_snowball(actorx, game, 1.0f, 9.0f); + } +} + +static void Player_actor_request_proc_index_fromPush_snowball(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->crash_snowball_for_wade) { + /* The snowball 'crashed' while wading, so revert to wait state */ + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Push_snowball(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Push_snowball(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Push_snowball(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPush_snowball(actorx, game); +} diff --git a/src/m_player_main_putaway_net.c_inc b/src/m_player_main_putaway_net.c_inc new file mode 100644 index 00000000..ac8f5dc7 --- /dev/null +++ b/src/m_player_main_putaway_net.c_inc @@ -0,0 +1,109 @@ +static int Player_actor_request_main_putaway_net(GAME* game, int exchange_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUTAWAY_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.putaway_net.exchange_flag = exchange_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_PUTAWAY_NET, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Putaway_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + mPlayer_main_putaway_net_c* main_putaway = &player->main_data.putaway_net; + mPlayer_request_putaway_net_c* req_putaway = &player->requested_main_index_data.putaway_net; + + main_putaway->exchange_flag = req_putaway->exchange_flag; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_LTURN1, mPlayer_INDEX_WALK, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUTAWAY_M1, mPlayer_ANIM_PUTAWAY_M1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + + Player_actor_sound_GASAGOSO(actor); +} + +static void Player_actor_Movement_Putaway_net(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Putaway_net(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_CorrectSomething_Putaway_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + u32 label = player->item_net_catch_label; + + if (label != 0) { + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 17.0f)) { + if (player->item_net_catch_type == 0) { + Common_Get(clip).insect_clip->dt_proc((ACTOR*)label, game); + } + } else if (fc->current_frame < 17.0f) { + if (player->item_net_catch_type == 0) { + ((ACTOR*)label)->scale.x *= 0.89125f; + ((ACTOR*)label)->scale.y *= 0.89125f; + ((ACTOR*)label)->scale.z *= 0.89125f; + } + Player_actor_CorrectSomething_net(actor, &player->left_hand_pos); + } + } +} + +static void Player_actor_SearchAnimation_Putaway_net(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_CorrectSomething_Putaway_net(actor, game); + } +} + +static void Player_actor_ObjCheck_Putaway_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Putaway_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromPutaway_net(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + mPlayer_main_putaway_net_c* main_putaway = &player->main_data.putaway_net; + + if (end_flag) { + if (main_putaway->exchange_flag) { + if (player->item_net_catch_type == 0) { + mSM_open_submenu_new2( + &play->submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_EXCHANGE, + (mActor_name_t)(((aINS_INSECT_ACTOR*)player->item_net_catch_label)->type + ITM_INSECT_START), NULL, + actor->shape_info.rotation.y); + } + } else { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } +} + +static void Player_actor_main_Putaway_net(ACTOR* actor, GAME* game) { + int end_flag; + f32 frame_calc; + + Player_actor_Movement_Putaway_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Putaway_net(actor, &frame_calc); + Player_actor_SearchAnimation_Putaway_net(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Putaway_net(actor, game); + Player_actor_BGcheck_Putaway_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPutaway_net(actor, game, end_flag); +} diff --git a/src/m_player_main_putaway_rod.c_inc b/src/m_player_main_putaway_rod.c_inc new file mode 100644 index 00000000..cb9d22de --- /dev/null +++ b/src/m_player_main_putaway_rod.c_inc @@ -0,0 +1,97 @@ + +static int Player_actor_request_main_putaway_rod(GAME* game, s16 angle, int exchange_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUTAWAY_ROD, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_index(game, mPlayer_INDEX_PUTAWAY_ROD, priority); + + player->requested_main_index_data.putaway_rod.angle_y = angle; + player->requested_main_index_data.putaway_rod.exchange_flag = exchange_flag; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Putaway_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + mPlayer_main_putaway_rod_c* main_putaway = &player->main_data.putaway_rod; + mPlayer_request_putaway_rod_c* req_putaway = &player->requested_main_index_data.putaway_rod; + + main_putaway->timer = 0.0f; + main_putaway->angle_y = req_putaway->angle_y; + main_putaway->exchange_flag = req_putaway->exchange_flag; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_TRANS_WAIT1, mPlayer_INDEX_HOLD, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUTAWAY_T1, mPlayer_ANIM_PUTAWAY_T1, 1.0f, 1.0f, 0.5f, + -3.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + + Player_actor_sound_GASAGOSO(actor); +} + +static void Player_actor_Movement_Putaway_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Putaway_rod(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_ObjCheck_Putaway_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Putaway_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Putaway_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_SetTimer_Putaway_rod(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putaway_rod_c* main_putaway = &player->main_data.putaway_rod; + + main_putaway->timer += 1.0f; +} + +static void Player_actor_request_proc_index_fromPutaway_rod(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + mPlayer_main_putaway_rod_c* main_putaway = &player->main_data.putaway_rod; + if (end_flag) { + if (main_putaway->exchange_flag) { + UKI_ACTOR* uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + mActor_name_t type = uki->get_fish_type_proc(&uki->actor_class); + + mSM_open_submenu_new2(&play->submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_EXCHANGE, type, NULL, + main_putaway->angle_y); + } else { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } +} + +static void Player_actor_main_Putaway_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Putaway_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Putaway_rod(actor, &frame_calc); + Player_actor_SearchAnimation_Putaway_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Putaway_rod(actor, game); + Player_actor_BGcheck_Putaway_rod(actor); + Player_actor_SetTimer_Putaway_rod(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPutaway_rod(actor, game, end_flag); +} diff --git a/src/m_player_main_putaway_scoop.c_inc b/src/m_player_main_putaway_scoop.c_inc new file mode 100644 index 00000000..df8cc769 --- /dev/null +++ b/src/m_player_main_putaway_scoop.c_inc @@ -0,0 +1,102 @@ + +static int Player_actor_request_main_putaway_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, int _10, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUTAWAY_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.putaway_scoop.dig_pos = *pos; + player->requested_main_index_data.putaway_scoop.item = item; + player->requested_main_index_data.putaway_scoop._10 = _10; + + Player_actor_request_main_index(game, mPlayer_INDEX_PUTAWAY_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Putaway_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putaway_scoop_c* main_scoop = &player->main_data.putaway_scoop; + mPlayer_request_putaway_scoop_c* req_scoop = &player->requested_main_index_data.putaway_scoop; + + main_scoop->target_pos = req_scoop->dig_pos; + main_scoop->item = req_scoop->item; + main_scoop->scale = 0.01f; + main_scoop->submenu_flag = req_scoop->_10; + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_PUTAWAY_D1, mPlayer_ANIM_PUTAWAY_D1, 1.0f, 1.0f, 0.5f, + -3.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_GASAGOSO(actor); +} + +static void Player_actor_Movement_Putaway_scoop(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625002f); +} + +static int Player_actor_CulcAnimation_Putaway_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_ObjCheck_Putaway_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Putaway_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Putaway_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_Set_Item_Putaway_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putaway_scoop_c* main_scoop = &player->main_data.putaway_scoop; + + main_scoop->scale *= 0.89125f; +} + +static void Player_actor_request_proc_index_fromPutaway_scoop(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (end_flag) { + mPlayer_main_putaway_scoop_c* main_scoop = &player->main_data.putaway_scoop; + + if (main_scoop->submenu_flag) { + mSM_open_submenu_new2(&play->submenu, mSM_OVL_INVENTORY, mSM_IV_OPEN_EXCHANGE, main_scoop->item, + &main_scoop->target_pos, actor->shape_info.rotation.y); + } else { + Player_actor_SettleRequestMainIndexPriority(actor); + if (main_scoop->item == ITM_GOLDEN_SHOVEL && + !mPlib_Check_golden_item_get_demo_end(mPlayer_GOLDEN_ITEM_TYPE_SHOVEL)) { + Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + mPlayer_REQUEST_PRIORITY_34); + } else { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Putaway_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Putaway_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Putaway_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Putaway_scoop(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Putaway_scoop(actor, game); + Player_actor_BGcheck_Putaway_scoop(actor); + Player_actor_Set_Item_Putaway_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPutaway_scoop(actor, game, end_flag); +} diff --git a/src/m_player_main_putin_item.c_inc b/src/m_player_main_putin_item.c_inc new file mode 100644 index 00000000..57f72d23 --- /dev/null +++ b/src/m_player_main_putin_item.c_inc @@ -0,0 +1,125 @@ +static int Player_actor_request_main_putin_item(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUTIN_ITEM, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_putin_item_c* req_putin_item_p = &player->requested_main_index_data.putin_item; + + req_putin_item_p->request_main_index = player->requested_main_index; + Player_actor_request_main_index(game, mPlayer_INDEX_PUTIN_ITEM, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Putin_item(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_putin_item_c* req_putin_item_p = &player->requested_main_index_data.putin_item; + mPlayer_main_putin_item_c* main_putin_item_p = &player->main_data.putin_item; + int item_kind; + int anim_idx; + f32 morph_counter; + + item_kind = Player_actor_Get_ItemKind_from_submenu(); + + main_putin_item_p->back_request_data = *req_putin_item_p; + main_putin_item_p->timer = 0.0f; + + Player_actor_LoadOrDestruct_Item(actorx, item_kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind), 0.5f, + 5.0f, -1.0f, cKF_FRAMECONTROL_REPEAT); + Player_actor_Set_now_item_main_index(actorx, Player_actor_Get_BasicItemMainIndex_fromItemKind(item_kind)); + player->item_kind = item_kind; + + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { + anim_idx = mPlayer_ANIM_UMB_CLOSE1; + morph_counter = -5.0f; + + if (player->umbrella_actor != NULL) { + if (Common_Get(clip).tools_clip != NULL) { + Common_Get(clip).tools_clip->aTOL_chg_request_mode_proc(actorx, player->umbrella_actor, + aTOL_ACTION_PUTAWAY); + } + } else { + ACTOR* umbrella_p; + + player->umbrella_state = aTOL_ACTION_PUTAWAY; + umbrella_p = Player_actor_Get_umbrella_p(actorx, game); + player->umbrella_actor = umbrella_p; + } + } else { + anim_idx = mPlayer_ANIM_PUTAWAY1; + morph_counter = 9.0f; + } + + Player_actor_InitAnimation_Base2(actorx, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, morph_counter, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + Player_actor_sound_GASAGOSO(actorx); +} + +static void Player_actor_Movement_Putin_item(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Putin_item(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Putin_item(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Putin_item(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_SetItemScale_Putin_item(ACTOR* actorx) { + int item_kind = Player_actor_Get_ItemKind_from_submenu(); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_putin_item_c* main_putin_item_p = &player->main_data.putin_item; + f32* timer_p = &main_putin_item_p->timer; + + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) == FALSE) { + f32 timer = *timer_p; + + if (*timer_p < 18.0f) { + (*timer_p) += 1.0f; + player->item_scale = 1.0f - get_percent_forAccelBrake(*timer_p, 0.0f, 18.0f, 0.0f, 0.0f); + } + } +} + +static void Player_actor_SearchAnimation_Putin_item(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); + } +} + +static void Player_actor_request_proc_index_fromPutin_item(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_putin_item_c* main_putin_item_p = &player->main_data.putin_item; + + Player_actor_SettleRequestMainIndexPriority(actorx); + bcopy(&main_putin_item_p->back_request_data.request_data, &player->requested_main_index_data, + sizeof(mPlayer_request_backup_u)); + Player_actor_request_main_index(game, main_putin_item_p->back_request_data.request_main_index, + mPlayer_REQUEST_PRIORITY_37); + } +} + +static void Player_actor_main_Putin_item(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Putin_item(actorx); + end_flag = Player_actor_CulcAnimation_Putin_item(actorx, &last_anim0_cur_frame); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SetItemScale_Putin_item(actorx); + Player_actor_SearchAnimation_Putin_item(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Putin_item(actorx, game); + Player_actor_BGcheck_Putin_item(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromPutin_item(actorx, game, end_flag); +} diff --git a/src/m_player_main_putin_scoop.c_inc b/src/m_player_main_putin_scoop.c_inc new file mode 100644 index 00000000..ef9efc82 --- /dev/null +++ b/src/m_player_main_putin_scoop.c_inc @@ -0,0 +1,125 @@ +static int Player_actor_request_main_putin_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, int golden_scoop, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_PUTIN_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.putin_scoop.dig_pos = *pos; + player->requested_main_index_data.putin_scoop.item = item; + player->requested_main_index_data.putin_scoop.get_gold_scoop_flag = golden_scoop; + + Player_actor_request_main_index(game, mPlayer_INDEX_PUTIN_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_main_putin_scoop_from_submenu(ACTOR* actor, GAME* game) { + mPlayer_request_main_data* data = &(mPlib_Get_change_data_from_submenu_p()->request_main_data); + + Player_actor_request_main_putin_scoop_all( + game, &data->putin_scoop_from_submenu.wpos, data->putin_scoop_from_submenu.item, + data->putin_scoop_from_submenu.got_gold_scoop, mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Putin_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; + mPlayer_request_putin_scoop_c* req_scoop = &player->requested_main_index_data.putin_scoop; + int anim_idx; + int part_table; + + main_scoop->target_pos = req_scoop->dig_pos; + main_scoop->item = req_scoop->item; + main_scoop->get_gold_scoop_flag = req_scoop->get_gold_scoop_flag; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_FILL_UP_I1, -5.0f, &anim_idx, &part_table); + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_FILL_UP_I1, mPlayer_ANIM_FILL_UP_I1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + + if (Common_Get(clip).bg_item_clip) { + int ut_x; + int ut_z; + mActor_name_t item = main_scoop->item; + + mFI_Wpos2UtNum(&ut_x, &ut_z, main_scoop->target_pos); + if (item) { + Common_Get(clip).bg_item_clip->player_drop_entry_proc(game, item, ut_x, ut_z, 0); + } + } + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Putin_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; + + Player_actor_Movement_axe_common(actor, &main_scoop->target_pos); + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Putin_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Putin_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; + + Player_actor_SetEffectHit_Fill_scoop(actor, game, &main_scoop->target_pos); +} + +static void Player_actor_SearchAnimation_Putin_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Putin_scoop(actor, game); + Player_actor_SetSound_Fill_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Putin_scoop(ACTOR* actor, GAME* game) { + Player_actor_ObjCheck_Fill_scoop(actor, game); +} + +static void Player_actor_BGcheck_Putin_scoop(ACTOR* actor) { + Player_actor_BGcheck_Fill_scoop(actor); +} + +static void Player_actor_lean_angle_Putin_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; + + Player_actor_lean_angle_scoop_common(actor, &main_scoop->target_pos, 49.0f); +} + +static void Player_actor_request_proc_index_fromPutin_scoop(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_putin_scoop_c* main_scoop = &player->main_data.putin_scoop; + + if (!main_scoop->get_gold_scoop_flag) { + Player_actor_request_proc_index_fromFill_scoop(actor, game, end_flag); + } else if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + mPlayer_REQUEST_PRIORITY_34); + } +} + +static void Player_actor_main_Putin_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Putin_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Putin_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Putin_scoop(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Putin_scoop(actor, game); + Player_actor_BGcheck_Putin_scoop(actor); + Player_actor_lean_angle_Putin_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromPutin_scoop(actor, game, end_flag); +} diff --git a/src/m_player_main_radio_exercise.c_inc b/src/m_player_main_radio_exercise.c_inc new file mode 100644 index 00000000..b8fba729 --- /dev/null +++ b/src/m_player_main_radio_exercise.c_inc @@ -0,0 +1,209 @@ +static int Player_actor_request_main_radio_exercise_all(GAME* game, int cmd, f32 speed, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RADIO_EXERCISE, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_radio_exercise_c* req_radio_exercise_p = &player->requested_main_index_data.radio_exercise; + + req_radio_exercise_p->cmd = cmd; + req_radio_exercise_p->speed = speed; + Player_actor_request_main_index(game, mPlayer_INDEX_RADIO_EXERCISE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Radio_exercise(ACTOR* actorx, GAME* game) { + // clang-format off + static const u8 anime_index_data[mPlayer_RADIO_EXERCISE_CMD_NUM] = { + mPlayer_ANIM_TAISOU1, + mPlayer_ANIM_TAISOU2_1, + mPlayer_ANIM_TAISOU2_2, + mPlayer_ANIM_TAISOU3, + mPlayer_ANIM_TAISOU4_1, + mPlayer_ANIM_TAISOU4_1, + mPlayer_ANIM_TAISOU4_2, + mPlayer_ANIM_TAISOU4_2, + mPlayer_ANIM_TAISOU5_1, + mPlayer_ANIM_TAISOU5_1, + mPlayer_ANIM_TAISOU5_2, + mPlayer_ANIM_TAISOU5_2, + mPlayer_ANIM_TAISOU6_1, + mPlayer_ANIM_TAISOU6_1, + mPlayer_ANIM_TAISOU6_2, + mPlayer_ANIM_TAISOU6_2, + mPlayer_ANIM_TAISOU7_1, + mPlayer_ANIM_TAISOU7_2, + }; + // clang-format on + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_SkeletonInfo_R_c* kf1_p = &player->keyframe1; + mPlayer_request_radio_exercise_c* req_radio_exercise_p = &player->requested_main_index_data.radio_exercise; + mPlayer_main_radio_exercise_c* radio_exercise_p = &player->main_data.radio_exercise; + int cmd = req_radio_exercise_p->cmd; + int anim_idx; + + if (cmd < 0 || cmd >= mPlayer_RADIO_EXERCISE_CMD_NUM) { + cmd = mPlayer_RADIO_EXERCISE_CMD0; + } + + radio_exercise_p->cmd = cmd; + radio_exercise_p->_04 = TRUE; + radio_exercise_p->_08 = 0; + radio_exercise_p->_0C = 0; + + player->radio_exercise_continue_cmd_idx = -1; + player->radio_exercise_cmd_timer = 0.0f; + + anim_idx = anime_index_data[cmd]; + Player_actor_InitAnimation_Base2(actorx, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.0f, -5.0f, cKF_FRAMECONTROL_STOP, + mPlayer_PART_TABLE_NORMAL); + kf0_p->frame_control.speed = req_radio_exercise_p->speed; + kf1_p->frame_control.speed = req_radio_exercise_p->speed; + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Radio_exercise(ACTOR* actorx, GAME* game) { + // nothing +} + +static void Player_actor_Set_RadioExerciseCommand_Radio_exercise(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_radio_exercise_c* radio_exercise_p = &player->main_data.radio_exercise; + + Player_actor_Set_RadioExerciseCommand(actorx, game, radio_exercise_p->_04); + radio_exercise_p->_04 = FALSE; +} + +static void Player_actor_Movement_Radio_exercise(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Radio_exercise(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + Radio_c radio; + f32 target_speed = 0.0f; + u32 old_sound_frame_counter = player->old_sound_frame_counter; + u32 now_sound_frame_counter = sAdo_GetSoundFrameCounter(); + int radio_counter = sAdos_GetRadioCounter(&radio); + f32 dummy; + + if (radio_counter == 0) { + target_speed = (int)radio.tempo * 0.012f; + } + + if (target_speed <= 0.0f) { + target_speed = 0.5f; + } + + if (now_sound_frame_counter != old_sound_frame_counter) { + u32 d_sound_frame_counter; + + if (now_sound_frame_counter > old_sound_frame_counter) { + d_sound_frame_counter = 0; + d_sound_frame_counter += now_sound_frame_counter; + d_sound_frame_counter -= old_sound_frame_counter; + } else { + d_sound_frame_counter = -1; + d_sound_frame_counter -= old_sound_frame_counter; + d_sound_frame_counter = now_sound_frame_counter + d_sound_frame_counter; + } + + if (d_sound_frame_counter > 5) { + d_sound_frame_counter = 5; + } + + target_speed *= (int)d_sound_frame_counter; + } + + { + // clang-format off + static f32 data[mPlayer_RADIO_EXERCISE_CMD_NUM] = { + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.25f, + 0.25f, + 0.25f, + 0.25f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + 0.5f, + }; + // clang-format on + + f32* speed_p = &player->keyframe0.frame_control.speed; + + target_speed *= data[player->main_data.radio_exercise.cmd]; + add_calc2(speed_p, target_speed, 0.3f, 0.5f); + player->keyframe1.frame_control.speed = *speed_p; + } + + return Player_actor_CulcAnimation_Base3(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Radio_exercise(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Radio_exercise(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromRadio_exercise(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_radio_exercise_c* radio_exercise_p = &player->main_data.radio_exercise; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32 cur_frame = fc0_p->current_frame; + + if (radio_exercise_p->_0C == FALSE) { + if (cur_frame >= fc0_p->end_frame - 24.0f) { + radio_exercise_p->_0C = TRUE; + } + } else { + Player_actor_CheckAndRequest_main_radio_exercise_all(game, TRUE); + } + + if (radio_exercise_p->_08 == FALSE) { + if (cur_frame >= fc0_p->end_frame - 0.5f) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_Set_status_for_bee(actorx, TRUE); + radio_exercise_p->_08 = TRUE; + } + } else if (end_flag) { + int next_radio_cmd = player->radio_exercise_continue_cmd_idx; + f32 exercise_cmd_timer = player->radio_exercise_cmd_timer; + + if (next_radio_cmd >= 0 && next_radio_cmd < mPlayer_RADIO_EXERCISE_CMD_NUM && exercise_cmd_timer <= 0.0f) { + Player_actor_request_main_radio_exercise_all(game, next_radio_cmd, fc0_p->speed, + mPlayer_REQUEST_PRIORITY_4); + } else { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 4, mPlayer_REQUEST_PRIORITY_1); + } + } +} + +static void Player_actor_main_Radio_exercise(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Set_RadioExerciseCommand_Radio_exercise(actorx, game); + Player_actor_Movement_Radio_exercise(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Radio_exercise(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Radio_exercise(actorx, game); + Player_actor_BGcheck_Radio_exercise(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRadio_exercise(actorx, game, end_flag); +} diff --git a/src/m_player_main_ready_net.c_inc b/src/m_player_main_ready_net.c_inc new file mode 100644 index 00000000..245c20d8 --- /dev/null +++ b/src/m_player_main_ready_net.c_inc @@ -0,0 +1,71 @@ +static int Player_actor_request_main_ready_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_READY_NET, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_READY_NET, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Ready_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_KAMAE_WAIT_M1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_KAMAE_WAIT_M1, mPlayer_ANIM_KAMAE_WAIT_M1, 1.0f, 1.0f, + 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); +} + +static int Player_actor_Movement_Ready_net(ACTOR* actor) { + return Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +} + +static void Player_actor_CulcAnimation_Ready_net(ACTOR* actor) { + f32 frame_calc; + + Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Ready_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Ready_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromReady_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (mPlib_check_player_warp_forEvent() != FALSE) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + return; + } else { + s8 kind = player->item_kind; + s8 getkind = Player_actor_Get_ItemKind(actor, player->now_main_index); + if (kind != getkind) { + Player_actor_request_main_wait_all(game, 0.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + return; + } + } + if (!Player_actor_CheckController_forNet(game)) { + Player_actor_request_main_swing_net(game, mPlayer_REQUEST_PRIORITY_22); + } else if (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY()) { + Player_actor_request_main_ready_walk_net(game, mPlayer_REQUEST_PRIORITY_12); + } +} + +static void Player_actor_main_Ready_net(ACTOR* actor, GAME* game) { + Player_actor_Movement_Ready_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Ready_net(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Ready_net(actor, game); + Player_actor_BGcheck_Ready_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReady_net(actor, game); +} diff --git a/src/m_player_main_ready_pitfall.c_inc b/src/m_player_main_ready_pitfall.c_inc new file mode 100644 index 00000000..aaf170e7 --- /dev/null +++ b/src/m_player_main_ready_pitfall.c_inc @@ -0,0 +1,97 @@ +static int Player_actor_request_main_ready_pitfall_all(GAME* game, const xyz_t* pos_p, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_READY_PITFALL, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_ready_pitfall_c* req_ready_pifall_p = &player->requested_main_index_data.ready_pitfall; + + req_ready_pifall_p->pos = *pos_p; + Player_actor_request_main_index(game, mPlayer_INDEX_READY_PITFALL, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Ready_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_ready_pitfall_c* req_ready_pifall_p = &player->requested_main_index_data.ready_pitfall; + int anim1_idx; + int part_table_idx; + + player->pitfall_flag = FALSE; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_GURATUKU1, -5.0f, &anim1_idx, &part_table_idx); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_ready_pifall_p->pos, + actorx->shape_info.rotation.y, actorx->shape_info.rotation.y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_TRANS_Y); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_GURATUKU1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Ready_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + eEC_CLIP->effect_kill_proc(eEC_EFFECT_ASE2, RSV_NO); +} + +static int Player_actor_CulcAnimation_Ready_pitfall(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Movement_Ready_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_SetEffect_Ready_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 5.0f)) { + player->draw_effect_idx = eEC_EFFECT_ASE2 + 1; + } +} + +static void Player_actor_SearchAnimation_Ready_pitfall(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetEffect_Ready_pitfall(actorx); + } +} + +static void Player_actor_set_eye_pattern_Ready_pitfall(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); +} + +static void Player_actor_ObjCheck_Ready_pitfall(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromReady_pitfall(GAME* game, int end_flag) { + + if (end_flag) { + Player_actor_request_main_fall_pitfall_all(game, mPlayer_REQUEST_PRIORITY_28); + } +} + +static void Player_actor_main_Ready_pitfall(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Ready_pitfall(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Ready_pitfall(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Ready_pitfall(actorx, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Ready_pitfall(actorx); + Player_actor_ObjCheck_Ready_pitfall(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromReady_pitfall(game, end_flag); +} diff --git a/src/m_player_main_ready_rod.c_inc b/src/m_player_main_ready_rod.c_inc new file mode 100644 index 00000000..8129cda8 --- /dev/null +++ b/src/m_player_main_ready_rod.c_inc @@ -0,0 +1,135 @@ +static int Player_actor_request_main_ready_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_READY_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_READY_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Ready_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMBRELLA1, mPlayer_INDEX_TUMBLE_GETUP, -5.0f, -1.0f, 0); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_SAO_SWING1, mPlayer_ANIM_SAO_SWING1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + + player->item_rod_angle_z = 0; +} + +static void Player_actor_Movement_Ready_rod(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static void Player_actor_CulcAnimation_Ready_rod(ACTOR* actor, f32* frame_calc) { + Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_ObjCheck_Ready_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Ready_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Ready_rod(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, 0, 0); + } +} + +static void Player_actor_request_proc_index_fromReady_rod(ACTOR* actor, GAME* game) { + static const f32 array_addX[] = { + 0.0f, -10.0f, 10.0f, -10.0f, 10.0f, + }; + + static const f32 array_addZ[] = { + 0.0f, 10.0f, 10.0f, -10.0f, -10.0f, + }; + + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + xyz_t pos; + + if (player->keyframe0.frame_control.current_frame >= 10.0f) { + s16 rot; + int ready; + int i; + int attr; + f32 sin; + f32 arg; + f32 cos; + f32 y; + + rot = actor->shape_info.rotation.y; + + sin = sin_s(rot) * 100.0f; + cos = cos_s(rot) * 100.0f; + + y = actor->world.position.y; + + pos.x = actor->world.position.x + sin; + pos.z = actor->world.position.z + (cos); + pos.y = 0.0f; + + ready = TRUE; + + for (i = 0; i < 5; i++) { + xyz_t wpos = pos; + f32 height; + + wpos.x += array_addX[i]; + wpos.y = 0.0f; + + wpos.z += array_addZ[i]; + + attr = mCoBG_Wpos2BgAttribute_Original(wpos); + + if (mCoBG_GetMoveBgHeight(&arg, &wpos) != -1) { + ready = FALSE; + break; + + } else if (!mCoBG_CheckWaterAttribute(attr)) { + ready = FALSE; + break; + } + height = mCoBG_GetWaterHeight_File(wpos, "m_player_main_ready_rod.c_inc", 165); + wpos.y = height; + + if ((wpos.y - y) >= 60.0f) { + ready = FALSE; + break; + } + } + + if (ready) { + f32 height = mCoBG_GetWaterHeight_File(pos, "m_player_main_ready_rod.c_inc", 177); + pos.y = height; + + if ((pos.y - y) < 60.0f) { + Player_actor_request_main_cast_rod(game, &pos, mPlayer_REQUEST_PRIORITY_21); + return; + } + } + Player_actor_request_main_air_rod(game, mPlayer_REQUEST_PRIORITY_21); + } +} + +static void Player_actor_main_Ready_rod(ACTOR* actor, GAME* game) { + f32 frame_calc; + + Player_actor_Movement_Ready_rod(actor); + Player_actor_CulcAnimation_Ready_rod(actor, &frame_calc); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_SearchAnimation_Ready_rod(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Ready_rod(actor, game); + Player_actor_BGcheck_Ready_rod(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReady_rod(actor, game); +} diff --git a/src/m_player_main_ready_walk_net.c_inc b/src/m_player_main_ready_walk_net.c_inc new file mode 100644 index 00000000..80894768 --- /dev/null +++ b/src/m_player_main_ready_walk_net.c_inc @@ -0,0 +1,180 @@ +static int Player_actor_request_main_ready_walk_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_READY_WALK_NET, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_READY_WALK_NET, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Ready_walk_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_KAMAE_MOVE_M1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_KAMAE_MOVE_M1, mPlayer_ANIM_KAMAE_MOVE_M1, 1.0f, 1.0f, + 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_CulcAnimation_Ready_walk_net(ACTOR* actor, f32* frame_calc, f32 speed) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 sp = (actor->speed * speed) / 1.8f; + + sp = sqrtf(sp); + sp = 0.252f * sp; + + if (actor->bg_collision_check.result.hit_wall_count == 2) { + sp = 0.22f; + } else { + if (actor->bg_collision_check.result.hit_wall_count == 1) { + f32 mod = sin_s(actor->bg_collision_check.wall_info[0].angleY - actor->world.angle.y); + + mod = ABS(mod); + + sp *= sqrtf(mod); + } + + if (sp < 0.22f) { + sp = 0.22f; + } + } + + player->keyframe0.frame_control.speed = sp; + player->keyframe1.frame_control.speed = sp; + Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SearchAnimation_Ready_walk_net(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_SetEffect_Walk(actor, game, 6.0f, 9.0f); + } +} + +static void Player_actor_Movement_Ready_walk_net(ACTOR* actor, GAME* game, f32* frame) { + f32 movePR = Player_actor_GetController_move_percentR(); + s16 angle = Player_actor_Get_ControllerAngle(game); + f32 mod; + s16 target = actor->world.angle.y; + f32 over_norm; + f32 cos; + f32 old_speed; + int angle2; + s16 angle3; + + if (movePR >= 1.0f) { + mod = 0.5f; + } else { + if (movePR <= 0.05f) { + mod = 0.01f; + } else { + mod = 0.01f + (0.5157895f * (movePR - 0.05f)); + } + } + + add_calc_short_angle2(&target, angle, 1.0f - sqrtf(1.0f - mod), 2500, 50); + + actor->world.angle.y = actor->shape_info.rotation.y = target; + + over_norm = Player_actor_Culc_over_speed_normalize_NoneZero(actor, &actor->world.position); + movePR = (1.8f * movePR) / over_norm; + + angle3 = Player_actor_Get_ControllerAngle(game) - actor->world.angle.y; + + angle2 = ABS(angle3); + + if (angle2 > 0x8000) { + angle2 = 0x10000 - angle2; + } + + cos = cos_s(angle2); + + if (cos <= 0.0f) { + movePR = 0.0f; + } else { + movePR *= cos; + } + + old_speed = actor->speed; + if (old_speed != movePR) { + if (old_speed < movePR) { + old_speed += 0.60899997f; + if (old_speed > movePR) { + old_speed = movePR; + } + } else if (old_speed > movePR) { + old_speed -= 0.32625002f; + if (old_speed < movePR) { + old_speed = movePR; + } + } + actor->speed = old_speed; + } + + *frame = over_norm; + Player_actor_Movement_Base(actor); +} + +static void Player_actor_ObjCheck_Ready_walk_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Ready_walk_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromReady_walk_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 speed; + f32 percent_x; + f32 percent_y; + s8 kind; + s8 getkind; + + if (mPlib_check_player_warp_forEvent()) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_22); + + } else { + if (!actor->bg_collision_check.result.on_ground) { + Player_actor_request_main_fall_all(game, -5.0f, 1, mPlayer_REQUEST_PRIORITY_1); + } + + if (!Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_swing_net(game, mPlayer_REQUEST_PRIORITY_22); + } + + speed = actor->speed; + + percent_x = Player_actor_GetController_move_percentX(); + percent_y = Player_actor_GetController_move_percentY(); + + if (speed == 0.0f && percent_x == 0.0f && percent_y == 0.0f) { + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_13); + } + + kind = player->item_kind; + getkind = Player_actor_Get_ItemKind(actor, player->now_main_index); + if (kind != getkind) { + Player_actor_request_main_walk_all(game, NULL, 0.0f, 0, mPlayer_REQUEST_PRIORITY_22); + } + } +} + +static void Player_actor_main_Ready_walk_net(ACTOR* actor, GAME* game) { + f32 frame; + f32 calc_frame; + + Player_actor_Movement_Ready_walk_net(actor, game, &frame); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Ready_walk_net(actor, &calc_frame, frame); + Player_actor_SearchAnimation_Ready_walk_net(actor, game, calc_frame); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Ready_walk_net(actor, game); + Player_actor_BGcheck_Ready_walk_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReady_walk_net(actor, game); +} diff --git a/src/m_player_main_recieve.c_inc b/src/m_player_main_recieve.c_inc new file mode 100644 index 00000000..c340e063 --- /dev/null +++ b/src/m_player_main_recieve.c_inc @@ -0,0 +1,99 @@ +static int Player_actor_request_main_recieve(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RECIEVE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_recieve_c* req_recieve_p = &player->requested_main_index_data.recieve; + + Player_actor_request_main_index(game, mPlayer_INDEX_RECIEVE, priority); + req_recieve_p->talk_actor = talk_actor_p; + req_recieve_p->turn_flag = turn_flag; + req_recieve_p->prev_main_index = ret_main_index; + req_recieve_p->item = item; + req_recieve_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Recieve(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_recieve_c* req_recieve_p = &player->requested_main_index_data.recieve; + mPlayer_main_recieve_c* main_recieve_p = &player->main_data.recieve; + mActor_name_t item; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + item = req_recieve_p->item; + main_recieve_p->talk_actor_p = req_recieve_p->talk_actor; + main_recieve_p->turn_flag = req_recieve_p->turn_flag; + main_recieve_p->ret_main_index = req_recieve_p->prev_main_index; + main_recieve_p->item = item; + main_recieve_p->surface_flag = req_recieve_p->on_surface_flag; + + if (Player_actor_check_item_is_fish(item)) { + anim0_idx = mPlayer_ANIM_GET_PULL_F1; + } else if (main_recieve_p->surface_flag) { + anim0_idx = mPlayer_ANIM_RETURN_MAIL2; + } else { + anim0_idx = mPlayer_ANIM_GET_PULL1; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_Change_ItemParent(actorx); + Player_actor_Set_item_matrix_set(actorx); +} + +static void Player_actor_Movement_Recieve(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Recieve(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Recieve(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromRecieve(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + int after_mode = Common_Get(clip).handOverItem_clip->player_after_mode; + mPlayer_main_recieve_c* main_recieve_p = &player->main_data.recieve; + ACTOR* talk_actor_p = main_recieve_p->talk_actor_p; + int turn_flag = main_recieve_p->turn_flag; + int ret_main_index = main_recieve_p->ret_main_index; + mActor_name_t item = main_recieve_p->item; + + Player_actor_SettleRequestMainIndexPriority(actorx); + switch (after_mode) { + case aHOI_REQUEST_PUTAWAY: + Player_actor_request_main_recieve_putaway(game, talk_actor_p, turn_flag, ret_main_index, item, + main_recieve_p->surface_flag, mPlayer_REQUEST_PRIORITY_19); + break; + } + } +} + +static void Player_actor_main_Recieve(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Recieve(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Recieve(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Recieve(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Set_item_matrix_set(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRecieve(actorx, game, end_flag); +} diff --git a/src/m_player_main_recieve_putaway.c_inc b/src/m_player_main_recieve_putaway.c_inc new file mode 100644 index 00000000..81ce25d6 --- /dev/null +++ b/src/m_player_main_recieve_putaway.c_inc @@ -0,0 +1,101 @@ +static int Player_actor_request_main_recieve_putaway(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RECIEVE_PUTAWAY, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_recieve_putaway_c* req_recieve_putaway_p = &player->requested_main_index_data.recieve_putaway; + + Player_actor_request_main_index(game, mPlayer_INDEX_RECIEVE_PUTAWAY, priority); + req_recieve_putaway_p->talk_actor = talk_actor_p; + req_recieve_putaway_p->turn_flag = turn_flag; + req_recieve_putaway_p->prev_main_index = ret_main_index; + req_recieve_putaway_p->item = item; + req_recieve_putaway_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Recieve_putaway(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_recieve_putaway_c* req_recieve_putaway_p = &player->requested_main_index_data.recieve_putaway; + mPlayer_main_recieve_putaway_c* main_recieve_putaway_p = &player->main_data.recieve_putaway; + mActor_name_t item; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + item = req_recieve_putaway_p->item; + main_recieve_putaway_p->talk_actor_p = req_recieve_putaway_p->talk_actor; + main_recieve_putaway_p->turn_flag = req_recieve_putaway_p->turn_flag; + main_recieve_putaway_p->ret_main_index = req_recieve_putaway_p->prev_main_index; + main_recieve_putaway_p->surface_flag = req_recieve_putaway_p->on_surface_flag; + + if (Player_actor_check_item_is_fish(item)) { + anim0_idx = mPlayer_ANIM_GET_PUTAWAY_F1; + } else if (main_recieve_putaway_p->surface_flag) { + anim0_idx = mPlayer_ANIM_RETURN_MAIL3; + } else { + anim0_idx = mPlayer_ANIM_GET_PUTAWAY1; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); + Player_actor_CHange_TradingItemMode(actorx, aHOI_REQUEST_PUTAWAY); + Player_actor_Set_item_matrix_set(actorx); + Player_actor_sound_GASAGOSO(actorx); +} + +static void Player_actor_settle_main_Recieve_putaway(ACTOR* actorx, GAME* game) { + Player_actor_Unset_item_matrix_set(actorx); +} + +static void Player_actor_Movement_Recieve_putaway(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Recieve_putaway(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Recieve_putaway(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromRecieve_putaway(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + int after_mode = Common_Get(clip).handOverItem_clip->player_after_mode; + mPlayer_main_recieve_putaway_c* main_recieve_putaway_p = &player->main_data.recieve_putaway; + int ret_main_index = main_recieve_putaway_p->ret_main_index; + + Player_actor_SettleRequestMainIndexPriority(actorx); + if (ret_main_index != mPlayer_INDEX_TALK) { + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } else { + Player_actor_request_main_talk_all(game, main_recieve_putaway_p->talk_actor_p, + main_recieve_putaway_p->turn_flag, -12.0f, FALSE, + mPlayer_REQUEST_PRIORITY_19); + } + } +} + +static void Player_actor_main_Recieve_putaway(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Recieve_putaway(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Recieve_putaway(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Recieve_putaway(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Set_item_matrix_set(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRecieve_putaway(actorx, game, end_flag); +} diff --git a/src/m_player_main_recieve_stretch.c_inc b/src/m_player_main_recieve_stretch.c_inc new file mode 100644 index 00000000..f4ae3282 --- /dev/null +++ b/src/m_player_main_recieve_stretch.c_inc @@ -0,0 +1,91 @@ +static int Player_actor_request_main_recieve_stretch(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RECIEVE_STRETCH, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_recieve_stretch_c* req_recieve_stretch_p = &player->requested_main_index_data.recieve_stretch; + + Player_actor_request_main_index(game, mPlayer_INDEX_RECIEVE_STRETCH, priority); + req_recieve_stretch_p->talk_actor = talk_actor_p; + req_recieve_stretch_p->turn_flag = turn_flag; + req_recieve_stretch_p->prev_main_index = ret_main_index; + req_recieve_stretch_p->item = item; + req_recieve_stretch_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Recieve_stretch(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_recieve_stretch_c* req_recieve_stretch_p = &player->requested_main_index_data.recieve_stretch; + mPlayer_main_recieve_stretch_c* main_recieve_stretch_p = &player->main_data.recieve_stretch; + mActor_name_t item; + int anim0_idx; + int anim1_idx; + int part_table_idx; + + item = req_recieve_stretch_p->item; + main_recieve_stretch_p->talk_actor_p = req_recieve_stretch_p->talk_actor; + main_recieve_stretch_p->turn_flag = req_recieve_stretch_p->turn_flag; + main_recieve_stretch_p->ret_main_index = req_recieve_stretch_p->prev_main_index; + main_recieve_stretch_p->item = item; + main_recieve_stretch_p->surface_flag = req_recieve_stretch_p->on_surface_flag; + + if (Player_actor_check_item_is_fish(item)) { + anim0_idx = mPlayer_ANIM_GET_F1; + } else if (main_recieve_stretch_p->surface_flag) { + anim0_idx = mPlayer_ANIM_RETURN_MAIL1; + } else { + anim0_idx = mPlayer_ANIM_GET1; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, cKF_FRAMECONTROL_STOP, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Recieve_stretch(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Recieve_stretch(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Recieve_stretch(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromRecieve_stretch(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + mPlayer_main_recieve_stretch_c* main_recieve_stretch_p = &player->main_data.recieve_stretch; + ACTOR* talk_actor_p = main_recieve_stretch_p->talk_actor_p; + int turn_flag = main_recieve_stretch_p->turn_flag; + int ret_main_index = main_recieve_stretch_p->ret_main_index; + mActor_name_t item = main_recieve_stretch_p->item; + + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_recieve(game, talk_actor_p, turn_flag, ret_main_index, item, + main_recieve_stretch_p->surface_flag, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Recieve_stretch(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Recieve_stretch(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Recieve_stretch(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Recieve_stretch(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRecieve_stretch(actorx, game, end_flag); +} diff --git a/src/m_player_main_recieve_wait.c_inc b/src/m_player_main_recieve_wait.c_inc new file mode 100644 index 00000000..1b82f765 --- /dev/null +++ b/src/m_player_main_recieve_wait.c_inc @@ -0,0 +1,78 @@ +static int Player_actor_request_main_recieve_wait(GAME* game, ACTOR* talk_actor_p, int turn_flag, int ret_main_index, + mActor_name_t item, int surface_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RECIEVE_WAIT, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_recieve_wait_c* req_recieve_wait_p = &player->requested_main_index_data.recieve_wait; + + Player_actor_request_main_index(game, mPlayer_INDEX_RECIEVE_WAIT, priority); + req_recieve_wait_p->talk_actor = talk_actor_p; + req_recieve_wait_p->turn_flag = turn_flag; + req_recieve_wait_p->prev_main_index = ret_main_index; + req_recieve_wait_p->item = item; + req_recieve_wait_p->on_surface_flag = surface_flag; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Recieve_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_recieve_wait_c* req_recieve_wait_p = &player->requested_main_index_data.recieve_wait; + mPlayer_main_recieve_wait_c* main_recieve_wait_p = &player->main_data.recieve_wait; + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + main_recieve_wait_p->talk_actor_p = req_recieve_wait_p->talk_actor; + main_recieve_wait_p->turn_flag = req_recieve_wait_p->turn_flag; + main_recieve_wait_p->ret_main_index = req_recieve_wait_p->prev_main_index; + main_recieve_wait_p->item = req_recieve_wait_p->item; + main_recieve_wait_p->surface_flag = req_recieve_wait_p->on_surface_flag; + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Recieve_wait(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_CulcAnimation_Recieve_wait(ACTOR* actorx) { + f32 dummy; + + Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Recieve_wait(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromRecieve_wait(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_TradingItemMode(aHOI_REQUEST_TRANS_WAIT) || + Player_actor_Check_TradingItemMode(aHOI_REQUEST_RETURN_WAIT)) { + mPlayer_main_recieve_wait_c* main_recieve_wait_p = &player->main_data.recieve_wait; + ACTOR* talk_actor_p = main_recieve_wait_p->talk_actor_p; + int turn_flag = main_recieve_wait_p->turn_flag; + int ret_main_index = main_recieve_wait_p->ret_main_index; + mActor_name_t item = main_recieve_wait_p->item; + + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_recieve_stretch(game, talk_actor_p, turn_flag, ret_main_index, item, + main_recieve_wait_p->surface_flag, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Recieve_wait(ACTOR* actorx, GAME* game) { + Player_actor_Movement_Recieve_wait(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Recieve_wait(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Recieve_wait(actorx, game); + Player_actor_BGcheck_Wait(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRecieve_wait(actorx, game); +} diff --git a/src/m_player_main_reflect_axe.c_inc b/src/m_player_main_reflect_axe.c_inc new file mode 100644 index 00000000..3784efd3 --- /dev/null +++ b/src/m_player_main_reflect_axe.c_inc @@ -0,0 +1,229 @@ +static void Player_actor_request_main_reflect_axe_common(mPlayer_request_reflect_axe_c* req_axe, const xyz_t* pos, + mActor_name_t hit_item, u16 damage_no, ACTOR* hit_actor) { + req_axe->goal_pos = *pos; + req_axe->hit_item = hit_item; + req_axe->hit_actor = hit_actor; + req_axe->axe_damage_no = damage_no; +} + +static int Player_actor_request_main_reflect_axe_all(GAME* game, const xyz_t* pos, mActor_name_t hit_item, + u16 damage_no, ACTOR* hit_actor, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_REFLECT_AXE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_reflect_axe_common(&player->requested_main_index_data.reflect_axe, pos, hit_item, + damage_no, hit_actor); + Player_actor_request_main_index(game, mPlayer_INDEX_REFLECT_AXE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Reflect_axe_common(mPlayer_request_reflect_axe_c* req_axe, + mPlayer_main_reflect_axe_c* main_axe) { + main_axe->axe_common.target_pos = req_axe->goal_pos; + main_axe->reflect_actor_p = req_axe->hit_actor; + main_axe->axe_common.item = req_axe->hit_item; + main_axe->axe_common.axe_damage_no = req_axe->axe_damage_no; +} + +static void Player_actor_setup_main_Reflect_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_reflect_axe_c* main_axe = &player->main_data.reflect_axe; + mPlayer_request_reflect_axe_c* req_axe = &player->requested_main_index_data.reflect_axe; + + Player_actor_setup_main_Reflect_axe_common(req_axe, main_axe); + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_AXE_HANE1, mPlayer_ANIM_AXE_HANE1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Reflect_axe(ACTOR* actor, GAME* game) { + actor->speed = 0.0f; + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_Movement_Reflect_axe_common(ACTOR* actor, mPlayer_main_axe_common_c* axe_common_p, + int priority) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 cur = player->keyframe0.frame_control.current_frame; + + Player_actor_Movement_axe_common(actor, &axe_common_p->target_pos); + + if (cur < 15.0f) { + actor->world.angle.y = actor->shape_info.rotation.y; + } +} + +static void Player_actor_Movement_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int flag) { + Player_actor_Movement_Reflect_axe_common(actor, &main_axe->axe_common, flag); +} + +static int Player_actor_CulcAnimation_Reflect_axe(ACTOR* actor, f32* frame_calc, int) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffectHit_Reflect_axe(ACTOR* actor, GAME* game, s16 arg2, int) { + Player_actor_SetEffectHit_axe_common(actor, game, arg2); +} + +static void Player_actor_SetEffect_Reflect_axe(ACTOR* actor, GAME* game, int arg) { + Player_actor_SetEffectHit_Reflect_axe(actor, game, 2, arg); + Player_actor_SetEffectStart_axe_common(actor, game); +} + +static void Player_actor_SetAngleSpeedF_Reflect_axe(ACTOR* actor, int) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + actor->speed = 4.8f; + actor->world.angle.y = actor->shape_info.rotation.y + 0x8000; + } +} + +static void Player_actor_SetOrderNPC_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int rock; + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + ACTOR* reflect_actor = main_axe->reflect_actor_p; + mActor_name_t item = main_axe->axe_common.item; + + if (reflect_actor != NULL) { + switch (reflect_actor->id) { + case mAc_PROFILE_SNOWMAN: + ((SNOWMAN_ACTOR*)reflect_actor)->unk_1F8 |= 2; + return; + + case mAc_PROFILE_BALL: + ((BALL_ACTOR*)reflect_actor)->unk208 |= 8; + return; + + default: + if (Player_actor_CheckAndSet_UZAI_forNpc(reflect_actor)) { + return; + } + } + } + + rock = FALSE; + + if (IS_ITEM_STONE_TC(item)) { + rock = TRUE; + } + + if (rock) { + if (Player_actor_Search_STONE_TC(actor, &main_axe->axe_common.target_pos)) { + return; + }; + } + } +} + +static void Player_actor_SetSound_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_SetSound_AXE_FURI_axe_common(actor); + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + ACTOR* reflect_actor = main_axe->reflect_actor_p; + + if (reflect_actor != NULL) { + Player_actor_set_viblation_Axe_soft(); + + switch (reflect_actor->id) { + case mAc_PROFILE_SNOWMAN: + return; + default: + Player_actor_sound_axe_ball_hit(actor); + break; + } + } else { + Player_actor_sound_AXE_HIT(actor, &main_axe->axe_common.target_pos); + Player_actor_set_viblation_Axe_hard(); + } + } +} + +static void Player_actor_ChangeItemNo_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { + Player_actor_ChangeItemNo_axe_common(actor, main_axe->axe_common.axe_damage_no); +} + +static void Player_actor_informed_insects_Reflect_axe(ACTOR* actor, mPlayer_main_reflect_axe_c* main_axe, int) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + if (Common_Get(clip).insect_clip != NULL && Common_Get(clip).insect_clip->set_pl_act_tim_proc != NULL) { + int ut_x; + int ut_z; + + mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->axe_common.target_pos); + Common_Get(clip).insect_clip->set_pl_act_tim_proc(1, ut_x, ut_z); + } + } +} + +static void Player_actor_SearchAnimation_Reflect_axe(ACTOR* actor, GAME* game, mPlayer_main_reflect_axe_c* main_axe, + int flag, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Reflect_axe(actor, game, flag); + Player_actor_SetAngleSpeedF_Reflect_axe(actor, flag); + Player_actor_SetOrderNPC_Reflect_axe(actor, main_axe, flag); + Player_actor_SetSound_Reflect_axe(actor, main_axe, flag); + Player_actor_Set_FootMark_Base1(actor, game, 0, 0); + Player_actor_ChangeItemNo_Reflect_axe(actor, main_axe, flag); + Player_actor_informed_insects_Reflect_axe(actor, main_axe, flag); + } +} + +static void Player_actor_ObjCheck_Reflect_axe(ACTOR* actor, GAME* game, int) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Reflect_axe(ACTOR* actor, int) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromReflect_axe(ACTOR* actor, GAME* game, int arg, int arg2) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + mPlayer_main_reflect_axe_c* main_swing = &player->main_data.reflect_axe; + + if (arg2 == 0) { + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 30.5f)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, 1); + + } else if ((fc->current_frame >= 31.0f) && + (!Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4)) && + ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY()))) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Reflect_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 frame_calc; + mPlayer_main_reflect_axe_c* main_axe = &player->main_data.reflect_axe; + int arg; + + Player_actor_Movement_Reflect_axe(actor, main_axe, 0); + Player_actor_Reinput_force_position_angle(actor, game); + arg = Player_actor_CulcAnimation_Reflect_axe(actor, &frame_calc, 0); + Player_actor_SearchAnimation_Reflect_axe(actor, game, main_axe, 0, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Reflect_axe(actor, game, 0); + Player_actor_BGcheck_Reflect_axe(actor, 0); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReflect_axe(actor, game, arg, 0); +} diff --git a/src/m_player_main_reflect_scoop.c_inc b/src/m_player_main_reflect_scoop.c_inc new file mode 100644 index 00000000..6f05b91e --- /dev/null +++ b/src/m_player_main_reflect_scoop.c_inc @@ -0,0 +1,290 @@ +static int Player_actor_request_main_reflect_scoop_all(GAME* game, const xyz_t* pos, mActor_name_t item, + ACTOR* hit_actor, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_REFLECT_SCOOP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.reflect_scoop.dig_pos = *pos; + player->requested_main_index_data.reflect_scoop.item = item; + player->requested_main_index_data.reflect_scoop.hit_actor = hit_actor; + + Player_actor_request_main_index(game, mPlayer_INDEX_REFLECT_SCOOP, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Reflect_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_reflect_scoop_c* main_scoop = &player->main_data.reflect_scoop; + mPlayer_request_reflect_scoop_c* req_scoop = &player->requested_main_index_data.reflect_scoop; + + main_scoop->target_pos = req_scoop->dig_pos; + main_scoop->item = req_scoop->item; + main_scoop->reflect_actor_p = req_scoop->hit_actor; + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_NOT_DIG1, mPlayer_ANIM_NOT_DIG1, 1.0f, 1.0f, 0.5f, -5.0f, + 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Reflect_scoop(ACTOR* actor, GAME* game) { + actor->speed = 0.0f; + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_Movement_Reflect_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + f32 cur_frame = fc->current_frame; + + Player_actor_Movement_axe_common(actor, &main_axe->axe_common.target_pos); + + if (cur_frame < 13.0f) { + actor->world.angle.y = actor->shape_info.rotation.y; + } +} + +static int Player_actor_CulcAnimation_Reflect_scoop(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffectHit_Reflect_scoop(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 13.0f)) { + u32 item; + s16 attr; + f32 sin; + f32 cos; + xyz_t* pos; + int check; + s16 rot; + int stone; + xyz_t ac_pos; + mPlayer_main_reflect_scoop_c* main_scoop; + ACTOR* reflected; + int col_tree; + + main_scoop = &player->main_data.reflect_scoop; + pos = &main_scoop->target_pos; + item = main_scoop->item; + reflected = main_scoop->reflect_actor_p; + + attr = -1; + check = IS_ITEM_COLLIDEABLE_TREE(item); + + if (check) { + int ut_x; + int ut_z; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, *pos)) { + Player_actor_Set_EffectBgTree(game, item, 3, ut_x, ut_z); + } + + attr = 7; + } + + stone = FALSE; + + if (IS_ITEM_STONE_TC(item)) { + stone = TRUE; + } + + if (stone) { + Player_actor_Search_STONE_TC(actor, pos); + if (attr < 0) { + attr = 7; + } + } + + if (reflected) { + switch (reflected->id) { + case mAc_PROFILE_SNOWMAN: + ((SNOWMAN_ACTOR*)reflected)->unk_1F8 |= 2; + break; + + case mAc_PROFILE_BALL: + ((BALL_ACTOR*)reflected)->unk208 |= 4; + break; + } + } + + rot = actor->shape_info.rotation.y; + ac_pos = actor->world.position; + + sin = sin_s(rot); + cos = cos_s(rot); + + ac_pos.x += (37.0f * sin) + (2.0f * cos); + ac_pos.z += (37.0f * cos) - (2.0f * sin); + + if (attr < 0 && (ITEM_NAME_GET_TYPE((u16)item) >= 4 || ITEM_NAME_GET_TYPE((u16)item) < 1)) { + attr = mCoBG_Wpos2Attribute(ac_pos, NULL); + } + + if (attr >= 0) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_DIG_SCOOP, ac_pos, 2, rot, game, RSV_NO, attr, 1); + } + } +} + +static void Player_actor_SetEffect_Reflect_scoop(ACTOR* actor, GAME* game) { + Player_actor_SetEffectHit_Reflect_scoop(actor, game); +} + +static void Player_actor_SetAngleSpeedF_Reflect_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 13.0f)) { + actor->speed = 4.8f; + actor->world.angle.y = actor->shape_info.rotation.y + 0x8000; + } +} + +static void Player_actor_SetOrderNPC_Reflect_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_reflect_scoop_c* main_scoop = &player->main_data.reflect_scoop; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 13.0f)) { + Player_actor_CheckAndSet_UZAI_forNpc(main_scoop->reflect_actor_p); + } +} + +static void Player_actor_SetSound_Reflect_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 13.0f)) { + mPlayer_main_reflect_scoop_c* main_scoop; + ACTOR* reflected; + u32 item; + xyz_t* pos; + int check; + + main_scoop = &player->main_data.reflect_scoop; + pos = &main_scoop->target_pos; + item = main_scoop->item; + reflected = main_scoop->reflect_actor_p; + + if (reflected == NULL) { + if (mCoBG_Wpos2Attribute(*pos, NULL) == mCoBG_ATTRIBUTE_BUSH) { + Player_actor_sound_scoop_shigemi(actor); + Player_actor_set_viblation_Reflect_scoop_soft(); + return; + } + } else { + Player_actor_set_viblation_Reflect_scoop_soft(); + switch (reflected->id) { + case mAc_PROFILE_SNOWMAN: + return; + + default: + Player_actor_sound_scoop_item_hit(actor); + break; + } + return; + } + check = IS_ITEM_COLLIDEABLE_TREE(item) ? TRUE : FALSE; + + if (check || item == DUMMY_RESERVE) { + Player_actor_sound_scoop_tree_hit(actor); + Player_actor_set_viblation_Reflect_scoop_hard(); + } else { + int type = ITEM_NAME_GET_TYPE(item); + switch (type) { + case NAME_TYPE_FTR0: + case NAME_TYPE_ITEM1: + case NAME_TYPE_FTR1: + Player_actor_sound_scoop_item_hit(actor); + Player_actor_set_viblation_Reflect_scoop_soft(); + + break; + default: + if (mCoBG_WoodSoundEffect(pos)) { + Player_actor_sound_scoop_tree_hit(actor); + Player_actor_set_viblation_Reflect_scoop_hard(); + } else { + Player_actor_sound_scoop_hit(actor); + Player_actor_set_viblation_Reflect_scoop_hard(); + } + break; + } + } + } +} + +static void Player_actor_informed_insects_Reflect_scoop(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 13.0f) && + Common_Get(clip).insect_clip != NULL && Common_Get(clip).insect_clip->set_pl_act_tim_proc != NULL) { + int ut_x; + int ut_z; + mPlayer_main_reflect_scoop_c* main_scoop = &player->main_data.reflect_scoop; + xyz_t pos = main_scoop->target_pos; + + mFI_Wpos2UtNum(&ut_x, &ut_z, pos); + Common_Get(clip).insect_clip->set_pl_act_tim_proc(2, ut_x, ut_z); + } +} + +static void Player_actor_SearchAnimation_Reflect_scoop(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Reflect_scoop(actor, game); + Player_actor_SetAngleSpeedF_Reflect_scoop(actor); + Player_actor_SetOrderNPC_Reflect_scoop(actor); + Player_actor_SetSound_Reflect_scoop(actor); + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_informed_insects_Reflect_scoop(actor); + } +} + +static void Player_actor_ObjCheck_Reflect_scoop(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Reflect_scoop(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromReflect_scoop(ACTOR* actor, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (end_flag != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 29.5f)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, TRUE); + } else { + f32 cur_frame = fc->current_frame; + + if (cur_frame >= 30.0f && !Player_actor_CheckAndRequest_main_scoop_all(game, 4) && + (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Reflect_scoop(ACTOR* actor, GAME* game) { + f32 frame_calc; + int end_flag; + + Player_actor_Movement_Reflect_scoop(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Reflect_scoop(actor, &frame_calc); + Player_actor_SearchAnimation_Reflect_scoop(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Reflect_scoop(actor, game); + Player_actor_BGcheck_Reflect_scoop(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReflect_scoop(actor, game, end_flag); +} diff --git a/src/m_player_main_refuse.c_inc b/src/m_player_main_refuse.c_inc new file mode 100644 index 00000000..1535c0c6 --- /dev/null +++ b/src/m_player_main_refuse.c_inc @@ -0,0 +1,47 @@ +static int Player_actor_request_main_refuse(GAME* game, int flag) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_REFUSE, flag) != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_REFUSE, flag); + return TRUE; + } + return FALSE; +} + +static void Player_actor_setup_main_Refuse(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Refuse(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + +static void Player_actor_CulcAnimation_Refuse(ACTOR* actor) { + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +static void Player_actor_ObjCheck_Refuse(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Refuse(ACTOR* actor) { + Player_actor_BGcheck_common_type2(actor); +} + +static void Player_actor_main_Refuse(ACTOR* actor, GAME* game) { + Player_actor_Movement_Refuse(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Refuse(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Refuse(actor, game); + Player_actor_BGcheck_Refuse(actor); + Player_actor_Item_main(actor, game); +} diff --git a/src/m_player_main_refuse_pickup.c_inc b/src/m_player_main_refuse_pickup.c_inc new file mode 100644 index 00000000..98810471 --- /dev/null +++ b/src/m_player_main_refuse_pickup.c_inc @@ -0,0 +1,82 @@ + +static int Player_actor_request_main_refuse_pickup_all(GAME* game, int flag) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_REFUSE_PICKUP, flag) != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_REFUSE_PICKUP, flag); + return TRUE; + } + return FALSE; +} + +static void Player_actor_Refuse_pickup_demo_ct(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + int msg; + rgba_t color; + + Player_actor_request_main_refuse_pickup_all(gamePT, 0x13); + + msg = (Common_Get(field_type) == 0) ? 0x17AD : 0x17AE; + + if (player->refuse_pickup_knife_fork_flag != FALSE) { + msg = 0x3B59; + } + + mDemo_Set_msg_num(msg); + mDemo_Set_talk_display_name(0); + mDemo_Set_ListenAble(); + + color.r = 255; + color.g = 255; + color.b = 20; + color.a = 255; + + mDemo_Set_talk_window_color(&color); +} + +static void Player_actor_setup_main_Refuse_pickup(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Refuse_pickup(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +} + +static void Player_actor_CulcAnimation_Refuse_pickup(ACTOR* actor) { + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +static void Player_actor_ObjCheck_Refuse_pickup(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Refuse_pickup(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromRefuse_pickup(ACTOR* actor, GAME* game) { + if (mDemo_Check(mDemo_TYPE_REPORT, actor) == 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); + } +} + +static void Player_actor_main_Refuse_pickup(ACTOR* actor, GAME* game) { + Player_actor_Movement_Refuse_pickup(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Refuse_pickup(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Refuse_pickup(actor, game); + Player_actor_BGcheck_Refuse_pickup(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromRefuse_pickup(actor, game); +} diff --git a/src/m_player_main_relax_rod.c_inc b/src/m_player_main_relax_rod.c_inc new file mode 100644 index 00000000..151ef8a1 --- /dev/null +++ b/src/m_player_main_relax_rod.c_inc @@ -0,0 +1,105 @@ +static int Player_actor_request_main_relax_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RELAX_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_RELAX_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Relax_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_relax_rod_c* main_relax = &player->main_data.relax_rod; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + main_relax->bee_flag = FALSE; + main_relax->mosquito_flag = FALSE; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMB_OPEN1, mPlayer_INDEX_WADE, -5.0f, 180.0f, 1); + Player_actor_InitAnimation_Base2(actor, game, eEC_EFFECT_TURI_MIZU, eEC_EFFECT_TURI_MIZU, 1.0f, 1.0f, 0.5f, -3.0f, + 1, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Relax_rod(ACTOR* actor) { + Player_actor_SetPlayerAngle_forUki(actor); + Player_actor_Movement_Base_Braking_common(actor, 0.32625002f); +} + +static int Player_actor_CulcAnimation_Relax_rod(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Relax_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Relax_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromRelax_rod(ACTOR* actor, GAME* game, int status) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + UKI_ACTOR* uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + + if (mPlib_check_player_warp_forEvent()) { + uki->command = 8; + } + + switch (status) { + case 3: + if (!mPlib_check_player_warp_forEvent()) { + uki->command = 3; + break; + } + + break; + + case 5: + Player_actor_request_main_vib_rod(game, mPlayer_REQUEST_PRIORITY_26); + break; + + case 6: + if (!mPlib_check_player_warp_forEvent()) { + Player_actor_request_main_collect_rod(game, mPlayer_REQUEST_PRIORITY_26); + } else { + uki->command = 7; + } + break; + + default: + + if (uki != NULL) { + if (Player_actor_CheckController_forRod(game)) { + if (!mPlib_check_player_warp_forEvent()) { + uki->command = 6; + } else { + uki->command = 7; + } + } else if (!mPlib_check_player_warp_forEvent() && + (player->main_data.relax_rod.bee_flag || player->main_data.relax_rod.mosquito_flag)) { + uki->command = 8; + uki->command = 7; + } + } + break; + } +} + +static void Player_actor_main_Relax_rod(ACTOR* actor, GAME* game) { + int status; + + Player_actor_Movement_Relax_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Relax_rod(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Relax_rod(actor, game); + Player_actor_BGcheck_Relax_rod(actor); + status = Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromRelax_rod(actor, game, status); + Player_actor_main_Relax_rod_other_func2(actor, game); +} diff --git a/src/m_player_main_release_creature.c_inc b/src/m_player_main_release_creature.c_inc new file mode 100644 index 00000000..b8859350 --- /dev/null +++ b/src/m_player_main_release_creature.c_inc @@ -0,0 +1,300 @@ +static int Player_actor_request_main_release_creature_all(GAME* game, int type, int gold_scoop_flag, + mPlayer_request_release_creature_u* release_data, + ACTOR* release_actor_p, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RELEASE_CREATURE, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_release_creature_c* req_release_creature_p = + &player->requested_main_index_data.release_creature; + + Player_actor_request_main_index(game, mPlayer_INDEX_RELEASE_CREATURE, prio); + req_release_creature_p->type = type; + req_release_creature_p->gold_scoop_flag = gold_scoop_flag; + req_release_creature_p->data = *release_data; + req_release_creature_p->actor = release_actor_p; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_request_main_release_creature_from_submenu(ACTOR* actorx, GAME* game) { + mPlayer_change_data_from_submenu_c* data_p = mPlib_Get_change_data_from_submenu_p(); + mPlayer_request_release_creature_c* req_release_creature_p = &data_p->request_main_data.release_creature; + + Player_actor_request_main_release_creature_all(game, req_release_creature_p->type, + req_release_creature_p->gold_scoop_flag, + &req_release_creature_p->data, NULL, mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Release_creature(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_release_creature_c* req_release_creature_p = &player->requested_main_index_data.release_creature; + mPlayer_main_release_creature_c* release_creature_p = &player->main_data.release_creature; + int type = req_release_creature_p->type; + int gold_scoop_flag = req_release_creature_p->gold_scoop_flag; + ACTOR* release_actor_p = req_release_creature_p->actor; + int anim1_idx; + int part_table_idx; + + if (release_actor_p == NULL) { + if (type == mPlayer_CREATURE_GYOEI) { + GAME_PLAY* play = (GAME_PLAY*)game; + mPlayer_request_release_creature_gyoei_c* gyoei_data_p = &req_release_creature_p->data.gyoei; + + release_actor_p = Actor_info_make_actor( + &play->actor_info, game, mAc_PROFILE_GYO_RELEASE, actorx->world.position.x, actorx->world.position.y, + actorx->world.position.z, 0, gyoei_data_p->angle_y, 0, play->block_table.block_x, + play->block_table.block_z, -1, EMPTY_NO, gyoei_data_p->_02, -1, -1); + } else if (type == mPlayer_CREATURE_INSECT) { + mPlayer_request_release_creature_insect_c* insect_data_p = &req_release_creature_p->data.insect; + + release_actor_p = + Common_Get(clip).insect_clip->make_actor_proc(game, insect_data_p->type, &insect_data_p->pos); + } else { + ACTOR* actor_p = player->balloon_actor; + + release_actor_p = actor_p; + if (actor_p != NULL) { + s_xyz angle; + f32 sin; + f32 cos; + xyz_t pos; + + angle.x = 0; + angle.y = actorx->shape_info.rotation.y; + angle.z = 0; + + sin = sin_s(angle.y); + cos = cos_s(angle.y); + + pos = actorx->world.position; + pos.y += 17.5f; + pos.x += 12.5f * sin + 10.0f * cos; + pos.z += 10.0f * cos - 12.5f * sin; + + Ac_Balloon_request_fly(player->balloon_actor, game, req_release_creature_p->data.balloon.balloon_type, + &angle, 0, &pos, -1.0f, 7.0f); + } + } + + release_creature_p->actor_birth_flag = TRUE; + } else { + release_creature_p->actor_birth_flag = FALSE; + } + + release_creature_p->type = type; + release_creature_p->golden_scoop_flag = gold_scoop_flag; + release_creature_p->release_actor_p = release_actor_p; + release_creature_p->timer = 0.0f; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Release_creature(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + player->head_angle = ZeroSVec; +} + +static void Player_actor_Movement_Release_creature(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.23925f); +} + +static void Player_actor_CulcAnimation_Release_creature(ACTOR* actorx) { + f32 dummy; + + Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Release_creature(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Release_creature(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_add_calc_head_angle(ACTOR* actorx, const s_xyz* target_angle_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_release_creature_c* release_creature_p = &player->main_data.release_creature; + s_xyz* head_angle_p = &player->head_angle; + + if (release_creature_p->type == mPlayer_CREATURE_BALLOON) { + if (target_angle_p->x != 0) { + add_calc_short_angle2(&head_angle_p->x, target_angle_p->x, 1.0f - sqrtf(0.75f), 500, 0); + } else { + add_calc_short_angle2(&head_angle_p->x, target_angle_p->x, 1.0f - sqrtf(0.5f), 500, 0); + } + + if (target_angle_p->y != 0) { + add_calc_short_angle2(&head_angle_p->y, target_angle_p->y, 1.0f - sqrtf(0.75f), 500, 0); + } else { + add_calc_short_angle2(&head_angle_p->y, target_angle_p->y, 1.0f - sqrtf(0.5f), 200, 0); + } + } else { + add_calc_short_angle2(&head_angle_p->x, target_angle_p->x, 1.0f - sqrtf(0.5f), 500, 0); + add_calc_short_angle2(&head_angle_p->y, target_angle_p->y, 1.0f - sqrtf(0.5f), 500, 0); + } +} + +static int Player_actor_Look_Release_creature(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_release_creature_c* release_creature_p = &player->main_data.release_creature; + ACTOR* actor_p; + int type = release_creature_p->type; + int exist_flag; + int ret = TRUE; + + if (type == mPlayer_CREATURE_GYOEI) { + if (release_creature_p->actor_birth_flag == FALSE) { + if (player->fishing_rod_actor_p != NULL) { + UKI_ACTOR* uki = (UKI_ACTOR*)player->fishing_rod_actor_p; + + actor_p = uki->child_actor; + release_creature_p->release_actor_p = actor_p; + } else { + actor_p = release_creature_p->release_actor_p; + } + } else { + actor_p = release_creature_p->release_actor_p; + } + } else { + actor_p = release_creature_p->release_actor_p; + } + + if (actor_p == NULL) { + Player_actor_add_calc_head_angle(actorx, &ZeroSVec); + return TRUE; + } + + if (type == mPlayer_CREATURE_INSECT) { + aINS_INSECT_ACTOR* insect_actor = (aINS_INSECT_ACTOR*)actor_p; + + exist_flag = insect_actor->insect_flags.destruct == FALSE; + } else if (type == mPlayer_CREATURE_GYOEI) { + GYO_RELEASE_ACTOR* gyo_release = (GYO_RELEASE_ACTOR*)actor_p; + + exist_flag = gyo_release->exist_flag != FALSE; + } else if (type == mPlayer_CREATURE_BALLOON) { + BALLOON_ACTOR* balloon_actor = (BALLOON_ACTOR*)actor_p; + int main_mode = balloon_actor->main_mode; + int setup_mode = balloon_actor->setup_mode; + + if (main_mode == 1 || setup_mode >= 0) { + exist_flag = TRUE; + ret = FALSE; + } else { + exist_flag = FALSE; + } + } else { + Player_actor_add_calc_head_angle(actorx, &ZeroSVec); + return TRUE; + } + + if (exist_flag == FALSE) { + release_creature_p->release_actor_p = NULL; + Player_actor_add_calc_head_angle(actorx, &ZeroSVec); + return ret; + } else { + f32* timer_p = &release_creature_p->timer; + s_xyz angle = ZeroSVec; + + if (*timer_p < 60.0f) { + xyz_t dist; + f32 dist_xz; + + dist.x = actor_p->world.position.x - actorx->eye.position.x; + dist.y = actor_p->world.position.y - actorx->eye.position.y; + dist.z = actor_p->world.position.z - actorx->eye.position.z; + + if (type == mPlayer_CREATURE_BALLOON) { + dist.y += 50.0f; + } + + dist_xz = Math3DVecLength2D(dist.x, dist.z); + if ((dist_xz >= 18.0f && type != mPlayer_CREATURE_BALLOON) || + (dist_xz >= 10.0f && type == mPlayer_CREATURE_BALLOON)) { + int dist_angle_y = atans_table(dist.z, dist.x); + int diff_angle_y = dist_angle_y - actorx->shape_info.rotation.y; + int abs_diff_angle_y; + int dist_angle_x = atans_table(dist_xz, dist.y); + int diff_angle_x = dist_angle_x - actorx->shape_info.rotation.x; + int abs_diff_angle_x; + + if (diff_angle_y > DEG2SHORT_ANGLE2(180.0f)) { + diff_angle_y -= DEG2SHORT_ANGLE2(360.0f); + } else if (diff_angle_y < DEG2SHORT_ANGLE2(-180.0f)) { + diff_angle_y += DEG2SHORT_ANGLE2(360.0f); + } + + abs_diff_angle_y = ABS(diff_angle_y); + + if (abs_diff_angle_y < DEG2SHORT_ANGLE2(60.0f)) { + angle.x = dist_angle_y - actorx->shape_info.rotation.y; + } else if (diff_angle_y > 0) { + angle.x = DEG2SHORT_ANGLE2(60.0f); + } else { + angle.x = DEG2SHORT_ANGLE2(-60.0f); + } + + if (diff_angle_x > DEG2SHORT_ANGLE2(180.0f)) { + diff_angle_x -= DEG2SHORT_ANGLE2(360.0f); + } else if (diff_angle_x < DEG2SHORT_ANGLE2(-180.0f)) { + diff_angle_x += DEG2SHORT_ANGLE2(360.0f); + } + + abs_diff_angle_x = ABS(diff_angle_x); + + if (abs_diff_angle_x < DEG2SHORT_ANGLE2(30.0f)) { + angle.y = dist_angle_x - actorx->shape_info.rotation.x; + } else if (diff_angle_x > 0) { + angle.y = DEG2SHORT_ANGLE2(30.0f); + } else { + angle.y = DEG2SHORT_ANGLE2(-30.0f); + } + } + } + + Player_actor_add_calc_head_angle(actorx, &angle); + } + + return ret; +} + +static void Player_actor_request_proc_index_fromRelease_creature(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_release_creature_c* release_creature_p = &player->main_data.release_creature; + f32* timer_p = &release_creature_p->timer; + + (*timer_p) += 1.0f; + if (*timer_p >= 84.0f && end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + + if (release_creature_p->golden_scoop_flag == FALSE) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + Player_actor_request_main_demo_get_golden_item_all(game, mPlayer_GOLDEN_ITEM_TYPE_SHOVEL, + mPlayer_REQUEST_PRIORITY_34); + } + + *timer_p = 84.0f; + } +} + +static void Player_actor_main_Release_creature(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Release_creature(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Release_creature(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Release_creature(actorx, game); + Player_actor_BGcheck_Release_creature(actorx); + end_flag = Player_actor_Look_Release_creature(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRelease_creature(actorx, game, end_flag); +} diff --git a/src/m_player_main_remove_grass.c_inc b/src/m_player_main_remove_grass.c_inc new file mode 100644 index 00000000..3c1f5bf5 --- /dev/null +++ b/src/m_player_main_remove_grass.c_inc @@ -0,0 +1,104 @@ +static int Player_actor_request_main_remove_grass(GAME* game, const xyz_t* target_pos_p, const xyz_t* grass_pos_p) { + if (Player_actor_check_able_request_main_index_for_reset(mPlayer_INDEX_REMOVE_GRASS) == FALSE) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_remove_grass_c* req_remove_grass_p = &player->requested_main_index_data.remove_grass; + + req_remove_grass_p->target_pos = *target_pos_p; + req_remove_grass_p->grass_pos = *grass_pos_p; + Player_actor_request_main_index(game, mPlayer_INDEX_REMOVE_GRASS, mPlayer_REQUEST_PRIORITY_8); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Remove_grass(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_remove_grass_c* req_remove_grass_p = &player->requested_main_index_data.remove_grass; + mPlayer_main_remove_grass_c* main_remove_grass_p = &player->main_data.remove_grass; + int anim1_idx; + int part_table_idx; + + main_remove_grass_p->target_pos = req_remove_grass_p->target_pos; + main_remove_grass_p->grass_pos = req_remove_grass_p->grass_pos; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_ZASSOU1, -6.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_ZASSOU1, anim1_idx, 1.0f, 1.0f, 0.5f, -6.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Remove_grass(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Remove_grass(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ChangeFGNumber_Remove_grass(ACTOR* actorx, GAME* game) { + if (Common_Get(clip).bg_item_clip != NULL && Common_Get(clip).bg_item_clip->fly_entry_proc != NULL) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + if (Player_actor_Check_AnimationFrame(fc0_p, 17.0f)) { + mPlayer_main_remove_grass_c* main_remove_grass_p = &player->main_data.remove_grass; + xyz_t* grass_pos_p = &main_remove_grass_p->grass_pos; + xyz_t* target_pos_p = &main_remove_grass_p->target_pos; + mActor_name_t* fg_p = mFI_GetUnitFG(*target_pos_p); + + if (fg_p != NULL) { + if (IS_ITEM_GRASS(*fg_p) != FALSE) { + s16 angle_y = DEG2SHORT_ANGLE2(110.0f) + actorx->shape_info.rotation.y; + + Common_Get(clip).bg_item_clip->fly_entry_proc(*fg_p, grass_pos_p, angle_y); + eEC_CLIP->effect_make_proc(eEC_EFFECT_DIG_MUD, *grass_pos_p, 2, 0, game, RSV_NO, + mCoBG_Wpos2Attribute(*grass_pos_p, NULL), 8); + Player_actor_sound_zassou_nuku(grass_pos_p); + Player_actor_set_viblation_Remove_grass(); + } + } + } + } +} + +static void Player_actor_SearchAnimation_Remove_grass(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_ChangeFGNumber_Remove_grass(actorx, game); + } +} + +static void Player_actor_ObjCheck_Remove_grass(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Remove_grass(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromRemove_grass(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Remove_grass(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Remove_grass(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Remove_grass(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Remove_grass(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Remove_grass(actorx, game); + Player_actor_BGcheck_Remove_grass(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRemove_grass(actorx, game, end_flag); +} diff --git a/src/m_player_main_return_demo.c_inc b/src/m_player_main_return_demo.c_inc new file mode 100644 index 00000000..8b7ee99c --- /dev/null +++ b/src/m_player_main_return_demo.c_inc @@ -0,0 +1,74 @@ + +static int Player_actor_request_main_return_demo_all(GAME* game, int prev_index, f32 time, int priority) { + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_DEMO, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.return_demo.prev_main_index = prev_index; + player->requested_main_index_data.return_demo.time = time; + Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_DEMO, priority); + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Return_demo(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + player->main_data.return_demo.timer = 0.0f; + player->main_data.return_demo.max_timer = player->requested_main_index_data.return_demo.time; + player->main_data.return_demo.prev_main_index = player->requested_main_index_data.return_demo.prev_main_index; + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_CulcAnimation_Return_demo(ACTOR* actor) { + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +static void Player_actor_Movement_Return_demo(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + +static void Player_actor_ObjCheck_Return_demo(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Return_demo(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromReturn_demo(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 max_timer = player->main_data.return_demo.max_timer; + int prev = player->main_data.return_demo.prev_main_index; + + player->main_data.return_demo.timer += 1.0f; + + if (player->main_data.return_demo.timer >= max_timer) { + if (prev != mPlayer_INDEX_DEMO_WAIT) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); + } else { + Player_actor_request_main_demo_wait_all(game, FALSE, 0, 19); + } + } +} + +static void Player_actor_main_Return_demo(ACTOR* actor, GAME* game) { + Player_actor_Movement_Return_demo(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Return_demo(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Return_demo(actor, game); + Player_actor_BGcheck_Return_demo(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReturn_demo(actor, game); +} diff --git a/src/m_player_main_return_outdoor.c_inc b/src/m_player_main_return_outdoor.c_inc new file mode 100644 index 00000000..12c88e44 --- /dev/null +++ b/src/m_player_main_return_outdoor.c_inc @@ -0,0 +1,70 @@ +static int Player_actor_request_main_return_outdoor_all(GAME* game, int prev_index, f32 time, f32 arg5, int priority) { + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.return_outdoor.prev_main_index = prev_index; + player->requested_main_index_data.return_outdoor.time = time; + player->requested_main_index_data.return_outdoor._08 = arg5; + + Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_OUTDOOR, priority); + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Return_outdoor(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + f32 _08 = player->requested_main_index_data.return_outdoor._08; + + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + player->main_data.return_outdoor.timer = 0.0f; + player->main_data.return_outdoor.max_timer = player->requested_main_index_data.return_outdoor.time; + player->main_data.return_outdoor.prev_main_index = player->requested_main_index_data.return_outdoor.prev_main_index; + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, _08, part_table_idx); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_CulcAnimation_Return_outdoor(ACTOR* actor) { + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +static void Player_actor_Movement_Return_outdoor(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + +static void Player_actor_ObjCheck_Return_outdoor(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Return_outdoor(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromReturn_outdoor(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 max_timer = player->main_data.return_outdoor.max_timer; + int prev = player->main_data.return_outdoor.prev_main_index; + player->main_data.return_outdoor.timer += 1.0f; + + if (player->main_data.return_outdoor.timer >= max_timer) { + Player_actor_request_main_return_outdoor2_all(game, prev, mPlayer_INDEX_INTRO, 3.0f, -5.0f); + } +} + +static void Player_actor_main_Return_outdoor(ACTOR* actor, GAME* game) { + Player_actor_Movement_Return_outdoor(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Return_outdoor(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Return_outdoor(actor, game); + Player_actor_BGcheck_Return_outdoor(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReturn_outdoor(actor, game); +} diff --git a/src/m_player_main_return_outdoor2.c_inc b/src/m_player_main_return_outdoor2.c_inc new file mode 100644 index 00000000..be43d1e4 --- /dev/null +++ b/src/m_player_main_return_outdoor2.c_inc @@ -0,0 +1,76 @@ +static int Player_actor_request_main_return_outdoor2_all(GAME* game, int prev_index, int now_index, f32 time, + f32 arg5) { + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RETURN_OUTDOOR2, now_index)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.return_outdoor2.prev_main_index = prev_index; + player->requested_main_index_data.return_outdoor2.time = time; + player->requested_main_index_data.return_outdoor2._08 = arg5; + + Player_actor_request_main_index(game, mPlayer_INDEX_RETURN_OUTDOOR2, now_index); + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Return_outdoor2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + f32 _08 = player->requested_main_index_data.return_outdoor2._08; + + Player_actor_SetupItem_Base1(actor, 0, -5.0f, &anim_idx, &part_table_idx); + player->main_data.return_outdoor2.timer = 0.0f; + player->main_data.return_outdoor2.max_timer = player->requested_main_index_data.return_outdoor2.time; + player->main_data.return_outdoor2.prev_main_index = + player->requested_main_index_data.return_outdoor2.prev_main_index; + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, _08, part_table_idx); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_CulcAnimation_Return_outdoor2(ACTOR* actor) { + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +static void Player_actor_Movement_Return_outdoor2(ACTOR* actor) { + Player_actor_Movement_Base_Braking(actor); +} + +static void Player_actor_ObjCheck_Return_outdoor2(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Return_outdoor2(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromReturn_outdoor2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 max_timer = player->main_data.return_outdoor2.max_timer; + int prev = player->main_data.return_outdoor2.prev_main_index; + player->main_data.return_outdoor2.timer += 1.0f; + + if (player->main_data.return_outdoor2.timer >= max_timer) { + if (prev != mPlayer_INDEX_DEMO_WAIT) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); + } else { + Player_actor_request_main_demo_wait_all(game, FALSE, 0, 19); + } + } +} + +static void Player_actor_main_Return_outdoor2(ACTOR* actor, GAME* game) { + Player_actor_Movement_Return_outdoor2(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Return_outdoor2(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Return_outdoor2(actor, game); + Player_actor_BGcheck_Return_outdoor2(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromReturn_outdoor2(actor, game); +} diff --git a/src/m_player_main_roll_bed.c_inc b/src/m_player_main_roll_bed.c_inc new file mode 100644 index 00000000..019c7696 --- /dev/null +++ b/src/m_player_main_roll_bed.c_inc @@ -0,0 +1,111 @@ +static int Player_actor_Check_able_request_main_roll_bed(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int index = player->now_main_index; + + switch (index) { + case mPlayer_INDEX_WAIT_BED: + return TRUE; + default: + return FALSE; + } +} + +static int Player_actor_request_main_roll_bed(GAME* game, int direction, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_ROLL_BED, priority) && + Player_actor_Check_able_request_main_roll_bed(game)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.roll_bed.move_dir = direction; + Player_actor_request_main_index(game, mPlayer_INDEX_ROLL_BED, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Roll_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); +} + +static int Player_actor_Get_BasicPlayerAnimeIndex_Roll_bed(int direction, s16 angle) { + if (angle == 0) { + if (direction == 1) { + return mPlayer_ANIM_NEGAERI_R1; + } + if (direction == 2) { + return mPlayer_ANIM_NEGAERI_L1; + } + } else if (angle == 0x4000) { + if (direction == 3) { + return mPlayer_ANIM_NEGAERI_R1; + } + if (direction == 4) { + return mPlayer_ANIM_NEGAERI_L1; + } + } else if (angle == -0x8000) { + if (direction == 1) { + return mPlayer_ANIM_NEGAERI_L1; + } + if (direction == 2) { + return mPlayer_ANIM_NEGAERI_R1; + } + } else if (angle == -0x4000) { + if (direction == 3) { + return mPlayer_ANIM_NEGAERI_L1; + } + if (direction == 4) { + return mPlayer_ANIM_NEGAERI_R1; + } + } + + return mPlayer_ANIM_NEGAERI_R1; +} + +static void Player_actor_setup_main_Roll_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_roll_bed_c* req_roll = &player->requested_main_index_data.roll_bed; + int anim_idx; + + keyf = &player->keyframe0; + anim_idx = Player_actor_Get_BasicPlayerAnimeIndex_Roll_bed(req_roll->move_dir, actor->shape_info.rotation.y); + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 5.0f, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_BED_NEGAERI(actor); +} + +static int Player_actor_CulcAnimation_Roll_bed(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_Movement_Roll_bed(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_request_proc_index_fromRoll_bed(GAME* game, int arg) { + if (arg != 0) { + Player_actor_request_main_wait_bed(game, mPlayer_REQUEST_PRIORITY_26); + } +} + +static void Player_actor_main_Roll_bed(ACTOR* actor, GAME* game) { + int arg = Player_actor_CulcAnimation_Roll_bed(actor); + + Player_actor_Movement_Roll_bed(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromRoll_bed(game, arg); +} diff --git a/src/m_player_main_rotate_furniture.c_inc b/src/m_player_main_rotate_furniture.c_inc new file mode 100644 index 00000000..8331dbce --- /dev/null +++ b/src/m_player_main_rotate_furniture.c_inc @@ -0,0 +1,125 @@ +static int Player_actor_request_main_rotate_furniture(GAME* game, int ftr_no, s16 angle, xyz_t* pos, int type, + int priority) { + if (mPlib_get_player_actor_main_index(game) == mPlayer_INDEX_HOLD && + Player_actor_check_request_main_able(game, mPlayer_INDEX_ROTATE_FURNITURE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.rotate_furniture.ftrNo = ftr_no; + player->requested_main_index_data.rotate_furniture.angle_y = angle; + player->requested_main_index_data.rotate_furniture.player_pos = *pos; + player->requested_main_index_data.rotate_furniture.rotate_type = type; + + Player_actor_request_main_index(game, mPlayer_INDEX_ROTATE_FURNITURE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Rotate_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_rotate_furniture_c* main_rot = &player->main_data.rotate_furniture; + s16 angle; + int anim_type; + int rotate_type; + mPlayer_request_rotate_furniture_c* req_rot = &player->requested_main_index_data.rotate_furniture; + f32 x; + f32 z; + xyz_t pos; + + main_rot->ftr_no = req_rot->ftrNo; + + angle = req_rot->angle_y; + x = req_rot->player_pos.x; + z = req_rot->player_pos.z; + + actor->world.angle.y = angle; + actor->shape_info.rotation.y = angle; + actor->world.position.x = x; + actor->world.position.z = z; + + if (Common_Get(clip).my_room_clip != NULL) { + Common_Get(clip).my_room_clip->ftrId2wpos_proc(&pos, main_rot->ftr_no); + main_rot->pos.x = pos.x - actor->world.position.x; + main_rot->pos.z = pos.z - actor->world.position.z; + } + + rotate_type = req_rot->rotate_type; + + main_rot->rotate_type = rotate_type; + + if (rotate_type != 4) { + anim_type = mPlayer_ANIM_LTURN1; + } else { + anim_type = mPlayer_ANIM_RTURN1; + } + + Player_actor_InitAnimation_Base2(actor, game, anim_type, anim_type, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + main_rot->_10 = 0; + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Rotate_furniture(ACTOR* actor) { + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static int Player_actor_CulcAnimation_rotate_furniture(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ChangeAnimationHold_rotate_furniture(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0 && player->main_data.rotate_furniture._10 == 0) { + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_HOLD_WAIT1, mPlayer_ANIM_HOLD_WAIT1, 1.0f, 1.0f, + 0.5f, -12.0f, 0); + player->main_data.rotate_furniture._10 = 1; + } +} + +static void Player_actor_ObjCheck_rotate_furniture(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_rotate_furniture(ACTOR* actor) { + Player_actor_BGcheck_common_type3(actor); +} + +static void Player_actor_request_proc_index_fromRotate_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Common_Get(clip).my_room_clip != NULL) { + int ftr_no = player->main_data.rotate_furniture.ftr_no; + int judge = Common_Get(clip).my_room_clip->judge_player_action_proc(NULL, NULL, ftr_no); + + if (judge != player->main_data.rotate_furniture.rotate_type) { + int index = Player_actor_Get_Index_fromAngle(actor->world.angle.y); + int flags = 0; + + if (!player->main_data.rotate_furniture._10) { + flags |= 1; + } + + Player_actor_request_main_hold(game, ftr_no, index, &actor->world.position, -12.0f, flags, + mPlayer_REQUEST_PRIORITY_22); + } + } +} + +static void Player_actor_main_Rotate_furniture(ACTOR* actor, GAME* game) { + int arg; + + Player_actor_Movement_Rotate_furniture(actor); + Player_actor_Reinput_force_position_angle(actor, game); + arg = Player_actor_CulcAnimation_rotate_furniture(actor); + Player_actor_ChangeAnimationHold_rotate_furniture(actor, game, arg); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_rotate_furniture(actor, game); + Player_actor_BGcheck_rotate_furniture(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromRotate_furniture(actor, game); +} diff --git a/src/m_player_main_rotate_octagon.c_inc b/src/m_player_main_rotate_octagon.c_inc new file mode 100644 index 00000000..79e854be --- /dev/null +++ b/src/m_player_main_rotate_octagon.c_inc @@ -0,0 +1,100 @@ +static int Player_actor_request_main_rotate_octagon_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, + int ret_main_index, const xyz_t* pos_p, s16 angle_y, + int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_ROTATE_OCTAGON, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_rotate_octagon_c* req_rotate_octagon_p = &player->requested_main_index_data.rotate_octagon; + + Player_actor_request_main_index(game, mPlayer_INDEX_ROTATE_OCTAGON, priority); + + req_rotate_octagon_p->talk_actor = talk_actor_p; + req_rotate_octagon_p->turn_flag = turn_flag; + req_rotate_octagon_p->prev_main_index = ret_main_index; + req_rotate_octagon_p->pos = *pos_p; + req_rotate_octagon_p->angle_y = angle_y; + + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Rotate_octagon(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_rotate_octagon_c* req_rotate_octagon_p = &player->requested_main_index_data.rotate_octagon; + mPlayer_main_rotate_octagon_c* rotate_octagon_p = &player->main_data.rotate_octagon; + + rotate_octagon_p->talk_actor_p = req_rotate_octagon_p->talk_actor; + rotate_octagon_p->turn_flag = req_rotate_octagon_p->turn_flag; + rotate_octagon_p->return_main_index = req_rotate_octagon_p->prev_main_index; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_rotate_octagon_p->pos, + actorx->shape_info.rotation.y, req_rotate_octagon_p->angle_y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_FUKUBIKI1, mPlayer_ANIM_FUKUBIKI1, 1.0f, 1.0f, 0.5f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Rotate_octagon(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static void Player_actor_Movement_Rotate_octagon(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_CulcAnimation_Rotate_octagon(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Rotate_octagon(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Rotate_octagon(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromRotate_octagon(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_rotate_octagon_c* rotate_octagon_p = &player->main_data.rotate_octagon; + int return_main_index = rotate_octagon_p->return_main_index; + + Player_actor_SettleRequestMainIndexPriority(actorx); + if (return_main_index != mPlayer_INDEX_TALK) { + Player_actor_request_main_demo_wait_all(game, FALSE, 0, mPlayer_REQUEST_PRIORITY_19); + } else { + Player_actor_request_main_talk_all(game, rotate_octagon_p->talk_actor_p, rotate_octagon_p->turn_flag, -5.0f, + FALSE, mPlayer_REQUEST_PRIORITY_19); + } + } +} + +static void Player_actor_main_Rotate_octagon(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Rotate_octagon(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Rotate_octagon(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Rotate_octagon(actorx, game); + Player_actor_BGcheck_Rotate_octagon(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRotate_octagon(actorx, game, end_flag); +} diff --git a/src/m_player_main_rotate_umbrella.c_inc b/src/m_player_main_rotate_umbrella.c_inc new file mode 100644 index 00000000..d462506d --- /dev/null +++ b/src/m_player_main_rotate_umbrella.c_inc @@ -0,0 +1,71 @@ +static int Player_actor_request_main_rotate_umbrella_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_ROTATE_UMBRELLA, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_ROTATE_UMBRELLA, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Rotate_umbrella(ACTOR* actorx, GAME* game) { + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_UMB_ROT1, mPlayer_ANIM_UMB_ROT1, 1.0f, 1.0f, 1.0f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + eEC_CLIP->effect_make_proc(eEC_EFFECT_KASAMIZU, actorx->world.position, 2, actorx->shape_info.rotation.y, game, + RSV_NO, 0, 0); + Player_actor_sound_umbrella_rotate(actorx); +} + +static void Player_actor_Movement_Rotate_umbrella(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Rotate_umbrella(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_ObjCheck_Rotate_umbrella(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Rotate_umbrella(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromRotate_umbrella(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 19.5f)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_Set_status_for_bee(actorx, TRUE); + } else { + if (fc0_p->current_frame >= 20.0f && + Player_actor_CheckAndRequest_main_umbrella_all(game, mPlayer_REQUEST_PRIORITY_4) == FALSE) { + if (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY()) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } + } +} + +static void Player_actor_main_Rotate_umbrella(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Rotate_umbrella(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Rotate_umbrella(actorx, &last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_ObjCheck_Rotate_umbrella(actorx, game); + Player_actor_BGcheck_Rotate_umbrella(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromRotate_umbrella(actorx, game, end_flag); +} diff --git a/src/m_player_main_run.c_inc b/src/m_player_main_run.c_inc new file mode 100644 index 00000000..68214441 --- /dev/null +++ b/src/m_player_main_run.c_inc @@ -0,0 +1,124 @@ +static int Player_actor_request_main_run_all(GAME* game, f32 speed, int flags, int priority) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_RUN, priority)) { + player = GET_PLAYER_ACTOR_GAME(game); + Player_actor_request_main_index(game, mPlayer_INDEX_RUN, priority); + + player->requested_main_index_data.run.morph_speed = speed; + player->requested_main_index_data.run.flags = flags; + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Run_common(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.run.flags; + int anim_idx; + int part_table_idx; + f32 speed = player->requested_main_index_data.run.morph_speed; + f32 absspeed; + f32 frame = player->keyframe0.frame_control.current_frame; + + absspeed = ABS(speed); + + Player_actor_SetupItem_Base3(actor, mPlayer_ANIM_RUN1, -absspeed, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_RUN1, anim_idx, frame, 1.0f, 0.5f, speed, + part_table_idx); + + if (flags & 1) { + Player_actor_SetEffect_forTakeout_item(actor, game); + } + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_setup_main_Run(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Run_common(actor, game); +} + +static void Player_actor_CulcAnimation_Run(ACTOR* actor, f32 over_speed_normalize_NoneZero, f32* frame_calc) { + Player_actor_CulcAnimation_Walk(actor, over_speed_normalize_NoneZero, frame_calc); +} + +static void Player_actor_SetEffect_Run(ACTOR* actor, GAME* game, f32 left_target_frame, f32 right_target_frame) { + Player_actor_SetEffect_Walk(actor, game, left_target_frame, right_target_frame); +} + +static void Player_actor_SearchAnimation_Run(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_SetEffect_Walk(actor, game, 1.0f, 9.0f); + } +} + +static void Player_actor_Movement_Run(ACTOR* actor, GAME* game, f32* frame) { + Player_actor_Movement_Walk(actor, game, frame); +} + +static void Player_actor_ObjCheck_Run(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Run(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromRun_common(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 speed; + + Player_actor_Set_ScrollDemo_forWade(actor, game, mEv_CheckTitleDemo() <= 0); + + if (!actor->bg_collision_check.result.on_ground) { + Player_actor_request_main_fall_all(game, -5.0f, 1, mPlayer_REQUEST_PRIORITY_1); + } + + Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4); + + if (Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_4); + } + + if (Player_actor_CheckController_forRod(game) != 0) { + Player_actor_request_main_ready_rod(game, mPlayer_REQUEST_PRIORITY_4); + } + + Player_actor_CheckAndRequest_main_scoop_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_umbrella_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_shake_tree_all(game); + Player_actor_CheckAndRequest_main_pickup_all(game); + + speed = (player->keyframe0.frame_control.speed * player->keyframe0.frame_control.speed) / 0.048f; + + if (speed < 3.525f) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + + if (speed >= 4.875f) { + Player_actor_request_main_dash_all(game, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_request_proc_index_fromRun(ACTOR* actor, GAME* game) { + Player_actor_request_proc_index_fromRun_common(actor, game); +} + +static void Player_actor_main_Run(ACTOR* actor, GAME* game) { + f32 over_speed_normalize_NoneZero; + f32 frame_calc; + + Player_actor_Movement_Run(actor, game, &over_speed_normalize_NoneZero); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Run(actor, over_speed_normalize_NoneZero, &frame_calc); + Player_actor_SearchAnimation_Run(actor, game, frame_calc); + Player_actor_set_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Run(actor, game); + Player_actor_BGcheck_Run(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromRun(actor, game); +} diff --git a/src/m_player_main_shake_tree.c_inc b/src/m_player_main_shake_tree.c_inc new file mode 100644 index 00000000..ae309916 --- /dev/null +++ b/src/m_player_main_shake_tree.c_inc @@ -0,0 +1,172 @@ +static int Player_actor_request_main_shake_tree_all(GAME* game, const xyz_t* target_pos_p, mActor_name_t item, + int tree_ut_x, int tree_ut_z, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SHAKE_TREE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_shake_tree_c* req_shake_tree_p = &player->requested_main_index_data.shake_tree; + + req_shake_tree_p->pos = *target_pos_p; + req_shake_tree_p->item = item; + req_shake_tree_p->ut_x = tree_ut_x; + req_shake_tree_p->ut_z = tree_ut_z; + Player_actor_request_main_index(game, mPlayer_INDEX_SHAKE_TREE, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Shake_tree(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_shake_tree_c* req_shake_tree_p = &player->requested_main_index_data.shake_tree; + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + int anim1_idx; + int part_table_idx; + + main_shake_tree_p->target_pos = req_shake_tree_p->pos; + main_shake_tree_p->item = req_shake_tree_p->item; + main_shake_tree_p->tree_ut_x = req_shake_tree_p->ut_x; + main_shake_tree_p->tree_ut_z = req_shake_tree_p->ut_z; + main_shake_tree_p->bee_flag = FALSE; + main_shake_tree_p->bee_angle_y = 0; + main_shake_tree_p->bee_spawn_timer = 0; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_SHAKE1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_SHAKE1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_SHAKE_TREE); +} + +static void Player_actor_Movement_Shake_tree(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + + Player_actor_Movement_axe_common(actorx, &main_shake_tree_p->target_pos); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Shake_tree(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetEffect_Shake_tree(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 10.0f)) { + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + int ut_x = main_shake_tree_p->tree_ut_x; + int ut_z = main_shake_tree_p->tree_ut_z; + xyz_t* target_pos_p = &main_shake_tree_p->target_pos; + mActor_name_t item = main_shake_tree_p->item; + + if (IS_ITEM_COLLIDEABLE_TREE(item) != FALSE && ut_x >= 0 && ut_z >= 0) { + if (Player_actor_Set_shake_tree_table(actorx, game, item, ut_x, ut_z, FALSE)) { + Player_actor_sound_tree_yurasu(target_pos_p); + Player_actor_set_viblation_Shake_tree(); + + if (Common_Get(clip).bg_item_clip != NULL && + Common_Get(clip).bg_item_clip->item_tree_fruit_drop_proc != NULL) { + if (!IS_ITEM_BEE_TREE(item)) { + xyz_t drop_pos; + + Common_Get(clip).bg_item_clip->item_tree_fruit_drop_proc(item, ut_x, ut_z, &drop_pos); + } else if (mPlib_able_birth_bee()) { + main_shake_tree_p->bee_spawn_timer = 5; + } + } + } + } + } +} + +static void Player_actor_SetSound_Shake_tree(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + + if (main_shake_tree_p->bee_flag) { + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 18.0f)) { + mBGMPsComp_make_ps_quiet(0); + } + } +} + +static void Player_actor_SearchAnimation_Shake_tree(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetEffect_Shake_tree(actorx, game); + Player_actor_SetSound_Shake_tree(actorx); + } +} + +static void Player_actor_Check_BirthBee_Shake_tree(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + int* spawn_timer_p = &main_shake_tree_p->bee_spawn_timer; + + if (*spawn_timer_p > 0) { + mActor_name_t item = main_shake_tree_p->item; + int ut_x = main_shake_tree_p->tree_ut_x; + int ut_z = main_shake_tree_p->tree_ut_z; + + if (Player_actor_Check_BirthBee_common(actorx, item, ut_x, ut_z, &main_shake_tree_p->bee_angle_y)) { + *spawn_timer_p = 0; + main_shake_tree_p->bee_flag = TRUE; + } else { + (*spawn_timer_p)--; + } + } +} + +static void Player_actor_ObjCheck_Shake_tree(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Shake_tree(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromShake_tree(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shake_tree_c* main_shake_tree_p = &player->main_data.shake_tree; + + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32 cur_frame = fc0_p->current_frame; + + if (main_shake_tree_p->bee_flag) { + if (cur_frame >= 30.0f) { + Player_actor_request_main_shock_all(game, 24.0f, main_shake_tree_p->bee_angle_y, TRUE, FALSE, + mPlayer_REQUEST_PRIORITY_21); + } + } else if (Player_actor_Check_AnimationFrame(fc0_p, 29.5f)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_Set_status_for_bee(actorx, TRUE); + } else if (cur_frame >= 30.0f) { + if (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY()) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Shake_tree(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Shake_tree(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Shake_tree(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Shake_tree(actorx, game, last_anim0_cur_frame); + Player_actor_Check_BirthBee_Shake_tree(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_ObjCheck_Shake_tree(actorx, game); + Player_actor_BGcheck_Shake_tree(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromShake_tree(actorx, game, end_flag); +} diff --git a/src/m_player_main_shock.c_inc b/src/m_player_main_shock.c_inc new file mode 100644 index 00000000..43d6ea56 --- /dev/null +++ b/src/m_player_main_shock.c_inc @@ -0,0 +1,174 @@ +static int Player_actor_request_main_shock_all(GAME* game, f32 start_time, s16 target_angle_y, s8 bee_chase_bgm_flag, + int axe_flag, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SHOCK, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_shock_c* req_shock_p = &player->requested_main_index_data.shock; + + req_shock_p->start_time = start_time; + req_shock_p->target_angle_y = target_angle_y; + req_shock_p->bee_chase_bgm_flag = bee_chase_bgm_flag; + req_shock_p->axe_flag = axe_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_SHOCK, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Shock(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_shock_c* req_shock_p = &player->requested_main_index_data.shock; + mPlayer_main_shock_c* shock_p = &player->main_data.shock; + int anim1_idx; + int part_table_idx; + + shock_p->start_time = req_shock_p->start_time; + shock_p->target_angle_y = req_shock_p->target_angle_y; + shock_p->timer = 0.0f; + shock_p->end_time = req_shock_p->start_time + 44.0f; + shock_p->bee_chase_bgm_flag = req_shock_p->bee_chase_bgm_flag; + shock_p->axe_flag = req_shock_p->axe_flag; + shock_p->bgm_stop_flag = FALSE; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Shock(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shock_c* shock_p = &player->main_data.shock; + + if (shock_p->bee_chase_bgm_flag) { + player->bee_chase_bgm_flag = TRUE; + mBGMPsComp_delete_ps_quiet(); + mBGMPsComp_make_ps_happening(BGM_BEE_CHASE, 0x168); + } +} + +static void Player_actor_Movement_Shock(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shock_c* shock_p = &player->main_data.shock; + + Player_actor_Movement_Base_Braking(actorx); + add_calc_short_angle2(&actorx->shape_info.rotation.y, shock_p->target_angle_y, 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Shock(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_Set_FeelEffect_Shock(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + + if (anim0_idx == mPlayer_ANIM_GAAAN1) { + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 5.0f)) { + player->draw_effect_idx = eEC_EFFECT_SHOCK + 1; + } + } +} + +static void Player_actor_SearchAnimation_Shock(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FeelEffect_Shock(actorx); + } +} + +static void Player_actor_ChangeAnimation_Shock(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int now_anim_idx = player->animation0_idx; + int anim0_idx; + int anim1_idx; + int mode; + int part_table_idx; + mPlayer_main_shock_c* shock_p = &player->main_data.shock; + + if (now_anim_idx == mPlayer_ANIM_WAIT1) { + if (shock_p->timer >= shock_p->start_time) { + anim0_idx = mPlayer_ANIM_GAAAN1; + mode = cKF_FRAMECONTROL_STOP; + } else { + return; + } + + } else if (now_anim_idx == mPlayer_ANIM_GAAAN1) { + if (end_flag) { + anim0_idx = mPlayer_ANIM_GAAAN2; + mode = cKF_FRAMECONTROL_REPEAT; + } else { + return; + } + + } else { + return; + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, mode, part_table_idx); +} + +static void Player_actor_set_eye_pattern_Shock(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int now_anim_idx = player->animation0_idx; + + if (now_anim_idx == mPlayer_ANIM_GAAAN1) { + Player_actor_set_tex_anime_pattern(actorx); + } else if (now_anim_idx == mPlayer_ANIM_GAAAN2) { + Player_actor_set_eye_pattern(actorx, 6); + Player_actor_set_mouth_pattern(actorx, 5); + } else { + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_set_mouth_pattern(actorx, 0); + } +} + +static void Player_actor_ObjCheck_Shock(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Shock(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromShock(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_shock_c* shock_p = &player->main_data.shock; + f32* timer_p = &shock_p->timer; + + if (*timer_p < shock_p->end_time) { + (*timer_p) += 1.0f; + if (shock_p->bee_chase_bgm_flag && shock_p->axe_flag && shock_p->bgm_stop_flag == FALSE) { + if (*timer_p >= 12.0f) { + mBGMPsComp_make_ps_quiet(0); + shock_p->bgm_stop_flag = TRUE; + } + } + } else { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Shock(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Shock(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Shock(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Shock(actorx, last_anim0_cur_frame); + Player_actor_ChangeAnimation_Shock(actorx, game, end_flag); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Shock(actorx); + Player_actor_ObjCheck_Shock(actorx, game); + Player_actor_BGcheck_Shock(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromShock(actorx, game); +} diff --git a/src/m_player_main_sitdown.c_inc b/src/m_player_main_sitdown.c_inc new file mode 100644 index 00000000..836a0829 --- /dev/null +++ b/src/m_player_main_sitdown.c_inc @@ -0,0 +1,118 @@ +static int Player_actor_Check_able_request_main_sitdown(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int index = player->now_main_index; + + switch (index) { + case mPlayer_INDEX_WAIT: + case mPlayer_INDEX_WALK: + case mPlayer_INDEX_RUN: + case mPlayer_INDEX_DASH: + return TRUE; + + default: + return FALSE; + } +} + +static int Player_actor_request_main_sitdown(GAME* game, int index, const xyz_t* pos, int ftr_no, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SITDOWN, priority) && + Player_actor_Check_able_request_main_sitdown(game)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.sitdown.angle = Player_actor_Get_Angle_fromIndex(index); + player->requested_main_index_data.sitdown.pos = *pos; + player->requested_main_index_data.sitdown.pos.y = player->actor_class.world.position.y; + + player->requested_main_index_data.sitdown.ftrID = ftr_no; + Player_actor_request_main_index(game, mPlayer_INDEX_SITDOWN, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Sitdown(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); + actor->world.angle.y = actor->shape_info.rotation.y; + actor->shape_info.shadow_size_change_rate = 0.0f; + actor->shape_info.shadow_alpha_change_rate = 0.0f; +} + +static void Player_actor_setup_main_Sitdown(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_main_sitdown_c* main_sitdown = &player->main_data.sitdown; + mPlayer_request_sitdown_c* req_sitdown = &player->requested_main_index_data.sitdown; + s16 angle; + + keyf = &player->keyframe0; + + main_sitdown->ftrID = req_sitdown->ftrID; + angle = req_sitdown->angle; + + actor->world.angle.y = angle; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &req_sitdown->pos, actor->shape_info.rotation.y, + req_sitdown->angle, 5.0f, keyf, 5); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_SITDOWN1, mPlayer_ANIM_SITDOWN1, 1.0f, 1.0f, 0.5f, -3.0f, + 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_JUMP(actor); +} + +static int Player_actor_CulcAnimation_Sitdown(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Sitdown(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 18.0f)) { + Player_actor_sound_SIT(actor, player->main_data.sitdown.ftrID); + } +} + +static void Player_actor_SearchAnimation_Sitdown(ACTOR* actor, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Sitdown(actor); + } + Player_actor_DisappearShadow_fromAnimationFrame(actor, 0.0f, 15.0f); +} + +static void Player_actor_Movement_Sitdown(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_ObjCheck_Sitdown(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_request_proc_index_fromSitdown(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + Player_actor_request_main_sitdown_wait(game, player->main_data.sitdown.ftrID, mPlayer_REQUEST_PRIORITY_21); + } +} + +static void Player_actor_main_Sitdown(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Sitdown(actor, &frame_calc); + + Player_actor_SearchAnimation_Sitdown(actor, frame_calc); + Player_actor_Movement_Sitdown(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Sitdown(actor, game); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSitdown(actor, game, arg); +} diff --git a/src/m_player_main_sitdown_wait.c_inc b/src/m_player_main_sitdown_wait.c_inc new file mode 100644 index 00000000..f2582c6d --- /dev/null +++ b/src/m_player_main_sitdown_wait.c_inc @@ -0,0 +1,57 @@ +static int Player_actor_request_main_sitdown_wait(GAME* game, int ftr_no, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SITDOWN_WAIT, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.sitdown_wait.ftrID = ftr_no; + + Player_actor_request_main_index(game, mPlayer_INDEX_SITDOWN_WAIT, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Sitdown_wait(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_sitdown_wait_c* main_sitdown_wait = &player->main_data.sitdown_wait; + mPlayer_request_sitdown_wait_c* req_sitdown_wait = &player->requested_main_index_data.sitdown_wait; + + main_sitdown_wait->ftrID = req_sitdown_wait->ftrID; + + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_SITDOWN_WAIT1, mPlayer_ANIM_SITDOWN_WAIT1, 1.0f, 1.0f, + 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Sitdown_wait(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static int Player_actor_CulcAnimation_Sitdown_wait(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_request_proc_index_fromSitdown_wait(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int ftr_no = player->main_data.sitdown_wait.ftrID; + + if ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY())) { + Player_actor_request_main_standup(game, ftr_no, mPlayer_REQUEST_PRIORITY_22); + } +} + +static void Player_actor_main_Sitdown_wait(ACTOR* actor, GAME* game) { + Player_actor_Movement_Sitdown_wait(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Sitdown_wait(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSitdown_wait(actor, game); + Player_actor_main_Sitdown_wait_other_func2(actor, game); +} diff --git a/src/m_player_main_slip_net.c_inc b/src/m_player_main_slip_net.c_inc new file mode 100644 index 00000000..e015952f --- /dev/null +++ b/src/m_player_main_slip_net.c_inc @@ -0,0 +1,122 @@ +static int Player_actor_request_main_slip_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SLIP_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + s8 item = Player_actor_Get_ItemKind(&player->actor_class, player->now_main_index); + int net = FALSE; + + if (mPlayer_ITEM_IS_NET(item)) { + net = TRUE; + } + + if (net != FALSE) { + Player_actor_request_main_index(game, mPlayer_INDEX_SLIP_NET, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Slip_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + mPlayer_main_slip_net_c* main_net = &player->main_data.slip_net; + + main_net->_00 = 0.0f; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_KAMAE_SLIP_M1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_KAMAE_SLIP_M1, mPlayer_ANIM_KAMAE_SLIP_M1, 1.0f, 1.0f, + 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_slip(actor); + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TURN_ASIMOTO, actor->world.position, 2, + actor->world.angle.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 1); +} + +static void Player_actor_Set_FootMark(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SLIP_FOOTPRINT, player->right_foot_pos, 2, + actor->world.angle.y, game, RSV_NO, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_settle_main_Slip_net(ACTOR* actor, GAME* game) { + Player_actor_Set_FootMark(actor, game); +} + +static int Player_actor_Movement_Slip_net(ACTOR* actor) { + return Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +} + +static int Player_actor_CulcAnimation_Slip_net(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Slip_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Slip_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_SearchAnimation_Slip_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_slip_net_c* main_net = &player->main_data.slip_net; + int arg; + + main_net->_00 += 0.5f; + + if (main_net->_00 > 1000.0f) { + main_net->_00 = 1000.0f; + } + + arg = (int)main_net->_00; + + if (!(arg & 1)) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SLIP, actor->world.position, 2, actor->world.angle.y, + game, RSV_NO, actor->bg_collision_check.result.unit_attribute, + arg); + } +} + +static void Player_actor_request_proc_index_fromSlip_net(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + s8 item = Player_actor_Get_ItemKind(actor, player->now_main_index); + + int net = FALSE; + + if (mPlayer_ITEM_IS_NET(item)) { + net = TRUE; + } + + if (net == FALSE) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + } else if (!Player_actor_CheckController_forNet(game)) { + Player_actor_request_main_swing_net(game, mPlayer_REQUEST_PRIORITY_22); + } else if (arg != 0) { + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_13); + } +} + +static void Player_actor_main_Slip_net(ACTOR* actor, GAME* game) { + int arg = Player_actor_Movement_Slip_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Slip_net(actor); + Player_actor_SearchAnimation_Slip_net(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Slip_net(actor, game); + Player_actor_BGcheck_Slip_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSlip_net(actor, game, arg); +} diff --git a/src/m_player_main_standup.c_inc b/src/m_player_main_standup.c_inc new file mode 100644 index 00000000..99f9499f --- /dev/null +++ b/src/m_player_main_standup.c_inc @@ -0,0 +1,104 @@ +static int Player_actor_request_main_standup(GAME* game, int ftr_no, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STANDUP, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + xyz_t player_pos = player->actor_class.world.position; + s16 rot = player->actor_class.shape_info.rotation.y; + + player_pos.x += 35.0f * sin_s(rot); + player_pos.z += 35.0f * cos_s(rot); + + if (!Player_actor_SearchPosition_npc_forStand(game, &player_pos)) { + player->requested_main_index_data.standup.ftrID = ftr_no; + Player_actor_request_main_index(game, mPlayer_INDEX_STANDUP, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Standup(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_standup_c* req_standup = &player->requested_main_index_data.standup; + int ftr_no; + + keyf = &player->keyframe0; + + ftr_no = req_standup->ftrID; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 0.0f, keyf, 1); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_STANDUP1, mPlayer_ANIM_STANDUP1, 1.0f, 1.0f, 0.5f, -3.0f, + 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_STANDUP(actor, ftr_no); +} + +static void Player_actor_settle_main_Standup(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); + actor->shape_info.shadow_size_change_rate = 1.0f; + actor->shape_info.shadow_alpha_change_rate = 1.0f; +} + +static int Player_actor_CulcAnimation_Standup(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_ControlShadow_Standup(ACTOR* actor) { + Player_actor_AppearShadow_fromAnimationFrame(actor, 12.0f, 8.0f); +} + +static void Player_actor_SetSound_Standup(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 17.0f)) { + Player_actor_sound_LANDING(actor); + } +} + +static void Player_actor_SearchAnimation_Standup(ACTOR* actor, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Standup(actor); + } + Player_actor_ControlShadow_Standup(actor); +} + +static void Player_actor_Movement_Standup(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_ObjCheck_Standup(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_request_proc_index_fromStandup(ACTOR* actor, GAME* game, int arg) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Standup(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Standup(actor, &frame_calc); + + Player_actor_SearchAnimation_Standup(actor, frame_calc); + Player_actor_Movement_Standup(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Standup(actor, game); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromStandup(actor, game, arg); +} diff --git a/src/m_player_main_standup_bed.c_inc b/src/m_player_main_standup_bed.c_inc new file mode 100644 index 00000000..b93fcc63 --- /dev/null +++ b/src/m_player_main_standup_bed.c_inc @@ -0,0 +1,210 @@ +static int Player_actor_Check_able_request_main_standup_bed(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int index = player->now_main_index; + + switch (index) { + case mPlayer_INDEX_WAIT_BED: + return TRUE; + default: + return FALSE; + } +} + +static int Player_actor_request_main_standup_bed(GAME* game, int move_direction, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STANDUP_BED, priority) && + Player_actor_Check_able_request_main_standup_bed(game)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + xyz_t pos = player->actor_class.world.position; + s16 rot = player->actor_class.shape_info.rotation.y; + f32 x; + f32 z; + + if (move_direction == 1) { + if (rot == 0) { + x = 40.0f; + z = 5.0f; + } else { + x = 40.0f; + z = -5.0f; + } + } else if (move_direction == 2) { + if (rot == 0) { + x = -40.0f; + z = -5.0f; + } else { + x = -40.0f; + z = 5.0f; + } + } else if (move_direction == 3) { + if (rot == 0x4000) { + x = 5.0f; + z = -40.0f; + } else { + x = -5.0f; + z = -40.0f; + } + } else { + if (rot == 0x4000) { + x = 5.0f; + z = 40.0f; + } else { + x = -5.0f; + z = 40.0f; + } + } + + pos.x += x; + pos.z += z; + + if (!Player_actor_SearchPosition_npc_forStand(game, &pos)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.standup_bed.move_dir = move_direction; + Player_actor_request_main_index(game, mPlayer_INDEX_STANDUP_BED, priority); + return TRUE; + } + } + return FALSE; +} + +static void Player_actor_settle_main_Standup_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); + actor->world.angle.y = actor->shape_info.rotation.y; + actor->shape_info.rotation.x = 0; + actor->world.angle.x = 0; + actor->shape_info.rotation.z = 0; + actor->world.angle.z = 0; + actor->shape_info.shadow_size_change_rate = 1.0f; + actor->shape_info.shadow_alpha_change_rate = 1.0f; +} + +static int Player_actor_Get_BasicPlayerAnimeIndex_Standup_bed(int direction, s16 angle) { + if (angle == 0) { + if (direction == 1) { + return mPlayer_ANIM_OUTBED_R1; + } + if (direction == 2) { + return mPlayer_ANIM_OUTBED_L1; + } + } else if (angle == 0x4000) { + if (direction == 3) { + return mPlayer_ANIM_OUTBED_R1; + } + if (direction == 4) { + return mPlayer_ANIM_OUTBED_L1; + } + } else if (angle == -0x8000) { + if (direction == 1) { + return mPlayer_ANIM_OUTBED_L1; + } + if (direction == 2) { + return mPlayer_ANIM_OUTBED_R1; + } + } else if (angle == -0x4000) { + if (direction == 3) { + return mPlayer_ANIM_OUTBED_L1; + } + if (direction == 4) { + return mPlayer_ANIM_OUTBED_R1; + } + } + + return mPlayer_ANIM_OUTBED_R1; +} + +static void Player_actor_setup_main_Standup_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_standup_bed_c* req_up = &player->requested_main_index_data.standup_bed; + int anim_idx; + s16 rot; + + keyf = &player->keyframe0; + anim_idx = Player_actor_Get_BasicPlayerAnimeIndex_Standup_bed(req_up->move_dir, actor->shape_info.rotation.y); + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 0.0f, 0, 0, 0x4000); + rot = actor->shape_info.rotation.y; + + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, rot, rot, 3.0f, keyf, 3); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -3.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_BED_OUT(actor); +} + +static int Player_actor_CulcAnimation_Standup_bed(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetSound_Standup_bed(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 23.0f)) { + Player_actor_sound_LANDING(actor); + } +} + +static void Player_actor_SearchAnimation_Standup_bed(ACTOR* actor, f32 frame) { + f32 per; + f32 mod; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32 cur; + s16 target_x; + s16 target_y; + int angle; + + Player_actor_AppearShadow_fromAnimationFrame(actor, 12.0f, 8.0f); + cur = fc0_p->current_frame; + per = get_percent_forAccelBrake(cur, 1.0f, 21.0f, 3.0f, 3.0f); + + target_x = (int)(-16384.0f * (1.0f - per)); + add_calc_short_angle2(&actor->shape_info.rotation.x, target_x, 1.0f - sqrtf(0.5), 1820, 50); + + per = get_percent_forAccelBrake(cur, 1.0f, 18.0f, 3.0f, 3.0f); + target_y = actor->world.angle.y; + + if (player->animation0_idx == mPlayer_ANIM_OUTBED_R1) { + mod = 16384.0f; + } else { + mod = -16384.0f; + } + + target_y += (s16)(int)(mod * per); + add_calc_short_angle2(&actor->shape_info.rotation.y, target_y, 1.0f - sqrtf(0.5), 1820, 50); + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetSound_Standup_bed(actor); + } +} + +static void Player_actor_Movement_Standup_bed(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_base(&actor->world.position, &actor->shape_info.rotation.y, &actor->scale, + actor->world.angle.y, &player->keyframe0); + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_ObjCheck_Standup_bed(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_request_proc_index_fromStandup_bed(ACTOR* actor, GAME* game, int arg) { + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); + } +} + +static void Player_actor_main_Standup_bed(ACTOR* actor, GAME* game) { + f32 frame_calc; + int arg = Player_actor_CulcAnimation_Standup_bed(actor, &frame_calc); + + Player_actor_SearchAnimation_Standup_bed(actor, frame_calc); + Player_actor_Movement_Standup_bed(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Standup_bed(actor, game); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromStandup_bed(actor, game, arg); +} diff --git a/src/m_player_main_stop_net.c_inc b/src/m_player_main_stop_net.c_inc new file mode 100644 index 00000000..859dd47f --- /dev/null +++ b/src/m_player_main_stop_net.c_inc @@ -0,0 +1,60 @@ +static int Player_actor_request_main_stop_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STOP_NET, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_STOP_NET, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Stop_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_stop_net_c* main_stop = &player->main_data.stop_net; + + Player_actor_SetupItem_Base2(actor, Player_actor_Get_ItemKind_from_submenu(), mPlayer_ANIM_GET_CHANGE1, + mPlayer_INDEX_RETURN_DEMO, -5.0f, -1.0f, 0); + main_stop->_00 = 0; + player->keyframe0.frame_control.speed = 0.0f; + player->keyframe1.frame_control.speed = 0.0f; + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Stop_net(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Stop_net(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Stop_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Stop_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromStop_net(GAME* game, int ready) { + if (ready != FALSE) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_34); + } +} + +static void Player_actor_main_Stop_net(ACTOR* actor, GAME* game) { + int ready; + + Player_actor_Movement_Stop_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Stop_net(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Stop_net(actor, game); + Player_actor_BGcheck_Stop_net(actor); + ready = Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromStop_net(game, ready); +} diff --git a/src/m_player_main_struggle_pitfall.c_inc b/src/m_player_main_struggle_pitfall.c_inc new file mode 100644 index 00000000..39bce6d9 --- /dev/null +++ b/src/m_player_main_struggle_pitfall.c_inc @@ -0,0 +1,123 @@ +static int Player_actor_request_main_struggle_pitfall_all(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STRUGGLE_PITFALL, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_STRUGGLE_PITFALL, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Struggle_pitfall(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_main_struggle_pitfall_c* struggle_pitfall_p = &player->main_data.struggle_pitfall; + int anim1_idx; + int part_table_idx; + + struggle_pitfall_p->button_presses = 0.0f; + struggle_pitfall_p->target_anim_speed = 0.5f; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_MOGAKU1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_MOGAKU1, mPlayer_ANIM_MOGAKU1, 1.0f, 1.0f, 0.5f, -5.0f, + mPlayer_PART_TABLE_NORMAL); + player->draw_effect_idx = eEC_EFFECT_ASE2 + 1; + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Struggle_pitfall(ACTOR* actorx, GAME* game) { + eEC_CLIP->effect_kill_proc(eEC_EFFECT_ASE2, RSV_NO); +} + +static void Player_actor_Movement_Struggle_pitfall(ACTOR* actorx) { + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static int Player_actor_ControlAnimationSpeed_Struggle_pitfall(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_struggle_pitfall_c* struggle_pitfall_p = &player->main_data.struggle_pitfall; + f32 add_button_push_amt; + f32 old_recognize_percentR; + f32 now_recognize_percentR; + f32 d_recognize_percentR; + f32 abs_d_recognize_percentR; + + if (struggle_pitfall_p->button_presses >= 20.0f) { + return TRUE; + } + + add_button_push_amt = 0.0f; + add_button_push_amt += Player_actor_CheckController_forStruggle_pitfall(); + old_recognize_percentR = Player_actor_GetController_old_recognize_percentR(); + now_recognize_percentR = Player_actor_GetController_recognize_percentR(); + d_recognize_percentR = old_recognize_percentR - now_recognize_percentR; + abs_d_recognize_percentR = ABS(d_recognize_percentR); + add_button_push_amt += abs_d_recognize_percentR * 0.5f; + + if (old_recognize_percentR > 0.0f && now_recognize_percentR > 0.0f) { + int now_move_angle = Player_actor_GetController_move_angle(); + int old_move_angle = Player_actor_GetController_old_move_angle(); + int d_move_angle = (s16)(old_move_angle - now_move_angle); + int abs_d_move_angle = ABS(d_move_angle); + + add_button_push_amt += (f32)abs_d_move_angle * 0.00002f; + } + + { + f32* target_anim_speed_p = &struggle_pitfall_p->target_anim_speed; + + struggle_pitfall_p->button_presses += add_button_push_amt; + (*target_anim_speed_p) += add_button_push_amt * 0.25f; + (*target_anim_speed_p) -= 0.00435f; + + if (*target_anim_speed_p > 1.0f) { + *target_anim_speed_p = 1.0f; + } else if (*target_anim_speed_p < 0.5f) { + *target_anim_speed_p = 0.5f; + } + + { + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + f32* speed_p = &fc0_p->speed; + + (*speed_p) += (*target_anim_speed_p - *speed_p) * 0.10875f; + } + } + + return FALSE; +} + +static int Player_actor_CulcAnimation_Struggle_pitfall(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_set_eye_pattern_Struggle_pitfall(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_set_eye_pattern(actorx, 6); +} + +static void Player_actor_ObjCheck_Struggle_pitfall(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromStruggle_pitfall(GAME* game, int end_flag) { + + if (end_flag) { + Player_actor_request_main_climbup_pitfall_all(game, mPlayer_REQUEST_PRIORITY_29); + } +} + +static void Player_actor_main_Struggle_pitfall(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Struggle_pitfall(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_ControlAnimationSpeed_Struggle_pitfall(actorx); + Player_actor_CulcAnimation_Struggle_pitfall(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Struggle_pitfall(actorx); + Player_actor_ObjCheck_Struggle_pitfall(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromStruggle_pitfall(game, end_flag); +} diff --git a/src/m_player_main_stung_bee.c_inc b/src/m_player_main_stung_bee.c_inc new file mode 100644 index 00000000..55d59041 --- /dev/null +++ b/src/m_player_main_stung_bee.c_inc @@ -0,0 +1,125 @@ +static int Player_actor_request_main_stung_bee_all(GAME* game, int prio) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int main_index = player->now_main_index; + + if (main_index == mPlayer_INDEX_RELAX_ROD) { + mPlayer_main_relax_rod_c* relax_rod_p = &player->main_data.relax_rod; + + relax_rod_p->bee_flag = TRUE; + return FALSE; + } else if (Player_actor_Check_is_demo_mode(main_index)) { + return FALSE; + } else if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STUNG_BEE, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_STUNG_BEE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Stung_bee(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_stung_bee_c* stung_bee_p = &player->main_data.stung_bee; + int anim1_idx; + int part_table_idx; + + stung_bee_p->timer = 0.0f; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_HATI1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_HATI1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + Player_actor_setup_main_Base(actorx, game); + mBGMPsComp_make_ps_quiet(0x168); + if (player->bee_chase_bgm_flag) { + player->bee_chase_bgm_flag = FALSE; + mBGMPsComp_delete_ps_happening(BGM_BEE_CHASE, 0); + } + + Player_actor_sound_hachi_sasareru(actorx); +} + +static void Player_actor_Movement_Stung_bee(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_stung_bee_c* stung_bee_p = &player->main_data.stung_bee; + f32* timer_p = &stung_bee_p->timer; + + Player_actor_Movement_Base_Braking(actorx); + if (*timer_p > 94.0f) { + add_calc_short_angle2(&actorx->shape_info.rotation.y, DEG2SHORT_ANGLE2(180.0f), 1.0f - sqrtf(0.5f), 2500, 50); + actorx->world.angle.y = actorx->shape_info.rotation.y; + } +} + +static int Player_actor_CulcAnimation_Stung_bee(ACTOR* actorx, f32* last_anim0_cur_frame) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame); +} + +static void Player_actor_ChangeAnimation_Stung_bee(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (end_flag && player->animation0_idx == mPlayer_ANIM_HATI1) { + int anim1_idx; + int part_table_idx; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_HATI2, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_HATI2, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, part_table_idx); + } +} + +static void Player_actor_SearchAnimation_Stung_bee(ACTOR* actorx, GAME* game, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE && + player->animation0_idx == mPlayer_ANIM_HATI2) { + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 21.0f)) { + mNpc_SetTalkBee(); + Common_Set(player_bee_swell_flag, TRUE); + Common_Set(player_bee_chase_flag, FALSE); + mPlib_change_player_face(game); + } + } +} + +static void Player_actor_set_tex_anime_Stung_bee(ACTOR* actorx) { + Player_actor_set_tex_anime_pattern(actorx); +} + +static void Player_actor_ObjCheck_Stung_bee(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Stung_bee(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromStung_bee(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_stung_bee_c* stung_bee_p = &player->main_data.stung_bee; + f32* timer_p = &stung_bee_p->timer; + + if (*timer_p > 252.0f) { + Player_actor_request_main_notice_bee_all(game, mPlayer_REQUEST_PRIORITY_26); + } else { + (*timer_p) += 1.0f; + } +} + +static void Player_actor_main_Stung_bee(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Stung_bee(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Stung_bee(actorx, &last_anim0_cur_frame); + Player_actor_ChangeAnimation_Stung_bee(actorx, game, end_flag); + Player_actor_SearchAnimation_Stung_bee(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_Stung_bee(actorx); + Player_actor_ObjCheck_Stung_bee(actorx, game); + Player_actor_BGcheck_Stung_bee(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromStung_bee(actorx, game); +} diff --git a/src/m_player_main_stung_mosquito.c_inc b/src/m_player_main_stung_mosquito.c_inc new file mode 100644 index 00000000..e59ff2a1 --- /dev/null +++ b/src/m_player_main_stung_mosquito.c_inc @@ -0,0 +1,92 @@ +static int Player_actor_request_main_stung_mosquito_all(GAME* game, void* label, int prio) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int main_index = player->now_main_index; + + if (mEv_CheckTitleDemo() > 0) { + return FALSE; + } + + if (Common_Get(clip).demo_clip != NULL) { + return FALSE; + } + + if (main_index == mPlayer_INDEX_RELAX_ROD) { + mPlayer_main_relax_rod_c* relax_rod_p = &player->main_data.relax_rod; + + relax_rod_p->mosquito_flag = TRUE; + return FALSE; + } + + if (Player_actor_Check_is_demo_mode(main_index)) { + return FALSE; + } + + if (mPlib_Get_status_for_bee() != TRUE) { + return FALSE; + } + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_STUNG_MOSQUITO, prio)) { + mPlayer_request_stung_mosquito_c* req_stung_mosquito_p = &player->requested_main_index_data.stung_mosquito; + + req_stung_mosquito_p->label = (u32)label; + Player_actor_request_main_index(game, mPlayer_INDEX_STUNG_MOSQUITO, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Stung_mosquito(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_stung_mosquito_c* req_stung_mosquito_p = &player->requested_main_index_data.stung_mosquito; + mPlayer_main_stung_mosquito_c* stung_mosquito_p = &player->main_data.stung_mosquito; + int anim1_idx; + int part_table_idx; + + stung_mosquito_p->label = req_stung_mosquito_p->label; + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_MOSQUITO1, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_MOSQUITO1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_PICK_UP); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Stung_mosquito(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Stung_mosquito(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_ObjCheck_Stung_mosquito(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Stung_mosquito(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromStung_mosquito(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_stung_mosquito_c* stung_mosquito_p = &player->main_data.stung_mosquito; + + Player_actor_request_main_notice_mosquito(game, stung_mosquito_p->label, mPlayer_REQUEST_PRIORITY_26); + } +} + +static void Player_actor_main_Stung_mosquito(ACTOR* actorx, GAME* game) { + int end_flag; + + Player_actor_Movement_Stung_mosquito(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Stung_mosquito(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_tex_anime_pattern(actorx); + Player_actor_ObjCheck_Stung_mosquito(actorx, game); + Player_actor_BGcheck_Stung_mosquito(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromStung_mosquito(actorx, game, end_flag); +} diff --git a/src/m_player_main_swing_axe.c_inc b/src/m_player_main_swing_axe.c_inc new file mode 100644 index 00000000..0e383f6b --- /dev/null +++ b/src/m_player_main_swing_axe.c_inc @@ -0,0 +1,304 @@ +static void Player_actor_request_main_swing_axe_common(mPlayer_request_swing_axe_c* req_axe, const xyz_t* pos, + mActor_name_t hit_item, u16 damage_no, int hit_ut_x, + int hit_ut_z) { + req_axe->goal_pos = *pos; + req_axe->hit_item = hit_item; + req_axe->hit_ut_x = hit_ut_x; + req_axe->hit_ut_z = hit_ut_z; + req_axe->axe_damage_no = damage_no; +} + +static int Player_actor_request_main_swing_axe_all(GAME* game, const xyz_t* pos, mActor_name_t hit_item, u16 damage_no, + int hit_ut_x, int hit_ut_z, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SWING_AXE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_swing_axe_common(&player->requested_main_index_data.swing_axe, pos, hit_item, + damage_no, hit_ut_x, hit_ut_z); + Player_actor_request_main_index(game, mPlayer_INDEX_SWING_AXE, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Swing_axe_common(mPlayer_request_swing_axe_c* req_axe, + mPlayer_main_swing_axe_c* main_axe) { + main_axe->axe_common.target_pos = req_axe->goal_pos; + main_axe->axe_common.item = req_axe->hit_item; + main_axe->tree_ut_x = req_axe->hit_ut_x; + main_axe->tree_ut_z = req_axe->hit_ut_z; + main_axe->axe_common.axe_damage_no = req_axe->axe_damage_no; + main_axe->bee_flag = FALSE; + main_axe->bee_angle_y = 0; + main_axe->bee_counter = 0; +} + +static void Player_actor_setup_main_Swing_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + mPlayer_request_swing_axe_c* req_axe = &player->requested_main_index_data.swing_axe; + + Player_actor_setup_main_Swing_axe_common(req_axe, main_axe); + + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_AXE_SWING1, mPlayer_ANIM_AXE_SWING1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_axe_common(ACTOR* actor, xyz_t* axe_pos) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 z; + f32 x; + + x = axe_pos->x - actor->world.position.x; + z = axe_pos->z - actor->world.position.z; + + if (x != 0.0f || z != 0.0f) { + s16 target = atans_table(z, x); + add_calc_short_angle2(&actor->shape_info.rotation.y, target, 1.0f - sqrtf(0.5), 2500, 50); + } + Player_actor_Movement_Base_Braking_common(actor, 0.32625002f); +} + +static void Player_actor_Movement_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main_axe, int) { + Player_actor_Movement_axe_common(actor, &main_axe->axe_common.target_pos); + + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Swing_axe(ACTOR* actor, f32* frame_calc, int) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffectHit_axe_common(ACTOR* actor, GAME* game, s16 arg2) { + static xyz_t offset = { -7.0f, 20.0f, 24.0f }; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t pos; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + s16 rot = actor->world.angle.y; + f32 sin = sin_s(rot); + f32 cos = cos_s(rot); + + pos = actor->world.position; + pos.y += offset.y; + pos.z += (offset.z * cos) - (offset.x * sin); + pos.x += (offset.z * sin) + (offset.x * cos); + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_AXE, pos, 2, actor->shape_info.rotation.y, game, + RSV_NO, actor->bg_collision_check.result.unit_attribute, arg2); + } +} + +static void Player_actor_SetEffectHit_Swing_axe(ACTOR* actor, GAME* game, s16 arg2, int arg3) { + Player_actor_SetEffectHit_axe_common(actor, game, arg2); +} + +static void Player_actor_SetEffectStart_Swing_axe(ACTOR* actor, GAME* game, int arg2) { + Player_actor_SetEffectStart_axe_common(actor, game); +} + +static void Player_actor_SetEffect_Swing_axe(ACTOR* actor, GAME* game, int arg2) { + Player_actor_SetEffectHit_Swing_axe(actor, game, 0, arg2); + Player_actor_SetEffectStart_Swing_axe(actor, game, arg2); +} + +static mActor_name_t Player_actor_Get_TreeNoToStumpNo(ACTOR* actor, GAME* game, mActor_name_t item, int ut_x, int ut_z, + mPlayer_main_swing_axe_c* main_axe, int flag) { + if (Common_Get(clip).bg_item_clip != NULL) { + if (Common_Get(clip).bg_item_clip->tree_cutcount_check_proc != NULL) { + xyz_t pos; + + int check = Common_Get(clip).bg_item_clip->tree_cutcount_check_proc(game, ut_x, ut_z); + + if (!IS_ITEM_BEE_TREE(item)) { + Common_Get(clip).bg_item_clip->item_tree_fruit_drop_proc(item, ut_x, ut_z, &pos); + } else if (mPlib_able_birth_bee() && flag == FALSE) { + main_axe->bee_counter = 5; + } + + if (check <= 0) { + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_CHOP_TREE); + if (IS_ITEM_ANY_PALM_TREE(item) != FALSE) { + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_CHOP_PALM_TREE); + } + + return bg_item_fg_sub((mActor_name_t)item, 0); + } + } + } + return item; +} + +static void Player_actor_CutTree_Swing_axe(ACTOR* actor, GAME* game, mPlayer_main_swing_axe_c* main_axe, int flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + int ut_x; + int ut_z; + mActor_name_t item = main_axe->axe_common.item; + + if (mFI_Wpos2UtNum(&ut_x, &ut_z, main_axe->axe_common.target_pos)) { + mActor_name_t tree = Player_actor_Get_TreeNoToStumpNo(actor, game, item, ut_x, ut_z, main_axe, flag); + s16 type; + + if (IS_ITEM_TREE_STUMP(tree) != FALSE) { + mNT_offset_table_c* ofs_tbl = obj_hight_table_item0_nogrow(tree); + + mCoBG_SetPlussOffset(main_axe->axe_common.target_pos, ofs_tbl->table.centerRight_offset, + ofs_tbl->table.unit_attribute); + mFI_SetFG_common(tree, main_axe->axe_common.target_pos, TRUE); + + if (main_axe->axe_common.target_pos.x > actor->world.position.x) { + type = EffectBG_EFFECT_CUT_LEFT; + } else { + type = EffectBG_EFFECT_CUT_RIGHT; + } + Player_actor_set_viblation_Axe_cut(); + } else { + type = EffectBG_EFFECT_SHAKE; + Player_actor_set_viblation_Axe_hard(); + } + Player_actor_Set_EffectBgTree(game, item, type, ut_x, ut_z); + } + } +} + +static void Player_actor_SetSound_AXE_FURI_axe_common(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 10.0f)) { + Player_actor_sound_AXE_FURI(actor); + } +} + +static void Player_actor_SetSound_AXE_FURI_Swing_axe(ACTOR* actor, int) { + Player_actor_SetSound_AXE_FURI_axe_common(actor); +} + +static void Player_actor_SetSound_Swing_axe(ACTOR* actor, xyz_t* pos, int arg2) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_SetSound_AXE_FURI_Swing_axe(actor, arg2); + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + Player_actor_sound_AXE_CUT(actor, pos); + } +} + +static void Player_actor_ChangeItemNo_axe_common(ACTOR* actor, mActor_name_t item) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 15.0f)) { + mActor_name_t sub = Player_actor_Get_ItemNoSubmenu(); + if (sub != item) { + int anim_idx; + int part_table_idx; + + Player_actor_Set_ItemNoSubmenu(item); + Common_Set(axe_damage, 0); + + Player_actor_SetupItem_Base1(actor, player->animation1_idx, 0.0f, &anim_idx, &part_table_idx); + + switch ((u16)item) { + case ITM_AXE_USE_2: + Player_actor_sound_axe_broken1(actor); + break; + case ITM_AXE_USE_5: + Player_actor_sound_axe_broken2(actor); + break; + + case EMPTY_NO: + Player_actor_sound_axe_broken3(actor); + break; + + default: + break; + } + } + } +} + +static void Player_actor_ChangeItemNo_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main, int flag) { + Player_actor_ChangeItemNo_axe_common(actor, main->axe_common.axe_damage_no); +} + +static void Player_actor_SearchAnimation_Swing_axe(ACTOR* actor, GAME* game, mPlayer_main_swing_axe_c* main_axe, + int flag, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Swing_axe(actor, game, flag); + Player_actor_CutTree_Swing_axe(actor, game, main_axe, flag); + Player_actor_SetSound_Swing_axe(actor, &main_axe->axe_common.target_pos, flag); + Player_actor_ChangeItemNo_Swing_axe(actor, main_axe, flag); + Player_actor_Set_FootMark_Base1(actor, game, 0, 0); + } +} + +static void Player_actor_Check_BirthBee_Swing_axe(ACTOR* actor, mPlayer_main_swing_axe_c* main_axe, int arg) { + if (arg == 0 && main_axe->bee_counter > 0) { + if (Player_actor_Check_BirthBee_common(actor, main_axe->axe_common.item, main_axe->tree_ut_x, + main_axe->tree_ut_z, &main_axe->bee_angle_y)) { + main_axe->bee_counter = 0; + main_axe->bee_flag = 1; + } else { + main_axe->bee_counter--; + } + } +} + +static void Player_actor_ObjCheck_Swing_axe(ACTOR* actor, GAME* game, int) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Swing_axe(ACTOR* actor, int) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromSwing_axe(ACTOR* actor, GAME* game, int arg, int arg2) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + mPlayer_main_swing_axe_c* main_swing = &player->main_data.swing_axe; + + if (arg2 == 0) { + if (arg != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, 1); + } else { + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + f32 current = fc->current_frame; + + if (main_swing->bee_flag != 0) { + if (current >= 17.0f) { + Player_actor_request_main_shock_all(game, 60.0f, main_swing->bee_angle_y, 1, 1, + mPlayer_REQUEST_PRIORITY_21); + } + } else if (Player_actor_Check_AnimationFrame(fc, 16.5f)) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_Set_status_for_bee(actor, 1); + + } else if ((current >= 17.0f) && (!Player_actor_CheckAndRequest_main_axe_all(game, 4)) && + ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY()))) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Swing_axe(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 frame_calc; + mPlayer_main_swing_axe_c* main_axe = &player->main_data.swing_axe; + int arg; + + Player_actor_Movement_Swing_axe(actor, main_axe, 0); + Player_actor_Reinput_force_position_angle(actor, game); + arg = Player_actor_CulcAnimation_Swing_axe(actor, &frame_calc, 0); + Player_actor_SearchAnimation_Swing_axe(actor, game, main_axe, 0, frame_calc); + Player_actor_Check_BirthBee_Swing_axe(actor, main_axe, 0); + Player_actor_recover_lean_angle(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Swing_axe(actor, game, 0); + Player_actor_BGcheck_Swing_axe(actor, 0); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSwing_axe(actor, game, arg, 0); +} diff --git a/src/m_player_main_swing_fan.c_inc b/src/m_player_main_swing_fan.c_inc new file mode 100644 index 00000000..2e0d0977 --- /dev/null +++ b/src/m_player_main_swing_fan.c_inc @@ -0,0 +1,106 @@ +static int Player_actor_request_main_swing_fan_all(GAME* game, int start_swing, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SWING_FAN, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_swing_fan_c* req_swing_fan_p = &player->requested_main_index_data.swing_fan; + + Player_actor_request_main_index(game, mPlayer_INDEX_SWING_FAN, prio); + req_swing_fan_p->start_swing = start_swing; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Swing_fan(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf1_p = &player->keyframe1; + mPlayer_request_swing_fan_c* req_swing_fan_p = &player->requested_main_index_data.swing_fan; + f32 frame; + f32 morph_counter; + + if (req_swing_fan_p->start_swing) { + frame = 1.0f; + morph_counter = -5.0f; + } else { + frame = kf1_p->frame_control.current_frame; + morph_counter = 0.0f; + } + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_UTIWA_D1, mPlayer_ANIM_WAIT1, 1.0f, frame, 0.5f, + morph_counter, cKF_FRAMECONTROL_REPEAT, mPlayer_PART_TABLE_FAN); + Player_actor_setup_main_Base(actorx, game); + Player_actor_set_eye_pattern(actorx, 5); +} + +static void Player_actor_Movement_Swing_fan(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Swing_fan(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetSound_Swing_fan(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 1.5f)) { + Player_actor_sound_uchiwa(actorx); + } +} + +static void Player_actor_SearchAnimation_Swing_fan(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Swing_fan(actorx); + } +} + +static void Player_actor_ObjCheck_Swing_fan(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Swing_fan(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_request_proc_index_fromSwing_fan(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 7.5f)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_Set_status_for_bee(actorx, TRUE); + } else { + f32 cur_frame = fc0_p->current_frame; + + if (cur_frame >= 8.0f && + Player_actor_CheckAndRequest_main_fan_all(game, FALSE, FALSE, mPlayer_REQUEST_PRIORITY_4) == FALSE) { + if (Player_actor_GetController_move_percentX() || Player_actor_GetController_move_percentY()) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + + if (cur_frame >= fc0_p->end_frame - 0.5f) { + f32 delay_frames = player->keyframe1.frame_control.current_frame; + + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, delay_frames, 2, mPlayer_REQUEST_PRIORITY_1); + } + } + } +} + +static void Player_actor_main_Swing_fan(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + + Player_actor_Movement_Swing_fan(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Swing_fan(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Swing_fan(actorx, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_ObjCheck_Swing_fan(actorx, game); + Player_actor_BGcheck_Swing_fan(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromSwing_fan(actorx, game); +} diff --git a/src/m_player_main_swing_net.c_inc b/src/m_player_main_swing_net.c_inc new file mode 100644 index 00000000..2be813b8 --- /dev/null +++ b/src/m_player_main_swing_net.c_inc @@ -0,0 +1,361 @@ +static int Player_actor_request_main_swing_net(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SWING_NET, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + s8 kind = Player_actor_Get_ItemKind(&player->actor_class, player->now_main_index); + int net = FALSE; + + if (mPlayer_ITEM_IS_NET(kind)) { + net = TRUE; + } + + if (net) { + Player_actor_request_main_index(game, mPlayer_INDEX_SWING_NET, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Swing_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind_from_submenu(); + mPlayer_main_swing_net_c* main_swing = &player->main_data.swing_net; + + main_swing->swing_timer = 0.0f; + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_PICKUP1, mPlayer_INDEX_REFUSE_PICKUP, -5.0f, -1.0f, 1); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_NET_SWING1, mPlayer_ANIM_NET_SWING1, 1.0f, 1.0f, 0.5f, + -5.0f, 0, 0); + + Player_actor_setup_main_Base(actor, game); + Player_actor_Reset_Item_net_catch_request_table(actor); + + player->item_net_catch_label = 0; + player->item_net_catch_type = 0; + player->item_net_has_catch = FALSE; + + Player_actor_sound_AMI_FURI(actor); +} + +static void Player_actor_SetEffect_Swing_net(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t pos; + f32 cur = player->keyframe0.frame_control.current_frame; + + if (8.5f < cur) { + if (cur <= 9.0f) { + s16 rot = actor->world.angle.y; + s16 attr; + + pos = actor->world.position; + pos.x += (50.0f * sin_s(rot)); + + pos.z += (50.0f * cos_s(rot)); + + attr = mCoBG_Wpos2Attribute(pos, NULL); + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_NET, pos, 2, rot, game, RSV_NO, attr, 0); + } + } +} + +static void Player_actor_settle_main_Swing_net(ACTOR* actor, GAME* game) { + Player_actor_SetEffect_Swing_net(actor, game); +} + +static int Player_actor_HitBGCheck_Swing_net(ACTOR* actor, GAME* game, ACTOR** hit_actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t pos; + xyz_t wpos; + f32 cur = player->keyframe0.frame_control.current_frame; + + *hit_actor = NULL; + + if (cur > 6.0f) { + int line_check; + + if (Player_actor_Check_OBJtoLine_forItem_net(actor, hit_actor)) { + return TRUE; + } + + line_check = mCoBG_LineCheck_RemoveFg(&pos, player->net_start_pos, player->net_end_pos, 0, 7); + + if (line_check & 4 || line_check & 8) { + if (Common_Get(clip).effect_clip != NULL) { + wpos = player->net_end_pos; + if (line_check & 4) { + wpos.y = 20.0f; + } else { + wpos.y = mCoBG_GetWaterHeight_File(player->net_end_pos, __FILE__, 171); + } + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_SWING_NET, wpos, 2, actor->world.angle.y, + game, RSV_NO, mCoBG_Wpos2Attribute(wpos, NULL), 1); + } + } + if (line_check & 1 || line_check & 2) { + return TRUE; + } + } + return FALSE; +} + +static int Player_actor_Item_CheckLocalCapture_forNet(const xyz_t* net_top_col, const xyz_t* arg1, const xyz_t* arg2, + const xyz_t* catch_pos_table, f32 sq, f32 rad_req) { + f32 len; + f32 x_calc; + f32 y_calc; + f32 z_calc; + f32 mod; + xyz_t calc2; + xyz_t calc_pos; + + xyz_t arg1_calc; + f32 sq_c; + + mod = (arg2->x * (catch_pos_table->x - net_top_col->x)) + (arg2->y * (catch_pos_table->y - net_top_col->y)) + + (arg2->z * (catch_pos_table->z - net_top_col->z)); + + x_calc = net_top_col->x + (arg2->x * mod); + y_calc = net_top_col->y + (arg2->y * mod); + z_calc = net_top_col->z + (arg2->z * mod); + + if (Player_actor_Get_ItemKind_from_submenu() == mPlayer_ITEM_KIND_GOLD_NET) { + len = 21.0f + rad_req; + } else { + len = 15.0f + rad_req; + } + + calc_pos.x = catch_pos_table->x - x_calc; + calc_pos.y = catch_pos_table->y - y_calc; + calc_pos.z = catch_pos_table->z - z_calc; + + if (Math3DVecLengthSquare(&calc_pos) > SQ(len)) { + return FALSE; + } + + calc2.x = catch_pos_table->x - net_top_col->x; + calc2.y = catch_pos_table->y - net_top_col->y; + calc2.z = catch_pos_table->z - net_top_col->z; + len = Math3DVecLength(&calc2); + + if (len != 0.0f) { + f32 inv = rad_req * (1.0f / len); + arg1_calc.x = calc2.x * inv; + arg1_calc.y = calc2.y * inv; + arg1_calc.z = calc2.z * inv; + } + + sq_c = + (arg1->x * (calc2.x - arg1_calc.x)) + (arg1->y * (calc2.y - arg1_calc.y)) + (arg1->z * (calc2.z - arg1_calc.z)); + + if (sq_c > sq) { + return 0; + } + + if (sq_c < 0.0f) { + return !((arg1->x * (calc2.x + arg1_calc.x)) + (arg1->y * (calc2.y + arg1_calc.y)) + + (arg1->z * (calc2.z + arg1_calc.z)) < + 0.0f); + } + return TRUE; +} + +static int Player_actor_CheckCaptureForce_forNet(ACTOR* actor, u32* label_req, s8* type_req) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->item_net_catch_label_request_force != 0) { + *label_req = player->item_net_catch_label_request_force; + *type_req = player->item_net_catch_type_request_force; + + return TRUE; + } else { + return FALSE; + } +} + +static int Player_actor_CheckCapture_forNet(ACTOR* actor, u32* label_req, s8* type_req) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int catch_num; + u32* req_label_table; + s8* type_table; + xyz_t* catch_pos_table; + f32* rad_req; + xyz_t* top_col; + + if (Player_actor_CheckCaptureForce_forNet(actor, label_req, type_req)) { + return TRUE; + } + + catch_num = player->item_net_catch_request_use_count; + + if (catch_num > 0 && catch_num <= mPlayer_NET_CATCH_TABLE_COUNT) { + f32 len; + int i = 0; + f32 inv; + xyz_t arg1; + xyz_t arg2; + + req_label_table = player->item_net_catch_label_request_table; + type_table = player->item_net_catch_type_request_table; + catch_pos_table = player->item_net_catch_pos_request_table; + rad_req = player->item_net_catch_radius_request_table; + top_col = &player->net_top_col_pos; + + if (Player_actor_Get_ItemKind_from_submenu() == mPlayer_ITEM_KIND_GOLD_NET) { + len = 60.0f; + } else { + len = 50.0f; + }; + + arg1.x = player->net_bot_col_pos.x - top_col->x; + arg1.y = player->net_bot_col_pos.y - top_col->y; + arg1.z = player->net_bot_col_pos.z - top_col->z; + + inv = 1.0f / len; + + arg2.x = arg1.x * inv; + arg2.y = arg1.y * inv; + arg2.z = arg1.z * inv; + + for (i = 0; i < catch_num; i++) { + if (Player_actor_Item_CheckLocalCapture_forNet(top_col, &arg1, &arg2, catch_pos_table, SQ(len), *rad_req)) { + *label_req = *req_label_table; + *type_req = *type_table; + return TRUE; + } + req_label_table++; + type_table++; + catch_pos_table++; + rad_req++; + } + } + return FALSE; +} + +static int Player_actor_CatchSomethingCheck_common(ACTOR* actor, f32 frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int ret = 0; + + if (player->keyframe0.frame_control.current_frame > frame) { + mPlayer_main_swing_net_c* main_swing = &player->main_data.swing_net; + u32 label; + s8 type; + u32 pl_label = player->item_net_catch_label; + + main_swing->swing_timer += 0.5f; + + if (pl_label == 0) { + if (Player_actor_CheckCapture_forNet(actor, &label, &type)) { + player->item_net_catch_label = label; + player->item_net_catch_type = type; + + if (type == 0 && label != 0) { + player->item_net_catch_insect_idx = ((aINS_INSECT_ACTOR*)label)->type; + } else if (label != 0) { + if (((ACTOR*)label)->id == mAc_PROFILE_BEE) { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_BEE; + } else { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_ANT; + } + } else { + player->item_net_catch_insect_idx = aSOI_INSECT_TYPE_INVALID; + } + Player_actor_sound_AMI_GET(actor); + ret = 1; + } + + } else { + ret = 2; + } + } + Player_actor_Reset_Item_net_catch_request_table(actor); + return ret; +} + +static int Player_actor_CatchSomethingCheck_Swing_net(ACTOR* actor) { + return Player_actor_CatchSomethingCheck_common(actor, 6.0f); +} + +static void Player_actor_CorrectSomething_Swing_net(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + xyz_t* pos = &player->net_pos; + u32 label = player->item_net_catch_label; + + if (label != 0 && player->item_net_catch_type == 0) { + ((ACTOR*)label)->drawn = FALSE; + } + + Player_actor_CorrectSomething_net(actor, pos); +} + +static void Player_actor_Movement_Swing_net(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Swing_net(ACTOR* actor, f32* frame_calc, int check_type) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (check_type == 0) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); + } else { + player->keyframe0.frame_control.current_frame -= 0.5f; + *frame_calc = player->keyframe0.frame_control.current_frame; + return FALSE; + } +} + +static void Player_actor_SearchAnimation_Swing_net(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + } +} + +static void Player_actor_ObjCheck_Swing_net(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Swing_net(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromSwing_net(ACTOR* actor, GAME* game, int end_flag, int hit, + int check_type, ACTOR* hit_actor) { + if (end_flag != FALSE || hit != FALSE) { + if (check_type != 0) { + if (Player_actor_request_main_pull_net(game, mPlayer_REQUEST_PRIORITY_26) && check_type == 2 && + hit != FALSE) { + Player_actor_sound_AMI_HIT(actor); + Player_actor_set_viblation_Swing_net(); + } + } else if (Player_actor_request_main_stop_net(game, mPlayer_REQUEST_PRIORITY_26)) { + Player_actor_CheckAndSet_UZAI_forNpc(hit_actor); + + if (hit != FALSE) { + Player_actor_sound_AMI_HIT(actor); + Player_actor_set_viblation_Swing_net(); + } + } + } +} + +static void Player_actor_main_Swing_net(ACTOR* actor, GAME* game) { + int end_flag; + f32 frame_calc; + u32 label; + int hit_check = Player_actor_HitBGCheck_Swing_net(actor, game, (ACTOR**)&label); + int check_type = Player_actor_CatchSomethingCheck_Swing_net(actor); + + Player_actor_CorrectSomething_Swing_net(actor); + Player_actor_Movement_Swing_net(actor); + Player_actor_Reinput_force_position_angle(actor, game); + end_flag = Player_actor_CulcAnimation_Swing_net(actor, &frame_calc, hit_check); + Player_actor_SearchAnimation_Swing_net(actor, game, frame_calc); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Swing_net(actor, game); + Player_actor_BGcheck_Swing_net(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromSwing_net(actor, game, end_flag, hit_check, check_type, (ACTOR*)label); +} diff --git a/src/m_player_main_switch_on_lighthouse.c_inc b/src/m_player_main_switch_on_lighthouse.c_inc new file mode 100644 index 00000000..1c5d2542 --- /dev/null +++ b/src/m_player_main_switch_on_lighthouse.c_inc @@ -0,0 +1,80 @@ +static int Player_actor_request_main_switch_on_lighthouse_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_switch_on_lighthouse_c* req_switch_on_lighthouse_p = + &player->requested_main_index_data.switch_on_lighthouse; + + req_switch_on_lighthouse_p->pos = *pos_p; + req_switch_on_lighthouse_p->pos.y = player->actor_class.world.position.y; + req_switch_on_lighthouse_p->angle_y = angle_y; + Player_actor_request_main_index(game, mPlayer_INDEX_SWITCH_ON_LIGHTHOUSE, prio); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_settle_main_Switch_on_lighthouse(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static void Player_actor_setup_main_Switch_on_lighthouse(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_switch_on_lighthouse_c* req_switch_on_lighthouse_p = + &player->requested_main_index_data.switch_on_lighthouse; + + actorx->world.angle.y = req_switch_on_lighthouse_p->angle_y; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_switch_on_lighthouse_p->pos, + actorx->shape_info.rotation.y, req_switch_on_lighthouse_p->angle_y, 9.0f, + kf0_p, cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_LIGHT_ON1, mPlayer_ANIM_LIGHT_ON1, 1.0f, 1.0f, 0.5f, + 9.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static int Player_actor_CulcAnimation_Switch_on_lighthouse(ACTOR* actorx) { + f32 dummy; + + return Player_actor_CulcAnimation_Base2(actorx, &dummy); +} + +static void Player_actor_Movement_Switch_on_lighthouse(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Switch_on_lighthouse(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_request_proc_index_fromSwitch_on_lighthouse(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Switch_on_lighthouse(ACTOR* actorx, GAME* game) { + int end_flag; + + end_flag = Player_actor_CulcAnimation_Switch_on_lighthouse(actorx); + Player_actor_Movement_Switch_on_lighthouse(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Switch_on_lighthouse(actorx, game); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromSwitch_on_lighthouse(actorx, game, end_flag); +} diff --git a/src/m_player_main_takeout_item.c_inc b/src/m_player_main_takeout_item.c_inc new file mode 100644 index 00000000..ea218d23 --- /dev/null +++ b/src/m_player_main_takeout_item.c_inc @@ -0,0 +1,143 @@ +static int Player_actor_request_main_takeout_item(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TAKEOUT_ITEM, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_takeout_item_c* req_takeout_item_p = &player->requested_main_index_data.takeout_item; + + req_takeout_item_p->request_main_index = player->requested_main_index; + Player_actor_request_main_index(game, mPlayer_INDEX_TAKEOUT_ITEM, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Takeout_item(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_takeout_item_c* req_takeout_item_p = &player->requested_main_index_data.takeout_item; + mPlayer_main_takeout_item_c* main_takeout_item_p = &player->main_data.takeout_item; + int item_kind; + int anim1_idx; + + item_kind = Player_actor_Get_ItemKind(actorx, player->requested_main_index); + + main_takeout_item_p->back_request_data = *req_takeout_item_p; + main_takeout_item_p->timer = 0.0f; + + Player_actor_LoadOrDestruct_Item(actorx, item_kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(item_kind), 0.5f, + 5.0f, -1.0f, cKF_FRAMECONTROL_REPEAT); + Player_actor_Set_now_item_main_index(actorx, Player_actor_Get_BasicItemMainIndex_fromItemKind(item_kind)); + player->item_kind = item_kind; + + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { + ACTOR* umbrella_p; + + player->umbrella_state = aTOL_ACTION_TAKEOUT; + umbrella_p = Player_actor_Get_umbrella_p(actorx, game); + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_UMB_OPEN1, mPlayer_ANIM_UMB_OPEN1, 1.0f, 1.0f, 0.5f, + -5.0f, cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + player->item_scale = 1.0f; + } else { + Player_actor_InitAnimation_Base3(actorx, game, mPlayer_ANIM_PUTAWAY1, mPlayer_ANIM_PUTAWAY1, 0.5f, 9.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + player->item_scale = 0.0f; + } + + Player_actor_setup_main_Base(actorx, game); + Player_actor_sound_GASAGOSO(actorx); +} + +static void Player_actor_settle_main_Takeout_item(ACTOR* actorx, GAME* game) { + Player_actor_SetEffect_forTakeout_item(actorx, game); +} + +static void Player_actor_Movement_Takeout_item(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Takeout_item(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_ObjCheck_Takeout_item(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_SearchAnimation_Takeout_item(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_Set_FootMark_Base1(actorx, game, FALSE, FALSE); + } +} + +static void Player_actor_BGcheck_Takeout_item(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_SearchTimer_Takeout_item(ACTOR* actorx, GAME* game) { + int item_kind = Player_actor_Get_ItemKind_from_submenu(); + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_takeout_item_c* main_takeout_item_p = &player->main_data.takeout_item; + f32* timer_p = &main_takeout_item_p->timer; + + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) == FALSE) { + f32 timer = *timer_p; + + if (*timer_p < 54.0f) { + (*timer_p) += 1.0f; + + if (*timer_p >= 36.0f) { + int next_anim0_idx; + int now_anim0_idx; + + player->item_scale = get_percent_forAccelBrake(*timer_p, 36.0f, 54.0f, 0.0f, 0.0f); + next_anim0_idx = mPlib_Get_BasicPlayerAnimeIndex_fromItemKind(item_kind); + now_anim0_idx = player->animation0_idx; + + if (now_anim0_idx != next_anim0_idx) { + Player_actor_InitAnimation_Base1(actorx, game, next_anim0_idx, next_anim0_idx, 1.0f, 1.0f, 0.5f, + 9.0f, mPlayer_PART_TABLE_NORMAL); + } + } + } + } +} + +static void Player_actor_request_proc_index_fromTakeout_item(ACTOR* actorx, GAME* game, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_takeout_item_c* main_takeout_item_p = &player->main_data.takeout_item; + int item_kind = Player_actor_Get_ItemKind_from_submenu(); + + if (mPlayer_ITEM_IS_UMBRELLA(item_kind) != FALSE) { + if (end_flag == FALSE) { + return; + } + } else { + f32 timer = main_takeout_item_p->timer; + + if (timer < 54.0f) { + return; + } + } + + Player_actor_SettleRequestMainIndexPriority(actorx); + bcopy(&main_takeout_item_p->back_request_data.request_data, &player->requested_main_index_data, + sizeof(mPlayer_request_backup_u)); + Player_actor_request_main_index(game, main_takeout_item_p->back_request_data.request_main_index, + mPlayer_REQUEST_PRIORITY_37); +} + +static void Player_actor_main_Takeout_item(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + Player_actor_Movement_Takeout_item(actorx); + end_flag = Player_actor_CulcAnimation_Takeout_item(actorx, &last_anim0_cur_frame); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchTimer_Takeout_item(actorx, game); + Player_actor_SearchAnimation_Takeout_item(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Takeout_item(actorx, game); + Player_actor_BGcheck_Takeout_item(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromTakeout_item(actorx, game, end_flag); +} diff --git a/src/m_player_main_talk.c_inc b/src/m_player_main_talk.c_inc new file mode 100644 index 00000000..1b8878b2 --- /dev/null +++ b/src/m_player_main_talk.c_inc @@ -0,0 +1,210 @@ +static int Player_actor_request_main_talk_all(GAME* game, ACTOR* talk_actor_p, int turn_flag, f32 morph_speed, + int umbrella_flag, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TALK, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + player->requested_main_index_data.talk.talk_actor = talk_actor_p; + player->requested_main_index_data.talk.turn_flag = turn_flag; + player->requested_main_index_data.talk.morph_speed = morph_speed; + player->requested_main_index_data.talk.umbrella_flag = umbrella_flag; + + Player_actor_request_main_index(game, mPlayer_INDEX_TALK, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Talk(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_talk_c* req_talk_p = &player->requested_main_index_data.talk; + mPlayer_main_talk_c* main_talk_p = &player->main_data.talk; + f32 morph_speed = req_talk_p->morph_speed; + int anim1_idx; + int part_table_idx; + + if (req_talk_p->umbrella_flag) { + player->unable_hand_item_in_demo = TRUE; + } + + main_talk_p->talk_actor_p = req_talk_p->talk_actor; + main_talk_p->turn_flag = req_talk_p->turn_flag; + main_talk_p->feel_type = 0; + + Player_actor_SetupItem_Base1(actorx, mPlayer_ANIM_WAIT1, -ABS(morph_speed), &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, morph_speed, + part_table_idx); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Talk(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int ef = player->main_data.talk.feel_type; + + if (ef > 0) { + eEC_CLIP->effect_kill_proc(ef - 1, RSV_NO); + } +} + +static void Player_actor_Movement_Talk(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_talk_c* main_talk_p = &player->main_data.talk; + ACTOR* talk_actor_p = main_talk_p->talk_actor_p; + int turn_flag = main_talk_p->turn_flag; + + Player_actor_Movement_Base_Braking(actorx); + if (turn_flag) { + if (talk_actor_p != NULL) { + s16 target_angle = DEG2SHORT_ANGLE2(-180.0f) + talk_actor_p->player_angle_y; + s16 cur_angle = add_calc_short_angle2(&actorx->shape_info.rotation.y, target_angle, 1.0f - sqrtf(0.5f), + DEG2SHORT_ANGLE2(13.73291015625f), DEG2SHORT_ANGLE2(0.274658203125f)); + + actorx->world.angle.y = actorx->shape_info.rotation.y; + if (mDemo_Check_SpeakerAble() == FALSE && mDemo_Check_DiffAngle_forTalk(cur_angle)) { + mDemo_Set_SpeakerAble(); + } + } + } else { + mDemo_Set_SpeakerAble(); + } +} + +static int Player_actor_CulcAnimation_Talk(ACTOR* actorx, f32* last_cur_anim0_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_cur_anim0_frame_p); +} + +static void Player_actor_Set_FeelEffect_common(ACTOR* actorx, int* feel_type_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (player->animation0_idx == mPlayer_ANIM_GAAAN1 && + Player_actor_Check_AnimationFrame(&player->keyframe0.frame_control, 5.0f)) { + player->draw_effect_idx = eEC_EFFECT_SHOCK + 1; + } +} + +static void Player_actor_SearchAnimation_Talk(ACTOR* actorx, f32 last_cur_anim0_frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, last_cur_anim0_frame) == FALSE) { + Player_actor_Set_FeelEffect_common(actorx, &player->main_data.talk.feel_type); + } +} + +static void Player_actor_ChangeAnimation_FromDemoOrder_common(ACTOR* actorx, GAME* game, int order, int end_flag, + int* feel_type_p) { + int anim0_idx; + int anim1_idx; + int part_table_idx; + int mode; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (order > 0) { + switch (order) { + case 0xFF: + anim0_idx = mPlayer_ANIM_WAIT1; + mode = cKF_FRAMECONTROL_REPEAT; + + if (*feel_type_p > 0) { + /* @BUG? - shouldn't this be subtracting 1 to get the real type of the effect? */ + eEC_CLIP->effect_kill_proc(*feel_type_p, RSV_NO); + *feel_type_p = 0; + } + break; + case 2: + anim0_idx = mPlayer_ANIM_GAAAN1; + mode = cKF_FRAMECONTROL_STOP; + break; + case 0xFE: + anim0_idx = mPlayer_ANIM_BIKU1; + mode = cKF_FRAMECONTROL_STOP; + break; + default: + return; + } + } else { + + if (end_flag != FALSE) { + int now_anim0_idx = player->animation0_idx; + + if (now_anim0_idx == mPlayer_ANIM_GAAAN1) { + anim0_idx = mPlayer_ANIM_GAAAN2; + mode = cKF_FRAMECONTROL_REPEAT; + } else if (now_anim0_idx == mPlayer_ANIM_BIKU1) { + anim0_idx = mPlayer_ANIM_WAIT1; + mode = cKF_FRAMECONTROL_REPEAT; + } else { + return; + } + } else { + return; + } + } + + Player_actor_SetupItem_Base1(actorx, anim0_idx, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base2(actorx, game, anim0_idx, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, mode, part_table_idx); +} + +static void Player_actor_ChangeAnimation_FromDemoOrder_Talk(ACTOR* actorx, GAME* game, int order, int end_flag) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + Player_actor_ChangeAnimation_FromDemoOrder_common(actorx, game, order, end_flag, &player->main_data.talk.feel_type); +} + +static void Player_actor_SetEffect_FromDemoOrder_common(ACTOR* actorx, GAME* game, int order) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + + if (order > 0) { + switch (order) { + case 0xFD: + eEC_CLIP->effect_make_proc(eEC_EFFECT_HALLOWEEN, player->feel_pos, 2, actorx->shape_info.rotation.y, + game, RSV_NO, 0, 0); + break; + } + } +} + +static void Player_actor_SetEffect_FromDemoOrder_Talk(ACTOR* actorx, GAME* game, int order) { + Player_actor_SetEffect_FromDemoOrder_common(actorx, game, order); +} + +static void Player_actor_set_eye_pattern_Talk(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + int anim0_idx = player->animation0_idx; + + if (anim0_idx == mPlayer_ANIM_GAAAN1 || anim0_idx == mPlayer_ANIM_BIKU1) { + Player_actor_set_tex_anime_pattern(actorx); + } else if (anim0_idx == mPlayer_ANIM_GAAAN2) { + Player_actor_set_eye_pattern(actorx, 6); + Player_actor_set_mouth_pattern(actorx, 5); + } else { + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_set_mouth_pattern(actorx, 0); + } +} + +static void Player_actor_ObjCheck_Talk(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forBrake(actorx, game); +} + +static void Player_actor_BGcheck_Talk(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_main_Talk(ACTOR* actorx, GAME* game) { + int order; + f32 last_cur_anim0_frame; + int end_flag; + + order = Player_actor_RecieveDemoOrder_EffectOrder(); + Player_actor_Movement_Talk(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + end_flag = Player_actor_CulcAnimation_Talk(actorx, &last_cur_anim0_frame); + Player_actor_SearchAnimation_Talk(actorx, last_cur_anim0_frame); + Player_actor_ChangeAnimation_FromDemoOrder_Talk(actorx, game, order, end_flag); + Player_actor_SetEffect_FromDemoOrder_Talk(actorx, game, order); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_Talk(actorx); + Player_actor_ObjCheck_Talk(actorx, game); + Player_actor_BGcheck_Talk(actorx); + Player_actor_Item_main(actorx, game); +} diff --git a/src/m_player_main_throw_money.c_inc b/src/m_player_main_throw_money.c_inc new file mode 100644 index 00000000..7b0a0921 --- /dev/null +++ b/src/m_player_main_throw_money.c_inc @@ -0,0 +1,116 @@ +static int Player_actor_request_main_throw_money_all(GAME* game, const xyz_t* pos_p, s16 angle_y, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_THROW_MONEY, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_throw_money_c* req_throw_money_p = &player->requested_main_index_data.throw_money; + + Player_actor_request_main_index(game, mPlayer_INDEX_THROW_MONEY, priority); + + req_throw_money_p->pos = *pos_p; + req_throw_money_p->angle_y = angle_y; + + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Throw_money(ACTOR* actorx, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + mPlayer_request_throw_money_c* req_throw_money_p = &player->requested_main_index_data.throw_money; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(kf0_p, 0.0f, 1000.0f, 0.0f, 0, 0, DEG2SHORT_ANGLE2(90.0f)); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actorx->world.position, &req_throw_money_p->pos, + actorx->shape_info.rotation.y, req_throw_money_p->angle_y, 5.0f, kf0_p, + cKF_ANIMATION_TRANS_XZ | cKF_ANIMATION_ROT_Y); + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_SAISEN1, mPlayer_ANIM_SAISEN1, 1.0f, 1.0f, 0.5f, -5.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); + + if (Camera2_Check_main_index(play, CAMERA2_PROCESS_NORMAL)) { + Camera2_request_main_simple(play, &play->camera.lookat.center, &play->camera.direction, + play->camera.focus_distance, 0, 9); + } +} + +static void Player_actor_settle_main_Throw_money(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_dt(kf0_p); + actorx->world.angle.y = actorx->shape_info.rotation.y; +} + +static int Player_actor_CulcAnimation_Throw_money(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + return Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_Movement_Throw_money(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + + cKF_SkeletonInfo_R_AnimationMove_base(&actorx->world.position, &actorx->shape_info.rotation.y, &actorx->scale, + actorx->world.angle.y, kf0_p); + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Throw_money(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Throw_money(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_SetSound_Throw_money(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 9.0f)) { + Player_actor_sound_coin_gasagoso(actorx); + } +} + +static void Player_actor_SetEffect_Throw_money(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 33.0f)) { + eEC_CLIP->effect_make_proc(eEC_EFFECT_COIN, actorx->world.position, 2, 0, game, RSV_NO, 0, 0); + } +} + +static void Player_actor_SearchAnimation_Throw_money(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetSound_Throw_money(actorx); + Player_actor_SetEffect_Throw_money(actorx, game); + } +} + +static void Player_actor_request_proc_index_fromThrow_money(ACTOR* actorx, GAME* game, int end_flag) { + if (end_flag) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_pray_all(game, &actorx->world.position, actorx->shape_info.rotation.y, + mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Throw_money(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + int end_flag; + + end_flag = Player_actor_CulcAnimation_Throw_money(actorx, &last_anim0_cur_frame); + Player_actor_Movement_Throw_money(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_SearchAnimation_Throw_money(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Throw_money(actorx, game); + Player_actor_BGcheck_Throw_money(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromThrow_money(actorx, game, end_flag); +} diff --git a/src/m_player_main_tired.c_inc b/src/m_player_main_tired.c_inc new file mode 100644 index 00000000..98c61440 --- /dev/null +++ b/src/m_player_main_tired.c_inc @@ -0,0 +1,63 @@ +static int Player_actor_request_main_tired_all(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TIRED, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_TIRED, priority); + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_main_Tired(ACTOR* actorx, GAME* game) { + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_TIRED1, mPlayer_ANIM_TIRED1, 1.0f, 1.0f, 0.5f, 0.0f, + mPlayer_PART_TABLE_NORMAL); + Player_actor_set_eye_pattern(actorx, 4); + Player_actor_set_mouth_pattern(actorx, 4); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_Movement_Tired(ACTOR* actorx) { + Player_actor_Movement_Base_Braking_common(actorx, 0.23925f); +} + +static void Player_actor_CulcAnimation_Tired(ACTOR* actorx, f32* last_anim0_cur_frame_p) { + Player_actor_CulcAnimation_Base2(actorx, last_anim0_cur_frame_p); +} + +static void Player_actor_SetEffect_Tired(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + + if (Player_actor_Check_AnimationFrame(fc0_p, 10.0f)) { + Player_actor_sound_araiiki(actorx); + eEC_CLIP->effect_make_proc(eEC_EFFECT_DUST, player->feel_pos, 2, actorx->shape_info.rotation.y, game, RSV_NO, 0, + 0); + } +} + +static void Player_actor_SearchAnimation_Tired(ACTOR* actorx, GAME* game, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + Player_actor_SetEffect_Tired(actorx, game); + } +} + +static void Player_actor_ObjCheck_Tired(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Tired(ACTOR* actorx) { + Player_actor_BGcheck_common_type1(actorx); +} + +static void Player_actor_main_Tired(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + + Player_actor_Movement_Tired(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Tired(actorx, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Tired(actorx, game, last_anim0_cur_frame); + Player_actor_recover_lean_angle(actorx); + Player_actor_ObjCheck_Tired(actorx, game); + Player_actor_BGcheck_Tired(actorx); + Player_actor_Item_main(actorx, game); +} diff --git a/src/m_player_main_tumble.c_inc b/src/m_player_main_tumble.c_inc new file mode 100644 index 00000000..2d7f03a7 --- /dev/null +++ b/src/m_player_main_tumble.c_inc @@ -0,0 +1,151 @@ +static int Player_actor_request_main_tumble(GAME* game, int priority) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TUMBLE, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_TUMBLE, priority); + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_Item_Tumble(ACTOR* actor, GAME* game, int kind, f32 speed) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + int check = FALSE; + + if (mPlayer_ITEM_IS_NET(kind)) { + check = TRUE; + } + + if (check == FALSE) { + Player_actor_LoadOrDestruct_Item(actor, kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(kind), 0.5f, speed, + -1.0f, cKF_FRAMECONTROL_REPEAT); + Player_actor_Set_now_item_main_index(actor, Player_actor_Get_BasicItemMainIndex_fromItemKind(kind)); + player->item_kind = kind; + } else { + Player_actor_LoadOrDestruct_Item(actor, kind, mPlayer_ANIM_GET1, 0.5f, speed, -1.0f, cKF_FRAMECONTROL_STOP); + Player_actor_Set_now_item_main_index(actor, mPlayer_INDEX_RETURN_OUTDOOR); + player->item_kind = kind; + } +} + +static int Player_actor_Get_PlayerAnimeIndex_fromItemKind_Tumble(int kind) { + static const u8 data[] = { + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, + mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_N1, mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, + mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, mPlayer_ANIM_KOKERU_A1, + }; + + if (mPlayer_ITEM_KIND_VALID(kind)) { + return data[kind]; + } else { + return mPlayer_ANIM_KOKERU1; + } +} + +static void Player_actor_effect_Tumble(ACTOR* actor, GAME* game, s16 arg) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TUMBLE, actor->world.position, 2, actor->world.angle.y, + game, 0xFFFF, actor->bg_collision_check.result.unit_attribute, arg); +} + +static void Player_actor_setup_main_Tumble(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind(actor, player->requested_main_index); + int anim_idx = Player_actor_Get_PlayerAnimeIndex_fromItemKind_Tumble(kind); + + Player_actor_setup_Item_Tumble(actor, game, kind, -5.0f); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_Tumble(actor); + Player_actor_effect_Tumble(actor, game, 0); + mISL_SetNowPlayerAction(mISL_PLAYER_ACTION_TUMBLE); +} + +static int Player_actor_Movement_Tumble(ACTOR* actor) { + return Player_actor_Movement_Base_Braking_common(actor, 0.175f); +} + +static void Player_actor_recover_lean_angle_Tumble(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 cur = 17.0f - player->keyframe0.frame_control.current_frame; + + if (cur > 0.0f) { + add_calc_short_angle2(&actor->shape_info.rotation.x, 0, 1.0f - sqrtf(1.0f - (1.0f / cur)), 1820, 0); + } else { + actor->shape_info.rotation.x = 0; + } +} + +static int Player_actor_CulcAnimation_Tumble(ACTOR* actor, f32* frame_calc) { + return Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Tumble(ACTOR* actor, GAME* game, int base) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, 10.0f) != FALSE) { + Player_actor_set_viblation_Tumble(); + + } else if (Player_actor_Check_AnimationFrame(fc, 15.0f) != FALSE) { + Player_actor_effect_Tumble(actor, game, 1); + } else if (Player_actor_Check_AnimationFrame(fc, 17.0f) != FALSE) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TUMBLE_BODYPRINT, actor->world.position, 2, + actor->world.angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + } +} + +static void Player_actor_SearchAnimation_Tumble(ACTOR* actor, GAME* game, f32 frame, int base) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_SetEffect_Tumble(actor, game, base); + } +} + +static void Player_actor_ObjCheck_Tumble(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Tumble(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromTumble(GAME* game, int arg1, int arg2) { + if (arg1 != 0 && arg2 != 0) { + Player_actor_request_main_tumble_getup(game, mPlayer_REQUEST_PRIORITY_21); + } +} + +static void Player_actor_main_Tumble(ACTOR* actor, GAME* game) { + int is_stopped; + int calc; + f32 frame_calc; + + is_stopped = Player_actor_Movement_Tumble(actor); + Player_actor_Reinput_force_position_angle(actor, game); + calc = Player_actor_CulcAnimation_Tumble(actor, &frame_calc); + Player_actor_SearchAnimation_Tumble(actor, game, frame_calc, calc); + Player_actor_recover_lean_angle_Tumble(actor); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Tumble(actor, game); + Player_actor_BGcheck_Tumble(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromTumble(game, is_stopped, calc); +} diff --git a/src/m_player_main_tumble_getup.c_inc b/src/m_player_main_tumble_getup.c_inc new file mode 100644 index 00000000..b44295f8 --- /dev/null +++ b/src/m_player_main_tumble_getup.c_inc @@ -0,0 +1,136 @@ +static int Player_actor_request_main_tumble_getup(GAME* game, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TUMBLE_GETUP, prio)) { + Player_actor_request_main_index(game, mPlayer_INDEX_TUMBLE_GETUP, prio); + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_setup_Item_Tumble_getup(ACTOR* actor, GAME* game, int kind, f32 speed) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int check = FALSE; + ACTOR* balloon = player->balloon_actor; + + if (mPlayer_ITEM_IS_BALLOON(kind)) { + check = TRUE; + } + + if (check && balloon) { + s_xyz angle; + xyz_t pos; + f32 frame; + + player->main_data.balloon.balloon_shape_type = mPlib_Get_ItemKindTOBalloonShapeType(kind); + kind = -1; + Player_actor_Set_ItemNoSubmenu(EMPTY_NO); + frame = player->item_keyframe.frame_control.current_frame; + + angle.x = player->balloon_lean_angle + player->balloon_angle.x + player->ballon_add_rot_x; + angle.y = actor->shape_info.rotation.y; + angle.z = 0; + + pos = player->right_hand_pos; + Ac_Balloon_request_fly(player->balloon_actor, game, player->main_data.balloon.balloon_shape_type, &angle, + player->balloon_angle.z, &pos, frame, 7.0f); + } else { + player->main_data.balloon.balloon_shape_type = -1; + } + + check = FALSE; + + if (mPlayer_ITEM_IS_NET(kind)) { + check = TRUE; + } + + if (check == FALSE) { + Player_actor_LoadOrDestruct_Item(actor, kind, mPlib_Get_BasicItemAnimeIndex_fromItemKind(kind), 0.5f, speed, + -1.0f, cKF_FRAMECONTROL_REPEAT); + Player_actor_Set_now_item_main_index(actor, Player_actor_Get_BasicItemMainIndex_fromItemKind(kind)); + player->item_kind = kind; + } else { + Player_actor_LoadOrDestruct_Item(actor, kind, mPlayer_ANIM_RTURN1, 0.5f, speed, -1.0f, cKF_FRAMECONTROL_STOP); + Player_actor_Set_now_item_main_index(actor, mPlayer_INDEX_RETURN_OUTDOOR2); + player->item_kind = kind; + } +} + +static int Player_actor_Get_PlayerAnimeIndex_fromItemKind_Tumble_getup(int kind) { + static const u8 data[] = { + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, + mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_N1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, mPlayer_ANIM_KOKERU_GETUP_A1, + mPlayer_ANIM_KOKERU_GETUP_A1, + }; + + if (mPlayer_ITEM_KIND_VALID(kind)) { + return data[kind]; + } else { + return mPlayer_ANIM_KOKERU_GETUP1; + } +} + +static void Player_actor_setup_main_Tumble_getup(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int kind = Player_actor_Get_ItemKind(actor, player->requested_main_index); + int anim_idx = Player_actor_Get_PlayerAnimeIndex_fromItemKind_Tumble_getup(kind); + + Player_actor_setup_Item_Tumble_getup(actor, game, kind, -5.0f); + Player_actor_InitAnimation_Base2(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0, 0); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_request_proc_index_fromTumble_getup(ACTOR* actor, GAME* game, int calc) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (calc != 0) { + if (player->main_data.balloon.balloon_shape_type < 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } else { + mPlayer_request_release_creature_u release_creature; + + release_creature.balloon.balloon_type = player->main_data.balloon.balloon_shape_type; + Player_actor_request_main_release_creature_all(game, mPlayer_CREATURE_BALLOON, FALSE, &release_creature, + player->balloon_actor, mPlayer_REQUEST_PRIORITY_30); + } + } +} + +static void Player_actor_main_Tumble_getup(ACTOR* actor, GAME* game) { + int calc; + f32 frame_calc; + + Player_actor_Movement_Tumble(actor); + calc = Player_actor_CulcAnimation_Tumble(actor, &frame_calc); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_set_tex_anime_pattern(actor); + Player_actor_ObjCheck_Tumble(actor, game); + Player_actor_BGcheck_Tumble(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromTumble_getup(actor, game, calc); +} diff --git a/src/m_player_main_turn_dash.c_inc b/src/m_player_main_turn_dash.c_inc new file mode 100644 index 00000000..52ded8d5 --- /dev/null +++ b/src/m_player_main_turn_dash.c_inc @@ -0,0 +1,97 @@ +static int Player_actor_request_main_turn_dash(GAME* game, s16 angle, int prio) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_TURN_DASH, prio)) { + player = GET_PLAYER_ACTOR_GAME(game); + player->requested_main_index_data.turn_dash.target_angle_y = angle; + Player_actor_request_main_index(game, mPlayer_INDEX_TURN_DASH, prio); + return TRUE; + } else { + return FALSE; + } +} + +static int Player_actor_request_main_turn_dash_all(GAME* game, s16 angle, int prio) { + return Player_actor_request_main_turn_dash(game, angle, prio) != FALSE; +} + +static void Player_actor_setup_main_Turn_dash_common(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int anim_idx; + int part_table_idx; + + player->main_data.turn_dash.target_angle_y = player->requested_main_index_data.turn_dash.target_angle_y; + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_RUN_SLIP1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_RUN_SLIP1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + Player_actor_setup_main_Base(actor, game); + Player_actor_sound_slip(actor); + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TURN_ASIMOTO, actor->world.position, 2, + actor->world.angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); +} + +static void Player_actor_setup_main_Turn_dash(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Turn_dash_common(actor, game); +} + +static void Player_actor_settle_main_Turn_dash(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_TURN_FOOTPRINT, player->right_foot_pos, 2, + actor->world.angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + actor->world.angle.y = actor->shape_info.rotation.y; +} + +static int Player_actor_Movement_Turn_dash(ACTOR* actor) { + return Player_actor_Movement_Base_Braking_common(actor, 0.261f); +} + +static int Player_actor_ChangeDirection_Turn_dash(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + s16* rot = &actor->shape_info.rotation.y; + s16 target = player->main_data.turn_dash.target_angle_y; + + return add_calc_short_angle3(rot, target, 1.0f - sqrtf(0.5), 2500, 50) == 0; +} + +static int Player_actor_CulcAnimation_Turn_dash(ACTOR* actor) { + return Player_actor_CulcAnimation_Base(actor); +} + +static void Player_actor_ObjCheck_Turn_dash(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Turn_dash(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromTurn_dash_common(ACTOR* actor, GAME* game, int is_stopped, + int rotdiff) { + if (is_stopped != 0 && rotdiff != 0) { + Player_actor_SettleRequestMainIndexPriority(actor); + Player_actor_request_main_wait_all(game, -12.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_request_proc_index_fromTurn_dash(ACTOR* actor, GAME* game, int arg2, int arg3) { + Player_actor_request_proc_index_fromTurn_dash_common(actor, game, arg2, arg3); +} + +static void Player_actor_main_Turn_dash(ACTOR* actor, GAME* game) { + int is_stopped; + int rotdiff; + + is_stopped = Player_actor_Movement_Turn_dash(actor); + Player_actor_Reinput_force_position_angle(actor, game); + rotdiff = Player_actor_ChangeDirection_Turn_dash(actor); + Player_actor_CulcAnimation_Turn_dash(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Turn_dash(actor, game); + Player_actor_BGcheck_Turn_dash(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromTurn_dash(actor, game, is_stopped, rotdiff); +} diff --git a/src/m_player_main_vib_rod.c_inc b/src/m_player_main_vib_rod.c_inc new file mode 100644 index 00000000..b18b05c3 --- /dev/null +++ b/src/m_player_main_vib_rod.c_inc @@ -0,0 +1,60 @@ +static int Player_actor_request_main_vib_rod(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_VIB_ROD, priority)) { + Player_actor_request_main_index(game, mPlayer_INDEX_VIB_ROD, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Vib_rod(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 frame = player->item_keyframe.frame_control.current_frame; + int kind = Player_actor_Get_ItemKind_from_submenu(); + + Player_actor_SetupItem_Base2(actor, kind, mPlayer_ANIM_UMB_OPEN1, mPlayer_INDEX_OUTDOOR, -5.0f, frame, 1); + Player_actor_InitAnimation_Base2(actor, game, mPlayer_ANIM_TURI_HIKI1, mPlayer_ANIM_TURI_HIKI1, 1.0f, 1.0f, 0.5f, + -3.0f, 1, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Vib_rod(ACTOR* actor) { + Player_actor_SetPlayerAngle_forUki(actor); + Player_actor_Movement_Base_Braking_common(actor, 0.32625001f); +} + +static int Player_actor_CulcAnimation_Vib_rod(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Vib_rod(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Vib_rod(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromVib_rod(GAME* game, int status) { + if (status != 0) { + Player_actor_request_main_fly_rod(game, mPlayer_REQUEST_PRIORITY_27); + } +} + +static void Player_actor_main_Vib_rod(ACTOR* actor, GAME* game) { + int status; + + Player_actor_Movement_Vib_rod(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Vib_rod(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Vib_rod(actor, game); + Player_actor_BGcheck_Vib_rod(actor); + status = Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromVib_rod(game, status); + Player_actor_main_Vib_rod_other_func2(actor, game); +} diff --git a/src/m_player_main_wade.c_inc b/src/m_player_main_wade.c_inc new file mode 100644 index 00000000..8ed17f95 --- /dev/null +++ b/src/m_player_main_wade.c_inc @@ -0,0 +1,127 @@ +static int Player_actor_request_main_wade(GAME* game, int dir, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WADE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_wade_c* request_wade_p = &player->requested_main_index_data.wade; + + request_wade_p->dir = dir; + Player_actor_request_main_index(game, mPlayer_INDEX_WADE, priority); + return TRUE; + } + + return FALSE; +} + +static int Player_actor_request_main_wade_all(GAME* game, int dir, int priority) { + return Player_actor_request_main_wade(game, dir, priority) != FALSE; +} + +static void Player_actor_setup_main_Wade_common(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_wade_c* request_wade_p = &player->requested_main_index_data.wade; + mPlayer_main_wade_c* main_wade_p = &player->main_data.wade; + xyz_t* pos_p; + int anim1_idx; + int part_table_idx; + int dir; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t eye_pos; + + Player_actor_setup_main_Wade_other_func1(actorx, game); + dir = request_wade_p->dir; + pos_p = &actorx->world.position; + Player_actor_SetupItem_Base1(actorx, 0, -5.0f, &anim1_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actorx, game, mPlayer_ANIM_WAIT1, anim1_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + main_wade_p->dir = dir; + main_wade_p->start_pos = *pos_p; + + Player_actor_Culc_wade_end_pos(pos_p, &main_wade_p->end_pos, dir, 18.00001f); + main_wade_p->timer = 0.0f; + Player_actor_setup_main_Base(actorx, game); + + eye_pos = main_wade_p->end_pos; + eye_pos.y += actorx->eye.position.y - pos_p->y; + Camera2_request_main_wade(play, &eye_pos, 9, 36.0f); + Player_actor_setup_main_Wade_other_func2(actorx, game); +} + +static void Player_actor_setup_main_Wade(ACTOR* actorx, GAME* game) { + Player_actor_setup_main_Wade_common(actorx, game); +} + +static void Player_actor_settle_main_Wade(ACTOR* actorx, GAME* game) { + mDemo_End(actorx); +} + +static void Player_actor_CulcAnimation_Wade(ACTOR* actorx) { + f32 last_kf0_current_frame; + + Player_actor_CulcAnimation_Base2(actorx, &last_kf0_current_frame); +} + +static void Player_actor_Movement_Wade(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wade_c* main_wade_p = &player->main_data.wade; + xyz_t* start_pos_p = &main_wade_p->start_pos; + xyz_t* end_pos_p = &main_wade_p->end_pos; + xyz_t* pos_p = &actorx->world.position; + f32 timer = main_wade_p->timer; + f32 percent = get_percent_forAccelBrake(timer, 0.0f, 36.0f, 1.1999999f, 34.8f); + + pos_p->x = start_pos_p->x + percent * (end_pos_p->x - start_pos_p->x); + pos_p->y = start_pos_p->y + percent * (end_pos_p->y - start_pos_p->y); + pos_p->z = start_pos_p->z + percent * (end_pos_p->z - start_pos_p->z); + + Player_actor_Movement_Base_Stop(actorx, FALSE); +} + +static void Player_actor_ObjCheck_Wade(ACTOR* actorx, GAME* game) { + Player_actor_Excute_Corect_forStand(actorx, game); +} + +static void Player_actor_BGcheck_Wade(ACTOR* actorx) { + Player_actor_BGcheck_common_type2(actorx); +} + +static int Player_actor_able_request_proc_index_fromWade_common(ACTOR* actorx) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wade_c* main_wade_p = &player->main_data.wade; + f32* timer_p = &main_wade_p->timer; + + if (*timer_p > 36.0f) { + return TRUE; + } + + *timer_p += 1.0f; + return FALSE; +} + +static void Player_actor_request_proc_index_fromWade(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wade_c* main_wade_p = &player->main_data.wade; + + if (Player_actor_able_request_proc_index_fromWade_common(actorx)) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_walk_all(game, &main_wade_p->end_pos, -5.0f, + mPlayer_WALK_FLAG_SET_POS | mPlayer_WALK_FLAG_RESET_MORPH, 1); + } +} + +static int Player_actor_Request_Wade(ACTOR* actorx) { + return TRUE; +} + +static void Player_actor_main_Wade(ACTOR* actorx, GAME* game) { + if (Player_actor_Request_Wade(actorx)) { + Player_actor_main_Wade_other_func1(actorx, game); + Player_actor_Movement_Wade(actorx); + Player_actor_Reinput_force_position_angle(actorx, game); + Player_actor_CulcAnimation_Wade(actorx); + Player_actor_recover_lean_angle(actorx); + Player_actor_set_eye_pattern_normal(actorx); + Player_actor_ObjCheck_Wade(actorx, game); + Player_actor_BGcheck_Wade(actorx); + Player_actor_Item_main(actorx, game); + Player_actor_request_proc_index_fromWade(actorx, game); + } +} diff --git a/src/m_player_main_wade_snowball.c_inc b/src/m_player_main_wade_snowball.c_inc new file mode 100644 index 00000000..43ba4eba --- /dev/null +++ b/src/m_player_main_wade_snowball.c_inc @@ -0,0 +1,144 @@ +static int Player_actor_request_main_wade_snowball_all(GAME* game, int dir, const xyz_t* snowball_dist_p, + int priority) { + if (GET_PLAYER_ACTOR_GAME(game)->now_main_index == mPlayer_INDEX_PUSH_SNOWBALL) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WADE_SNOWBALL, priority)) { + player->requested_main_index_data.wade_snowball.dir = dir; + player->requested_main_index_data.wade_snowball.snowball_dist = *snowball_dist_p; + player->requested_main_index_data.wade_snowball.label = player->main_data.push_snowball.label; + + Player_actor_request_main_index(game, mPlayer_INDEX_WADE_SNOWBALL, priority); + + return TRUE; + } + } + + return FALSE; +} + +static void Player_actor_setup_main_Wade_snowball(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t* world_pos; + xyz_t camera_pos; + int dir; + f32 t; + xyz_t* end_pos; + + Player_actor_setup_main_Wade_snowball_other_func1(actor, game); + dir = player->requested_main_index_data.wade_snowball.dir; + + player->main_data.wade_snowball.dir = dir; + world_pos = &actor->world.position; + end_pos = &player->main_data.wade_snowball.end_pos; + + player->main_data.wade_snowball.start_pos = *world_pos; + player->main_data.wade_snowball.start_pos = *world_pos; + + Player_actor_Culc_wade_end_pos(world_pos, end_pos, dir, 18.00001f); + + player->main_data.wade_snowball.timer = 0.0f; + + player->main_data.wade_snowball.snowball_dist = player->requested_main_index_data.wade_snowball.snowball_dist; + player->main_data.wade_snowball.snowball_label = player->requested_main_index_data.wade_snowball.label; + + Player_actor_setup_main_Base(actor, game); + camera_pos = player->main_data.wade_snowball.end_pos; + + camera_pos.y += actor->eye.position.y - world_pos->y; + + Camera2_request_main_wade(play, &camera_pos, 9, 36.0f); + + Player_actor_setup_main_Wade_snowball_other_func2(actor, game); +} + +static void Player_actor_settle_main_Wade_snowball(ACTOR* actor, GAME* game) { + mDemo_End(actor); +} + +static void Player_actor_ChangeAnimation_Wade_snowball(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->animation0_idx != mPlayer_ANIM_WAIT1 && player->crash_snowball_for_wade != FALSE) { + int anim_idx; + int part_table_idx; + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_WAIT1, -5.0f, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, + part_table_idx); + } +} + +static int Player_actor_CulcAnimation_Wade_snowball(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->animation0_idx == mPlayer_ANIM_WAIT1) { + f32 calc_frame; + return Player_actor_CulcAnimation_Base2(actor, &calc_frame); + } else { + return 0; + } +} + +static void Player_actor_Movement_Wade_snowball(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_wade_snowball_c* main_wade_snowball_p = &player->main_data.wade_snowball; + xyz_t* start_pos; + xyz_t* end_pos; + f32 brake; + + start_pos = &main_wade_snowball_p->start_pos; + end_pos = &main_wade_snowball_p->end_pos; + + brake = get_percent_forAccelBrake(player->main_data.wade_snowball.timer, 0.0f, 36.0f, 1.1999999f, 34.8f); + actor->world.position.x = start_pos->x + (brake * (end_pos->x - start_pos->x)); + actor->world.position.y = start_pos->y + (brake * (end_pos->y - start_pos->y)); + actor->world.position.z = start_pos->z + (brake * (end_pos->z - start_pos->z)); + + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static void Player_actor_BGcheck_Wade_snowball(ACTOR* actor) { + Player_actor_BGcheck_common_type2(actor); +} + +static int Player_actor_able_request_proc_index_fromWade_snowball_common(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (player->main_data.wade_snowball.timer > 36.0f) { + return TRUE; + } else { + player->main_data.wade_snowball.timer += 1.0f; + return FALSE; + } +} + +static void Player_actor_request_proc_index_fromWade_snowball(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_able_request_proc_index_fromWade_snowball_common(actor)) { + int anim_idx = player->animation0_idx; + Player_actor_SettleRequestMainIndexPriority(actor); + + if (anim_idx != mPlayer_ANIM_WAIT1 && player->crash_snowball_for_wade == FALSE) { + Player_actor_request_main_push_snowball_all(game, (void*)player->main_data.wade_snowball.snowball_label, 1, + mPlayer_REQUEST_PRIORITY_2); + } else { + Player_actor_request_main_walk_all(game, &player->main_data.wade_snowball.end_pos, -5.0f, 6, 1); + } + } +} + +static void Player_actor_main_Wade_snowball(ACTOR* actor, GAME* game) { + if (Player_actor_Request_Wade(actor) != FALSE) { + Player_actor_main_Wade_snowball_other_func1(actor, game); + Player_actor_Movement_Wade_snowball(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_ChangeAnimation_Wade_snowball(actor, game); + Player_actor_CulcAnimation_Wade_snowball(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_BGcheck_Wade_snowball(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromWade_snowball(actor, game); + } +} diff --git a/src/m_player_main_wait.c_inc b/src/m_player_main_wait.c_inc new file mode 100644 index 00000000..c523a72d --- /dev/null +++ b/src/m_player_main_wait.c_inc @@ -0,0 +1,115 @@ +static int Player_actor_request_main_wait_all(GAME* game, f32 morph_speed, f32 _04, int flags, int priority) { + + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WAIT, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + + Player_actor_request_main_index(game, mPlayer_INDEX_WAIT, priority); + + player->requested_main_index_data.wait.morph_speed = morph_speed; + player->requested_main_index_data.wait.flags = flags; + player->requested_main_index_data.wait._04 = _04; + + return TRUE; + } else { + return FALSE; + } +} + +static void Player_actor_request_main_wait_from_submenu(ACTOR* actor, GAME* game) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_31); +} + +static void Player_actor_setup_main_Wait(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.wait.flags; + f32 speed = player->requested_main_index_data.wait.morph_speed; + f32 absspeed; + int anim_idx; + int part_table_idx; + + if (flags & 4) { + player->main_data.wait.radio_exercise_command = 0; + } else { + player->main_data.wait.radio_exercise_command = 1; + player->radio_exercise_continue_cmd_idx = -1; + player->radio_exercise_cmd_timer = 0.0f; + } + + absspeed = ABS(speed); + + Player_actor_SetupItem_Base1(actor, mPlayer_ANIM_WAIT1, -absspeed, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WAIT1, anim_idx, 1.0f, 1.0f, 0.5f, speed, + part_table_idx); + + if (flags & 1) { + Player_actor_SetEffect_forTakeout_item(actor, game); + } + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Set_RadioExerciseCommand_Wait(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_Set_RadioExerciseCommand(actor, game, player->main_data.wait.radio_exercise_command); + player->main_data.wait.radio_exercise_command = 0; +} + +static void Player_actor_Movement_Wait(ACTOR* actor) { + Player_actor_Movement_Base_Braking_common(actor, 0.23925f); +} + +static void Player_actor_CulcAnimation_Wait(ACTOR* actor) { + f32 base; + + Player_actor_CulcAnimation_Base2(actor, &base); +} + +static void Player_actor_ObjCheck_Wait(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Wait(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromWait(ACTOR* actor, GAME* game) { + + if (!actor->bg_collision_check.result.on_ground) { + Player_actor_request_main_fall_all(game, -5.0f, 1, mPlayer_REQUEST_PRIORITY_1); + } + + Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4); + + if (Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_4); + } + + if (Player_actor_CheckController_forRod(game) != 0) { + Player_actor_request_main_ready_rod(game, mPlayer_REQUEST_PRIORITY_4); + } + + Player_actor_CheckAndRequest_main_scoop_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_umbrella_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_shake_tree_all(game); + + if ((Player_actor_GetController_move_percentX()) || (Player_actor_GetController_move_percentY())) { + Player_actor_request_main_walk_all(game, NULL, -5.0f, 4, mPlayer_REQUEST_PRIORITY_1); + } + Player_actor_CheckAndRequest_main_pickup_all(game); + Player_actor_CheckAndRequest_main_radio_exercise_all(game, mPlayer_REQUEST_PRIORITY_0); +} + +static void Player_actor_main_Wait(ACTOR* actor, GAME* game) { + Player_actor_Set_RadioExerciseCommand_Wait(actor, game); + Player_actor_Movement_Wait(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Wait(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Wait(actor, game); + Player_actor_BGcheck_Wait(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromWait(actor, game); +} diff --git a/src/m_player_main_wait_bed.c_inc b/src/m_player_main_wait_bed.c_inc new file mode 100644 index 00000000..97738068 --- /dev/null +++ b/src/m_player_main_wait_bed.c_inc @@ -0,0 +1,106 @@ +static int Player_actor_Check_able_request_main_wait_bed(GAME* game) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int index = player->now_main_index; + + switch (index) { + case mPlayer_INDEX_LIE_BED: + case mPlayer_INDEX_ROLL_BED: + return TRUE; + default: + + return FALSE; + } +} + +static int Player_actor_request_main_wait_bed(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WAIT_BED, priority) && + Player_actor_Check_able_request_main_wait_bed(game)) { + Player_actor_request_main_index(game, mPlayer_INDEX_WAIT_BED, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Wait_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + mPlayer_main_wait_bed_c* req_wait = &player->main_data.wait_bed; + + req_wait->flags = 0; + + actor->world.angle = actor->shape_info.rotation; + + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_BED_WAIT1, mPlayer_ANIM_BED_WAIT1, 1.0f, 1.0f, 0.5f, + 0.0f, 0); + Player_actor_set_eye_pattern(actor, 2); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_Movement_Wait_bed(ACTOR* actor) { + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static int Player_actor_CulcAnimation_Wait_bed(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_request_proc_index_fromWait_bed(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (Player_actor_GetController_move_percentR() > 0.5f) { + s16 angle = Player_actor_Get_ControllerAngle(game); + int dir = 0; + int dir_angle = Player_actor_Get_Direction_fromAngle(actor->world.angle.y); + int check1 = angle < DEG2SHORT_ANGLE2(-165.005f); + int check2 = angle > DEG2SHORT_ANGLE2(165.005f); + int check4 = angle < DEG2SHORT_ANGLE2(15.0f); + int check3 = angle > DEG2SHORT_ANGLE2(-15.0f); + int check6 = angle < DEG2SHORT_ANGLE2(105.0f); + int check5 = angle > DEG2SHORT_ANGLE2(75.005f); + int check8 = angle < DEG2SHORT_ANGLE2(-75.005f); + int check7 = angle > DEG2SHORT_ANGLE2(-105.0f); + + if (dir_angle == 1 || dir_angle == 2) { + if (check1 || check2) { + dir = 3; + } else if (check3 && check4) { + dir = 4; + } + } else if (check5 && check6) { + dir = 1; + } else if (check7 && check8) { + dir = 2; + } + + if (dir != 0) { + if (player->main_data.wait_bed.flags) { + int action = 1; + + if (Common_Get(clip).my_room_clip != NULL) { + action = Common_Get(clip).my_room_clip->get_bed_action_proc(actor, dir); + } + + if (action == 1) { + Player_actor_request_main_roll_bed(game, dir, mPlayer_REQUEST_PRIORITY_22); + } else if (action == 2) { + Player_actor_request_main_standup_bed(game, dir, mPlayer_REQUEST_PRIORITY_22); + } + } + } else { + player->main_data.wait_bed.flags = 1; + } + } else { + player->main_data.wait_bed.flags = 1; + } +} + +static void Player_actor_main_Wait_bed(ACTOR* actor, GAME* game) { + Player_actor_Movement_Wait_bed(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Wait_bed(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromWait_bed(actor, game); +} diff --git a/src/m_player_main_wait_open_furniture.c_inc b/src/m_player_main_wait_open_furniture.c_inc new file mode 100644 index 00000000..cbff32ea --- /dev/null +++ b/src/m_player_main_wait_open_furniture.c_inc @@ -0,0 +1,69 @@ +static int Player_actor_request_main_wait_open_furniture(GAME* game, int priority) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WAIT_OPEN_FURNITURE, priority)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + int anim_idx; + switch (player->animation0_idx) { + case mPlayer_ANIM_KAGU_OPEN_D1: + anim_idx = mPlayer_ANIM_KAGU_WAIT_D1; + break; + case mPlayer_ANIM_KAGU_OPEN_H1: + anim_idx = mPlayer_ANIM_KAGU_WAIT_H1; + break; + default: + anim_idx = mPlayer_ANIM_KAGU_WAIT_K1; + break; + } + + player->requested_main_index_data.wait_open_furniture.anim_idx = anim_idx; + Player_actor_request_main_index(game, mPlayer_INDEX_WAIT_OPEN_FURNITURE, priority); + + return TRUE; + } + return FALSE; +} + +static void Player_actor_setup_main_Wait_open_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_SkeletonInfo_R_c* keyf; + mPlayer_request_wait_open_furniture_c* req_open = &player->requested_main_index_data.wait_open_furniture; + int anim_idx; + + keyf = &player->keyframe0; + anim_idx = req_open->anim_idx; + + cKF_SkeletonInfo_R_Animation_Set_base_shape_trs(keyf, 0.0f, 1000.0f, 200.0f, 0, 0, 0x4000); + cKF_SkeletonInfo_R_AnimationMove_ct_base(&actor->world.position, &actor->world.position, + actor->shape_info.rotation.y, 0, 5.0f, keyf, 1); + Player_actor_InitAnimation_Base1(actor, game, anim_idx, anim_idx, 1.0f, 1.0f, 0.5f, -5.0f, 0); + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_settle_main_Wait_open_furniture(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + cKF_SkeletonInfo_R_AnimationMove_dt(&player->keyframe0); +} + +static void Player_actor_Movement_Wait_open_furniture(ACTOR* actor) { + Player_actor_Movement_Base_Stop(actor, FALSE); +} + +static int Player_actor_CulcAnimation_Wait_open_furniture(ACTOR* actor) { + f32 frame_calc; + + return Player_actor_CulcAnimation_Base2(actor, &frame_calc); +} + +static void Player_actor_ObjCheck_Wait_open_furniture(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_main_Wait_open_furniture(ACTOR* actor, GAME* game) { + Player_actor_Movement_Wait_open_furniture(actor); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Wait_open_furniture(actor); + Player_actor_recover_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Wait_open_furniture(actor, game); + Player_actor_Item_main(actor, game); +} diff --git a/src/m_player_main_walk.c_inc b/src/m_player_main_walk.c_inc new file mode 100644 index 00000000..e9872fc8 --- /dev/null +++ b/src/m_player_main_walk.c_inc @@ -0,0 +1,286 @@ +static int Player_actor_request_main_walk_all(GAME* game, xyz_t* pos, f32 speed, int flags, int priority) { + PLAYER_ACTOR* player; + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WALK, priority)) { + player = GET_PLAYER_ACTOR_GAME(game); + + if (flags & 2) { + if (pos != NULL) { + player->requested_main_index_data.walk.pos = *pos; + } else { + player->requested_main_index_data.walk.pos.x = 0.0f; + player->requested_main_index_data.walk.pos.y = 0.0f; + player->requested_main_index_data.walk.pos.z = 0.0f; + } + } + + player->requested_main_index_data.walk.morph_speed = speed; + player->requested_main_index_data.walk.flags = flags; + + Player_actor_request_main_index(game, mPlayer_INDEX_WALK, priority); + + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Walk_common(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int flags = player->requested_main_index_data.walk.flags; + int anim_idx; + int part_table_idx; + f32 speed = player->requested_main_index_data.walk.morph_speed; + f32 absspeed; + f32 frame; + + if (flags & 2) { + actor->world.position = player->requested_main_index_data.walk.pos; + } + + if (player->requested_main_index_data.walk.flags & 4) { + frame = 1.0f; + } else { + frame = player->keyframe0.frame_control.current_frame; + } + + absspeed = ABS(speed); + + Player_actor_SetupItem_Base3(actor, mPlayer_ANIM_WALK1, -absspeed, &anim_idx, &part_table_idx); + Player_actor_InitAnimation_Base1(actor, game, mPlayer_ANIM_WALK1, anim_idx, frame, 1.0f, 0.5f, speed, + part_table_idx); + + if (flags & 1) { + Player_actor_SetEffect_forTakeout_item(actor, game); + } + + Player_actor_setup_main_Base(actor, game); +} + +static void Player_actor_setup_main_Walk(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Walk_common(actor, game); +} + +static void Player_actor_settle_main_Walk(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + switch (player->requested_main_index) { + case mPlayer_INDEX_WAIT: + + if (2.0f < player->keyframe0.frame_control.current_frame && + player->keyframe0.frame_control.current_frame < 9.0f || + 10.0f < player->keyframe0.frame_control.current_frame) { + Player_actor_sound_FootStep2(actor); + } + break; + } +} + +static void Player_actor_CulcAnimation_Walk(ACTOR* actor, f32 over_speed_normalize_NoneZero, f32* frame_calc) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 sp = (actor->speed * over_speed_normalize_NoneZero) / 7.5f; + + sp = sqrtf(sp); + sp = 0.59999996f * sp; + + if (actor->bg_collision_check.result.hit_wall_count == 2) { + if (!(actor->bg_collision_check.result.hit_wall & mCoBG_HIT_WALL_RIGHT) || + !(actor->bg_collision_check.result.hit_wall & mCoBG_HIT_WALL_LEFT)) + sp = 0.22f; + } else { + if (actor->bg_collision_check.result.hit_wall_count == 1) { + f32 mod = sin_s(actor->bg_collision_check.wall_info[0].angleY - actor->world.angle.y); + + mod = ABS(mod); + + sp *= sqrtf(mod); + } + + if (sp < 0.22f) { + sp = 0.22f; + } + } + + player->keyframe0.frame_control.speed = sp; + player->keyframe1.frame_control.speed = sp; + Player_actor_CulcAnimation_Base2(actor, frame_calc); +} + +static void Player_actor_SetEffect_Walk(ACTOR* actor, GAME* game, f32 left_target_frame, f32 right_target_frame) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + cKF_FrameControl_c* fc = &player->keyframe0.frame_control; + + if (Player_actor_Check_AnimationFrame(fc, left_target_frame) != FALSE) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_WALK_ASIMOTO, player->left_foot_pos, 2, + player->left_foot_angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + + } else if (Player_actor_Check_AnimationFrame(fc, right_target_frame) != FALSE) { + Common_Get(clip).effect_clip->effect_make_proc(eEC_EFFECT_WALK_ASIMOTO, player->right_foot_pos, 2, + player->right_foot_angle.y, game, 0xFFFF, + actor->bg_collision_check.result.unit_attribute, 0); + } +} + +static void Player_actor_SearchAnimation_Walk(ACTOR* actor, GAME* game, f32 frame) { + if (!Player_actor_Check_AnimationFrame_PerfectEquel(actor, frame)) { + Player_actor_Set_FootMark_Base1(actor, game, FALSE, FALSE); + Player_actor_SetEffect_Walk(actor, game, 1.0f, 9.0f); + } +} + +static void Player_actor_Movement_Walk(ACTOR* actor, GAME* game, f32* frame) { + f32 movePR = Player_actor_GetController_move_percentR(); + s16 angle = Player_actor_Get_ControllerAngle(game); + f32 mod; + s16 target = actor->world.angle.y; + f32 over_norm; + f32 cos; + f32 old_speed; + int angle2; + int angle3; + + if (movePR >= 1.0f) { + mod = 0.5f; + } else { + if (movePR <= 0.05f) { + mod = 0.0099999998f; + } else { + mod = 0.0099999998f + (0.5157895f * (movePR - 0.05f)); + } + } + + add_calc_short_angle2(&target, angle, 1.0f - sqrtf(1.0f - mod), 2500, 50); + + actor->world.angle.y = actor->shape_info.rotation.y = target; + + over_norm = Player_actor_Culc_over_speed_normalize_NoneZero(actor, &actor->world.position); + + if (Player_actor_CheckController_forDush()) { + movePR = (7.5f * movePR) / over_norm; + } else { + movePR = (4.875f * movePR) / over_norm; + } + + angle3 = Player_actor_Get_ControllerAngle(game) - actor->world.angle.y; + + angle2 = ABS(angle3); + + if (angle2 > 0x8000) { + angle2 = 0x10000 - angle2; + } + + cos = cos_s(angle2); + + if (cos <= 0.0f) { + movePR = 0.0f; + } else { + movePR *= cos; + } + + old_speed = actor->speed; + if (old_speed != movePR) { + if (old_speed < movePR) { + old_speed += 0.60899997f; + if (old_speed > movePR) { + old_speed = movePR; + } + } else if (old_speed > movePR) { + old_speed -= 0.32625002f; + if (old_speed < movePR) { + old_speed = movePR; + } + } + actor->speed = old_speed; + } + + if (over_norm == 1.0f) { + xyz_t pos = actor->world.position; + f32 sp_norm; + f32 sin; + f32 cos; + s16 angle = actor->world.angle.y; + f32 mod; + + sin = 0.5f * old_speed * sin_s(angle); + cos = 0.5f * old_speed * cos_s(angle); + + pos.x += sin; + pos.z += cos; + + sp_norm = Player_actor_Culc_over_speed_normalize_NoneZero(actor, &pos); + + if (sp_norm != 1.0f) { + over_norm = sp_norm; + actor->speed /= sp_norm; + } + } + + *frame = over_norm; + Player_actor_Movement_Base(actor); +} + +static void Player_actor_ObjCheck_Walk(ACTOR* actor, GAME* game) { + Player_actor_Excute_Corect_forStand(actor, game); +} + +static void Player_actor_BGcheck_Walk(ACTOR* actor) { + Player_actor_BGcheck_common_type1(actor); +} + +static void Player_actor_request_proc_index_fromWalk(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 speed; + f32 percent_x; + f32 percent_y; + + Player_actor_Set_ScrollDemo_forWade(actor, game, mEv_CheckTitleDemo() <= 0); + + if (!actor->bg_collision_check.result.on_ground) { + Player_actor_request_main_fall_all(game, -5.0f, 1, mPlayer_REQUEST_PRIORITY_1); + } + + Player_actor_CheckAndRequest_main_axe_all(game, mPlayer_REQUEST_PRIORITY_4); + + if (Player_actor_CheckController_forNet(game) != 0) { + Player_actor_request_main_ready_net(game, mPlayer_REQUEST_PRIORITY_4); + } + + if (Player_actor_CheckController_forRod(game) != 0) { + Player_actor_request_main_ready_rod(game, mPlayer_REQUEST_PRIORITY_4); + } + + Player_actor_CheckAndRequest_main_scoop_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_umbrella_all(game, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_fan_all(game, 1, 1, mPlayer_REQUEST_PRIORITY_4); + Player_actor_CheckAndRequest_main_shake_tree_all(game); + Player_actor_CheckAndRequest_main_pickup_all(game); + + speed = actor->speed; + + if ((player->keyframe0.frame_control.speed * player->keyframe0.frame_control.speed) / 0.048f >= 3.525f) { + Player_actor_request_main_run_all(game, -5.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } + + percent_x = Player_actor_GetController_move_percentX(); + percent_y = Player_actor_GetController_move_percentY(); + + if (speed == 0.0f && percent_x == 0.0f && percent_y == 0.0f) { + Player_actor_request_main_wait_all(game, -5.0f, 0.0f, 0, mPlayer_REQUEST_PRIORITY_1); + } +} + +static void Player_actor_main_Walk(ACTOR* actor, GAME* game) { + f32 over_speed_normalize_NoneZero; + f32 calc_frame; + + Player_actor_Movement_Walk(actor, game, &over_speed_normalize_NoneZero); + Player_actor_Reinput_force_position_angle(actor, game); + Player_actor_CulcAnimation_Walk(actor, over_speed_normalize_NoneZero, &calc_frame); + Player_actor_SearchAnimation_Walk(actor, game, calc_frame); + Player_actor_set_lean_angle(actor); + Player_actor_set_eye_pattern_normal(actor); + Player_actor_ObjCheck_Walk(actor, game); + Player_actor_BGcheck_Walk(actor); + Player_actor_Item_main(actor, game); + Player_actor_request_proc_index_fromWalk(actor, game); +} diff --git a/src/m_player_main_wash_car.c_inc b/src/m_player_main_wash_car.c_inc new file mode 100644 index 00000000..a9616c0c --- /dev/null +++ b/src/m_player_main_wash_car.c_inc @@ -0,0 +1,129 @@ +static int Player_actor_request_main_wash_car_all(GAME* game, const xyz_t* car_pos_p, const xyz_t* orig_pos_p, + s16 orig_angle_y, ACTOR* parent_actor, int prio) { + if (Player_actor_check_request_main_able(game, mPlayer_INDEX_WASH_CAR, prio)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_GAME(game); + mPlayer_request_wash_car_c* req_wash_car_p = &player->requested_main_index_data.wash_car; + + Player_actor_request_main_index(game, mPlayer_INDEX_WASH_CAR, prio); + req_wash_car_p->car_pos = *car_pos_p; + req_wash_car_p->orig_pos = *orig_pos_p; + req_wash_car_p->parent_actor = parent_actor; + req_wash_car_p->orig_angle_y = orig_angle_y; + return TRUE; + } + + return FALSE; +} + +static void Player_actor_setup_main_Wash_car(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_request_wash_car_c* req_wash_car_p = &player->requested_main_index_data.wash_car; + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + + actorx->world.position = req_wash_car_p->car_pos; + wash_car_p->ret_pos = req_wash_car_p->orig_pos; + wash_car_p->ret_angle_y = req_wash_car_p->orig_angle_y; + wash_car_p->control_actor = req_wash_car_p->parent_actor; + wash_car_p->anime_idx = 0; + wash_car_p->change_anime_idx = 0; + wash_car_p->counter = 0; + wash_car_p->ret_order = FALSE; + wash_car_p->effect_flag = FALSE; + + actorx->shape_info.rotation.y = 0; + actorx->world.angle.y = 0; + + Player_actor_InitAnimation_Base2(actorx, game, mPlayer_ANIM_WASH1, mPlayer_ANIM_WASH1, 1.0f, 1.0f, 0.0f, 0.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + Player_actor_setup_main_Base(actorx, game); +} + +static void Player_actor_settle_main_Wash_car(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + + actorx->world.position = wash_car_p->ret_pos; + actorx->world.angle.y = actorx->shape_info.rotation.y = wash_car_p->ret_angle_y; + eEC_CLIP->effect_kill_proc(eEC_EFFECT_ASE2, RSV_NO); +} + +static int Player_actor_CulcAnimation_Wash_car(ACTOR* actorx, GAME* game, f32* last_anim0_cur_frame_p) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + cKF_SkeletonInfo_R_c* kf0_p = &player->keyframe0; + cKF_FrameControl_c* fc0_p = &kf0_p->frame_control; + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + int* counter_p = &wash_car_p->counter; + int* change_anime_idx_p = &wash_car_p->change_anime_idx; + int end_flag; + + if (*change_anime_idx_p) { + int* anime_idx_p = &wash_car_p->anime_idx; + static const u8 data[] = { + mPlayer_ANIM_WASH1, mPlayer_ANIM_WASH2, mPlayer_ANIM_WASH3, mPlayer_ANIM_WASH4, mPlayer_ANIM_WASH5, + }; + int anim_idx; + f32 speed; + + (*anime_idx_p)++; + if (*anime_idx_p < 0 || *anime_idx_p >= 5) { + *anime_idx_p = 0; + } + + anim_idx = data[*anime_idx_p]; + speed = fc0_p->speed; + Player_actor_InitAnimation_Base2(actorx, game, anim_idx, anim_idx, 1.0f, 1.0f, speed, 0.0f, + cKF_FRAMECONTROL_STOP, mPlayer_PART_TABLE_NORMAL); + *counter_p = 0; + *change_anime_idx_p = FALSE; + wash_car_p->effect_flag = TRUE; + } + + end_flag = Player_actor_CulcAnimation_Base3(actorx, last_anim0_cur_frame_p); + if (end_flag) { + if (*counter_p >= 3) { + eEC_CLIP->effect_kill_proc(eEC_EFFECT_ASE2, RSV_NO); + *change_anime_idx_p = TRUE; + } else { + (*counter_p)++; + fc0_p->current_frame = 1.0f; + } + } + + return end_flag; +} + +static void Player_actor_SetEffect_Wash_car(ACTOR* actorx, f32 frame) { + if (Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame) == FALSE) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + + if (wash_car_p->change_anime_idx == FALSE) { + wash_car_p->effect_flag = TRUE; + } + } else { + eEC_CLIP->effect_kill_proc(eEC_EFFECT_ASE2, RSV_NO); + } +} + +static void Player_actor_SearchAnimation_Wash_car(ACTOR* actorx, f32 frame) { + Player_actor_Check_AnimationFrame_PerfectEquel(actorx, frame); // Unnecessary call, a leftover or mistake + Player_actor_SetEffect_Wash_car(actorx, frame); +} + +static void Player_actor_request_proc_index_fromWash_car(ACTOR* actorx, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actorx; + mPlayer_main_wash_car_c* wash_car_p = &player->main_data.wash_car; + + if (wash_car_p->ret_order) { + Player_actor_SettleRequestMainIndexPriority(actorx); + Player_actor_request_main_tired_all(game, mPlayer_REQUEST_PRIORITY_19); + } +} + +static void Player_actor_main_Wash_car(ACTOR* actorx, GAME* game) { + f32 last_anim0_cur_frame; + + Player_actor_CulcAnimation_Wash_car(actorx, game, &last_anim0_cur_frame); + Player_actor_SearchAnimation_Wash_car(actorx, last_anim0_cur_frame); + Player_actor_request_proc_index_fromWash_car(actorx, game); +} diff --git a/src/m_player_other_func.c_inc b/src/m_player_other_func.c_inc new file mode 100644 index 00000000..4b7af85d --- /dev/null +++ b/src/m_player_other_func.c_inc @@ -0,0 +1,306 @@ + +static void Player_actor_ct_other_func1(ACTOR* actor, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + play->submenu.start_refuse = TRUE; + actor->unknown_b4 = 1; + + Actor_info_make_actor(&play->actor_info, game, mAc_PROFILE_FIELD_DRAW, actor->world.position.x, + actor->world.position.y, actor->world.position.z, 0, 0, 0, -1, -1, -1, EMPTY_NO, -1, -1, -1); +} + +static void Player_actor_setup_main_Wade_other_func1(ACTOR* actor, GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + + play->object_exchange._1954 = TRUE; +} + +static void Player_actor_setup_main_Wade_snowball_other_func1(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Wade_other_func1(actor, game); +} + +static void Player_actor_setup_main_Wade_other_func2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t pos = player->main_data.wade.end_pos; + + mFI_SetBearActor(play, pos, TRUE); + + Common_Set(in_initial_block, FALSE); +} + +static void Player_actor_setup_main_Wade_snowball_other_func2(ACTOR* actor, GAME* game) { + Player_actor_setup_main_Wade_other_func2(actor, game); +} + +static void Player_actor_setup_main_Demo_wade_other_func2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t pos = player->main_data.wade.end_pos; + + mFI_SetBearActor(play, pos, TRUE); + + Common_Set(in_initial_block, FALSE); +} + +static void Player_actor_setup_main_Demo_geton_boat_wade_other_func2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + xyz_t pos = player->main_data.wade.end_pos; + + mFI_SetBearActor(play, pos, TRUE); + + Common_Set(in_initial_block, FALSE); +} + +static void Player_actor_ChangeFace_for_Wade(ACTOR* actor, GAME* game, f32 timer) { + if (18.0f <= timer && timer < 19.0f) { + int rank = 0; + + rank |= Player_actor_Set_player_sunburn_rankup(actor); + rank |= Player_actor_Set_player_sunburn_rankdown(actor); + + if (rank != 0) { + mPlib_change_player_face_pallet(game); + } + } +} + +static void Player_actor_main_Wade_other_func1(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); +} + +static void Player_actor_main_Demo_wade_other_func1(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); +} + +static void Player_actor_main_Wade_snowball_other_func1(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); +} + +static void Player_actor_main_Demo_geton_boat_wade_other_func1(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_ChangeFace_for_Wade(actor, game, player->main_data.wade.timer); +} + +static void Player_actor_main_Sitdown_wait_other_func2(ACTOR* actor, GAME* game) { + if (Common_Get(clip.my_room_clip)) { + Common_Get(clip.my_room_clip)->call_sit_down_ongen_pos_se_proc(&actor->world.position); + } +} + +static void Player_actor_main_Relax_rod_other_func2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + Player_actor_request_camera2_main_simple_fishing(actor, game); +} + +static void Player_actor_main_Vib_rod_other_func2(ACTOR* actor, GAME* game) { + Player_actor_request_camera2_main_simple_fishing(actor, game); +} + +static void Player_actor_main_Collect_rod_other_func2(ACTOR* actor, GAME* game) { + Player_actor_request_camera2_main_simple_return(actor, game); +} + +static void Player_actor_main_Fly_rod_other_func2(ACTOR* actor, GAME* game) { + Player_actor_request_camera2_main_simple_return(actor, game); +} + +static void Player_actor_settle_main_Collect_rod_other_func2(ACTOR* actor, GAME* game) { + Player_actor_request_camera2_main_normal(game); +} + +static void Player_actor_settle_main_Fly_rod_other_func2(ACTOR* actor, GAME* game) { + Player_actor_request_camera2_change_priority(game); +} + +static void Player_actor_set_nextgoto_info_type0(ACTOR* actor) { + GAME_PLAY* play = (GAME_PLAY*)gamePT; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (goto_other_scene(play, Common_GetPointer(structure_exit_door_data), TRUE) != TRUE) { + mDemo_End(actor); + } else { + aMR_SaveWaltzTempo2(); + mBGMPsComp_make_ps_wipe(0x195); + } + player->update_scene_bg_mode = TRUE; +} + +static void Player_actor_set_nextgoto_info_type1(ACTOR* actor) { + GAME_PLAY* play = (GAME_PLAY*)gamePT; + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + if (goto_next_scene(play, player->item_in_front - DOOR_START, TRUE) != TRUE) { + mDemo_End(actor); + } else { + int scene = Common_Get(door_data).next_scene_id - 1; + + if (scene == SCENE_DEPART_2 || scene == SCENE_MUSEUM_ENTRANCE || scene == SCENE_MUSEUM_ROOM_PAINTING || + scene == SCENE_MUSEUM_ROOM_FOSSIL || scene == SCENE_MUSEUM_ROOM_INSECT || scene == SCENE_MUSEUM_ROOM_FISH) { + play->fb_fade_type = 12; + mBGMForce_room_nonstop_start(); + } else { + mBGMPsComp_make_ps_wipe(0x249); + } + } +} + +static int Player_actor_check_bg_for_next_goto(ACTOR* actor, mActor_name_t door) { + mCoBG_Collision_u* col; + + if (mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_PLAYER0_ROOM) { + if (door >= DOOR_START && door < EXIT_DOOR) { + col = mFI_GetUnitCol(actor->world.position); + if (col->data.center != col->data.top_left || col->data.center != col->data.bot_left || + col->data.center != col->data.top_right || col->data.center != col->data.bot_right) { + return TRUE; + } + return FALSE; + } + return TRUE; + } + return TRUE; +} + +static void Player_actor_check_nextgoto(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + mActor_name_t door = player->item_in_front; + + if (ITEM_NAME_GET_TYPE(door) == NAME_TYPE_WARP && Player_actor_check_bg_for_next_goto(actor, door) != FALSE && + mEv_CheckTitleDemo() <= 0 && play->fb_wipe_mode == 0) { + if (door >= EXIT_DOOR && door < EXIT_DOOR1) { + mDemo_Request(mDemo_TYPE_EXITSCENE, actor, Player_actor_set_nextgoto_info_type0); + + if (player->update_scene_bg_mode != FALSE) { + mBGMPsComp_scene_mode(0xE); + player->update_scene_bg_mode = FALSE; + } + } else if (door >= DOOR_START && door < EXIT_DOOR) { + if ((mFI_GetUnitCol(actor->world.position)->data.center != + mFI_GetUnitCol(actor->world.position)->data.top_left || + mFI_GetUnitCol(actor->world.position)->data.center != + mFI_GetUnitCol(actor->world.position)->data.bot_left || + mFI_GetUnitCol(actor->world.position)->data.center != + mFI_GetUnitCol(actor->world.position)->data.top_right || + mFI_GetUnitCol(actor->world.position)->data.center != + mFI_GetUnitCol(actor->world.position)->data.bot_right) && + mFI_GET_TYPE(mFI_GetFieldId()) == mFI_FIELD_PLAYER0_ROOM) { + aMR_SaveWaltzTempo2(); + mBGMPsComp_make_ps_wipe(0x10E); + } + mDemo_Request(mDemo_TYPE_EXITSCENE, actor, Player_actor_set_nextgoto_info_type1); + } + } +} + +static void Player_actor_check_forward(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + s16 rot = actor->shape_info.rotation.y; + xyz_t pos; + mActor_name_t* item; + + pos.x = actor->world.position.x + 0.00061037019f * sins(rot); + pos.z = actor->world.position.z + 0.00061037019f * coss(rot); + pos.y = 0.0f; + + pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos(pos, 0.0f); + + item = mFI_GetUnitFG(pos); + + player->forward_ut_pos.x = pos.x; + player->forward_ut_pos.z = pos.z; + player->forward_ut_pos.y = pos.y; + + if (item != NULL) { + player->item_in_front = *item; + } else { + player->item_in_front = EMPTY_NO; + } + + Player_actor_check_nextgoto(actor, game); + + if (chkTrigger(BUTTON_A)) { + player->a_btn_pressed = TRUE; + } else { + player->a_btn_pressed = FALSE; + } +} + +static void Player_actor_move_other_func1(ACTOR* actor, GAME* game) { + Player_actor_cancel_request_change_proc_index_by_A_btn(actor); + Player_actor_request_main_change_from_submenu(actor, game); + Player_actor_request_change_item(game); + Player_actor_cancel_request_change_proc_index(actor); + Player_actor_change_proc_index(actor, game); + Player_actor_Reset_excute_cancel_wade(actor); + Player_actor_Set_OldAngle(actor); + Player_actor_Culc_player_frame_counter(actor); + Player_actor_Check_player_sunburn_ChangeDay(); + Player_actor_Check_player_sunburn_for_main(actor); + Player_actor_Check_player_change_color_for_main(actor); +} + +static void Player_actor_move_other_func2(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_set_eye_PositionAndAngle(actor); + Player_actor_sound_SetStatus(actor); + Player_actor_Set_Indoor_Camera_Index(actor, game); + Player_actor_check_forward(actor, game); + mFI_SetPlayerWade(game); + Player_actor_check_little_shake_tree(actor, game); + Player_actor_check_shake_tree_timer(actor); + Player_actor_check_pitfall(actor, game); + Player_actor_set_ripple(actor, game); + + SETREG(PLAYERREG, 87, player->now_main_index); + SETREG(PLAYERREG, 88, player->requested_main_index_priority); + SETREG(PLAYERREG, 89, actor->world.angle.y); + SETREG(PLAYERREG, 90, actor->shape_info.rotation.y); + SETREG(PLAYERREG, 91, actor->world.position.x); + SETREG(PLAYERREG, 92, actor->world.position.y); + SETREG(PLAYERREG, 93, actor->world.position.z); + + Player_actor_Set_old_sound_frame_counter(actor); +} + +static void Player_actor_draw_other_func2(ACTOR* actor, GAME* game) { + Player_actor_SetPosition_OBJtoLine_forItem(actor, game); +} + +static void Player_actor_change_main_index_other_func1(ACTOR* actor, GAME* game) { +} + +static void Player_actor_change_main_index_other_func2(ACTOR* actor, GAME* game) { +} + +static void Player_actor_settle_main_other_func2(ACTOR* actor, GAME* game) { + Player_actor_SetFootMark_for_settle_main(actor, game); +} + +static void Player_actor_SetActorUki(ACTOR* actor, GAME* game) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + GAME_PLAY* play = (GAME_PLAY*)game; + + if (Player_actor_CheckScene_AbleOutItem(Save_Get(scene_no)) != FALSE && player->fishing_rod_actor_p == NULL) { + player->fishing_rod_actor_p = Actor_info_name_search(&play->actor_info, mAc_PROFILE_UKI, ACTOR_PART_BG); + } +} + +static void Player_actor_Item_main_other_func1(ACTOR* actor, GAME* game) { + Player_actor_SetActorUki(actor, game); +} + +static void Player_actor_setup_main_Demo_geton_boat_other_func2(ACTOR* actor, GAME* game) { + Common_Set(sunburn_time, 0); +} diff --git a/src/m_player_sound.c_inc b/src/m_player_sound.c_inc new file mode 100644 index 00000000..05b68629 --- /dev/null +++ b/src/m_player_sound.c_inc @@ -0,0 +1,338 @@ +typedef enum player_status_level_s { + mPlayer_WAIT, + mPlayer_WALK, + mPlayer_RUN, + mPlayer_DASH, +} mPlayer_STATUS_LEVEL; + +static void Player_actor_sound_SetStatus(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + int status; + f32 speed; + + status = player->now_main_index; + speed = player->keyframe0.frame_control.speed / 0.59999996f; + + switch (status) { + case mPlayer_INDEX_READY_WALK_NET: + case mPlayer_INDEX_DEMO_WALK: + case mPlayer_INDEX_WALK: + status = mPlayer_WALK; + break; + case mPlayer_INDEX_RUN: + status = mPlayer_RUN; + break; + case mPlayer_INDEX_DASH: + status = mPlayer_DASH; + break; + default: + status = 0; + break; + } + if (speed > 1.0f) { + speed = 1.0f; + } else if (speed < 0.0f) { + speed = 0.0f; + } + sAdo_PlayerStatusLevel(speed, status); +} + +static void Player_actor_set_sound_common1(xyz_t* pos, u16 id) { + sAdo_OngenTrgStart(id, pos); +} + +static void Player_actor_set_sound_common2(ACTOR* actor, u16 id) { + Player_actor_set_sound_common1(&actor->world.position, id); +} + +static void Player_actor_sound_FootStep1(ACTOR* actor, u16 id) { + xyz_t* pos = &actor->world.position; + xyz_t apos; + int check; + u32 attr; + + apos = *pos; + + attr = mCoBG_Wpos2Attribute(apos, 0); + if (sAdo_CheckOnPlussBridge(pos, attr)) { + id = 0x420A; + } + + sAdo_PlyWalkSe(id, pos); +} + +static void Player_actor_sound_FootStep2(ACTOR* actor) { + int floorId; + + floorId = Common_Get(floor_idx); + if (floorId >= 0) { + if (mRmTp_SoundStepWalkSE(&actor->world.position) != 0) { + sAdo_PlyWalkSeRoom(0xFF, &actor->world.position); + } else if (floorId < 0x56) { + sAdo_PlyWalkSeRoom(floorId, &actor->world.position); + } + } else { + u16 label = sAdo_Get_WalkLabel(actor->bg_collision_check.result.unit_attribute); + Player_actor_sound_FootStep1(actor, label); + } +} + +static void Player_actor_sound_Tumble(ACTOR* actor) { + u16 label = sAdo_Get_KokeruLabel(actor->bg_collision_check.result.unit_attribute); + Player_actor_set_sound_common2(actor, label); +} + +static void Player_actor_sound_AMI_FURI(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_set_sound_common1(&player->net_pos, NA_SE_TOOL_FURI); +} + +static void Player_actor_sound_AMI_HIT(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_set_sound_common1(&player->net_pos, NA_SE_AMI_HIT); +} + +static void Player_actor_sound_AMI_GET(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + + Player_actor_set_sound_common1(&player->net_pos, NA_SE_TOOL_GET); +} + +static void Player_actor_sound_GASAGOSO(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_GASAGOSO); +} + +static void Player_actor_sound_AXE_FURI(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_TOOL_FURI); +} + +static void Player_actor_sound_AXE_HIT(ACTOR* actor, xyz_t* pos) { + xyz_t posA; + + posA.x = pos->x; + posA.z = pos->z; + posA.y = actor->world.position.y + 20.0f; + + Player_actor_set_sound_common1(&posA, NA_SE_AXE_HIT); +} + +static void Player_actor_sound_AXE_CUT(ACTOR* actor, xyz_t* pos) { + xyz_t posA; + + posA.x = pos->x; + posA.z = pos->z; + posA.y = actor->world.position.y + 20.0f; + + Player_actor_set_sound_common1(&posA, NA_SE_AXE_CUT); +} + +static void Player_actor_sound_SIT(ACTOR* actor, int ftr_idx) { + int id = mRmTp_GetFtrActionSE(ftr_idx, mRmTp_CHAIR_ACTION_SIT); + + if (id >= 0) { + Player_actor_set_sound_common2(actor, id); + } else { + Player_actor_set_sound_common2(actor, NA_SE_HARD_CHAIR_SIT); + } +} + +static void Player_actor_sound_STANDUP(ACTOR* actor, int ftr_idx) { + int id = mRmTp_GetFtrActionSE(ftr_idx, 1); + + if (id >= 0) { + Player_actor_set_sound_common2(actor, id); + } else { + Player_actor_set_sound_common2(actor, NA_SE_HARD_CHAIR_STANDUP); + } +} + +static void Player_actor_sound_JUMP(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_JUMP); +} + +static void Player_actor_sound_LANDING(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_LANDING); +} + +static void Player_actor_sound_ITEM_GET(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_ITEM_GET); +} + +static void Player_actor_sound_BED_IN(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_BED_IN); +} + +static void Player_actor_sound_BED_NEGAERI(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_BED_NEGAERI); +} + +static void Player_actor_sound_BED_OUT(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_BED_OUT); +} + +static void Player_actor_sound_ROD_STROKE(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_ROD_STROKE); +} + +static void Player_actor_sound_ROD_STROKE_small(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_ROD_STROKE_SMALL); +} + +static void Player_actor_sound_ROD_BACK(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_ROD_BACK); +} + +static void Player_actor_sound_scoop1(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP1); +} + +static void Player_actor_sound_scoop_umeru(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_UMERU); +} + +static void Player_actor_sound_scoop_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_HIT); +} + +static void Player_actor_sound_scoop_shigemi(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_SHIGEMI); +} + +static void Player_actor_sound_ITEM_HORIDASHI(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_ITEM_HORIDASHI); +} + +static void Player_actor_sound_slip(ACTOR* actor) { + Player_actor_set_sound_common2(actor, 0x4129); +} + +static void Player_actor_sound_tree_touch(xyz_t* pos) { + sAdo_OngenTrgStart(NA_SE_TREE_TOUCH, pos); +} + +static void Player_actor_sound_tree_yurasu(xyz_t* pos) { + sAdo_OngenTrgStart(NA_SE_TREE_YURASU, pos); +} + +static void Player_actor_sound_kirikabu_scoop(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_KIRIBASU_SCOOP); +} + +static void Player_actor_sound_kirikabu_out(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_KIRIBASU_OUT); +} + +static void Player_actor_sound_knock(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SOUND_KNOCK); +} + +static void Player_actor_sound_coin_gasagoso(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_COIN_GASAGOSO); +} + +static void Player_actor_sound_araiiki(ACTOR* actor) { + s8 gender = Common_Get(now_private)->gender; + + Player_actor_set_sound_common2(actor, (gender == 0) ? (u16)NA_SE_ARAIIKI_BOY : (u16)NA_SE_ARAIIKI_GIRL); +} + +static void Player_actor_sound_zassou_nuku(xyz_t* pos) { + sAdo_OngenTrgStart(NA_SE_ZASSOU_NUKU, pos); +} + +static void Player_actor_sound_hachi_sasareru(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_HACHI_SASARERU); +} + +static void Player_actor_sound_wear(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_WEAR); +} + +static void Player_actor_sound_dai_ue_kakunou(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_DAI_UE_KAKUNOU); +} + +static void Player_actor_sound_umbrella_rotate(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_UMBRELLA_ROTATE); +} + +static u8 Player_actor_sound_Get_bgm_num_forCompletePayment(void) { + switch (Common_Get(complete_payment_type)) { + case mPlayer_COMPLETE_PAYMENT_TYPE_ARBEIT: + return NA_SE_MONEY0; + default: + return NA_SE_MONEY1; + } +} + +static u8 Player_actor_sound_Get_bgm_num_forDemoGetGoldenItem(int type) { + switch (type) { + case 0: + return NA_SE_MONEY0; + case 1: + return NA_SE_MONEY2; + case 2: + return NA_SE_COIN; + default: + return NA_SE_MONEY1; + } +} + +static void Player_actor_sound_camera_move1(void) { + sAdo_SysTrgStart(NA_SE_CAMERA_MOVE1); +} + +static void Player_actor_sound_camera_move2() { + sAdo_SysTrgStart(NA_SE_CAMERA_MOVE2); +} + +static void Player_actor_sound_karaburi(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_KARABURI); +} + +static void Player_actor_sound_scoop_tree_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_TREE_HIT); +} + +static void Player_actor_sound_scoop_item_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_ITEM_HIT); +} + +static void Player_actor_sound_axe_ball_hit(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_SCOOP_ITEM_HIT); +} + +static void Player_actor_sound_axe_broken1(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_TOOL_BROKEN1); +} + +static void Player_actor_sound_axe_broken2(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_TOOL_BROKEN2); +} + +static void Player_actor_sound_axe_broken3(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_TOOL_BROKEN3); +} + +static void Player_actor_sound_uchiwa(ACTOR* actor) { + Player_actor_set_sound_common2(actor, NA_SE_UCHIWA); +} + +static void Player_actor_sound_move_temochi_kazaguruma(ACTOR* actor) { + PLAYER_ACTOR* player = (PLAYER_ACTOR*)actor; + f32 speed; + + speed = ABS(player->item_keyframe.frame_control.speed / 44.0f); + + if (speed > 1.0f) { + speed = 1.0f; + } else if (speed < 0.0f) { + speed = 0.0f; + } + if (speed != 0.0f) { + sAdo_kazagurumaLevel(speed); + sAdo_OngenPos((u32)player, NA_SE_TEMOCHI_KAZAGURUMA, &actor->world.position); + } +} diff --git a/src/m_player_tools.c_inc b/src/m_player_tools.c_inc new file mode 100644 index 00000000..fd95ab06 --- /dev/null +++ b/src/m_player_tools.c_inc @@ -0,0 +1,57 @@ + +static Vtx tol_sponge_1_v[] = { +#include "assets/tol_sponge_1_v.inc" +}; + +static u16 tol_sponge_1_pal[] ATTRIBUTE_ALIGN(32) = { +#include "assets/tol_sponge_1_pal.inc" +}; + +static u8 tol_sponge_1_main1_tex_txt[] ATTRIBUTE_ALIGN(32) = { +#include "assets/tol_sponge_1_main1_tex_txt.inc" +}; + +// clang-format off +static const Gfx tol_sponge_1_model[] = { + gsSPTexture(0, 0, 0, 0, G_ON), + gsDPSetRenderMode(G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, TEXEL0, PRIMITIVE, 0, COMBINED, 0, 0, 0, 0, COMBINED), + gsDPLoadTLUT_Dolphin(15, 16, 1, tol_sponge_1_pal), + gsDPLoadTextureBlock_4b_Dolphin(tol_sponge_1_main1_tex_txt, G_IM_FMT_CI, 16, 16, 15, GX_REPEAT, GX_REPEAT, 0, 0), + gsDPSetTileSize(0, 0, 0, 124, 124), + gsDPSetPrimColor(0, 128, 255, 255, 255, 255), + gsSPLoadGeometryMode(G_ZBUFFER | G_SHADE | G_CULL_BACK | G_FOG | G_LIGHTING | G_SHADING_SMOOTH), + gsSPVertex(&tol_sponge_1_v[0], 10, 0), + gsSPNTrianglesInit_5b( + 16, // tri count + 0, 1, 2, // tri0 + 3, 1, 4, // tri1 + 1, 5, 6 // tri2 + ), + gsSPNTriangles_5b( + 3, 4, 7, // tri0 + 0, 2, 8, // tri1 + 0, 8, 9, // tri2 + 6, 9, 7 // tri3 + ), + gsSPNTriangles_5b( + 8, 2, 3, // tri0 + 7, 9, 3, // tri1 + 3, 2, 1, // tri2 + 6, 4, 1 // tri3 + ), + gsSPNTriangles_5b( + 5, 1, 0, // tri0 + 3, 9, 8, // tri1 + 5, 0, 6, // tri2 + 9, 6, 0 // tri3 + ), + gsSPNTriangles_5b( + 4, 6, 7, // tri0 + 0, 0, 0, // tri1 + 0, 0, 0, // tri2 + 0, 0, 0 // tri3 + ), + gsSPEndDisplayList(), +}; +// clang-format on diff --git a/src/m_player_vibration.c_inc b/src/m_player_vibration.c_inc new file mode 100644 index 00000000..3ae1c189 --- /dev/null +++ b/src/m_player_vibration.c_inc @@ -0,0 +1,53 @@ +static void Player_actor_set_viblation_common1(int total_frames, int attack_type, int sustain_type, int release_type, + int attack_frames, int sustain_frames, int release_frames) { + mVibctl_entry(total_frames, attack_type, sustain_type, release_type, attack_frames, sustain_frames, release_frames, + 0.0f); +} + +static void Player_actor_set_viblation_Dig_scoop(void) { + Player_actor_set_viblation_common1(100, 1, 7, 1, 0, 18, 0); +} + +static void Player_actor_set_viblation_Dig_scoop_stump(void) { + Player_actor_set_viblation_common1(100, 1, 8, 1, 1, 60, 0); +} + +static void Player_actor_set_viblation_Fill_scoop(void) { + Player_actor_set_viblation_common1(80, 1, 8, 1, 6, 60, 0); +} + +static void Player_actor_set_viblation_Reflect_scoop_hard(void) { + Player_actor_set_viblation_common1(100, 1, 9, 1, 3, 9, 0); +} + +static void Player_actor_set_viblation_Reflect_scoop_soft(void) { + Player_actor_set_viblation_common1(90, 1, 1, 1, 2, 4, 0); +} + +static void Player_actor_set_viblation_Swing_net(void) { + Player_actor_set_viblation_common1(100, 1, 1, 1, 2, 4, 0); +} + +static void Player_actor_set_viblation_Shake_tree(void) { + Player_actor_set_viblation_common1(100, 0, 11, 5, 0, 34, 0); +} + +static void Player_actor_set_viblation_Axe_hard(void) { + Player_actor_set_viblation_Reflect_scoop_hard(); +} + +static void Player_actor_set_viblation_Axe_soft(void) { + Player_actor_set_viblation_Reflect_scoop_soft(); +} + +static void Player_actor_set_viblation_Axe_cut(void) { + Player_actor_set_viblation_common1(100, 1, 10, 1, 3, 36, 0); +} + +static void Player_actor_set_viblation_Tumble(void) { + Player_actor_set_viblation_common1(100, 1, 12, 1, 3, 14, 0); +} + +static void Player_actor_set_viblation_Remove_grass(void) { + Player_actor_set_viblation_common1(90, 1, 1, 1, 0, 1, 10); +} diff --git a/src/m_post_office.c b/src/m_post_office.c index de5390b0..5fb900d1 100644 --- a/src/m_post_office.c +++ b/src/m_post_office.c @@ -17,524 +17,517 @@ #include "m_scene_table.h" static int mPO_keep_contents(Mail_c* mail) { - int res = FALSE; + int res = FALSE; - int free_idx = mMl_chk_mail_free_space(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE); - if (free_idx >= 0) { - mMl_copy_mail(Save_Get(post_office).mail + free_idx, mail); - mMl_clear_mail(mail); - res = TRUE; - } + int free_idx = mMl_chk_mail_free_space(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE); + if (free_idx >= 0) { + mMl_copy_mail(Save_Get(post_office).mail + free_idx, mail); + mMl_clear_mail(mail); + res = TRUE; + } - return res; + return res; } extern int mPO_count_mail(int house_no) { - int used = mMl_count_use_mail_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); - Mail_c* mail = Save_Get(post_office).mail; - int i; + int used = mMl_count_use_mail_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); + Mail_c* mail = Save_Get(post_office).mail; + int i; - for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) { - if (house_no == mMl_hunt_for_send_address(mail)) { - used++; + for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) { + if (house_no == mMl_hunt_for_send_address(mail)) { + used++; + } + + mail++; } - - mail++; - } - return used; + return used; } extern int mPO_get_keep_mail_sum() { - PostOffice_c* post_office = Save_GetPointer(post_office); + PostOffice_c* post_office = Save_GetPointer(post_office); - return post_office->keep_mail_sum_players + post_office->keep_mail_sum_npcs; + return post_office->keep_mail_sum_players + post_office->keep_mail_sum_npcs; } static void mPO_adjust_keep_mail() { - Mail_c* mail = Save_Get(post_office).mail; - int i; - s16 recipient_flags = 0; - s16 keep_mail_player_num = 0; + Mail_c* mail = Save_Get(post_office).mail; + int i; + s16 recipient_flags = 0; + s16 keep_mail_player_num = 0; - for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) { - if (mMl_check_not_used_mail(mail) == FALSE) { - int house_idx = mMl_hunt_for_send_address(mail); - if (house_idx != -1) { - keep_mail_player_num++; - recipient_flags |= (1 << house_idx); - } - else { - mMl_clear_mail(mail); - } + for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++) { + if (mMl_check_not_used_mail(mail) == FALSE) { + int house_idx = mMl_hunt_for_send_address(mail); + if (house_idx != -1) { + keep_mail_player_num++; + recipient_flags |= (1 << house_idx); + } else { + mMl_clear_mail(mail); + } + } + mail++; } - mail++; - } - Save_Set(post_office.mail_recipient_flags, recipient_flags); - Save_Set(post_office.keep_mail_sum_players, keep_mail_player_num); - Save_Set(post_office.keep_mail_sum_npcs, 0); + Save_Set(post_office.mail_recipient_flags, recipient_flags); + Save_Set(post_office.keep_mail_sum_players, keep_mail_player_num); + Save_Set(post_office.keep_mail_sum_npcs, 0); } static int mPO_receipt_check_mail(Mail_c* mail) { - int res = FALSE; + int res = FALSE; - switch (mail->header.recipient.type) { - case mMl_NAME_TYPE_PLAYER: - { - int house_idx = mMl_hunt_for_send_address(mail); - if (house_idx != -1 && mPO_count_mail(house_idx) < HOME_MAILBOX_SIZE) { - res = mPO_keep_contents(mail); - if (res == TRUE) { - Save_Get(post_office.mail_recipient_flags) |= (1 << house_idx); - Save_Get(post_office.keep_mail_sum_players)++; - } - } + switch (mail->header.recipient.type) { + case mMl_NAME_TYPE_PLAYER: { + int house_idx = mMl_hunt_for_send_address(mail); + if (house_idx != -1 && mPO_count_mail(house_idx) < HOME_MAILBOX_SIZE) { + res = mPO_keep_contents(mail); + if (res == TRUE) { + Save_Get(post_office.mail_recipient_flags) |= (1 << house_idx); + Save_Get(post_office.keep_mail_sum_players)++; + } + } - break; - } - - case mMl_NAME_TYPE_NPC: - { - if (mNpc_ReceiveHPMail(mail) == FALSE) { - mNpc_SendMailtoNpc(mail); - } - - res = mPO_keep_contents(mail); - if (res == TRUE) { - Save_Get(post_office).keep_mail_sum_npcs++; - } - - break; - } - - case mMl_NAME_TYPE_MUSEUM: - { - mMsm_SendMuseumMail(mail); - mMl_clear_mail(mail); - - Save_Get(post_office).keep_mail_sum_npcs++; - res = TRUE; - - break; - } - } - - return res; -} - -extern int mPO_receipt_proc(Mail_c* mail, int send_type) { - int res = FALSE; - - switch (send_type) { - case mPO_SENDTYPE_MAIL: - { - res = mPO_receipt_check_mail(mail); - break; - } - - case mPO_SENDTYPE_LEAFLET: - { - mMl_copy_mail(&Save_Get(post_office).leaflet, mail); - Save_Set(post_office.leaflet_recipient_flags.leaflet_flags, 0); - res = TRUE; - break; - } - - case mPO_SENDTYPE_EVENT_LEAFLET: - { - mMl_copy_mail(&Save_Get(post_office).event_leaflet, mail); - Save_Set(post_office.leaflet_recipient_flags.event_flags, 0); - res = TRUE; - break; - } - } - - return res; -} - -static int mPO_copy_contents(int house_no, Mail_c* mail) { - int res = FALSE; - int free_slot = mMl_chk_mail_free_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); - - if (free_slot >= 0) { - mMl_copy_mail(Save_Get(homes[house_no]).mailbox + free_slot, mail); - res = TRUE; - } - - return res; -} - -static void mPO_delivery_mail_with_item(Mail_c* mail, int mail_no, mActor_name_t present, PersonalID_c* pid) { - int header_back_start; - - mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body, mail_no); - - mail->content.font = mMl_FONT_0; - mail->content.header_back_start = header_back_start; - mail->content.mail_type = 7; - mail->content.paper_type = ITM_PAPER55; - mail->present = present; - - mMl_set_to_plname(mail, pid); -} - -static int mPO_delivery_mail_with_order_ftr_sub(int house_no, PersonalID_c* pid, mPr_catalog_order_c* order) { - Mail_c mail; - u8 item_name[mIN_ITEM_NAME_LEN]; - - mMl_clear_mail(&mail); - mIN_copy_name_str(item_name, order->item); - mHandbill_Set_free_str(0, item_name, mIN_ITEM_NAME_LEN); - mPO_delivery_mail_with_item(&mail, 0x049 + order->shop_level, order->item, pid); - return mPO_copy_contents(house_no, &mail); -} - -static void mPO_delivery_mail_with_order_ftr(int house_no, int player_no) { - Private_c* priv = Save_GetPointer(private[player_no]); - - if (priv->exists == TRUE) { - mPr_catalog_order_c* order = priv->catalog_orders; - int i; - - for (i = 0; i < mPr_CATALOG_ORDER_NUM; i++) { - if (order->item != EMPTY_NO) { - if (mPO_delivery_mail_with_order_ftr_sub(house_no, &priv->player_ID, order) == FALSE) { - return; - } - - order->item = EMPTY_NO; - } - - order++; - } - } -} - -static void mPO_delivery_mail_with_ticket_set_free_str(lbRTC_month_t month) { - u8 month_str[9]; - u8 day_str[4]; - - int days = lbRTC_GetDaysByMonth(Common_Get(time.rtc_time.year), month); - mString_Load_MonthStringFromRom(month_str, month); - mString_Load_DayStringFromRom(day_str, days); - mHandbill_Set_free_str(4, month_str, 9); - mHandbill_Set_free_str(5, day_str, 4); -} - -static int mPO_delivery_mail_with_ticket_sub(int house_no, PersonalID_c* pid, mActor_name_t present) { - Mail_c mail; - - mMl_clear_mail(&mail); - mPO_delivery_mail_with_item(&mail, 0x057, present, pid); - return mPO_copy_contents(house_no, &mail); -} - -static void mPO_delivery_mail_with_ticket(int house_no, int player_no) { - mActor_name_t ticket; - Private_c* priv = Save_GetPointer(private[player_no]); - - if (priv->exists == TRUE) { - int ticket_num = priv->inventory.lotto_ticket_mail_storage; - - if (ticket_num != 0) { - int minus_ticket; - mActor_name_t ticket_id; - lbRTC_month_t ticket_month = priv->inventory.lotto_ticket_expiry_month; - - mPO_delivery_mail_with_ticket_set_free_str(ticket_month); - ticket = ITM_TICKET_START + (ticket_month - 1) * 8; - - for (ticket_num; ticket_num != 0; ticket_num -= minus_ticket) { - minus_ticket = ticket_num < 5 ? ticket_num : 5; - ticket_id = ticket + minus_ticket - 1; - if (mPO_delivery_mail_with_ticket_sub(house_no, &priv->player_ID, ticket_id) == FALSE) { - break; - } - } - } - - priv->inventory.lotto_ticket_mail_storage = ticket_num; - } -} - -static int mPO_delivery_mail_sub(int house_no) { - PostOffice_c* post_office; - Mail_c* po_mail; - int i; - int res = TRUE; - - po_mail = Save_Get(post_office).mail; - post_office = Save_GetPointer(post_office); - - for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++, po_mail++) { - if (mMl_check_not_used_mail(po_mail) == FALSE) { - int dst_house_no = mMl_hunt_for_send_address(po_mail); - if (dst_house_no != -1) { - if (house_no == mPO_DELIVER_ALL_HOUSES || dst_house_no == house_no) { - if (mPO_copy_contents(dst_house_no, po_mail) == TRUE) { - post_office->keep_mail_sum_players--; - mMl_clear_mail(po_mail); - } - else { - res = FALSE; // failed to deliver the mail, house mailbox is likely full - } - } - } - else { - switch (po_mail->header.recipient.type) { - case mMl_NAME_TYPE_PLAYER: - post_office->keep_mail_sum_players--; break; } - mMl_clear_mail(po_mail); - } - } - } + case mMl_NAME_TYPE_NPC: { + if (mNpc_ReceiveHPMail(mail) == FALSE) { + mNpc_SendMailtoNpc(mail); + } - Save_Set(post_office.keep_mail_sum_npcs, 0); - return res; + res = mPO_keep_contents(mail); + if (res == TRUE) { + Save_Get(post_office).keep_mail_sum_npcs++; + } + + break; + } + + case mMl_NAME_TYPE_MUSEUM: { + mMsm_SendMuseumMail(mail); + mMl_clear_mail(mail); + + Save_Get(post_office).keep_mail_sum_npcs++; + res = TRUE; + + break; + } + } + + return res; +} + +extern int mPO_receipt_proc(Mail_c* mail, int send_type) { + int res = FALSE; + + switch (send_type) { + case mPO_SENDTYPE_MAIL: { + res = mPO_receipt_check_mail(mail); + break; + } + + case mPO_SENDTYPE_LEAFLET: { + mMl_copy_mail(&Save_Get(post_office).leaflet, mail); + Save_Set(post_office.leaflet_recipient_flags.leaflet_flags, 0); + res = TRUE; + break; + } + + case mPO_SENDTYPE_EVENT_LEAFLET: { + mMl_copy_mail(&Save_Get(post_office).event_leaflet, mail); + Save_Set(post_office.leaflet_recipient_flags.event_flags, 0); + res = TRUE; + break; + } + } + + return res; +} + +static int mPO_copy_contents(int house_no, Mail_c* mail) { + int res = FALSE; + int free_slot = mMl_chk_mail_free_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); + + if (free_slot >= 0) { + mMl_copy_mail(Save_Get(homes[house_no]).mailbox + free_slot, mail); + res = TRUE; + } + + return res; +} + +static void mPO_delivery_mail_with_item(Mail_c* mail, int mail_no, mActor_name_t present, PersonalID_c* pid) { + int header_back_start; + + mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_start, mail->content.footer, mail->content.body, + mail_no); + + mail->content.font = mMl_FONT_0; + mail->content.header_back_start = header_back_start; + mail->content.mail_type = 7; + mail->content.paper_type = ITM_PAPER55; + mail->present = present; + + mMl_set_to_plname(mail, pid); +} + +static int mPO_delivery_mail_with_order_ftr_sub(int house_no, PersonalID_c* pid, mPr_catalog_order_c* order) { + Mail_c mail; + u8 item_name[mIN_ITEM_NAME_LEN]; + + mMl_clear_mail(&mail); + mIN_copy_name_str(item_name, order->item); + mHandbill_Set_free_str(0, item_name, mIN_ITEM_NAME_LEN); + mPO_delivery_mail_with_item(&mail, 0x049 + order->shop_level, order->item, pid); + return mPO_copy_contents(house_no, &mail); +} + +static void mPO_delivery_mail_with_order_ftr(int house_no, int player_no) { + Private_c* priv = Save_GetPointer(private_data[player_no]); + + if (priv->exists == TRUE) { + mPr_catalog_order_c* order = priv->catalog_orders; + int i; + + for (i = 0; i < mPr_CATALOG_ORDER_NUM; i++) { + if (order->item != EMPTY_NO) { + if (mPO_delivery_mail_with_order_ftr_sub(house_no, &priv->player_ID, order) == FALSE) { + return; + } + + order->item = EMPTY_NO; + } + + order++; + } + } +} + +static void mPO_delivery_mail_with_ticket_set_free_str(lbRTC_month_t month) { + u8 month_str[9]; + u8 day_str[4]; + + int days = lbRTC_GetDaysByMonth(Common_Get(time.rtc_time.year), month); + mString_Load_MonthStringFromRom(month_str, month); + mString_Load_DayStringFromRom(day_str, days); + mHandbill_Set_free_str(4, month_str, 9); + mHandbill_Set_free_str(5, day_str, 4); +} + +static int mPO_delivery_mail_with_ticket_sub(int house_no, PersonalID_c* pid, mActor_name_t present) { + Mail_c mail; + + mMl_clear_mail(&mail); + mPO_delivery_mail_with_item(&mail, 0x057, present, pid); + return mPO_copy_contents(house_no, &mail); +} + +static void mPO_delivery_mail_with_ticket(int house_no, int player_no) { + mActor_name_t ticket; + Private_c* priv = Save_GetPointer(private_data[player_no]); + + if (priv->exists == TRUE) { + int ticket_num = priv->inventory.lotto_ticket_mail_storage; + + if (ticket_num != 0) { + int minus_ticket; + mActor_name_t ticket_id; + lbRTC_month_t ticket_month = priv->inventory.lotto_ticket_expiry_month; + + mPO_delivery_mail_with_ticket_set_free_str(ticket_month); + ticket = ITM_TICKET_START + (ticket_month - 1) * 8; + + for (ticket_num; ticket_num != 0; ticket_num -= minus_ticket) { + minus_ticket = ticket_num < 5 ? ticket_num : 5; + ticket_id = ticket + minus_ticket - 1; + if (mPO_delivery_mail_with_ticket_sub(house_no, &priv->player_ID, ticket_id) == FALSE) { + break; + } + } + } + + priv->inventory.lotto_ticket_mail_storage = ticket_num; + } +} + +static int mPO_delivery_mail_sub(int house_no) { + PostOffice_c* post_office; + Mail_c* po_mail; + int i; + int res = TRUE; + + po_mail = Save_Get(post_office).mail; + post_office = Save_GetPointer(post_office); + + for (i = 0; i < mPO_MAIL_STORAGE_SIZE; i++, po_mail++) { + if (mMl_check_not_used_mail(po_mail) == FALSE) { + int dst_house_no = mMl_hunt_for_send_address(po_mail); + if (dst_house_no != -1) { + if (house_no == mPO_DELIVER_ALL_HOUSES || dst_house_no == house_no) { + if (mPO_copy_contents(dst_house_no, po_mail) == TRUE) { + post_office->keep_mail_sum_players--; + mMl_clear_mail(po_mail); + } else { + res = FALSE; // failed to deliver the mail, house mailbox is likely full + } + } + } else { + switch (po_mail->header.recipient.type) { + case mMl_NAME_TYPE_PLAYER: + post_office->keep_mail_sum_players--; + break; + } + + mMl_clear_mail(po_mail); + } + } + } + + Save_Set(post_office.keep_mail_sum_npcs, 0); + return res; } static void mPO_delivery_one_address_mail(int house_no) { - if (mPO_delivery_mail_sub(house_no) == TRUE) { - s16 mask = (1 << house_no) ^ 0b1111; - Save_Get(post_office.mail_recipient_flags) &= mask; // clear out delivered houses - } + if (mPO_delivery_mail_sub(house_no) == TRUE) { + s16 mask = (1 << house_no) ^ 0b1111; + Save_Get(post_office.mail_recipient_flags) &= mask; // clear out delivered houses + } } static void mPO_delivery_one_address_special_mail(int house_no) { - int player_no = mHS_get_pl_no(house_no); + int player_no = mHS_get_pl_no(house_no); - mPO_delivery_mail_with_ticket(house_no, player_no); - mPO_delivery_mail_with_order_ftr(house_no, player_no); + mPO_delivery_mail_with_ticket(house_no, player_no); + mPO_delivery_mail_with_order_ftr(house_no, player_no); } static void mPO_delivery_one_address_leaflet(s16* leaflet_received_flags, Mail_c* leaflet, int house_no) { - if ((((*leaflet_received_flags) >> house_no) & 1) == FALSE) { - mHm_hs_c* house = Save_GetPointer(homes[house_no]); + if ((((*leaflet_received_flags) >> house_no) & 1) == FALSE) { + mHm_hs_c* house = Save_GetPointer(homes[house_no]); - if (house->ownerID.land_id == 0xFFFF) { - *leaflet_received_flags |= (1 << house_no); // unclaimed houses are marked "received" - } - else { - int player_no = mHS_get_pl_no(house_no); - if (player_no < mPr_FOREIGNER && mEv_ArbeitPlayer(player_no) == FALSE) { - mMl_set_to_plname(leaflet, &house->ownerID); - if (mPO_copy_contents(house_no, leaflet) == TRUE) { - *leaflet_received_flags |= (1 << house_no); + if (house->ownerID.land_id == 0xFFFF) { + *leaflet_received_flags |= (1 << house_no); // unclaimed houses are marked "received" + } else { + int player_no = mHS_get_pl_no(house_no); + if (player_no < mPr_FOREIGNER && mEv_ArbeitPlayer(player_no) == FALSE) { + mMl_set_to_plname(leaflet, &house->ownerID); + if (mPO_copy_contents(house_no, leaflet) == TRUE) { + *leaflet_received_flags |= (1 << house_no); + } + } } - } } - } } static void mPO_delivery_one_address_event_leaflet(int house_no) { - Mail_c* ev_leaflet = &Save_Get(post_office).event_leaflet; - int special_type = mEv_get_special_event_type(); - int leaflet_event_type; + Mail_c* ev_leaflet = &Save_Get(post_office).event_leaflet; + int special_type = mEv_get_special_event_type(); + int leaflet_event_type; - switch (ev_leaflet->content.mail_type) { - case mMl_TYPE_SHOP_SALE_LEAFLET: - leaflet_event_type = mEv_EVENT_SHOP_SALE; - break; + switch (ev_leaflet->content.mail_type) { + case mMl_TYPE_SHOP_SALE_LEAFLET: + leaflet_event_type = mEv_EVENT_SHOP_SALE; + break; - case mMl_TYPE_BROKER_SALE_LEAFLET: - leaflet_event_type = mEv_EVENT_BROKER_SALE; - break; + case mMl_TYPE_BROKER_SALE_LEAFLET: + leaflet_event_type = mEv_EVENT_BROKER_SALE; + break; - default: - leaflet_event_type = -1; - break; - } + default: + leaflet_event_type = -1; + break; + } - if (leaflet_event_type == special_type) { - mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.event_flags, ev_leaflet, house_no); - } + if (leaflet_event_type == special_type) { + mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.event_flags, ev_leaflet, + house_no); + } } extern int mPO_delivery_one_address(int house_no) { - mPO_delivery_one_address_mail(house_no); - mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags, &Save_Get(post_office).leaflet, house_no); - mPO_delivery_one_address_event_leaflet(house_no); + mPO_delivery_one_address_mail(house_no); + mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags, + &Save_Get(post_office).leaflet, house_no); + mPO_delivery_one_address_event_leaflet(house_no); } static void mPO_delivery_mail() { - mPO_delivery_mail_sub(mPO_DELIVER_ALL_HOUSES); - mPO_adjust_keep_mail(); + mPO_delivery_mail_sub(mPO_DELIVER_ALL_HOUSES); + mPO_adjust_keep_mail(); } static void mPO_delivery_leaflet() { - int house_no; + int house_no; - for (house_no = 0; house_no < mHS_HOUSE_NUM; house_no++) { - mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags, &Save_Get(post_office).leaflet, house_no); - mPO_delivery_one_address_event_leaflet(house_no); - } + for (house_no = 0; house_no < mHS_HOUSE_NUM; house_no++) { + mPO_delivery_one_address_leaflet(&Save_Get(post_office).leaflet_recipient_flags.leaflet_flags, + &Save_Get(post_office).leaflet, house_no); + mPO_delivery_one_address_event_leaflet(house_no); + } } extern void mPO_delivery_all_address_proc() { - mPO_delivery_mail(); - mPO_delivery_leaflet(); + mPO_delivery_mail(); + mPO_delivery_leaflet(); } static int mPO_make_post_man(GAME_PLAY* play) { - static int bx_add[2] = { -1, 1 }; - static int ux_table[2] = { UT_X_NUM - 1, 0 }; + static int bx_add[2] = { -1, 1 }; + static int ux_table[2] = { UT_X_NUM - 1, 0 }; - int pl_block_x; - int pl_block_z; - u32 block_kind; + int pl_block_x; + int pl_block_z; + u32 block_kind; - int po_block_x; - int po_block_z; - int res = FALSE; + int po_block_x; + int po_block_z; + int res = FALSE; - if (Save_Get(scene_no) == SCENE_FG) { - mFI_BlockKind2BkNum(&pl_block_x, &pl_block_z, mRF_BLOCKKIND_PLAYER); - block_kind = mFI_BkNum2BlockKind(play->block_table.block_x, play->block_table.block_z); + if (Save_Get(scene_no) == SCENE_FG) { + mFI_BlockKind2BkNum(&pl_block_x, &pl_block_z, mRF_BLOCKKIND_PLAYER); + block_kind = mFI_BkNum2BlockKind(play->block_table.block_x, play->block_table.block_z); - if (block_kind != mRF_BLOCKKIND_NONE) { - if ((block_kind & mRF_BLOCKKIND_PLAYER) != 0) { - int bx_add_idx; - int spawned_postman; + if (block_kind != mRF_BLOCKKIND_NONE) { + if ((block_kind & mRF_BLOCKKIND_PLAYER) != 0) { + int bx_add_idx; + int spawned_postman; - mFI_BlockKind2BkNum(&po_block_x, &po_block_z, mRF_BLOCKKIND_POSTOFFICE); - bx_add_idx = pl_block_x >= po_block_x ? 0 : 1; - spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)(play, SP_NPC_POST_MAN, -1, -1, 0, play->block_table.block_x + bx_add[bx_add_idx], play->block_table.block_z, ux_table[bx_add_idx], 7); + mFI_BlockKind2BkNum(&po_block_x, &po_block_z, mRF_BLOCKKIND_POSTOFFICE); + bx_add_idx = pl_block_x >= po_block_x ? 0 : 1; + spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)( + play, SP_NPC_POST_MAN, -1, -1, 0, play->block_table.block_x + bx_add[bx_add_idx], + play->block_table.block_z, ux_table[bx_add_idx], 7); - if (spawned_postman == TRUE) { - res = TRUE; - } - } - else if ((block_kind & mRF_BLOCKKIND_POSTOFFICE) != 0) { - if (Common_Get(force_mail_delivery_flag) == TRUE) { - int post_utx; - int post_utz; - int spawned_postman; - ACTOR* post_office_structure = Actor_info_fgName_search(&play->actor_info, POST_OFFICE, ACTOR_PART_ITEM); + if (spawned_postman == TRUE) { + res = TRUE; + } + } else if ((block_kind & mRF_BLOCKKIND_POSTOFFICE) != 0) { + if (Common_Get(force_mail_delivery_flag) == TRUE) { + int post_utx; + int post_utz; + int spawned_postman; + ACTOR* post_office_structure = + Actor_info_fgName_search(&play->actor_info, POST_OFFICE, ACTOR_PART_ITEM); - if (post_office_structure != NULL) { - mFI_Wpos2UtNum_inBlock(&post_utx, &post_utz, post_office_structure->world.position); - spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)(play, SP_NPC_POST_MAN, -1, -1, 1, play->block_table.block_x, play->block_table.block_z, post_utx - 3, post_utz); + if (post_office_structure != NULL) { + mFI_Wpos2UtNum_inBlock(&post_utx, &post_utz, post_office_structure->world.position); + spawned_postman = (*Common_Get(clip).npc_clip->setupActor_proc)( + play, SP_NPC_POST_MAN, -1, -1, 1, play->block_table.block_x, play->block_table.block_z, + post_utx - 3, post_utz); - if (spawned_postman == TRUE) { - res = TRUE; + if (spawned_postman == TRUE) { + res = TRUE; + } + } + } + } else { + mPO_delivery_all_address_proc(); + res = TRUE; } - } + } else { + mPO_delivery_all_address_proc(); + res = TRUE; } - } - else { + } else { mPO_delivery_all_address_proc(); res = TRUE; - } } - else { - mPO_delivery_all_address_proc(); - res = TRUE; - } - } - else { - mPO_delivery_all_address_proc(); - res = TRUE; - } - return res; + return res; } static void mPO_set_next_delivery_time(lbRTC_time_c* time) { - if (time->hour < 9) { - time->hour = 9; - } - else if (time->hour < 17) { - time->hour = 17; - } - else { - lbRTC_Add_DD(time, 1); - time->hour = 9; - } + if (time->hour < 9) { + time->hour = 9; + } else if (time->hour < 17) { + time->hour = 17; + } else { + lbRTC_Add_DD(time, 1); + time->hour = 9; + } - time->min = 0; - time->sec = 0; - lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, time); + time->min = 0; + time->sec = 0; + lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, time); } static void mPO_delivery_proc(GAME_PLAY* play) { - lbRTC_time_c time; + lbRTC_time_c time; - lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time)); + lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time)); - if ((lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER || Common_Get(force_mail_delivery_flag) == TRUE) && - (mPO_make_post_man(play) == TRUE) - ) { - mPO_set_next_delivery_time(&time); - Common_Set(force_mail_delivery_flag, FALSE); - } + if ((lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER || + Common_Get(force_mail_delivery_flag) == TRUE) && + (mPO_make_post_man(play) == TRUE)) { + mPO_set_next_delivery_time(&time); + Common_Set(force_mail_delivery_flag, FALSE); + } } static void mPO_first_delivery_proc() { - int deliver = FALSE; - lbRTC_time_c time; + int deliver = FALSE; + lbRTC_time_c time; - lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time)); + lbRTC_TimeCopy(&time, Common_GetPointer(time.rtc_time)); - if (lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER || Common_Get(force_mail_delivery_flag) == TRUE) { - deliver = TRUE; - mPO_set_next_delivery_time(&time); - Common_Set(force_mail_delivery_flag, FALSE); - } + if (lbRTC_IsOverTime(&Save_Get(post_office).delivery_time, &time) == lbRTC_OVER || + Common_Get(force_mail_delivery_flag) == TRUE) { + deliver = TRUE; + mPO_set_next_delivery_time(&time); + Common_Set(force_mail_delivery_flag, FALSE); + } - if (deliver == TRUE) { - mPO_delivery_mail(); - } + if (deliver == TRUE) { + mPO_delivery_mail(); + } - if (mLd_PlayerManKindCheck() == FALSE) { - int house_no = mHS_get_arrange_idx(Common_Get(player_no)); - mPO_delivery_one_address_special_mail(house_no); - } + if (mLd_PlayerManKindCheck() == FALSE) { + int house_no = mHS_get_arrange_idx(Common_Get(player_no)); + mPO_delivery_one_address_special_mail(house_no); + } - if (deliver == TRUE) { - mPO_delivery_leaflet(); - } + if (deliver == TRUE) { + mPO_delivery_leaflet(); + } } extern void mPO_business_proc(GAME_PLAY* play) { - if ((Common_Get(clip).demo_clip == NULL && Common_Get(clip).demo_clip2 == NULL) || - (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO) - ) { - int scene = Save_Get(scene_no); + if ((Common_Get(clip).demo_clip == NULL && Common_Get(clip).demo_clip2 == NULL) || + (Common_Get(clip).demo_clip != NULL && Common_Get(clip).demo_clip->type == mDemo_CLIP_TYPE_INTRO_DEMO)) { + int scene = Save_Get(scene_no); - switch (scene) { - default: - mPO_delivery_proc(play); - break; + switch (scene) { + default: + mPO_delivery_proc(play); + break; - case SCENE_PLAYERSELECT: - case SCENE_PLAYERSELECT_2: - case SCENE_PLAYERSELECT_3: - case SCENE_PLAYERSELECT_SAVE: - case SCENE_TITLE_DEMO: - return; + case SCENE_PLAYERSELECT: + case SCENE_PLAYERSELECT_2: + case SCENE_PLAYERSELECT_3: + case SCENE_PLAYERSELECT_SAVE: + case SCENE_TITLE_DEMO: + return; + } } - } } extern void mPO_first_work() { - lbRTC_time_c* time = &Save_Get(save_check).time; - if (mTM_AreTimesEqual(time, &mTM_rtcTime_clear_code) == FALSE && lbRTC_IsOverRTC(time) == FALSE) { - Common_Set(force_mail_delivery_flag, TRUE); - } + lbRTC_time_c* time = &Save_Get(save_check).time; + if (mTM_AreTimesEqual(time, &mTM_rtcTime_clear_code) == FALSE && lbRTC_IsOverRTC(time) == FALSE) { + Common_Set(force_mail_delivery_flag, TRUE); + } - mPO_first_delivery_proc(); - mPO_adjust_keep_mail(); + mPO_first_delivery_proc(); + mPO_adjust_keep_mail(); } extern void mPO_post_office_init() { - bzero(Save_GetPointer(post_office), sizeof(PostOffice_c)); - mMl_clear_mail_box(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE); - mMl_clear_mail(&Save_Get(post_office).leaflet); - mMl_clear_mail(&Save_Get(post_office).event_leaflet); - Save_Get(post_office).leaflet_recipient_flags.raw = 0x000F000F; - lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, Common_GetPointer(time.rtc_time)); + bzero(Save_GetPointer(post_office), sizeof(PostOffice_c)); + mMl_clear_mail_box(Save_Get(post_office).mail, mPO_MAIL_STORAGE_SIZE); + mMl_clear_mail(&Save_Get(post_office).leaflet); + mMl_clear_mail(&Save_Get(post_office).event_leaflet); + Save_Get(post_office).leaflet_recipient_flags.raw = 0x000F000F; + lbRTC_TimeCopy(&Save_Get(post_office).delivery_time, Common_GetPointer(time.rtc_time)); } diff --git a/src/m_private.c b/src/m_private.c index c478a8a3..e4a55652 100644 --- a/src/m_private.c +++ b/src/m_private.c @@ -22,1478 +22,1466 @@ static Mail_c l_mpr_mail; Private_c g_foreigner_private; extern void mPr_ClearPlayerName(u8* buf) { - mem_clear(buf, PLAYER_NAME_LEN, CHAR_SPACE); + mem_clear(buf, PLAYER_NAME_LEN, CHAR_SPACE); } extern void mPr_CopyPlayerName(u8* dst, u8* src) { - mem_copy(dst, src, PLAYER_NAME_LEN); + mem_copy(dst, src, PLAYER_NAME_LEN); } extern int mPr_NullCheckPlayerName(u8* name_p) { - int res = FALSE; - int i; + int res = FALSE; + int i; - for (i = 0; i < PLAYER_NAME_LEN; i++) { - if (name_p[0] != CHAR_SPACE) { - break; + for (i = 0; i < PLAYER_NAME_LEN; i++) { + if (name_p[0] != CHAR_SPACE) { + break; + } + name_p++; } - name_p++; - } - if (i == PLAYER_NAME_LEN) { - res = TRUE; - } + if (i == PLAYER_NAME_LEN) { + res = TRUE; + } - return res; + return res; } extern int mPr_CheckCmpPlayerName(u8* name0, u8* name1) { - int res = FALSE; + int res = FALSE; - if (mPr_NullCheckPlayerName(name0) == FALSE && mPr_NullCheckPlayerName(name1) == FALSE) { - res = mem_cmp(name0, name1, PLAYER_NAME_LEN); - } + if (mPr_NullCheckPlayerName(name0) == FALSE && mPr_NullCheckPlayerName(name1) == FALSE) { + res = mem_cmp(name0, name1, PLAYER_NAME_LEN); + } - return res; + return res; } extern int mPr_GetPlayerName(u8* buf, int player_no) { - PersonalID_c* pid; - int res = FALSE; + PersonalID_c* pid; + int res = FALSE; - if (mLd_PlayerManKindCheckNo(player_no) == FALSE) { - pid = &Save_Get(private[player_no]).player_ID; + if (mLd_PlayerManKindCheckNo(player_no) == FALSE) { + pid = &Save_Get(private_data[player_no]).player_ID; - if (mPr_NullCheckPersonalID(pid) == FALSE) { - mPr_CopyPlayerName(buf, pid->player_name); - res = TRUE; + if (mPr_NullCheckPersonalID(pid) == FALSE) { + mPr_CopyPlayerName(buf, pid->player_name); + res = TRUE; + } + } else if (mLd_PlayerManKindCheckNo(Common_Get(player_no)) == TRUE) { + mPr_CopyPlayerName(buf, Common_Get(now_private)->player_ID.player_name); + res = TRUE; } - } - else if (mLd_PlayerManKindCheckNo(Common_Get(player_no)) == TRUE) { - mPr_CopyPlayerName(buf, Common_Get(now_private)->player_ID.player_name); - res = TRUE; - } - return res; + return res; } extern int mPr_NullCheckPersonalID(PersonalID_c* pid) { - int res = FALSE; + int res = FALSE; - if (pid->land_id == 0xFFFF && mPr_NullCheckPlayerName(pid->player_name) == TRUE) { - res = TRUE; - } + if (pid->land_id == 0xFFFF && mPr_NullCheckPlayerName(pid->player_name) == TRUE) { + res = TRUE; + } - return res; + return res; } extern void mPr_ClearPersonalID(PersonalID_c* pid) { - mPr_ClearPlayerName(pid->player_name); - mLd_ClearLandName(pid->land_name); - pid->land_id = 0xFFFF; - pid->player_id = 0xFFFF; + mPr_ClearPlayerName(pid->player_name); + mLd_ClearLandName(pid->land_name); + pid->land_id = 0xFFFF; + pid->player_id = 0xFFFF; } extern void mPr_ClearAnyPersonalID(PersonalID_c* pid, int count) { - for (count; count != 0; count--) { - mPr_ClearPersonalID(pid); - pid++; - } + for (count; count != 0; count--) { + mPr_ClearPersonalID(pid); + pid++; + } } extern void mPr_CopyPersonalID(PersonalID_c* dst, PersonalID_c* src) { - mem_copy((u8*)dst, (u8*)src, sizeof(PersonalID_c)); + mem_copy((u8*)dst, (u8*)src, sizeof(PersonalID_c)); } extern int mPr_CheckCmpPersonalID(PersonalID_c* pid0, PersonalID_c* pid1) { - int res = FALSE; + int res = FALSE; - if ( - pid0->land_id == pid1->land_id && - pid0->player_id == pid1->player_id && - mLd_CheckCmpLandName(pid0->land_name, pid1->land_name) == TRUE && - mPr_CheckCmpPlayerName(pid0->player_name, pid1->player_name) == TRUE - ) { - res = TRUE; - } + if (pid0->land_id == pid1->land_id && pid0->player_id == pid1->player_id && + mLd_CheckCmpLandName(pid0->land_name, pid1->land_name) == TRUE && + mPr_CheckCmpPlayerName(pid0->player_name, pid1->player_name) == TRUE) { + res = TRUE; + } - return res; + return res; } // TODO: this might actually be file-local but I'm not sure, DnM+ inlined it extern void mPr_ClearPrivateBirthday(mPr_birthday_c* birthday) { - birthday->year = 0xFFFF; - birthday->month = 0xFF; - birthday->day = 0xFF; + birthday->year = 0xFFFF; + birthday->month = 0xFF; + birthday->day = 0xFF; } extern void mPr_ClearAnimalMemory(mPr_animal_memory_c* memory) { - memory->npc_id = 0xFFFF; - mLd_ClearLandName(memory->land_name); + memory->npc_id = 0xFFFF; + mLd_ClearLandName(memory->land_name); } extern void mPr_ClearPrivateInfo(Private_c* private_info) { - bzero(private_info, sizeof(Private_c)); + bzero(private_info, sizeof(Private_c)); - mPr_ClearPersonalID(&private_info->player_ID); - private_info->gender = mPr_SEX_MALE; - mQst_ClearDelivery(private_info->deliveries, mPr_DELIVERY_QUEST_NUM); - mQst_ClearErrand(private_info->errands, mPr_ERRAND_QUEST_NUM); - mMl_clear_mail_box(private_info->mail, mPr_INVENTORY_MAIL_COUNT); - mMl_clear_mail_header_common(&private_info->saved_mail_header); - mPlib_change_player_cloth_info_lv2(private_info, ITM_CLOTH001); - mNpc_ClearAnimalPersonalID(&private_info->stored_anm_id); - mPr_ClearPrivateBirthday(&private_info->birthday); - private_info->backgound_texture = ITM_CLOTH226; - mNpc_ClearRemail(&private_info->remail); - mPr_ClearAnimalMemory(&private_info->animal_memory); - mPr_ClearMapInfo(private_info->maps, mPr_FOREIGN_MAP_COUNT); - mMsm_ClearRecord(&private_info->museum_record); - private_info->state_flags = 1; + mPr_ClearPersonalID(&private_info->player_ID); + private_info->gender = mPr_SEX_MALE; + mQst_ClearDelivery(private_info->deliveries, mPr_DELIVERY_QUEST_NUM); + mQst_ClearErrand(private_info->errands, mPr_ERRAND_QUEST_NUM); + mMl_clear_mail_box(private_info->mail, mPr_INVENTORY_MAIL_COUNT); + mMl_clear_mail_header_common(&private_info->saved_mail_header); + mPlib_change_player_cloth_info_lv2(private_info, ITM_CLOTH001); + mNpc_ClearAnimalPersonalID(&private_info->stored_anm_id); + mPr_ClearPrivateBirthday(&private_info->birthday); + private_info->backgound_texture = ITM_CLOTH226; + mNpc_ClearRemail(&private_info->remail); + mPr_ClearAnimalMemory(&private_info->animal_memory); + mPr_ClearMapInfo(private_info->maps, mPr_FOREIGN_MAP_COUNT); + mMsm_ClearRecord(&private_info->museum_record); + private_info->state_flags = 1; } static int mPr_GetRandomFace() { - return (fqrand() * (f32)mPr_FACE_TYPE_NUM); + return (fqrand() * (f32)mPr_FACE_TYPE_NUM); } static int mPr_GetRandomOriginalFace() { - Private_c* priv = Save_Get(private); - Private_c* pr2; - - //Private_c* pr2; - int j; - int player_exist_num = 0; - int face; - int i; + Private_c* priv = Save_Get(private_data); + Private_c* pr2; - { - Private_c* pr = priv; - for (i = 0; i < PLAYER_NUM; i++) { - if (pr != NULL && mPr_NullCheckPersonalID(&pr->player_ID) == FALSE) { - player_exist_num++; - } - pr++; - } - } + // Private_c* pr2; + int j; + int player_exist_num = 0; + int face; + int i; - face = RANDOM(mPr_FACE_TYPE_NUM - player_exist_num); - for (player_exist_num; player_exist_num > 0; player_exist_num--) { - pr2 = priv; - for (j = 0; j < PLAYER_NUM; j++) { - if (pr2 != NULL && mPr_NullCheckPersonalID(&pr2->player_ID) == FALSE && pr2->face == face) { - face++; - - if (face >= mPr_FACE_TYPE_NUM) { - face = mPr_FACE_TYPE0; + { + Private_c* pr = priv; + for (i = 0; i < PLAYER_NUM; i++) { + if (pr != NULL && mPr_NullCheckPersonalID(&pr->player_ID) == FALSE) { + player_exist_num++; + } + pr++; } - break; - } - - pr2++; } - } - return face; + face = RANDOM(mPr_FACE_TYPE_NUM - player_exist_num); + for (player_exist_num; player_exist_num > 0; player_exist_num--) { + pr2 = priv; + for (j = 0; j < PLAYER_NUM; j++) { + if (pr2 != NULL && mPr_NullCheckPersonalID(&pr2->player_ID) == FALSE && pr2->face == face) { + face++; + + if (face >= mPr_FACE_TYPE_NUM) { + face = mPr_FACE_TYPE0; + } + break; + } + + pr2++; + } + } + + return face; } -static mActor_name_t mPr_boy_cloth_table[8] = { ITM_CLOTH000, ITM_CLOTH001, ITM_CLOTH002, ITM_CLOTH003, ITM_CLOTH004, ITM_CLOTH005, ITM_CLOTH006, ITM_CLOTH007 }; -static mActor_name_t mPr_girl_cloth_table[8] = { ITM_CLOTH008, ITM_CLOTH009, ITM_CLOTH010, ITM_CLOTH011, ITM_CLOTH012, ITM_CLOTH013, ITM_CLOTH014, ITM_CLOTH015 }; +static mActor_name_t mPr_boy_cloth_table[8] = { ITM_CLOTH000, ITM_CLOTH001, ITM_CLOTH002, ITM_CLOTH003, + ITM_CLOTH004, ITM_CLOTH005, ITM_CLOTH006, ITM_CLOTH007 }; +static mActor_name_t mPr_girl_cloth_table[8] = { ITM_CLOTH008, ITM_CLOTH009, ITM_CLOTH010, ITM_CLOTH011, + ITM_CLOTH012, ITM_CLOTH013, ITM_CLOTH014, ITM_CLOTH015 }; static mActor_name_t mPr_GetRandomCloth(u8 sex) { - static mActor_name_t* cloth_table[mPr_SEX_NUM] = { mPr_boy_cloth_table, mPr_girl_cloth_table }; - static int cloth_max[mPr_SEX_NUM] = { 8, 8 }; + static mActor_name_t* cloth_table[mPr_SEX_NUM] = { mPr_boy_cloth_table, mPr_girl_cloth_table }; + static int cloth_max[mPr_SEX_NUM] = { 8, 8 }; - u8 s = sex; - int sel_cloth; - mActor_name_t* t; - mActor_name_t cloth; + u8 s = sex; + int sel_cloth; + mActor_name_t* t; + mActor_name_t cloth; - if (s >= mPr_SEX_NUM) { - s = mPr_SEX_MALE; - } + if (s >= mPr_SEX_NUM) { + s = mPr_SEX_MALE; + } - t = cloth_table[s]; - sel_cloth = RANDOM(cloth_max[s]); - cloth = t[sel_cloth]; - return cloth; + t = cloth_table[s]; + sel_cloth = RANDOM(cloth_max[s]); + cloth = t[sel_cloth]; + return cloth; } extern void mPr_SetNowPrivateCloth() { - Private_c* priv = Common_Get(now_private); + Private_c* priv = Common_Get(now_private); - if (priv != NULL) { - mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(priv->gender)); - } + if (priv != NULL) { + mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(priv->gender)); + } } extern void mPr_InitPrivateInfo(Private_c* priv) { - mLd_land_info_c* land_info = Save_GetPointer(land_info); - Private_c* o_priv = Save_Get(private); - int id_existed = FALSE; - int face = mPr_GetRandomOriginalFace(); - int pid; - int i; + mLd_land_info_c* land_info = Save_GetPointer(land_info); + Private_c* o_priv = Save_Get(private_data); + int id_existed = FALSE; + int face = mPr_GetRandomOriginalFace(); + int pid; + int i; - priv->player_ID.land_id = land_info->id; - mLd_CopyLandName(priv->player_ID.land_name, land_info->name); - - pid = fqrand() * 253.0f; + priv->player_ID.land_id = land_info->id; + mLd_CopyLandName(priv->player_ID.land_name, land_info->name); - for (i = 0; i < PLAYER_NUM - 1; i++) { - int j; + pid = fqrand() * 253.0f; - for (j = 0; j < PLAYER_NUM; j++) { - if ((u16)pid == o_priv[j].player_ID.player_id) { - id_existed = TRUE; - pid++; // move to next PID - break; - } + for (i = 0; i < PLAYER_NUM - 1; i++) { + int j; + + for (j = 0; j < PLAYER_NUM; j++) { + if ((u16)pid == o_priv[j].player_ID.player_id) { + id_existed = TRUE; + pid++; // move to next PID + break; + } + } + + if (id_existed == FALSE) { + break; + } + + id_existed = FALSE; } - if (id_existed == FALSE) { - break; + priv->player_ID.player_id = 0xF000 | pid; + priv->exists = TRUE; + mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(mPr_SEX_MALE)); + priv->gender = mPr_SEX_MALE; + priv->inventory.loan = 100; + priv->face = face; + + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + priv->my_org_no_table[i] = i; } - - id_existed = FALSE; - } - - priv->player_ID.player_id = 0xF000 | pid; - priv->exists = TRUE; - mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(mPr_SEX_MALE)); - priv->gender = mPr_SEX_MALE; - priv->inventory.loan = 100; - priv->face = face; - - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - priv->my_org_no_table[i] = i; - } } extern void mPr_CopyPrivateInfo(Private_c* dst, Private_c* src) { - bcopy(src, dst, sizeof(Private_c)); + bcopy(src, dst, sizeof(Private_c)); } extern int mPr_CheckPrivate(Private_c* priv) { - int res = FALSE; + int res = FALSE; - if (mLd_CHECK_LAND_ID(priv->player_ID.land_id)) { - res = TRUE; - } + if (mLd_CHECK_LAND_ID(priv->player_ID.land_id)) { + res = TRUE; + } - return res; + return res; } extern int mPr_CheckCmpPrivate(Private_c* priv0, Private_c* priv1) { - int res = FALSE; + int res = FALSE; - if (mPr_CheckCmpPersonalID(&priv0->player_ID, &priv1->player_ID) == TRUE) { - res = TRUE; - } + if (mPr_CheckCmpPersonalID(&priv0->player_ID, &priv1->player_ID) == TRUE) { + res = TRUE; + } - return res; + return res; } extern int mPr_GetPrivateIdx(PersonalID_c* pid) { - Private_c* priv = Save_Get(private); - int res = -1; + Private_c* priv = Save_Get(private_data); + int res = -1; - if (mPr_NullCheckPersonalID(pid) == FALSE) { - int i; + if (mPr_NullCheckPersonalID(pid) == FALSE) { + int i; - for (i = 0; i < PLAYER_NUM; i++) { - if (mPr_CheckCmpPersonalID(pid, &priv->player_ID) == TRUE) { - res = i; - break; - } + for (i = 0; i < PLAYER_NUM; i++) { + if (mPr_CheckCmpPersonalID(pid, &priv->player_ID) == TRUE) { + res = i; + break; + } - priv++; + priv++; + } } - } - return res; + return res; } extern int mPr_GetPossessionItemIdx(Private_c* priv, mActor_name_t item) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - mActor_name_t it = *pockets; - if (it == item) { - idx = i; - break; - } + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + mActor_name_t it = *pockets; + if (it == item) { + idx = i; + break; + } + + pockets++; + } } - } - return idx; + return idx; } extern int mPr_GetPossessionItemIdxWithCond(Private_c* priv, mActor_name_t item, u32 cond) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - mActor_name_t it = *pockets; - if (it == item && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { - idx = i; - break; - } + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + mActor_name_t it = *pockets; + if (it == item && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { + idx = i; + break; + } + + pockets++; + } } - } - return idx; + return idx; } -extern int mPr_GetPossessionItemIdxFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond, mActor_name_t cancel_item) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; +extern int mPr_GetPossessionItemIdxFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond, + mActor_name_t cancel_item) { + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == fg_type && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { - idx = i; - break; - } - - pockets++; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; + + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == fg_type && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { + idx = i; + break; + } + + pockets++; + } } - } - return idx; + return idx; } extern int mPr_GetPossessionItemIdxItem1Category(Private_c* priv, u8 item1_type) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type) { - idx = i; - break; - } - pockets++; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; + + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type) { + idx = i; + break; + } + pockets++; + } } - } - return idx; + return idx; } -extern int mPr_GetPossessionItemIdxItem1CategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond, mActor_name_t cancel_item) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; +extern int mPr_GetPossessionItemIdxItem1CategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond, + mActor_name_t cancel_item) { + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { - idx = i; - break; - } - pockets++; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; + + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { + idx = i; + break; + } + pockets++; + } } - } - return idx; + return idx; } -extern int mPr_GetPossessionItemIdxKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end, u32 cond) { - int idx = -1; - - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; +extern int mPr_GetPossessionItemIdxKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end, + u32 cond) { + int idx = -1; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (*pockets >= kind_start && *pockets < kind_end && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { - idx = i; - break; - } - pockets++; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; + + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (*pockets >= kind_start && *pockets < kind_end && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { + idx = i; + break; + } + pockets++; + } } - } - return idx; + return idx; } extern int mPr_GetPossessionItemSum(Private_c* priv, mActor_name_t item) { - int sum = 0; + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (*pockets == item) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (*pockets == item) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } extern int mPr_GetPossessionItemSumWithCond(Private_c* priv, mActor_name_t item, u32 cond) { - int sum = 0; + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (*pockets == item && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (*pockets == item && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } -extern int mPr_GetPossessionItemSumFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond, mActor_name_t cancel_item) { - int sum = 0; +extern int mPr_GetPossessionItemSumFGTypeWithCond_cancel(Private_c* priv, mActor_name_t fg_type, u32 cond, + mActor_name_t cancel_item) { + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == fg_type && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == fg_type && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } -extern int mPr_GetPossessionItemSumItemCategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond, mActor_name_t cancel_item) { - int sum = 0; +extern int mPr_GetPossessionItemSumItemCategoryWithCond_cancel(Private_c* priv, u8 item1_type, u32 cond, + mActor_name_t cancel_item) { + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i) && *pockets != cancel_item) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } extern int mPr_GetPossessionItemSumItemCategoryWithCond(Private_c* priv, u8 item1_type, u32 cond) { - int sum = 0; + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (ITEM_NAME_GET_TYPE(*pockets) == NAME_TYPE_ITEM1 && GET_NAME_ITEM1_CATEGORY(*pockets) == item1_type && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } -extern int mPr_GetPossessionItemSumKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end, u32 cond) { - int sum = 0; +extern int mPr_GetPossessionItemSumKindWithCond(Private_c* priv, mActor_name_t kind_start, mActor_name_t kind_end, + u32 cond) { + int sum = 0; - if (priv != NULL) { - mActor_name_t* pockets = priv->inventory.pockets; - int i; + if (priv != NULL) { + mActor_name_t* pockets = priv->inventory.pockets; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if (*pockets >= kind_start && *pockets < kind_end && cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { - sum++; - } - pockets++; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if (*pockets >= kind_start && *pockets < kind_end && + cond == mPr_GET_ITEM_COND(priv->inventory.item_conditions, i)) { + sum++; + } + pockets++; + } } - } - return sum; + return sum; } extern void mPr_SetItemCollectBit(mActor_name_t item) { - mActor_name_t ftr_item_no = mRmTp_Item1ItemNo2FtrItemNo_AtPlayerRoom(item, 0); - int item_type; + mActor_name_t ftr_item_no = mRmTp_Item1ItemNo2FtrItemNo_AtPlayerRoom(item, 0); + int item_type; - if ((ftr_item_no >= FTR_FISH00 && ftr_item_no <= FTR_FISH39_WEST) || (ftr_item_no >= FTR_INSECT00 && ftr_item_no <= FTR_INSECT39_WEST)) { - return; - } + if ((ftr_item_no >= FTR_FISH00 && ftr_item_no <= FTR_FISH39_WEST) || + (ftr_item_no >= FTR_INSECT00 && ftr_item_no <= FTR_INSECT39_WEST)) { + return; + } - item_type = ITEM_NAME_GET_TYPE(ftr_item_no); + item_type = ITEM_NAME_GET_TYPE(ftr_item_no); - if (item_type == NAME_TYPE_FTR0 || item_type == NAME_TYPE_FTR1) { - int ftr_idx = mRmTp_FtrItemNo2FtrIdx(ftr_item_no); + if (item_type == NAME_TYPE_FTR0 || item_type == NAME_TYPE_FTR1) { + int ftr_idx = mRmTp_FtrItemNo2FtrIdx(ftr_item_no); if (ftr_idx >= 0 && ftr_idx < FTR_NUM) { - Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 5] |= (1 << (ftr_idx & 31)); + Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 5] |= (1 << (ftr_idx & 31)); } - - } - else if (item_type == NAME_TYPE_ITEM1) { - int category = ITEM_NAME_GET_CAT(ftr_item_no); + + } else if (item_type == NAME_TYPE_ITEM1) { + int category = ITEM_NAME_GET_CAT(ftr_item_no); if (category == ITEM1_CAT_PAPER) { - int idx = (ftr_item_no - ITM_PAPER_START) % 64; // 64 unique stationery - Common_Get(now_private)->paper_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); + int idx = (ftr_item_no - ITM_PAPER_START) % 64; // 64 unique stationery + Common_Get(now_private)->paper_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); + } else if (category == ITEM1_CAT_CARPET) { + int idx = ftr_item_no - ITM_CARPET_START; + Common_Get(now_private)->carpet_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); + } else if (category == ITEM1_CAT_WALL) { + int idx = ftr_item_no - ITM_WALL_START; + Common_Get(now_private)->wall_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); + } else if (category == ITEM1_CAT_MINIDISK) { + mActor_name_t idx = + ftr_item_no - ITM_MINIDISK_START; // why is this one u16, probably mActor_name_t type or something? + Common_Get(now_private)->music_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); } - else if (category == ITEM1_CAT_CARPET) { - int idx = ftr_item_no - ITM_CARPET_START; - Common_Get(now_private)->carpet_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); - } - else if (category == ITEM1_CAT_WALL) { - int idx = ftr_item_no - ITM_WALL_START; - Common_Get(now_private)->wall_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); - } - else if (category == ITEM1_CAT_MINIDISK) { - mActor_name_t idx = ftr_item_no - ITM_MINIDISK_START; // why is this one u16, probably mActor_name_t type or something? - Common_Get(now_private)->music_collected_bitfield[idx >> 5] |= (1 << (idx & 31)); - } - } + } } extern mActor_name_t mPr_DummyPresentToTruePresent() { - mActor_name_t true_present = EMPTY_NO; + mActor_name_t true_present = EMPTY_NO; - /* 80% chance of rolling furniture from town's rare list */ - if (RANDOM(5) != 0) { - mSP_SelectRandomItem_New(NULL, &true_present, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); - } + /* 80% chance of rolling furniture from town's rare list */ + if (RANDOM(5) != 0) { + mSP_SelectRandomItem_New(NULL, &true_present, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); + } - /* 20% (and default case) to get random non-native fruit */ - if (true_present == EMPTY_NO) { - true_present = mFI_GetOtherFruit(); - } + /* 20% (and default case) to get random non-native fruit */ + if (true_present == EMPTY_NO) { + true_present = mFI_GetOtherFruit(); + } - return true_present; + return true_present; } extern void mPr_SetPossessionItem(Private_c* priv, int idx, mActor_name_t item, u32 cond) { - switch (item) { - case ITM_PRESENT: - { - item = mPr_DummyPresentToTruePresent(); - cond = mPr_ITEM_COND_PRESENT; - break; + switch (item) { + case ITM_PRESENT: { + item = mPr_DummyPresentToTruePresent(); + cond = mPr_ITEM_COND_PRESENT; + break; + } + + case ITM_GOLDEN_NET_PRESENT: { + item = ITM_GOLDEN_NET; + cond = mPr_ITEM_COND_PRESENT; + break; + } + + case ITM_GOLDEN_AXE_PRESENT: { + item = ITM_GOLDEN_AXE; + cond = mPr_ITEM_COND_PRESENT; + break; + } + + case ITM_GOLDEN_SHOVEL_PRESENT: { + item = ITM_GOLDEN_SHOVEL; + cond = mPr_ITEM_COND_PRESENT; + break; + } + + case ITM_GOLDEN_ROD_PRESENT: { + item = ITM_GOLDEN_ROD; + cond = mPr_ITEM_COND_PRESENT; + break; + } } - case ITM_GOLDEN_NET_PRESENT: - { - item = ITM_GOLDEN_NET; - cond = mPr_ITEM_COND_PRESENT; - break; + priv->inventory.pockets[idx] = item; + priv->inventory.item_conditions = + ((priv->inventory.item_conditions & (~(u32)(mPr_ITEM_COND_NUM << (idx * 2)))) | (cond << (idx * 2))); + + if (cond == mPr_ITEM_COND_NORMAL) { + mPr_SetItemCollectBit(item); } - - case ITM_GOLDEN_AXE_PRESENT: - { - item = ITM_GOLDEN_AXE; - cond = mPr_ITEM_COND_PRESENT; - break; - } - - case ITM_GOLDEN_SHOVEL_PRESENT: - { - item = ITM_GOLDEN_SHOVEL; - cond = mPr_ITEM_COND_PRESENT; - break; - } - - case ITM_GOLDEN_ROD_PRESENT: - { - item = ITM_GOLDEN_ROD; - cond = mPr_ITEM_COND_PRESENT; - break; - } - } - - priv->inventory.pockets[idx] = item; - priv->inventory.item_conditions = ((priv->inventory.item_conditions & (~(u32)(mPr_ITEM_COND_NUM << (idx * 2)))) | (cond << (idx * 2))); - - if (cond == mPr_ITEM_COND_NORMAL) { - mPr_SetItemCollectBit(item); - } } extern int mPr_SetFreePossessionItem(Private_c* priv, mActor_name_t item, u32 cond) { - int idx = mPr_GetPossessionItemIdx(priv, EMPTY_NO); - int res; + int idx = mPr_GetPossessionItemIdx(priv, EMPTY_NO); + int res; - if (idx == -1) { - res = FALSE; - } - else { - mPr_SetPossessionItem(priv, idx, item, cond); - res = TRUE; - } + if (idx == -1) { + res = FALSE; + } else { + mPr_SetPossessionItem(priv, idx, item, cond); + res = TRUE; + } - return res; + return res; } extern void mPr_AddFirstJobHint(Private_c* priv) { - int hints = priv->hint_count + 1; - if ((hints & 0x7F) >= 10) { - hints = 0x80; // signal all hints have been given - } + int hints = priv->hint_count + 1; + if ((hints & 0x7F) >= 10) { + hints = 0x80; // signal all hints have been given + } - priv->hint_count = hints; + priv->hint_count = hints; } extern int mPr_GetFirstJobHintTime(Private_c* priv) { - return priv->hint_count & 0x7F; + return priv->hint_count & 0x7F; } extern int mPr_CheckFirstJobHint(Private_c* priv) { - return (priv->hint_count & 0x80) >> 7; + return (priv->hint_count & 0x80) >> 7; } extern s16 mPr_GetMoneyPower() { - s16 money_power = Common_Get(money_power); - Private_c* priv = Common_Get(now_private); + s16 money_power = Common_Get(money_power); + Private_c* priv = Common_Get(now_private); - if (priv != NULL) { - switch (priv->destiny.type) { - case mPr_DESTINY_MONEY_LUCK: - { - money_power += 100; - break; - } + if (priv != NULL) { + switch (priv->destiny.type) { + case mPr_DESTINY_MONEY_LUCK: { + money_power += 100; + break; + } - case mPr_DESTINY_BAD_LUCK: - { - money_power -= 50; - break; - } + case mPr_DESTINY_BAD_LUCK: { + money_power -= 50; + break; + } + } } - } - if (money_power < mPr_MONEY_POWER_MIN) { - money_power = mPr_MONEY_POWER_MIN; - } + if (money_power < mPr_MONEY_POWER_MIN) { + money_power = mPr_MONEY_POWER_MIN; + } - return money_power; + return money_power; } extern s16 mPr_GetGoodsPower() { - s16 goods_power = Common_Get(goods_power); - Private_c* priv = Common_Get(now_private); + s16 goods_power = Common_Get(goods_power); + Private_c* priv = Common_Get(now_private); - if (priv != NULL) { - switch (priv->destiny.type) { - case mPr_DESTINY_GOODS_LUCK: - { - goods_power += 30; - break; - } + if (priv != NULL) { + switch (priv->destiny.type) { + case mPr_DESTINY_GOODS_LUCK: { + goods_power += 30; + break; + } - case mPr_DESTINY_BAD_LUCK: - { - goods_power -= 30; - break; - } + case mPr_DESTINY_BAD_LUCK: { + goods_power -= 30; + break; + } + } } - } - if (goods_power > mPr_GOODS_POWER_MAX) { - return mPr_GOODS_POWER_MAX; - } - - if (goods_power < mPr_GOODS_POWER_MIN) { - goods_power = mPr_GOODS_POWER_MIN; - } + if (goods_power > mPr_GOODS_POWER_MAX) { + return mPr_GOODS_POWER_MAX; + } - return goods_power; + if (goods_power < mPr_GOODS_POWER_MIN) { + goods_power = mPr_GOODS_POWER_MIN; + } + + return goods_power; } extern int mPr_CheckMuseumAddress(Private_c* priv) { - int res = FALSE; + int res = FALSE; - if (priv != NULL && priv->museum_record.contacted) { - res = TRUE; - } + if (priv != NULL && priv->museum_record.contacted) { + res = TRUE; + } - return res; + return res; } extern int mPr_CheckMuseumInfoMail(Private_c* priv) { - int res = FALSE; + int res = FALSE; - if (priv != NULL && priv->museum_record.send_info_mail) { - res = TRUE; - } + if (priv != NULL && priv->museum_record.send_info_mail) { + res = TRUE; + } - return res; + return res; } extern Private_c* mPr_GetForeignerP() { - return &g_foreigner_private; + return &g_foreigner_private; } extern int mPr_LoadPak_and_SetPrivateInfo2(Private_c* unused_private, u8 player_no) { - Private_c* priv; - int res = FALSE; + Private_c* priv; + int res = FALSE; - if (player_no < mPr_FOREIGNER) { - u32 loan; - mHm_hs_c* house; - Private_c* priv = Save_Get(private + player_no); - if (mPr_CheckCmpPrivate(priv, &g_foreigner_private) == TRUE) { - house = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); - loan = priv->inventory.loan; - mPr_CopyPrivateInfo(priv, &g_foreigner_private); - if (mHm_CheckKeepHouseSize(player_no) == FALSE || house->size_info.next_size == mHm_HOMESIZE_STATUE) { - priv->inventory.loan = loan; - } + if (player_no < mPr_FOREIGNER) { + u32 loan; + mHm_hs_c* house; + Private_c* priv = Save_Get(private_data + player_no); + if (mPr_CheckCmpPrivate(priv, &g_foreigner_private) == TRUE) { + house = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); + loan = priv->inventory.loan; + mPr_CopyPrivateInfo(priv, &g_foreigner_private); + if (mHm_CheckKeepHouseSize(player_no) == FALSE || house->size_info.next_size == mHm_HOMESIZE_STATUE) { + priv->inventory.loan = loan; + } - res = TRUE; - Common_Set(now_private, priv); - Common_Set(player_no, player_no); - } - } - else { - mHm_hs_c* house; - int exist_player; - u32 loan; - int i; - - priv = Save_Get(private); - for (i = 0; i < PLAYER_NUM; i++) { - exist_player = mPr_CheckCmpPrivate(priv, &g_foreigner_private); - if (exist_player == TRUE) { - house = Save_GetPointer(homes[mHS_get_arrange_idx(i)]); - loan = priv->inventory.loan; + res = TRUE; + Common_Set(now_private, priv); + Common_Set(player_no, player_no); + } + } else { + mHm_hs_c* house; + int exist_player; + u32 loan; + int i; - g_foreigner_private.museum_record.contacted = priv->museum_record.contacted; - mPr_CopyPrivateInfo(priv, &g_foreigner_private); + priv = Save_Get(private_data); + for (i = 0; i < PLAYER_NUM; i++) { + exist_player = mPr_CheckCmpPrivate(priv, &g_foreigner_private); + if (exist_player == TRUE) { + house = Save_GetPointer(homes[mHS_get_arrange_idx(i)]); + loan = priv->inventory.loan; - if (mHm_CheckKeepHouseSize(i) == FALSE || house->size_info.next_size == mHm_HOMESIZE_STATUE) { - priv->inventory.loan = loan; + g_foreigner_private.museum_record.contacted = priv->museum_record.contacted; + mPr_CopyPrivateInfo(priv, &g_foreigner_private); + + if (mHm_CheckKeepHouseSize(i) == FALSE || house->size_info.next_size == mHm_HOMESIZE_STATUE) { + priv->inventory.loan = loan; + } + + res = TRUE; + Common_Set(now_private, priv); + Common_Set(player_no, i); + break; + } + + priv++; } - res = TRUE; - Common_Set(now_private, priv); - Common_Set(player_no, i); - break; - } - - priv++; + if (exist_player == FALSE) { + res = TRUE; + Common_Set(now_private, &g_foreigner_private); + Common_Set(player_no, mPr_FOREIGNER); + } } - if (exist_player == FALSE) { - res = TRUE; - Common_Set(now_private, &g_foreigner_private); - Common_Set(player_no, mPr_FOREIGNER); - } - } - - return res; + return res; } extern void mPr_ClearMotherMailInfo(mPr_mother_mail_info_c* mother_mail) { - mother_mail->date = mTM_rtcTime_ymd_clear_code; - bzero(&mother_mail->data, sizeof(mPr_mother_mail_data_c)); + mother_mail->date = mTM_rtcTime_ymd_clear_code; + bzero(&mother_mail->data, sizeof(mPr_mother_mail_data_c)); } static int mPr_GetMotherMailPaperType(int month, int day) { - static u8 paper_table[lbRTC_MONTHS_MAX] = { - 13, 49, 32, 12, 62, 14, 19, 11, 59, 46, 47, 17 - }; + static u8 paper_table[lbRTC_MONTHS_MAX] = { 13, 49, 32, 12, 62, 14, 19, 11, 59, 46, 47, 17 }; - Private_c* priv = Common_Get(now_private); - int paper; + Private_c* priv = Common_Get(now_private); + int paper; - /* TODO: should paper be enums? */ - if (priv->birthday.month == month && priv->birthday.day == day) { - paper = 1; - } - else if (month == lbRTC_JANUARY && day == 1) { - paper = 63; - } - else if (month == lbRTC_AUGUST && day == 8) { - paper = 48; - } - else if (month == lbRTC_DECEMBER && day == 24) { - paper = 23; - } - else { - int idx = month - 1; - paper = paper_table[idx]; - } + /* TODO: should paper be enums? */ + if (priv->birthday.month == month && priv->birthday.day == day) { + paper = 1; + } else if (month == lbRTC_JANUARY && day == 1) { + paper = 63; + } else if (month == lbRTC_AUGUST && day == 8) { + paper = 48; + } else if (month == lbRTC_DECEMBER && day == 24) { + paper = 23; + } else { + int idx = month - 1; + paper = paper_table[idx]; + } - return paper - 1; + return paper - 1; } static void mPr_GetMotherMail(Mail_c* mail, PersonalID_c* pid, mActor_name_t present, int stationery, int mail_no) { - int header_back_pos; + int header_back_pos; - mMl_clear_mail(mail); - mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_pos, mail->content.footer, mail->content.body, mail_no); - mail->content.header_back_start = header_back_pos; - mail->content.font = 0; // TODO: enum - mail->content.mail_type = 4; // TODO: enum, this is "from mom" - mMl_set_to_plname(mail, pid); - mail->present = present; - mail->content.paper_type = stationery; + mMl_clear_mail(mail); + mHandbill_Load_HandbillFromRom(mail->content.header, &header_back_pos, mail->content.footer, mail->content.body, + mail_no); + mail->content.header_back_start = header_back_pos; + mail->content.font = 0; // TODO: enum + mail->content.mail_type = 4; // TODO: enum, this is "from mom" + mMl_set_to_plname(mail, pid); + mail->present = present; + mail->content.paper_type = stationery; } -static int mPr_SendMotherMailPost(PersonalID_c* pid, int player_no, mActor_name_t present, int stationery, int mail_no) { - Mail_c* mail; - mHm_hs_c* home; - int res = FALSE; +static int mPr_SendMotherMailPost(PersonalID_c* pid, int player_no, mActor_name_t present, int stationery, + int mail_no) { + Mail_c* mail; + mHm_hs_c* home; + int res = FALSE; - mail = &l_mpr_mail; - home = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); + mail = &l_mpr_mail; + home = Save_GetPointer(homes[mHS_get_arrange_idx(player_no)]); - if (mPr_CheckCmpPersonalID(pid, &home->ownerID) == TRUE) { - int mailbox_idx = mMl_chk_mail_free_space(home->mailbox, HOME_MAILBOX_SIZE); - if (mailbox_idx != -1) { - mPr_GetMotherMail(mail, pid, present, stationery, mail_no); - mMl_copy_mail(&home->mailbox[mailbox_idx], mail); - res = TRUE; + if (mPr_CheckCmpPersonalID(pid, &home->ownerID) == TRUE) { + int mailbox_idx = mMl_chk_mail_free_space(home->mailbox, HOME_MAILBOX_SIZE); + if (mailbox_idx != -1) { + mPr_GetMotherMail(mail, pid, present, stationery, mail_no); + mMl_copy_mail(&home->mailbox[mailbox_idx], mail); + res = TRUE; + } else if (mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { + mPr_GetMotherMail(mail, pid, present, stationery, mail_no); + res = mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); + } } - else if (mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { - mPr_GetMotherMail(mail, pid, present, stationery, mail_no); - res = mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); - } - } - return res; + return res; } static int mPr_SendMotherMailDate(mPr_mother_mail_info_c* mother_mail, lbRTC_time_c* send_time) { - mActor_name_t present = EMPTY_NO; - int mail_no = -1; - int res = FALSE; + mActor_name_t present = EMPTY_NO; + int mail_no = -1; + int res = FALSE; - if (Common_Get(now_private)->birthday.month == send_time->month && Common_Get(now_private)->birthday.day == send_time->day) { - mail_no = 0x184 + RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); - present = FTR_BIRTHDAY_CAKE; - } - else if (send_time->month == send_time->day) { - int letter_num = (send_time->month - 1) * mPr_MOTHER_MAIL_MONTHLY_NUM + RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); - mail_no = 0x164 + letter_num; - - if (send_time->month == lbRTC_JANUARY) { - present = ITM_MONEY_10000; - } - else if (letter_num == 18) { // TODO: these probably have enums... - present = ITM_FOOD_MUSHROOM; - } - } - else { - if (send_time->month == lbRTC_APRIL && send_time->day == 1) { - mail_no = 0x180; // April Fools - } - else if (mEv_check_status(mEv_EVENT_MOTHERS_DAY, mEv_STATUS_ACTIVE) == TRUE) { - mail_no = 0x17C; - } - else if (mEv_check_status(mEv_EVENT_FATHERS_DAY, mEv_STATUS_ACTIVE) == TRUE) { - mail_no = 0x17E; - } - else if (send_time->month == lbRTC_DECEMBER && send_time->day == 24) { - mail_no = 0x182; // Toy Day (Christmas) - mSP_SelectRandomItem_New(NULL, &present, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ABC, FALSE); - } + if (Common_Get(now_private)->birthday.month == send_time->month && + Common_Get(now_private)->birthday.day == send_time->day) { + mail_no = 0x184 + RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); + present = FTR_BIRTHDAY_CAKE; + } else if (send_time->month == send_time->day) { + int letter_num = (send_time->month - 1) * mPr_MOTHER_MAIL_MONTHLY_NUM + RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); + mail_no = 0x164 + letter_num; - if (mail_no != -1) { - /* Randomize between two letter variants */ - mail_no += RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); - } + if (send_time->month == lbRTC_JANUARY) { + present = ITM_MONEY_10000; + } else if (letter_num == 18) { // TODO: these probably have enums... + present = ITM_FOOD_MUSHROOM; + } + } else { + if (send_time->month == lbRTC_APRIL && send_time->day == 1) { + mail_no = 0x180; // April Fools + } else if (mEv_check_status(mEv_EVENT_MOTHERS_DAY, mEv_STATUS_ACTIVE) == TRUE) { + mail_no = 0x17C; + } else if (mEv_check_status(mEv_EVENT_FATHERS_DAY, mEv_STATUS_ACTIVE) == TRUE) { + mail_no = 0x17E; + } else if (send_time->month == lbRTC_DECEMBER && send_time->day == 24) { + mail_no = 0x182; // Toy Day (Christmas) + mSP_SelectRandomItem_New(NULL, &present, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ABC, FALSE); + } + + if (mail_no != -1) { + /* Randomize between two letter variants */ + mail_no += RANDOM(mPr_MOTHER_MAIL_MONTHLY_NUM); + } } - if (mail_no != -1) { - if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { - mTM_set_renew_time(&mother_mail->date, send_time); + if (mail_no != -1) { + if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, + mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { + mTM_set_renew_time(&mother_mail->date, send_time); + } + + res = TRUE; } - res = TRUE; - } - - return res; + return res; } static int mPr_CheckMotherMailMonthly(mPr_mother_mail_data_c* send_data, int month, int idx) { - if (month == lbRTC_AUGUST) { - return (send_data->august >> (idx)) & 1; // August gets its own byte because it has more than two event letters - } - else { - int shift = (month - 1) * 2; - int slot = shift / 8; - shift -= slot * 8; - idx += shift; + if (month == lbRTC_AUGUST) { + return (send_data->august >> (idx)) & 1; // August gets its own byte because it has more than two event letters + } else { + int shift = (month - 1) * 2; + int slot = shift / 8; + shift -= slot * 8; + idx += shift; - return (send_data->monthly[slot] >> idx) & 1; - } + return (send_data->monthly[slot] >> idx) & 1; + } } static int mPr_GetMotherMailMonthlyNotSendNum(mPr_mother_mail_data_c* send_data, int month) { - int slot; - int not_send_num = 0; - int i; + int slot; + int not_send_num = 0; + int i; - if (month == lbRTC_AUGUST) { - for (i = 0; i < 8; i++) { - if (((send_data->august >> i) & 1) == 0) { - not_send_num++; - } + if (month == lbRTC_AUGUST) { + for (i = 0; i < 8; i++) { + if (((send_data->august >> i) & 1) == 0) { + not_send_num++; + } + } + } else { + u8 byte; + int shift = (month - 1) * 2; + slot = shift / 8; + shift -= slot * 8; + byte = send_data->monthly[slot]; + + for (i = 0; i < 2; i++) { + if (((byte >> shift) & 1) == 0) { + not_send_num++; + shift++; + } + } } - } - else { - u8 byte; - int shift = (month - 1) * 2; - slot = shift / 8; - shift -= slot * 8; - byte = send_data->monthly[slot]; - for (i = 0; i < 2; i++) { - if (((byte >> shift) & 1) == 0) { - not_send_num++; - shift++; - } - } - } - - return not_send_num; + return not_send_num; } static void mPr_SetMotherMailMonthly(mPr_mother_mail_data_c* send_data, int month, int idx) { - if (month == lbRTC_AUGUST) { - send_data->august |= 1 << idx; - } - else { - /* TODO: almost certainly a fake match */ - u8* s; - int slot; - int shift; - - shift = (month - 1) * 2; - slot = ((month - 1) * 2) / 8; - shift -= slot * 8; - idx += shift; + if (month == lbRTC_AUGUST) { + send_data->august |= 1 << idx; + } else { + /* TODO: almost certainly a fake match */ + u8* s; + int slot; + int shift; - s = send_data->monthly + slot; - *s |= 1 << idx; - } + shift = (month - 1) * 2; + slot = ((month - 1) * 2) / 8; + shift -= slot * 8; + idx += shift; + + s = send_data->monthly + slot; + *s |= 1 << idx; + } } -static void mPr_GetMotherMailMonthlyData(mPr_mother_mail_data_c* send_data, int* mail_no, mActor_name_t* present, int* event_no, int month, int not_send_num) { - static int mail_start_no_table[mTM_SEASON_NUM] = { 0x18C, 0x192, 0x186, 0x19E }; - static mActor_name_t may_2_item_table[1] = { ITM_CLOTH105 }; // fortune shirt - static mActor_name_t december_2_item_table[6] = { - ITM_CLOTH108, // aurora knit - ITM_CLOTH109, // winter sweater - ITM_CLOTH110, // go-go shirt - ITM_CLOTH144, // deer shirt - ITM_CLOTH145, // blue check shirt - ITM_CLOTH156 // fish knit - }; +static void mPr_GetMotherMailMonthlyData(mPr_mother_mail_data_c* send_data, int* mail_no, mActor_name_t* present, + int* event_no, int month, int not_send_num) { + static int mail_start_no_table[mTM_SEASON_NUM] = { 0x18C, 0x192, 0x186, 0x19E }; + static mActor_name_t may_2_item_table[1] = { ITM_CLOTH105 }; // fortune shirt + static mActor_name_t december_2_item_table[6] = { + ITM_CLOTH108, // aurora knit + ITM_CLOTH109, // winter sweater + ITM_CLOTH110, // go-go shirt + ITM_CLOTH144, // deer shirt + ITM_CLOTH145, // blue check shirt + ITM_CLOTH156 // fish knit + }; - int max; - int mail_start_idx; - int selected_event; - int i; - - *present = EMPTY_NO; - mail_start_idx = 3; + int max; + int mail_start_idx; + int selected_event; + int i; - if (month <= lbRTC_FEBRUARY) { + *present = EMPTY_NO; mail_start_idx = 3; - } - else if (month <= lbRTC_MAY) { - mail_start_idx = 0; - } - else if (month <= lbRTC_AUGUST) { - mail_start_idx = 1; - } - else if (month <= lbRTC_NOVEMBER) { - mail_start_idx = 2; - } - *mail_no = mail_start_no_table[mail_start_idx]; - - selected_event = RANDOM(not_send_num); - max = mPr_MOTHER_MAIL_MONTHLY_NUM; - if (month == lbRTC_AUGUST) { - max = 8; - } - - for (i = 0; i < max; i++) { - if (mPr_CheckMotherMailMonthly(send_data, month, i) == FALSE) { - if (selected_event <= 0) { - *event_no = i; - break; - } - - selected_event--; + if (month <= lbRTC_FEBRUARY) { + mail_start_idx = 3; + } else if (month <= lbRTC_MAY) { + mail_start_idx = 0; + } else if (month <= lbRTC_AUGUST) { + mail_start_idx = 1; + } else if (month <= lbRTC_NOVEMBER) { + mail_start_idx = 2; } - } - *mail_no += *event_no + (month - 1 - mail_start_idx * 3) * 2; + *mail_no = mail_start_no_table[mail_start_idx]; - if (month == lbRTC_MAY && *event_no == 1) { - *present = may_2_item_table[RANDOM(1)]; - } - else if (month == lbRTC_DECEMBER) { - if (*event_no == 0) { - *present = ITM_FOOD_APPLE; + selected_event = RANDOM(not_send_num); + max = mPr_MOTHER_MAIL_MONTHLY_NUM; + if (month == lbRTC_AUGUST) { + max = 8; } - else { - *present = december_2_item_table[RANDOM(6)]; + + for (i = 0; i < max; i++) { + if (mPr_CheckMotherMailMonthly(send_data, month, i) == FALSE) { + if (selected_event <= 0) { + *event_no = i; + break; + } + + selected_event--; + } + } + + *mail_no += *event_no + (month - 1 - mail_start_idx * 3) * 2; + + if (month == lbRTC_MAY && *event_no == 1) { + *present = may_2_item_table[RANDOM(1)]; + } else if (month == lbRTC_DECEMBER) { + if (*event_no == 0) { + *present = ITM_FOOD_APPLE; + } else { + *present = december_2_item_table[RANDOM(6)]; + } + } else if (month == lbRTC_NOVEMBER) { + *present = ITM_FOOD_MUSHROOM; } - } - else if (month == lbRTC_NOVEMBER) { - *present = ITM_FOOD_MUSHROOM; - } } static int mPr_GetMotherMailNormalNotSendNum(mPr_mother_mail_data_c* send_data) { - int not_send_num = 0; - int i; - int j; + int not_send_num = 0; + int i; + int j; - for (i = 0; i < mPr_MOTHER_MAIL_NORMAL_NUM; i++) { - for (j = 0; j < 8; j++) { - if (((send_data->normal[i] >> j) & 1) == 0) { - not_send_num++; - } + for (i = 0; i < mPr_MOTHER_MAIL_NORMAL_NUM; i++) { + for (j = 0; j < 8; j++) { + if (((send_data->normal[i] >> j) & 1) == 0) { + not_send_num++; + } + } } - } - return not_send_num; + return not_send_num; } static void mPr_SetMotherMailNormal(mPr_mother_mail_data_c* send_data, int idx) { - int slot = idx / 8; - idx -= (idx / 8) * 8; - send_data->normal[slot] |= (1 << idx); + int slot = idx / 8; + idx -= (idx / 8) * 8; + send_data->normal[slot] |= (1 << idx); } static int mPr_CheckMotherMailNormal(mPr_mother_mail_data_c* send_data, int idx) { - int slot = idx / 8; - idx -= (idx / 8) * 8; - return (send_data->normal[slot] >> idx) & 1; + int slot = idx / 8; + idx -= (idx / 8) * 8; + return (send_data->normal[slot] >> idx) & 1; } // TODO: we need to make an enum for each player mother mail event id -static void mPr_GetMotherMailNormalData(mPr_mother_mail_data_c* send_data, int* mail_no, mActor_name_t* present, int* event_no, int no_send_num) { - int selected_event; - int i; +static void mPr_GetMotherMailNormalData(mPr_mother_mail_data_c* send_data, int* mail_no, mActor_name_t* present, + int* event_no, int no_send_num) { + int selected_event; + int i; - *event_no = -1; - selected_event = RANDOM(no_send_num); + *event_no = -1; + selected_event = RANDOM(no_send_num); - for (i = 0; i < 56; i++) { - if (mPr_CheckMotherMailNormal(send_data, i) == FALSE) { - if (selected_event <= 0) { - *event_no = i; - break; - } + for (i = 0; i < 56; i++) { + if (mPr_CheckMotherMailNormal(send_data, i) == FALSE) { + if (selected_event <= 0) { + *event_no = i; + break; + } - selected_event--; + selected_event--; + } } - } - *mail_no = 0x12C + *event_no; + *mail_no = 0x12C + *event_no; - switch (*event_no) { - case 1: - case 16: - mSP_SelectRandomItem_New(NULL, present, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_ABC, FALSE); - break; + switch (*event_no) { + case 1: + case 16: + mSP_SelectRandomItem_New(NULL, present, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_ABC, FALSE); + break; - case 3: - case 21: - case 22: - case 47: - *present = mFI_GetOtherFruit(); - break; + case 3: + case 21: + case 22: + case 47: + *present = mFI_GetOtherFruit(); + break; - case 12: - *present = ITM_MONEY_1000; - break; + case 12: + *present = ITM_MONEY_1000; + break; - case 37: - *present = FTR_PAPA_BEAR; - break; + case 37: + *present = FTR_PAPA_BEAR; + break; - case 38: - *present = FTR_DRACAENA; - break; + case 38: + *present = FTR_DRACAENA; + break; - case 40: - mSP_RandomUmbSelect(present, 1); - break; + case 40: + mSP_RandomUmbSelect(present, 1); + break; - default: - *present = EMPTY_NO; - break; - } + default: + *present = EMPTY_NO; + break; + } } static void mPr_SendMotherMailNormal(mPr_mother_mail_info_c* mother_mail, lbRTC_time_c* send_time) { - int mail_no = -1; - int monthly_not_send_num = 0; - int event_no; - mActor_name_t present = EMPTY_NO; + int mail_no = -1; + int monthly_not_send_num = 0; + int event_no; + mActor_name_t present = EMPTY_NO; - if (RANDOM(100) < 20) { - int not_send_num = mPr_GetMotherMailNormalNotSendNum(&mother_mail->data); - if (not_send_num == 0) { - bzero(&mother_mail->data, sizeof(mPr_mother_mail_data_c)); - monthly_not_send_num = mPr_GetMotherMailMonthlyNotSendNum(&mother_mail->data, send_time->month); + if (RANDOM(100) < 20) { + int not_send_num = mPr_GetMotherMailNormalNotSendNum(&mother_mail->data); + if (not_send_num == 0) { + bzero(&mother_mail->data, sizeof(mPr_mother_mail_data_c)); + monthly_not_send_num = mPr_GetMotherMailMonthlyNotSendNum(&mother_mail->data, send_time->month); + } + + if (monthly_not_send_num > 0) { + mPr_GetMotherMailMonthlyData(&mother_mail->data, &mail_no, &present, &event_no, send_time->month, + monthly_not_send_num); + + if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, + mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { + mPr_SetMotherMailMonthly(&mother_mail->data, send_time->month, event_no); + } + } else { + mPr_GetMotherMailNormalData(&mother_mail->data, &mail_no, &present, &event_no, not_send_num); + + if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, + mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { + mPr_SetMotherMailNormal(&mother_mail->data, event_no); + } + } } - if (monthly_not_send_num > 0) { - mPr_GetMotherMailMonthlyData(&mother_mail->data, &mail_no, &present, &event_no, send_time->month, monthly_not_send_num); - - if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { - mPr_SetMotherMailMonthly(&mother_mail->data, send_time->month, event_no); - } - } - else { - mPr_GetMotherMailNormalData(&mother_mail->data, &mail_no, &present, &event_no, not_send_num); - - if (mPr_SendMotherMailPost(&Common_Get(now_private)->player_ID, Common_Get(player_no), present, mPr_GetMotherMailPaperType(send_time->month, send_time->day), mail_no) == TRUE) { - mPr_SetMotherMailNormal(&mother_mail->data, event_no); - } - } - } - - mTM_set_renew_time(&mother_mail->date, send_time); + mTM_set_renew_time(&mother_mail->date, send_time); } static void mPr_SendMotherMail(mPr_mother_mail_info_c* mother_mail, lbRTC_time_c* send_time) { - if (mPr_SendMotherMailDate(mother_mail, send_time) == FALSE) { - mPr_SendMotherMailNormal(mother_mail, send_time); - } + if (mPr_SendMotherMailDate(mother_mail, send_time) == FALSE) { + mPr_SendMotherMailNormal(mother_mail, send_time); + } } extern void mPr_SendMailFromMother() { - Private_c* priv = Common_Get(now_private); - u8 player_no = Common_Get(player_no); - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - - if (mLd_PlayerManKindCheckNo(player_no) == FALSE && priv != NULL && mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { - mPr_mother_mail_info_c* mother_mail = Save_GetPointer(mother_mail[player_no]); - lbRTC_ymd_c* mail_date = &mother_mail->date; + Private_c* priv = Common_Get(now_private); + u8 player_no = Common_Get(player_no); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - if (mail_date->year != mTM_rtcTime_ymd_clear_code.year && mail_date->month != mTM_rtcTime_ymd_clear_code.month && mail_date->day != mTM_rtcTime_ymd_clear_code.day) { - if (mail_date->year != rtc_time->year || mail_date->month != rtc_time->month || mail_date->day != rtc_time->day) { - mPr_SendMotherMail(mother_mail, rtc_time); - } + if (mLd_PlayerManKindCheckNo(player_no) == FALSE && priv != NULL && + mPr_NullCheckPersonalID(&priv->player_ID) == FALSE) { + mPr_mother_mail_info_c* mother_mail = Save_GetPointer(mother_mail[player_no]); + lbRTC_ymd_c* mail_date = &mother_mail->date; + + if (mail_date->year != mTM_rtcTime_ymd_clear_code.year && + mail_date->month != mTM_rtcTime_ymd_clear_code.month && mail_date->day != mTM_rtcTime_ymd_clear_code.day) { + if (mail_date->year != rtc_time->year || mail_date->month != rtc_time->month || + mail_date->day != rtc_time->day) { + mPr_SendMotherMail(mother_mail, rtc_time); + } + } else { + mTM_set_renew_time(mail_date, rtc_time); + } } - else { - mTM_set_renew_time(mail_date, rtc_time); - } - } } static void mPr_GetForeingerAnimalMail(Mail_c* mail, Private_c* priv, mPr_animal_memory_c* anm_mem) { - AnmPersonalID_c anm_pid; - int mail_no; - u8 npc_name[ANIMAL_NAME_LEN]; - u8 header[40]; - u8 footer[48]; - int ofs; - u8 looks; - int header_back_start; + AnmPersonalID_c anm_pid; + int mail_no; + u8 npc_name[ANIMAL_NAME_LEN]; + u8 header[40]; + u8 footer[48]; + int ofs; + u8 looks; + int header_back_start; - looks = mNpc_GetLooks(anm_mem->npc_id); - ofs = RANDOM(3); - mail_no = 0xFC; - mail_no += ofs + looks * 3; - mHandbill_Set_free_str(0, priv->player_ID.player_name, PLAYER_NAME_LEN); // player's name - mNpc_LoadNpcNameString(npc_name, anm_mem->npc_id); - mHandbill_Set_free_str(1, npc_name, ANIMAL_NAME_LEN); // animal's name - mHandbill_Set_free_str(2, anm_mem->land_name, LAND_NAME_SIZE); // animal's current town name - mHandbill_Set_free_str(3, priv->player_ID.land_name, LAND_NAME_SIZE); // player's town name - mHandbill_Load_HandbillFromRom2(header, 40, &header_back_start, footer, 48, mail->content.body, mail_no); - mem_copy(mail->content.header, header, mHandbill_HEADER_LEN); - mem_copy(mail->content.footer, footer, mHandbill_FOOTER_LEN); + looks = mNpc_GetLooks(anm_mem->npc_id); + ofs = RANDOM(3); + mail_no = 0xFC; + mail_no += ofs + looks * 3; + mHandbill_Set_free_str(0, priv->player_ID.player_name, PLAYER_NAME_LEN); // player's name + mNpc_LoadNpcNameString(npc_name, anm_mem->npc_id); + mHandbill_Set_free_str(1, npc_name, ANIMAL_NAME_LEN); // animal's name + mHandbill_Set_free_str(2, anm_mem->land_name, LAND_NAME_SIZE); // animal's current town name + mHandbill_Set_free_str(3, priv->player_ID.land_name, LAND_NAME_SIZE); // player's town name + mHandbill_Load_HandbillFromRom2(header, 40, &header_back_start, footer, 48, mail->content.body, mail_no); + mem_copy(mail->content.header, header, mHandbill_HEADER_LEN); + mem_copy(mail->content.footer, footer, mHandbill_FOOTER_LEN); - mail->content.header_back_start = header_back_start; - mail->content.font = 0; - mail->content.mail_type = 0; - mail->present = EMPTY_NO; - mail->content.paper_type = mNpc_GetPaperType(); + mail->content.header_back_start = header_back_start; + mail->content.font = 0; + mail->content.mail_type = 0; + mail->present = EMPTY_NO; + mail->content.paper_type = mNpc_GetPaperType(); - anm_pid.npc_id = anm_mem->npc_id; - anm_pid.land_id = mLd_BITMASK; - mLd_CopyLandName(anm_pid.land_name, anm_mem->land_name); - anm_pid.name_id = anm_mem->npc_id; - anm_pid.looks = looks; + anm_pid.npc_id = anm_mem->npc_id; + anm_pid.land_id = mLd_BITMASK; + mLd_CopyLandName(anm_pid.land_name, anm_mem->land_name); + anm_pid.name_id = anm_mem->npc_id; + anm_pid.looks = looks; - mMl_set_mail_name_npcinfo(&mail->header.sender, &anm_pid); - mPr_CopyPersonalID(&mail->header.recipient.personalID, &priv->player_ID); - mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; + mMl_set_mail_name_npcinfo(&mail->header.sender, &anm_pid); + mPr_CopyPersonalID(&mail->header.recipient.personalID, &priv->player_ID); + mail->header.recipient.type = mMl_NAME_TYPE_PLAYER; } extern void mPr_SendForeingerAnimalMail(Private_c* priv) { - Mail_c* mail = &l_mpr_mail; - mPr_animal_memory_c* anm_mem = &priv->animal_memory; + Mail_c* mail = &l_mpr_mail; + mPr_animal_memory_c* anm_mem = &priv->animal_memory; - if (mLd_PlayerManKindCheck() == FALSE) { - if (anm_mem->npc_id != RSV_NO && ITEM_NAME_GET_TYPE(anm_mem->npc_id) == NAME_TYPE_NPC && mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { - mMl_clear_mail(mail); - mPr_GetForeingerAnimalMail(mail, priv, anm_mem); - mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); - mPr_ClearAnimalMemory(anm_mem); + if (mLd_PlayerManKindCheck() == FALSE) { + if (anm_mem->npc_id != RSV_NO && ITEM_NAME_GET_TYPE(anm_mem->npc_id) == NAME_TYPE_NPC && + mPO_get_keep_mail_sum() < mPO_MAIL_STORAGE_SIZE) { + mMl_clear_mail(mail); + mPr_GetForeingerAnimalMail(mail, priv, anm_mem); + mPO_receipt_proc(mail, mPO_SENDTYPE_MAIL); + mPr_ClearAnimalMemory(anm_mem); + } } - } } extern void mPr_StartSetCompleteTalkInfo() { - if (mSM_CHECK_ALL_FISH_GET()) { - Common_Get(now_private)->complete_fish_insect_flags |= (1 << 0); - } + if (mSM_CHECK_ALL_FISH_GET()) { + Common_Get(now_private)->complete_fish_insect_flags |= (1 << 0); + } - if (mSM_CHECK_ALL_INSECT_GET()) { - Common_Get(now_private)->complete_fish_insect_flags |= (1 << 2); - } + if (mSM_CHECK_ALL_INSECT_GET()) { + Common_Get(now_private)->complete_fish_insect_flags |= (1 << 2); + } } static void mPr_SetCompleteTalk(u8* comp_insect_fish_flags, int type) { - *comp_insect_fish_flags |= (1 << (type * 2) + 1); + *comp_insect_fish_flags |= (1 << (type * 2) + 1); } static int mPr_GetCompleteTalk(u8 comp_insect_fish_flags, int type) { - return (comp_insect_fish_flags >> ((type * 2) + 1)) & 1; + return (comp_insect_fish_flags >> ((type * 2) + 1)) & 1; } extern void mPr_SetFishCompleteTalk() { - mPr_SetCompleteTalk(&Common_Get(now_private)->complete_fish_insect_flags, 0); + mPr_SetCompleteTalk(&Common_Get(now_private)->complete_fish_insect_flags, 0); } extern int mPr_CheckFishCompleteTalk(u8 player_no) { - int res = FALSE; + int res = FALSE; - if (player_no < mPr_FOREIGNER && mPr_GetCompleteTalk(Save_Get(private[player_no]).complete_fish_insect_flags, 0) == TRUE) { - res = TRUE; - } + if (player_no < mPr_FOREIGNER && + mPr_GetCompleteTalk(Save_Get(private_data[player_no]).complete_fish_insect_flags, 0) == TRUE) { + res = TRUE; + } - return res; + return res; } extern void mPr_SetInsectCompleteTalk() { - mPr_SetCompleteTalk(&Common_Get(now_private)->complete_fish_insect_flags, 1); + mPr_SetCompleteTalk(&Common_Get(now_private)->complete_fish_insect_flags, 1); } extern int mPr_CheckInsectCompleteTalk(u8 player_no) { - int res = FALSE; + int res = FALSE; - if (player_no < mPr_FOREIGNER && mPr_GetCompleteTalk(Save_Get(private[player_no]).complete_fish_insect_flags, 1) == TRUE) { - res = TRUE; - } + if (player_no < mPr_FOREIGNER && + mPr_GetCompleteTalk(Save_Get(private_data[player_no]).complete_fish_insect_flags, 1) == TRUE) { + res = TRUE; + } - return res; + return res; } static int mPr_GetTalkPermission(u8 comp_insect_fish_flags, int type) { - int base = type * 2; - int talk = base + 1; + int base = type * 2; + int talk = base + 1; - int res = FALSE; - if (((comp_insect_fish_flags >> base) & 1) == 0 || ((comp_insect_fish_flags >> talk) & 1) == 0) { - res = TRUE; - } + int res = FALSE; + if (((comp_insect_fish_flags >> base) & 1) == 0 || ((comp_insect_fish_flags >> talk) & 1) == 0) { + res = TRUE; + } - return res; + return res; } extern int mPr_GetFishCompTalkPermission() { - int res = FALSE; + int res = FALSE; - if (mSM_CHECK_ALL_FISH_GET()) { - res = mPr_GetTalkPermission(Common_Get(now_private)->complete_fish_insect_flags, 0); - } + if (mSM_CHECK_ALL_FISH_GET()) { + res = mPr_GetTalkPermission(Common_Get(now_private)->complete_fish_insect_flags, 0); + } - return res; + return res; } extern int mPr_GetInsectCompTalkPermission() { - int res = FALSE; + int res = FALSE; - if (mSM_CHECK_ALL_INSECT_GET()) { - res = mPr_GetTalkPermission(Common_Get(now_private)->complete_fish_insect_flags, 1); - } + if (mSM_CHECK_ALL_INSECT_GET()) { + res = mPr_GetTalkPermission(Common_Get(now_private)->complete_fish_insect_flags, 1); + } - return res; + return res; } extern void mPr_ClearMapInfo(mPr_map_info_c* map_info, int max) { - for (max; max != 0; max--) { - mLd_ClearLandName(map_info->land_name); - map_info->land_id = 0; - map_info++; - } + for (max; max != 0; max--) { + mLd_ClearLandName(map_info->land_name); + map_info->land_id = 0; + map_info++; + } } static void mPr_CopyMapInfo(mPr_map_info_c* dst, mPr_map_info_c* src) { - mem_copy((u8*)dst, (u8*)src, sizeof(mPr_map_info_c)); + mem_copy((u8*)dst, (u8*)src, sizeof(mPr_map_info_c)); } static void mPr_SetMapThisLand(mPr_map_info_c* map_info) { - if (map_info != NULL) { - mLd_CopyLandName(map_info->land_name, Save_Get(land_info).name); - map_info->land_id = Save_Get(land_info).id; - } + if (map_info != NULL) { + mLd_CopyLandName(map_info->land_name, Save_Get(land_info).name); + map_info->land_id = Save_Get(land_info).id; + } } static int mPr_GetMapFreeIdx(mPr_map_info_c* map_info, int max) { - int res = -1; - int i; - - for (i = 0; i < max; i++) { - if (!mLd_CheckId(map_info->land_id) || mLd_NullCheckLandName(map_info->land_name) == TRUE) { - res = i; - break; - } - - map_info++; - } - - return res; -} - -static int mPr_GetLandMapIdx(mPr_map_info_c* map_info, int max, mLd_land_info_c* land_info) { - int res = -1; - - if (map_info != NULL && land_info != NULL) { + int res = -1; int i; for (i = 0; i < max; i++) { - if (mLd_CheckCmpLand(map_info->land_name, map_info->land_id, land_info->name, land_info->id) == TRUE) { - res = i; - break; - } + if (!mLd_CheckId(map_info->land_id) || mLd_NullCheckLandName(map_info->land_name) == TRUE) { + res = i; + break; + } - map_info++; + map_info++; } - } - return res; + return res; +} + +static int mPr_GetLandMapIdx(mPr_map_info_c* map_info, int max, mLd_land_info_c* land_info) { + int res = -1; + + if (map_info != NULL && land_info != NULL) { + int i; + + for (i = 0; i < max; i++) { + if (mLd_CheckCmpLand(map_info->land_name, map_info->land_id, land_info->name, land_info->id) == TRUE) { + res = i; + break; + } + + map_info++; + } + } + + return res; } extern int mPr_GetThisLandMapIdx(mPr_map_info_c* map_info, int max) { - return mPr_GetLandMapIdx(map_info, max, Save_GetPointer(land_info)); + return mPr_GetLandMapIdx(map_info, max, Save_GetPointer(land_info)); } static void mPr_PushMapInfo(mPr_map_info_c* map_info, int max) { - if (map_info != NULL) { - max--; + if (map_info != NULL) { + max--; - if (max > 0) { - for (max; max > 0; max--) { - mPr_CopyMapInfo(map_info, map_info + 1); - map_info++; - } + if (max > 0) { + for (max; max > 0; max--) { + mPr_CopyMapInfo(map_info, map_info + 1); + map_info++; + } + } + + mPr_ClearMapInfo(map_info, 1); } - - mPr_ClearMapInfo(map_info, 1); - } } extern void mPr_SetNewMap(mPr_map_info_c* map_info, int max) { - if (map_info != NULL && mPr_GetThisLandMapIdx(map_info, max) == -1) { - int free_idx = mPr_GetMapFreeIdx(map_info, max); - if (free_idx != -1) { - map_info += free_idx; - } - else { - mPr_PushMapInfo(map_info, max); - free_idx = max - 1; - map_info += free_idx; - } + if (map_info != NULL && mPr_GetThisLandMapIdx(map_info, max) == -1) { + int free_idx = mPr_GetMapFreeIdx(map_info, max); + if (free_idx != -1) { + map_info += free_idx; + } else { + mPr_PushMapInfo(map_info, max); + free_idx = max - 1; + map_info += free_idx; + } - if (map_info != NULL) { - mPr_SetMapThisLand(map_info); + if (map_info != NULL) { + mPr_SetMapThisLand(map_info); + } } - } } extern void mPr_RenewalMapInfo(mPr_map_info_c* map_info, int max, mLd_land_info_c* land_info) { - mPr_map_info_c map_save; + mPr_map_info_c map_save; - int map_idx = mPr_GetLandMapIdx(map_info, max, land_info); - if (map_idx != -1) { - mPr_CopyMapInfo(&map_save, map_info + map_idx); - mPr_PushMapInfo(map_info + map_idx, max - map_idx); - - map_idx = mPr_GetMapFreeIdx(map_info, max); + int map_idx = mPr_GetLandMapIdx(map_info, max, land_info); if (map_idx != -1) { - mPr_CopyMapInfo(map_info + map_idx, &map_save); + mPr_CopyMapInfo(&map_save, map_info + map_idx); + mPr_PushMapInfo(map_info + map_idx, max - map_idx); + + map_idx = mPr_GetMapFreeIdx(map_info, max); + if (map_idx != -1) { + mPr_CopyMapInfo(map_info + map_idx, &map_save); + } } - } } extern void mPr_RandomSetPlayerData_title_demo() { - Private_c* priv = Common_Get(now_private); - int i; + Private_c* priv = Common_Get(now_private); + int i; - priv->gender = RANDOM(4); // why not RANDOM(2)??? - priv->gender &= 1; - mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(priv->gender)); - priv->face = mPr_GetRandomFace(); + priv->gender = RANDOM(4); // why not RANDOM(2)??? + priv->gender &= 1; + mPlib_change_player_cloth_info_lv2(priv, mPr_GetRandomCloth(priv->gender)); + priv->face = mPr_GetRandomFace(); - for (i = 0; i < mHS_HOUSE_NUM; i++) { - Save_Get(homes[i]).door_original = -1; - } + for (i = 0; i < mHS_HOUSE_NUM; i++) { + Save_Get(homes[i]).door_original = -1; + } } extern void mPr_PrintMapInfo_debug(gfxprint_t* gfxprint) { - Private_c* priv = Common_Get(now_private); - mPr_map_info_c* map_info; - int i; + Private_c* priv = Common_Get(now_private); + mPr_map_info_c* map_info; + int i; - if (priv != NULL) { - map_info = priv->maps; - gfxprint_color(gfxprint, 30, 100, 100, 255); - gfxprint_locate8x8(gfxprint, 3, 21); - gfxprint_printf(gfxprint, "%04x ", Save_Get(land_info).id); + if (priv != NULL) { + map_info = priv->maps; + gfxprint_color(gfxprint, 30, 100, 100, 255); + gfxprint_locate8x8(gfxprint, 3, 21); + gfxprint_printf(gfxprint, "%04x ", Save_Get(land_info).id); - gfxprint_locate8x8(gfxprint, 3, 22); - gfxprint_color(gfxprint, 30, 200, 70, 255); + gfxprint_locate8x8(gfxprint, 3, 22); + gfxprint_color(gfxprint, 30, 200, 70, 255); - for (i = 0; i < mPr_FOREIGN_MAP_COUNT; i++) { - if (i == 4) { - gfxprint_locate8x8(gfxprint, 3, 23); - } + for (i = 0; i < mPr_FOREIGN_MAP_COUNT; i++) { + if (i == 4) { + gfxprint_locate8x8(gfxprint, 3, 23); + } - if (mLd_CheckId(map_info->land_id) == TRUE) { - gfxprint_printf(gfxprint, "%04x ", map_info->land_id); - } - else { - gfxprint_printf(gfxprint, "**** "); - } + if (mLd_CheckId(map_info->land_id) == TRUE) { + gfxprint_printf(gfxprint, "%04x ", map_info->land_id); + } else { + gfxprint_printf(gfxprint, "**** "); + } - map_info++; + map_info++; + } } - } } diff --git a/src/m_quest.c b/src/m_quest.c index 790a020c..8c82288f 100644 --- a/src/m_quest.c +++ b/src/m_quest.c @@ -13,1114 +13,1073 @@ #include "m_common_data.h" typedef struct grab_s { - mActor_name_t item; - int pocket_idx; - int type; - mQst_delivery_c delivery; + mActor_name_t item; + int pocket_idx; + int type; + mQst_delivery_c delivery; } mQst_grab_c; -static lbRTC_day_t l_delivery_limit[4] = { - 2, - 2, - 2, - 2 -}; +static lbRTC_day_t l_delivery_limit[4] = { 2, 2, 2, 2 }; -static lbRTC_day_t l_errand_limit[mQst_ERRAND_NUM] = { - 2, - 2, - 2, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0 -}; +static lbRTC_day_t l_errand_limit[mQst_ERRAND_NUM] = { 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; static lbRTC_day_t l_contest_limit[mQst_CONTEST_KIND_NUM] = { - 1, // mQst_CONTEST_KIND_FRUIT - 1, // mQst_CONTEST_KIND_SOCCER - 1, // mQst_CONTEST_KIND_SNOWMAN - 3, // mQst_CONTEST_KIND_FLOWER - 3, // mQst_CONTEST_KIND_FISH - 3, // mQst_CONTEST_KIND_INSECT - 2 // mQst_CONTEST_KIND_LETTER + 1, // mQst_CONTEST_KIND_FRUIT + 1, // mQst_CONTEST_KIND_SOCCER + 1, // mQst_CONTEST_KIND_SNOWMAN + 3, // mQst_CONTEST_KIND_FLOWER + 3, // mQst_CONTEST_KIND_FISH + 3, // mQst_CONTEST_KIND_INSECT + 2 // mQst_CONTEST_KIND_LETTER }; static lbRTC_day_t l_contest_fin_limit[mQst_CONTEST_KIND_NUM] = { - 3, // mQst_CONTEST_KIND_FRUIT - 3, // mQst_CONTEST_KIND_SOCCER - 3, // mQst_CONTEST_KIND_SNOWMAN - 3, // mQst_CONTEST_KIND_FLOWER - 3, // mQst_CONTEST_KIND_FISH - 3, // mQst_CONTEST_KIND_INSECT - 2 // mQst_CONTEST_KIND_LETTER + 3, // mQst_CONTEST_KIND_FRUIT + 3, // mQst_CONTEST_KIND_SOCCER + 3, // mQst_CONTEST_KIND_SNOWMAN + 3, // mQst_CONTEST_KIND_FLOWER + 3, // mQst_CONTEST_KIND_FISH + 3, // mQst_CONTEST_KIND_INSECT + 2 // mQst_CONTEST_KIND_LETTER }; -static lbRTC_day_t* l_limit_table[mQst_QUEST_TYPE_NUM] = { - l_delivery_limit, - l_errand_limit, - l_contest_limit -}; +static lbRTC_day_t* l_limit_table[mQst_QUEST_TYPE_NUM] = { l_delivery_limit, l_errand_limit, l_contest_limit }; static int l_limit_table_max[mQst_QUEST_TYPE_NUM] = { - 4, // mQst_QUEST_TYPE_DELIVERY - 15, // mQst_QUEST_TYPE_ERRAND - mQst_CONTEST_KIND_NUM // mQst_QUEST_TYPE_CONTEST + 4, // mQst_QUEST_TYPE_DELIVERY + 15, // mQst_QUEST_TYPE_ERRAND + mQst_CONTEST_KIND_NUM // mQst_QUEST_TYPE_CONTEST }; extern void mQst_ClearQuestInfo(mQst_base_c* quest) { - bzero(quest, sizeof(mQst_base_c)); - quest->quest_type = mQst_QUEST_TYPE_NONE; + bzero(quest, sizeof(mQst_base_c)); + quest->quest_type = mQst_QUEST_TYPE_NONE; } extern void mQst_ClearDelivery(mQst_delivery_c* delivery, int num) { - int i; - - for (i = 0; i < num; i++) { - mQst_ClearQuestInfo(&delivery->base); - mNpc_ClearAnimalPersonalID(&delivery->recipient); - mNpc_ClearAnimalPersonalID(&delivery->sender); + int i; - delivery++; - } + for (i = 0; i < num; i++) { + mQst_ClearQuestInfo(&delivery->base); + mNpc_ClearAnimalPersonalID(&delivery->recipient); + mNpc_ClearAnimalPersonalID(&delivery->sender); + + delivery++; + } } extern void mQst_ClearErrand(mQst_errand_c* errand, int num) { - int i; + int i; - for (i = 0; i < num; i++) { - mQst_ClearQuestInfo(&errand->base); - mNpc_ClearAnimalPersonalID(&errand->recipient); - mNpc_ClearAnimalPersonalID(&errand->sender); + for (i = 0; i < num; i++) { + mQst_ClearQuestInfo(&errand->base); + mNpc_ClearAnimalPersonalID(&errand->recipient); + mNpc_ClearAnimalPersonalID(&errand->sender); - errand->item = EMPTY_NO; - errand->pockets_idx = -1; - errand->errand_type = mQst_ERRAND_TYPE_NONE; + errand->item = EMPTY_NO; + errand->pockets_idx = -1; + errand->errand_type = mQst_ERRAND_TYPE_NONE; - bzero(&errand->info, sizeof(mQst_errand_info_u)); + bzero(&errand->info, sizeof(mQst_errand_info_u)); - errand++; - } + errand++; + } } extern void mQst_ClearContest(mQst_contest_c* contest) { - mQst_ClearQuestInfo(&contest->base); - contest->requested_item = EMPTY_NO; - mPr_ClearPersonalID(&contest->player_id); - contest->type = mQst_QUEST_TYPE_NONE; - bzero(&contest->info, sizeof(mQst_contest_info_u)); + mQst_ClearQuestInfo(&contest->base); + contest->requested_item = EMPTY_NO; + mPr_ClearPersonalID(&contest->player_id); + contest->type = mQst_QUEST_TYPE_NONE; + bzero(&contest->info, sizeof(mQst_contest_info_u)); } extern void mQst_ClearNotSaveQuest(mQst_not_saved_c* not_saved) { - bzero(not_saved, sizeof(mQst_not_saved_c)); + bzero(not_saved, sizeof(mQst_not_saved_c)); } extern void mQst_CopyQuestInfo(mQst_base_c* dst, mQst_base_c* src) { - dst->quest_type = src->quest_type; - dst->quest_kind = src->quest_kind; - dst->time_limit_enabled = src->time_limit_enabled; - dst->progress = src->progress; - dst->give_reward = src->give_reward; + dst->quest_type = src->quest_type; + dst->quest_kind = src->quest_kind; + dst->time_limit_enabled = src->time_limit_enabled; + dst->progress = src->progress; + dst->give_reward = src->give_reward; - lbRTC_TimeCopy(&dst->time_limit, &src->time_limit); + lbRTC_TimeCopy(&dst->time_limit, &src->time_limit); } extern void mQst_CopyDelivery(mQst_delivery_c* dst, mQst_delivery_c* src) { - mQst_CopyQuestInfo(&dst->base, &src->base); - mNpc_CopyAnimalPersonalID(&dst->recipient, &src->recipient); - mNpc_CopyAnimalPersonalID(&dst->sender, &src->sender); + mQst_CopyQuestInfo(&dst->base, &src->base); + mNpc_CopyAnimalPersonalID(&dst->recipient, &src->recipient); + mNpc_CopyAnimalPersonalID(&dst->sender, &src->sender); } extern void mQst_CopyErrand(mQst_errand_c* dst, mQst_errand_c* src) { - u8* info_src_p = (u8*)&src->info; - u8* info_dst_p = (u8*)&dst->info; - int i; - - mQst_CopyQuestInfo(&dst->base, &src->base); - mNpc_CopyAnimalPersonalID(&dst->recipient, &src->recipient); - mNpc_CopyAnimalPersonalID(&dst->sender, &src->sender); - dst->item = src->item; - dst->pockets_idx = src->pockets_idx; - dst->errand_type = src->errand_type; - //dst->info = src->info; + u8* info_src_p = (u8*)&src->info; + u8* info_dst_p = (u8*)&dst->info; + int i; - /* what the fuck guys */ - for (i = 0; i < sizeof(mQst_errand_info_u); i++) { - *info_dst_p = *info_src_p; - info_dst_p++; - info_src_p++; - } + mQst_CopyQuestInfo(&dst->base, &src->base); + mNpc_CopyAnimalPersonalID(&dst->recipient, &src->recipient); + mNpc_CopyAnimalPersonalID(&dst->sender, &src->sender); + dst->item = src->item; + dst->pockets_idx = src->pockets_idx; + dst->errand_type = src->errand_type; + // dst->info = src->info; + + /* what the fuck guys */ + for (i = 0; i < sizeof(mQst_errand_info_u); i++) { + *info_dst_p = *info_src_p; + info_dst_p++; + info_src_p++; + } } extern int mQst_CheckFreeQuest(mQst_base_c* quest) { - int res = FALSE; - if (quest->quest_type == mQst_QUEST_TYPE_NONE) { - res = TRUE; - } + int res = FALSE; + if (quest->quest_type == mQst_QUEST_TYPE_NONE) { + res = TRUE; + } - return res; + return res; } extern int mQst_CheckLimitOver(mQst_base_c* quest) { - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_time_c temp; - int res = FALSE; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + lbRTC_time_c temp; + int res = FALSE; - if (quest->time_limit_enabled == TRUE) { - if (lbRTC_IsOverTime(&quest->time_limit, rtc_time) == lbRTC_OVER) { - res = TRUE; - } - else if (quest->quest_type < mQst_QUEST_TYPE_NONE) { - if (lbRTC_GetIntervalDays(&quest->time_limit, rtc_time) >= mQst_MAX_TIME_LIMIT_DAYS) { - res = TRUE; - } - else { - int type = quest->quest_type; - u32 kind = quest->quest_kind; - - if ((u32)quest->quest_kind < l_limit_table_max[type]) { - int days = l_limit_table[type][quest->quest_kind]; - - if (type == mQst_QUEST_TYPE_CONTEST && quest->progress == 0) { - days += l_contest_fin_limit[kind]; - } - - lbRTC_TimeCopy(&temp, &quest->time_limit); - lbRTC_Sub_DD(&temp, days); - - if (lbRTC_IsOverTime(rtc_time, &temp) == lbRTC_OVER) { + if (quest->time_limit_enabled == TRUE) { + if (lbRTC_IsOverTime(&quest->time_limit, rtc_time) == lbRTC_OVER) { res = TRUE; - } - } - } - } - } + } else if (quest->quest_type < mQst_QUEST_TYPE_NONE) { + if (lbRTC_GetIntervalDays(&quest->time_limit, rtc_time) >= mQst_MAX_TIME_LIMIT_DAYS) { + res = TRUE; + } else { + int type = quest->quest_type; + u32 kind = quest->quest_kind; - return res; + if ((u32)quest->quest_kind < l_limit_table_max[type]) { + int days = l_limit_table[type][quest->quest_kind]; + + if (type == mQst_QUEST_TYPE_CONTEST && quest->progress == 0) { + days += l_contest_fin_limit[kind]; + } + + lbRTC_TimeCopy(&temp, &quest->time_limit); + lbRTC_Sub_DD(&temp, days); + + if (lbRTC_IsOverTime(rtc_time, &temp) == lbRTC_OVER) { + res = TRUE; + } + } + } + } + } + + return res; } extern int mQst_GetOccuredDeliveryIdx(int delivery_kind) { - int idx = -1; - int i; - mQst_delivery_c* delivery = Common_Get(now_private)->deliveries; + int idx = -1; + int i; + mQst_delivery_c* delivery = Common_Get(now_private)->deliveries; - for (i = 0; i < mPr_DELIVERY_QUEST_NUM; i++) { - if (mQst_CheckFreeQuest(&delivery->base) == FALSE && delivery->base.quest_type == mQst_QUEST_TYPE_DELIVERY && (u32)delivery->base.quest_kind == delivery_kind) { - idx = i; - break; + for (i = 0; i < mPr_DELIVERY_QUEST_NUM; i++) { + if (mQst_CheckFreeQuest(&delivery->base) == FALSE && delivery->base.quest_type == mQst_QUEST_TYPE_DELIVERY && + (u32)delivery->base.quest_kind == delivery_kind) { + idx = i; + break; + } + + delivery++; } - delivery++; - } - - return idx; + return idx; } static int mQst_GetDeliveryIdxbyItemIdx(int idx) { - int d_idx = -1; + int d_idx = -1; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT && mQst_CheckFreeQuest(&Common_Get(now_private)->deliveries[idx].base) == FALSE) { - d_idx = idx; - } + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT && + mQst_CheckFreeQuest(&Common_Get(now_private)->deliveries[idx].base) == FALSE) { + d_idx = idx; + } - return d_idx; + return d_idx; } static int mQst_GetErrandIdxbyItemIdx(int idx) { - int d_idx = -1; - int i; - mQst_errand_c* errand; - mActor_name_t item; + int d_idx = -1; + int i; + mQst_errand_c* errand; + mActor_name_t item; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - Private_c* priv = Common_Get(now_private); + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + Private_c* priv = Common_Get(now_private); - if (mPr_GET_ITEM_COND(priv->inventory.item_conditions, idx) == mPr_ITEM_COND_QUEST) { - errand = priv->errands; - item = priv->inventory.pockets[idx]; + if (mPr_GET_ITEM_COND(priv->inventory.item_conditions, idx) == mPr_ITEM_COND_QUEST) { + errand = priv->errands; + item = priv->inventory.pockets[idx]; - for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { - if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == idx && errand->item == item) { - d_idx = i; - break; + for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { + if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == idx && errand->item == item) { + d_idx = i; + break; + } + + errand++; + } } - - errand++; - } } - } - return d_idx; + return d_idx; } extern int mQst_ClearQuestbyPossessionIdx(int idx) { - int res = FALSE; + int res = FALSE; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - if (mQst_GetDeliveryIdxbyItemIdx(idx) != -1) { - mQst_ClearDelivery(Common_Get(now_private)->deliveries + idx, 1); - res = TRUE; + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + if (mQst_GetDeliveryIdxbyItemIdx(idx) != -1) { + mQst_ClearDelivery(Common_Get(now_private)->deliveries + idx, 1); + res = TRUE; + } else { + int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); + + if (errand_idx != -1) { + mQst_ClearErrand(Common_Get(now_private)->errands + errand_idx, 1); + res = TRUE; + } + } } - else { - int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); - - if (errand_idx != -1) { - mQst_ClearErrand(Common_Get(now_private)->errands + errand_idx, 1); - res = TRUE; - } - } - } - return res; + return res; } extern int mQst_CheckLimitbyPossessionIdx(int idx) { - int res = FALSE; + int res = FALSE; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + idx; - mQst_errand_c* errand = Common_Get(now_private)->errands; - mActor_name_t item = Common_Get(now_private)->inventory.pockets[idx]; + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + idx; + mQst_errand_c* errand = Common_Get(now_private)->errands; + mActor_name_t item = Common_Get(now_private)->inventory.pockets[idx]; - if (item != EMPTY_NO) { - if (mQst_CheckFreeQuest(&delivery->base) == FALSE && mQst_CheckLimitOver(&delivery->base) == TRUE) { - res = TRUE; - } + if (item != EMPTY_NO) { + if (mQst_CheckFreeQuest(&delivery->base) == FALSE && mQst_CheckLimitOver(&delivery->base) == TRUE) { + res = TRUE; + } - if (res == FALSE) { - int i; + if (res == FALSE) { + int i; - for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { - if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == idx && item == errand->item && mQst_CheckLimitOver(&errand->base) == TRUE) { - res = TRUE; - break; - } + for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { + if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == idx && + item == errand->item && mQst_CheckLimitOver(&errand->base) == TRUE) { + res = TRUE; + break; + } - errand++; + errand++; + } + } } - } } - } - return res; + return res; } static mQst_grab_c l_mqst_grab; static void mQst_ClearGrabItemInfo_common(mQst_grab_c* grab) { - grab->item = RSV_NO; - grab->pocket_idx = -1; - grab->type = mQst_QUEST_TYPE_NONE; - mQst_ClearDelivery(&grab->delivery, 1); + grab->item = RSV_NO; + grab->pocket_idx = -1; + grab->type = mQst_QUEST_TYPE_NONE; + mQst_ClearDelivery(&grab->delivery, 1); } extern void mQst_ClearGrabItemInfo() { - mQst_ClearGrabItemInfo_common(&l_mqst_grab); + mQst_ClearGrabItemInfo_common(&l_mqst_grab); } extern void mQst_CheckGrabItem(mActor_name_t item, int pocket_idx) { - Private_c* priv = Common_Get(now_private); - mQst_grab_c* grab = &l_mqst_grab; - mQst_delivery_c* delivery = priv->deliveries; - mQst_errand_c* errand = priv->errands; - u32 item_cond = priv->inventory.item_conditions; - int i; + Private_c* priv = Common_Get(now_private); + mQst_grab_c* grab = &l_mqst_grab; + mQst_delivery_c* delivery = priv->deliveries; + mQst_errand_c* errand = priv->errands; + u32 item_cond = priv->inventory.item_conditions; + int i; - if (pocket_idx >= 0 && pocket_idx < mPr_POCKETS_SLOT_COUNT) { - mQst_ClearGrabItemInfo_common(grab); - delivery += pocket_idx; + if (pocket_idx >= 0 && pocket_idx < mPr_POCKETS_SLOT_COUNT) { + mQst_ClearGrabItemInfo_common(grab); + delivery += pocket_idx; - if (mQst_CheckFreeQuest(&delivery->base) == FALSE) { - grab->item = item; - grab->pocket_idx = pocket_idx; - grab->type = mQst_QUEST_TYPE_DELIVERY; - mQst_CopyDelivery(&grab->delivery, delivery); - mQst_ClearDelivery(delivery, 1); - } - - if ((u32)grab->type == mQst_QUEST_TYPE_NONE && mPr_GET_ITEM_COND(item_cond, pocket_idx) == mPr_ITEM_COND_QUEST) { - - for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { - if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == pocket_idx && errand->item == item) { - grab->item = item; - grab->pocket_idx = i; - grab->type = mQst_QUEST_TYPE_ERRAND; - - break; + if (mQst_CheckFreeQuest(&delivery->base) == FALSE) { + grab->item = item; + grab->pocket_idx = pocket_idx; + grab->type = mQst_QUEST_TYPE_DELIVERY; + mQst_CopyDelivery(&grab->delivery, delivery); + mQst_ClearDelivery(delivery, 1); } - errand++; - } - } + if ((u32)grab->type == mQst_QUEST_TYPE_NONE && + mPr_GET_ITEM_COND(item_cond, pocket_idx) == mPr_ITEM_COND_QUEST) { - if ((u32)grab->type == mQst_QUEST_TYPE_NONE && item != EMPTY_NO) { - grab->item = item; + for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { + if (mQst_CheckFreeQuest(&errand->base) == FALSE && errand->pockets_idx == pocket_idx && + errand->item == item) { + grab->item = item; + grab->pocket_idx = i; + grab->type = mQst_QUEST_TYPE_ERRAND; + + break; + } + + errand++; + } + } + + if ((u32)grab->type == mQst_QUEST_TYPE_NONE && item != EMPTY_NO) { + grab->item = item; + } } - } } extern void mQst_CheckPutItem(mActor_name_t item, int pocket_idx) { - Private_c* priv = Common_Get(now_private); - mQst_delivery_c t_delivery; - mQst_delivery_c* deliveries = priv->deliveries; - mQst_errand_c* errands = priv->errands; - mQst_grab_c* grab = &l_mqst_grab; - mActor_name_t slot_item; - int grab_idx = grab->pocket_idx; + Private_c* priv = Common_Get(now_private); + mQst_delivery_c t_delivery; + mQst_delivery_c* deliveries = priv->deliveries; + mQst_errand_c* errands = priv->errands; + mQst_grab_c* grab = &l_mqst_grab; + mActor_name_t slot_item; + int grab_idx = grab->pocket_idx; - if (pocket_idx >= 0 && pocket_idx < mPr_POCKETS_SLOT_COUNT) { - slot_item = priv->inventory.pockets[pocket_idx]; + if (pocket_idx >= 0 && pocket_idx < mPr_POCKETS_SLOT_COUNT) { + slot_item = priv->inventory.pockets[pocket_idx]; - if (grab->item != RSV_NO && item == grab->item) { - switch (grab->type) { - case mQst_QUEST_TYPE_DELIVERY: - { + if (grab->item != RSV_NO && item == grab->item) { + switch (grab->type) { + case mQst_QUEST_TYPE_DELIVERY: { - mQst_CopyDelivery(&t_delivery, &grab->delivery); - mQst_CheckGrabItem(slot_item, pocket_idx); - mQst_CopyDelivery(deliveries + pocket_idx, &t_delivery); + mQst_CopyDelivery(&t_delivery, &grab->delivery); + mQst_CheckGrabItem(slot_item, pocket_idx); + mQst_CopyDelivery(deliveries + pocket_idx, &t_delivery); - break; + break; + } + + case mQst_QUEST_TYPE_ERRAND: { + mQst_CheckGrabItem(slot_item, pocket_idx); + errands[grab_idx].pockets_idx = pocket_idx; + + break; + } + + default: { + mQst_CheckGrabItem(slot_item, pocket_idx); + + break; + } + } + } else { + mQst_CheckGrabItem(slot_item, pocket_idx); } - - case mQst_QUEST_TYPE_ERRAND: - { - mQst_CheckGrabItem(slot_item, pocket_idx); - errands[grab_idx].pockets_idx = pocket_idx; - - break; - } - - default: - { - mQst_CheckGrabItem(slot_item, pocket_idx); - - break; - } - } } - else { - mQst_CheckGrabItem(slot_item, pocket_idx); - } - } } extern int mQst_CheckNpcExistbyItemIdx(int idx, int sender_or_receipient) { - int res = FALSE; + int res = FALSE; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - int delivery_idx = mQst_GetDeliveryIdxbyItemIdx(idx); - if (delivery_idx != -1) { - mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + delivery_idx; - if (sender_or_receipient == mQst_CHECK_NPC_RECEIPIENT) { - if (mNpc_SearchAnimalPersonalID(&delivery->recipient) != -1) { - res = TRUE; + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + int delivery_idx = mQst_GetDeliveryIdxbyItemIdx(idx); + if (delivery_idx != -1) { + mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + delivery_idx; + if (sender_or_receipient == mQst_CHECK_NPC_RECEIPIENT) { + if (mNpc_SearchAnimalPersonalID(&delivery->recipient) != -1) { + res = TRUE; + } + } else { + if (mNpc_SearchAnimalPersonalID(&delivery->sender) != -1) { + res = TRUE; + } + } + } else { + int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); + + if (errand_idx != -1) { + mQst_errand_c* errand = Common_Get(now_private)->errands + errand_idx; + if (sender_or_receipient == mQst_CHECK_NPC_RECEIPIENT) { + if (mNpc_SearchAnimalPersonalID(&errand->recipient) != -1) { + res = TRUE; + } + } else { + if (mNpc_SearchAnimalPersonalID(&errand->sender) != -1) { + res = TRUE; + } + } + } } - } - else { - if (mNpc_SearchAnimalPersonalID(&delivery->sender) != -1) { - res = TRUE; - } - } } - else { - int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); - if (errand_idx != -1) { - mQst_errand_c* errand = Common_Get(now_private)->errands + errand_idx; - if (sender_or_receipient == mQst_CHECK_NPC_RECEIPIENT) { - if (mNpc_SearchAnimalPersonalID(&errand->recipient) != -1) { - res = TRUE; - } - } - else { - if (mNpc_SearchAnimalPersonalID(&errand->sender) != -1) { - res = TRUE; - } - } - } - } - } - - return res; + return res; } extern int mQst_GetToFromName(u8* to_name, u8* from_name, int idx) { - int res = FALSE; + int res = FALSE; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - int delivery_idx = mQst_GetDeliveryIdxbyItemIdx(idx); + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + int delivery_idx = mQst_GetDeliveryIdxbyItemIdx(idx); - if (delivery_idx != -1) { - mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + delivery_idx; - - mNpc_GetNpcWorldNameAnm(to_name, &delivery->recipient); - mNpc_GetNpcWorldNameAnm(from_name, &delivery->sender); + if (delivery_idx != -1) { + mQst_delivery_c* delivery = Common_Get(now_private)->deliveries + delivery_idx; - res = TRUE; - } - else { - int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); + mNpc_GetNpcWorldNameAnm(to_name, &delivery->recipient); + mNpc_GetNpcWorldNameAnm(from_name, &delivery->sender); - if (errand_idx != -1) { - mQst_errand_c* errand = Common_Get(now_private)->errands + errand_idx; - - mNpc_GetNpcWorldNameAnm(to_name, &errand->recipient); + res = TRUE; + } else { + int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); - if (mEv_CheckFirstJob() == TRUE && errand->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { - mNpc_GetActorWorldName(from_name, SP_NPC_SHOP_MASTER); + if (errand_idx != -1) { + mQst_errand_c* errand = Common_Get(now_private)->errands + errand_idx; + + mNpc_GetNpcWorldNameAnm(to_name, &errand->recipient); + + if (mEv_CheckFirstJob() == TRUE && errand->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { + mNpc_GetActorWorldName(from_name, SP_NPC_SHOP_MASTER); + } else { + mNpc_GetNpcWorldNameAnm(from_name, &errand->sender); + } + + res = TRUE; + } } - else { - mNpc_GetNpcWorldNameAnm(from_name, &errand->sender); - } - - res = TRUE; - } } - } - return res; + return res; } extern int mQst_GetOccuredContestIdx(int kind) { - Animal_c* animal = Save_Get(animals); - int res = -1; - int i; + Animal_c* animal = Save_Get(animals); + int res = -1; + int i; - for (i = 0; i < ANIMAL_NUM_MAX; i++) { - if (animal->contest_quest.base.quest_type == mQst_QUEST_TYPE_CONTEST && (u32)animal->contest_quest.base.quest_kind == kind) { - res = i; - break; + for (i = 0; i < ANIMAL_NUM_MAX; i++) { + if (animal->contest_quest.base.quest_type == mQst_QUEST_TYPE_CONTEST && + (u32)animal->contest_quest.base.quest_kind == kind) { + res = i; + break; + } + + animal++; } - animal++; - } - - return res; + return res; } extern int mQst_GetFlowerSeedNum(int block_x, int block_z) { - return mFI_GetItemNumOnBlockInField(block_x, block_z, FLOWER_LEAVES_PANSIES0, FLOWER_TULIP2); + return mFI_GetItemNumOnBlockInField(block_x, block_z, FLOWER_LEAVES_PANSIES0, FLOWER_TULIP2); } extern int mQst_GetFlowerNum(int block_x, int block_z) { - return mFI_GetItemNumOnBlockInField(block_x, block_z, FLOWER_PANSIES0, FLOWER_TULIP2); + return mFI_GetItemNumOnBlockInField(block_x, block_z, FLOWER_PANSIES0, FLOWER_TULIP2); } extern int mQst_GetNullNoNum(int block_x, int block_z) { - return mFI_GetItemNumOnBlockInField(block_x, block_z, EMPTY_NO, EMPTY_NO); + return mFI_GetItemNumOnBlockInField(block_x, block_z, EMPTY_NO, EMPTY_NO); } extern void mQst_SetItemNameStr(mActor_name_t item, int string_no) { - u8 name[mIN_ITEM_NAME_LEN]; + u8 name[mIN_ITEM_NAME_LEN]; - if (item != EMPTY_NO) { - int article_no; - - mIN_copy_name_str(name, item); - article_no = mIN_get_item_article(item); - mMsg_Set_item_str_art(mMsg_Get_base_window_p(), string_no, name, mIN_ITEM_NAME_LEN, article_no); - } + if (item != EMPTY_NO) { + int article_no; + + mIN_copy_name_str(name, item); + article_no = mIN_get_item_article(item); + mMsg_Set_item_str_art(mMsg_Get_base_window_p(), string_no, name, mIN_ITEM_NAME_LEN, article_no); + } } extern void mQst_SetItemNameFreeStr(mActor_name_t item, int string_no) { - u8 name[mIN_ITEM_NAME_LEN]; + u8 name[mIN_ITEM_NAME_LEN]; - if (item != EMPTY_NO) { - int article_no; - - mIN_copy_name_str(name, item); - article_no = mIN_get_item_article(item); - mMsg_Set_free_str_art(mMsg_Get_base_window_p(), string_no, name, mIN_ITEM_NAME_LEN, article_no); - } + if (item != EMPTY_NO) { + int article_no; + + mIN_copy_name_str(name, item); + article_no = mIN_get_item_article(item); + mMsg_Set_free_str_art(mMsg_Get_base_window_p(), string_no, name, mIN_ITEM_NAME_LEN, article_no); + } } static mActor_name_t mQst_GetPresent(int rank) { - int category = -1; - int list = -1; - mActor_name_t item = 0; + int category = -1; + int list = -1; + mActor_name_t item = 0; - switch (rank) { - case mQst_LETTER_RANK_3: - case mQst_LETTER_RANK_7: - category = mSP_KIND_CLOTH; - list = mSP_LISTTYPE_ABC; - break; + switch (rank) { + case mQst_LETTER_RANK_3: + case mQst_LETTER_RANK_7: + category = mSP_KIND_CLOTH; + list = mSP_LISTTYPE_ABC; + break; - case mQst_LETTER_RANK_4: - category = mSP_KIND_FURNITURE; - list = mSP_LISTTYPE_ABC; - break; - - case mQst_LETTER_RANK_5: - { - list = mSP_LISTTYPE_ABC; + case mQst_LETTER_RANK_4: + category = mSP_KIND_FURNITURE; + list = mSP_LISTTYPE_ABC; + break; - if ((mQst_GetRandom(4) & 1) == 0) { - category = mSP_KIND_CARPET; - } - else { - category = mSP_KIND_WALLPAPER; - } + case mQst_LETTER_RANK_5: { + list = mSP_LISTTYPE_ABC; - break; + if ((mQst_GetRandom(4) & 1) == 0) { + category = mSP_KIND_CARPET; + } else { + category = mSP_KIND_WALLPAPER; + } + + break; + } + + case mQst_LETTER_RANK_6: + item = Save_Get(fruit); + break; + + case mQst_LETTER_RANK_8: + category = mSP_KIND_CLOTH; + list = mSP_LISTTYPE_RARE; + break; + + case mQst_LETTER_RANK_9: + item = mFI_GetOtherFruit(); + break; + + case mQst_LETTER_RANK_10: + category = mSP_KIND_FURNITURE; + list = mSP_LISTTYPE_RARE; + break; + + case mQst_LETTER_RANK_11: { + list = mSP_LISTTYPE_RARE; + + if ((mQst_GetRandom(4) & 1) == 0) { + category = mSP_KIND_CARPET; + } else { + category = mSP_KIND_WALLPAPER; + } + + break; + } } - case mQst_LETTER_RANK_6: - item = Save_Get(fruit); - break; - - case mQst_LETTER_RANK_8: - category = mSP_KIND_CLOTH; - list = mSP_LISTTYPE_RARE; - break; - - case mQst_LETTER_RANK_9: - item = mFI_GetOtherFruit(); - break; - - case mQst_LETTER_RANK_10: - category = mSP_KIND_FURNITURE; - list = mSP_LISTTYPE_RARE; - break; - - case mQst_LETTER_RANK_11: - { - list = mSP_LISTTYPE_RARE; - - if ((mQst_GetRandom(4) & 1) == 0) { - category = mSP_KIND_CARPET; - } - else { - category = mSP_KIND_WALLPAPER; - } - - break; + if (category != -1 && list != -1) { + mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category, list, FALSE); } - } - if (category != -1 && list != -1) { - mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category, list, FALSE); - } - - return item; + return item; } -static void mQst_GetRemailData(Mail_c* letter, PersonalID_c* recipient_id, AnmPersonalID_c* sender_id, int rank, mActor_name_t present) { - int handbill_no; - int looks = sender_id->looks; - u8 name_buf[mIN_ITEM_NAME_LEN]; - u8 header[MAIL_HEADER2_LEN]; - u8 footer[MAIL_FOOTER2_LEN]; - int header_back_pos; - - mMl_clear_mail(letter); - handbill_no = 0x75 + (rank * mNpc_LOOKS_NUM + looks); - mNpc_GetNpcWorldNameAnm(name_buf, sender_id); - mHandbill_Set_free_str(mHandbill_FREE_STR6, name_buf, ANIMAL_NAME_LEN); +static void mQst_GetRemailData(Mail_c* letter, PersonalID_c* recipient_id, AnmPersonalID_c* sender_id, int rank, + mActor_name_t present) { + int handbill_no; + int looks = sender_id->looks; + u8 name_buf[mIN_ITEM_NAME_LEN]; + u8 header[MAIL_HEADER2_LEN]; + u8 footer[MAIL_FOOTER2_LEN]; + int header_back_pos; - if (present != EMPTY_NO) { - mIN_copy_name_str(name_buf, present); - mHandbill_Set_free_str(mHandbill_FREE_STR0, name_buf, mIN_ITEM_NAME_LEN); - } + mMl_clear_mail(letter); + handbill_no = 0x75 + (rank * mNpc_LOOKS_NUM + looks); + mNpc_GetNpcWorldNameAnm(name_buf, sender_id); + mHandbill_Set_free_str(mHandbill_FREE_STR6, name_buf, ANIMAL_NAME_LEN); - mHandbill_Load_HandbillFromRom2(header, MAIL_HEADER2_LEN, &header_back_pos, footer, MAIL_FOOTER2_LEN, letter->content.body, handbill_no); - mem_copy(letter->content.header, header, MAIL_HEADER_LEN); - mem_copy(letter->content.footer, footer, MAIL_FOOTER_LEN); - letter->content.header_back_start = header_back_pos; - letter->content.font = mMl_FONT_0; - letter->content.mail_type = 0; + if (present != EMPTY_NO) { + mIN_copy_name_str(name_buf, present); + mHandbill_Set_free_str(mHandbill_FREE_STR0, name_buf, mIN_ITEM_NAME_LEN); + } - mPr_CopyPersonalID(&letter->header.recipient.personalID, recipient_id); - letter->header.recipient.type = mMl_NAME_TYPE_PLAYER; + mHandbill_Load_HandbillFromRom2(header, MAIL_HEADER2_LEN, &header_back_pos, footer, MAIL_FOOTER2_LEN, + letter->content.body, handbill_no); + mem_copy(letter->content.header, header, MAIL_HEADER_LEN); + mem_copy(letter->content.footer, footer, MAIL_FOOTER_LEN); + letter->content.header_back_start = header_back_pos; + letter->content.font = mMl_FONT_0; + letter->content.mail_type = 0; - mMl_set_mail_name_npcinfo(&letter->header.sender, sender_id); - - letter->content.paper_type = (ITM_PAPER22 - ITM_PAPER_START); // festive paper - letter->present = present; + mPr_CopyPersonalID(&letter->header.recipient.personalID, recipient_id); + letter->header.recipient.type = mMl_NAME_TYPE_PLAYER; + + mMl_set_mail_name_npcinfo(&letter->header.sender, sender_id); + + letter->content.paper_type = (ITM_PAPER22 - ITM_PAPER_START); // festive paper + letter->present = present; } extern int mQst_SendRemail(mQst_contest_c* contest, AnmPersonalID_c* sender_id) { - PersonalID_c* recipient_id = &contest->player_id; - mHm_hs_c* house; - int res = FALSE; + PersonalID_c* recipient_id = &contest->player_id; + mHm_hs_c* house; + int res = FALSE; - if (mPr_NullCheckPersonalID(recipient_id) == FALSE) { - int priv_idx = mPr_GetPrivateIdx(recipient_id); + if (mPr_NullCheckPersonalID(recipient_id) == FALSE) { + int priv_idx = mPr_GetPrivateIdx(recipient_id); - if (priv_idx != -1) { - house = Save_GetPointer(homes[mHS_get_arrange_idx(priv_idx)]); + if (priv_idx != -1) { + house = Save_GetPointer(homes[mHS_get_arrange_idx(priv_idx)]); - if (mPr_CheckCmpPersonalID(recipient_id, &house->ownerID) == TRUE) { - int free_mail_idx = mMl_chk_mail_free_space(house->mailbox, HOME_MAILBOX_SIZE); + if (mPr_CheckCmpPersonalID(recipient_id, &house->ownerID) == TRUE) { + int free_mail_idx = mMl_chk_mail_free_space(house->mailbox, HOME_MAILBOX_SIZE); - if (free_mail_idx != -1) { - Mail_c letter; + if (free_mail_idx != -1) { + Mail_c letter; - mQst_GetRemailData(&letter, recipient_id, sender_id, contest->info.letter_data.score, contest->info.letter_data.present); - mMl_copy_mail(&house->mailbox[free_mail_idx], &letter); + mQst_GetRemailData(&letter, recipient_id, sender_id, contest->info.letter_data.score, + contest->info.letter_data.present); + mMl_copy_mail(&house->mailbox[free_mail_idx], &letter); - res = TRUE; + res = TRUE; + } + } } - } } - } - return res; + return res; } static u8 mQst_GetMailRank(u8* body, mActor_name_t present) { - u8 rank = mQst_LETTER_RANK_MIN; - int length = 0; - u8 score_bonus = mNpc_CheckNormalMail_length(&length, body); + u8 rank = mQst_LETTER_RANK_MIN; + int length = 0; + u8 score_bonus = mNpc_CheckNormalMail_length(&length, body); - if (length >= mQst_LETTER_GOOD_LENGTH) { - rank = mQst_LETTER_RANK_2; - } - else if (length >= mQst_LETTER_OKAY_LENGTH) { - rank = mQst_LETTER_RANK_1; - } + if (length >= mQst_LETTER_GOOD_LENGTH) { + rank = mQst_LETTER_RANK_2; + } else if (length >= mQst_LETTER_OKAY_LENGTH) { + rank = mQst_LETTER_RANK_1; + } - if (score_bonus >= mNpc_LETTER_RANK_OK) { - rank += mQst_LETTER_SCORE_BONUS; - } + if (score_bonus >= mNpc_LETTER_RANK_OK) { + rank += mQst_LETTER_SCORE_BONUS; + } - if (present != EMPTY_NO) { - rank += mQst_LETTER_PRESENT_BONUS; - } + if (present != EMPTY_NO) { + rank += mQst_LETTER_PRESENT_BONUS; + } - return rank; + return rank; } extern void mQst_SetReceiveLetter(mQst_contest_c* contest, PersonalID_c* sender_id, u8* body, mActor_name_t present) { - if ( - contest->base.quest_type == mQst_QUEST_TYPE_CONTEST && - contest->base.quest_kind == mQst_CONTEST_KIND_LETTER && - mPr_NullCheckPersonalID(&contest->player_id) == TRUE && - contest->base.progress == 2 - ) { - mPr_CopyPersonalID(&contest->player_id, sender_id); - contest->base.progress = 1; - contest->info.letter_data.score = mQst_GetMailRank(body, present); - contest->info.letter_data.present = mQst_GetPresent(contest->info.letter_data.score); - } + if (contest->base.quest_type == mQst_QUEST_TYPE_CONTEST && contest->base.quest_kind == mQst_CONTEST_KIND_LETTER && + mPr_NullCheckPersonalID(&contest->player_id) == TRUE && contest->base.progress == 2) { + mPr_CopyPersonalID(&contest->player_id, sender_id); + contest->base.progress = 1; + contest->info.letter_data.score = mQst_GetMailRank(body, present); + contest->info.letter_data.present = mQst_GetPresent(contest->info.letter_data.score); + } } extern mQst_errand_c* mQst_GetFirstJobData() { - mQst_errand_c* errand = Common_Get(now_private)->errands; - mQst_errand_c* errand_p = errand; - int i; - int j; - mQst_errand_c* selected_errand = NULL; + mQst_errand_c* errand = Common_Get(now_private)->errands; + mQst_errand_c* errand_p = errand; + int i; + int j; + mQst_errand_c* selected_errand = NULL; - /* Try to find any current 'first job' errand quest */ - for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { - if (errand_p->base.quest_type == mQst_QUEST_TYPE_ERRAND && errand_p->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { - selected_errand = errand_p; - break; + /* Try to find any current 'first job' errand quest */ + for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { + if (errand_p->base.quest_type == mQst_QUEST_TYPE_ERRAND && + errand_p->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { + selected_errand = errand_p; + break; + } + + errand_p++; } - errand_p++; - } + if (selected_errand == NULL) { + /* Try to find a free quest slot */ - if (selected_errand == NULL) { - /* Try to find a free quest slot */ + for (j = 0; j < mPr_ERRAND_QUEST_NUM; j++) { + if (mQst_CheckFreeQuest(&errand->base) == TRUE) { + selected_errand = errand; + break; + } - for (j = 0; j < mPr_ERRAND_QUEST_NUM; j++) { - if (mQst_CheckFreeQuest(&errand->base) == TRUE) { - selected_errand = errand; - break; - } - - errand++; + errand++; + } } - } - - return selected_errand; /* This can be NULL */ + return selected_errand; /* This can be NULL */ } static int mQst_CheckFirstJobQuest(mQst_errand_c* errand) { - if (errand != NULL && errand->base.quest_type == mQst_QUEST_TYPE_ERRAND && errand->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { - return TRUE; - } + if (errand != NULL && errand->base.quest_type == mQst_QUEST_TYPE_ERRAND && + errand->errand_type == mQst_ERRAND_TYPE_FIRST_JOB) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mQst_CheckFirstJobQuestbyItemIdx(int idx) { - int res = FALSE; + int res = FALSE; - if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { - int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); - - if (errand_idx != -1) { - res = mQst_CheckFirstJobQuest(Common_Get(now_private)->errands + errand_idx); + if (idx >= 0 && idx < mPr_POCKETS_SLOT_COUNT) { + int errand_idx = mQst_GetErrandIdxbyItemIdx(idx); + + if (errand_idx != -1) { + res = mQst_CheckFirstJobQuest(Common_Get(now_private)->errands + errand_idx); + } } - } - return res; + return res; } extern int mQst_CheckFirstJobFin(mQst_errand_c* errand) { - int res = FALSE; + int res = FALSE; - if (errand->base.progress == 0) { - res = TRUE; - } + if (errand->base.progress == 0) { + res = TRUE; + } - return res; + return res; } extern int mQst_CheckRemoveTarget(mQst_errand_c* errand) { - int res = FALSE; - - if (errand != NULL && mNpc_SearchAnimalinfo(Save_Get(animals), errand->recipient.npc_id, ANIMAL_NUM_MAX) == -1) { - res = TRUE; - } + int res = FALSE; - return res; + if (errand != NULL && mNpc_SearchAnimalinfo(Save_Get(animals), errand->recipient.npc_id, ANIMAL_NUM_MAX) == -1) { + res = TRUE; + } + + return res; } extern void mQst_SetFirstJobStart(mQst_errand_c* errand) { - int i; + int i; - if (errand != NULL) { - mQst_ClearErrand(errand, 1); - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_START; - errand->base.progress = 0; - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - - for (i = 0; i < mQst_ERRAND_FIRST_JOB_ANIMAL_NUM; i++) { - mNpc_ClearAnimalPersonalID(errand->info.first_job.used_ids + i); + if (errand != NULL) { + mQst_ClearErrand(errand, 1); + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_START; + errand->base.progress = 0; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + + for (i = 0; i < mQst_ERRAND_FIRST_JOB_ANIMAL_NUM; i++) { + mNpc_ClearAnimalPersonalID(errand->info.first_job.used_ids + i); + } } - } } extern void mQst_SetFirstJobChangeCloth(mQst_errand_c* errand, mActor_name_t item) { - if (errand == NULL) { - return; - } + if (errand == NULL) { + return; + } - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_CHANGE_CLOTH; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - errand->item = item; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + errand->item = item; } extern void mQst_SetFirstJobSeed(mQst_errand_c* errand) { - if (errand == NULL) { - return; - } + if (errand == NULL) { + return; + } - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_PLANT_FLOWER; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_PLANT_FLOWER; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; } extern void mQst_SetFirstJobHello(mQst_errand_c* errand) { - if (errand == NULL) { - return; - } + if (errand == NULL) { + return; + } - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_INTRODUCTIONS; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; - - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; -} - -extern void mQst_SetFirstJobFurniture(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot) { - if (errand != NULL) { errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_DELIVER_FTR; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_INTRODUCTIONS; errand->base.time_limit_enabled = FALSE; errand->base.progress = 2; errand->base.give_reward = FALSE; - mNpc_CopyAnimalPersonalID(&errand->recipient, pid); - mNpc_CopyAnimalPersonalID(&errand->info.first_job.used_ids[0], pid); - errand->info.first_job.used_num = 1; - errand->pockets_idx = slot; errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - errand->item = item; - } +} + +extern void mQst_SetFirstJobFurniture(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot) { + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_DELIVER_FTR; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; + + mNpc_CopyAnimalPersonalID(&errand->recipient, pid); + mNpc_CopyAnimalPersonalID(&errand->info.first_job.used_ids[0], pid); + errand->info.first_job.used_num = 1; + errand->pockets_idx = slot; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + errand->item = item; + } } static void mQst_SetFirstJobLetter_common(mQst_errand_c* errand, AnmPersonalID_c* pid, u8 kind) { - if (errand != NULL) { - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = (u32)kind; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = (u32)kind; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - mNpc_CopyAnimalPersonalID(&errand->recipient, pid); - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - mNpc_CopyAnimalPersonalID(&errand->info.first_job.used_ids[1], pid); - errand->info.first_job.used_num = 2; - } + mNpc_CopyAnimalPersonalID(&errand->recipient, pid); + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + mNpc_CopyAnimalPersonalID(&errand->info.first_job.used_ids[1], pid); + errand->info.first_job.used_num = 2; + } } extern void mQst_SetFirstJobLetter(mQst_errand_c* errand, AnmPersonalID_c* pid) { - mQst_SetFirstJobLetter_common(errand, pid, mQst_ERRAND_FIRSTJOB_SEND_LETTER); + mQst_SetFirstJobLetter_common(errand, pid, mQst_ERRAND_FIRSTJOB_SEND_LETTER); } extern void mQst_SetFirstJobLetter2(mQst_errand_c* errand, AnmPersonalID_c* pid) { - mQst_SetFirstJobLetter_common(errand, pid, mQst_ERRAND_FIRSTJOB_SEND_LETTER2); + mQst_SetFirstJobLetter_common(errand, pid, mQst_ERRAND_FIRSTJOB_SEND_LETTER2); } extern void mQst_SetFirstJobOpenQuest(mQst_errand_c* errand) { - if (errand != NULL) { - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_OPEN; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_OPEN; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - mNpc_ClearAnimalPersonalID(&errand->recipient); - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - mEv_EventON(mEv_SAVED_FJOPENQUEST_PLR0 + Common_Get(player_no)); - } + mNpc_ClearAnimalPersonalID(&errand->recipient); + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + mEv_EventON(mEv_SAVED_FJOPENQUEST_PLR0 + Common_Get(player_no)); + } } -extern void mQst_SetFirstJobCarpet(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot) { - if (errand != NULL) { - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_DELIVER_CARPET; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; +extern void mQst_SetFirstJobCarpet(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot) { + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_DELIVER_CARPET; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - mNpc_CopyAnimalPersonalID(&errand->recipient, pid); - errand->pockets_idx = slot; - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - errand->item = item; - } + mNpc_CopyAnimalPersonalID(&errand->recipient, pid); + errand->pockets_idx = slot; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + errand->item = item; + } } -static void mQst_SetFirstJobAxe_common(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot, u8 kind) { - if (errand != NULL) { - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = kind; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; +static void mQst_SetFirstJobAxe_common(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot, + u8 kind) { + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = kind; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - mNpc_CopyAnimalPersonalID(&errand->recipient, pid); - errand->pockets_idx = slot; - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - errand->item = item; - } + mNpc_CopyAnimalPersonalID(&errand->recipient, pid); + errand->pockets_idx = slot; + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + errand->item = item; + } } -extern void mQst_SetFirstJobAxe(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot) { - mQst_SetFirstJobAxe_common(errand, pid, item, slot, mQst_ERRAND_FIRSTJOB_DELIVER_AXE); +extern void mQst_SetFirstJobAxe(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot) { + mQst_SetFirstJobAxe_common(errand, pid, item, slot, mQst_ERRAND_FIRSTJOB_DELIVER_AXE); } -extern void mQst_SetFirstJobAxe2(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, u8 slot) { - mQst_SetFirstJobAxe_common(errand, pid, item, slot, mQst_ERRAND_FIRSTJOB_DELIVER_AXE2); +extern void mQst_SetFirstJobAxe2(mQst_errand_c* errand, AnmPersonalID_c* pid, mActor_name_t item, int slot) { + mQst_SetFirstJobAxe_common(errand, pid, item, slot, mQst_ERRAND_FIRSTJOB_DELIVER_AXE2); } extern void mQst_SetFirstJobNotice(mQst_errand_c* errand) { - if (errand != NULL) { - errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; - errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_POST_NOTICE; - errand->base.time_limit_enabled = FALSE; - errand->base.progress = 2; - errand->base.give_reward = FALSE; + if (errand != NULL) { + errand->base.quest_type = mQst_QUEST_TYPE_ERRAND; + errand->base.quest_kind = mQst_ERRAND_FIRSTJOB_POST_NOTICE; + errand->base.time_limit_enabled = FALSE; + errand->base.progress = 2; + errand->base.give_reward = FALSE; - mNpc_ClearAnimalPersonalID(&errand->recipient); - errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; - } + mNpc_ClearAnimalPersonalID(&errand->recipient); + errand->errand_type = mQst_ERRAND_TYPE_FIRST_JOB; + } } extern int mQst_GetRandom(int max) { - return RANDOM(max); + return RANDOM(max); } -extern void mQst_GetGoods_common(mActor_name_t* item, AnmPersonalID_c* pid, int category, mActor_name_t* exist_table, int exist_num, int list) { - int generate_random_item = 1; +extern void mQst_GetGoods_common(mActor_name_t* item, AnmPersonalID_c* pid, int category, mActor_name_t* exist_table, + int exist_num, int list) { + int generate_random_item = 1; - if (category == mSP_KIND_FURNITURE) { - generate_random_item = RANDOM(10); - } - - /* 1/10 chance to roll an item from the villager's house if the "goods" kind is furniture */ - if (generate_random_item != 0) { - mSP_SelectRandomItem_New(NULL, item, 1, exist_table, exist_num, category, list, FALSE); - } - else { - *item = mNpc_GetNpcFurniture(pid); - - if (*item == EMPTY_NO) { - mSP_SelectRandomItem_New(NULL, item, 1, exist_table, exist_num, category, list, FALSE); + if (category == mSP_KIND_FURNITURE) { + generate_random_item = RANDOM(10); + } + + /* 1/10 chance to roll an item from the villager's house if the "goods" kind is furniture */ + if (generate_random_item != 0) { + mSP_SelectRandomItem_New(NULL, item, 1, exist_table, exist_num, category, list, FALSE); + } else { + *item = mNpc_GetNpcFurniture(pid); + + if (*item == EMPTY_NO) { + mSP_SelectRandomItem_New(NULL, item, 1, exist_table, exist_num, category, list, FALSE); + } } - } } extern int mQst_CheckSoccerTarget(ACTOR* actor) { - int res = FALSE; + int res = FALSE; - if (actor != NULL && actor->part == ACTOR_PART_NPC) { - int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SOCCER); + if (actor != NULL && actor->part == ACTOR_PART_NPC) { + int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SOCCER); - if (npc_idx != -1) { - Animal_c* animal = Save_GetPointer(animals[npc_idx]); - - if (animal->contest_quest.base.progress == 2) { - res = mNpc_CheckCmpAnimalPersonalID(&animal->id, &((NPC_ACTOR*)actor)->npc_info.animal->id); - } + if (npc_idx != -1) { + Animal_c* animal = Save_GetPointer(animals[npc_idx]); + + if (animal->contest_quest.base.progress == 2) { + res = mNpc_CheckCmpAnimalPersonalID(&animal->id, &((NPC_ACTOR*)actor)->npc_info.animal->id); + } + } } - } - return res; + return res; } extern void mQst_NextSoccer(ACTOR* actor) { - mQst_contest_c* contest; - int looks = mNpc_LOOKS_GIRL; - NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor; - int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SOCCER); - + mQst_contest_c* contest; + int looks = mNpc_LOOKS_GIRL; + NPC_ACTOR* npc_actor = (NPC_ACTOR*)actor; + int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SOCCER); - if (npc_idx != -1 && npc_actor != NULL) { - contest = &Save_Get(animals[npc_idx]).contest_quest; - - if (contest->base.progress == 2 && Common_Get(clip).npc_clip != NULL) { - Animal_c* animal = npc_actor->npc_info.animal; + if (npc_idx != -1 && npc_actor != NULL) { + contest = &Save_Get(animals[npc_idx]).contest_quest; - if (animal != NULL) { - looks = animal->id.looks; - } + if (contest->base.progress == 2 && Common_Get(clip).npc_clip != NULL) { + Animal_c* animal = npc_actor->npc_info.animal; - if ((*Common_Get(clip).npc_clip->force_call_req_proc)(npc_actor, 0x0D8B + looks) == TRUE) { - contest->base.progress = 1; - mPr_CopyPersonalID(&contest->player_id, &Common_Get(now_private)->player_ID); - } + if (animal != NULL) { + looks = animal->id.looks; + } + + if ((*Common_Get(clip).npc_clip->force_call_req_proc)(npc_actor, 0x0D8B + looks) == TRUE) { + contest->base.progress = 1; + mPr_CopyPersonalID(&contest->player_id, &Common_Get(now_private)->player_ID); + } + } } - } } /* @unused int? mQst_CheckBallKeep(...?) */ extern void mQst_NextSnowman(xyz_t snowman_pos) { - int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SNOWMAN); - int block_x; - int block_z; + int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SNOWMAN); + int block_x; + int block_z; - if (npc_idx != -1) { - mQst_contest_c* contest; - Animal_c* animal = Save_GetPointer(animals[npc_idx]); - - contest = &animal->contest_quest; + if (npc_idx != -1) { + mQst_contest_c* contest; + Animal_c* animal = Save_GetPointer(animals[npc_idx]); - if (contest->base.progress == 1) { - if (mFI_Wpos2BlockNum(&block_x, &block_z, snowman_pos) == TRUE && animal->home_info.block_x == block_x && animal->home_info.block_z == block_z) { - mPr_CopyPersonalID(&contest->player_id, &Common_Get(now_private)->player_ID); - } + contest = &animal->contest_quest; + + if (contest->base.progress == 1) { + if (mFI_Wpos2BlockNum(&block_x, &block_z, snowman_pos) == TRUE && animal->home_info.block_x == block_x && + animal->home_info.block_z == block_z) { + mPr_CopyPersonalID(&contest->player_id, &Common_Get(now_private)->player_ID); + } + } } - } } - extern void mQst_BackSnowman(xyz_t snowman_pos) { - int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SNOWMAN); - int block_x; - int block_z; + int npc_idx = mQst_GetOccuredContestIdx(mQst_CONTEST_KIND_SNOWMAN); + int block_x; + int block_z; - if (npc_idx != -1) { - mQst_contest_c* contest; - Animal_c* animal = Save_GetPointer(animals[npc_idx]); - - contest = &animal->contest_quest; + if (npc_idx != -1) { + mQst_contest_c* contest; + Animal_c* animal = Save_GetPointer(animals[npc_idx]); - if (contest->base.progress == 1) { - if (mFI_Wpos2BlockNum(&block_x, &block_z, snowman_pos) == TRUE && animal->home_info.block_x == block_x && animal->home_info.block_z == block_z) { - mPr_ClearPersonalID(&contest->player_id); - } + contest = &animal->contest_quest; + + if (contest->base.progress == 1) { + if (mFI_Wpos2BlockNum(&block_x, &block_z, snowman_pos) == TRUE && animal->home_info.block_x == block_x && + animal->home_info.block_z == block_z) { + mPr_ClearPersonalID(&contest->player_id); + } + } } - } } extern void mQst_PrintQuestInfo(gfxprint_t* gfxprint) { - Private_c* priv = Common_Get(now_private); - mQst_delivery_c* delivery; - mQst_errand_c* errand; - Animal_c* animal = Save_Get(animals); - int i; + Private_c* priv = Common_Get(now_private); + mQst_delivery_c* delivery; + mQst_errand_c* errand; + Animal_c* animal = Save_Get(animals); + int i; - if (priv != NULL) { - delivery = priv->deliveries; - errand = priv->errands; - } - else { - delivery = Save_Get(private[0]).deliveries; - errand = Save_Get(private[0]).errands; - } - - gfxprint_color(gfxprint, 220, 50, 50, 255); - gfxprint_locate8x8(gfxprint, 3, 4); - - for (i = 0; i < mPr_DELIVERY_QUEST_NUM; i++) { - if (i < 5 || i >= 10) { - gfxprint_color(gfxprint, 220, 50, 50, 255); - } - else { - gfxprint_color(gfxprint, 50, 50, 220, 255); + if (priv != NULL) { + delivery = priv->deliveries; + errand = priv->errands; + } else { + delivery = Save_Get(private_data[0]).deliveries; + errand = Save_Get(private_data[0]).errands; } - if (delivery[i].base.quest_type == mQst_QUEST_TYPE_DELIVERY) { - gfxprint_printf(gfxprint, "%x", delivery[i].base.quest_kind); - } - else { - gfxprint_printf(gfxprint, "*"); - } - } + gfxprint_color(gfxprint, 220, 50, 50, 255); + gfxprint_locate8x8(gfxprint, 3, 4); - gfxprint_color(gfxprint, 50, 50, 220, 255); + for (i = 0; i < mPr_DELIVERY_QUEST_NUM; i++) { + if (i < 5 || i >= 10) { + gfxprint_color(gfxprint, 220, 50, 50, 255); + } else { + gfxprint_color(gfxprint, 50, 50, 220, 255); + } - for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { - if (errand[i].base.quest_type == mQst_QUEST_TYPE_ERRAND) { - gfxprint_printf(gfxprint, "%x", errand[i].base.quest_kind); - } - else { - gfxprint_printf(gfxprint, "*"); - } - } - - for (i = 0; i < ANIMAL_NUM_MAX; i++) { - if (i < 5 || i >= 10) { - gfxprint_color(gfxprint, 220, 50, 50, 255); - } - else { - gfxprint_color(gfxprint, 50, 50, 220, 255); + if (delivery[i].base.quest_type == mQst_QUEST_TYPE_DELIVERY) { + gfxprint_printf(gfxprint, "%x", delivery[i].base.quest_kind); + } else { + gfxprint_printf(gfxprint, "*"); + } } - if (animal[i].contest_quest.base.quest_type == mQst_QUEST_TYPE_CONTEST) { - gfxprint_printf(gfxprint, "%x", animal[i].contest_quest.base.quest_kind); + gfxprint_color(gfxprint, 50, 50, 220, 255); + + for (i = 0; i < mPr_ERRAND_QUEST_NUM; i++) { + if (errand[i].base.quest_type == mQst_QUEST_TYPE_ERRAND) { + gfxprint_printf(gfxprint, "%x", errand[i].base.quest_kind); + } else { + gfxprint_printf(gfxprint, "*"); + } } - else { - gfxprint_printf(gfxprint, "*"); + + for (i = 0; i < ANIMAL_NUM_MAX; i++) { + if (i < 5 || i >= 10) { + gfxprint_color(gfxprint, 220, 50, 50, 255); + } else { + gfxprint_color(gfxprint, 50, 50, 220, 255); + } + + if (animal[i].contest_quest.base.quest_type == mQst_QUEST_TYPE_CONTEST) { + gfxprint_printf(gfxprint, "%x", animal[i].contest_quest.base.quest_kind); + } else { + gfxprint_printf(gfxprint, "*"); + } } - } } diff --git a/src/m_room_type.c b/src/m_room_type.c index 2559faa2..20e5cd8d 100644 --- a/src/m_room_type.c +++ b/src/m_room_type.c @@ -2110,7 +2110,7 @@ extern void mRmTp_CopyWallData(u8* dst, int wall_no) { int room_idx = mRmTp_GetPlayerRoomIdx(); int valid2 = mHS_get_pl_no_detail(room_idx) >= 0 && mHS_get_pl_no_detail(room_idx) < PLAYER_NUM; int player_no = valid2 ? mHS_get_pl_no_detail(room_idx) : 0; - mNW_original_design_c* original = &Save_Get(private[player_no]).my_org[tex_idx & 7]; + mNW_original_design_c* original = &Save_Get(private_data[player_no]).my_org[tex_idx & 7]; mNW_CopyOriginalPalette(dst, original); mNW_CopyOriginalTexture(dst + mNW_PALETTE_SIZE, original); @@ -2137,7 +2137,7 @@ extern void mRmTp_CopyFloorData(u8* dst, int floor_no) { int room_idx = mRmTp_GetPlayerRoomIdx(); int valid2 = mHS_get_pl_no_detail(room_idx) >= 0 && mHS_get_pl_no_detail(room_idx) < PLAYER_NUM; int player_no = valid2 ? mHS_get_pl_no_detail(room_idx) : 0; - mNW_original_design_c* original = &Save_Get(private[player_no]).my_org[tex_idx & 7]; + mNW_original_design_c* original = &Save_Get(private_data[player_no]).my_org[tex_idx & 7]; mNW_CopyOriginalPalette(dst, original); mNW_CopyOriginalTexture(dst + mNW_PALETTE_SIZE, original); diff --git a/src/m_scene.c b/src/m_scene.c index 33e8ce51..2e9f84ef 100644 --- a/src/m_scene.c +++ b/src/m_scene.c @@ -320,17 +320,19 @@ static void Scene_Proc_Sound(GAME_PLAY* play, Scene_Word_u* data); typedef void (*mSc_SCENE_WORD_PROC)(GAME_PLAY*, Scene_Word_u*); extern void Scene_ct(GAME_PLAY* play, Scene_Word_u* scene_data) { - static mSc_SCENE_WORD_PROC Scene_Proc[mSc_SCENE_DATA_TYPE_NUM] = { &Scene_Proc_Player_Ptr, - &Scene_Proc_Ctrl_Actor_Ptr, - &Scene_Proc_Actor_Ptr, - &Scene_Proc_Object_Exchange_Bank_Ptr, - &Scene_Proc_Door_Data_Ptr, - &Scene_Proc_Field_ct, - &Scene_Proc_MyRoom_ct, - &Scene_Proc_ArrangeRoom_ct, - &Scene_Proc_ArrangeFurniture_ct, - &Scene_Proc_Sound, - NULL }; + static mSc_SCENE_WORD_PROC Scene_Proc[mSc_SCENE_DATA_TYPE_NUM] = { + &Scene_Proc_Player_Ptr, + &Scene_Proc_Ctrl_Actor_Ptr, + &Scene_Proc_Actor_Ptr, + &Scene_Proc_Object_Exchange_Bank_Ptr, + &Scene_Proc_Door_Data_Ptr, + &Scene_Proc_Field_ct, + &Scene_Proc_MyRoom_ct, + &Scene_Proc_ArrangeRoom_ct, + &Scene_Proc_ArrangeFurniture_ct, + &Scene_Proc_Sound, + NULL, + }; /* Initialize all scene data */ while (TRUE) { @@ -447,8 +449,12 @@ static void Scene_Proc_Sound(GAME_PLAY* play, Scene_Word_u* scene_data) { } static void set_item_info(GAME_PLAY* play, Scene_Word_Data_FieldCt_c* field_ct) { - static s16 profile_table[4] = { mAc_PROFILE_BGITEM, mAc_PROFILE_DUMMY, mAc_PROFILE_BGPOLICEITEM, - mAc_PROFILE_BGPOSTITEM }; + static s16 profile_table[4] = { + mAc_PROFILE_BGITEM, + mAc_PROFILE_DUMMY, + mAc_PROFILE_BGPOLICEITEM, + mAc_PROFILE_BGPOSTITEM, + }; int item_type = field_ct->item_type; @@ -505,7 +511,7 @@ extern int goto_other_scene(GAME_PLAY* play, Door_data_c* door_data, int update_ play->next_scene_no = door_data->next_scene_id; if (update_player_mode) { - mPlib_request_main_invade_type1(play); + mPlib_request_main_invade_type1((GAME*)play); } restore_fgdata_all(play); diff --git a/src/m_shop.c b/src/m_shop.c index b7b12558..21cdb9f6 100644 --- a/src/m_shop.c +++ b/src/m_shop.c @@ -17,655 +17,582 @@ extern mActor_name_t* mSP_cloth_list[]; extern mActor_name_t* mSP_carpet_list[]; extern mActor_name_t* mSP_wall_list[]; -static mActor_name_t diary_listA[6] = { - ITM_DIARY01, ITM_DIARY04, ITM_DIARY07, ITM_DIARY10, ITM_DIARY13, EMPTY_NO -}; +static mActor_name_t diary_listA[6] = { ITM_DIARY01, ITM_DIARY04, ITM_DIARY07, ITM_DIARY10, ITM_DIARY13, EMPTY_NO }; -static mActor_name_t diary_listB[6] = { - ITM_DIARY02, ITM_DIARY05, ITM_DIARY08, ITM_DIARY11, ITM_DIARY14, EMPTY_NO -}; +static mActor_name_t diary_listB[6] = { ITM_DIARY02, ITM_DIARY05, ITM_DIARY08, ITM_DIARY11, ITM_DIARY14, EMPTY_NO }; -static mActor_name_t diary_listC[7] = { - ITM_DIARY03, ITM_DIARY06, ITM_DIARY09, ITM_DIARY12, ITM_DIARY15, ITM_DIARY00, EMPTY_NO -}; +static mActor_name_t diary_listC[7] = { ITM_DIARY03, ITM_DIARY06, ITM_DIARY09, ITM_DIARY12, + ITM_DIARY15, ITM_DIARY00, EMPTY_NO }; -static mActor_name_t* mSP_diary_list[mSP_LIST_NUM] = { - diary_listA, - diary_listB, - diary_listC, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL -}; +static mActor_name_t* mSP_diary_list[mSP_LIST_NUM] = { diary_listA, diary_listB, diary_listC, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL, NULL, + NULL, NULL, NULL, NULL, NULL }; -static mActor_name_t** mSP_goods_seg_inf[mSP_KIND_EXTENDED_MAX] = { - mSP_ftr_list, - mSP_binsen_list, - mSP_cloth_list, - mSP_carpet_list, - mSP_wall_list, - mSP_diary_list -}; +static mActor_name_t** mSP_goods_seg_inf[mSP_KIND_EXTENDED_MAX] = { mSP_ftr_list, mSP_binsen_list, mSP_cloth_list, + mSP_carpet_list, mSP_wall_list, mSP_diary_list }; static void mSP_InitItemTable(mActor_name_t* item_table, int count) { - int i; + int i; - if (item_table == NULL) { - return; - } + if (item_table == NULL) { + return; + } - for (i = 0; i < count; i++) { - *item_table++ = EMPTY_NO; - } + for (i = 0; i < count; i++) { + *item_table++ = EMPTY_NO; + } } static mActor_name_t* mSP_SelectListFromPriority(mActor_name_t** lists, u8* priorities, int list_type) { - mActor_name_t* list = NULL; + mActor_name_t* list = NULL; - switch (list_type) { - case mSP_LISTTYPE_EVENT: - list = lists[mSP_LIST_EVENT]; - break; - case mSP_LISTTYPE_TRAIN: - list = lists[mSP_LIST_TRAIN]; - break; - case mSP_LISTTYPE_LOTTERY: - list = lists[mSP_LIST_LOTTERY]; - break; - case mSP_LISTTYPE_HALLOWEEN: - list = lists[mSP_LIST_HALLOWEEN]; - break; - case mSP_LISTTYPE_HALLOWEEN2: - list = lists[mSP_LIST_HALLOWEEN2]; - break; - case mSP_LISTTYPE_PRESENT: - list = lists[mSP_LIST_PRESENT]; - break; - case mSP_LISTTYPE_CHRISTMAS: - list = lists[mSP_LIST_CHRISTMAS]; - break; - case mSP_LISTTYPE_SNOW: - list = lists[mSP_LIST_SNOW]; - break; - case mSP_LISTTYPE_JONASON: - list = lists[mSP_LIST_JONASON]; - break; - case mSP_LISTTYPE_POSTOFFICE: - list = lists[mSP_LIST_POSTOFFICE]; - break; - case mSP_LISTTYPE_NINTENDO64: - list = lists[mSP_LIST_NINTENDO64]; - break; - case mSP_LISTTYPE_SPECIALPRESENT: - list = lists[mSP_LIST_SPECIALPRESENT]; - break; - case mSP_LISTTYPE_ISLAND: - list = lists[mSP_LIST_ISLAND]; - break; - case mSP_LISTTYPE_ISLANDFAMICOM: - list = lists[mSP_LIST_ISLANDFAMICOM]; - break; - case mSP_LISTTYPE_HOMEPAGE: - list = lists[mSP_LIST_HOMEPAGE]; - break; - case mSP_LISTTYPE_EVENTPRESENTCHUMON: - list = lists[mSP_LIST_EVENTPRESENTCHUMON]; - break; - case mSP_LISTTYPE_KAMAKURA: - list = lists[mSP_LIST_KAMAKURA]; - break; - case mSP_LISTTYPE_HARVEST: - list = lists[mSP_LIST_HARVEST]; - break; - case mSP_LISTTYPE_MARIO: - list = lists[mSP_LIST_MARIO]; - break; - case mSP_LISTTYPE_TENT: - list = lists[mSP_LIST_TENT]; - break; + switch (list_type) { + case mSP_LISTTYPE_EVENT: + list = lists[mSP_LIST_EVENT]; + break; + case mSP_LISTTYPE_TRAIN: + list = lists[mSP_LIST_TRAIN]; + break; + case mSP_LISTTYPE_LOTTERY: + list = lists[mSP_LIST_LOTTERY]; + break; + case mSP_LISTTYPE_HALLOWEEN: + list = lists[mSP_LIST_HALLOWEEN]; + break; + case mSP_LISTTYPE_HALLOWEEN2: + list = lists[mSP_LIST_HALLOWEEN2]; + break; + case mSP_LISTTYPE_PRESENT: + list = lists[mSP_LIST_PRESENT]; + break; + case mSP_LISTTYPE_CHRISTMAS: + list = lists[mSP_LIST_CHRISTMAS]; + break; + case mSP_LISTTYPE_SNOW: + list = lists[mSP_LIST_SNOW]; + break; + case mSP_LISTTYPE_JONASON: + list = lists[mSP_LIST_JONASON]; + break; + case mSP_LISTTYPE_POSTOFFICE: + list = lists[mSP_LIST_POSTOFFICE]; + break; + case mSP_LISTTYPE_NINTENDO64: + list = lists[mSP_LIST_NINTENDO64]; + break; + case mSP_LISTTYPE_SPECIALPRESENT: + list = lists[mSP_LIST_SPECIALPRESENT]; + break; + case mSP_LISTTYPE_ISLAND: + list = lists[mSP_LIST_ISLAND]; + break; + case mSP_LISTTYPE_ISLANDFAMICOM: + list = lists[mSP_LIST_ISLANDFAMICOM]; + break; + case mSP_LISTTYPE_HOMEPAGE: + list = lists[mSP_LIST_HOMEPAGE]; + break; + case mSP_LISTTYPE_EVENTPRESENTCHUMON: + list = lists[mSP_LIST_EVENTPRESENTCHUMON]; + break; + case mSP_LISTTYPE_KAMAKURA: + list = lists[mSP_LIST_KAMAKURA]; + break; + case mSP_LISTTYPE_HARVEST: + list = lists[mSP_LIST_HARVEST]; + break; + case mSP_LISTTYPE_MARIO: + list = lists[mSP_LIST_MARIO]; + break; + case mSP_LISTTYPE_TENT: + list = lists[mSP_LIST_TENT]; + break; - case mSP_LISTTYPE_ABC: - default: - { - int i; + case mSP_LISTTYPE_ABC: + default: { + int i; - for (i = 0; i < 3; i++, priorities++) { - if (list_type == priorities[0]) { - switch (i) { - case mSP_LISTTYPE_COMMON: - list = lists[mSP_LIST_A]; - break; - case mSP_LISTTYPE_UNCOMMON: - list = lists[mSP_LIST_B]; - break; - case mSP_LISTTYPE_RARE: - list = lists[mSP_LIST_C]; - break; - } + for (i = 0; i < 3; i++, priorities++) { + if (list_type == priorities[0]) { + switch (i) { + case mSP_LISTTYPE_COMMON: + list = lists[mSP_LIST_A]; + break; + case mSP_LISTTYPE_UNCOMMON: + list = lists[mSP_LIST_B]; + break; + case mSP_LISTTYPE_RARE: + list = lists[mSP_LIST_C]; + break; + } + } + } + break; } - } - break; } - } - if (list == NULL) { - list = lists[mSP_LIST_A]; - } + if (list == NULL) { + list = lists[mSP_LIST_A]; + } - return list; + return list; } -static void mSP_SetSeasonFTR_local_december(mActor_name_t* item_table, int count, mActor_name_t ftr0, mActor_name_t ftr1) { - if (count > 1) { - item_table[0] = ftr0; - item_table[1] = ftr1; - } - else if (fqrand() < 0.5f) { - item_table[0] = ftr0; - } - else { - item_table[0] = ftr1; - } +static void mSP_SetSeasonFTR_local_december(mActor_name_t* item_table, int count, mActor_name_t ftr0, + mActor_name_t ftr1) { + if (count > 1) { + item_table[0] = ftr0; + item_table[1] = ftr1; + } else if (fqrand() < 0.5f) { + item_table[0] = ftr0; + } else { + item_table[0] = ftr1; + } } static void mSP_SetSeasonFTR(mActor_name_t* item_table, int count) { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_month_t month = rtc_time.month; - lbRTC_day_t day = rtc_time.day; + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_month_t month = rtc_time.month; + lbRTC_day_t day = rtc_time.day; - if (count > 0 && month == lbRTC_DECEMBER) { - - if (day <= 24) { - mSP_SetSeasonFTR_local_december(item_table, count, FTR_FESTIVE_TREE, FTR_BIG_FESTIVE_TREE); + if (count > 0 && month == lbRTC_DECEMBER) { + + if (day <= 24) { + mSP_SetSeasonFTR_local_december(item_table, count, FTR_FESTIVE_TREE, FTR_BIG_FESTIVE_TREE); + } else if (day >= 26) { + mSP_SetSeasonFTR_local_december(item_table, count, FTR_FESTIVE_CANDLE, FTR_FESTIVE_FLAG); + } } - else if (day >= 26) { - mSP_SetSeasonFTR_local_december(item_table, count, FTR_FESTIVE_CANDLE, FTR_FESTIVE_FLAG); - } - } } static mActor_name_t* mSP_GetItemList(mActor_name_t** lists, u8* priorities, int list_type) { - if (list_type == mSP_LISTTYPE_ABC) { - int abc_roll = RANDOM(100); - int goods_power = mPr_GetGoodsPower(); - int rare_chance; - int uncommon_chance; + if (list_type == mSP_LISTTYPE_ABC) { + int abc_roll = RANDOM(100); + int goods_power = mPr_GetGoodsPower(); + int rare_chance; + int uncommon_chance; - if (goods_power < 0) { - uncommon_chance = goods_power + 40; /* [10%, 39%] */ - rare_chance = 5; /* always 5% chance */ - /* common_chance = [85%, 66%] */ - } - else { - rare_chance = goods_power + 5; /* [5%, 55%] */ - uncommon_chance = rare_chance + 35; /* always 35% chance */ - /* common_chance = [60%, 10%]*/ - } + if (goods_power < 0) { + uncommon_chance = goods_power + 40; /* [10%, 39%] */ + rare_chance = 5; /* always 5% chance */ + /* common_chance = [85%, 66%] */ + } else { + rare_chance = goods_power + 5; /* [5%, 55%] */ + uncommon_chance = rare_chance + 35; /* always 35% chance */ + /* common_chance = [60%, 10%]*/ + } - if (abc_roll < rare_chance) { - return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_RARE); + if (abc_roll < rare_chance) { + return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_RARE); + } else if (abc_roll < uncommon_chance) { + return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_UNCOMMON); + } else { + return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_COMMON); + } + } else { + return mSP_SelectListFromPriority(lists, priorities, list_type); } - else if (abc_roll < uncommon_chance) { - return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_UNCOMMON); - } - else { - return mSP_SelectListFromPriority(lists, priorities, mSP_LISTTYPE_COMMON); - } - } - else { - return mSP_SelectListFromPriority(lists, priorities, list_type); - } } static int mSP_GoodsExistAlready(mActor_name_t* goods_table, int count, mActor_name_t item) { - int i; + int i; - if (goods_table != NULL) { - for (i = 0; i < count; i++) { - if (goods_table[i] == item) { - return TRUE; - } + if (goods_table != NULL) { + for (i = 0; i < count; i++) { + if (goods_table[i] == item) { + return TRUE; + } + } } - } - return FALSE; + return FALSE; } extern int mSP_CollectCheck(mActor_name_t item) { - mActor_name_t ftr_item = mRmTp_Item1ItemNo2FtrItemNo_AtPlayerRoom(item, FALSE); - u32* bitfield; - int idx; + mActor_name_t ftr_item = mRmTp_Item1ItemNo2FtrItemNo_AtPlayerRoom(item, FALSE); + u32* bitfield; + int idx; - bitfield = NULL; + bitfield = NULL; - switch (ITEM_NAME_GET_TYPE(ftr_item)) { - case NAME_TYPE_FTR0: - case NAME_TYPE_FTR1: - { - bitfield = Common_Get(now_private)->furniture_collected_bitfield; - idx = mRmTp_FtrItemNo2FtrIdx(ftr_item); - break; + switch (ITEM_NAME_GET_TYPE(ftr_item)) { + case NAME_TYPE_FTR0: + case NAME_TYPE_FTR1: { + bitfield = Common_Get(now_private)->furniture_collected_bitfield; + idx = mRmTp_FtrItemNo2FtrIdx(ftr_item); + break; + } + + case NAME_TYPE_ITEM1: { + switch (ITEM_NAME_GET_CAT(ftr_item)) { + case ITEM1_CAT_PAPER: { + bitfield = Common_Get(now_private)->paper_collected_bitfield; + idx = (ftr_item - ITM_PAPER_START) % PAPER_UNIQUE_NUM; + break; + } + + case ITEM1_CAT_WALL: { + bitfield = Common_Get(now_private)->wall_collected_bitfield; + idx = ftr_item - ITM_WALL_START; + break; + } + + case ITEM1_CAT_CARPET: { + bitfield = Common_Get(now_private)->carpet_collected_bitfield; + idx = ftr_item - ITM_CARPET_START; + break; + } + + case ITEM1_CAT_MINIDISK: { + bitfield = Common_Get(now_private)->music_collected_bitfield; + idx = (mActor_name_t)(ftr_item - ITM_MINIDISK_START); + break; + } + } + + break; + } } - case NAME_TYPE_ITEM1: - { - switch (ITEM_NAME_GET_CAT(ftr_item)) { - case ITEM1_CAT_PAPER: - { - bitfield = Common_Get(now_private)->paper_collected_bitfield; - idx = (ftr_item - ITM_PAPER_START) % PAPER_UNIQUE_NUM; - break; - } - - case ITEM1_CAT_WALL: - { - bitfield = Common_Get(now_private)->wall_collected_bitfield; - idx = ftr_item - ITM_WALL_START; - break; - } - - case ITEM1_CAT_CARPET: - { - bitfield = Common_Get(now_private)->carpet_collected_bitfield; - idx = ftr_item - ITM_CARPET_START; - break; - } - - case ITEM1_CAT_MINIDISK: - { - bitfield = Common_Get(now_private)->music_collected_bitfield; - idx = (mActor_name_t)(ftr_item - ITM_MINIDISK_START); - break; - } - } - - break; + if (bitfield == NULL) { + return FALSE; } - } - if (bitfield == NULL) { - return FALSE; - } - - return ((1 << (idx & 0x1F)) & bitfield[idx >> 5]) != 0; + return ((1 << (idx & 0x1F)) & bitfield[idx >> 5]) != 0; } static int mSP_CountElementInCommonList(mActor_name_t* list) { - int count = 0; + int count = 0; - for (list; list[0] != EMPTY_NO; list++, count++) { } + for (list; list[0] != EMPTY_NO; list++, count++) {} - return count; + return count; } static int mSP_CountElementInCommonList_collect(mActor_name_t* list, int* selected_idx, int uncollected_only) { - int count = 0; - int selected; - mActor_name_t* list_p; + int count = 0; + int selected; + mActor_name_t* list_p; - if (uncollected_only == FALSE) { - count = mSP_CountElementInCommonList(list); - selected_idx[0] = RANDOM(count); - - return count; - } + if (uncollected_only == FALSE) { + count = mSP_CountElementInCommonList(list); + selected_idx[0] = RANDOM(count); - /* Count all uncollected items in the list */ - for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { - if (mSP_CollectCheck(list_p[0]) == FALSE) { - count++; + return count; } - } - if (count == 0) { + /* Count all uncollected items in the list */ + for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { + if (mSP_CollectCheck(list_p[0]) == FALSE) { + count++; + } + } + + if (count == 0) { + selected_idx[0] = 0; + return 0; + } + + selected = RANDOM(count); selected_idx[0] = 0; - return 0; - } - - selected = RANDOM(count); - selected_idx[0] = 0; - for (list_p = list; list_p[0] != EMPTY_NO && selected > 0; list_p++) { - if (mSP_CollectCheck(list_p[0]) == FALSE) { - selected--; + for (list_p = list; list_p[0] != EMPTY_NO && selected > 0; list_p++) { + if (mSP_CollectCheck(list_p[0]) == FALSE) { + selected--; + } + + selected_idx[0]++; } - selected_idx[0]++; - } - - return count; + return count; } static int mSP_get_cloth_season() { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_month_t month = rtc_time.month; - int res; + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_month_t month = rtc_time.month; + int res; - switch (month) { - case lbRTC_JANUARY: - res = mSP_CLOTH_SEASON_WINTER; - break; + switch (month) { + case lbRTC_JANUARY: + res = mSP_CLOTH_SEASON_WINTER; + break; - case lbRTC_FEBRUARY: - { - if (rtc_time.day > 24) { - res = mSP_CLOTH_SEASON_SPRING; - } - else { - res = mSP_CLOTH_SEASON_WINTER; - } + case lbRTC_FEBRUARY: { + if (rtc_time.day > 24) { + res = mSP_CLOTH_SEASON_SPRING; + } else { + res = mSP_CLOTH_SEASON_WINTER; + } - break; + break; + } + + case lbRTC_MARCH: + case lbRTC_APRIL: + res = mSP_CLOTH_SEASON_SPRING; + break; + + case lbRTC_MAY: { + if (rtc_time.day > 26) { + res = mSP_CLOTH_SEASON_SUMMER; + } else { + res = mSP_CLOTH_SEASON_SPRING; + } + + break; + } + + case lbRTC_JUNE: + case lbRTC_JULY: + res = mSP_CLOTH_SEASON_SUMMER; + break; + + case lbRTC_AUGUST: { + if (rtc_time.day > 26) { + res = mSP_CLOTH_SEASON_AUTUMN; + } else { + res = mSP_CLOTH_SEASON_SUMMER; + } + + break; + } + + case lbRTC_SEPTEMBER: + case lbRTC_OCTOBER: + res = mSP_CLOTH_SEASON_AUTUMN; + break; + + case lbRTC_NOVEMBER: { + if (rtc_time.day > 26) { + res = mSP_CLOTH_SEASON_WINTER; + } else { + res = mSP_CLOTH_SEASON_AUTUMN; + } + + break; + } + + case lbRTC_DECEMBER: + res = mSP_CLOTH_SEASON_WINTER; + break; } - case lbRTC_MARCH: - case lbRTC_APRIL: - res = mSP_CLOTH_SEASON_SPRING; - break; - - case lbRTC_MAY: - { - if (rtc_time.day > 26) { - res = mSP_CLOTH_SEASON_SUMMER; - } - else { - res = mSP_CLOTH_SEASON_SPRING; - } - - break; - } - - case lbRTC_JUNE: - case lbRTC_JULY: - res = mSP_CLOTH_SEASON_SUMMER; - break; - - case lbRTC_AUGUST: - { - if (rtc_time.day > 26) { - res = mSP_CLOTH_SEASON_AUTUMN; - } - else { - res = mSP_CLOTH_SEASON_SUMMER; - } - - break; - } - - case lbRTC_SEPTEMBER: - case lbRTC_OCTOBER: - res = mSP_CLOTH_SEASON_AUTUMN; - break; - - case lbRTC_NOVEMBER: - { - if (rtc_time.day > 26) { - res = mSP_CLOTH_SEASON_WINTER; - } - else { - res = mSP_CLOTH_SEASON_AUTUMN; - } - - break; - } - - case lbRTC_DECEMBER: - res = mSP_CLOTH_SEASON_WINTER; - break; - } - - return res; + return res; } extern u8 cloth_season_cnt[]; static int mSP_CountElementInClothList(int* selected) { - u8* count_p = cloth_season_cnt; - int cloth_season = mSP_get_cloth_season(); - int cloth_count = count_p[mSP_CLOTH_SEASON_ANY] + count_p[cloth_season]; - - selected[0] = RANDOM(cloth_count); // random cloth selected - - if (selected[0] >= cloth_season_cnt[mSP_CLOTH_SEASON_ANY]) { - int i; + u8* count_p = cloth_season_cnt; + int cloth_season = mSP_get_cloth_season(); + int cloth_count = count_p[mSP_CLOTH_SEASON_ANY] + count_p[cloth_season]; - /* seasonal cloths are sequential in the item lists, so add previous season counts to the selected index */ - for (i = mSP_CLOTH_SEASON_SPRING; i < cloth_season; i++) { - selected[0] += count_p[i]; + selected[0] = RANDOM(cloth_count); // random cloth selected + + if (selected[0] >= cloth_season_cnt[mSP_CLOTH_SEASON_ANY]) { + int i; + + /* seasonal cloths are sequential in the item lists, so add previous season counts to the selected index */ + for (i = mSP_CLOTH_SEASON_SPRING; i < cloth_season; i++) { + selected[0] += count_p[i]; + } } - } - return cloth_count; + return cloth_count; } static int mSP_CountElementInClothList_collect(mActor_name_t* list, int* selected, int uncollected_only) { - u8* count_p = cloth_season_cnt; + u8* count_p = cloth_season_cnt; - if (uncollected_only == FALSE) { - return mSP_CountElementInClothList(selected); - } - else { - int cloth_season; - int count; - mActor_name_t* list_p; - mActor_name_t* list_p2; - int uncollected_num; - int n; - int s; - int i; - cloth_season = mSP_get_cloth_season(); - uncollected_num = 0; - count = 0; + if (uncollected_only == FALSE) { + return mSP_CountElementInClothList(selected); + } else { + int cloth_season; + int count; + mActor_name_t* list_p; + mActor_name_t* list_p2; + int uncollected_num; + int n; + int s; + int i; + cloth_season = mSP_get_cloth_season(); + uncollected_num = 0; + count = 0; - for (list_p = list; count < count_p[mSP_CLOTH_SEASON_ANY] && list_p != NULL; list_p++) { - if (mSP_CollectCheck(list_p[0]) == FALSE) { - uncollected_num++; - } + for (list_p = list; count < count_p[mSP_CLOTH_SEASON_ANY] && list_p != NULL; list_p++) { + if (mSP_CollectCheck(list_p[0]) == FALSE) { + uncollected_num++; + } - count++; - } - - n = count_p[mSP_CLOTH_SEASON_ANY]; - for (i = mSP_CLOTH_SEASON_SPRING; i < cloth_season; i++) { - n += count_p[i]; // add intermediate season counts - } - - i = n; - s = n + count_p[cloth_season]; - list_p2 = list + (int)n; - for (list_p = list_p2; i < s && list_p != NULL; list_p++) { - if (mSP_CollectCheck(list_p[0]) == FALSE) { - uncollected_num++; - } - - i++; - } - - if (uncollected_num == 0) { - selected[0] = 0; - return 0; - } - else { - int selected_idx = RANDOM(uncollected_num); - - count = 0; - selected[0] = 0; - for (list; count < count_p[mSP_CLOTH_SEASON_ANY] && list != NULL && selected_idx > 0; list++) { - if (mSP_CollectCheck(list[0]) == FALSE) { - selected_idx--; + count++; } - selected[0]++; - count++; - } - - i = n; - for (list_p2; i < s && list_p2 != NULL && selected_idx > 0; list_p2++) { - if (mSP_CollectCheck(list_p2[0]) == FALSE) { - selected_idx--; + n = count_p[mSP_CLOTH_SEASON_ANY]; + for (i = mSP_CLOTH_SEASON_SPRING; i < cloth_season; i++) { + n += count_p[i]; // add intermediate season counts } - selected[0]++; - i++; - } - } + i = n; + s = n + count_p[cloth_season]; + list_p2 = list + (int)n; + for (list_p = list_p2; i < s && list_p != NULL; list_p++) { + if (mSP_CollectCheck(list_p[0]) == FALSE) { + uncollected_num++; + } - return uncollected_num; - } + i++; + } + + if (uncollected_num == 0) { + selected[0] = 0; + return 0; + } else { + int selected_idx = RANDOM(uncollected_num); + + count = 0; + selected[0] = 0; + for (list; count < count_p[mSP_CLOTH_SEASON_ANY] && list != NULL && selected_idx > 0; list++) { + if (mSP_CollectCheck(list[0]) == FALSE) { + selected_idx--; + } + + selected[0]++; + count++; + } + + i = n; + for (list_p2; i < s && list_p2 != NULL && selected_idx > 0; list_p2++) { + if (mSP_CollectCheck(list_p2[0]) == FALSE) { + selected_idx--; + } + + selected[0]++; + i++; + } + } + + return uncollected_num; + } } static int mSP_NoList(mActor_name_t* items_table, int count, mActor_name_t* list) { - if (list == NULL) { - int i; + if (list == NULL) { + int i; - for (i = 0; i < count; i++) { - items_table[0] = EMPTY_NO; - items_table++; + for (i = 0; i < count; i++) { + items_table[0] = EMPTY_NO; + items_table++; + } + + return TRUE; } - return TRUE; - } - - return FALSE; + return FALSE; } static void mSP_SetDummyItem(mActor_name_t* items_table, int count, int kind) { - mActor_name_t dummy_table[mSP_KIND_EXTENDED_MAX] = { - FTR_CLASSIC_WARDROBE, - ITM_PAPER00, - ITM_CLOTH000, - ITM_CARPET00, - ITM_WALL00, - ITM_DIARY00 - }; + mActor_name_t dummy_table[mSP_KIND_EXTENDED_MAX] = { FTR_CLASSIC_WARDROBE, ITM_PAPER00, ITM_CLOTH000, + ITM_CARPET00, ITM_WALL00, ITM_DIARY00 }; - mActor_name_t dummy_item = dummy_table[kind]; - int i; + mActor_name_t dummy_item = dummy_table[kind]; + int i; - for (i = 0; i < count; i++) { - items_table[i] = dummy_item; - } + for (i = 0; i < count; i++) { + items_table[i] = dummy_item; + } } -extern void mSP_SelectRandomItem_New( - GAME* game, - mActor_name_t* goods_table, - int goods_count, - mActor_name_t* goods_exist_table, - int goods_exist_count, - int category, - int list_type, - int uncollected_only -) { - mSP_InitItemTable(goods_table, goods_count); +extern void mSP_SelectRandomItem_New(GAME* game, mActor_name_t* goods_table, int goods_count, + mActor_name_t* goods_exist_table, int goods_exist_count, int category, + int list_type, int uncollected_only) { + mSP_InitItemTable(goods_table, goods_count); - if (goods_count != 0 && goods_table != NULL) { - if (goods_table != NULL) { - u8 abc_priorities[3]; - mActor_name_t** goods_seg_p = mSP_goods_seg_inf[category]; - int i = 0; + if (goods_count != 0 && goods_table != NULL) { + if (goods_table != NULL) { + u8 abc_priorities[3]; + mActor_name_t** goods_seg_p = mSP_goods_seg_inf[category]; + int i = 0; - mSP_GetGoodsPriority(abc_priorities, category); + mSP_GetGoodsPriority(abc_priorities, category); - while (i < goods_count) { - mActor_name_t* item_list_p = mSP_GetItemList(goods_seg_p, abc_priorities, list_type); - int list_item_count; - int selected_idx; + while (i < goods_count) { + mActor_name_t* item_list_p = mSP_GetItemList(goods_seg_p, abc_priorities, list_type); + int list_item_count; + int selected_idx; - if (mSP_NoList(goods_table, goods_count, item_list_p) != FALSE) { - mSP_SetDummyItem(goods_table, goods_count, category); - return; + if (mSP_NoList(goods_table, goods_count, item_list_p) != FALSE) { + mSP_SetDummyItem(goods_table, goods_count, category); + return; + } + + if (category == mSP_KIND_CLOTH && (list_type == mSP_LISTTYPE_ABC || list_type == mSP_LIST_A || + list_type == mSP_LIST_B || list_type == mSP_LIST_C)) { + list_item_count = mSP_CountElementInClothList_collect(item_list_p, &selected_idx, uncollected_only); + } else { + list_item_count = + mSP_CountElementInCommonList_collect(item_list_p, &selected_idx, uncollected_only); + } + + if (list_item_count == 0) { + mSP_InitItemTable(goods_table, goods_count); + return; + } + + if (mSP_GoodsExistAlready(goods_table, goods_count, item_list_p[selected_idx]) == FALSE && + mSP_GoodsExistAlready(goods_exist_table, goods_exist_count, item_list_p[selected_idx]) == FALSE && + Save_Get(shop).rare_item != item_list_p[selected_idx]) { + goods_table[i] = item_list_p[selected_idx]; + i++; + } else if (list_item_count < goods_count + goods_exist_count) { + /* forcibly add duplicate items if the list size is less than total possible goods */ + goods_table[i] = item_list_p[selected_idx]; + i++; + } + } + } else { + mSP_SetDummyItem(goods_table, goods_count, category); // ????? } - - if ( - category == mSP_KIND_CLOTH && - (list_type == mSP_LISTTYPE_ABC || list_type == mSP_LIST_A || list_type == mSP_LIST_B || list_type == mSP_LIST_C) - ) { - list_item_count = mSP_CountElementInClothList_collect(item_list_p, &selected_idx, uncollected_only); - } - else { - list_item_count = mSP_CountElementInCommonList_collect(item_list_p, &selected_idx, uncollected_only); - } - - if (list_item_count == 0) { - mSP_InitItemTable(goods_table, goods_count); - return; - } - - if ( - mSP_GoodsExistAlready(goods_table, goods_count, item_list_p[selected_idx]) == FALSE && - mSP_GoodsExistAlready(goods_exist_table, goods_exist_count, item_list_p[selected_idx]) == FALSE && - Save_Get(shop).rare_item != item_list_p[selected_idx] - ) { - goods_table[i] = item_list_p[selected_idx]; - i++; - } - else if (list_item_count < goods_count + goods_exist_count) { - /* forcibly add duplicate items if the list size is less than total possible goods */ - goods_table[i] = item_list_p[selected_idx]; - i++; - } - } } - else { - mSP_SetDummyItem(goods_table, goods_count, category); // ????? - } - } } static int mSP_CountPriceTableElement(u16* price_table) { - int n = 0; + int n = 0; - while (price_table[0] != 0xFFFF) { - price_table++; - n++; - } + while (price_table[0] != 0xFFFF) { + price_table++; + n++; + } - return n; + return n; } -extern int mSP_ShopSaleReport(mActor_name_t sold_item, mActor_name_t* goods_table, int goods_count, mActor_name_t rsv_item) { - int i; +extern int mSP_ShopSaleReport(mActor_name_t sold_item, mActor_name_t* goods_table, int goods_count, + mActor_name_t rsv_item) { + int i; - if (sold_item == ITM_HUKUBUKURO_BAG) { - Save_Get(shop).flowers_candy_grab_bag_count--; - return FALSE; - } - - if (sold_item == ITM_FOOD_CANDY) { - Save_Get(shop).flowers_candy_grab_bag_count--; - return FALSE; - } - - for (i = 0; i < goods_count; i++) { - if (sold_item == goods_table[i]) { - goods_table[i] = rsv_item; - return FALSE; + if (sold_item == ITM_HUKUBUKURO_BAG) { + Save_Get(shop).flowers_candy_grab_bag_count--; + return FALSE; + } + + if (sold_item == ITM_FOOD_CANDY) { + Save_Get(shop).flowers_candy_grab_bag_count--; + return FALSE; + } + + for (i = 0; i < goods_count; i++) { + if (sold_item == goods_table[i]) { + goods_table[i] = rsv_item; + return FALSE; + } + } + + if (sold_item == Save_Get(shop).rare_item) { + Save_Get(shop).rare_item = rsv_item; + return FALSE; } - } - if (sold_item == Save_Get(shop).rare_item) { - Save_Get(shop).rare_item = rsv_item; return FALSE; - } - - return FALSE; } extern u16 binsen_price_table[]; @@ -692,582 +619,507 @@ static u16* l_md_price_info = md_price_table; static u16* l_diary_price_info = diary_price_table; static u16* l_insect_price_info = insect_price_table; -static u16** l_price_info[ITEM1_CAT_NUM] = { - &l_binsen_price_info, - NULL, - &l_tool_price_info, - &l_fish_price_info, - &l_cloth_price_info, - NULL, - &l_carpet_price_info, - &l_wall_price_info, - &l_food_price_info, - &l_plant_price_info, - &l_md_price_info, - &l_diary_price_info, - NULL, - &l_insect_price_info, - NULL, - NULL -}; +static u16** l_price_info[ITEM1_CAT_NUM] = { &l_binsen_price_info, + NULL, + &l_tool_price_info, + &l_fish_price_info, + &l_cloth_price_info, + NULL, + &l_carpet_price_info, + &l_wall_price_info, + &l_food_price_info, + &l_plant_price_info, + &l_md_price_info, + &l_diary_price_info, + NULL, + &l_insect_price_info, + NULL, + NULL }; static mActor_name_t mSP_item1_start_idx_table[ITEM1_CAT_NUM] = { - ITM_PAPER_START, - ITM_MONEY_START, - ITM_TOOL_START, - ITM_FISH_START, - ITM_CLOTH_START, - ITM_ETC_START, - ITM_CARPET_START, - ITM_WALL_START, - ITM_FOOD_START, - ITM_ENV_START, - ITM_MINIDISK_START, - ITM_DIARY_START, - ITM_TICKET_START, - ITM_INSECT_START, - ITM_HUKUBUKURO_START, - ITM_KABU_START + ITM_PAPER_START, ITM_MONEY_START, ITM_TOOL_START, ITM_FISH_START, ITM_CLOTH_START, ITM_ETC_START, + ITM_CARPET_START, ITM_WALL_START, ITM_FOOD_START, ITM_ENV_START, ITM_MINIDISK_START, ITM_DIARY_START, + ITM_TICKET_START, ITM_INSECT_START, ITM_HUKUBUKURO_START, ITM_KABU_START }; extern u16 ftr_price_table[]; extern u32 mSP_ItemNo2ItemPrice(mActor_name_t item_no) { - static u32 shellfish_price_table[ITM_SHELL_END - ITM_SHELL_START] = { - 160, 80, 600, 120, 240, 1800, 1400, 1000 - }; + static u32 shellfish_price_table[ITM_SHELL_END - ITM_SHELL_START] = { 160, 80, 600, 120, 240, 1800, 1400, 1000 }; - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_year_t year = rtc_time.year; - u32 price = 0; + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_year_t year = rtc_time.year; + u32 price = 0; - if (item_no == ITM_HUKUBUKURO_BAG) { - return year; - } + if (item_no == ITM_HUKUBUKURO_BAG) { + return year; + } - item_no = mRmTp_FtrItemNo2Item1ItemNo(item_no, FALSE); - if (item_no >= ITM_SHELL0 && item_no <= ITM_SHELL7) { - u32 idx = item_no - ITM_SHELL0; - - return shellfish_price_table[idx % 8]; - } + item_no = mRmTp_FtrItemNo2Item1ItemNo(item_no, FALSE); + if (item_no >= ITM_SHELL0 && item_no <= ITM_SHELL7) { + u32 idx = item_no - ITM_SHELL0; - if (item_no == ITM_SIGNBOARD) { - return mSP_SIGNBOARD_PRICE; - } + return shellfish_price_table[idx % 8]; + } - switch (ITEM_NAME_GET_TYPE(item_no)) { - case NAME_TYPE_ITEM1: - { - u16** price_list_pp = l_price_info[ITEM_NAME_GET_CAT(item_no)]; + if (item_no == ITM_SIGNBOARD) { + return mSP_SIGNBOARD_PRICE; + } - if (price_list_pp != NULL && &price != NULL) { - u16* price_list_p = *price_list_pp; - int idx = item_no - mSP_item1_start_idx_table[ITEM_NAME_GET_CAT(item_no)]; + switch (ITEM_NAME_GET_TYPE(item_no)) { + case NAME_TYPE_ITEM1: { + u16** price_list_pp = l_price_info[ITEM_NAME_GET_CAT(item_no)]; - if (item_no >= ITM_PAPER_START && item_no <= (ITM_PAPER_END - 1)) { - int paper_idx = (item_no - ITM_PAPER_START); + if (price_list_pp != NULL && &price != NULL) { + u16* price_list_p = *price_list_pp; + int idx = item_no - mSP_item1_start_idx_table[ITEM_NAME_GET_CAT(item_no)]; - idx = (item_no - ITM_PAPER_START) % PAPER_UNIQUE_NUM; - if (idx < mSP_CountPriceTableElement(price_list_p)) { - price = price_list_p[idx]; - price = price * ((paper_idx / 64) + 1); - return price; - } - } + if (item_no >= ITM_PAPER_START && item_no <= (ITM_PAPER_END - 1)) { + int paper_idx = (item_no - ITM_PAPER_START); - if (idx < mSP_CountPriceTableElement(price_list_p)) { - switch (item_no) { - case ITM_FOOD_APPLE: - case ITM_FOOD_CHERRY: - case ITM_FOOD_PEAR: - case ITM_FOOD_PEACH: - case ITM_FOOD_ORANGE: - { - if (Save_Get(fruit) != item_no) { - return mSP_FOREIGN_FRUIT_PRICE; - } - - break; + idx = (item_no - ITM_PAPER_START) % PAPER_UNIQUE_NUM; + if (idx < mSP_CountPriceTableElement(price_list_p)) { + price = price_list_p[idx]; + price = price * ((paper_idx / 64) + 1); + return price; + } + } + + if (idx < mSP_CountPriceTableElement(price_list_p)) { + switch (item_no) { + case ITM_FOOD_APPLE: + case ITM_FOOD_CHERRY: + case ITM_FOOD_PEAR: + case ITM_FOOD_PEACH: + case ITM_FOOD_ORANGE: { + if (Save_Get(fruit) != item_no) { + return mSP_FOREIGN_FRUIT_PRICE; + } + + break; + } + } + + price = price_list_p[idx]; + return price; + } + + return 0; } - } - - price = price_list_p[idx]; - return price; + break; } - return 0; - } + case NAME_TYPE_FTR0: + case NAME_TYPE_FTR1: { + if (&price != NULL) { + int ftr_idx = mRmTp_FtrItemNo2FtrIdx(item_no); + u16* price_list_p = ftr_price_table; - break; - } + if (ftr_idx < mSP_CountPriceTableElement(price_list_p)) { + price = price_list_p[ftr_idx]; + return price; + } - case NAME_TYPE_FTR0: - case NAME_TYPE_FTR1: - { - if (&price != NULL) { - int ftr_idx = mRmTp_FtrItemNo2FtrIdx(item_no); - u16* price_list_p = ftr_price_table; + return 0; + } - if (ftr_idx < mSP_CountPriceTableElement(price_list_p)) { - price = price_list_p[ftr_idx]; - return price; + break; } - return 0; - } - - break; + default: { + return 0; + } } - default: - { - return 0; - } - } - - return 0; + return 0; } extern int mSP_SearchItemCategoryPriority(mActor_name_t item_no, int category, int list_type, GAME* game) { - u8 abc_priorities[3]; - mActor_name_t** lists_p = mSP_goods_seg_inf[category]; - mActor_name_t* list_p; - int count; - int i; + u8 abc_priorities[3]; + mActor_name_t** lists_p = mSP_goods_seg_inf[category]; + mActor_name_t* list_p; + int count; + int i; - mSP_GetGoodsPriority(abc_priorities, category); - list_p = mSP_GetItemList(lists_p, abc_priorities, list_type); - count = mSP_CountElementInCommonList(list_p); + mSP_GetGoodsPriority(abc_priorities, category); + list_p = mSP_GetItemList(lists_p, abc_priorities, list_type); + count = mSP_CountElementInCommonList(list_p); - if (list_p != NULL) { - for (i = 0; i < count; i++) { - if (item_no == list_p[i]) { - return TRUE; - } + if (list_p != NULL) { + for (i = 0; i < count; i++) { + if (item_no == list_p[i]) { + return TRUE; + } + } } - } - return FALSE; + return FALSE; } static int mSP_ItemNo2GoodsListCategory(mActor_name_t item_no) { - if (ITEM_IS_FTR(item_no)) { - return mSP_KIND_FURNITURE; - } - else if (item_no >= ITM_PAPER_START && item_no < ITM_PAPER_END) { - return mSP_KIND_PAPER; - } - else if (item_no >= ITM_CLOTH_START && item_no < ITM_CLOTH_END) { - return mSP_KIND_CLOTH; - } - else if (item_no >= ITM_WALL_START && item_no < ITM_WALL_END) { - return mSP_KIND_WALLPAPER; - } - else if (item_no >= ITM_CARPET_START && item_no < ITM_CARPET_END) { - return mSP_KIND_CARPET; - } - else if (item_no >= ITM_DIARY_START && item_no <= (ITM_DIARY_END-1)) { - return mSP_KIND_DIARY; - } + if (ITEM_IS_FTR(item_no)) { + return mSP_KIND_FURNITURE; + } else if (item_no >= ITM_PAPER_START && item_no < ITM_PAPER_END) { + return mSP_KIND_PAPER; + } else if (item_no >= ITM_CLOTH_START && item_no < ITM_CLOTH_END) { + return mSP_KIND_CLOTH; + } else if (item_no >= ITM_WALL_START && item_no < ITM_WALL_END) { + return mSP_KIND_WALLPAPER; + } else if (item_no >= ITM_CARPET_START && item_no < ITM_CARPET_END) { + return mSP_KIND_CARPET; + } else if (item_no >= ITM_DIARY_START && item_no <= (ITM_DIARY_END - 1)) { + return mSP_KIND_DIARY; + } - return -1; + return -1; } static u8 l_zakka_goods[mSP_GOODS_TYPE_NUM] = { - 1, // stationery - 1, // clothing - 1, // ABC ftr - 0, // rare ftr - 1, // carpet - 1, // wallpaper - 1, // ?? - 0, // ?? - 1, // saplings - 2, // tools - 2 // plants + 1, // stationery + 1, // clothing + 1, // ABC ftr + 0, // rare ftr + 1, // carpet + 1, // wallpaper + 1, // ?? + 0, // ?? + 1, // saplings + 2, // tools + 2 // plants }; static u8 l_conbini_goods[mSP_GOODS_TYPE_NUM] = { - 2, // stationery - 2, // clothing - 2, // ABC ftr - 0, // rare ftr - 1, // carpet - 1, // wallpaper - 1, // ?? - 0, // ?? - 1, // saplings - 3, // tools - 3 // plants + 2, // stationery + 2, // clothing + 2, // ABC ftr + 0, // rare ftr + 1, // carpet + 1, // wallpaper + 1, // ?? + 0, // ?? + 1, // saplings + 3, // tools + 3 // plants }; static u8 l_super_goods[mSP_GOODS_TYPE_NUM] = { - 2, // stationery - 3, // clothing - 3, // ABC ftr - 1, // rare ftr - 2, // carpet - 2, // wallpaper - 1, // ?? - 0, // ?? - 2, // saplings - 2, // tools - 4 // plants + 2, // stationery + 3, // clothing + 3, // ABC ftr + 1, // rare ftr + 2, // carpet + 2, // wallpaper + 1, // ?? + 0, // ?? + 2, // saplings + 2, // tools + 4 // plants }; static u8 l_dsuper_goods[mSP_GOODS_TYPE_NUM] = { - 4, // stationery - 5, // clothing - 5, // ABC ftr - 1, // rare ftr - 3, // carpet - 3, // wallpaper - 1, // ?? - 0, // ?? - 3, // saplings - 3, // tools - 5 // plants + 4, // stationery + 5, // clothing + 5, // ABC ftr + 1, // rare ftr + 3, // carpet + 3, // wallpaper + 1, // ?? + 0, // ?? + 3, // saplings + 3, // tools + 5 // plants }; -static u8* l_goods_count_table[mSP_SHOP_TYPE_NUM] = { - l_zakka_goods, - l_conbini_goods, - l_super_goods, - l_dsuper_goods -}; +static u8* l_goods_count_table[mSP_SHOP_TYPE_NUM] = { l_zakka_goods, l_conbini_goods, l_super_goods, l_dsuper_goods }; static void mSP_MakeRandomGoodsList(GAME* game, int* count, mActor_name_t* goods_list) { - int shop_level = mSP_GetShopLevel(); - u8* goods_count = l_goods_count_table[shop_level]; - Shop_c* shop = Save_GetPointer(shop); - mActor_name_t rare; + int shop_level = mSP_GetShopLevel(); + u8* goods_count = l_goods_count_table[shop_level]; + Shop_c* shop = Save_GetPointer(shop); + mActor_name_t rare; - /* roll rare furniture if the shop has one */ - if (goods_count[mSP_GOODS_TYPE_RARE_FTR] != 0) { - mSP_SelectRandomItem_New(game, &rare, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); - } - else { - rare = EMPTY_NO; - } - - Save_Get(shop).rare_item = rare; - - /* roll ABC list furniture */ - mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_FTR], NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ABC, FALSE); - mSP_SetSeasonFTR(goods_list + count[0], goods_count[mSP_GOODS_TYPE_FTR]); // replace with seasonal furniture if necessary - count[0] += goods_count[mSP_GOODS_TYPE_FTR]; - - /* check for grab bag sale */ - if (mSP_Chk_HukubukuroSail()) { - shop->flowers_candy_grab_bag_count += (s8)goods_count[mSP_GOODS_TYPE_PAPER]; - if (shop_level >= mSP_SHOP_TYPE_SUPER) { - shop->flowers_candy_grab_bag_count += 1; + /* roll rare furniture if the shop has one */ + if (goods_count[mSP_GOODS_TYPE_RARE_FTR] != 0) { + mSP_SelectRandomItem_New(game, &rare, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); + } else { + rare = EMPTY_NO; } - } - else { - /* no grab bag sale, so roll paper & diaries */ - mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_PAPER], NULL, 0, mSP_KIND_PAPER, mSP_LISTTYPE_ABC, FALSE); - count[0] += goods_count[mSP_GOODS_TYPE_PAPER]; - /* only roll diaries for Nookway or higher */ - if (shop_level >= mSP_SHOP_TYPE_SUPER) { - mSP_SelectRandomItem_New(game, goods_list + count[0], 1, NULL, 0, mSP_KIND_DIARY, mSP_LISTTYPE_ABC, FALSE); - count[0] += 1; + Save_Get(shop).rare_item = rare; + + /* roll ABC list furniture */ + mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_FTR], NULL, 0, mSP_KIND_FURNITURE, + mSP_LISTTYPE_ABC, FALSE); + mSP_SetSeasonFTR(goods_list + count[0], + goods_count[mSP_GOODS_TYPE_FTR]); // replace with seasonal furniture if necessary + count[0] += goods_count[mSP_GOODS_TYPE_FTR]; + + /* check for grab bag sale */ + if (mSP_Chk_HukubukuroSail()) { + shop->flowers_candy_grab_bag_count += (s8)goods_count[mSP_GOODS_TYPE_PAPER]; + if (shop_level >= mSP_SHOP_TYPE_SUPER) { + shop->flowers_candy_grab_bag_count += 1; + } + } else { + /* no grab bag sale, so roll paper & diaries */ + mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_PAPER], NULL, 0, + mSP_KIND_PAPER, mSP_LISTTYPE_ABC, FALSE); + count[0] += goods_count[mSP_GOODS_TYPE_PAPER]; + + /* only roll diaries for Nookway or higher */ + if (shop_level >= mSP_SHOP_TYPE_SUPER) { + mSP_SelectRandomItem_New(game, goods_list + count[0], 1, NULL, 0, mSP_KIND_DIARY, mSP_LISTTYPE_ABC, FALSE); + count[0] += 1; + } } - } - /* roll clothing */ - mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_CLOTH], NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_ABC, FALSE); - count[0] += goods_count[mSP_GOODS_TYPE_CLOTH]; + /* roll clothing */ + mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_CLOTH], NULL, 0, mSP_KIND_CLOTH, + mSP_LISTTYPE_ABC, FALSE); + count[0] += goods_count[mSP_GOODS_TYPE_CLOTH]; - /* roll carpets */ - mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_CARPET], NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_ABC, FALSE); - count[0] += goods_count[mSP_GOODS_TYPE_CARPET]; + /* roll carpets */ + mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_CARPET], NULL, 0, mSP_KIND_CARPET, + mSP_LISTTYPE_ABC, FALSE); + count[0] += goods_count[mSP_GOODS_TYPE_CARPET]; - /* roll wallpaper */ - mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_WALL], NULL, 0, mSP_KIND_WALLPAPER, mSP_LISTTYPE_ABC, FALSE); - count[0] += goods_count[mSP_GOODS_TYPE_WALL]; + /* roll wallpaper */ + mSP_SelectRandomItem_New(game, goods_list + count[0], goods_count[mSP_GOODS_TYPE_WALL], NULL, 0, mSP_KIND_WALLPAPER, + mSP_LISTTYPE_ABC, FALSE); + count[0] += goods_count[mSP_GOODS_TYPE_WALL]; } extern int mSP_CountElementInGoodsList() { - mActor_name_t* items = Save_Get(shop).items; - int goods_count = 0; - int i; + mActor_name_t* items = Save_Get(shop).items; + int goods_count = 0; + int i; - for (i = 0; i < mSP_GOODS_COUNT; i++) { - if (items[i] != EMPTY_NO) { - goods_count++; + for (i = 0; i < mSP_GOODS_COUNT; i++) { + if (items[i] != EMPTY_NO) { + goods_count++; + } } - } - return goods_count; + return goods_count; } static void mSP_SelectTool(mActor_name_t* goods_list, int* count, int tool_num, int shop_level) { - static int table[4] = { ITM_SHOVEL, ITM_NET, ITM_ROD, ITM_AXE }; + static int table[4] = { ITM_SHOVEL, ITM_NET, ITM_ROD, ITM_AXE }; - int tools_added = 0; - u16 paint_idx = Save_Get(shop).shop_info.paint_color; - u32 sales_sum = Save_Get(shop).sales_sum; - f32 tool_max; + int tools_added = 0; + u16 paint_idx = Save_Get(shop).shop_info.paint_color; + u32 sales_sum = Save_Get(shop).sales_sum; + f32 tool_max; - /* tool lockout based on sales sum is only applicable to Nook's Cranny */ - if (shop_level > mSP_SHOP_TYPE_ZAKKA) { - tool_max = 4;/* shove, net, rod, axe */ - } - else if (sales_sum < mSP_NET_SALES_SUM) { - tool_max = 1; /* shovel only */ - } - else if (sales_sum < mSP_ROD_SALES_SUM) { - tool_max = 2; /* shovel, net */ - } - else if (sales_sum < mSP_AXE_SALES_SUM) { - tool_max = 3; /* shovel, net, rod */ - } - else { - tool_max = 4; /* shove, net, rod, axe */ - } - - if (tool_num > (int)tool_max) { - tool_num = (int)tool_max; - } - - /* - This implementation kind of sucks. - At best case there's a (1/4)^4 (~0.4%) chance of - rolling all four unique tools in a single go. - */ - while (tools_added < tool_num) { - int idx = RANDOM_F(tool_max); - mActor_name_t tool = table[idx]; - - /* Don't allow duplicate tools */ - if (mSP_GoodsExistAlready(goods_list, count[0], tool) == FALSE) { - goods_list[(int)count[0]] = tool; - tools_added++; - count[0]++; - } - } - - /* Add paint & signboard if shop is Nookway or greater */ - if (shop_level >= mSP_SHOP_TYPE_SUPER) { - if (paint_idx >= PAINT_NUM) { - paint_idx = 0; /* wrap over to beginning */ + /* tool lockout based on sales sum is only applicable to Nook's Cranny */ + if (shop_level > mSP_SHOP_TYPE_ZAKKA) { + tool_max = 4; /* shove, net, rod, axe */ + } else if (sales_sum < mSP_NET_SALES_SUM) { + tool_max = 1; /* shovel only */ + } else if (sales_sum < mSP_ROD_SALES_SUM) { + tool_max = 2; /* shovel, net */ + } else if (sales_sum < mSP_AXE_SALES_SUM) { + tool_max = 3; /* shovel, net, rod */ + } else { + tool_max = 4; /* shove, net, rod, axe */ } - goods_list[count[0]] = ITM_RED_PAINT + paint_idx; - paint_idx++; - Save_Get(shop).shop_info.paint_color = paint_idx; - count[0]++; - goods_list[count[0]] = ITM_SIGNBOARD; - count[0]++; - } + if (tool_num > (int)tool_max) { + tool_num = (int)tool_max; + } - /* Add umbrella */ - mSP_RandomUmbSelect(goods_list + count[0], 1); - count[0]++; + /* + This implementation kind of sucks. + At best case there's a (1/4)^4 (~0.4%) chance of + rolling all four unique tools in a single go. + */ + while (tools_added < tool_num) { + int idx = RANDOM_F(tool_max); + mActor_name_t tool = table[idx]; + + /* Don't allow duplicate tools */ + if (mSP_GoodsExistAlready(goods_list, count[0], tool) == FALSE) { + goods_list[(int)count[0]] = tool; + tools_added++; + count[0]++; + } + } + + /* Add paint & signboard if shop is Nookway or greater */ + if (shop_level >= mSP_SHOP_TYPE_SUPER) { + if (paint_idx >= PAINT_NUM) { + paint_idx = 0; /* wrap over to beginning */ + } + + goods_list[count[0]] = ITM_RED_PAINT + paint_idx; + paint_idx++; + Save_Get(shop).shop_info.paint_color = paint_idx; + count[0]++; + goods_list[count[0]] = ITM_SIGNBOARD; + count[0]++; + } + + /* Add umbrella */ + mSP_RandomUmbSelect(goods_list + count[0], 1); + count[0]++; } -static void mSP_SelectPlant(mActor_name_t* goods_list, int* count, int flower_count, int sapling_count, int shop_level) { - u8 flower_use[FLOWER_NUM]; - int i; +static void mSP_SelectPlant(mActor_name_t* goods_list, int* count, int flower_count, int sapling_count, + int shop_level) { + u8 flower_use[FLOWER_NUM]; + int i; - if (mSP_CheckHallowinDay()) { - Save_Get(shop).flowers_candy_grab_bag_count = flower_count; - flower_count = sapling_count; - sapling_count = 0; - } - - if (shop_level >= mSP_SHOP_TYPE_SUPER && sapling_count > 0) { - goods_list[count[0]] = ITM_CEDAR_SAPLING; - sapling_count--; - count[0] += 1; - } - - for (i = 0; i < sapling_count; i++) { - goods_list[count[0]] = ITM_SAPLING; - count[0] += 1; - } - - for (i = 0; i < FLOWER_NUM; i++) { - flower_use[i] = FALSE; - } - - while (flower_count > 0) { - int idx = RANDOM(FLOWER_NUM); - - if (flower_use[idx] == FALSE) { - goods_list[count[0]] = ITM_WHITE_PANSY_BAG + idx; - flower_use[idx] = TRUE; - flower_count--; - count[0] += 1; + if (mSP_CheckHallowinDay()) { + Save_Get(shop).flowers_candy_grab_bag_count = flower_count; + flower_count = sapling_count; + sapling_count = 0; + } + + if (shop_level >= mSP_SHOP_TYPE_SUPER && sapling_count > 0) { + goods_list[count[0]] = ITM_CEDAR_SAPLING; + sapling_count--; + count[0] += 1; + } + + for (i = 0; i < sapling_count; i++) { + goods_list[count[0]] = ITM_SAPLING; + count[0] += 1; + } + + for (i = 0; i < FLOWER_NUM; i++) { + flower_use[i] = FALSE; + } + + while (flower_count > 0) { + int idx = RANDOM(FLOWER_NUM); + + if (flower_use[idx] == FALSE) { + goods_list[count[0]] = ITM_WHITE_PANSY_BAG + idx; + flower_use[idx] = TRUE; + flower_count--; + count[0] += 1; + } } - } } static void mSP_MakeGoodsList(GAME* game) { - int count = 0; - mActor_name_t* shop_items = Save_Get(shop).items; - Shop_c* shop = Save_GetPointer(shop); - int shop_level = mSP_GetShopLevel(); - u8* goods_count = l_goods_count_table[shop_level]; - u8 tool_count = goods_count[mSP_GOODS_TYPE_TOOL]; - u8 flower_count = goods_count[mSP_GOODS_TYPE_PLANT]; - u8 sapling_count = goods_count[mSP_GOODS_TYPE_SAPLING]; + int count = 0; + mActor_name_t* shop_items = Save_Get(shop).items; + Shop_c* shop = Save_GetPointer(shop); + int shop_level = mSP_GetShopLevel(); + u8* goods_count = l_goods_count_table[shop_level]; + u8 tool_count = goods_count[mSP_GOODS_TYPE_TOOL]; + u8 flower_count = goods_count[mSP_GOODS_TYPE_PLANT]; + u8 sapling_count = goods_count[mSP_GOODS_TYPE_SAPLING]; - if (mSP_CheckFukubikiDay() == FALSE) { - if (mSP_Chk_HukubukuroSail() != FALSE) { - shop->flowers_candy_grab_bag_count = 0; + if (mSP_CheckFukubikiDay() == FALSE) { + if (mSP_Chk_HukubukuroSail() != FALSE) { + shop->flowers_candy_grab_bag_count = 0; + } + + mSP_MakeRandomGoodsList(game, &count, shop_items); + + if (mSP_Chk_HukubukuroSail() != FALSE) { + shop->flowers_candy_grab_bag_count += (s8)tool_count; + shop->flowers_candy_grab_bag_count += (s8)flower_count; + shop->flowers_candy_grab_bag_count += (s8)sapling_count; + + if (shop_level >= mSP_SHOP_TYPE_SUPER) { + shop->flowers_candy_grab_bag_count++; // add signboard & paint + shop->flowers_candy_grab_bag_count++; + } + } else { + mSP_SelectTool(shop_items, &count, tool_count, shop_level & 3); + mSP_SelectPlant(shop_items, &count, flower_count, sapling_count, shop_level & 3); + } } - - mSP_MakeRandomGoodsList(game, &count, shop_items); - - if (mSP_Chk_HukubukuroSail() != FALSE) { - shop->flowers_candy_grab_bag_count += (s8)tool_count; - shop->flowers_candy_grab_bag_count += (s8)flower_count; - shop->flowers_candy_grab_bag_count += (s8)sapling_count; - - if (shop_level >= mSP_SHOP_TYPE_SUPER) { - shop->flowers_candy_grab_bag_count++; // add signboard & paint - shop->flowers_candy_grab_bag_count++; - } - } - else { - mSP_SelectTool(shop_items, &count, tool_count, shop_level & 3); - mSP_SelectPlant(shop_items, &count, flower_count, sapling_count, shop_level & 3); - } - } } static void mSP_MakeLotteryList(GAME* game) { - mActor_name_t* lottery_items = Save_Get(shop).lottery_items; - mActor_name_t unobtained_lottery_item; + mActor_name_t* lottery_items = Save_Get(shop).lottery_items; + mActor_name_t unobtained_lottery_item; - mSP_SelectRandomItem_New( - game, - &unobtained_lottery_item, - 1, - NULL, - 0, - mSP_KIND_FURNITURE, - mSP_LISTTYPE_LOTTERY, - TRUE - ); + mSP_SelectRandomItem_New(game, &unobtained_lottery_item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, + TRUE); - if (unobtained_lottery_item == EMPTY_NO) { - mSP_SelectRandomItem_New( - game, - lottery_items, - mSP_LOTTERY_ITEM_COUNT, - NULL, - 0, - mSP_KIND_FURNITURE, - mSP_LISTTYPE_LOTTERY, - FALSE - ); - } - else { - mSP_SelectRandomItem_New( - game, - lottery_items + 1, - mSP_LOTTERY_ITEM_COUNT - 1, - &unobtained_lottery_item, - 1, - mSP_KIND_FURNITURE, - mSP_LISTTYPE_LOTTERY, - FALSE - ); + if (unobtained_lottery_item == EMPTY_NO) { + mSP_SelectRandomItem_New(game, lottery_items, mSP_LOTTERY_ITEM_COUNT, NULL, 0, mSP_KIND_FURNITURE, + mSP_LISTTYPE_LOTTERY, FALSE); + } else { + mSP_SelectRandomItem_New(game, lottery_items + 1, mSP_LOTTERY_ITEM_COUNT - 1, &unobtained_lottery_item, 1, + mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, FALSE); - lottery_items[0] = unobtained_lottery_item; - } + lottery_items[0] = unobtained_lottery_item; + } } extern int mSP_CheckExchangeDay2() { - Shop_c* shop = Save_GetPointer(shop); - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - int res = lbRTC_IsEqualTime( - &rtc_time, - &shop->exchange_time, - lbRTC_CHECK_DAYS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_YEARS - ); + Shop_c* shop = Save_GetPointer(shop); + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + int res = + lbRTC_IsEqualTime(&rtc_time, &shop->exchange_time, lbRTC_CHECK_DAYS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_YEARS); - return res == lbRTC_EQUAL; + return res == lbRTC_EQUAL; } extern int mSP_CheckExchangeMonth() { - Shop_c* shop = Save_GetPointer(shop); - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - int res = lbRTC_IsEqualTime( - &rtc_time, - &shop->exchange_time, - lbRTC_CHECK_MONTHS | lbRTC_CHECK_YEARS - ); + Shop_c* shop = Save_GetPointer(shop); + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + int res = lbRTC_IsEqualTime(&rtc_time, &shop->exchange_time, lbRTC_CHECK_MONTHS | lbRTC_CHECK_YEARS); - return res == lbRTC_EQUAL; + return res == lbRTC_EQUAL; } extern void mSP_NewExchangeDay() { - Save_Get(shop).exchange_time = Common_Get(time.rtc_time); + Save_Get(shop).exchange_time = Common_Get(time.rtc_time); } /* @unused size: 0x104 */ // ? mSP_SearchRareFurniture(...) extern void mSP_ShopItsumoChirashi(int house_no, int shop_level, mActor_name_t item, int type, int send_proc) { - static int rare_chirashi_bunmen[mSP_SHOP_TYPE_NUM][2] = { - { 18, 18 }, - { 19, 19 }, - { 21, 20 }, - { 23, 22 } - }; + static int rare_chirashi_bunmen[mSP_SHOP_TYPE_NUM][2] = { { 18, 18 }, { 19, 19 }, { 21, 20 }, { 23, 22 } }; - if (Save_Get(homes[house_no]).ownerID.land_id != 0xFFFF) { - int free_mail_idx = mMl_chk_mail_free_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); + if (Save_Get(homes[house_no]).ownerID.land_id != 0xFFFF) { + int free_mail_idx = mMl_chk_mail_free_space(Save_Get(homes[house_no]).mailbox, HOME_MAILBOX_SIZE); - if (mEv_ArbeitPlayer(mHS_get_pl_no(house_no) & 3) != TRUE) { - u8 item_name_str[mIN_ITEM_NAME_LEN]; - Mail_c leaflet; - int header_back_start; + if (mEv_ArbeitPlayer(mHS_get_pl_no(house_no) & 3) != TRUE) { + u8 item_name_str[mIN_ITEM_NAME_LEN]; + Mail_c leaflet; + int header_back_start; - mIN_copy_name_str(item_name_str, item); - mHandbill_Set_free_str(mHandbill_FREE_STR7, item_name_str, mIN_ITEM_NAME_LEN); - mMl_clear_mail(&leaflet); - mHandbill_Load_HandbillFromRom( - leaflet.content.header, - &header_back_start, - leaflet.content.footer, - leaflet.content.body, - rare_chirashi_bunmen[shop_level][type & 1] - ); - leaflet.content.font = mMl_FONT_0; - leaflet.content.header_back_start = header_back_start; - leaflet.content.mail_type = mMl_TYPE_SHOP_SALE_LEAFLET; - leaflet.content.paper_type = ITM_PAPER55; // simple paper + mIN_copy_name_str(item_name_str, item); + mHandbill_Set_free_str(mHandbill_FREE_STR7, item_name_str, mIN_ITEM_NAME_LEN); + mMl_clear_mail(&leaflet); + mHandbill_Load_HandbillFromRom(leaflet.content.header, &header_back_start, leaflet.content.footer, + leaflet.content.body, rare_chirashi_bunmen[shop_level][type & 1]); + leaflet.content.font = mMl_FONT_0; + leaflet.content.header_back_start = header_back_start; + leaflet.content.mail_type = mMl_TYPE_SHOP_SALE_LEAFLET; + leaflet.content.paper_type = ITM_PAPER55; // simple paper - switch (send_proc) { - case mPO_SENDTYPE_MAIL: - { - mPO_receipt_proc(&leaflet, mPO_SENDTYPE_LEAFLET); + switch (send_proc) { + case mPO_SENDTYPE_MAIL: { + mPO_receipt_proc(&leaflet, mPO_SENDTYPE_LEAFLET); - break; + break; + } + + default: { + if (free_mail_idx >= 0) { + mPr_CopyPersonalID(&leaflet.header.recipient.personalID, + &Save_Get(private_data[mHS_get_pl_no(house_no) & 3]).player_ID); + leaflet.header.recipient.type = mMl_NAME_TYPE_PLAYER; + + mMl_copy_mail(Save_Get(homes[house_no]).mailbox + free_mail_idx, &leaflet); + } + + break; + } + } } - - default: - { - if (free_mail_idx >= 0) { - mPr_CopyPersonalID(&leaflet.header.recipient.personalID, &Save_Get(private[mHS_get_pl_no(house_no) & 3]).player_ID); - leaflet.header.recipient.type = mMl_NAME_TYPE_PLAYER; - - mMl_copy_mail(Save_Get(homes[house_no]).mailbox + free_mail_idx, &leaflet); - } - - break; - } - } } - } } extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods_list, int goods_count, GAME* game) { @@ -1284,8 +1136,8 @@ extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods } /* Check if we're on the last day of the month */ - if (Common_Get(time.rtc_time).day == lbRTC_GetDaysByMonth(Common_Get(time.rtc_time).year, - Common_Get(time.rtc_time).month)) { + if (Common_Get(time.rtc_time).day == + lbRTC_GetDaysByMonth(Common_Get(time.rtc_time).year, Common_Get(time.rtc_time).month)) { mCkRh_SavePlayTime(player_no); } else if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == TRUE) { mCkRh_SavePlayTime(player_no); // shop was already 'renewed' today @@ -1297,46 +1149,40 @@ extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods if (bargain_day != 0) { u32 month = mEv_TO_MONTH(bargain_day); u32 day = mEv_TO_DAY(bargain_day); - if (Common_Get(time.rtc_time).month == month && - Common_Get(time.rtc_time).day == day) { + if (Common_Get(time.rtc_time).month == month && Common_Get(time.rtc_time).day == day) { mCkRh_SavePlayTime(player_no); // shop 'bargin' event is active return; } } - + goki_time = Save_Get(homes[arrange_idx]).goki.time; lbRTC_Add_DD(&goki_time, 1); home = Save_GetPointer(homes[arrange_idx]); /* check if the current date & time is past the renew time */ - if (home->goki.time.year == rtc_time->year && - home->goki.time.month == rtc_time->month && - home->goki.time.day == rtc_time->day) return; - - if (goki_time.year == rtc_time->year && - goki_time.month == rtc_time->month && - goki_time.day == rtc_time->day && - goki_time.hour < mTM_FIELD_RENEW_HOUR) return; - - if (rtc_time->hour < mTM_FIELD_RENEW_HOUR || - rtc_time->hour > mSP_GetShopCloseTime()) return; + if (home->goki.time.year == rtc_time->year && home->goki.time.month == rtc_time->month && + home->goki.time.day == rtc_time->day) + return; - if (mSP_SearchItemCategoryPriority(Save_Get(shop).rare_item, - mSP_KIND_FURNITURE, - mSP_LISTTYPE_RARE, game)) { + if (goki_time.year == rtc_time->year && goki_time.month == rtc_time->month && goki_time.day == rtc_time->day && + goki_time.hour < mTM_FIELD_RENEW_HOUR) + return; + + if (rtc_time->hour < mTM_FIELD_RENEW_HOUR || rtc_time->hour > mSP_GetShopCloseTime()) + return; + + if (mSP_SearchItemCategoryPriority(Save_Get(shop).rare_item, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, game)) { rare_item = Save_Get(shop).rare_item; is_rare_item = TRUE; } else { int i; - + /* spotlight item in shop wasn't the rare item, so check all * the goods for one */ for (i = 0; i < goods_count; i++) { - if (mSP_ItemNo2GoodsListCategory(goods_list[i]) == - mSP_KIND_FURNITURE) { - is_rare_item = mSP_SearchItemCategoryPriority( - goods_list[i], mSP_KIND_FURNITURE, - mSP_LISTTYPE_RARE, game); + if (mSP_ItemNo2GoodsListCategory(goods_list[i]) == mSP_KIND_FURNITURE) { + is_rare_item = + mSP_SearchItemCategoryPriority(goods_list[i], mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, game); if (is_rare_item != FALSE) { rare_item = goods_list[i]; @@ -1353,9 +1199,7 @@ extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods int arrange_idx = mHS_get_arrange_idx(p); if (mHS_get_pl_no_detail(arrange_idx) != -1) { - mSP_ShopItsumoChirashi(arrange_idx, shop_level, - rare_item, is_rare_item, - mPO_SENDTYPE_LEAFLET); + mSP_ShopItsumoChirashi(arrange_idx, shop_level, rare_item, is_rare_item, mPO_SENDTYPE_LEAFLET); mCkRh_SavePlayTime(player_no); } } @@ -1363,1399 +1207,1273 @@ extern void mSP_SetShopRareFurnitureChirashi(int player_no, mActor_name_t* goods } extern void mSP_SetRenewalChiraswhi_AppoDay() { - static int chirashi_idx_appoday[mSP_SHOP_TYPE_NUM] = { 0x1B, 0x1B, 0x1C, 0x1D }; - Mail_c leaflet; - Mail_ct_c* content = &leaflet.content; - int header_back_start; + static int chirashi_idx_appoday[mSP_SHOP_TYPE_NUM] = { 0x1B, 0x1B, 0x1C, 0x1D }; + Mail_c leaflet; + Mail_ct_c* content = &leaflet.content; + int header_back_start; - if (Save_Get(shop).shop_info.upgrading_today && mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE) { - int shop_level = mSP_GetRealShopLevel(); - int i; + if (Save_Get(shop).shop_info.upgrading_today && mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE) { + int shop_level = mSP_GetRealShopLevel(); + int i; - for (i = 0; i < mHS_HOUSE_NUM; i++) { - int player_no = mHS_get_pl_no(i) & 3; - int free_mail_idx = mMl_chk_mail_free_space(Save_Get(homes[i]).mailbox, HOME_MAILBOX_SIZE); + for (i = 0; i < mHS_HOUSE_NUM; i++) { + int player_no = mHS_get_pl_no(i) & 3; + int free_mail_idx = mMl_chk_mail_free_space(Save_Get(homes[i]).mailbox, HOME_MAILBOX_SIZE); - if (free_mail_idx >= 0 && Save_Get(homes[i]).ownerID.land_id != 0xFFFF && mEv_ArbeitPlayer(player_no) == FALSE) { + if (free_mail_idx >= 0 && Save_Get(homes[i]).ownerID.land_id != 0xFFFF && + mEv_ArbeitPlayer(player_no) == FALSE) { - mMl_clear_mail(&leaflet); - mHandbill_Load_HandbillFromRom( - content->header, - &header_back_start, - content->footer, - content->body, - chirashi_idx_appoday[shop_level] - ); - leaflet.content.font = mMl_FONT_0; - leaflet.content.header_back_start = header_back_start; - leaflet.content.mail_type = mMl_TYPE_SHOP_SALE_LEAFLET; - leaflet.content.paper_type = ITM_PAPER55; // simple paper + mMl_clear_mail(&leaflet); + mHandbill_Load_HandbillFromRom(content->header, &header_back_start, content->footer, content->body, + chirashi_idx_appoday[shop_level]); + leaflet.content.font = mMl_FONT_0; + leaflet.content.header_back_start = header_back_start; + leaflet.content.mail_type = mMl_TYPE_SHOP_SALE_LEAFLET; + leaflet.content.paper_type = ITM_PAPER55; // simple paper - mPr_CopyPersonalID(&leaflet.header.recipient.personalID, &Save_Get(private[mHS_get_pl_no(i) & 3]).player_ID); - leaflet.header.recipient.type = mMl_NAME_TYPE_PLAYER; + mPr_CopyPersonalID(&leaflet.header.recipient.personalID, + &Save_Get(private_data[mHS_get_pl_no(i) & 3]).player_ID); + leaflet.header.recipient.type = mMl_NAME_TYPE_PLAYER; - mMl_copy_mail(Save_Get(homes[i]).mailbox + free_mail_idx, &leaflet); - } + mMl_copy_mail(Save_Get(homes[i]).mailbox + free_mail_idx, &leaflet); + } + } + + Save_Get(shop).shop_info.upgrading_today = FALSE; } - - Save_Get(shop).shop_info.upgrading_today = FALSE; - } } extern void mSP_ExchangeLineUp_InGame(GAME* game) { - if (mSP_CheckExchangeDay2()) { - if (mSP_CheckExchangeMonth()) { - mSP_LotteryLineUp_GameAlloc(game); - } + if (mSP_CheckExchangeDay2()) { + if (mSP_CheckExchangeMonth()) { + mSP_LotteryLineUp_GameAlloc(game); + } - mSP_NewExchangeDay(); - mSP_ExchangeLineUp_GameAlloc(game); - Save_Get(shop).shop_info.not_loaded_before = TRUE; - mSP_SetShopRareFurnitureChirashi(Common_Get(player_no), Save_Get(shop).items, mSP_GOODS_COUNT, game); - } + mSP_NewExchangeDay(); + mSP_ExchangeLineUp_GameAlloc(game); + Save_Get(shop).shop_info.not_loaded_before = TRUE; + mSP_SetShopRareFurnitureChirashi(Common_Get(player_no), Save_Get(shop).items, mSP_GOODS_COUNT, game); + } } extern void mSP_PlusSales(u32 sum) { - Save_Get(shop).sales_sum += sum; + Save_Get(shop).sales_sum += sum; - if (mSP_GetShopLevel() == mSP_SHOP_TYPE_ZAKKA) { - if (Save_Get(shop).sales_sum > mSP_COMBINI_SUM) { - Save_Get(shop).sales_sum = mSP_COMBINI_SUM; + if (mSP_GetShopLevel() == mSP_SHOP_TYPE_ZAKKA) { + if (Save_Get(shop).sales_sum > mSP_COMBINI_SUM) { + Save_Get(shop).sales_sum = mSP_COMBINI_SUM; + } + } else if (mSP_GetShopLevel() == mSP_SHOP_TYPE_COMBINI) { + if (Save_Get(shop).sales_sum > mSP_SUPER_SUM) { + Save_Get(shop).sales_sum = mSP_SUPER_SUM; + } + } else if (mSP_GetShopLevel() == mSP_SHOP_TYPE_SUPER) { + if (Save_Get(shop).sales_sum > mSP_DSUPER_SUM) { + Save_Get(shop).sales_sum = mSP_DSUPER_SUM; + } } - } - else if (mSP_GetShopLevel() == mSP_SHOP_TYPE_COMBINI) { - if (Save_Get(shop).sales_sum > mSP_SUPER_SUM) { - Save_Get(shop).sales_sum = mSP_SUPER_SUM; - } - } - else if (mSP_GetShopLevel() == mSP_SHOP_TYPE_SUPER) { - if (Save_Get(shop).sales_sum > mSP_DSUPER_SUM) { - Save_Get(shop).sales_sum = mSP_DSUPER_SUM; - } - } } /* @unused size: 0x74 */ // extern int mSP_GetVisitorCount() extern int mSP_SetNewVisitor() { - if (mLd_PlayerManKindCheck()) { - Save_Get(shop).visitor_flag = TRUE; - return TRUE; - } + if (mLd_PlayerManKindCheck()) { + Save_Get(shop).visitor_flag = TRUE; + return TRUE; + } - return FALSE; + return FALSE; } extern u32 mSP_GetSalesSum() { - return Save_Get(shop).sales_sum; + return Save_Get(shop).sales_sum; } extern int mSP_GetShopLevel() { - return Save_Get(shop).shop_info.shop_level; + return Save_Get(shop).shop_info.shop_level; } extern int mSP_RenewShopLevel() { - if (Save_Get(shop).shop_info.shop_level != (u8)mSP_GetRealShopLevel()) { - Save_Get(shop).shop_info.shop_level = mSP_GetRealShopLevel(); - return TRUE; - } + if (Save_Get(shop).shop_info.shop_level != (u8)mSP_GetRealShopLevel()) { + Save_Get(shop).shop_info.shop_level = mSP_GetRealShopLevel(); + return TRUE; + } - return FALSE; + return FALSE; } extern int mSP_GetRealShopLevel() { - u32 sales_sum = mSP_GetSalesSum(); - - if (sales_sum >= mSP_DSUPER_SUM && Save_Get(shop).visitor_flag != FALSE) { - return mSP_SHOP_TYPE_DSUPER; - } - else if (sales_sum >= mSP_SUPER_SUM) { - return mSP_SHOP_TYPE_SUPER; - } + u32 sales_sum = mSP_GetSalesSum(); - return sales_sum >= mSP_COMBINI_SUM ? mSP_SHOP_TYPE_COMBINI : mSP_SHOP_TYPE_ZAKKA; + if (sales_sum >= mSP_DSUPER_SUM && Save_Get(shop).visitor_flag != FALSE) { + return mSP_SHOP_TYPE_DSUPER; + } else if (sales_sum >= mSP_SUPER_SUM) { + return mSP_SHOP_TYPE_SUPER; + } + + return sales_sum >= mSP_COMBINI_SUM ? mSP_SHOP_TYPE_COMBINI : mSP_SHOP_TYPE_ZAKKA; } extern int mSP_GetGoodsPercent(int priority) { - int goods_power = mPr_GetGoodsPower(); + int goods_power = mPr_GetGoodsPower(); - if (priority >= 0 && priority <= mSP_PRIORITY_RARE) { - int rare; - int uncommon; + if (priority >= 0 && priority <= mSP_PRIORITY_RARE) { + int rare; + int uncommon; - if (goods_power < 0) { - uncommon = goods_power + 35 + 5; - rare = 5; - } - else { - rare = goods_power + 5; - uncommon = rare + 35; - } + if (goods_power < 0) { + uncommon = goods_power + 35 + 5; + rare = 5; + } else { + rare = goods_power + 5; + uncommon = rare + 35; + } - switch (priority) { - case mSP_PRIORITY_COMMON: - return 100 - uncommon; - case mSP_PRIORITY_UNCOMMON: - return uncommon - rare; - case mSP_PRIORITY_RARE: - return rare; - default: + switch (priority) { + case mSP_PRIORITY_COMMON: + return 100 - uncommon; + case mSP_PRIORITY_UNCOMMON: + return uncommon - rare; + case mSP_PRIORITY_RARE: + return rare; + default: + return 0; + } + } else { return 0; } - } - else { - return 0; - } } extern void mSP_PrintNowShopSalesSum(gfxprint_t* gfxprint) { - if (mFI_CheckFieldData()) { - int shop_level = mSP_GetShopLevel(); - int status = mSP_ShopOpen(); - u32 sales_sum = mSP_GetSalesSum(); - u32 working_sum; + if (mFI_CheckFieldData()) { + int shop_level = mSP_GetShopLevel(); + int status = mSP_ShopOpen(); + u32 sales_sum = mSP_GetSalesSum(); + u32 working_sum; - switch (shop_level) { - case mSP_SHOP_TYPE_ZAKKA: - working_sum = sales_sum; - break; - case mSP_SHOP_TYPE_COMBINI: - working_sum = sales_sum - mSP_COMBINI_SUM; - break; - case mSP_SHOP_TYPE_SUPER: - working_sum = sales_sum - mSP_SUPER_SUM; - break; - default: - working_sum = sales_sum - mSP_DSUPER_SUM; - break; + switch (shop_level) { + case mSP_SHOP_TYPE_ZAKKA: + working_sum = sales_sum; + break; + case mSP_SHOP_TYPE_COMBINI: + working_sum = sales_sum - mSP_COMBINI_SUM; + break; + case mSP_SHOP_TYPE_SUPER: + working_sum = sales_sum - mSP_SUPER_SUM; + break; + default: + working_sum = sales_sum - mSP_DSUPER_SUM; + break; + } + + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_locate8x8(gfxprint, 3, 12); + + if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE) { + gfxprint_printf(gfxprint, "%d %d %s", shop_level, working_sum, mSP_ShopStatus2String(status)); + + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_printf(gfxprint, "A%2d,%2d,%2d,%2d,%2d", + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].a)); + } else { + gfxprint_color(gfxprint, 200, 100, 100, 255); + gfxprint_printf(gfxprint, "%d %d %s->%d.%d.%d", shop_level, working_sum, mSP_ShopStatus2String(status), + Save_Get(shop).renewal_time.year, Save_Get(shop).renewal_time.month, + Save_Get(shop).renewal_time.day); + + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_printf(gfxprint, " A%2d,%2d,%2d,%2d,%2d", + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].a), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].a)); + } + + gfxprint_color(gfxprint, 200, 200, 250, 255); + gfxprint_locate8x8(gfxprint, 3, 13); + gfxprint_printf(gfxprint, "B%2d,%2d,%2d,%2d,%2d", + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].b), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].b), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].b), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].b), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].b)); + gfxprint_printf(gfxprint, "C%2d,%2d,%2d,%2d,%2d", + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].c), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].c), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].c), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].c), + mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].c)); } - - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_locate8x8(gfxprint, 3, 12); - - if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == FALSE) { - gfxprint_printf(gfxprint, "%d %d %s", shop_level, working_sum, mSP_ShopStatus2String(status)); - - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_printf( - gfxprint, - "A%2d,%2d,%2d,%2d,%2d", - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].a) - ); - } - else { - gfxprint_color(gfxprint, 200, 100, 100, 255); - gfxprint_printf( - gfxprint, - "%d %d %s->%d.%d.%d", - shop_level, - working_sum, - mSP_ShopStatus2String(status), - Save_Get(shop).renewal_time.year, - Save_Get(shop).renewal_time.month, - Save_Get(shop).renewal_time.day - ); - - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_printf( - gfxprint, - " A%2d,%2d,%2d,%2d,%2d", - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].a), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].a) - ); - } - - gfxprint_color(gfxprint, 200, 200, 250, 255); - gfxprint_locate8x8(gfxprint, 3, 13); - gfxprint_printf( - gfxprint, - "B%2d,%2d,%2d,%2d,%2d", - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].b), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].b), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].b), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].b), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].b) - ); - gfxprint_printf( - gfxprint, - "C%2d,%2d,%2d,%2d,%2d", - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_FURNITURE].c), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_WALLPAPER].c), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CARPET].c), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_CLOTH].c), - mSP_GetGoodsPercent(Save_Get(shop).priority_lists[mSP_KIND_PAPER].c) - ); - } } extern void mSP_GetGoodsPriority(u8* abc_priorities, int category) { - mSP_goods_priority_list_c* priorities = Save_Get(shop).priority_lists; + mSP_goods_priority_list_c* priorities = Save_Get(shop).priority_lists; - if (category == mSP_KIND_DIARY) { - category = mSP_KIND_FURNITURE; - } + if (category == mSP_KIND_DIARY) { + category = mSP_KIND_FURNITURE; + } - abc_priorities[0] = priorities[category].a; - abc_priorities[1] = priorities[category].b; - abc_priorities[2] = priorities[category].c; + abc_priorities[0] = priorities[category].a; + abc_priorities[1] = priorities[category].b; + abc_priorities[2] = priorities[category].c; } static void mSP_SetExchangeDay() { - Save_Get(shop).exchange_time = Common_Get(time.rtc_time); + Save_Get(shop).exchange_time = Common_Get(time.rtc_time); } static void mSP_InitGoods() { - Shop_c* shop = Save_GetPointer(shop); - mActor_name_t* items = shop->items; - int i; + Shop_c* shop = Save_GetPointer(shop); + mActor_name_t* items = shop->items; + int i; - for (i = 0; i < mSP_GOODS_COUNT; i++) { - *items++ = EMPTY_NO; - } + for (i = 0; i < mSP_GOODS_COUNT; i++) { + *items++ = EMPTY_NO; + } } extern void mSP_ExchangeLineUp_ZeldaMalloc() { - mSP_InitGoods(); - mSP_MakeGoodsList(NULL); - mSP_SetExchangeDay(); + mSP_InitGoods(); + mSP_MakeGoodsList(NULL); + mSP_SetExchangeDay(); } extern void mSP_LotteryLineUp_ZeldaMalloc() { - mSP_MakeLotteryList(NULL); + mSP_MakeLotteryList(NULL); } extern void mSP_ExchangeLineUp_GameAlloc(GAME* game) { - mSP_InitGoods(); - mSP_MakeGoodsList(game); - mSP_SetExchangeDay(); + mSP_InitGoods(); + mSP_MakeGoodsList(game); + mSP_SetExchangeDay(); } extern void mSP_LotteryLineUp_GameAlloc(GAME* game) { - mSP_MakeLotteryList(game); + mSP_MakeLotteryList(game); } extern void mSP_InitShopSaveData() { - Shop_c* shop = Save_GetPointer(shop); - PersonalID_c* pid = shop->unused_ids; - mActor_name_t* lottery_items = shop->lottery_items; - int i = 0; + Shop_c* shop = Save_GetPointer(shop); + PersonalID_c* pid = shop->unused_ids; + mActor_name_t* lottery_items = shop->lottery_items; + int i = 0; - while (i < mSP_PERSONAL_ID_COUNT) { - mPr_ClearPersonalID(pid); - pid++; - i++; - } + while (i < mSP_PERSONAL_ID_COUNT) { + mPr_ClearPersonalID(pid); + pid++; + i++; + } - mSP_InitGoods(); - Save_Get(shop).rare_item = EMPTY_NO; + mSP_InitGoods(); + Save_Get(shop).rare_item = EMPTY_NO; - for (i = 0; i < mSP_LOTTERY_ITEM_COUNT; i++) { - lottery_items[0] = EMPTY_NO; - lottery_items++; - } + for (i = 0; i < mSP_LOTTERY_ITEM_COUNT; i++) { + lottery_items[0] = EMPTY_NO; + lottery_items++; + } - Save_Get(shop).flowers_candy_grab_bag_count = 0; - shop->sales_sum = 0; - shop->exchange_time = Common_Get(time.rtc_time); - shop->exchange_time.month--; - shop->shop_info.shop_level = mSP_SHOP_TYPE_ZAKKA; - shop->renewal_time = shop->exchange_time; - shop->shop_info.upgrading_today = FALSE; - Save_Get(shop).visitor_flag = FALSE; + Save_Get(shop).flowers_candy_grab_bag_count = 0; + shop->sales_sum = 0; + shop->exchange_time = Common_Get(time.rtc_time); + shop->exchange_time.month--; + shop->shop_info.shop_level = mSP_SHOP_TYPE_ZAKKA; + shop->renewal_time = shop->exchange_time; + shop->shop_info.upgrading_today = FALSE; + Save_Get(shop).visitor_flag = FALSE; } static void mSP_DecideUniqueCommonList(mSP_goods_priority_list_c* priority_list) { - static mSP_goods_priority_list_c priority_candidate[6] = { - { mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, 0 }, - { mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, 0 }, - { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, 0 }, - { mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, 0 }, - { mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, 0 }, - { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, 0 } - }; + static mSP_goods_priority_list_c priority_candidate[6] = { + { mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, 0 }, + { mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, 0 }, + { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, 0 }, + { mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, 0 }, + { mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, 0 }, + { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, 0 } + }; - priority_list[0] = priority_candidate[RANDOM(6)]; + priority_list[0] = priority_candidate[RANDOM(6)]; } static void mSP_DecideGoodsCommonList() { - mSP_goods_priority_list_c* priority_lists = Save_Get(shop).priority_lists; + mSP_goods_priority_list_c* priority_lists = Save_Get(shop).priority_lists; - mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_FURNITURE]); - mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_PAPER]); - mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_CLOTH]); - mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_CARPET]); - mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_WALLPAPER]); + mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_FURNITURE]); + mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_PAPER]); + mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_CLOTH]); + mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_CARPET]); + mSP_DecideUniqueCommonList(&priority_lists[mSP_KIND_WALLPAPER]); } extern void mSP_ShopGameStartCt(GAME* game) { - mSP_DecideGoodsCommonList(); - mSP_InitShopSaveData(); - mSP_ExchangeLineUp_InGame(game); + mSP_DecideGoodsCommonList(); + mSP_InitShopSaveData(); + mSP_ExchangeLineUp_InGame(game); } extern mActor_name_t mSP_GetNowShopBgNum() { - switch (Save_Get(scene_no)) { - case SCENE_SHOP0: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFA; - } + switch (Save_Get(scene_no)) { + case SCENE_SHOP0: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0xFA; + } - return 0xF8; + return 0xF8; + } + + case SCENE_CONVENI: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0xFB; + } + + return 0xFE; + } + + case SCENE_SUPER: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0xFC; + } + + return 0x102; + } + + case SCENE_DEPART: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0xFD; + } + + return 0x100; + } + + case SCENE_DEPART_2: + return 0x101; + + default: + return 0xFE; } - - case SCENE_CONVENI: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFB; - } - - return 0xFE; - } - - case SCENE_SUPER: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFC; - } - - return 0x102; - } - - case SCENE_DEPART: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0xFD; - } - - return 0x100; - } - - case SCENE_DEPART_2: - return 0x101; - - default: - return 0xFE; - } } static int mSP_what_special_sale; extern int mSP_WhatSpecialSale() { - return mSP_what_special_sale; + return mSP_what_special_sale; } extern mActor_name_t mSP_GetNowShopFgNum() { - int event_kind = Save_Get(event_save_data).special.event.bargin.kind; - - switch (Save_Get(scene_no)) { - case SCENE_SHOP0: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - if (event_kind == mSP_KIND_FURNITURE) { - mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x163; + int event_kind = Save_Get(event_save_data).special.event.bargin.kind; + + switch (Save_Get(scene_no)) { + case SCENE_SHOP0: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + if (event_kind == mSP_KIND_FURNITURE) { + mSP_what_special_sale = mSP_KIND_FURNITURE; + return 0x163; + } + + if (event_kind == mSP_KIND_CLOTH) { + mSP_what_special_sale = mSP_KIND_CLOTH; + return 0x166; + } + + if (event_kind == mSP_KIND_WALLPAPER) { + mSP_what_special_sale = mSP_KIND_WALLPAPER; + return 0x165; + } + + mSP_what_special_sale = mSP_KIND_CARPET; + return 0x164; + } + + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0x14D; + } + + return 0x22; } - if (event_kind == mSP_KIND_CLOTH) { - mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x166; + case SCENE_CONVENI: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { + mSP_what_special_sale = mSP_KIND_FURNITURE; + return 0x167; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { + mSP_what_special_sale = mSP_KIND_CLOTH; + return 0x16A; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { + mSP_what_special_sale = mSP_KIND_WALLPAPER; + return 0x169; + } + + mSP_what_special_sale = mSP_KIND_CARPET; + return 0x168; + } + + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0x14E; + } + + return 0x23; } - if (event_kind == mSP_KIND_WALLPAPER) { - mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x165; + case SCENE_SUPER: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { + mSP_what_special_sale = mSP_KIND_FURNITURE; + return 0x16B; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { + mSP_what_special_sale = mSP_KIND_CLOTH; + return 0x16E; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { + mSP_what_special_sale = mSP_KIND_WALLPAPER; + return 0x16D; + } + + mSP_what_special_sale = mSP_KIND_CARPET; + return 0x16C; + } + + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0x14F; + } + + return 0x24; } - mSP_what_special_sale = mSP_KIND_CARPET; - return 0x164; - } + case SCENE_DEPART: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + return 0x16F; + } - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x14D; - } + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { + return 0x150; + } - return 0x22; + return 0x25; + } + + case SCENE_DEPART_2: { + if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { + mSP_what_special_sale = mSP_KIND_FURNITURE; + return 0x170; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { + mSP_what_special_sale = mSP_KIND_CLOTH; + return 0x173; + } + + if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { + mSP_what_special_sale = mSP_KIND_WALLPAPER; + return 0x172; + } + + mSP_what_special_sale = mSP_KIND_CARPET; + return 0x171; + } + + return 0x26; + } + + default: + return 0x25; } - - case SCENE_CONVENI: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { - mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x167; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { - mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x16A; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { - mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x169; - } - - mSP_what_special_sale = mSP_KIND_CARPET; - return 0x168; - } - - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x14E; - } - - return 0x23; - } - - case SCENE_SUPER: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { - mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x16B; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { - mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x16E; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { - mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x16D; - } - - mSP_what_special_sale = mSP_KIND_CARPET; - return 0x16C; - } - - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x14F; - } - - return 0x24; - } - - case SCENE_DEPART: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - return 0x16F; - } - - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_FUKUBIKI) { - return 0x150; - } - - return 0x25; - } - - case SCENE_DEPART_2: - { - if (Common_Get(tanuki_shop_status) == mSP_TANUKI_SHOP_STATUS_EVENT) { - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_FURNITURE) { - mSP_what_special_sale = mSP_KIND_FURNITURE; - return 0x170; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_CLOTH) { - mSP_what_special_sale = mSP_KIND_CLOTH; - return 0x173; - } - - if (Save_Get(event_save_data).special.event.bargin.kind == mSP_KIND_WALLPAPER) { - mSP_what_special_sale = mSP_KIND_WALLPAPER; - return 0x172; - } - - mSP_what_special_sale = mSP_KIND_CARPET; - return 0x171; - } - - return 0x26; - } - - default: - return 0x25; - } } extern lbRTC_hour_t mSP_GetShopOpenTime() { - static lbRTC_hour_t shop_open_time_table[mSP_SHOP_TYPE_NUM] = { - 9, - 7, - 9, - 9 - }; + static lbRTC_hour_t shop_open_time_table[mSP_SHOP_TYPE_NUM] = { 9, 7, 9, 9 }; - int shop_level = mSP_GetShopLevel(); + int shop_level = mSP_GetShopLevel(); - if (Common_Get(time.rtc_time).day == lbRTC_GetDaysByMonth(Common_Get(time.rtc_time).year, Common_Get(time.rtc_time).month)) { - return 10; // lottery starts at 10AM - } - else { - return shop_open_time_table[shop_level]; - } + if (Common_Get(time.rtc_time).day == + lbRTC_GetDaysByMonth(Common_Get(time.rtc_time).year, Common_Get(time.rtc_time).month)) { + return 10; // lottery starts at 10AM + } else { + return shop_open_time_table[shop_level]; + } } extern lbRTC_hour_t mSP_GetShopCloseTime() { - static lbRTC_hour_t shop_close_time_table[mSP_SHOP_TYPE_NUM] = { - 22, - 23, - 22, - 22 - }; + static lbRTC_hour_t shop_close_time_table[mSP_SHOP_TYPE_NUM] = { 22, 23, 22, 22 }; - return shop_close_time_table[mSP_GetShopLevel()]; + return shop_close_time_table[mSP_GetShopLevel()]; } extern lbRTC_hour_t mSP_GetShopCloseTime_Bgm() { - static lbRTC_hour_t shop_close_time_table[mSP_SHOP_TYPE_NUM] = { - 22, - 23, - 22, - 22 - }; + static lbRTC_hour_t shop_close_time_table[mSP_SHOP_TYPE_NUM] = { 22, 23, 22, 22 }; - return shop_close_time_table[mSP_GetShopLevel()]; + return shop_close_time_table[mSP_GetShopLevel()]; } extern int mSP_InRenewal() { - if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == TRUE) { - lbRTC_time_c renew_time = Save_Get(shop).renewal_time; - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + if (mEv_CheckEvent(mEv_SAVED_RENEWSHOP) == TRUE) { + lbRTC_time_c renew_time = Save_Get(shop).renewal_time; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - lbRTC_Sub_DD(&renew_time, 1); + lbRTC_Sub_DD(&renew_time, 1); - if ( - lbRTC_IsOverTime(&renew_time, rtc_time) == lbRTC_OVER || - lbRTC_IsEqualTime(rtc_time, &renew_time, lbRTC_CHECK_YEARS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_DAYS) != FALSE - ) { - return TRUE; + if (lbRTC_IsOverTime(&renew_time, rtc_time) == lbRTC_OVER || + lbRTC_IsEqualTime(rtc_time, &renew_time, lbRTC_CHECK_YEARS | lbRTC_CHECK_MONTHS | lbRTC_CHECK_DAYS) != + FALSE) { + return TRUE; + } } - } - return FALSE; + return FALSE; } /* @unused size: 0xF0 */ // int mSP_CheckSpecialSalesSoldOut(...) extern int mSP_ShopOpen() { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_hour_t now_hour; + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_hour_t now_hour; - if (mEv_CheckFirstJob()) { - return mSP_SHOP_STATUS_OPEN; // shop is forcefully open during chores - } - - if (mEv_CheckEvent(mEv_SPNPC_SHOP) == TRUE) { - lbRTC_time_c bargin_time = Save_Get(event_save_data).special.event.bargin.start_time; - - if (bargin_time.day == rtc_time.day) { - lbRTC_time_c end_time = Save_Get(event_save_data).special.event.bargin.end_time; - lbRTC_time_c start_time_pre = bargin_time; - lbRTC_time_c end_time_post = end_time; - now_hour = rtc_time.hour; - - lbRTC_Sub_hh(&start_time_pre, 1); - lbRTC_Add_hh(&end_time_post, 1); - - if (now_hour >= mTM_FIELD_RENEW_HOUR && now_hour < mSP_GetShopOpenTime()) { - return mSP_SHOP_STATUS_PRE; - } - - if (now_hour < mTM_FIELD_RENEW_HOUR || now_hour >= mSP_GetShopCloseTime()) { - return mSP_SHOP_STATUS_END; - } - - if (lbRTC_IsOverTime(&start_time_pre, &rtc_time) == lbRTC_LESS) { - return mSP_SHOP_STATUS_OPEN; - } - - if (lbRTC_IsOverTime(&bargin_time, &rtc_time) == lbRTC_LESS) { - return mSP_SHOP_STATUS_PREEVENT; - } - - if (lbRTC_IsOverTime(&end_time, &rtc_time) == lbRTC_LESS) { - return mSP_SHOP_STATUS_OPENEVENT; - } - - if (lbRTC_IsOverTime(&end_time_post, &rtc_time) == lbRTC_LESS) { - return mSP_SHOP_STATUS_ENDEVENT; - } - - return mSP_SHOP_STATUS_OPEN; + if (mEv_CheckFirstJob()) { + return mSP_SHOP_STATUS_OPEN; // shop is forcefully open during chores } - } - now_hour = rtc_time.hour; + if (mEv_CheckEvent(mEv_SPNPC_SHOP) == TRUE) { + lbRTC_time_c bargin_time = Save_Get(event_save_data).special.event.bargin.start_time; - if (mSP_InRenewal() != FALSE) { - return mSP_SHOP_STATUS_RENEW; - } + if (bargin_time.day == rtc_time.day) { + lbRTC_time_c end_time = Save_Get(event_save_data).special.event.bargin.end_time; + lbRTC_time_c start_time_pre = bargin_time; + lbRTC_time_c end_time_post = end_time; + now_hour = rtc_time.hour; - if (now_hour >= mSP_GetShopOpenTime() && now_hour < mSP_GetShopCloseTime()) { - return mSP_SHOP_STATUS_OPEN; - } + lbRTC_Sub_hh(&start_time_pre, 1); + lbRTC_Add_hh(&end_time_post, 1); - if (now_hour >= mTM_FIELD_RENEW_HOUR && now_hour < mSP_GetShopOpenTime()) { - return mSP_SHOP_STATUS_PRE; - } + if (now_hour >= mTM_FIELD_RENEW_HOUR && now_hour < mSP_GetShopOpenTime()) { + return mSP_SHOP_STATUS_PRE; + } - return mSP_SHOP_STATUS_END; + if (now_hour < mTM_FIELD_RENEW_HOUR || now_hour >= mSP_GetShopCloseTime()) { + return mSP_SHOP_STATUS_END; + } + + if (lbRTC_IsOverTime(&start_time_pre, &rtc_time) == lbRTC_LESS) { + return mSP_SHOP_STATUS_OPEN; + } + + if (lbRTC_IsOverTime(&bargin_time, &rtc_time) == lbRTC_LESS) { + return mSP_SHOP_STATUS_PREEVENT; + } + + if (lbRTC_IsOverTime(&end_time, &rtc_time) == lbRTC_LESS) { + return mSP_SHOP_STATUS_OPENEVENT; + } + + if (lbRTC_IsOverTime(&end_time_post, &rtc_time) == lbRTC_LESS) { + return mSP_SHOP_STATUS_ENDEVENT; + } + + return mSP_SHOP_STATUS_OPEN; + } + } + + now_hour = rtc_time.hour; + + if (mSP_InRenewal() != FALSE) { + return mSP_SHOP_STATUS_RENEW; + } + + if (now_hour >= mSP_GetShopOpenTime() && now_hour < mSP_GetShopCloseTime()) { + return mSP_SHOP_STATUS_OPEN; + } + + if (now_hour >= mTM_FIELD_RENEW_HOUR && now_hour < mSP_GetShopOpenTime()) { + return mSP_SHOP_STATUS_PRE; + } + + return mSP_SHOP_STATUS_END; } extern void mSP_RandomHaniwaSelect(mActor_name_t* haniwa_list, int count) { - int i; + int i; - for (i = 0; i < count; i++) { - haniwa_list[i] = EMPTY_NO; - } - - for (i = 0; i < count; i++) { - int set = FALSE; - - while (!set) { - mActor_name_t haniwa = HANIWA_START + (mActor_name_t)FTR_NO_2_IDX(RANDOM(HANIWA_NUM)); - - if (mSP_GoodsExistAlready(haniwa_list, count, haniwa) == FALSE) { - haniwa_list[i] = haniwa; - set = TRUE; - } - else if (count > HANIWA_NUM) { - haniwa_list[i] = haniwa; - set = TRUE; - } + for (i = 0; i < count; i++) { + haniwa_list[i] = EMPTY_NO; + } + + for (i = 0; i < count; i++) { + int set = FALSE; + + while (!set) { + mActor_name_t haniwa = HANIWA_START + (mActor_name_t)FTR_NO_2_IDX(RANDOM(HANIWA_NUM)); + + if (mSP_GoodsExistAlready(haniwa_list, count, haniwa) == FALSE) { + haniwa_list[i] = haniwa; + set = TRUE; + } else if (count > HANIWA_NUM) { + haniwa_list[i] = haniwa; + set = TRUE; + } + } } - } } extern void mSP_RandomMDSelect(mActor_name_t* md_list, int count) { - int i; + int i; - for (i = 0; i < count; i++) { - md_list[i] = EMPTY_NO; - } - - for (i = 0; i < count; i++) { - int set = FALSE; - - while (!set) { - mActor_name_t md = ITM_MINIDISK_START + RANDOM(NOT_SECRET_MD_NUM); - - if (mSP_GoodsExistAlready(md_list, count, md) == FALSE) { - md_list[i] = md; - set = TRUE; - } - else if (count > NOT_SECRET_MD_NUM) { - md_list[i] = md; - set = TRUE; - } + for (i = 0; i < count; i++) { + md_list[i] = EMPTY_NO; + } + + for (i = 0; i < count; i++) { + int set = FALSE; + + while (!set) { + mActor_name_t md = ITM_MINIDISK_START + RANDOM(NOT_SECRET_MD_NUM); + + if (mSP_GoodsExistAlready(md_list, count, md) == FALSE) { + md_list[i] = md; + set = TRUE; + } else if (count > NOT_SECRET_MD_NUM) { + md_list[i] = md; + set = TRUE; + } + } } - } } extern void mSP_RandomUmbSelect(mActor_name_t* umb_list, int count) { - int i; + int i; - for (i = 0; i < count; i++) { - umb_list[i] = EMPTY_NO; - } - - for (i = 0; i < count; i++) { - int set = FALSE; - - while (!set) { - mActor_name_t umb = ITM_UMBRELLA00 + RANDOM(UMBRELLA_NUM); - - if (mSP_GoodsExistAlready(umb_list, count, umb) == FALSE) { - umb_list[i] = umb; - set = TRUE; - } - else if (count > UMBRELLA_NUM) { - umb_list[i] = umb; - set = TRUE; - } + for (i = 0; i < count; i++) { + umb_list[i] = EMPTY_NO; + } + + for (i = 0; i < count; i++) { + int set = FALSE; + + while (!set) { + mActor_name_t umb = ITM_UMBRELLA00 + RANDOM(UMBRELLA_NUM); + + if (mSP_GoodsExistAlready(umb_list, count, umb) == FALSE) { + umb_list[i] = umb; + set = TRUE; + } else if (count > UMBRELLA_NUM) { + umb_list[i] = umb; + set = TRUE; + } + } } - } } static int mSP_CountBirth(u8 birth_type) { - int count = 0; - u8* birth_type_p = mRmTp_CheckFtrBirthInfoTop(); - int i; - - for (i = 0; i < FTR_NUM; i++) { - if (birth_type_p[0] == birth_type) { - count++; - } - - birth_type_p++; - } - - return count; -} - -static mActor_name_t mSP_FtrBirthIdx2ItemNo(u8 birth_type, int birth_idx) { - int count = 0; - u8* birth_type_p = mRmTp_CheckFtrBirthInfoTop(); - int i; - - for (i = 0; i < FTR_NUM; i++) { - if (birth_type_p[0] == birth_type) { - if (count == birth_idx) { - return mRmTp_FtrIdx2FtrItemNo(i, mRmTp_DIRECT_SOUTH); - } - - count++; - } - - birth_type_p++; - } - - return FTR_DINO_TREX_SKULL; -} - -extern mActor_name_t mSP_RandomOneFossilSelect(int multi_fossil) { - u8 birth_type = multi_fossil == FALSE ? mRmTp_BIRTH_TYPE_SINGLE_FOSSIL : mRmTp_BIRTH_TYPE_MULTI_FOSSIL; - int count = mSP_CountBirth(birth_type); - - return mSP_FtrBirthIdx2ItemNo(birth_type, RANDOM(count)); -} - -extern int mSP_Chk_HukubukuroSail() { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_year_t year = rtc_time.year; - lbRTC_month_t month = rtc_time.month; - lbRTC_day_t day = rtc_time.day; - - if (month == lbRTC_NOVEMBER) { - int black_friday = lbRTC_Weekly_day(year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) + 1; - - if (black_friday == day) { - return TRUE; - } - } - - return FALSE; -} - -extern int mSP_CheckFukubikiDay() { - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_year_t year = rtc_time.year; - lbRTC_month_t month = rtc_time.month; - lbRTC_day_t day = rtc_time.day; - lbRTC_day_t days_in_month = lbRTC_GetDaysByMonth(year, month); - - return days_in_month == day; -} - -extern int mSP_SetGoods2ReservedPoint(mActor_name_t goods, mActor_name_t reserved_no) { - mActor_name_t* shop_fg = mFI_BkNumtoUtFGTop(0, 0); - int i; - - for (i = 0; i < UT_TOTAL_NUM; i++) { - if (reserved_no == shop_fg[0]) { - mFI_UtNumtoFGSet_common(goods, i % UT_X_NUM, i / UT_X_NUM, FALSE); - return TRUE; - } - - shop_fg++; - } - - return FALSE; -} - -extern int mSP_CheckHallowinDay() { - int res = FALSE; - lbRTC_time_c rtc_time = Common_Get(time.rtc_time); - lbRTC_month_t month = rtc_time.month; - lbRTC_day_t day = rtc_time.day; - - if ( - month == lbRTC_OCTOBER && - day >= 16 && - day <= 30 - ) { - res = TRUE; - } - - return res; -} - -extern void mSP_SetTanukiShopStatus() { - if (mSP_ShopOpen() == mSP_SHOP_STATUS_OPENEVENT) { - Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_EVENT); - } - else if (mSP_CheckFukubikiDay()) { - Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_FUKUBIKI); - } - else if (mSP_Chk_HukubukuroSail()) { - Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_HUKUBUKURO_SALE); - } - else if (mSP_CheckHallowinDay()) { - Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_HALLOWEEN); - } - else { - Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_NORMAL); - } -} - -static u32 mSP_sack_amount[MONEY_NUM] = { - 100, - 1000, - 10000, - 30000 -}; - -static mActor_name_t mSP_itemNo[MONEY_NUM] = { - ITM_MONEY_100, - ITM_MONEY_1000, - ITM_MONEY_10000, - ITM_MONEY_30000 -}; - -extern int mSP_money_check(u32 amount) { - u32 money = Common_Get(now_private)->inventory.wallet; - int res = FALSE; - - if (money < amount) { + int count = 0; + u8* birth_type_p = mRmTp_CheckFtrBirthInfoTop(); int i; - for (i = 0; i < MONEY_NUM; i++) { - int sack_num = mPr_GetPossessionItemSumWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); + for (i = 0; i < FTR_NUM; i++) { + if (birth_type_p[0] == birth_type) { + count++; + } - money += sack_num * mSP_sack_amount[i]; - if (money >= amount) { - res = TRUE; - break; - } - } - } - else { - res = TRUE; - } - - return res; -} - -static u32 mSP_get_sell_price_sub(u32 money, u32 amount) { - u32 sack_num; - int i; - - for (i = 0; i < MONEY_NUM; i++) { - for (sack_num = mPr_GetPossessionItemSumWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); sack_num != 0; sack_num--) { - int sack_idx = mPr_GetPossessionItemIdxWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); - - mPr_SetPossessionItem(Common_Get(now_private), sack_idx, EMPTY_NO, mPr_ITEM_COND_NORMAL); - money += mSP_sack_amount[i]; - - if (money >= amount) { - return money - amount; - } - } - } - - return 0; -} - -extern void mSP_get_sell_price(u32 amount) { - u32 money = Common_Get(now_private)->inventory.wallet; - - if (money < amount) { - money = mSP_get_sell_price_sub(money, amount); - } - else { - money -= amount; - } - - Common_Get(now_private)->inventory.wallet = money; -} - -static int mSP_GetNonePossessionItemCount_InList(mActor_name_t* list, int category, u32* collect_bitfield) { - mActor_name_t* list_p; - - if (list != NULL) { - int count = 0; - - for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { - int collect_idx; - - if (category == mSP_KIND_FURNITURE) { - collect_idx = mRmTp_FtrItemNo2FtrIdx(list_p[0]); - } - else if (category == mSP_KIND_CARPET) { - collect_idx = list_p[0] - ITM_CARPET_START; - } - else { - collect_idx = list_p[0] - ITM_WALL_START; - } - - if (((collect_bitfield[collect_idx >> 5] >> (collect_idx & 0x1F)) & 1) == 0) { - count++; - } + birth_type_p++; } return count; - } +} - return 0; +static mActor_name_t mSP_FtrBirthIdx2ItemNo(u8 birth_type, int birth_idx) { + int count = 0; + u8* birth_type_p = mRmTp_CheckFtrBirthInfoTop(); + int i; + + for (i = 0; i < FTR_NUM; i++) { + if (birth_type_p[0] == birth_type) { + if (count == birth_idx) { + return mRmTp_FtrIdx2FtrItemNo(i, mRmTp_DIRECT_SOUTH); + } + + count++; + } + + birth_type_p++; + } + + return FTR_DINO_TREX_SKULL; +} + +extern mActor_name_t mSP_RandomOneFossilSelect(int multi_fossil) { + u8 birth_type = multi_fossil == FALSE ? mRmTp_BIRTH_TYPE_SINGLE_FOSSIL : mRmTp_BIRTH_TYPE_MULTI_FOSSIL; + int count = mSP_CountBirth(birth_type); + + return mSP_FtrBirthIdx2ItemNo(birth_type, RANDOM(count)); +} + +extern int mSP_Chk_HukubukuroSail() { + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_year_t year = rtc_time.year; + lbRTC_month_t month = rtc_time.month; + lbRTC_day_t day = rtc_time.day; + + if (month == lbRTC_NOVEMBER) { + int black_friday = lbRTC_Weekly_day(year, lbRTC_NOVEMBER, 4, lbRTC_THURSDAY) + 1; + + if (black_friday == day) { + return TRUE; + } + } + + return FALSE; +} + +extern int mSP_CheckFukubikiDay() { + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_year_t year = rtc_time.year; + lbRTC_month_t month = rtc_time.month; + lbRTC_day_t day = rtc_time.day; + lbRTC_day_t days_in_month = lbRTC_GetDaysByMonth(year, month); + + return days_in_month == day; +} + +extern int mSP_SetGoods2ReservedPoint(mActor_name_t goods, mActor_name_t reserved_no) { + mActor_name_t* shop_fg = mFI_BkNumtoUtFGTop(0, 0); + int i; + + for (i = 0; i < UT_TOTAL_NUM; i++) { + if (reserved_no == shop_fg[0]) { + mFI_UtNumtoFGSet_common(goods, i % UT_X_NUM, i / UT_X_NUM, FALSE); + return TRUE; + } + + shop_fg++; + } + + return FALSE; +} + +extern int mSP_CheckHallowinDay() { + int res = FALSE; + lbRTC_time_c rtc_time = Common_Get(time.rtc_time); + lbRTC_month_t month = rtc_time.month; + lbRTC_day_t day = rtc_time.day; + + if (month == lbRTC_OCTOBER && day >= 16 && day <= 30) { + res = TRUE; + } + + return res; +} + +extern void mSP_SetTanukiShopStatus() { + if (mSP_ShopOpen() == mSP_SHOP_STATUS_OPENEVENT) { + Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_EVENT); + } else if (mSP_CheckFukubikiDay()) { + Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_FUKUBIKI); + } else if (mSP_Chk_HukubukuroSail()) { + Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_HUKUBUKURO_SALE); + } else if (mSP_CheckHallowinDay()) { + Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_HALLOWEEN); + } else { + Common_Set(tanuki_shop_status, mSP_TANUKI_SHOP_STATUS_NORMAL); + } +} + +static u32 mSP_sack_amount[MONEY_NUM] = { 100, 1000, 10000, 30000 }; + +static mActor_name_t mSP_itemNo[MONEY_NUM] = { ITM_MONEY_100, ITM_MONEY_1000, ITM_MONEY_10000, ITM_MONEY_30000 }; + +extern int mSP_money_check(u32 amount) { + u32 money = Common_Get(now_private)->inventory.wallet; + int res = FALSE; + + if (money < amount) { + int i; + + for (i = 0; i < MONEY_NUM; i++) { + int sack_num = + mPr_GetPossessionItemSumWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); + + money += sack_num * mSP_sack_amount[i]; + if (money >= amount) { + res = TRUE; + break; + } + } + } else { + res = TRUE; + } + + return res; +} + +static u32 mSP_get_sell_price_sub(u32 money, u32 amount) { + u32 sack_num; + int i; + + for (i = 0; i < MONEY_NUM; i++) { + for (sack_num = mPr_GetPossessionItemSumWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); + sack_num != 0; sack_num--) { + int sack_idx = + mPr_GetPossessionItemIdxWithCond(Common_Get(now_private), mSP_itemNo[i], mPr_ITEM_COND_NORMAL); + + mPr_SetPossessionItem(Common_Get(now_private), sack_idx, EMPTY_NO, mPr_ITEM_COND_NORMAL); + money += mSP_sack_amount[i]; + + if (money >= amount) { + return money - amount; + } + } + } + + return 0; +} + +extern void mSP_get_sell_price(u32 amount) { + u32 money = Common_Get(now_private)->inventory.wallet; + + if (money < amount) { + money = mSP_get_sell_price_sub(money, amount); + } else { + money -= amount; + } + + Common_Get(now_private)->inventory.wallet = money; +} + +static int mSP_GetNonePossessionItemCount_InList(mActor_name_t* list, int category, u32* collect_bitfield) { + mActor_name_t* list_p; + + if (list != NULL) { + int count = 0; + + for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { + int collect_idx; + + if (category == mSP_KIND_FURNITURE) { + collect_idx = mRmTp_FtrItemNo2FtrIdx(list_p[0]); + } else if (category == mSP_KIND_CARPET) { + collect_idx = list_p[0] - ITM_CARPET_START; + } else { + collect_idx = list_p[0] - ITM_WALL_START; + } + + if (((collect_bitfield[collect_idx >> 5] >> (collect_idx & 0x1F)) & 1) == 0) { + count++; + } + } + + return count; + } + + return 0; } static mActor_name_t mSP_GetNonePossessionItem_InList(mActor_name_t* list, int category, u32* collect_bitfield) { - int none_count = mSP_GetNonePossessionItemCount_InList(list, category, collect_bitfield); + int none_count = mSP_GetNonePossessionItemCount_InList(list, category, collect_bitfield); - if (none_count != 0 && list != NULL) { - int selected_idx = RANDOM(none_count); - mActor_name_t* list_p; - int count = 0; + if (none_count != 0 && list != NULL) { + int selected_idx = RANDOM(none_count); + mActor_name_t* list_p; + int count = 0; - for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { - int collect_idx; + for (list_p = list; list_p[0] != EMPTY_NO; list_p++) { + int collect_idx; - if (category == mSP_KIND_FURNITURE) { - collect_idx = mRmTp_FtrItemNo2FtrIdx(list_p[0]); - } - else if (category == mSP_KIND_CARPET) { - collect_idx = list_p[0] - ITM_CARPET_START; - } - else { - collect_idx = list_p[0] - ITM_WALL_START; - } + if (category == mSP_KIND_FURNITURE) { + collect_idx = mRmTp_FtrItemNo2FtrIdx(list_p[0]); + } else if (category == mSP_KIND_CARPET) { + collect_idx = list_p[0] - ITM_CARPET_START; + } else { + collect_idx = list_p[0] - ITM_WALL_START; + } - if (((collect_bitfield[collect_idx >> 5] >> (collect_idx & 0x1F)) & 1) == 0) { - if (selected_idx == count) { - return list_p[0]; + if (((collect_bitfield[collect_idx >> 5] >> (collect_idx & 0x1F)) & 1) == 0) { + if (selected_idx == count) { + return list_p[0]; + } else { + count++; + } + } } - else { - count++; - } - } } - } - return EMPTY_NO; + return EMPTY_NO; } static mActor_name_t mSP_GetNonePossessionItem_InLotteryFurniture(int player_no) { - return mSP_GetNonePossessionItem_InList( - mSP_ftr_list[mSP_LIST_LOTTERY], - mSP_KIND_FURNITURE, - (player_no >= 0 && player_no < PLAYER_NUM) ? - Save_Get(private[player_no]).furniture_collected_bitfield : - Common_Get(now_private)->furniture_collected_bitfield - ); + return mSP_GetNonePossessionItem_InList(mSP_ftr_list[mSP_LIST_LOTTERY], mSP_KIND_FURNITURE, + (player_no >= 0 && player_no < PLAYER_NUM) + ? Save_Get(private_data[player_no]).furniture_collected_bitfield + : Common_Get(now_private)->furniture_collected_bitfield); } static mActor_name_t mSP_GetNonePossessionItem_InEventFurniture(int player_no) { - return mSP_GetNonePossessionItem_InList( - mSP_ftr_list[mSP_LIST_EVENT], - mSP_KIND_FURNITURE, - (player_no >= 0 && player_no < PLAYER_NUM) ? - Save_Get(private[player_no]).furniture_collected_bitfield : - Common_Get(now_private)->furniture_collected_bitfield - ); + return mSP_GetNonePossessionItem_InList(mSP_ftr_list[mSP_LIST_EVENT], mSP_KIND_FURNITURE, + (player_no >= 0 && player_no < PLAYER_NUM) + ? Save_Get(private_data[player_no]).furniture_collected_bitfield + : Common_Get(now_private)->furniture_collected_bitfield); } /* @fabricated @unused */ static mActor_name_t mSP_GetNonePossessionItem_InEventWall(int player_no) { - return mSP_GetNonePossessionItem_InList( - mSP_ftr_list[mSP_LIST_EVENT], - mSP_KIND_WALLPAPER, - (player_no >= 0 && player_no < PLAYER_NUM) ? - Save_Get(private[player_no]).wall_collected_bitfield : - Common_Get(now_private)->wall_collected_bitfield - ); + return mSP_GetNonePossessionItem_InList(mSP_ftr_list[mSP_LIST_EVENT], mSP_KIND_WALLPAPER, + (player_no >= 0 && player_no < PLAYER_NUM) + ? Save_Get(private_data[player_no]).wall_collected_bitfield + : Common_Get(now_private)->wall_collected_bitfield); } /* @fabricated @unused */ static mActor_name_t mSP_GetNonePossessionItem_InEventCarpet(int player_no) { - return mSP_GetNonePossessionItem_InList( - mSP_ftr_list[mSP_LIST_EVENT], - mSP_KIND_CARPET, - (player_no >= 0 && player_no < PLAYER_NUM) ? - Save_Get(private[player_no]).carpet_collected_bitfield : - Common_Get(now_private)->carpet_collected_bitfield - ); + return mSP_GetNonePossessionItem_InList(mSP_ftr_list[mSP_LIST_EVENT], mSP_KIND_CARPET, + (player_no >= 0 && player_no < PLAYER_NUM) + ? Save_Get(private_data[player_no]).carpet_collected_bitfield + : Common_Get(now_private)->carpet_collected_bitfield); } /* @fabricated @unused */ static mActor_name_t mSP_GetNonePossessionItem_InABCFurniture(int player_no) { - // TODO: check this impl is right using func size -- they probably did the list calc in this func itself - u8 abc_priorities[3]; + // TODO: check this impl is right using func size -- they probably did the list calc in this func itself + u8 abc_priorities[3]; - mSP_GetGoodsPriority(abc_priorities, mSP_KIND_FURNITURE); + mSP_GetGoodsPriority(abc_priorities, mSP_KIND_FURNITURE); - return mSP_GetNonePossessionItem_InList( - mSP_GetItemList(mSP_ftr_list, abc_priorities, mSP_LISTTYPE_ABC), - mSP_KIND_FURNITURE, - (player_no >= 0 && player_no < PLAYER_NUM) ? - Save_Get(private[player_no]).furniture_collected_bitfield : - Common_Get(now_private)->furniture_collected_bitfield - ); + return mSP_GetNonePossessionItem_InList( + mSP_GetItemList(mSP_ftr_list, abc_priorities, mSP_LISTTYPE_ABC), mSP_KIND_FURNITURE, + (player_no >= 0 && player_no < PLAYER_NUM) ? Save_Get(private_data[player_no]).furniture_collected_bitfield + : Common_Get(now_private)->furniture_collected_bitfield); } -typedef mActor_name_t (*mSP_GET_NONE_POSSESSION_ITEM_PROC)(int); +typedef mActor_name_t (*mSP_GET_NONE_POSSESSION_ITEM_PROC)(int); -static mActor_name_t mSP_CarryOutAlternativeRandomSelect(mSP_GET_NONE_POSSESSION_ITEM_PROC proc0, mSP_GET_NONE_POSSESSION_ITEM_PROC proc1, int player_no) { - int rng = RANDOM(100); +static mActor_name_t mSP_CarryOutAlternativeRandomSelect(mSP_GET_NONE_POSSESSION_ITEM_PROC proc0, + mSP_GET_NONE_POSSESSION_ITEM_PROC proc1, int player_no) { + int rng = RANDOM(100); - if ((rng & 1)) { - mActor_name_t item = (*proc0)(player_no); + if ((rng & 1)) { + mActor_name_t item = (*proc0)(player_no); - if (item == EMPTY_NO) { - item = (*proc1)(player_no); + if (item == EMPTY_NO) { + item = (*proc1)(player_no); - if (item != EMPTY_NO) { - return item; - } + if (item != EMPTY_NO) { + return item; + } + } else { + return item; + } + } else { + mActor_name_t item = (*proc1)(player_no); + + if (item == EMPTY_NO) { + item = (*proc0)(player_no); + + if (item != EMPTY_NO) { + return item; + } + } else { + return item; + } } - else { - return item; - } - } - else { - mActor_name_t item = (*proc1)(player_no); - if (item == EMPTY_NO) { - item = (*proc0)(player_no); - - if (item != EMPTY_NO) { - return item; - } - } - else { - return item; - } - } - - return EMPTY_NO; + return EMPTY_NO; } static mActor_name_t mSP_CarryOutAlternativeRandomSelect_NoneNULL(int category0, int list0, int category1, int list1) { - int rng = RANDOM(100); - mActor_name_t item; + int rng = RANDOM(100); + mActor_name_t item; - if ((rng & 1)) { - mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category0, list0, FALSE); - return item; - } - else { - mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category1, list1, FALSE); - return item; - } + if ((rng & 1)) { + mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category0, list0, FALSE); + return item; + } else { + mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, category1, list1, FALSE); + return item; + } } /* @unused size: 0xB8 */ // extern mActor_name_t mSP_SelectNpcBirthdayPresent(...) static void mSP_SelectNpcBirthdayPresent() { - // necessary to include for data - static int priority[6][3] = { - { mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE }, - { mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_RARE }, // lol based on this, I think it should've been common, rare, uncommon - { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE }, - { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON }, - { mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON }, - { mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON } - }; + // necessary to include for data + static int priority[6][3] = { + { mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE }, + { mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE, + mSP_PRIORITY_RARE }, // lol based on this, I think it should've been common, rare, uncommon + { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON, mSP_PRIORITY_RARE }, + { mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON }, + { mSP_PRIORITY_RARE, mSP_PRIORITY_COMMON, mSP_PRIORITY_UNCOMMON }, + { mSP_PRIORITY_RARE, mSP_PRIORITY_UNCOMMON, mSP_PRIORITY_COMMON } + }; } extern mActor_name_t mSP_SelectFishginPresent(int player_no) { - mActor_name_t item = mSP_CarryOutAlternativeRandomSelect(&mSP_GetNonePossessionItem_InLotteryFurniture, &mSP_GetNonePossessionItem_InEventFurniture, player_no); + mActor_name_t item = mSP_CarryOutAlternativeRandomSelect(&mSP_GetNonePossessionItem_InLotteryFurniture, + &mSP_GetNonePossessionItem_InEventFurniture, player_no); - if (item != EMPTY_NO) { - return item; - } + if (item != EMPTY_NO) { + return item; + } - return mSP_CarryOutAlternativeRandomSelect_NoneNULL(mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, mSP_KIND_FURNITURE, mSP_LISTTYPE_EVENT); + return mSP_CarryOutAlternativeRandomSelect_NoneNULL(mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, mSP_KIND_FURNITURE, + mSP_LISTTYPE_EVENT); } -mActor_name_t mSP_gc_famicom_table[8] = { - FTR_FAMICOM_CLU_CLU_LAND, - FTR_FAMICOM_BALLOON_FIGHT, - FTR_FAMICOM_DONKEY_KONG, - FTR_FAMICOM_DK_JR_MATCH, - FTR_FAMICOM_PINBALL, - FTR_FAMICOM_TENNIS, - FTR_FAMICOM_GOLF, - FTR_FAMICOM_EXCITEBIKE -}; +mActor_name_t mSP_gc_famicom_table[8] = { FTR_FAMICOM_CLU_CLU_LAND, FTR_FAMICOM_BALLOON_FIGHT, FTR_FAMICOM_DONKEY_KONG, + FTR_FAMICOM_DK_JR_MATCH, FTR_FAMICOM_PINBALL, FTR_FAMICOM_TENNIS, + FTR_FAMICOM_GOLF, FTR_FAMICOM_EXCITEBIKE }; /* @unused size: 0xDC */ // static mActor_name_t mSP_RandomOneFamicomSelect(...) static mActor_name_t mSP_AGBRandomFamicomSelect() { - mActor_name_t item = EMPTY_NO; + mActor_name_t item = EMPTY_NO; - mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ISLANDFAMICOM, FALSE); - return item; + mSP_SelectRandomItem_New(NULL, &item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ISLANDFAMICOM, FALSE); + return item; } static mActor_name_t mSP_GetRandomTrash() { - static mActor_name_t trash_table[3] = { ITM_DUST0_EMPTY_CAN, ITM_DUST1_BOOT, ITM_DUST2_OLD_TIRE }; + static mActor_name_t trash_table[3] = { ITM_DUST0_EMPTY_CAN, ITM_DUST1_BOOT, ITM_DUST2_OLD_TIRE }; - return trash_table[RANDOM(3)]; + return trash_table[RANDOM(3)]; } static void mSP_SelectRandomItemToAGB_Unit(mActor_name_t* item, xyz_t* wpos, int ut_x, int ut_z) { - switch (item[0]) { - case 0xFEB2: - { - item[0] = mSP_GetRandomTrash(); - break; + switch (item[0]) { + case 0xFEB2: { + item[0] = mSP_GetRandomTrash(); + break; + } + + case 0xFEA1: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_COMMON, FALSE); + break; + } + + case 0xFEA2: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); + break; + } + + case 0xFEA3: { + if ((RANDOM(10) & 1)) { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_EVENT, FALSE); + } else { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, FALSE); + } + + break; + } + + case 0xFEA5: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ISLAND, FALSE); + break; + } + + case 0xFEA4: { + item[0] = mSP_AGBRandomFamicomSelect(); + break; + } + + case 0xFEA9: { + mSP_RandomUmbSelect(item, 1); + break; + } + + case 0xFEA6: { + item[0] = mSP_RandomOneFossilSelect((RANDOM(4) & 1)); + break; + } + + case 0xFEA7: { + mSP_RandomMDSelect(item, 1); + break; + } + + case 0xFEA8: { + mSP_RandomHaniwaSelect(item, 1); + break; + } + + case 0xFEAA: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_COMMON, FALSE); + break; + } + + case 0xFEAB: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_RARE, FALSE); + break; + } + + case 0xFEAC: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_WALLPAPER, mSP_LISTTYPE_COMMON, FALSE); + break; + } + + case 0xFEAD: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_WALLPAPER, mSP_LISTTYPE_RARE, FALSE); + break; + } + + case 0xFEAE: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_COMMON, FALSE); + break; + } + + case 0xFEAF: { + mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_RARE, FALSE); + break; + } + + case 0xFEB0: { + int hole_no = mCoBG_GetHoleNumber(*wpos); + + if (hole_no != -1) { + item[0] = HOLE_START + (mActor_name_t)hole_no; + } else { + item[0] = EMPTY_NO; + } + + break; + } + + case 0xFEB1: { + item[0] = ITM_WHITE_PANSY_BAG + RANDOM(FLOWER_NUM); + break; + } + + case ITM_KABU_10: + case ITM_KABU_50: + case ITM_KABU_100: { + item[0] = ITM_KABU_SPOILED; // spoil any turnips + break; + } + + case 0xF11F: { + item[0] = ACTOR_PROP_VILLAGER_SIGNBOARD; + break; + } } - - case 0xFEA1: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_COMMON, FALSE); - break; - } - - case 0xFEA2: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_RARE, FALSE); - break; - } - - case 0xFEA3: - { - if ((RANDOM(10) & 1)) { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_EVENT, FALSE); - } - else { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_LOTTERY, FALSE); - } - - break; - } - - case 0xFEA5: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_FURNITURE, mSP_LISTTYPE_ISLAND, FALSE); - break; - } - - case 0xFEA4: - { - item[0] = mSP_AGBRandomFamicomSelect(); - break; - } - - case 0xFEA9: - { - mSP_RandomUmbSelect(item, 1); - break; - } - - case 0xFEA6: - { - item[0] = mSP_RandomOneFossilSelect((RANDOM(4) & 1)); - break; - } - - case 0xFEA7: - { - mSP_RandomMDSelect(item, 1); - break; - } - - case 0xFEA8: - { - mSP_RandomHaniwaSelect(item, 1); - break; - } - - case 0xFEAA: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_COMMON, FALSE); - break; - } - - case 0xFEAB: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CARPET, mSP_LISTTYPE_RARE, FALSE); - break; - } - - case 0xFEAC: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_WALLPAPER, mSP_LISTTYPE_COMMON, FALSE); - break; - } - - case 0xFEAD: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_WALLPAPER, mSP_LISTTYPE_RARE, FALSE); - break; - } - - case 0xFEAE: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_COMMON, FALSE); - break; - } - - case 0xFEAF: - { - mSP_SelectRandomItem_New(NULL, item, 1, NULL, 0, mSP_KIND_CLOTH, mSP_LISTTYPE_RARE, FALSE); - break; - } - - case 0xFEB0: - { - int hole_no = mCoBG_GetHoleNumber(*wpos); - - if (hole_no != -1) { - item[0] = HOLE_START + (mActor_name_t)hole_no; - } - else { - item[0] = EMPTY_NO; - } - - break; - } - - case 0xFEB1: - { - item[0] = ITM_WHITE_PANSY_BAG + RANDOM(FLOWER_NUM); - break; - } - - case ITM_KABU_10: - case ITM_KABU_50: - case ITM_KABU_100: - { - item[0] = ITM_KABU_SPOILED; // spoil any turnips - break; - } - - case 0xF11F: - { - item[0] = ACTOR_PROP_VILLAGER_SIGNBOARD; - break; - } - } } #ifndef MUST_MATCH /* @nonmatching - minor float load/store issue with xyz_t.z & weird scheduling issue */ extern void mSP_SelectRandomItemToAGB() { - int i; - int ut_x; - int ut_z; - xyz_t* wpos_p; - mActor_name_t* start_p; - mActor_name_t* item_p; - f32 x_pos; + int i; + int ut_x; + int ut_z; + xyz_t* wpos_p; + mActor_name_t* start_p; + mActor_name_t* item_p; + Save_t* save; + xyz_t tpos; - xyz_t wpos = { 0.0f, 0.0f, 0.0f }; - int bx = 0; - int bz = 0; + xyz_t wpos = { 0.0f, 0.0f, 0.0f }; + int bx = 0; + int bz = 0; - mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_ISLAND_LEFT); + mFI_BlockKind2BkNum(&bx, &bz, mRF_BLOCKKIND_ISLAND_LEFT); + save = &Common_Get(save.save); - /* convert all unit island items to valid items */ - for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - item_p = &Save_Get(island).fgblock[0][i].items[0][0]; - - mFI_BkNum2WposXZ(&wpos.x, &wpos.z, bx + i, bz); - wpos.x += mFI_UT_WORLDSIZE_HALF_X_F; - wpos.z += mFI_UT_WORLDSIZE_HALF_Z_F; - x_pos = wpos.x; + /* convert all unit island items to valid items */ + for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { + item_p = &save->island.fgblock[0][i].items[0][0]; - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - wpos.x = x_pos; + mFI_BkNum2WposXZ(&wpos.x, &wpos.z, bx + i, bz); + wpos.x += mFI_UT_WORLDSIZE_HALF_X_F; + wpos.z += mFI_UT_WORLDSIZE_HALF_Z_F; + tpos.x = wpos.x; - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - // this matches instructions but out of order and wrong registers - mSP_SelectRandomItemToAGB_Unit(item_p, &wpos, ut_x, ut_z); - wpos.x += mFI_UT_WORLDSIZE_X_F; - item_p++; - } + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + wpos.x = tpos.x; - wpos.z += mFI_UT_WORLDSIZE_Z_F; - } - } + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + // this matches instructions but out of order and wrong registers + mSP_SelectRandomItemToAGB_Unit(item_p, &wpos, ut_x, ut_z); + wpos.x += mFI_UT_WORLDSIZE_X_F; + item_p++; + } - /* add correctly placed signboard actor */ - for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - start_p = &Save_Get(island).fgblock[0][i].items[0][0]; - item_p = &Save_Get(island).fgblock[0][i].items[0][0]; - - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (item_p[0] == COTTAGE_NPC) { - start_p[((ut_x - 1) & 15) + (((ut_z + 1) & 0xF) << 4)] = ACTOR_PROP_VILLAGER_SIGNBOARD; + wpos.z += mFI_UT_WORLDSIZE_Z_F; } - - item_p++; - } } - } - /* remove incorrectly placed signboard actors */ - for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { - start_p = &Save_Get(island).fgblock[0][i].items[0][0]; - item_p = &Save_Get(island).fgblock[0][i].items[0][0]; + /* add correctly placed signboard actor */ + save = Common_GetPointer(save.save); + for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { + start_p = &save->island.fgblock[0][i].items[0][0]; + item_p = &save->island.fgblock[0][i].items[0][0]; - for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { - for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { - if (item_p[0] == ACTOR_PROP_VILLAGER_SIGNBOARD && start_p[((ut_x + 1) & 15) + (((ut_z - 1) & 0xF) << 4)] != COTTAGE_NPC) { - item_p[0] = EMPTY_NO; + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (item_p[0] == COTTAGE_NPC) { + start_p[((ut_x - 1) & 15) + (((ut_z + 1) & 0xF) << 4)] = ACTOR_PROP_VILLAGER_SIGNBOARD; + } + + item_p++; + } + } + } + + /* remove incorrectly placed signboard actors */ + save = Common_GetPointer(save.save); + for (i = 0; i < mISL_FG_BLOCK_X_NUM; i++) { + start_p = &save->island.fgblock[0][i].items[0][0]; + item_p = &save->island.fgblock[0][i].items[0][0]; + + for (ut_z = 0; ut_z < UT_Z_NUM; ut_z++) { + for (ut_x = 0; ut_x < UT_X_NUM; ut_x++) { + if (item_p[0] == ACTOR_PROP_VILLAGER_SIGNBOARD && + start_p[((ut_x + 1) & 15) + (((ut_z - 1) & 0xF) << 4)] != COTTAGE_NPC) { + item_p[0] = EMPTY_NO; + } + + item_p++; + } } - - item_p++; - } } - } } #else -const xyz_t lbl_806432b4 = {0.0f, 0.0f, 0.0f}; +const xyz_t lbl_806432b4 = { 0.0f, 0.0f, 0.0f }; REL_SYMBOL_AT(lbl_806432b4, 0x806432b4) #include "orderfloats/806432c0_806432c8.inc" extern asm void mSP_SelectRandomItemToAGB() { - #include "asm/803ebb44.s" +#include "asm/803ebb44.s" } #endif extern const char* mSP_ShopStatus2String(int status) { - static char dummy[] = "hahaha"; + static char dummy[] = "hahaha"; - static char* str_table[mSP_SHOP_STATUS_NUM] = { - "Pre", - "End", - "Opn", - "Rnw", - "PreEv", - "EndEv", - "OpnEv" - }; + static char* str_table[mSP_SHOP_STATUS_NUM] = { "Pre", "End", "Opn", "Rnw", "PreEv", "EndEv", "OpnEv" }; - if (status >= 0 && status < mSP_SHOP_STATUS_NUM) { - return str_table[status]; - } + if (status >= 0 && status < mSP_SHOP_STATUS_NUM) { + return str_table[status]; + } - return dummy; + return dummy; } extern mActor_name_t mSP_GetRandomStationToyItemNo() { - /* TODO: where does this go? DnM+ indicates no unused functions after this, but data appears after str_table in mSP_ShopStatus2String */ - static mActor_name_t train[2] = { - FTR_LOCOMOTIVE_MODEL, FTR_TRAIN_CAR_MODEL - }; + /* TODO: where does this go? DnM+ indicates no unused functions after this, but data appears after str_table in + * mSP_ShopStatus2String */ + static mActor_name_t train[2] = { FTR_LOCOMOTIVE_MODEL, FTR_TRAIN_CAR_MODEL }; - /* TODO: furniture item index enum/defines */ - return mRmTp_FtrIdx2FtrItemNo(0x42A + RANDOM(15), mRmTp_DIRECT_SOUTH); + /* TODO: furniture item index enum/defines */ + return mRmTp_FtrIdx2FtrItemNo(0x42A + RANDOM(15), mRmTp_DIRECT_SOUTH); } #include "../src/m_item_debug.c" diff --git a/src/m_soncho.c b/src/m_soncho.c index e9464b80..3dfdf8dd 100644 --- a/src/m_soncho.c +++ b/src/m_soncho.c @@ -1088,7 +1088,7 @@ extern int mSC_LightHouse_travel_check() { } extern void mSC_change_player_freeze(GAME_PLAY* play) { - if (mPlib_get_player_actor_main_index((GAME*)play) != 74) { + if (mPlib_get_player_actor_main_index((GAME*)play) != mPlayer_INDEX_DEMO_WAIT) { mPlib_request_main_demo_wait_type1((GAME*)play, 0, NULL); } } diff --git a/src/m_start_data_init.c b/src/m_start_data_init.c index 9826b687..2ba4bcdc 100644 --- a/src/m_start_data_init.c +++ b/src/m_start_data_init.c @@ -183,7 +183,7 @@ static int mSDI_StartInitNew(GAME* game, int player_no, int malloc_flag) { osSyncPrintf("player no -- %d\n", player_no); Common_Set(player_no, player_no); - priv = Save_GetPointer(private[player_no]); + priv = Save_GetPointer(private_data[player_no]); Common_Set(now_private, priv); priv->gender = mPr_SEX_MALE; decide_fruit(Save_GetPointer(fruit)); @@ -211,7 +211,7 @@ static int mSDI_StartInitNew(GAME* game, int player_no, int malloc_flag) { /* Tree -> Cedar Tree */ mAGrw_ChangeTree2Cedar(); - priv_p = Save_Get(private); + priv_p = Save_Get(private_data); mMld_SetDefaultMelody(); mLd_LandDataInit(); @@ -292,7 +292,7 @@ static int mSDI_StartInitFrom(GAME* game, int player_no, int malloc_flag) { lbRTC_GetTime(Common_GetPointer(time.rtc_time)); if (mFRm_CheckSaveData() == TRUE) { - Private_c* priv = Save_Get(private + player_no); + Private_c* priv = Save_Get(private_data + player_no); if (mPr_CheckPrivate(priv) == TRUE) { @@ -349,7 +349,7 @@ static int mSDI_StartInitNewPlayer(GAME* game, int player_no, int malloc_flag) { lbRTC_GetTime(Common_GetPointer(time.rtc_time)); if (mFRm_CheckSaveData() == TRUE) { - Private_c* priv = Save_Get(private + player_no); + Private_c* priv = Save_Get(private_data + player_no); if (mPr_CheckPrivate(priv) != TRUE) { mPr_InitPrivateInfo(priv); diff --git a/src/m_submenu.c b/src/m_submenu.c index 1cb8bc59..4aac8803 100644 --- a/src/m_submenu.c +++ b/src/m_submenu.c @@ -8,720 +8,656 @@ #include "m_quest.h" #include "libultra/libultra.h" -static mSM_dlftbl_c SubmenuArea_dlftbl[mSM_DLF_NUM] = { - { NULL, 0, 0, 0, 0, 0, "submenu_ovl" }, - { NULL, 0, 0, 0, 0, 0, "player_actor" } -}; +static mSM_dlftbl_c SubmenuArea_dlftbl[mSM_DLF_NUM] = { { NULL, 0, 0, 0, 0, 0, "submenu_ovl" }, + { NULL, 0, 0, 0, 0, 0, "player_actor" } }; static mSM_dlftbl_c* SubmenuArea_visit = NULL; static void* SubmenuArea_allocp = NULL; extern int mSM_COLLECT_INSECT_GET(int idx) { - u32 ftr_idx = (0x2F2 << 2) + (idx << 2); - return (Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] & (1 << ((ftr_idx >> 2) & 0x1F))) != 0; + u32 ftr_idx = (0x2F2 << 2) + (idx << 2); + return (Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] & + (1 << ((ftr_idx >> 2) & 0x1F))) != 0; } extern void mSM_COLLECT_INSECT_SET(int idx) { - u32 ftr_idx = (0x2F2 << 2) + (idx << 2); - Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] |= (1 << ((ftr_idx >> 2) & 0x1F)); + u32 ftr_idx = (0x2F2 << 2) + (idx << 2); + Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] |= (1 << ((ftr_idx >> 2) & 0x1F)); } static int mSM_CHECK_ALL_INSECT_GET_SUB() { - int i; - int n = 0; + int i; + int n = 0; - for (i = 0; i < INSECT_ONLY_NUM; i++) { - if (mSM_COLLECT_INSECT_GET(i) != FALSE) { - n++; + for (i = 0; i < INSECT_ONLY_NUM; i++) { + if (mSM_COLLECT_INSECT_GET(i) != FALSE) { + n++; + } } - } - return n; + return n; } extern int mSM_CHECK_ALL_INSECT_GET() { - if (mSM_CHECK_ALL_INSECT_GET_SUB() == INSECT_ONLY_NUM) { - return TRUE; - } + if (mSM_CHECK_ALL_INSECT_GET_SUB() == INSECT_ONLY_NUM) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mSM_CHECK_LAST_INSECT_GET(int idx) { - int res = FALSE; + int res = FALSE; - if (mSM_CHECK_ALL_INSECT_GET_SUB() == (INSECT_ONLY_NUM - 1) && mSM_COLLECT_INSECT_GET(idx) == FALSE) { - res = TRUE; - } + if (mSM_CHECK_ALL_INSECT_GET_SUB() == (INSECT_ONLY_NUM - 1) && mSM_COLLECT_INSECT_GET(idx) == FALSE) { + res = TRUE; + } - return res; + return res; } extern int mSM_COLLECT_FISH_GET(int idx) { - u32 ftr_idx = (0x31A << 2) + (idx << 2); - return (Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] & (1 << ((ftr_idx >> 2) & 0x1F))) != 0; + u32 ftr_idx = (0x31A << 2) + (idx << 2); + return (Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] & + (1 << ((ftr_idx >> 2) & 0x1F))) != 0; } extern void mSM_COLLECT_FISH_SET(int idx) { - u32 ftr_idx = (0x31A << 2) + (idx << 2); - Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] |= (1 << ((ftr_idx >> 2) & 0x1F)); + u32 ftr_idx = (0x31A << 2) + (idx << 2); + Common_Get(now_private)->furniture_collected_bitfield[ftr_idx >> 2 >> 5] |= (1 << ((ftr_idx >> 2) & 0x1F)); } static int mSM_CHECK_ALL_FISH_GET_SUB() { - int i; - int n = 0; + int i; + int n = 0; - for (i = 0; i < FISH_NUM; i++) { - if (mSM_COLLECT_FISH_GET(i) != FALSE) { - n++; + for (i = 0; i < FISH_NUM; i++) { + if (mSM_COLLECT_FISH_GET(i) != FALSE) { + n++; + } } - } - return n; + return n; } extern int mSM_CHECK_ALL_FISH_GET() { - if (mSM_CHECK_ALL_FISH_GET_SUB() == FISH_NUM) { - return TRUE; - } + if (mSM_CHECK_ALL_FISH_GET_SUB() == FISH_NUM) { + return TRUE; + } - return FALSE; + return FALSE; } extern int mSM_CHECK_LAST_FISH_GET(int idx) { - int res = FALSE; + int res = FALSE; - if (mSM_CHECK_ALL_FISH_GET_SUB() == (FISH_NUM - 1) && mSM_COLLECT_FISH_GET(idx) == FALSE) { - res = TRUE; - } + if (mSM_CHECK_ALL_FISH_GET_SUB() == (FISH_NUM - 1) && mSM_COLLECT_FISH_GET(idx) == FALSE) { + res = TRUE; + } - return res; + return res; } extern int SubmenuArea_IsPlayer() { - return SubmenuArea_visit == &SubmenuArea_dlftbl[mSM_DLF_PLAYER_ACTOR]; + return SubmenuArea_visit == &SubmenuArea_dlftbl[mSM_DLF_PLAYER_ACTOR]; } static void mSM_load_player_anime(GAME_PLAY* play) { - // stubbed + // stubbed } static void SubmenuArea_DoLink(mSM_dlftbl_c* dlftbl, Submenu* submenu, int dlf_idx) { - dlftbl->_00 = SubmenuArea_allocp; - dlftbl->_14 = 0; - SubmenuArea_visit = dlftbl; - submenu->overlay_address = dlftbl->_00; - submenu->next_overlay_address = dlftbl->_00; + dlftbl->_00 = SubmenuArea_allocp; + dlftbl->_14 = 0; + SubmenuArea_visit = dlftbl; + submenu->overlay_address = dlftbl->_00; + submenu->next_overlay_address = dlftbl->_00; } static void SubmenuArea_DoUnlink(mSM_dlftbl_c* dlftbl, Submenu* submenu) { - if (dlftbl->_00 != NULL) { - submenu->overlay_address = dlftbl->_00; - submenu->next_overlay_address = dlftbl->_00; - dlftbl->_14 = 0; - dlftbl->_00 = NULL; - SubmenuArea_visit = NULL; - } + if (dlftbl->_00 != NULL) { + submenu->overlay_address = dlftbl->_00; + submenu->next_overlay_address = dlftbl->_00; + dlftbl->_14 = 0; + dlftbl->_00 = NULL; + SubmenuArea_visit = NULL; + } } static int mSM_ovlptr_dllcnv_sub(void* proc, mSM_dlftbl_c* dlftbl, Submenu* submenu, int dlf_idx) { - if (dlf_idx == mSM_DLF_SUBMENU_OVL || dlf_idx == mSM_DLF_PLAYER_ACTOR) { - SubmenuArea_DoLink(dlftbl, submenu, dlf_idx); - return TRUE; - } + if (dlf_idx == mSM_DLF_SUBMENU_OVL || dlf_idx == mSM_DLF_PLAYER_ACTOR) { + SubmenuArea_DoLink(dlftbl, submenu, dlf_idx); + return TRUE; + } - return FALSE; + return FALSE; } extern void* mSM_ovlptr_dllcnv(void* proc, Submenu* submenu, int dlf_idx) { - if (SubmenuArea_visit != NULL) { - return; // ?? - } - else if (mSM_ovlptr_dllcnv_sub(proc, SubmenuArea_dlftbl, submenu, dlf_idx) == FALSE) { - return NULL; - } + if (SubmenuArea_visit != NULL) { + return; // ?? + } else if (mSM_ovlptr_dllcnv_sub(proc, SubmenuArea_dlftbl, submenu, dlf_idx) == FALSE) { + return NULL; + } - return proc; + return proc; } extern void mSM_submenu_ovlptr_init(GAME_PLAY* play) { - SubmenuArea_allocp = (void*)1; - SubmenuArea_visit = NULL; + SubmenuArea_allocp = (void*)1; + SubmenuArea_visit = NULL; } extern void mSM_submenu_ovlptr_cleanup(Submenu* submenu) { - if (SubmenuArea_visit != NULL) { - SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); - SubmenuArea_visit = NULL; - } + if (SubmenuArea_visit != NULL) { + SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); + SubmenuArea_visit = NULL; + } - SubmenuArea_allocp = NULL; + SubmenuArea_allocp = NULL; } extern void load_player(Submenu* submenu) { - mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_PLAYER_ACTOR]; + mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_PLAYER_ACTOR]; - if (SubmenuArea_visit != dlftbl) { - if (SubmenuArea_visit != NULL) { - SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); + if (SubmenuArea_visit != dlftbl) { + if (SubmenuArea_visit != NULL) { + SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); + } + + SubmenuArea_DoLink(dlftbl, submenu, mSM_DLF_PLAYER_ACTOR); } - - SubmenuArea_DoLink(dlftbl, submenu, mSM_DLF_PLAYER_ACTOR); - } } extern void mSM_submenu_ct(Submenu* submenu) { - bzero(submenu, sizeof(Submenu)); - submenu->process_status = mSM_PROCESS_WAIT; - submenu->wait_timer = 0; + bzero(submenu, sizeof(Submenu)); + submenu->process_status = mSM_PROCESS_WAIT; + submenu->wait_timer = 0; - if (Common_Get(submenu_disabled) == TRUE) { - submenu->disable_start_btn_flag = TRUE; - Common_Set(submenu_disabled, FALSE); - } + if (Common_Get(submenu_disabled) == TRUE) { + submenu->start_refuse = TRUE; + Common_Set(submenu_disabled, FALSE); + } - submenu->move_proc = (SUBMENU_PROC)&none_proc1; - submenu->draw_proc = (SUBMENU_GAME_PROC)&none_proc1; + submenu->move_proc = (SUBMENU_PROC)&none_proc1; + submenu->draw_proc = (SUBMENU_GAME_PROC)&none_proc1; } extern void mSM_submenu_dt(Submenu* submenu) { - // stubbed + // stubbed } extern void mSM_open_submenu(Submenu* submenu, int type, int arg0, int arg1) { - mSM_open_submenu_new2(submenu, type, arg0, arg1, NULL, 0); + mSM_open_submenu_new2(submenu, type, arg0, arg1, NULL, 0); } extern void mSM_open_submenu_new(Submenu* submenu, int type, int arg0, int arg1, void* arg2) { - mSM_open_submenu_new2(submenu, type, arg0, arg1, arg2, 0); + mSM_open_submenu_new2(submenu, type, arg0, arg1, arg2, 0); } extern void mSM_open_submenu_new2(Submenu* submenu, int type, int arg0, int arg1, void* arg2, int arg3) { - submenu->menu_type = type; - submenu->param0 = arg0; - submenu->param1 = arg1; - submenu->param2 = arg2; - submenu->param3 = arg3; + submenu->menu_type = type; + submenu->param0 = arg0; + submenu->param1 = arg1; + submenu->param2 = arg2; + submenu->param3 = arg3; } static void mSM_Reset_player_btn_type1(GAME_PLAY* play) { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - if (player != NULL) { - player->a_btn_pressed = FALSE; - player->a_btn_triggers_submenu = TRUE; - } + if (player != NULL) { + player->a_btn_pressed = FALSE; + player->a_btn_triggers_submenu = TRUE; + } } static void mSM_Reset_player_btn_type2(GAME_PLAY* play) { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - if (player != NULL) { - player->a_btn_triggers_submenu = TRUE; - } + if (player != NULL) { + player->a_btn_triggers_submenu = TRUE; + } } static int mSM_check_open_map_new(GAME_PLAY* play) { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); - int open_map = FALSE; - int bx; - int bz; + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + int open_map = FALSE; + int bx; + int bz; - if (chkTrigger(mSM_MAP_BUTTON) && Common_Get(map_flag) == TRUE) { - open_map = TRUE; - } + if (chkTrigger(mSM_MAP_BUTTON) && Common_Get(map_flag) == TRUE) { + open_map = TRUE; + } - if (open_map == FALSE) { - return FALSE; - } + if (open_map == FALSE) { + return FALSE; + } - if (player == NULL) { - return FALSE; - } + if (player == NULL) { + return FALSE; + } - if (Save_Get(scene_no) == SCENE_COTTAGE_MY || Save_Get(scene_no) == SCENE_COTTAGE_NPC) { - return FALSE; - } + if (Save_Get(scene_no) == SCENE_COTTAGE_MY || Save_Get(scene_no) == SCENE_COTTAGE_NPC) { + return FALSE; + } - mFI_Wpos2BlockNum(&bx, &bz, player->actor_class.world.position); - return mFI_CheckBlockKind_OR(bx, bz, mRF_BLOCKKIND_OCEAN) == FALSE; + mFI_Wpos2BlockNum(&bx, &bz, player->actor_class.world.position); + return mFI_CheckBlockKind_OR(bx, bz, mRF_BLOCKKIND_OCEAN) == FALSE; } extern void mSM_submenu_ctrl(GAME_PLAY* play) { - Submenu* submenu = &play->submenu; - int open_inventory; + Submenu* submenu = &play->submenu; + int open_inventory; - if (submenu->process_status != mSM_PROCESS_WAIT) { - return; - } - - if (play->fb_fade_type != 0) { - return; - } - - if (play->fb_wipe_mode != 0) { - return; - } - - open_inventory = FALSE; - if (chkTrigger(mSM_INV_BUTTON_0) || chkTrigger(mSM_INV_BUTTON_1)) { - open_inventory = TRUE; - } - - if ( - ( - (open_inventory && Common_Get(reset_flag) == FALSE) || - (mSM_check_open_map_new(play) == TRUE && Common_Get(reset_flag) == FALSE) - ) && - submenu->disable_start_btn_flag == FALSE && submenu->disable_start_btn_timer == 0 && - mPlib_able_submenu_type1((GAME*)play) && mEv_CheckFirstIntro() == FALSE - ) { - if (open_inventory) { - mSM_open_submenu(submenu, mSM_OVL_INVENTORY, 0, 0); - } - else { - mSM_open_submenu(submenu, mSM_OVL_MAP, 1, 0); + if (submenu->process_status != mSM_PROCESS_WAIT) { + return; } - mSM_Reset_player_btn_type2(play); - } - else { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + if (play->fb_fade_type != 0) { + return; + } - if ( - player != NULL && player->a_btn_pressed == TRUE && - Common_Get(reset_flag) == FALSE && submenu->disable_start_btn_flag == FALSE && - submenu->disable_start_btn_timer == 0 && mPlib_able_submenu_type1((GAME*)play) - ) { - s16 y_dir = player->actor_class.shape_info.rotation.y; - int dir; - - y_dir -= -0x8000; - dir = ABS(y_dir); + if (play->fb_wipe_mode != 0) { + return; + } - if (dir < DEG2SHORT_ANGLE(45.0f)) { - switch (player->item_in_front) { - case MESSAGE_BOARD1: - case MESSAGE_BOARD0: - mSM_open_submenu(submenu, mSM_OVL_NOTICE, 0, 0); - mSM_Reset_player_btn_type1(play); - break; - case MAP_BOARD1: - case MAP_BOARD0: - mSM_open_submenu(submenu, mSM_OVL_MAP, 0, 0); - mSM_Reset_player_btn_type1(play); - break; + open_inventory = FALSE; + if (chkTrigger(mSM_INV_BUTTON_0) || chkTrigger(mSM_INV_BUTTON_1)) { + open_inventory = TRUE; + } + + if (((open_inventory && Common_Get(reset_flag) == FALSE) || + (mSM_check_open_map_new(play) == TRUE && Common_Get(reset_flag) == FALSE)) && + submenu->start_refuse == FALSE && submenu->start_refuse_timer == 0 && mPlib_able_submenu_type1((GAME*)play) && + mEv_CheckFirstIntro() == FALSE) { + if (open_inventory) { + mSM_open_submenu(submenu, mSM_OVL_INVENTORY, 0, 0); + } else { + mSM_open_submenu(submenu, mSM_OVL_MAP, 1, 0); } - } - } - } - if (submenu->menu_type != mSM_OVL_NONE) { - submenu->process_status = mSM_PROCESS_PREWAIT; - submenu->mode = 1; - SetGameFrame(1); - } + mSM_Reset_player_btn_type2(play); + } else { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR(play); + + if (player != NULL && player->a_btn_pressed == TRUE && Common_Get(reset_flag) == FALSE && + submenu->start_refuse == FALSE && submenu->start_refuse_timer == 0 && + mPlib_able_submenu_type1((GAME*)play)) { + s16 y_dir = player->actor_class.shape_info.rotation.y; + int dir; + + y_dir -= -0x8000; + dir = ABS(y_dir); + + if (dir < DEG2SHORT_ANGLE(45.0f)) { + switch (player->item_in_front) { + case MESSAGE_BOARD1: + case MESSAGE_BOARD0: + mSM_open_submenu(submenu, mSM_OVL_NOTICE, 0, 0); + mSM_Reset_player_btn_type1(play); + break; + case MAP_BOARD1: + case MAP_BOARD0: + mSM_open_submenu(submenu, mSM_OVL_MAP, 0, 0); + mSM_Reset_player_btn_type1(play); + break; + } + } + } + } + + if (submenu->menu_type != mSM_OVL_NONE) { + submenu->process_status = mSM_PROCESS_PREWAIT; + submenu->mode = 1; + SetGameFrame(1); + } } static void mSM_move_Wait(Submenu* submenu) { - if (submenu->wait_timer != 0) { - submenu->wait_timer--; - } + if (submenu->wait_timer != 0) { + submenu->wait_timer--; + } - if (submenu->disable_start_btn_timer != 0) { - submenu->disable_start_btn_timer--; - } + if (submenu->start_refuse_timer != 0) { + submenu->start_refuse_timer--; + } } static void mSM_move_PREWait(Submenu* submenu) { - if (submenu->mode >= 3) { - submenu->process_status = mSM_PROCESS_LINKWAIT; - } + if (submenu->mode >= 3) { + submenu->process_status = mSM_PROCESS_LINKWAIT; + } } static void mSM_move_LINKWait(Submenu* submenu) { - Submenu_Item_c* item; - mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL]; - int i; + Submenu_Item_c* item; + mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL]; + int i; - if (SubmenuArea_visit != dlftbl) { - if (SubmenuArea_visit != NULL) { - SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); + if (SubmenuArea_visit != dlftbl) { + if (SubmenuArea_visit != NULL) { + SubmenuArea_DoUnlink(SubmenuArea_visit, submenu); + } + + SubmenuArea_DoLink(dlftbl, submenu, mSM_DLF_SUBMENU_OVL); + submenu->move_proc = (SUBMENU_PROC)mSM_ovlptr_dllcnv(&mSM_menu_ovl_init, submenu, mSM_DLF_SUBMENU_OVL); + submenu->draw_proc = (SUBMENU_GAME_PROC)&none_proc1; + submenu->process_status = mSM_PROCESS_PLAY; + submenu->open_flag = TRUE; + submenu->after_mode = 7; + submenu->unk_164 = 0; + mMl_clear_mail(&submenu->mail); + submenu->item_p = &submenu->items[0]; + submenu->item_num = mPr_POCKETS_SLOT_COUNT; + + item = submenu->item_p; + for (i = 0; i < submenu->item_num; i++) { + item->item = EMPTY_NO; + item->slot_no = mPr_POCKETS_SLOT_COUNT; + item++; + } + + if (submenu->mode != 4) { + if ((submenu->menu_type == mSM_OVL_LEDIT && submenu->param0 == 0) || + Common_Get(now_private)->gender == mPr_SEX_MALE) { + sAdo_SpecChange(5); + } else { + sAdo_SpecChange(6); + } + + sAdo_SetVoiceMode(0); + } } - - SubmenuArea_DoLink(dlftbl, submenu, mSM_DLF_SUBMENU_OVL); - submenu->move_proc = (SUBMENU_PROC)mSM_ovlptr_dllcnv(&mSM_menu_ovl_init, submenu, mSM_DLF_SUBMENU_OVL); - submenu->draw_proc = (SUBMENU_GAME_PROC)&none_proc1; - submenu->process_status = mSM_PROCESS_PLAY; - submenu->open_flag = TRUE; - submenu->after_mode = 7; - submenu->unk_164 = 0; - mMl_clear_mail(&submenu->mail); - submenu->item_p = &submenu->items[0]; - submenu->item_num = mPr_POCKETS_SLOT_COUNT; - - item = submenu->item_p; - for (i = 0; i < submenu->item_num; i++) { - item->item = EMPTY_NO; - item->slot_no = mPr_POCKETS_SLOT_COUNT; - item++; - } - - if (submenu->mode != 4) { - if ( - (submenu->menu_type == mSM_OVL_LEDIT && submenu->param0 == 0) || - Common_Get(now_private)->gender == mPr_SEX_MALE - ) { - sAdo_SpecChange(5); - } - else { - sAdo_SpecChange(6); - } - - sAdo_SetVoiceMode(0); - } - } } static void mSM_move_Play(Submenu* submenu) { - (*submenu->move_proc)(submenu); + (*submenu->move_proc)(submenu); } static void mSM_move_End(Submenu* submenu) { - mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL]; - GAME_PLAY* play = (GAME_PLAY*)gamePT; + mSM_dlftbl_c* dlftbl = &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL]; + GAME_PLAY* play = (GAME_PLAY*)gamePT; - (*submenu->move_proc)(submenu); - submenu->process_status = mSM_PROCESS_WAIT; - submenu->menu_type = mSM_OVL_NONE; - submenu->wait_timer = 2; - submenu->open_flag = FALSE; - SetGameFrame(1); + (*submenu->move_proc)(submenu); + submenu->process_status = mSM_PROCESS_WAIT; + submenu->menu_type = mSM_OVL_NONE; + submenu->wait_timer = 2; + submenu->open_flag = FALSE; + SetGameFrame(1); - if (submenu->mode != 4) { - mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); - submenu->mode = 0; - mSc_dmacopy_all_exchange_bank(&play->object_exchange); - SubmenuArea_DoUnlink(dlftbl, submenu); - load_player(submenu); - mSM_load_player_anime(play); - submenu->disable_start_btn_timer = 1; + if (submenu->mode != 4) { + mMsg_Window_c* msg_win = mMsg_Get_base_window_p(); + submenu->mode = 0; + mSc_dmacopy_all_exchange_bank(&play->object_exchange); + SubmenuArea_DoUnlink(dlftbl, submenu); + load_player(submenu); + mSM_load_player_anime(play); + submenu->start_refuse_timer = 1; - if (submenu->after_mode == 12) { - mPlib_request_main_demo_wait_from_submenu((ACTOR*)submenu->overlay->menu_info[mSM_OVL_MSCORE].data2); + if (submenu->after_mode == 12) { + mPlib_request_main_demo_wait_from_submenu((ACTOR*)submenu->overlay->menu_info[mSM_OVL_MSCORE].data2); + } + + if (mMsg_Check_main_hide(msg_win) == FALSE && mMsg_Check_not_series_main_wait(msg_win)) { + mMsg_sound_spec_change_voice(msg_win); + } } - - if (mMsg_Check_main_hide(msg_win) == FALSE && mMsg_Check_not_series_main_wait(msg_win)) { - mMsg_sound_spec_change_voice(msg_win); - } - } } extern void mSM_submenu_move(Submenu* submenu) { - static SUBMENU_PROC move_proc[mSM_PROCESS_NUM] = { - &mSM_move_Wait, - &mSM_move_PREWait, - &mSM_move_LINKWait, - &mSM_move_Play, - &mSM_move_End - }; + static SUBMENU_PROC move_proc[mSM_PROCESS_NUM] = { &mSM_move_Wait, &mSM_move_PREWait, &mSM_move_LINKWait, + &mSM_move_Play, &mSM_move_End }; - (*move_proc[submenu->process_status])(submenu); + (*move_proc[submenu->process_status])(submenu); } extern void mSM_submenu_draw(Submenu* submenu, GAME* game) { - if ( - submenu->mode >= 3 && - submenu->process_status == mSM_PROCESS_PLAY && - SubmenuArea_visit == &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL] - ) { - (*submenu->draw_proc)(submenu, game); - } + if (submenu->mode >= 3 && submenu->process_status == mSM_PROCESS_PLAY && + SubmenuArea_visit == &SubmenuArea_dlftbl[mSM_DLF_SUBMENU_OVL]) { + (*submenu->draw_proc)(submenu, game); + } } static int mSM_check_item_for_furniture(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int cat = ITEM_NAME_GET_CAT(item); - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int cat = ITEM_NAME_GET_CAT(item); + int res = FALSE; - if ( - item != EMPTY_NO && - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && - cat != ITEM1_CAT_FISH && - cat != ITEM1_CAT_KABU && - cat != ITEM1_CAT_INSECT && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) - ) { - res = TRUE; - } + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && cat != ITEM1_CAT_FISH && cat != ITEM1_CAT_KABU && + cat != ITEM1_CAT_INSECT && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12)) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_quest(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; - if ( - item != EMPTY_NO && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) - ) { - res = TRUE; - } + if (item != EMPTY_NO && !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && + item != ITM_KNIFE_AND_FORK && !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4)) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_sell(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; - if ( - item != EMPTY_NO && - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - (ITEM_NAME_GET_TYPE(item) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(item) != ITEM1_CAT_MONEY) && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) - ) { - res = TRUE; - } + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + (ITEM_NAME_GET_TYPE(item) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(item) != ITEM1_CAT_MONEY) && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4)) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_give(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; - if ( - item != EMPTY_NO && - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) - ) { - res = TRUE; - } + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4)) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_take(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int cat = ITEM_NAME_GET_CAT(item); - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int cat = ITEM_NAME_GET_CAT(item); + int res = FALSE; - if ( - item != EMPTY_NO && - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) && - ( - param_2 == 0 || - ( - ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && - ((cat == ITEM1_CAT_FISH && param_2 == 1) || - (cat == ITEM1_CAT_INSECT && param_2 == 2)) - ) - ) - ) { - res = TRUE; - } + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) && + (param_2 == 0 || (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && + ((cat == ITEM1_CAT_FISH && param_2 == 1) || (cat == ITEM1_CAT_INSECT && param_2 == 2))))) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_minidisk(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; - if ( - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && - ITEM_NAME_GET_CAT(item) == ITEM1_CAT_MINIDISK - ) { - return TRUE; - } + if (mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_MINIDISK) { + return TRUE; + } - return FALSE; + return FALSE; } static int mSM_check_item_for_shrine(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - if ( - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_QUEST && - mQst_CheckLimitbyPossessionIdx(slot_no) - ) { - return TRUE; - } + Private_c* priv = Common_Get(now_private); + if (mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_QUEST && + mQst_CheckLimitbyPossessionIdx(slot_no)) { + return TRUE; + } - return FALSE; + return FALSE; } static int mSM_check_item_for_entrust(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; - if ( - item == EMPTY_NO || - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - (ITEM_NAME_GET_TYPE(item) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(item) != ITEM1_CAT_MONEY) && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4) - ) { - res = TRUE; - } + if (item == EMPTY_NO || + mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + (ITEM_NAME_GET_TYPE(item) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(item) != ITEM1_CAT_MONEY) && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_SPIRIT0 && item <= ITM_SPIRIT4)) { + res = TRUE; + } - return res; + return res; } static int mSM_check_item_for_exchange(int slot_no, int exchange_id) { - int res = FALSE; - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; - if ( - item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - item != ITM_SIGNBOARD && item != ITM_KNIFE_AND_FORK && !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) - ) { - if ( - (ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_FISH) && - (ITEM_NAME_GET_TYPE(exchange_id) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(exchange_id) != ITEM1_CAT_FISH) - ) { - PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); - xyz_t water_pos; + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + item != ITM_SIGNBOARD && item != ITM_KNIFE_AND_FORK && + !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12)) { + if ((ITEM_NAME_GET_TYPE(item) == NAME_TYPE_ITEM1 && ITEM_NAME_GET_CAT(item) == ITEM1_CAT_FISH) && + (ITEM_NAME_GET_TYPE(exchange_id) != NAME_TYPE_ITEM1 || ITEM_NAME_GET_CAT(exchange_id) != ITEM1_CAT_FISH)) { + PLAYER_ACTOR* player = GET_PLAYER_ACTOR_NOW(); + xyz_t water_pos; - if (mCoBG_SearchWaterLimitDistN(&water_pos, player->actor_class.world.position, player->actor_class.shape_info.rotation.y, 120.0f, 12) == FALSE) { - return FALSE; - } + if (mCoBG_SearchWaterLimitDistN(&water_pos, player->actor_class.world.position, + player->actor_class.shape_info.rotation.y, 120.0f, 12) == FALSE) { + return FALSE; + } - xyz_t_move(&((GAME_PLAY*)gamePT)->submenu.water_pos, &water_pos); + xyz_t_move(&((GAME_PLAY*)gamePT)->submenu.water_pos, &water_pos); + } + + res = TRUE; } - res = TRUE; - } - - return res; + return res; } static int mSM_check_item_for_curator(int slot_no, int param_2) { - Private_c* priv = Common_Get(now_private); - mActor_name_t item = priv->inventory.pockets[slot_no]; - int res = FALSE; + Private_c* priv = Common_Get(now_private); + mActor_name_t item = priv->inventory.pockets[slot_no]; + int res = FALSE; - if ( - item != EMPTY_NO && - mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && - item != ITM_KNIFE_AND_FORK && - !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12) - ) { - res = TRUE; - } + if (item != EMPTY_NO && mPr_GET_ITEM_COND(priv->inventory.item_conditions, slot_no) == mPr_ITEM_COND_NORMAL && + item != ITM_KNIFE_AND_FORK && !(item >= ITM_EXCERCISE_CARD00 && item <= ITM_EXCERCISE_CARD12)) { + res = TRUE; + } - return res; + return res; } typedef int (*mSM_INVENTORY_CHECK_PROC)(int, int); extern int mSM_check_open_inventory_itemlist(int type, int param_2) { - static mSM_INVENTORY_CHECK_PROC check_process[mSM_IV_OPEN_NUM] = { - NULL, - NULL, - &mSM_check_item_for_entrust, - NULL, - &mSM_check_item_for_quest, - &mSM_check_item_for_sell, - &mSM_check_item_for_give, - NULL, - &mSM_check_item_for_take, - &mSM_check_item_for_furniture, - &mSM_check_item_for_minidisk, - &mSM_check_item_for_shrine, - NULL, - &mSM_check_item_for_exchange, - NULL, - &mSM_check_item_for_curator, - NULL - }; + static mSM_INVENTORY_CHECK_PROC check_process[mSM_IV_OPEN_NUM] = { NULL, + NULL, + &mSM_check_item_for_entrust, + NULL, + &mSM_check_item_for_quest, + &mSM_check_item_for_sell, + &mSM_check_item_for_give, + NULL, + &mSM_check_item_for_take, + &mSM_check_item_for_furniture, + &mSM_check_item_for_minidisk, + &mSM_check_item_for_shrine, + NULL, + &mSM_check_item_for_exchange, + NULL, + &mSM_check_item_for_curator, + NULL }; - mSM_INVENTORY_CHECK_PROC check_proc = check_process[type]; - int i; - int res = 0; + mSM_INVENTORY_CHECK_PROC check_proc = check_process[type]; + int i; + int res = 0; - if (check_proc == NULL) { - return 0xFFFF; /* all slots are valid */ - } - - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - if ((*check_proc)(i, param_2) != FALSE) { - res |= (1 << i); // slot is valid + if (check_proc == NULL) { + return 0xFFFF; /* all slots are valid */ } - } - return res; + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + if ((*check_proc)(i, param_2) != FALSE) { + res |= (1 << i); // slot is valid + } + } + + return res; } static char* mSM_Object_Exchange_keep_new(GAME_PLAY* play, s16 bank_id, size_t size) { - Object_Exchange_c* exchange = &play->object_exchange; - Object_Bank_c* bank = &exchange->banks[exchange->bank_idx]; + Object_Exchange_c* exchange = &play->object_exchange; + Object_Bank_c* bank = &exchange->banks[exchange->bank_idx]; - bank->bank_id = bank_id; - bank->dma_start = exchange->next_bank_ram_address; - bank->ram_start = exchange->next_bank_ram_address; - bank->size = size; + bank->bank_id = bank_id; + bank->dma_start = exchange->next_bank_ram_address; + bank->ram_start = exchange->next_bank_ram_address; + bank->size = size; - if (exchange->bank_idx < mSc_OBJECT_BANK_NUM - 1) { - exchange->next_bank_ram_address = (char*)ALIGN_NEXT((u32)(exchange->next_bank_ram_address + size), 16); - exchange->bank_idx++; - } + if (exchange->bank_idx < mSc_OBJECT_BANK_NUM - 1) { + exchange->next_bank_ram_address = (char*)ALIGN_NEXT((u32)(exchange->next_bank_ram_address + size), 16); + exchange->bank_idx++; + } - return bank->dma_start; + return bank->dma_start; } static void mSM_Object_Exchange_keep_new_MenuTexAndPallet(GAME_PLAY* play, int idx) { - char* tex_p = mSM_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_14, (32*32)/2); - char* pal_p = mSM_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_15, 16 * sizeof(u16)); + char* tex_p = mSM_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_14, (32 * 32) / 2); + char* pal_p = mSM_Object_Exchange_keep_new(play, ACTOR_OBJ_BANK_15, 16 * sizeof(u16)); - play->submenu_ground_tex[idx] = tex_p; - play->submenu_ground_pallet[idx] = pal_p; - mPlib_Load_PlayerTexAndPallet(tex_p, pal_p, Common_Get(now_private)->backgound_texture - ITM_CLOTH_START); + play->submenu_ground_tex[idx] = tex_p; + play->submenu_ground_pallet[idx] = pal_p; + mPlib_Load_PlayerTexAndPallet(tex_p, pal_p, Common_Get(now_private)->backgound_texture - ITM_CLOTH_START); } extern void mSM_Object_Exchange_keep_new_Menu(GAME_PLAY* play) { - play->submenu_ground_idx = 0; - mSM_Object_Exchange_keep_new_MenuTexAndPallet(play, 0); - mSM_Object_Exchange_keep_new_MenuTexAndPallet(play, 1); + play->submenu_ground_idx = 0; + mSM_Object_Exchange_keep_new_MenuTexAndPallet(play, 0); + mSM_Object_Exchange_keep_new_MenuTexAndPallet(play, 1); } extern u8* mSM_Get_ground_tex_p(GAME_PLAY* play) { - int idx = play->submenu_ground_idx; + int idx = play->submenu_ground_idx; - if (idx < 0) { - return NULL; - } + if (idx < 0) { + return NULL; + } - return (u8*)play->submenu_ground_tex[idx]; + return (u8*)play->submenu_ground_tex[idx]; } extern u16* mSM_Get_ground_pallet_p(GAME_PLAY* play) { - int idx = play->submenu_ground_idx; + int idx = play->submenu_ground_idx; - if (idx < 0) { - return NULL; - } + if (idx < 0) { + return NULL; + } - return (u16*)play->submenu_ground_pallet[idx]; + return (u16*)play->submenu_ground_pallet[idx]; } diff --git a/src/m_titledemo.c b/src/m_titledemo.c index ab9d68ed..b1f93b1a 100644 --- a/src/m_titledemo.c +++ b/src/m_titledemo.c @@ -19,169 +19,161 @@ static int S_tdemo_frame; static u16 S_titledemo_to_play; static u16 get_demo_header(int titledemo_no, int key) { - static u16* pact_data_header_pt[mTD_TITLE_DEMO_NUM] = { - pact0_head_table, pact1_head_table, pact2_head_table, pact3_head_table, pact4_head_table - }; + static u16* pact_data_header_pt[mTD_TITLE_DEMO_NUM] = { pact0_head_table, pact1_head_table, pact2_head_table, + pact3_head_table, pact4_head_table }; - return pact_data_header_pt[titledemo_no][key]; + return pact_data_header_pt[titledemo_no][key]; } extern int mTD_demono_get() { - if (S_now_demono == -1) { - S_now_demono = 1; - } - else { - S_now_demono++; - if (S_now_demono > mTD_TITLE_DEMO_NUM) { - S_now_demono = 1; + if (S_now_demono == -1) { + S_now_demono = 1; + } else { + S_now_demono++; + if (S_now_demono > mTD_TITLE_DEMO_NUM) { + S_now_demono = 1; + } } - } - return S_now_demono; + return S_now_demono; } extern void mTD_player_keydata_init(GAME_PLAY* play) { - PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); + PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); - if (mEv_CheckTitleDemo() > 0) { - u16 angle; - mActor_name_t tool = get_demo_header(mEv_CheckTitleDemo() - 1, mTD_HEADER_TOOL); + if (mEv_CheckTitleDemo() > 0) { + u16 angle; + mActor_name_t tool = get_demo_header(mEv_CheckTitleDemo() - 1, mTD_HEADER_TOOL); - if (tool == ITM_AXE) { - tool = ITM_AXE; - } - else if (tool == ITM_ROD) { - tool = ITM_ROD; - } - else if (tool == ITM_UMBRELLA00) { - tool = ITM_UMBRELLA00; + if (tool == ITM_AXE) { + tool = ITM_AXE; + } else if (tool == ITM_ROD) { + tool = ITM_ROD; + } else if (tool == ITM_UMBRELLA00) { + tool = ITM_UMBRELLA00; + } + + mPlib_SetData2_controller_data_for_title_demo(tool); + angle = get_demo_header(mEv_CheckTitleDemo() - 1, mTD_HEADER_ROTATION); + + player->actor_class.shape_info.rotation.y = angle; + player->actor_class.world.angle.y = angle; } - mPlib_SetData2_controller_data_for_title_demo(tool); - angle = get_demo_header(mEv_CheckTitleDemo() - 1, mTD_HEADER_ROTATION); - - player->actor_class.shape_info.rotation.y = angle; - player->actor_class.world.angle.y = angle; - } - - S_tdemo_frame = 0; + S_tdemo_frame = 0; } static u16 get_tdemo_keydata(int frame) { - /* BUG: this was probably meant to be marked as static */ - u16* pact_data_keydata_pt[mTD_TITLE_DEMO_NUM] = { pact0_key_data, pact1_key_data, pact2_key_data, pact3_key_data, pact4_key_data }; + /* BUG: this was probably meant to be marked as static */ + u16* pact_data_keydata_pt[mTD_TITLE_DEMO_NUM] = { pact0_key_data, pact1_key_data, pact2_key_data, pact3_key_data, + pact4_key_data }; - return pact_data_keydata_pt[mEv_CheckTitleDemo() - 1][frame]; + return pact_data_keydata_pt[mEv_CheckTitleDemo() - 1][frame]; } -#define mTD_KEYDATA_A(d) ((d) & 1) -#define mTD_KEYDATA_B(d) (((d) >> 8) & 1) -#define mTD_KEYDATA_STICKX(d) (((s16)(d) & 0xFE00) / 512) -#define mTD_KEYDATA_STICKY(d) (((s16)((d) << 8) & 0xFE00) / 512) - -/* @nonmatching */ +/* @fakematch? - the weirdness with btn_a needing to be assigned to a u8 then int needs to be investigated */ static void set_player_demo_keydata(int frame) { - u16 keydata0; - u16 keydata1; - int k0_sx; - int k0_sy; - int k1_sx; - int k1_sy; - f32 stick_x; - f32 stick_y; - int btn_a; - int btn_b; - int f0; - int f1; + u16 keydata0; + u16 keydata1; + s8 k0_sx; + s8 k0_sy; + s8 k1_sx; + s8 k1_sy; + f32 stick_x; + f32 stick_y; + u8 tmp_a; + int btn_a; + int btn_b; + int f0; + int f1; - /* convert 60fps framerate to 30fps input */ - f0 = frame / 2; - f1 = f0 + (frame % 2); - - if (f0 != f1 && f1 < 1800) { - keydata0 = get_tdemo_keydata(f0); - keydata1 = get_tdemo_keydata(f1); + /* convert 60fps framerate to 30fps input */ + f0 = frame / 2; + f1 = f0 + (frame % 2); - k0_sx = (s16)(keydata0 & 0xFE00) / 512; - k0_sy = (s16)((keydata0 & 0x00FE) << 8) / 512; - k1_sx = (s16)(keydata1 & 0xFE00) / 512; - k1_sy = (s16)((keydata1 & 0x00FE) << 8) / 512; - - /* blend stick inputs between the current frame & next frame */ - stick_x = ((f32)(s8)k0_sx + (f32)(s8)k1_sx) / 2.0f; - stick_y = ((f32)(s8)k0_sy + (f32)(s8)k1_sy) / 2.0f; - - btn_a = mTD_KEYDATA_A(keydata0); - btn_b = mTD_KEYDATA_B(keydata0); - } - else { - keydata0 = get_tdemo_keydata(f0); - k0_sx = (s16)(keydata0 & 0xFE00) / 512; - k0_sy = (s16)((keydata0 & 0x00FE) << 8) / 512; - - // single line does not make it any better - stick_x = (f32)(s8)k0_sx; - stick_y = (f32)(s8)k0_sy; - - btn_a = keydata0 & 1; - btn_b = (keydata0 >> 8) & 1; - } - mPlib_SetData1_controller_data_for_title_demo(stick_x, stick_y, btn_a, btn_b); + if (f0 != f1 && f1 < 1800) { + keydata0 = get_tdemo_keydata(f0); + keydata1 = get_tdemo_keydata(f1); + + k0_sx = (s16)(keydata0 & 0xFE00) / 512; + k0_sy = (s16)((keydata0 & 0x00FE) << 8) / 512; + k1_sx = (s16)(keydata1 & 0xFE00) / 512; + k1_sy = (s16)((keydata1 & 0x00FE) << 8) / 512; + + /* blend stick inputs between the current frame & next frame */ + stick_x = ((f32)(int)k0_sx + (f32)(int)k1_sx) / 2.0f; + stick_y = ((f32)(int)k0_sy + (f32)(int)k1_sy) / 2.0f; + + tmp_a = keydata0 & 1; + btn_a = tmp_a; + btn_b = (u8)(keydata0 >> 8) & 1; + } else { + keydata0 = get_tdemo_keydata(f0); + k0_sx = ((s16)(keydata0 & 0xFE00)) / 512; + k0_sy = ((s16)((keydata0 & 0x00FE) << 8)) / 512; + + stick_x = (f32)(int)k0_sx; + stick_y = (f32)(int)k0_sy; + + tmp_a = keydata0 & 1; + btn_a = tmp_a; + btn_b = (u8)(keydata0 >> 8) & 1; + } + mPlib_SetData1_controller_data_for_title_demo(btn_a, btn_b, (f32)stick_x, (f32)stick_y); } static void mTD_game_end_init(GAME_PLAY* play) { - play->fb_fade_type = 10; // TODO: enum/define - play->fb_wipe_type = 3; // TODO: enum/define + play->fb_fade_type = 10; // TODO: enum/define + play->fb_wipe_type = 3; // TODO: enum/define - mPlib_request_main_invade_type1(play); - mBGMPsComp_make_ps_wipe(0x521C); // TODO: enum/define + mPlib_request_main_invade_type1((GAME*)play); + mBGMPsComp_make_ps_wipe(0x521C); // TODO: enum/define } extern void title_demo_move(GAME_PLAY* play) { - if (mEv_CheckTitleDemo() > 0) { - set_player_demo_keydata(S_tdemo_frame); - S_tdemo_frame++; + if (mEv_CheckTitleDemo() > 0) { + set_player_demo_keydata(S_tdemo_frame); + S_tdemo_frame++; - if (S_tdemo_frame >= 3600) { - mTD_game_end_init(play); + if (S_tdemo_frame >= 3600) { + mTD_game_end_init(play); + } } - } } extern void mTD_rtc_set() { - if (S_titledemo_to_play == TRUE) { - S_titledemo_to_play = FALSE; + if (S_titledemo_to_play == TRUE) { + S_titledemo_to_play = FALSE; - if (Common_Get(time.rtc_crashed) == TRUE) { - lbRTC_TimeCopy(Common_GetPointer(time.rtc_time), Common_GetPointer(newly_set_time)); - } - else { - lbRTC_GetTime(Common_GetPointer(time.rtc_time)); - } + if (Common_Get(time.rtc_crashed) == TRUE) { + lbRTC_TimeCopy(Common_GetPointer(time.rtc_time), Common_GetPointer(newly_set_time)); + } else { + lbRTC_GetTime(Common_GetPointer(time.rtc_time)); + } - Common_Set(time.rtc_enabled, TRUE); - mTM_set_season(); - } + Common_Set(time.rtc_enabled, TRUE); + mTM_set_season(); + } } extern void mTD_rtc_reserve() { - S_titledemo_to_play = TRUE; + S_titledemo_to_play = TRUE; } extern int mTD_get_titledemo_no() { - int titledemo_no = S_now_demono; - if (titledemo_no <= 0) { - titledemo_no = 1; - } + int titledemo_no = S_now_demono; + if (titledemo_no <= 0) { + titledemo_no = 1; + } - return titledemo_no - 1; + return titledemo_no - 1; } extern int mTD_tdemo_button_ok_check() { - int res = TRUE; - if (S_tdemo_frame >= 3530) { - res = FALSE; - } - - return res; + int res = TRUE; + if (S_tdemo_frame >= 3530) { + res = FALSE; + } + + return res; } diff --git a/src/m_trademark.c b/src/m_trademark.c index 5aa469ae..25773177 100644 --- a/src/m_trademark.c +++ b/src/m_trademark.c @@ -34,388 +34,328 @@ static int mTR_first_flag = TRUE; -static Door_data_c demo_1_door_data = { - SCENE_TITLE_DEMO, - 4, - FALSE, - 0, - { 2180, 200, 824 }, - EMPTY_NO, - 3, - {0,0,0} -}; +static Door_data_c demo_1_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 2180, 200, 824 }, EMPTY_NO, 3, { 0, 0, 0 } }; -static Door_data_c demo_2_door_data = { - SCENE_TITLE_DEMO, - 4, - FALSE, - 0, - { 3218, 40, 3074 }, - EMPTY_NO, - 3, - {0,0,0} -}; +static Door_data_c demo_2_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 3218, 40, 3074 }, EMPTY_NO, 3, { 0, 0, 0 } }; -static Door_data_c demo_3_door_data = { - SCENE_TITLE_DEMO, - 4, - FALSE, - 0, - { 2117, 160, 1488 }, - EMPTY_NO, - 3, - {0,0,0} -}; +static Door_data_c demo_3_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 2117, 160, 1488 }, EMPTY_NO, 3, { 0, 0, 0 } }; -static Door_data_c demo_4_door_data = { - SCENE_TITLE_DEMO, - 4, - FALSE, - 0, - { 2899, 160, 1101 }, - EMPTY_NO, - 3, - {0,0,0} -}; +static Door_data_c demo_4_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 2899, 160, 1101 }, EMPTY_NO, 3, { 0, 0, 0 } }; -static Door_data_c demo_5_door_data = { - SCENE_TITLE_DEMO, - 4, - FALSE, - 0, - { 1578, 40, 2472 }, - EMPTY_NO, - 3, - {0,0,0} -}; +static Door_data_c demo_5_door_data = { SCENE_TITLE_DEMO, 4, FALSE, 0, { 1578, 40, 2472 }, EMPTY_NO, 3, { 0, 0, 0 } }; -static Door_data_c* l_demo_door_data_table[mTD_TITLE_DEMO_NUM] = { - &demo_1_door_data, - &demo_2_door_data, - &demo_3_door_data, - &demo_4_door_data, - &demo_5_door_data -}; +static Door_data_c* l_demo_door_data_table[mTD_TITLE_DEMO_NUM] = { &demo_1_door_data, &demo_2_door_data, + &demo_3_door_data, &demo_4_door_data, + &demo_5_door_data }; -#define DEMO_NPC(name, bx, bz, utx, utz) { NPC_##name, (bx), (bz), (utx), (utz) } +#define DEMO_NPC(name, bx, bz, utx, utz) \ + { NPC_##name, (bx), (bz), (utx), (utz) } static mNpc_demo_npc_c demo_npc_list[] = { - DEMO_NPC(BOB, 1, 2, 3, 7), - DEMO_NPC(PAOLO, 1, 2, 8, 11), - DEMO_NPC(VESTA, 1, 4, 12, 11), - DEMO_NPC(JOEY, 2, 3, 5, 6), - DEMO_NPC(LOBO, 2, 3, 4, 12), - DEMO_NPC(CARRIE, 3, 5, 11, 5), - DEMO_NPC(TANK, 4, 3, 3, 12), - DEMO_NPC(BUZZ, 4, 4, 3, 4), - DEMO_NPC(RASHER, 4, 4, 12, 13), - DEMO_NPC(BIFF, 4, 6, 5, 6), - DEMO_NPC(SAMSON, 5, 2, 12, 4), - DEMO_NPC(JANE, 5, 2, 9, 11), - DEMO_NPC(TYBALT, 5, 4, 11, 4), - /* @BUG - mNpc_SetAnimalTitleDemo uses ANIMAL_NUM_MAX (15) but only 14 are set */ - #ifndef BUGFIXES - DEMO_NPC(CUBE, 5, 5, 5, 11) - #else - DEMO_NPC(CUBE, 5, 5, 5, 11), - { EMPTY_NO, 0, 0, 0, 0 } - #endif + DEMO_NPC(BOB, 1, 2, 3, 7), DEMO_NPC(PAOLO, 1, 2, 8, 11), DEMO_NPC(VESTA, 1, 4, 12, 11), + DEMO_NPC(JOEY, 2, 3, 5, 6), DEMO_NPC(LOBO, 2, 3, 4, 12), DEMO_NPC(CARRIE, 3, 5, 11, 5), + DEMO_NPC(TANK, 4, 3, 3, 12), DEMO_NPC(BUZZ, 4, 4, 3, 4), DEMO_NPC(RASHER, 4, 4, 12, 13), + DEMO_NPC(BIFF, 4, 6, 5, 6), DEMO_NPC(SAMSON, 5, 2, 12, 4), DEMO_NPC(JANE, 5, 2, 9, 11), + DEMO_NPC(TYBALT, 5, 4, 11, 4), +/* @BUG - mNpc_SetAnimalTitleDemo uses ANIMAL_NUM_MAX (15) but only 14 are set */ +#ifndef BUGFIXES + DEMO_NPC(CUBE, 5, 5, 5, 11) +#else + DEMO_NPC(CUBE, 5, 5, 5, 11), { EMPTY_NO, 0, 0, 0, 0 } +#endif }; static int demo_npc_num = sizeof(demo_npc_list) / sizeof(mNpc_demo_npc_c); static int set_npc_4_title_demo(GAME_TRADEMARK* trademark) { - Animal_c* animals = Save_Get(animals); - - mNpc_SetAnimalTitleDemo(demo_npc_list, animals, (GAME*)trademark); - mNpc_SetNpcList(Common_Get(npclist), animals, demo_npc_num, 0); + Animal_c* animals = Save_Get(animals); - return demo_npc_num; + mNpc_SetAnimalTitleDemo(demo_npc_list, animals, (GAME*)trademark); + mNpc_SetNpcList(Common_Get(npclist), animals, demo_npc_num, 0); + + return demo_npc_num; } typedef struct tradeday_s { - lbRTC_month_t month; - lbRTC_day_t day; - lbRTC_hour_t hour; - s16 weather; + lbRTC_month_t month; + lbRTC_day_t day; + lbRTC_hour_t hour; + s16 weather; } mTM_tradeday_c; static void mTM_demotime_set(int title_no) { - static mTM_tradeday_c tradeday_table[] = { - { lbRTC_APRIL, 6, 13, mEnv_WEATHER_SAKURA }, /* April 6th @ 1pm, Cherry Blossoms */ - { lbRTC_JUNE, 16, 13, mEnv_WEATHER_RAIN }, /* June 16th @ 1pm, Raining */ - { lbRTC_AUGUST, 1, 6, mEnv_WEATHER_CLEAR }, /* August 1st @ 6am, Clear */ - { lbRTC_NOVEMBER, 1, 16, mEnv_WEATHER_CLEAR }, /* November 1st @ 4pm, Clear */ - { lbRTC_FEBRUARY, 1, 2, mEnv_WEATHER_SNOW } /* February 1st @ 2am, Snowing */ - }; + static mTM_tradeday_c tradeday_table[] = { + { lbRTC_APRIL, 6, 13, mEnv_WEATHER_SAKURA }, /* April 6th @ 1pm, Cherry Blossoms */ + { lbRTC_JUNE, 16, 13, mEnv_WEATHER_RAIN }, /* June 16th @ 1pm, Raining */ + { lbRTC_AUGUST, 1, 6, mEnv_WEATHER_CLEAR }, /* August 1st @ 6am, Clear */ + { lbRTC_NOVEMBER, 1, 16, mEnv_WEATHER_CLEAR }, /* November 1st @ 4pm, Clear */ + { lbRTC_FEBRUARY, 1, 2, mEnv_WEATHER_SNOW } /* February 1st @ 2am, Snowing */ + }; - Common_Set(time.rtc_enabled, FALSE); - Common_Set(time.rtc_time.year, GAME_YEAR_MIN + 1); - Common_Set(time.rtc_time.min, 0); + Common_Set(time.rtc_enabled, FALSE); + Common_Set(time.rtc_time.year, GAME_YEAR_MIN + 1); + Common_Set(time.rtc_time.min, 0); - if (title_no != 0) { - Common_Set(time.rtc_time.month, tradeday_table[(title_no - 1)].month); - Common_Set(time.rtc_time.day, tradeday_table[(title_no - 1)].day); - Common_Set(time.rtc_time.hour, tradeday_table[(title_no - 1)].hour); - Common_Set(weather, tradeday_table[(title_no - 1)].weather); - } + if (title_no != 0) { + Common_Set(time.rtc_time.month, tradeday_table[(title_no - 1)].month); + Common_Set(time.rtc_time.day, tradeday_table[(title_no - 1)].day); + Common_Set(time.rtc_time.hour, tradeday_table[(title_no - 1)].hour); + Common_Set(weather, tradeday_table[(title_no - 1)].weather); + } } static void trademark_goto_demo_scene(GAME_TRADEMARK* trademark) { - int demo_no; - int i; - Private_c* n_private; - Save_t* save; - Private_c* private; + int demo_no; + int i; + Private_c* n_private; + Save_t* save; + Private_c* private; - save = Common_GetPointer(save.save); - mCPk_InitPak(0); - n_private = Save_Get(private); - Common_Set(now_private, n_private); + save = Common_GetPointer(save.save); + mCPk_InitPak(0); + n_private = Save_Get(private_data); + Common_Set(now_private, n_private); - if (mFRm_CheckSaveData() == FALSE) { - bzero(save, sizeof(Save_t)); - mFRm_ClearSaveCheckData(Save_GetPointer(save_check)); + if (mFRm_CheckSaveData() == FALSE) { + bzero(save, sizeof(Save_t)); + mFRm_ClearSaveCheckData(Save_GetPointer(save_check)); - private = n_private; - for (i = 0; i < PLAYER_NUM; i++) { - mPr_ClearPrivateInfo(private); - private++; + private = n_private; + for (i = 0; i < PLAYER_NUM; i++) { + mPr_ClearPrivateInfo(private); + private++; + } + + Save_Set(land_info.exists, TRUE); + Common_Set(house_owner_name, RSV_NO); + Common_Set(last_field_id, -1); } - Save_Set(land_info.exists, TRUE); - Common_Set(house_owner_name, RSV_NO); - Common_Set(last_field_id, -1); - } + mEv_ClearEventInfo(); - mEv_ClearEventInfo(); + demo_no = mEv_CheckTitleDemo(); + if (demo_no > 0) { + Door_data_c* demo_door_data = l_demo_door_data_table[demo_no - 1]; - demo_no = mEv_CheckTitleDemo(); - if (demo_no > 0) { - Door_data_c* demo_door_data = l_demo_door_data_table[demo_no - 1]; + Common_Set(door_data, *demo_door_data); + Common_Set(door_data.next_scene_id, demo_door_data->next_scene_id + 1); // go to next demo scene + mTM_demotime_set(demo_no); // set demo date, time, and weather + mPr_RandomSetPlayerData_title_demo(); // randomize player data + set_npc_4_title_demo(trademark); // set animals in the demo + Common_Set(transition.wipe_type, 3); + } - Common_Set(door_data, *demo_door_data); - Common_Set(door_data.next_scene_id, demo_door_data->next_scene_id + 1); // go to next demo scene - mTM_demotime_set(demo_no); // set demo date, time, and weather - mPr_RandomSetPlayerData_title_demo(); // randomize player data - set_npc_4_title_demo(trademark); // set animals in the demo - Common_Set(transition.wipe_type, 3); - } - - Save_Set(scene_no, SCENE_TITLE_DEMO); - mTM_set_season(); - Common_Set(submenu_disabled, TRUE); - GAME_GOTO_NEXT((GAME*)trademark, play, PLAY); + Save_Set(scene_no, SCENE_TITLE_DEMO); + mTM_set_season(); + Common_Set(submenu_disabled, TRUE); + GAME_GOTO_NEXT((GAME*)trademark, play, PLAY); } static void nintendo_logo_move(GAME_TRADEMARK* trademark) { - int timer; - int alpha2; - if (trademark->stage == 2) { - alpha2 = trademark->alpha2; - alpha2 += 0x880; - if (alpha2 >= 0xFF00) { - trademark->stage = 4; - alpha2 = 0xFF00; - } + int timer; + int alpha2; + if (trademark->stage == 2) { + alpha2 = trademark->alpha2; + alpha2 += 0x880; + if (alpha2 >= 0xFF00) { + trademark->stage = 4; + alpha2 = 0xFF00; + } - trademark->alpha2 = alpha2; - } - else if (trademark->stage == 4) { - if (trademark->logo_timer == 0) { - timer = 0; - } - else { - timer = --trademark->logo_timer; - } + trademark->alpha2 = alpha2; + } else if (trademark->stage == 4) { + if (trademark->logo_timer == 0) { + timer = 0; + } else { + timer = --trademark->logo_timer; + } - if (timer == 0) { - trademark->stage = 3; + if (timer == 0) { + trademark->stage = 3; + } } - } } static void nintendo_logo_draw(GAME_TRADEMARK* trademark) { - Gfx* gfx; - GRAPH* g = trademark->game.graph; - u8 a; + Gfx* gfx; + GRAPH* g = trademark->game.graph; + u8 a; - OPEN_DISP(g); - nintendo_logo_move(trademark); - gfx = NOW_POLY_OPA_DISP; - a = trademark->alpha2 >> 8; - make_dl_nintendo_logo(&gfx, a); - SET_POLY_OPA_DISP(gfx); - CLOSE_DISP(g); + OPEN_DISP(g); + nintendo_logo_move(trademark); + gfx = NOW_POLY_OPA_DISP; + a = trademark->alpha2 >> 8; + make_dl_nintendo_logo(&gfx, a); + SET_POLY_OPA_DISP(gfx); + CLOSE_DISP(g); } static void trademark_cancel(GAME_TRADEMARK* trademark) { - if (trademark->cancel != FALSE) { - return; - } + if (trademark->cancel != FALSE) { + return; + } - if (trademark->stage != 4) { - return; - } + if (trademark->stage != 4) { + return; + } - if (Common_Get(pad_connected) == FALSE) { - return; - } + if (Common_Get(pad_connected) == FALSE) { + return; + } - if ((gamePT->pads[0].on.button & BUTTON_START) != BUTTON_START) { - return; - } + if ((gamePT->pads[0].on.button & BUTTON_START) != BUTTON_START) { + return; + } - trademark->cancel = TRUE; + trademark->cancel = TRUE; } static void trademark_move(GAME_TRADEMARK* trademark) { - static u8 s_titlebgm[mTD_TITLE_DEMO_NUM] = { 83, 84, 85, 86, 87 }; // TODO: convert to enum/definitions + static u8 s_titlebgm[mTD_TITLE_DEMO_NUM] = { 83, 84, 85, 86, 87 }; // TODO: convert to enum/definitions - if (trademark->stage == 0) { - int titledemo_no = mTD_get_titledemo_no(); - mBGMPsComp_make_ps_lost_fanfare(s_titlebgm[titledemo_no], 360); - trademark->alpha = 0; - trademark->stage = 1; - } - - if (trademark->stage == 1) { - int move_timer; - if (trademark->move_timer == 0) { - move_timer = 0; - } - else { - move_timer = --trademark->move_timer; + if (trademark->stage == 0) { + int titledemo_no = mTD_get_titledemo_no(); + mBGMPsComp_make_ps_lost_fanfare(s_titlebgm[titledemo_no], 360); + trademark->alpha = 0; + trademark->stage = 1; } - if (move_timer == 0) { - trademark->stage = 2; - } - } + if (trademark->stage == 1) { + int move_timer; + if (trademark->move_timer == 0) { + move_timer = 0; + } else { + move_timer = --trademark->move_timer; + } - if (trademark->stage == 3 || trademark->cancel) { - if (trademark->alpha < 0xFF00) { - trademark->alpha += 0x880; + if (move_timer == 0) { + trademark->stage = 2; + } } - if (trademark->check != TRUE) { - trademark->check = TRUE; - } + if (trademark->stage == 3 || trademark->cancel) { + if (trademark->alpha < 0xFF00) { + trademark->alpha += 0x880; + } - if (trademark->alpha >= 0xFF00 && trademark->check == TRUE) { - trademark->alpha = 0xFF00; - trademark->stage = 5; + if (trademark->check != TRUE) { + trademark->check = TRUE; + } + + if (trademark->alpha >= 0xFF00 && trademark->check == TRUE) { + trademark->alpha = 0xFF00; + trademark->stage = 5; + } } - } } static void trademark_draw(GAME_TRADEMARK* trademark) { - GRAPH* g = trademark->game.graph; - Gfx* gfx; - - OPEN_DISP(g); + GRAPH* g = trademark->game.graph; + Gfx* gfx; - gSPSegment(NOW_POLY_OPA_DISP++, 0, 0); - DisplayList_initialize(g, 0, 0, 0, NULL); - if (mTR_first_flag == FALSE) { - if (trademark->stage >= 2) { - nintendo_logo_draw(trademark); + OPEN_DISP(g); + + gSPSegment(NOW_POLY_OPA_DISP++, 0, 0); + DisplayList_initialize(g, 0, 0, 0, NULL); + if (mTR_first_flag == FALSE) { + if (trademark->stage >= 2) { + nintendo_logo_draw(trademark); + } + + gfx = NOW_POLY_XLU_DISP; + fade_black_draw(&gfx, trademark->alpha >> 8); + SET_POLY_XLU_DISP(gfx); } - gfx = NOW_POLY_XLU_DISP; - fade_black_draw(&gfx, trademark->alpha >> 8); - SET_POLY_XLU_DISP(gfx); - } - - CLOSE_DISP(g); + CLOSE_DISP(g); } static void trademark_main(GAME* game) { - GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; - GRAPH* g; + GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; + GRAPH* g; - fqrand(); /* increment qrand seed every frame */ - trademark_cancel(trademark); - trademark_move(trademark); - trademark_draw(trademark); + fqrand(); /* increment qrand seed every frame */ + trademark_cancel(trademark); + trademark_move(trademark); + trademark_draw(trademark); - g = game->graph; - game_debug_draw_last(game, g); - game_draw_last(g); + g = game->graph; + game_debug_draw_last(game, g); + game_draw_last(g); - if (trademark->stage == 5) { - trademark->stage = 0; - trademark_goto_demo_scene(trademark); - mTR_first_flag = FALSE; - } + if (trademark->stage == 5) { + trademark->stage = 0; + trademark_goto_demo_scene(trademark); + mTR_first_flag = FALSE; + } } extern void trademark_cleanup(GAME* game) { - GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; - mHm_hs_c* home = Save_Get(homes); - int i; + GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; + mHm_hs_c* home = Save_Get(homes); + int i; - for (i = 0; i < PLAYER_NUM; i++) { - home->outlook_pal = i; - home->next_outlook_pal = i; + for (i = 0; i < PLAYER_NUM; i++) { + home->outlook_pal = i; + home->next_outlook_pal = i; - mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE); - home++; - } + mMl_clear_mail_box(home->mailbox, HOME_MAILBOX_SIZE); + home++; + } - JW_SetLogoMode(0); - SoftResetEnable = TRUE; + JW_SetLogoMode(0); + SoftResetEnable = TRUE; } extern void trademark_init(GAME* game) { - GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; - GRAPH* g = game->graph; + GAME_TRADEMARK* trademark = (GAME_TRADEMARK*)game; + GRAPH* g = game->graph; - common_data_reinit(); - mFI_SetClimate(mFI_CLIMATE_0); - game->exec = &trademark_main; - game->cleanup = &trademark_cleanup; - initView(&trademark->view, g); - new_Matrix(game); - trademark->alpha = 0xFF00; - trademark->alpha2 = 0; - trademark->logo_timer = 60; - trademark->move_timer = 16; - trademark->unused_254 = 0; - trademark->unused_210 = 0; - trademark->stage = 0; - trademark->unused_200.x = 0.0f; - trademark->unused_200.y = 0.0f; - trademark->unused_200.z = 0.0f; - trademark->unused_20c = 0.5f; - trademark->unused_25a62 = 0; - trademark->unused_25a64 = 5072; - trademark->unused_25a67 = 0; - trademark->cancel = FALSE; - trademark->check = FALSE; + common_data_reinit(); + mFI_SetClimate(mFI_CLIMATE_0); + game->exec = &trademark_main; + game->cleanup = &trademark_cleanup; + initView(&trademark->view, g); + new_Matrix(game); + trademark->alpha = 0xFF00; + trademark->alpha2 = 0; + trademark->logo_timer = 60; + trademark->move_timer = 16; + trademark->unused_254 = 0; + trademark->unused_210 = 0; + trademark->stage = 0; + trademark->unused_200.x = 0.0f; + trademark->unused_200.y = 0.0f; + trademark->unused_200.z = 0.0f; + trademark->unused_20c = 0.5f; + trademark->unused_25a62 = 0; + trademark->unused_25a64 = 5072; + trademark->unused_25a67 = 0; + trademark->cancel = FALSE; + trademark->check = FALSE; - if (mTR_first_flag) { - trademark->stage = 5; - } + if (mTR_first_flag) { + trademark->stage = 5; + } - SetGameFrame(1); - viBlack(FALSE); - JW_SetLogoMode(1); - mMsg_aram_init(); + SetGameFrame(1); + viBlack(FALSE); + JW_SetLogoMode(1); + mMsg_aram_init(); - Common_Set(player_no, 0); - Common_Set(player_data_mode, 0); - Common_Set(scene_from_title_demo, -1); - mNpc_ClearCacheName(); - mNpc_ClearInAnimal(); - mNpc_FirstClearGoodbyMail(); - mQst_ClearGrabItemInfo(); - mNpc_ClearIslandNpcRoomData(); - mCD_InitAll(); - mISL_ClearKeepIsland(); - mBI_ct(); - mFont_ct(); - mBGMPsComp_scene_mode(0); - mVibctl_init0(); - mFRm_clear_err_info(); - mEv_SetTitleDemo(mTD_demono_get()); + Common_Set(player_no, 0); + Common_Set(player_data_mode, 0); + Common_Set(scene_from_title_demo, -1); + mNpc_ClearCacheName(); + mNpc_ClearInAnimal(); + mNpc_FirstClearGoodbyMail(); + mQst_ClearGrabItemInfo(); + mNpc_ClearIslandNpcRoomData(); + mCD_InitAll(); + mISL_ClearKeepIsland(); + mBI_ct(); + mFont_ct(); + mBGMPsComp_scene_mode(0); + mVibctl_init0(); + mFRm_clear_err_info(); + mEv_SetTitleDemo(mTD_demono_get()); } diff --git a/src/m_train_control.c b/src/m_train_control.c index 31ac381a..9fdc4b3b 100644 --- a/src/m_train_control.c +++ b/src/m_train_control.c @@ -13,518 +13,488 @@ #include "m_name_table.h" #include "m_collision_bg.h" -#define mTRC_RTC_TIME_SECONDS(rtc_time) (rtc_time->sec + (rtc_time->min + rtc_time->hour * mTM_MINUTES_IN_HOUR) * mTM_SECONDS_IN_MINUTE) +#define mTRC_RTC_TIME_SECONDS(rtc_time) \ + (rtc_time->sec + (rtc_time->min + rtc_time->hour * mTM_MINUTES_IN_HOUR) * mTM_SECONDS_IN_MINUTE) static void mTRC_SetMicPos(GAME_PLAY* play, xyz_t* mic_pos) { - xyz_t pos; - PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); - Door_data_c* door = Common_GetPointer(structure_exit_door_data); - f32 z = cosf_table(0.0f) * 77.0f; // cos(0) = 1, 1.0f * 77.0f = 77.0f - f32 x = sinf_table(0.0f) * 77.0f; // sin(0) = 0, 0.0f * 77.0f = 0.0f + xyz_t pos; + PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); + Door_data_c* door = Common_GetPointer(structure_exit_door_data); + f32 z = cosf_table(0.0f) * 77.0f; // cos(0) = 1, 1.0f * 77.0f = 77.0f + f32 x = sinf_table(0.0f) * 77.0f; // sin(0) = 0, 0.0f * 77.0f = 0.0f - if (Common_Get(field_type) != mFI_FIELDTYPE2_FG) { - xyz_t_move_s_xyz(&pos, &door->exit_position); - } - else { - if (player != NULL) { - xyz_t_move(&pos, &player->actor_class.world.position); + if (Common_Get(field_type) != mFI_FIELDTYPE2_FG) { + xyz_t_move_s_xyz(&pos, &door->exit_position); + } else { + if (player != NULL) { + xyz_t_move(&pos, &player->actor_class.world.position); + } else { + xyz_t_move(&pos, &ZeroVec); + } } - else { - xyz_t_move(&pos, &ZeroVec); - } - } - mic_pos->x = pos.x + x; // equates to pos.x + 0.0f = pos.x - mic_pos->y = pos.y + 240.0f; - mic_pos->z = pos.z + z; // equates to pos.z + 77.0f + mic_pos->x = pos.x + x; // equates to pos.x + 0.0f = pos.x + mic_pos->y = pos.y + 240.0f; + mic_pos->z = pos.z + z; // equates to pos.z + 77.0f } static void mTRC_KishaStatusLevel(GAME_PLAY* play, xyz_t pos, f32 speed) { - xyz_t mic_pos; + xyz_t mic_pos; - f32 x; - f32 y; - f32 z; + f32 x; + f32 y; + f32 z; - s16 angle; - u16 unsigned_angle; - f32 distance; + s16 angle; + u16 unsigned_angle; + f32 distance; - s16 angle2; - u16 unsigned_angle2; - f32 distance2; + s16 angle2; + u16 unsigned_angle2; + f32 distance2; - mTRC_SetMicPos(play, &mic_pos); - x = pos.x - mic_pos.x; - y = pos.y - mic_pos.y; - z = pos.z - mic_pos.z; + mTRC_SetMicPos(play, &mic_pos); + x = pos.x - mic_pos.x; + y = pos.y - mic_pos.y; + z = pos.z - mic_pos.z; - angle = atans_table(z, x); - distance = sqrtf(x * x + y * y + z * z); - unsigned_angle = (int)angle; + angle = atans_table(z, x); + distance = sqrtf(x * x + y * y + z * z); + unsigned_angle = (int)angle; - x = (pos.x - 250.0f) - mic_pos.x; - y = pos.y - mic_pos.y; - z = pos.z - mic_pos.z; + x = (pos.x - 250.0f) - mic_pos.x; + y = pos.y - mic_pos.y; + z = pos.z - mic_pos.z; - angle2 = atans_table(z, x); - distance2 = sqrtf(x * x + y * y + z * z); - unsigned_angle2 = (int)angle2; + angle2 = atans_table(z, x); + distance2 = sqrtf(x * x + y * y + z * z); + unsigned_angle2 = (int)angle2; - sAdos_KishaStatusLevel(speed, Common_GetPointer(train_coming_flag), unsigned_angle, distance, Common_GetPointer(train_exists_flag), unsigned_angle2, distance2); + sAdos_KishaStatusLevel(speed, (u32)Common_GetPointer(train_coming_flag), unsigned_angle, distance, + (u32)Common_GetPointer(train_exists_flag), unsigned_angle2, distance2); } static void mTRC_KishaStatusTrg(u8 state) { - if (state == 1) { - Common_Set(train_approaching_flag, TRUE); - } + if (state == 1) { + Common_Set(train_approaching_flag, TRUE); + } - sAdos_KishaStatusTrg(state); + sAdos_KishaStatusTrg(state); } static int aTRC_area_check(GAME_PLAY* play, xyz_t pos) { - int block_x; - int block_z; - int x_diff; + int block_x; + int block_z; + int x_diff; - mFI_Wpos2BlockNum(&block_x, &block_z, pos); - x_diff = (block_x - play->block_table.block_x) >= 0 ? (block_x - play->block_table.block_x) : -(block_x - play->block_table.block_x); + mFI_Wpos2BlockNum(&block_x, &block_z, pos); + x_diff = (block_x - play->block_table.block_x) >= 0 ? (block_x - play->block_table.block_x) + : -(block_x - play->block_table.block_x); - if (x_diff >= 2 || block_z != play->block_table.block_z) { - return FALSE; - } - return TRUE; + if (x_diff >= 2 || block_z != play->block_table.block_z) { + return FALSE; + } + return TRUE; } static int mTRC_go_process() { - int res = FALSE; - int demo_no = mEv_CheckTitleDemo(); + int res = FALSE; + int demo_no = mEv_CheckTitleDemo(); - if (((int)demo_no == 0 || demo_no == 1 || demo_no == -9) && Common_Get(field_draw_type) != FIELD_DRAW_TYPE_TRAIN && Common_Get(field_draw_type) != FIELD_DRAW_TYPE_PLAYER_SELECT) { - res = TRUE; - } + if (((int)demo_no == 0 || demo_no == 1 || demo_no == -9) && Common_Get(field_draw_type) != FIELD_DRAW_TYPE_TRAIN && + Common_Get(field_draw_type) != FIELD_DRAW_TYPE_PLAYER_SELECT) { + res = TRUE; + } - return res; + return res; } #define HOUR_MIN_SEC_TO_SECS(h, m, s) (h * 3600 + m * 60 + s) static u32 mTRC_get_depart_time() { - static u32 time_table[25] = { - HOUR_MIN_SEC_TO_SECS( 0, 19, 0), - HOUR_MIN_SEC_TO_SECS( 1, 19, 0), - HOUR_MIN_SEC_TO_SECS( 2, 19, 0), - HOUR_MIN_SEC_TO_SECS( 3, 19, 0), - HOUR_MIN_SEC_TO_SECS( 4, 19, 0), - HOUR_MIN_SEC_TO_SECS( 5, 19, 0), - HOUR_MIN_SEC_TO_SECS( 6, 19, 0), - HOUR_MIN_SEC_TO_SECS( 7, 19, 0), - HOUR_MIN_SEC_TO_SECS( 8, 19, 0), - HOUR_MIN_SEC_TO_SECS( 9, 19, 0), - HOUR_MIN_SEC_TO_SECS(10, 19, 0), - HOUR_MIN_SEC_TO_SECS(11, 19, 0), - HOUR_MIN_SEC_TO_SECS(12, 19, 0), - HOUR_MIN_SEC_TO_SECS(13, 19, 0), - HOUR_MIN_SEC_TO_SECS(14, 19, 0), - HOUR_MIN_SEC_TO_SECS(15, 19, 0), - HOUR_MIN_SEC_TO_SECS(16, 19, 0), - HOUR_MIN_SEC_TO_SECS(17, 19, 0), - HOUR_MIN_SEC_TO_SECS(18, 19, 0), - HOUR_MIN_SEC_TO_SECS(19, 19, 0), - HOUR_MIN_SEC_TO_SECS(20, 19, 0), - HOUR_MIN_SEC_TO_SECS(21, 19, 0), - HOUR_MIN_SEC_TO_SECS(22, 19, 0), - HOUR_MIN_SEC_TO_SECS(23, 19, 0), - HOUR_MIN_SEC_TO_SECS(24, 19, 0) - }; + static u32 time_table[25] = { + HOUR_MIN_SEC_TO_SECS(0, 19, 0), HOUR_MIN_SEC_TO_SECS(1, 19, 0), HOUR_MIN_SEC_TO_SECS(2, 19, 0), + HOUR_MIN_SEC_TO_SECS(3, 19, 0), HOUR_MIN_SEC_TO_SECS(4, 19, 0), HOUR_MIN_SEC_TO_SECS(5, 19, 0), + HOUR_MIN_SEC_TO_SECS(6, 19, 0), HOUR_MIN_SEC_TO_SECS(7, 19, 0), HOUR_MIN_SEC_TO_SECS(8, 19, 0), + HOUR_MIN_SEC_TO_SECS(9, 19, 0), HOUR_MIN_SEC_TO_SECS(10, 19, 0), HOUR_MIN_SEC_TO_SECS(11, 19, 0), + HOUR_MIN_SEC_TO_SECS(12, 19, 0), HOUR_MIN_SEC_TO_SECS(13, 19, 0), HOUR_MIN_SEC_TO_SECS(14, 19, 0), + HOUR_MIN_SEC_TO_SECS(15, 19, 0), HOUR_MIN_SEC_TO_SECS(16, 19, 0), HOUR_MIN_SEC_TO_SECS(17, 19, 0), + HOUR_MIN_SEC_TO_SECS(18, 19, 0), HOUR_MIN_SEC_TO_SECS(19, 19, 0), HOUR_MIN_SEC_TO_SECS(20, 19, 0), + HOUR_MIN_SEC_TO_SECS(21, 19, 0), HOUR_MIN_SEC_TO_SECS(22, 19, 0), HOUR_MIN_SEC_TO_SECS(23, 19, 0), + HOUR_MIN_SEC_TO_SECS(24, 19, 0) + }; - int i = 0; - u32 depart_time; - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - u32 now_sec = mTRC_RTC_TIME_SECONDS(rtc_time); - int day; - - while (TRUE) { - if (time_table[i] >= now_sec) { - depart_time = time_table[i] - HOUR_MIN_SEC_TO_SECS(0, 4, 10); - break; + int i = 0; + u32 depart_time; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + u32 now_sec = mTRC_RTC_TIME_SECONDS(rtc_time); + int day; + + while (TRUE) { + if (time_table[i] >= now_sec) { + depart_time = time_table[i] - HOUR_MIN_SEC_TO_SECS(0, 4, 10); + break; + } + i++; } - i++; - } - Common_Set(train_day, rtc_time->day); - return depart_time; + Common_Set(train_day, rtc_time->day); + return depart_time; } static int mTRC_time_check() { - u32 now_sec = mTRC_RTC_TIME_SECONDS(Common_GetPointer(time.rtc_time)); - return now_sec >= Common_Get(train_start_timer); + u32 now_sec = mTRC_RTC_TIME_SECONDS(Common_GetPointer(time.rtc_time)); + return now_sec >= Common_Get(train_start_timer); } static void mTRC_mati_init() { - xyz_t pos; - - Common_Set(train_action, mTRC_ACTION_WAIT_STOPPED); - Common_Set(train_flag, TRUE); - Common_Set(train_signal, TRUE); - Common_Set(train_control_state, 1); - Common_Set(train_last_control_state, 1); + xyz_t pos; - pos.x = 2376.0f; - pos.z = 740.0f; - pos.y = 180.0f; - Common_Set(train_position, pos); + Common_Set(train_action, mTRC_ACTION_WAIT_STOPPED); + Common_Set(train_flag, TRUE); + Common_Set(train_signal, TRUE); + Common_Set(train_control_state, 1); + Common_Set(train_last_control_state, 1); + + pos.x = 2367.0f; + pos.z = 740.0f; + pos.y = 180.0f; + Common_Set(train_position, pos); } static void mTRC_demo_init() { - xyz_t pos; - lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - - Common_Set(train_action, mTRC_ACTION_BEGIN_SLOWDOWN); - Common_Set(train_speed, mTRC_SLOW_SPEED); - Common_Set(train_flag, TRUE); - Common_Set(train_start_timer, mTRC_RTC_TIME_SECONDS(rtc_time) - HOUR_MIN_SEC_TO_SECS(0, 4, 50)); - Common_Set(train_day, Common_Get(time.rtc_time.day)); - Common_Set(train_control_state, 0); - Common_Set(train_last_control_state, 0); + xyz_t pos; + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); - pos.x = 2037.0f; - pos.z = 740.0f; - pos.y = 180.0f; - Common_Set(train_position, pos); + Common_Set(train_action, mTRC_ACTION_BEGIN_SLOWDOWN); + Common_Set(train_speed, mTRC_SLOW_SPEED); + Common_Set(train_flag, TRUE); + Common_Set(train_start_timer, mTRC_RTC_TIME_SECONDS(rtc_time) - HOUR_MIN_SEC_TO_SECS(0, 4, 50)); + Common_Set(train_day, Common_Get(time.rtc_time.day)); + Common_Set(train_control_state, 0); + Common_Set(train_last_control_state, 0); + + pos.x = 2037.0f; + pos.z = 740.0f; + pos.y = 180.0f; + Common_Set(train_position, pos); } static void mTRC_call_init() { - xyz_t pos; - - Common_Set(train_action, mTRC_ACTION_BEGIN_SLOWDOWN); - Common_Set(train_speed, 0.0f); - Common_Set(train_flag, TRUE); - Common_Set(train_control_state, 1); - Common_Set(train_last_control_state, 1); + xyz_t pos; - pos.x = 1904.0f; - pos.z = 740.0f; - pos.y = 180.0f; - Common_Set(train_position, pos); + Common_Set(train_action, mTRC_ACTION_BEGIN_SLOWDOWN); + Common_Set(train_speed, 0.0f); + Common_Set(train_flag, TRUE); + Common_Set(train_control_state, 1); + Common_Set(train_last_control_state, 1); + + pos.x = 1904.0f; + pos.z = 740.0f; + pos.y = 180.0f; + Common_Set(train_position, pos); } static void mTRC_norm_init() { - xyz_t pos; + xyz_t pos; - Common_Set(train_action, mTRC_ACTION_SPAWN_MOVING); - Common_Set(train_speed, 0.0f); - Common_Set(train_flag, TRUE); - Common_Set(train_control_state, 0); - Common_Set(train_last_control_state, 0); + Common_Set(train_action, mTRC_ACTION_SPAWN_MOVING); + Common_Set(train_speed, 0.0f); + Common_Set(train_flag, TRUE); + Common_Set(train_control_state, 0); + Common_Set(train_last_control_state, 0); - pos.x = 320.0f; - pos.z = 740.0f; - pos.y = 180.0f; - Common_Set(train_position, pos); + pos.x = 320.0f; + pos.z = 740.0f; + pos.y = 180.0f; + Common_Set(train_position, pos); } static int mTRC_schedule(GAME_PLAY* play) { - int res = -1; - - if (mEv_CheckTitleDemo() == 1) { - if (Common_Get(train_action) == mTRC_ACTION_NONE) { - mTRC_mati_init(); - } - - return -1; - } - else { - switch (Common_Get(train_coming_flag)) { - case 3: - { - Common_Set(train_coming_flag, 0); - mTRC_demo_init(); - res = 0; - break; - } - - case 2: - { - if (!aTRC_area_check(play, Common_Get(train_position)) && Common_Get(train_action) >= mTRC_ACTION_SIGNAL_STARTING) { - mTRC_call_init(); - res = 1; - break; - } - - if (Common_Get(train_action) < mTRC_ACTION_SIGNAL_STARTING && Common_Get(train_action) != mTRC_ACTION_NONE) { - Common_Set(train_coming_flag, FALSE); - Common_Set(train_control_state, 1); - Common_Set(train_last_control_state, 1); - break; - } + int res = -1; + if (mEv_CheckTitleDemo() == 1) { if (Common_Get(train_action) == mTRC_ACTION_NONE) { - mTRC_call_init(); - res = 1; - break; + mTRC_mati_init(); } - break; - } - case 4: - { - break; - } + return -1; + } else { + switch (Common_Get(train_coming_flag)) { + case 3: { + Common_Set(train_coming_flag, 0); + mTRC_demo_init(); + res = 0; + break; + } - default: - { - if (Common_Get(train_action) == mTRC_ACTION_NONE && mEv_CheckArbeit() == FALSE && mTRC_time_check()) { - mTRC_norm_init(); - res = 1; + case 2: { + if (!aTRC_area_check(play, Common_Get(train_position)) && + Common_Get(train_action) >= mTRC_ACTION_SIGNAL_STARTING) { + mTRC_call_init(); + res = 1; + break; + } + + if (Common_Get(train_action) < mTRC_ACTION_SIGNAL_STARTING && + Common_Get(train_action) != mTRC_ACTION_NONE) { + Common_Set(train_coming_flag, FALSE); + Common_Set(train_control_state, 1); + Common_Set(train_last_control_state, 1); + break; + } + + if (Common_Get(train_action) == mTRC_ACTION_NONE) { + mTRC_call_init(); + res = 1; + break; + } + break; + } + + case 4: { + break; + } + + default: { + if (Common_Get(train_action) == mTRC_ACTION_NONE && mEv_CheckArbeit() == FALSE && mTRC_time_check()) { + mTRC_norm_init(); + res = 1; + } + break; + } } - break; - } } - } - return res; + return res; } -/* TODO: @nonmatching something to do with common data loading at start of function */ static void mTRC_trainControl(GAME_PLAY* play, int state) { - u8 signal = Common_Get(train_signal); - u8 action = Common_Get(train_action); - u8 timer = Common_Get(train_timer); - u32 start_timer = Common_Get(train_start_timer); - f32 speed = Common_Get(train_speed); - xyz_t pos = Common_Get(train_position); - u8 day = Common_Get(time.rtc_time.day); + lbRTC_time_c* rtc_time = Common_GetPointer(time.rtc_time); + u8 signal = Common_Get(train_signal); + u8 action = Common_Get(train_action); + u8 timer = Common_Get(train_timer); + u32 start_timer = Common_Get(train_start_timer); + f32 speed = Common_Get(train_speed); + xyz_t pos = Common_Get(train_position); + int block_x; + int block_z; + int now_state = state; - if (Common_Get(train_day) != day) { - if (start_timer >= mTM_SECONDS_IN_DAY) { - start_timer = start_timer - mTM_SECONDS_IN_DAY; - } - - Common_Set(train_day, day); - } - - switch (action) { - case mTRC_ACTION_SPAWN_MOVING: - { - int block_x; - int block_z; - - speed = mTRC_FAST_SPEED; - mFI_Wpos2BlockNum(&block_x, &block_z, pos); - - if (block_x >= 2) { - action = mTRC_ACTION_BEGIN_SLOWDOWN; - } - break; - } - - case mTRC_ACTION_BEGIN_SLOWDOWN: - { - chase_f(&speed, mTRC_SLOW_SPEED, 0.01f); - if (pos.x > 2165.0f) { - action = mTRC_ACTION_BEGIN_STOP; - speed = mTRC_SLOW_SPEED; - } - break; - } - - case mTRC_ACTION_BEGIN_STOP: - { - chase_f(&speed, 0.0f, 0.005f); - if (F32_IS_ZERO(speed)) { - signal = TRUE; - timer = 48; - action = mTRC_ACTION_SIGNAL_STOPPED; - state = 2; - speed = 0.0f; - } - break; - } - - case mTRC_ACTION_SIGNAL_STOPPED: - { - if (timer == 0) { - action = mTRC_ACTION_WAIT_STOPPED; - start_timer += 310; - } - else { - timer--; - } - break; - } - - case mTRC_ACTION_WAIT_STOPPED: - { - if (Common_Get(train_control_state) != Common_Get(train_last_control_state)) { - Common_Set(train_control_state, Common_Get(train_last_control_state)); - signal = FALSE; - Common_Set(train_signal, FALSE); - } - else { - if (Common_Get(train_control_state) == 0 && mTRC_time_check()) { - signal = FALSE; - Common_Set(train_signal, FALSE); + if (Common_Get(train_day) != rtc_time->day) { + if (start_timer >= mTM_SECONDS_IN_DAY) { + start_timer -= mTM_SECONDS_IN_DAY; } - } - if (signal == FALSE) { - timer = 84; - action = mTRC_ACTION_SIGNAL_STARTING; - } - break; + Common_Set(train_day, rtc_time->day); } - case mTRC_ACTION_SIGNAL_STARTING: - { - if (timer == 0) { - timer = 180; - action = mTRC_ACTION_BEGIN_PULL_OUT; - state = 3; - } - else { - timer--; - } - break; + switch (action) { + case 0: + break; + case mTRC_ACTION_SPAWN_MOVING: { + speed = mTRC_FAST_SPEED; + mFI_Wpos2BlockNum(&block_x, &block_z, pos); + + if (block_x >= 2) { + action = mTRC_ACTION_BEGIN_SLOWDOWN; + } + break; + } + + case mTRC_ACTION_BEGIN_SLOWDOWN: { + chase_f(&speed, mTRC_SLOW_SPEED, 0.01f); + if (pos.x > 2165.0f) { + action = mTRC_ACTION_BEGIN_STOP; + speed = mTRC_SLOW_SPEED; + } + break; + } + + case mTRC_ACTION_BEGIN_STOP: { + chase_f(&speed, 0.0f, 0.005f); + if (fabsf(speed) < 0.008f) { + signal = TRUE; + timer = 48; + action = mTRC_ACTION_SIGNAL_STOPPED; + now_state = 2; + speed = 0.0f; + } + break; + } + + case mTRC_ACTION_SIGNAL_STOPPED: { + if (timer == 0) { + action = mTRC_ACTION_WAIT_STOPPED; + start_timer += 310; + } else { + timer--; + } + break; + } + + case mTRC_ACTION_WAIT_STOPPED: { + if (Common_Get(train_control_state) != Common_Get(train_last_control_state)) { + Common_Set(train_control_state, Common_Get(train_last_control_state)); + signal = FALSE; + Common_Set(train_signal, FALSE); + } else if (Common_Get(train_control_state) == 0 && mTRC_time_check()) { + signal = FALSE; + Common_Set(train_signal, FALSE); + } + + if (signal == FALSE) { + timer = 84; + action = mTRC_ACTION_SIGNAL_STARTING; + } + break; + } + + case mTRC_ACTION_SIGNAL_STARTING: { + if (timer == 0) { + timer = 180; + action = mTRC_ACTION_BEGIN_PULL_OUT; + now_state = 3; + } else { + timer--; + } + break; + } + + case mTRC_ACTION_BEGIN_PULL_OUT: { + chase_f(&speed, mTRC_SLOW_SPEED, 0.00345f); + + if (timer == 0) { + action = mTRC_ACTION_SPEED_UP; + } else { + timer--; + } + break; + } + + case mTRC_ACTION_SPEED_UP: { + chase_f(&speed, mTRC_FAST_SPEED, 0.00345); + if (pos.x > 4400.0f) { + start_timer = mTRC_get_depart_time(); + action = mTRC_ACTION_NONE; + Common_Set(train_flag, FALSE); + now_state = 4; + } + break; + } } - case mTRC_ACTION_BEGIN_PULL_OUT: - { - chase_f(&speed, mTRC_SLOW_SPEED, 0.00345f); + if (action != mTRC_ACTION_NONE) { + ACTOR* train_actor = Actor_info_fgName_search(&play->actor_info, TRAIN0, ACTOR_PART_ITEM); + if (Common_Get(train_flag) == FALSE && train_actor == NULL) { + Common_Set(train_flag, TRUE); + } - if (timer == 0) { - action = mTRC_ACTION_SPEED_UP; - } - else { - timer--; - } - break; + pos.x += 0.5f * speed; + mTRC_KishaStatusLevel(play, pos, speed); } - case mTRC_ACTION_SPEED_UP: - { - chase_f(&speed, mTRC_FAST_SPEED, 0.00345); - if (pos.x > 4400.0f) { - start_timer = mTRC_get_depart_time(); - action = mTRC_ACTION_NONE; - Common_Set(train_flag, FALSE); - state = 4; - } - break; - } - } - - if (action != mTRC_ACTION_NONE) { - ACTOR* train_actor = Actor_info_fgName_search(&play->actor_info, TRAIN0, ACTOR_PART_ITEM); - if (Common_Get(train_flag) == FALSE && train_actor == NULL) { - Common_Set(train_flag, TRUE); + if (now_state >= 0) { + mTRC_KishaStatusTrg(now_state); } - pos.x += 0.5f * speed; - mTRC_KishaStatusLevel(play, pos, speed); - } - - if (state >= 0) { - mTRC_KishaStatusTrg(state); - } - - Common_Set(train_signal, signal); - Common_Set(train_action, action); - Common_Set(train_timer, timer); - Common_Set(train_start_timer, start_timer); - Common_Set(train_speed, speed); - Common_Set(train_position, pos); + Common_Set(train_signal, signal); + Common_Set(train_action, action); + Common_Set(train_timer, timer); + Common_Set(train_start_timer, start_timer); + Common_Set(train_speed, speed); + Common_Set(train_position, pos); } static void mTRC_trainSet(GAME_PLAY* play) { - ACTOR* train_actor; - ACTOR* caboose_actor; - xyz_t pos = Common_Get(train_position); - xyz_t xz_pos; - xyz_t xyz_pos; + ACTOR* train_actor; + ACTOR* caboose_actor; + xyz_t pos = Common_Get(train_position); + xyz_t xz_pos; + xyz_t xyz_pos; - if (Common_Get(field_type) != mFI_FIELDTYPE2_FG || !Common_Get(train_flag)) { - return; - } - else if (Common_Get(clip).structure_clip != NULL) { - f32 x = pos.x; - xz_pos.x = pos.x; - xz_pos.z = 740.0f; - xz_pos.y = 0.0f; + if (Common_Get(field_type) != mFI_FIELDTYPE2_FG || !Common_Get(train_flag)) { + return; + } else if (Common_Get(clip).structure_clip != NULL) { + f32 x = pos.x; + xz_pos.x = pos.x; + xz_pos.z = 740.0f; + xz_pos.y = 0.0f; - if (aTRC_area_check(play, xz_pos)) { - train_actor = Actor_info_fgName_search(&play->actor_info, TRAIN0, ACTOR_PART_ITEM); - if (train_actor == NULL) { - /* spawn train actor since it doesn't exist */ - train_actor = (*Common_Get(clip.structure_clip)->setup_actor_proc)(play, TRAIN0, -1, x, 740.0f); + if (aTRC_area_check(play, xz_pos)) { + train_actor = Actor_info_fgName_search(&play->actor_info, TRAIN0, ACTOR_PART_ITEM); + if (train_actor == NULL) { + /* spawn train actor since it doesn't exist */ + train_actor = + (ACTOR*)Common_Get(clip.structure_clip)->setup_actor_proc(&play->game, TRAIN0, -1, x, 740.0f); - /* for whatever reason, train actor didn't spawn, so exit */ - if (train_actor == NULL) { - return; + /* for whatever reason, train actor didn't spawn, so exit */ + if (train_actor == NULL) { + return; + } + } else { + xyz_pos.x = xz_pos.x; + xyz_pos.z = xz_pos.z; + xyz_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(xyz_pos, 0.0f); + + xyz_t_move(&train_actor->world.position, &xyz_pos); + } + + x -= 250.0f; + caboose_actor = Actor_info_fgName_search(&play->actor_info, TRAIN1, ACTOR_PART_ITEM); + if (caboose_actor == NULL) { + caboose_actor = + (ACTOR*)Common_Get(clip.structure_clip)->setup_actor_proc(&play->game, TRAIN1, -1, x, 740.0f); + if (caboose_actor == NULL) { + Actor_delete(train_actor); + return; + } + } else { + xyz_pos.x = x; + xyz_pos.z = 740.0f; + xyz_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(xyz_pos, 0.0f); + + xyz_t_move(&caboose_actor->world.position, &xyz_pos); + } + + Common_Set(train_flag, FALSE); + + train_actor->block_x = -1; + train_actor->block_z = -1; + train_actor->child_actor = caboose_actor; + + caboose_actor->block_x = -1; + caboose_actor->block_z = -1; + caboose_actor->parent_actor = train_actor; } - } - else { - xyz_pos.x = xz_pos.x; - xyz_pos.z = xz_pos.z; - xyz_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(xyz_pos, 0.0f); - - xyz_t_move(&train_actor->world.position, &xyz_pos); - } - - x -= 250.0f; - caboose_actor = Actor_info_fgName_search(&play->actor_info, TRAIN1, ACTOR_PART_ITEM); - if (caboose_actor == NULL) { - caboose_actor = (*Common_Get(clip.structure_clip)->setup_actor_proc)(play, TRAIN1, -1, x, 740.0f); - if (caboose_actor == NULL) { - Actor_delete(train_actor); - return; - } - } - else { - xyz_pos.x = x; - xyz_pos.z = 740.0f; - xyz_pos.y = mCoBG_GetBgY_OnlyCenter_FromWpos2(xyz_pos, 0.0f); - - xyz_t_move(&caboose_actor->world.position, &xyz_pos); - } - - Common_Set(train_flag, FALSE); - - train_actor->block_x = -1; - train_actor->block_z = -1; - train_actor->child_actor = caboose_actor; - - caboose_actor->block_x = -1; - caboose_actor->block_z = -1; - caboose_actor->parent_actor = train_actor; } - } } extern void mTRC_init(GAME* game) { - Common_Set(train_start_timer, mTRC_get_depart_time()); - Common_Set(train_coming_flag, 0); - Common_Set(train_exists_flag, FALSE); - Common_Set(train_control_state, 0); - Common_Set(train_last_control_state, 0); - Common_Set(train_signal, FALSE); - Common_Set(train_action, 0); - Common_Set(train_timer, 0); - Common_Set(train_speed, 0.0f); - Common_Set(train_position, ZeroVec); - Common_Set(train_approaching_flag, FALSE); - Common_Set(train_flag, FALSE); + Common_Set(train_start_timer, mTRC_get_depart_time()); + Common_Set(train_coming_flag, 0); + Common_Set(train_exists_flag, FALSE); + Common_Set(train_control_state, 0); + Common_Set(train_last_control_state, 0); + Common_Set(train_signal, FALSE); + Common_Set(train_action, 0); + Common_Set(train_timer, 0); + Common_Set(train_speed, 0.0f); + Common_Set(train_position, ZeroVec); + Common_Set(train_approaching_flag, FALSE); + Common_Set(train_flag, FALSE); } -extern void mTRC_move(GAME_PLAY* play) { - PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); - int state; - Common_Set(train_approaching_flag, FALSE); +extern void mTRC_move(GAME* game) { + GAME_PLAY* play = (GAME_PLAY*)game; + PLAYER_ACTOR* player = get_player_actor_withoutCheck(play); + int state; + Common_Set(train_approaching_flag, FALSE); - if (!mTRC_go_process() || player == NULL) { - return; - } + if (!mTRC_go_process() || player == NULL) { + return; + } - state = mTRC_schedule(play); - mTRC_trainControl(play, state); - mTRC_trainSet(play); + state = mTRC_schedule(play); + mTRC_trainControl(play, state); + mTRC_trainSet(play); } diff --git a/src/padmgr.c b/src/padmgr.c new file mode 100644 index 00000000..734ed075 --- /dev/null +++ b/src/padmgr.c @@ -0,0 +1,372 @@ +#include "padmgr.h" + +#include "libultra/libultra.h" +#include "m_debug.h" +#include "jsyswrap.h" + +static int frame = 0; +padmgr padmgr_class; +static padmgr* this = &padmgr_class; + +extern OSMessageQueue* padmgr_LockSerialMesgQ(void) { + OSMessageQueue* mq; + + osRecvMesg(&this->serial_mq, (OSMesg)&mq, OS_MESG_BLOCK); + return mq; +} + +extern void padmgr_UnlockSerialMesgQ(OSMessageQueue* mq) { + osSendMesg(&this->serial_mq, (OSMesg)mq, OS_MESG_BLOCK); +} + +static void padmgr_LockContData(void) { + osRecvMesg(&this->controller_lock_mq, NULL, OS_MESG_BLOCK); +} + +static void padmgr_UnlockContData(void) { + osSendMesg(&this->controller_lock_mq, (OSMesg)NULL, OS_MESG_BLOCK); +} + +static void padmgr_RumbleControl(void) { + Motor_t* motor = this->rumble.motors; + int i; + + for (i = 0; i < PAD_CONTROLLER_NUM; i++) { + if (this->device_type[i] == PADMGR_TYPE_CONTROLLER && this->rumble.cooldown_frames == 0) { + if (motor->last_command != motor->now_command) { + if (motor->now_command == PAD_MOTOR_STOP) { + motor->frames = 3; + } else { + motor->frames = 0; + } + + PADControlMotor(i, motor->now_command); + motor->last_command = motor->now_command; + } else { + if (motor->frames != 0) { + motor->frames--; + } + + if (motor->frames != 0) { + PADControlMotor(i, PAD_MOTOR_STOP); + } + } + } + + motor++; + } +} + +static void padmgr_RumbleStop(void) { + static u32 stop_command[PAD_CONTROLLER_NUM] = { PAD_MOTOR_STOP, PAD_MOTOR_STOP, PAD_MOTOR_STOP, PAD_MOTOR_STOP }; + int i; + + PADControlAllMotors(stop_command); + for (i = 0; i < PAD_CONTROLLER_NUM; i++) { + this->rumble.motors[i].last_command = PAD_MOTOR_STOP; + this->rumble.motors[i].now_command = PAD_MOTOR_STOP; + this->rumble.motors[i].frames = 0; + } +} + +extern void padmgr_force_stop_ON(void) { + this->rumble.cooldown_frames = 4; +} + +extern void padmgr_force_stop_OFF(void) { + this->rumble.cooldown_frames = 0; +} + +extern void padmgr_RumbleReset(void) { + this->rumble.cooldown_frames = -3; +} + +extern void padmgr_RumbleSet(int pad, int command) { + this->rumble.motors[pad].now_command = command; + if (command != PAD_MOTOR_RUMBLE) { + this->rumble.rumble_frames = 240; + } +} + +static void padmgr_PakConnectCheck(void) { + static int padno = 0; + int i; + + for (i = 0; i < this->num_controllers; i++) { + padno = (padno + 1) % this->num_controllers; + if (this->device_type[padno] == PADMGR_TYPE_CONTROLLER) { + if (this->pak_type[padno] != PADMGR_PAK_NONE) { + u8 status = this->pad_status[padno].status; + + if ((status & CONT_CARD_PULL) != 0 || (status & CONT_CARD_ON) == 0) { + this->pak_type[padno] = PADMGR_PAK_NONE; + } + } + + if (this->pak_type[padno] == PADMGR_PAK_NONE && (this->pad_status[padno].status & CONT_CARD_ON) != 0) { + this->pak_type[padno] = PADMGR_PAK_UNK; + } + break; + } + } +} + +static void padmgr_HandleDoneReadPadMsg(void) { + pad_t* pad = this->pads; + OSContPad* cur_pad = this->cur_pads; + int now; + int trigger; + int i; + + for (i = 0; i < this->num_controllers; i++) { + pad->last = pad->now; + if (this->device_type[i] == PADMGR_TYPE_CONTROLLER) { + switch (cur_pad->errno) { + case CONT_NO_ERROR: + pad->now = *cur_pad; + if (this->device_type[i] == PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_CONTROLLER; + } + break; + case CONT_OVERRUN_ERROR: + pad->now = pad->last; + break; + case CONT_NO_RESPONSE_ERROR: + pad->now.button = 0; + pad->now.stick_x = 0; + pad->now.stick_y = 0; + pad->now.errno = cur_pad->errno; + if (this->device_type[i] != PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_NONE; + this->pak_type[i] = PADMGR_PAK_NONE; + } + break; + } + } else { + pad->now.button = 0; + pad->now.stick_x = 0; + pad->now.stick_y = 0; + pad->now.errno = cur_pad->errno; + } + + /* Update buttons */ + trigger = pad->last.button ^ pad->now.button; + trigger |= GETREG(SREG, 16 + i); + pad->on.button |= (u16)(trigger & pad->now.button); + pad->off.button |= (u16)(trigger & pad->last.button); + + /* Update stick values */ + pad_correct_stick(pad); + pad->on.stick_x += (s8)(pad->now.stick_x - pad->last.stick_x); + pad->on.stick_y += (s8)(pad->now.stick_y - pad->last.stick_y); + + pad++; + cur_pad++; + } +} + +static void padmgr_ConnectCheck(void) { + int pattern = 0; + int i; + + for (i = 0; i < this->num_controllers; i++) { + if (this->pad_status[i].errno == CONT_NO_ERROR) { + int masked_type = this->pad_status[i].type & CONT_TYPE_MASK; + + switch (masked_type) { + case CONT_TYPE_NORMAL: + pattern |= 1 << i; + if (this->device_type[i] == PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_CONTROLLER; + } + break; + case CONT_TYPE_MOUSE: + if (this->device_type[i] == PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_MOUSE; + } + break; + case CONT_TYPE_VOICE: + if (this->device_type[i] == PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_VOICE_UNINTIALIZED; + this->pak_type[i] = PADMGR_PAK_NONE; + } + break; + default: + if (this->device_type[i] == PADMGR_TYPE_NONE) { + this->device_type[i] = PADMGR_TYPE_UNK; + } + break; + } + } else { + if (this->device_type[i] != PADMGR_TYPE_NONE) { + if (this->device_type[i] == PADMGR_TYPE_CONTROLLER) { + this->pak_type[i] = PADMGR_PAK_NONE; + } + + this->device_type[i] = PADMGR_TYPE_NONE; + } + } + } + + this->pad_pattern = pattern; +} + +static void padmgr_HandleRetraceMsg(void) { + OSMessageQueue* serial_mq; + + serial_mq = padmgr_LockSerialMesgQ(); + osContStartReadData(serial_mq); + + if (this->callback != NULL) { + (*this->callback)(this->callback_param); + } + + osRecvMesg(serial_mq, NULL, OS_MESG_BLOCK); + osContGetReadData(this->cur_pads); + + if (this->rumble.reset) { + bzero(this->cur_pads, sizeof(this->cur_pads)); + } + + osContStartQuery(serial_mq); + osRecvMesg(serial_mq, NULL, OS_MESG_BLOCK); + osContGetQuery(this->pad_status); + + padmgr_UnlockSerialMesgQ(serial_mq); + + padmgr_ConnectCheck(); + padmgr_LockContData(); + padmgr_HandleDoneReadPadMsg(); + + if (this->callback2 != NULL) { + (*this->callback2)(this->callback2_param); + } + + padmgr_UnlockContData(); + + if (this->rumble.cooldown_frames != 0) { + if (this->rumble.cooldown_frames > 1) { + this->rumble.cooldown_frames--; + padmgr_RumbleStop(); + } else if (this->rumble.cooldown_frames < 0) { + this->rumble.cooldown_frames++; + padmgr_RumbleStop(); + } + } else if (this->rumble.rumble_frames == 0) { + padmgr_RumbleStop(); + } else if (this->rumble.reset == FALSE) { + padmgr_RumbleControl(); + this->rumble.rumble_frames--; + } + + serial_mq = padmgr_LockSerialMesgQ(); + padmgr_PakConnectCheck(); + padmgr_UnlockSerialMesgQ(serial_mq); + frame++; +} + +static void padmgr_HandlePreNMIMsg(void) { + this->rumble.reset = TRUE; + padmgr_RumbleReset(); +} + +extern void padmgr_RequestPadData_NonLock(pad_t* pad, int flag) { + int i; + pad_t* padmgr_pad = this->pads; + pad_t* pad_p = pad; + int trigger; + + for (i = 0; i < this->num_controllers; i++) { + if (flag) { + /* Direct copy from padmgr */ + *pad_p = *padmgr_pad; + padmgr_pad->on.button = 0; + padmgr_pad->on.stick_x = 0; + padmgr_pad->on.stick_y = 0; + padmgr_pad->off.button = 0; + } else { + /* Only copy now from padmgr and update all other info from that */ + pad_p->last = pad_p->now; + pad_p->now = padmgr_pad->now; + trigger = pad_p->last.button ^ pad_p->now.button; + pad_p->on.button = trigger & pad_p->now.button; + pad_p->off.button = trigger & pad_p->last.button; + pad_correct_stick(pad_p); + pad_p->on.stick_x += (s8)(pad_p->now.stick_x - pad_p->last.stick_x); + pad_p->on.stick_y += (s8)(pad_p->now.stick_y - pad_p->last.stick_y); + } + + padmgr_pad++; + pad_p++; + } +} + +extern void padmgr_RequestPadData(pad_t* pad, int flag) { + padmgr_LockContData(); + padmgr_RequestPadData_NonLock(pad, flag); + padmgr_UnlockContData(); +} + +extern void padmgr_ClearPadData(pad_t* pad) { + int i; + + for (i = 0; i < this->num_controllers; i++) { + pad->last = pad->now; + pad->now.button = 0; + pad->now.stick_x = 0; + pad->now.stick_y = 0; + pad->on = pad->now; + pad->off = pad->now; + + pad++; + } +} + +static void padmgr_MainProc(void* arg) { + BOOL done = FALSE; + int flags; + + while (done == FALSE) { + VIWaitForRetrace(); + flags = PADMGR_FLAG_HANDLE_RETRACE; + + while (flags != 0) { + if ((flags & PADMGR_FLAG_DONE) != 0) { + flags &= ~PADMGR_FLAG_DONE; + done = TRUE; + } else if ((flags & PADMGR_FLAG_HANDLE_PRENMI) != 0) { + flags &= ~PADMGR_FLAG_HANDLE_PRENMI; + padmgr_HandlePreNMIMsg(); + } else if ((flags & PADMGR_FLAG_HANDLE_RETRACE) != 0) { + flags &= ~PADMGR_FLAG_HANDLE_RETRACE; + padmgr_HandleRetraceMsg(); + } + } + } +} + +extern void padmgr_Init(OSMessageQueue* mq) { + bzero(this, sizeof(padmgr)); + osCreateMesgQueue(&this->serial_mq, &this->_msg24, 1); + padmgr_UnlockSerialMesgQ(mq); + osCreateMesgQueue(&this->controller_lock_mq, &this->_msg28, 1); + padmgr_UnlockContData(); + osContInit(mq, &this->pad_pattern, this->pad_status); + this->num_controllers = MAXCONTROLLERS; + osContSetCh(this->num_controllers); +} + +extern void padmgr_Create(OSMessageQueue* serial_mq, OSId id, OSPri priority, void* stackend, size_t stack_size) { + padmgr_Init(serial_mq); + osCreateMesgQueue(&this->_msgQueue8C, this->_msgBuf2C, PADMSGBUFCNT); + osCreateThread2(&this->thread, id, &padmgr_MainProc, this, stackend, stack_size, priority); + osStartThread(&this->thread); +} + +extern int padmgr_isConnectedController(int idx) { + if (this->device_type[idx] == PADMGR_TYPE_CONTROLLER) { + return TRUE; + } + + return FALSE; +} diff --git a/src/player_select.c b/src/player_select.c index 889700ce..a6be9aa4 100644 --- a/src/player_select.c +++ b/src/player_select.c @@ -24,122 +24,115 @@ static u8 l_zaitaku_str[9] = { 0x3C, 0xEC, 0x01, 0x0F, 0x07, 0x10, 0xCA, 0x02, 0 static u8 l_yosokara_str[10] = { 0x60, 0x0E, 0x05, 0x7B, 0x00, 0x0E, 0xF7, 0x15, 0x06, 0x0F }; static void player_select_game_data_init(GAME_PLAYER_SELECT* player_select) { - int player_no = player_select->player_no; - mFI_ClearFieldData(); - if (mSDI_StartInitBefore((GAME*)player_select, player_no, mSDI_INIT_MODE_NEW, mSDI_MALLOC_FLAG_GAME) == TRUE) { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; - } + int player_no = player_select->player_no; + mFI_ClearFieldData(); + if (mSDI_StartInitBefore((GAME*)player_select, player_no, mSDI_INIT_MODE_NEW, mSDI_MALLOC_FLAG_GAME) == TRUE) { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; + } } static void player_select_game_data_init_save(GAME_PLAYER_SELECT* player_select) { - if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_FROM, mSDI_MALLOC_FLAG_GAME) == TRUE) { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; - } - else { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE; - } + if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_FROM, + mSDI_MALLOC_FLAG_GAME) == TRUE) { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; + } else { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE; + } } static void player_select_game_data_init_new_player(GAME_PLAYER_SELECT* player_select) { - if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_NEW_PLAYER, mSDI_MALLOC_FLAG_GAME) == TRUE) { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; - } - else { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE; - } + if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_NEW_PLAYER, + mSDI_MALLOC_FLAG_GAME) == TRUE) { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; + } else { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SAVE; + } } static void player_select_game_data_init_pak(GAME_PLAYER_SELECT* player_select) { - if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_PAK, mSDI_MALLOC_FLAG_GAME) == TRUE) { - player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; - } - else { - player_select->err_no = PLAYER_SELECT_INIT_ERR_PAK; - } + if (mSDI_StartInitBefore((GAME*)player_select, player_select->player_no, mSDI_INIT_MODE_PAK, + mSDI_MALLOC_FLAG_GAME) == TRUE) { + player_select->err_no = PLAYER_SELECT_INIT_ERR_SUCCESS; + } else { + player_select->err_no = PLAYER_SELECT_INIT_ERR_PAK; + } } static void player_select_game_data_init_err(GAME_PLAYER_SELECT* player_select) { - player_select->mode = PLAYER_SELECT_MODE_SELECTION; + player_select->mode = PLAYER_SELECT_MODE_SELECTION; } static PLAYER_SELECT_INIT_PROC l_init_proc[mSDI_INIT_MODE_NUM] = { - &player_select_game_data_init, - &player_select_game_data_init_new_player, - &player_select_game_data_init_save, - &player_select_game_data_init_pak, - &player_select_game_data_init_err + &player_select_game_data_init, &player_select_game_data_init_new_player, &player_select_game_data_init_save, + &player_select_game_data_init_pak, &player_select_game_data_init_err }; static void player_select_init_after(GAME_PLAYER_SELECT* player_select) { - mSDI_StartInitAfter((GAME*)player_select, FALSE, mSDI_MALLOC_FLAG_GAME); + mSDI_StartInitAfter((GAME*)player_select, FALSE, mSDI_MALLOC_FLAG_GAME); } static void player_select_next_mode(int* mode, int max) { - (*mode)++; - if (*mode >= max) { - *mode = 0; - } + (*mode)++; + if (*mode >= max) { + *mode = 0; + } } static void player_select_back_mode(int* mode, int max) { - (*mode)--; - if (*mode < 0) { - *mode = max - 1; - } + (*mode)--; + if (*mode < 0) { + *mode = max - 1; + } } static void player_select_move_main(GAME_PLAYER_SELECT* player_select) { - int mode = player_select->mode; + int mode = player_select->mode; - if (player_select->err_no == PLAYER_SELECT_INIT_ERR_NONE) { - if (chkTrigger(BUTTON_A)) { - int player_no = player_select->player_no; - if (mode == PLAYER_SELECT_MODE_SELECTION) { - player_select->mode = PLAYER_SELECT_MODE_PLAY; - } + if (player_select->err_no == PLAYER_SELECT_INIT_ERR_NONE) { + if (chkTrigger(BUTTON_A)) { + int player_no = player_select->player_no; + if (mode == PLAYER_SELECT_MODE_SELECTION) { + player_select->mode = PLAYER_SELECT_MODE_PLAY; + } - if (player_select->mode == PLAYER_SELECT_MODE_PLAY) { - (*player_select->init_procs[player_no])(player_select); - } + if (player_select->mode == PLAYER_SELECT_MODE_PLAY) { + (*player_select->init_procs[player_no])(player_select); + } + } + + if (chkTrigger(BUTTON_DDOWN) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) { + if (player_select->land_exist == TRUE) { + player_select_next_mode(&player_select->player_no, SELECT_PLAYER_NUM); + } else { + player_select_next_mode(&player_select->player_no, PLAYER_NUM); + } + } + + if (chkTrigger(BUTTON_DUP) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) { + if (player_select->land_exist == TRUE) { + player_select_back_mode(&player_select->player_no, SELECT_PLAYER_NUM); + } else { + player_select_back_mode(&player_select->player_no, PLAYER_NUM); + } + } + } else if (player_select->err_no == PLAYER_SELECT_INIT_ERR_SUCCESS) { + player_select_init_after(player_select); + GAME_GOTO_NEXT((GAME*)player_select, select, SELECT); + } else { + Common_Set(scene_from_title_demo, -1); + player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE; + player_select->mode = PLAYER_SELECT_MODE_SELECTION; } - - if (chkTrigger(BUTTON_DDOWN) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) { - if (player_select->land_exist == TRUE) { - player_select_next_mode(&player_select->player_no, SELECT_PLAYER_NUM); - } - else { - player_select_next_mode(&player_select->player_no, PLAYER_NUM); - } - } - - if (chkTrigger(BUTTON_DUP) && player_select->mode == PLAYER_SELECT_MODE_SELECTION) { - if (player_select->land_exist == TRUE) { - player_select_back_mode(&player_select->player_no, SELECT_PLAYER_NUM); - } - else { - player_select_back_mode(&player_select->player_no, PLAYER_NUM); - } - } - } - else if (player_select->err_no == PLAYER_SELECT_INIT_ERR_SUCCESS) { - player_select_init_after(player_select); - GAME_GOTO_NEXT((GAME*)player_select, select, SELECT); - } - else { - Common_Set(scene_from_title_demo, -1); - player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE; - player_select->mode = PLAYER_SELECT_MODE_SELECTION; - } } static void str_add_word(u8* dst, const u8* word0, const u8* word1, int word0_len, int word1_len) { - for (word0_len; word0_len != 0; word0_len--) { - *dst++ = *word0++; - } + for (word0_len; word0_len != 0; word0_len--) { + *dst++ = *word0++; + } - for (word1_len; word1_len != 0; word1_len--) { - *dst++ = *word1++; - } + for (word1_len; word1_len != 0; word1_len--) { + *dst++ = *word1++; + } } static int l_ps_white_color[3] = { 250, 220, 100 }; @@ -149,186 +142,165 @@ static int l_ps_select_color[3] = { 200, 55, 55 }; static u8 _debug_player_select[10] = { 0xE4, 0xBA, 0x90, 0xB4, 0x90, 0x20, 0x0D, 0xC3, 0x0F, 0x07 }; static void player_select_draw_title(GAME_PLAYER_SELECT* player_select) { - mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace( - (GAME*)player_select, - _debug_player_select, ARRAY_SIZE(_debug_player_select, u8), - 85.0f, 15.0f, - 200, 200, 200, 255, - FALSE, TRUE, 0, - 1.2f, 1.2f, - mFont_MODE_FONT - ); - mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)player_select, _debug_player_select, ARRAY_SIZE(_debug_player_select, u8), + 85.0f, 15.0f, 200, 200, 200, 255, FALSE, TRUE, 0, 1.2f, 1.2f, mFont_MODE_FONT); + mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); } static void player_select_draw_player_no(GAME_PLAYER_SELECT* player_select) { - u8 name_buf[8 + SELECT_NAME_LEN]; - u8 pre_str[8] = { 0xED, 0xCA, 0x02, 0x15, 0xC3, 0x20, 0x20, 0x20 }; - int player_no = player_select->player_no; - int i; + u8 name_buf[8 + SELECT_NAME_LEN]; + u8 pre_str[8] = { 0xED, 0xCA, 0x02, 0x15, 0xC3, 0x20, 0x20, 0x20 }; + int player_no = player_select->player_no; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - int* color; + for (i = 0; i < PLAYER_NUM; i++) { + int* color; - /* create text */ - mem_clear(name_buf, ARRAY_SIZE(name_buf, u8), CHAR_SPACE); - str_add_word(name_buf, pre_str, player_select->player_names[i], 8, SELECT_NAME_LEN); - - /* set player no */ - name_buf[6] = (u8)i | CHAR_ZERO; + /* create text */ + mem_clear(name_buf, ARRAY_SIZE(name_buf, u8), CHAR_SPACE); + str_add_word(name_buf, pre_str, player_select->player_names[i], 8, SELECT_NAME_LEN); - color = (player_no == i) ? l_ps_select_color : l_ps_white_color; + /* set player no */ + name_buf[6] = (u8)i | CHAR_ZERO; - mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace( - (GAME*)player_select, - name_buf, ARRAY_SIZE(name_buf, u8), - 70.0f, 65.0f + 15.0f * i, - color[0], color[1], color[2], 255, - FALSE, TRUE, 0, - 0.8f, 0.8f, - mFont_MODE_FONT - ); - mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); - } + color = (player_no == i) ? l_ps_select_color : l_ps_white_color; + + mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)player_select, name_buf, ARRAY_SIZE(name_buf, u8), 70.0f, + 65.0f + 15.0f * i, color[0], color[1], color[2], 255, FALSE, TRUE, 0, 0.8f, 0.8f, + mFont_MODE_FONT); + mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); + } } static void player_select_draw_yosokara(GAME_PLAYER_SELECT* player_select) { - u8* name = player_select->player_names[PLAYER_NUM]; - int* color = (player_select->player_no == PLAYER_NUM) ? l_ps_select_color : l_ps_white_color; + u8* name = player_select->player_names[PLAYER_NUM]; + int* color = (player_select->player_no == PLAYER_NUM) ? l_ps_select_color : l_ps_white_color; - mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace( - (GAME*)player_select, - name, SELECT_NAME_LEN, - 70.0f, 65.0f + 15.0f * PLAYER_NUM, - color[0], color[1], color[2], 255, - FALSE, TRUE, 0, - 0.8f, 0.8f, - mFont_MODE_FONT - ); - mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(player_select->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)player_select, name, SELECT_NAME_LEN, 70.0f, 65.0f + 15.0f * PLAYER_NUM, + color[0], color[1], color[2], 255, FALSE, TRUE, 0, 0.8f, 0.8f, mFont_MODE_FONT); + mFont_UnSetMatrix(player_select->game.graph, mFont_MODE_FONT); } static void player_select_draw_main(GAME_PLAYER_SELECT* player_select) { - GRAPH* g = player_select->game.graph; + GRAPH* g = player_select->game.graph; - OPEN_DISP(g); + OPEN_DISP(g); - gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0); - gSPSegment(NOW_FONT_DISP++, G_MWO_SEGMENT_0, 0); + gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0); + gSPSegment(NOW_FONT_DISP++, G_MWO_SEGMENT_0, 0); - DisplayList_initialize(g, 0, 0, 0, NULL); + DisplayList_initialize(g, 0, 0, 0, NULL); - gDPPipeSync(NOW_POLY_OPA_DISP++); - - CLOSE_DISP(g); + gDPPipeSync(NOW_POLY_OPA_DISP++); - showView(&player_select->view, VIEW_UPDATE_ALL); - player_select_draw_title(player_select); - player_select_draw_player_no(player_select); - player_select_draw_yosokara(player_select); + CLOSE_DISP(g); + + showView(&player_select->view, VIEW_UPDATE_ALL); + player_select_draw_title(player_select); + player_select_draw_player_no(player_select); + player_select_draw_yosokara(player_select); } static void player_select_main(GAME* game) { - GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game; + GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game; - player_select_move_main(player_select); - player_select_draw_main(player_select); + player_select_move_main(player_select); + player_select_draw_main(player_select); - { - GRAPH* g = game->graph; - game_debug_draw_last(game, g); - game_draw_last(g); - } + { + GRAPH* g = game->graph; + game_debug_draw_last(game, g); + game_draw_last(g); + } } -extern void player_select_cleanup(GAME* game) { } +extern void player_select_cleanup(GAME* game) { +} extern void player_select_init(GAME* game) { - GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game; - GRAPH* g = game->graph; - int i; - - game->exec = &player_select_main; - game->cleanup = &player_select_cleanup; + GAME_PLAYER_SELECT* player_select = (GAME_PLAYER_SELECT*)game; + GRAPH* g = game->graph; + int i; - { - View* view = &player_select->view; - initView(view, g); - view->flag = VIEW_UPDATE_ORTHOGRAPHIC; - } + game->exec = &player_select_main; + game->cleanup = &player_select_cleanup; - new_Matrix(game); - SetGameFrame(1); - - player_select->player_no = 0; - player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE; - player_select->mode = PLAYER_SELECT_MODE_SELECTION; - - for (i = 0; i < SELECT_PLAYER_NUM; i++) { - int j; - - for (j = 0; j < 6; j++) { - player_select->player_names[i][j] = mitouroku_str[j]; + { + View* view = &player_select->view; + initView(view, g); + view->flag = VIEW_UPDATE_ORTHOGRAPHIC; } - for (j = 6; j < SELECT_NAME_LEN; j++) { - player_select->player_names[i][j] = CHAR_SPACE; - } + new_Matrix(game); + SetGameFrame(1); - player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_NO_SAVE; - } + player_select->player_no = 0; + player_select->err_no = PLAYER_SELECT_INIT_ERR_NONE; + player_select->mode = PLAYER_SELECT_MODE_SELECTION; - for (i = 0; i < LAND_NAME_SIZE; i++) { - player_select->land_name[i] = CHAR_SPACE; - } - player_select->land_exist = FALSE; + for (i = 0; i < SELECT_PLAYER_NUM; i++) { + int j; - if (mFRm_CheckSaveData() == TRUE) { - Private_c* private_p = Save_Get(private); - for (i = 0; i < PLAYER_NUM; i++) { - u8* name = player_select->player_names[i]; - - if (mPr_CheckPrivate(private_p) == TRUE) { - mPr_CopyPlayerName(name, private_p->player_ID.player_name); - - if (private_p->exists == FALSE) { - mem_copy(name + PLAYER_NAME_LEN, l_gaishutu_str, 10); - player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_OUT; + for (j = 0; j < 6; j++) { + player_select->player_names[i][j] = mitouroku_str[j]; } - else { - mem_copy(name + PLAYER_NAME_LEN, l_zaitaku_str, 9); - player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_HOME; - } - } - else { - player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_UNREGISTERED; - } - private_p++; + for (j = 6; j < SELECT_NAME_LEN; j++) { + player_select->player_names[i][j] = CHAR_SPACE; + } + + player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_NO_SAVE; } - mLd_CopyLandName(player_select->land_name, Save_Get(land_info.name)); - player_select->land_exist = TRUE; - } + for (i = 0; i < LAND_NAME_SIZE; i++) { + player_select->land_name[i] = CHAR_SPACE; + } + player_select->land_exist = FALSE; - for (i = 0; i < SELECT_PLAYER_NAME_EXTRA; i++) { - player_select->player_names[PLAYER_NUM][i] = l_yosokara_str[i]; - } + if (mFRm_CheckSaveData() == TRUE) { + Private_c* private_p = Save_Get(private_data); + for (i = 0; i < PLAYER_NUM; i++) { + u8* name = player_select->player_names[i]; - for (i = SELECT_PLAYER_NAME_EXTRA; i < SELECT_NAME_LEN; i++) { - player_select->player_names[PLAYER_NUM][i] = CHAR_SPACE; - } + if (mPr_CheckPrivate(private_p) == TRUE) { + mPr_CopyPlayerName(name, private_p->player_ID.player_name); - player_select->player_types[PLAYER_NUM] = PLAYER_SELECT_PLAYER_MODE_OUT; + if (private_p->exists == FALSE) { + mem_copy(name + PLAYER_NAME_LEN, l_gaishutu_str, 10); + player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_OUT; + } else { + mem_copy(name + PLAYER_NAME_LEN, l_zaitaku_str, 9); + player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_HOME; + } + } else { + player_select->player_types[i] = PLAYER_SELECT_PLAYER_MODE_UNREGISTERED; + } - for (i = 0; i < SELECT_PLAYER_NUM; i++) { - player_select->init_procs[i] = l_init_proc[player_select->player_types[i]]; - } + private_p++; + } - Common_Set(player_no, 0); - Common_Set(player_data_mode, 0); - Common_Set(scene_from_title_demo, -1); -} \ No newline at end of file + mLd_CopyLandName(player_select->land_name, Save_Get(land_info.name)); + player_select->land_exist = TRUE; + } + + for (i = 0; i < SELECT_PLAYER_NAME_EXTRA; i++) { + player_select->player_names[PLAYER_NUM][i] = l_yosokara_str[i]; + } + + for (i = SELECT_PLAYER_NAME_EXTRA; i < SELECT_NAME_LEN; i++) { + player_select->player_names[PLAYER_NUM][i] = CHAR_SPACE; + } + + player_select->player_types[PLAYER_NUM] = PLAYER_SELECT_PLAYER_MODE_OUT; + + for (i = 0; i < SELECT_PLAYER_NUM; i++) { + player_select->init_procs[i] = l_init_proc[player_select->player_types[i]]; + } + + Common_Set(player_no, 0); + Common_Set(player_data_mode, 0); + Common_Set(scene_from_title_demo, -1); +} diff --git a/src/save_check_MYK.c_inc b/src/save_check_MYK.c_inc index 23f9536c..e5211265 100644 --- a/src/save_check_MYK.c_inc +++ b/src/save_check_MYK.c_inc @@ -182,7 +182,7 @@ static int sSC_CheckSaveData_Needlework() { for (i = 0; i < PLAYER_NUM; i++) { for (j = 0; j < mPr_ORIGINAL_DESIGN_COUNT; j++) { - if (sSC_CheckOneOriginalData(Save_Get(private + i)->my_org + j) == FALSE) { + if (sSC_CheckOneOriginalData(Save_Get(private_data + i)->my_org + j) == FALSE) { mFRm_ERRORLINE(348); return sSC_MYK_ERR_NEEDLEWORK; } diff --git a/src/save_check_NSW.c_inc b/src/save_check_NSW.c_inc index f159b398..79922dec 100644 --- a/src/save_check_NSW.c_inc +++ b/src/save_check_NSW.c_inc @@ -1,244 +1,225 @@ static int sChk_lbRTC_ymd_c_NSW(lbRTC_ymd_c* ymd) { - int res = FALSE; + int res = FALSE; - if (ymd->year < GAME_YEAR_MIN + 1 || ymd->year > GAME_YEAR_MAX - 1) { - res = TRUE; - } - - if (ymd->month == 0 || ymd->month > lbRTC_MONTHS_MAX) { - res = TRUE; - } - - if (ymd->day == 0 || ymd->day > 31) { - res = TRUE; - } - - if (res == TRUE) { - if (ymd->year == 0 && ymd->month == 0 && ymd->day == 0) { - res = FALSE; + if (ymd->year < GAME_YEAR_MIN + 1 || ymd->year > GAME_YEAR_MAX - 1) { + res = TRUE; } - else if (ymd->year == mTM_rtcTime_ymd_clear_code.year && ymd->month == mTM_rtcTime_ymd_clear_code.month && ymd->day == mTM_rtcTime_ymd_clear_code.day) { - res = FALSE; + + if (ymd->month == 0 || ymd->month > lbRTC_MONTHS_MAX) { + res = TRUE; } - + + if (ymd->day == 0 || ymd->day > 31) { + res = TRUE; + } + if (res == TRUE) { - mFRm_set_errInfo(l_mfrm_err_info, 91, l_mfrm_now_color); - } - } + if (ymd->year == 0 && ymd->month == 0 && ymd->day == 0) { + res = FALSE; + } else if (ymd->year == mTM_rtcTime_ymd_clear_code.year && ymd->month == mTM_rtcTime_ymd_clear_code.month && + ymd->day == mTM_rtcTime_ymd_clear_code.day) { + res = FALSE; + } - return res; + if (res == TRUE) { + mFRm_set_errInfo(l_mfrm_err_info, 91, l_mfrm_now_color); + } + } + + return res; } static int sCck_CheckSaveData_radiocard_NSW(Private_c* priv) { - mPr_day_day_c* radiocard_p = &priv->radiocard; - int res; + mPr_day_day_c* radiocard_p = &priv->radiocard; + int res; - if (sChk_lbRTC_ymd_c_NSW(&radiocard_p->last_date)) { - mFRm_ERRORLINE(112); - res = TRUE; - } - else if (radiocard_p->days > mPr_RADIOCARD_MAX_DAYS) { - mFRm_ERRORLINE(121); - res = TRUE; - } - else { - res = FALSE; - } + if (sChk_lbRTC_ymd_c_NSW(&radiocard_p->last_date)) { + mFRm_ERRORLINE(112); + res = TRUE; + } else if (radiocard_p->days > mPr_RADIOCARD_MAX_DAYS) { + mFRm_ERRORLINE(121); + res = TRUE; + } else { + res = FALSE; + } - return res; + return res; } static int sCck_CheckSaveData_calendar_NSW(Private_c* priv) { - int res; + int res; - if (priv->calendar.edit > 1) { - mFRm_ERRORLINE(143); - res = TRUE; - } - else if (priv->calendar.pad_63 != 0) { - mFRm_ERRORLINE(151); - res = TRUE; - } - else if ( - ( - priv->calendar.year < GAME_YEAR_MIN + 1 || priv->calendar.year > GAME_YEAR_MAX - 1 || - priv->calendar.month == 0 || priv->calendar.month > lbRTC_DECEMBER - ) && - (priv->calendar.year != 0 || priv->calendar.month != 0) - ) { - mFRm_ERRORLINE(164); - res = TRUE; - } - else { - res = FALSE; - } + if (priv->calendar.edit > 1) { + mFRm_ERRORLINE(143); + res = TRUE; + } else if (priv->calendar.pad_63 != 0) { + mFRm_ERRORLINE(151); + res = TRUE; + } else if ((priv->calendar.year < GAME_YEAR_MIN + 1 || priv->calendar.year > GAME_YEAR_MAX - 1 || + priv->calendar.month == 0 || priv->calendar.month > lbRTC_DECEMBER) && + (priv->calendar.year != 0 || priv->calendar.month != 0)) { + mFRm_ERRORLINE(164); + res = TRUE; + } else { + res = FALSE; + } - return res; + return res; } static int sCck_CheckSaveData_deposit_NSW(Private_c* priv) { - int res; - int deposit = priv->bank_account; + int res; + int deposit = priv->bank_account; - if (deposit < 0 || deposit > mPr_DEPOSIT_MAX) { - mFRm_ERRORLINE(184); - res = TRUE; - } - else { - res = FALSE; - } + if (deposit < 0 || deposit > mPr_DEPOSIT_MAX) { + mFRm_ERRORLINE(184); + res = TRUE; + } else { + res = FALSE; + } - return res; + return res; } static int sCck_CheckSaveData_nw_visitor_NSW(Private_c* priv) { - mPr_day_day_c* nw_visitor_p = &priv->nw_visitor; - int res; + mPr_day_day_c* nw_visitor_p = &priv->nw_visitor; + int res; - if (sChk_lbRTC_ymd_c_NSW(&nw_visitor_p->last_date) != FALSE && nw_visitor_p->last_date.year != 0) { - mFRm_ERRORLINE(204); - res = TRUE; - } - else { - res = FALSE; - } + if (sChk_lbRTC_ymd_c_NSW(&nw_visitor_p->last_date) != FALSE && nw_visitor_p->last_date.year != 0) { + mFRm_ERRORLINE(204); + res = TRUE; + } else { + res = FALSE; + } - return res; + return res; } static int sCck_CheckSaveData_my_org_no_table_NSW(Private_c* priv) { - u8 my_org_no; - int field = 0; - int total = 0; - u8* my_org_no_table = priv->my_org_no_table; - int i; - int res; + u8 my_org_no; + int field = 0; + int total = 0; + u8* my_org_no_table = priv->my_org_no_table; + int i; + int res; - for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { - my_org_no = my_org_no_table[i]; + for (i = 0; i < mPr_ORIGINAL_DESIGN_COUNT; i++) { + my_org_no = my_org_no_table[i]; - if (my_org_no >= mPr_ORIGINAL_DESIGN_COUNT) { - return TRUE; + if (my_org_no >= mPr_ORIGINAL_DESIGN_COUNT) { + return TRUE; + } + + total += my_org_no; + field |= (u16)(1 << my_org_no); } - total += my_org_no; - field |= (u16)(1 << my_org_no); - } + if ((u16)field != (u16)((1 << mPr_ORIGINAL_DESIGN_COUNT) - 1) && total != 0) { + mFRm_ERRORLINE(239); + res = TRUE; + } else { + res = FALSE; + } - if ((u16)field != (u16)((1 << mPr_ORIGINAL_DESIGN_COUNT) - 1) && total != 0) { - mFRm_ERRORLINE(239); - res = TRUE; - } - else { - res = FALSE; - } - - return res; + return res; } static int sCck_CheckSaveData_bridge_NSW() { - PlusBridge_c* bridge = Save_GetPointer(bridge); + PlusBridge_c* bridge = Save_GetPointer(bridge); - if (sChk_lbRTC_ymd_c_NSW(&bridge->build_date)) { - mFRm_ERRORLINE(259); - return TRUE; - } - else if (bridge->exists || bridge->pending) { - if ( - bridge->block_x == 0 || bridge->block_x > FG_BLOCK_X_NUM || - bridge->block_z == 0 || bridge->block_z > FG_BLOCK_Z_NUM - ) { - mFRm_ERRORLINE(271); - return TRUE; + if (sChk_lbRTC_ymd_c_NSW(&bridge->build_date)) { + mFRm_ERRORLINE(259); + return TRUE; + } else if (bridge->exists || bridge->pending) { + if (bridge->block_x == 0 || bridge->block_x > FG_BLOCK_X_NUM || bridge->block_z == 0 || + bridge->block_z > FG_BLOCK_Z_NUM) { + mFRm_ERRORLINE(271); + return TRUE; + } + } else if (bridge->block_x != 0 || bridge->block_z != 0) { + mFRm_ERRORLINE(280); + return TRUE; } - } - else if (bridge->block_x != 0 || bridge->block_z != 0) { - mFRm_ERRORLINE(280); - return TRUE; - } - return FALSE; + return FALSE; } static int sCck_CheckSaveData_fishRecord_NSW() { - mFR_record_c* record; - lbRTC_ymd_c ymd; - int i; + mFR_record_c* record; + lbRTC_ymd_c ymd; + int i; - for (i = 0; i < mFR_RECORD_NUM; i++) { - record = Save_Get(fishRecord + i); - mTM_set_renew_time(&ymd, &record->time); + for (i = 0; i < mFR_RECORD_NUM; i++) { + record = Save_Get(fishRecord + i); + mTM_set_renew_time(&ymd, &record->time); - if (record->size < 0) { - mFRm_ERRORLINE(307); - return TRUE; + if (record->size < 0) { + mFRm_ERRORLINE(307); + return TRUE; + } + + if (record->size != 0 && sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) { + mFRm_ERRORLINE(316); + return TRUE; + } } - if (record->size != 0 && sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) { - mFRm_ERRORLINE(316); - return TRUE; - } - } - - return FALSE; + return FALSE; } static int sCck_CheckSaveData_Anmret_NSW() { - Anmret_c* anmret = Save_GetPointer(return_animal); - int res; - lbRTC_ymd_c ymd; + Anmret_c* anmret = Save_GetPointer(return_animal); + int res; + lbRTC_ymd_c ymd; - if (anmret->npc_id != EMPTY_NO && ITEM_NAME_GET_TYPE(anmret->npc_id) != NAME_TYPE_NPC) { - mFRm_ERRORLINE(339); - res = TRUE; - } - else { - mTM_set_renew_time(&ymd, &anmret->renew_time); + if (anmret->npc_id != EMPTY_NO && ITEM_NAME_GET_TYPE(anmret->npc_id) != NAME_TYPE_NPC) { + mFRm_ERRORLINE(339); + res = TRUE; + } else { + mTM_set_renew_time(&ymd, &anmret->renew_time); - if (sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) { - mFRm_ERRORLINE(349); - res = TRUE; + if (sChk_lbRTC_ymd_c_NSW(&ymd) == TRUE) { + mFRm_ERRORLINE(349); + res = TRUE; + } else { + res = FALSE; + } } - else { - res = FALSE; - } - } - return res; + return res; } static int sCck_CheckSaveData_LightHouse_NSW() { - int res; + int res; - if (sChk_lbRTC_ymd_c_NSW(&Save_Get(LightHouse).renew_time) == TRUE) { - mFRm_ERRORLINE(368); - res = TRUE; - } - else { - res = FALSE; - } + if (sChk_lbRTC_ymd_c_NSW(&Save_Get(LightHouse).renew_time) == TRUE) { + mFRm_ERRORLINE(368); + res = TRUE; + } else { + res = FALSE; + } - return res; + return res; } static int sChk_CheckSaveData_NSW() { - int res = FALSE; - int i; + int res = FALSE; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - Private_c* priv = Save_Get(private) + i; + for (i = 0; i < PLAYER_NUM; i++) { + Private_c* priv = Save_Get(private_data) + i; - res |= sCck_CheckSaveData_radiocard_NSW(priv); - res |= sCck_CheckSaveData_calendar_NSW(priv); - res |= sCck_CheckSaveData_deposit_NSW(priv); - res |= sCck_CheckSaveData_nw_visitor_NSW(priv); - res |= sCck_CheckSaveData_my_org_no_table_NSW(priv); - } + res |= sCck_CheckSaveData_radiocard_NSW(priv); + res |= sCck_CheckSaveData_calendar_NSW(priv); + res |= sCck_CheckSaveData_deposit_NSW(priv); + res |= sCck_CheckSaveData_nw_visitor_NSW(priv); + res |= sCck_CheckSaveData_my_org_no_table_NSW(priv); + } - res |= sCck_CheckSaveData_bridge_NSW(); - res |= sCck_CheckSaveData_fishRecord_NSW(); - res |= sCck_CheckSaveData_Anmret_NSW(); - res |= sCck_CheckSaveData_LightHouse_NSW(); + res |= sCck_CheckSaveData_bridge_NSW(); + res |= sCck_CheckSaveData_fishRecord_NSW(); + res |= sCck_CheckSaveData_Anmret_NSW(); + res |= sCck_CheckSaveData_LightHouse_NSW(); - return res; + return res; } diff --git a/src/save_check_YSD.c_inc b/src/save_check_YSD.c_inc index ebd91eec..dc845fc6 100644 --- a/src/save_check_YSD.c_inc +++ b/src/save_check_YSD.c_inc @@ -1,105 +1,78 @@ static int sCck_CheckSaveData_diary_body_YSD(Private_c* priv) { - return FALSE; + return FALSE; } static int sCCk_Check_ItemName(mActor_name_t item) { - /* TODO: do not hardcode this */ - static s16 item1_kinds[ITEM1_CAT_NUM] = { - 255, - 3, - 91, - 39, - 254, - 48, - 66, - 66, - 7, - 10, - 54, - 15, - 95, - 44, - 1, - 3 - }; + /* TODO: do not hardcode this */ + static s16 item1_kinds[ITEM1_CAT_NUM] = { 255, 3, 91, 39, 254, 48, 66, 66, 7, 10, 54, 15, 95, 44, 1, 3 }; - mActor_name_t item_name = (mActor_name_t)item; - int item_type = ITEM_NAME_GET_TYPE(item_name); - int res = FALSE; + mActor_name_t item_name = (mActor_name_t)item; + int item_type = ITEM_NAME_GET_TYPE(item_name); + int res = FALSE; - if (item_type == NAME_TYPE_ITEM1) { - int index = ITEM_NAME_GET_INDEX(item_name); - int category = ITEM_NAME_GET_CAT(item_name); - - if ( - index < 0 || - index > item1_kinds[category] || - item_name == ITM_SICKLE /* ??? why is this explicitly invalid... lol */ - ) { - res = TRUE; + if (item_type == NAME_TYPE_ITEM1) { + int index = ITEM_NAME_GET_INDEX(item_name); + int category = ITEM_NAME_GET_CAT(item_name); + + if (index < 0 || index > item1_kinds[category] || + item_name == ITM_SICKLE /* ??? why is this explicitly invalid... lol */ + ) { + res = TRUE; + } + } else if (item_name != EMPTY_NO && item_type != NAME_TYPE_FTR0 && item_type != NAME_TYPE_FTR1) { + mFRm_ERRORLINE(110); + res = TRUE; } - } - else if (item_name != EMPTY_NO && item_type != NAME_TYPE_FTR0 && item_type != NAME_TYPE_FTR1) { - mFRm_ERRORLINE(110); - res = TRUE; - } - return res; + return res; } static int sCCk_Check_ItemName_Possession(mActor_name_t item) { - int res = FALSE; + int res = FALSE; - if ( - sCCk_Check_ItemName(item) || - (item >= ITM_MY_ORG_UMBRELLA0 && item <= ITM_MY_ORG_UMBRELLA7) || - (item >= ITM_RED_PAINT && item <= ITM_BROWN_PAINT) || - item == ITM_PRESENT || - item == ITM_TOWN_MAP || - item == ITM_GOLDEN_NET_PRESENT || - item == ITM_GOLDEN_AXE_PRESENT || - item == ITM_GOLDEN_SHOVEL_PRESENT || - item == ITM_GOLDEN_ROD_PRESENT - ) { - mFRm_ERRORLINE(141); - res = TRUE; - } + if (sCCk_Check_ItemName(item) || (item >= ITM_MY_ORG_UMBRELLA0 && item <= ITM_MY_ORG_UMBRELLA7) || + (item >= ITM_RED_PAINT && item <= ITM_BROWN_PAINT) || item == ITM_PRESENT || item == ITM_TOWN_MAP || + item == ITM_GOLDEN_NET_PRESENT || item == ITM_GOLDEN_AXE_PRESENT || item == ITM_GOLDEN_SHOVEL_PRESENT || + item == ITM_GOLDEN_ROD_PRESENT) { + mFRm_ERRORLINE(141); + res = TRUE; + } - return res; + return res; } static int sCck_CheckSaveData_Item_YSD(Private_c* priv) { - int i; + int i; - for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { - sCCk_Check_ItemName_Possession(priv->inventory.pockets[i]); - } + for (i = 0; i < mPr_POCKETS_SLOT_COUNT; i++) { + sCCk_Check_ItemName_Possession(priv->inventory.pockets[i]); + } - return FALSE; + return FALSE; } static int sCck_CheckSaveData_Mail_YSD(Private_c* priv) { - int res = FALSE; - int i; + int res = FALSE; + int i; - for (i = 0; i < mPr_INVENTORY_MAIL_COUNT; i++) { - res |= sChk_Mail_c_sub(priv->mail + i, 0); - } + for (i = 0; i < mPr_INVENTORY_MAIL_COUNT; i++) { + res |= sChk_Mail_c_sub(priv->mail + i, 0); + } - return FALSE; + return FALSE; } static int sChk_CheckSaveData_YSD() { - int res = FALSE; - int i; + int res = FALSE; + int i; - for (i = 0; i < PLAYER_NUM; i++) { - Private_c* priv = Save_Get(private) + i; + for (i = 0; i < PLAYER_NUM; i++) { + Private_c* priv = Save_Get(private_data) + i; - res |= sCck_CheckSaveData_Item_YSD(priv); - res |= sCck_CheckSaveData_Mail_YSD(priv); - res |= sCck_CheckSaveData_diary_body_YSD(priv); - } + res |= sCck_CheckSaveData_Item_YSD(priv); + res |= sCck_CheckSaveData_Mail_YSD(priv); + res |= sCck_CheckSaveData_diary_body_YSD(priv); + } - return res; + return res; } diff --git a/src/save_check_komatu.c_inc b/src/save_check_komatu.c_inc index 049f502f..db06ef49 100644 --- a/src/save_check_komatu.c_inc +++ b/src/save_check_komatu.c_inc @@ -1,75 +1,75 @@ static int sChk_CheckSaveData_komatu() { - int i; - int j; + int i; + int j; - for (i = 0; i < PLAYER_NUM; i++) { - Private_c* priv = Save_Get(private) + i; + for (i = 0; i < PLAYER_NUM; i++) { + Private_c* priv = Save_Get(private_data) + i; - { - const u8 gender = priv->gender; - if (gender > mPr_SEX_FEMALE) { - return TRUE; - } - } - - { - s8 face = priv->face; - if (face < 0 || face >= mPr_FACE_TYPE_NUM) { - return TRUE; - } - } - - { - mPr_cloth_c* cloth = &priv->cloth; - u16 idx = cloth->idx; - mActor_name_t item; - - if (idx >= (256 + 8) || idx == 255) { - return TRUE; - } - - item = cloth->item; - if (item != EMPTY_NO) { - int valid_cloth = item == RSV_CLOTH || (item >= ITM_CLOTH000 && item < ITM_CLOTH_END); - - if (valid_cloth == FALSE) { - return TRUE; + { + const u8 gender = priv->gender; + if (gender > mPr_SEX_FEMALE) { + return TRUE; + } } - } - } - { - mPr_destiny_c* destiny = &priv->destiny; - - if (destiny->type >= mPr_DESTINY_NUM) { - return TRUE; - } - } - - { - mPr_sunburn_c* sunburn = &priv->sunburn; - s8 t = sunburn->rank; - s8 t2; - - if (t < 0 || t >= mPr_SUNBURN_RANK_NUM) { - return TRUE; - } - - t2 = sunburn->rankdown_days; - if (t2 < 0 || t2 > 2) { - return TRUE; - } - } - - { - u8 golden_items_collected = priv->golden_items_collected; - for (j = 4; j < 8; j++) { - if (golden_items_collected & ((u8)(1 << j))) { - return TRUE; + { + s8 face = priv->face; + if (face < 0 || face >= mPr_FACE_TYPE_NUM) { + return TRUE; + } } - } - } - } - return FALSE; + { + mPr_cloth_c* cloth = &priv->cloth; + u16 idx = cloth->idx; + mActor_name_t item; + + if (idx >= (256 + 8) || idx == 255) { + return TRUE; + } + + item = cloth->item; + if (item != EMPTY_NO) { + int valid_cloth = item == RSV_CLOTH || (item >= ITM_CLOTH000 && item < ITM_CLOTH_END); + + if (valid_cloth == FALSE) { + return TRUE; + } + } + } + + { + mPr_destiny_c* destiny = &priv->destiny; + + if (destiny->type >= mPr_DESTINY_NUM) { + return TRUE; + } + } + + { + mPr_sunburn_c* sunburn = &priv->sunburn; + s8 t = sunburn->rank; + s8 t2; + + if (t < 0 || t >= mPr_SUNBURN_RANK_NUM) { + return TRUE; + } + + t2 = sunburn->rankdown_days; + if (t2 < 0 || t2 > 2) { + return TRUE; + } + } + + { + u8 golden_items_collected = priv->golden_items_collected; + for (j = 4; j < 8; j++) { + if (golden_items_collected & ((u8)(1 << j))) { + return TRUE; + } + } + } + } + + return FALSE; } diff --git a/src/save_menu.c b/src/save_menu.c index 1098ba40..f18298d5 100644 --- a/src/save_menu.c +++ b/src/save_menu.c @@ -12,253 +12,239 @@ #include "m_common_data.h" static void save_menu_set_cursor_col(GAME_SAVE_MENU* save_menu) { - /* this was likely meant to be static */ - int cursor_col[10][3] = { - { 192, 120, 120 }, - { 224, 130, 130 }, - { 240, 150, 150 }, - { 255, 180, 180 }, - { 240, 150, 150 }, - { 224, 130, 130 }, - { 192, 120, 120 }, - { 128, 80, 80 }, - { 64, 64, 64 }, - { 128, 80, 80 }, - }; + /* this was likely meant to be static */ + int cursor_col[10][3] = { + { 192, 120, 120 }, { 224, 130, 130 }, { 240, 150, 150 }, { 255, 180, 180 }, { 240, 150, 150 }, + { 224, 130, 130 }, { 192, 120, 120 }, { 128, 80, 80 }, { 64, 64, 64 }, { 128, 80, 80 }, + }; - int (*dst)[3] = &save_menu->cursor_col[save_menu->mode]; - int (*color)[3] = &cursor_col[(u32)save_menu->frame / 4]; - int i; - for (i = 0; i < 3; i++) { - (*dst)[i] = (*color)[i]; - } + int(*dst)[3] = &save_menu->cursor_col[save_menu->mode]; + int(*color)[3] = &cursor_col[(u32)save_menu->frame / 4]; + int i; + for (i = 0; i < 3; i++) { + (*dst)[i] = (*color)[i]; + } } static void save_menu_reset_cursor_col(int (*color)[3]) { - int default_color[3] = { 40, 40, 40 }; - int i; + int default_color[3] = { 40, 40, 40 }; + int i; - for (i = 0; i < 3; i++) { - (*color)[i] = default_color[i]; - } + for (i = 0; i < 3; i++) { + (*color)[i] = default_color[i]; + } } typedef void (*SAVE_MENU_PROC)(GAME_SAVE_MENU*); static void save_menu_data_save_from(GAME_SAVE_MENU* save_menu) { - if ((int)Common_Get(player_no) != mPr_FOREIGNER) { - Common_Get(now_private)->exists = TRUE; - save_menu->error = SAVE_ERROR_EXIT; // OK - } - else { - save_menu->error = SAVE_ERROR_FLASHROM; // Player is foriegner - } + if ((int)Common_Get(player_no) != mPr_FOREIGNER) { + Common_Get(now_private)->exists = TRUE; + save_menu->error = SAVE_ERROR_EXIT; // OK + } else { + save_menu->error = SAVE_ERROR_FLASHROM; // Player is foriegner + } } static void save_menu_data_save_pak(GAME_SAVE_MENU* save_menu) { - Private_c* private = Common_Get(now_private); - if ((int)Common_Get(player_no) == mPr_FOREIGNER) { - AnmPersonalID_c* foriegn_id = mNpc_GetOtherAnimalPersonalID(NULL, 0); - if (foriegn_id != NULL) { - mNpc_CopyAnimalPersonalID(&private->stored_anm_id, foriegn_id); - } - } - - mCPk_PakOpen(mCPk_get_pkinfo(), 0); - if (mCPk_SavePak(Save_Get(private), Save_Get(animals), mCPk_get_pkinfo()) == TRUE) { - if (mLd_PlayerManKindCheck() == FALSE) { - Common_Get(now_private)->exists = FALSE; + Private_c* private = Common_Get(now_private); + if ((int)Common_Get(player_no) == mPr_FOREIGNER) { + AnmPersonalID_c* foriegn_id = mNpc_GetOtherAnimalPersonalID(NULL, 0); + if (foriegn_id != NULL) { + mNpc_CopyAnimalPersonalID(&private->stored_anm_id, foriegn_id); + } } - save_menu->error = SAVE_ERROR_EXIT; // OK - } - else { - save_menu->error = SAVE_ERROR_CPAK; // Failed to save to CPak - } + mCPk_PakOpen(mCPk_get_pkinfo(), 0); + if (mCPk_SavePak(Save_Get(private_data), Save_Get(animals), mCPk_get_pkinfo()) == TRUE) { + if (mLd_PlayerManKindCheck() == FALSE) { + Common_Get(now_private)->exists = FALSE; + } + + save_menu->error = SAVE_ERROR_EXIT; // OK + } else { + save_menu->error = SAVE_ERROR_CPAK; // Failed to save to CPak + } } static void save_menu_move_do_save(GAME_SAVE_MENU* save_menu) { - static SAVE_MENU_PROC save_proc[SAVE_MODE_NUM] = { &save_menu_data_save_from, &save_menu_data_save_pak }; + static SAVE_MENU_PROC save_proc[SAVE_MODE_NUM] = { &save_menu_data_save_from, &save_menu_data_save_pak }; - int mode = save_menu->mode; + int mode = save_menu->mode; - /* Check and save to select location */ - if (chkTrigger(BUTTON_A)) { - (*save_proc[mode])(save_menu); - } - - /* Check and change selected save mode */ - if (chkTrigger(BUTTON_R) || chkTrigger(BUTTON_DUP) || chkTrigger(BUTTON_DDOWN)) { - save_menu->frame = 0; - save_menu_reset_cursor_col(save_menu->cursor_col + mode); - save_menu->mode++; - - if (save_menu->mode >= SAVE_MODE_NUM) { - save_menu->mode = SAVE_MODE_BEGIN; + /* Check and save to select location */ + if (chkTrigger(BUTTON_A)) { + (*save_proc[mode])(save_menu); } - } - /* Check if should exit menu */ - if (chkTrigger(BUTTON_B)) { - save_menu->error = SAVE_ERROR_EXIT; // OK - } + /* Check and change selected save mode */ + if (chkTrigger(BUTTON_R) || chkTrigger(BUTTON_DUP) || chkTrigger(BUTTON_DDOWN)) { + save_menu->frame = 0; + save_menu_reset_cursor_col(save_menu->cursor_col + mode); + save_menu->mode++; + + if (save_menu->mode >= SAVE_MODE_NUM) { + save_menu->mode = SAVE_MODE_BEGIN; + } + } + + /* Check if should exit menu */ + if (chkTrigger(BUTTON_B)) { + save_menu->error = SAVE_ERROR_EXIT; // OK + } } static void save_menu_move_finish(GAME_SAVE_MENU* save_menu) { - GAME_GOTO_NEXT((GAME*)save_menu, trademark, TRADEMARK); + GAME_GOTO_NEXT((GAME*)save_menu, trademark, TRADEMARK); } static void save_menu_move_err(GAME_SAVE_MENU* save_menu) { - save_menu->error = SAVE_ERROR_NONE; // cleared + save_menu->error = SAVE_ERROR_NONE; // cleared } static void save_menu_move_main(GAME_SAVE_MENU* save_menu) { - static SAVE_MENU_PROC sub_proc[SAVE_ERROR_NUM] = { - &save_menu_move_do_save, - &save_menu_move_err, - &save_menu_move_err, - &save_menu_move_finish - }; + static SAVE_MENU_PROC sub_proc[SAVE_ERROR_NUM] = { &save_menu_move_do_save, &save_menu_move_err, + &save_menu_move_err, &save_menu_move_finish }; - int error = save_menu->error; + int error = save_menu->error; - if (error >= SAVE_ERROR_NONE && error < SAVE_ERROR_NUM) { - (*sub_proc[error])(save_menu); - } + if (error >= SAVE_ERROR_NONE && error < SAVE_ERROR_NUM) { + (*sub_proc[error])(save_menu); + } - save_menu_set_cursor_col(save_menu); - save_menu->frame++; + save_menu_set_cursor_col(save_menu); + save_menu->frame++; - if (save_menu->frame == 40) { - save_menu->frame = 0; - } + if (save_menu->frame == 40) { + save_menu->frame = 0; + } } static void save_menu_draw_title(GAME_SAVE_MENU* save_menu) { - /* This translates to 'セーブ メニュー' (save menu), the devs didn't bother translating it */ - u8 title[] = { 0x9E, 0x90, 0xDF, CHAR_SPACE, 0xB2, 0xA6, 0x8D, 0x90 }; + /* This translates to 'セーブ メニュー' (save menu), the devs didn't bother translating it */ + u8 title[] = { 0x9E, 0x90, 0xDF, CHAR_SPACE, 0xB2, 0xA6, 0x8D, 0x90 }; - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace((GAME*)save_menu, title, ARRAY_SIZE(title, u8), 110.0f, 30.0f, 200, 50, 50, 255, FALSE, TRUE, FALSE, 1.1f, 1.1f, mFont_MODE_FONT); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)save_menu, title, ARRAY_SIZE(title, u8), 110.0f, 30.0f, 200, 50, 50, 255, + FALSE, TRUE, FALSE, 1.1f, 1.1f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); } static void save_menu_draw_push_a(GAME_SAVE_MENU* save_menu) { - /* Push A Button */ - u8 push_a[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_A, CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n }; + /* Push A Button */ + u8 push_a[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_A, CHAR_SPACE, + CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n }; - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_a, ARRAY_SIZE(push_a, u8), 95.0f, 175.0f, 200, 200, 200, 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_a, ARRAY_SIZE(push_a, u8), 95.0f, 175.0f, 200, 200, 200, 255, + FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); } static void save_menu_draw_select_r(GAME_SAVE_MENU* save_menu) { - /* Select R Button */ - u8 select_r[] = { CHAR_S, CHAR_e, CHAR_l, CHAR_e, CHAR_c, CHAR_t, CHAR_SPACE, CHAR_R, CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n }; + /* Select R Button */ + u8 select_r[] = { CHAR_S, CHAR_e, CHAR_l, CHAR_e, CHAR_c, CHAR_t, CHAR_SPACE, CHAR_R, + CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n }; - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace((GAME*)save_menu, select_r, ARRAY_SIZE(select_r, u8), 76.0f, 185.0f, 200, 200, 200, 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)save_menu, select_r, ARRAY_SIZE(select_r, u8), 76.0f, 185.0f, 200, 200, 200, + 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); } static void save_menu_draw_push_b(GAME_SAVE_MENU* save_menu) { - /* Push B Button to EXIT */ - u8 push_b[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_B, CHAR_SPACE, CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n, CHAR_SPACE, CHAR_t, CHAR_o, CHAR_SPACE, CHAR_E, CHAR_X, CHAR_I, CHAR_T }; + /* Push B Button to EXIT */ + u8 push_b[] = { CHAR_P, CHAR_u, CHAR_s, CHAR_h, CHAR_SPACE, CHAR_B, CHAR_SPACE, + CHAR_B, CHAR_u, CHAR_t, CHAR_t, CHAR_o, CHAR_n, CHAR_SPACE, + CHAR_t, CHAR_o, CHAR_SPACE, CHAR_E, CHAR_X, CHAR_I, CHAR_T }; - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_b, ARRAY_SIZE(push_b, u8), 50.0f, 210.0f, 200, 200, 200, 255, FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace((GAME*)save_menu, push_b, ARRAY_SIZE(push_b, u8), 50.0f, 210.0f, 200, 200, 200, 255, + FALSE, TRUE, FALSE, 0.8f, 0.8f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); } static void save_menu_draw_select_mode(GAME_SAVE_MENU* save_menu) { - /* + /* - [0] = 'FlashRom にセーブ' "Save to FlashRom" - [1] = 'パック にセーブ ' "Save to Pak" + [0] = 'FlashRom にセーブ' "Save to FlashRom" + [1] = 'パック にセーブ ' "Save to Pak" - */ - u8 select_mode[SAVE_MODE_NUM][13] = { - { CHAR_F, CHAR_l, CHAR_a, CHAR_s, CHAR_h, CHAR_R, CHAR_o, CHAR_m, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF }, - { 0xE2, 0x8F, 0x98, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE }, - }; + */ + u8 select_mode[SAVE_MODE_NUM][13] = { + { CHAR_F, CHAR_l, CHAR_a, CHAR_s, CHAR_h, CHAR_R, CHAR_o, CHAR_m, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF }, + { 0xE2, 0x8F, 0x98, CHAR_SPACE, 0x15, 0x9E, 0x90, 0xDF, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, CHAR_SPACE, + CHAR_SPACE }, + }; - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace( - (GAME*)save_menu, - select_mode[SAVE_MODE_FLASHROM], ARRAY_SIZE(select_mode[SAVE_MODE_FLASHROM], u8), - 60.0f, 85.0f, - save_menu->cursor_col[SAVE_MODE_FLASHROM][0], save_menu->cursor_col[SAVE_MODE_FLASHROM][1], save_menu->cursor_col[SAVE_MODE_FLASHROM][2], 255, - FALSE, TRUE, FALSE, - 1.2f, 1.2f, - mFont_MODE_FONT - ); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace( + (GAME*)save_menu, select_mode[SAVE_MODE_FLASHROM], ARRAY_SIZE(select_mode[SAVE_MODE_FLASHROM], u8), 60.0f, + 85.0f, save_menu->cursor_col[SAVE_MODE_FLASHROM][0], save_menu->cursor_col[SAVE_MODE_FLASHROM][1], + save_menu->cursor_col[SAVE_MODE_FLASHROM][2], 255, FALSE, TRUE, FALSE, 1.2f, 1.2f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); - mFont_SetLineStrings_AndSpace( - (GAME*)save_menu, - select_mode[SAVE_MODE_CPAK], ARRAY_SIZE(select_mode[SAVE_MODE_CPAK], u8), - 100.0f, 125.0f, - save_menu->cursor_col[SAVE_MODE_CPAK][0], save_menu->cursor_col[SAVE_MODE_CPAK][1], save_menu->cursor_col[SAVE_MODE_CPAK][2], 255, - FALSE, TRUE, FALSE, - 1.2f, 1.2f, - mFont_MODE_FONT - ); - mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetMatrix(save_menu->game.graph, mFont_MODE_FONT); + mFont_SetLineStrings_AndSpace( + (GAME*)save_menu, select_mode[SAVE_MODE_CPAK], ARRAY_SIZE(select_mode[SAVE_MODE_CPAK], u8), 100.0f, 125.0f, + save_menu->cursor_col[SAVE_MODE_CPAK][0], save_menu->cursor_col[SAVE_MODE_CPAK][1], + save_menu->cursor_col[SAVE_MODE_CPAK][2], 255, FALSE, TRUE, FALSE, 1.2f, 1.2f, mFont_MODE_FONT); + mFont_UnSetMatrix(save_menu->game.graph, mFont_MODE_FONT); } extern void save_menu_draw_main(GAME_SAVE_MENU* save_menu) { - GRAPH* g = save_menu->game.graph; + GRAPH* g = save_menu->game.graph; - OPEN_DISP(g); + OPEN_DISP(g); - gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0); - DisplayList_initialize(g, 0, 0, 0, NULL); - gDPPipeSync(NOW_POLY_OPA_DISP++); + gSPSegment(NOW_POLY_OPA_DISP++, G_MWO_SEGMENT_0, 0); + DisplayList_initialize(g, 0, 0, 0, NULL); + gDPPipeSync(NOW_POLY_OPA_DISP++); - CLOSE_DISP(g); + CLOSE_DISP(g); - showView(&save_menu->view, VIEW_UPDATE_ALL); - save_menu_draw_title(save_menu); - save_menu_draw_push_a(save_menu); - save_menu_draw_select_r(save_menu); - save_menu_draw_push_b(save_menu); - save_menu_draw_select_mode(save_menu); + showView(&save_menu->view, VIEW_UPDATE_ALL); + save_menu_draw_title(save_menu); + save_menu_draw_push_a(save_menu); + save_menu_draw_select_r(save_menu); + save_menu_draw_push_b(save_menu); + save_menu_draw_select_mode(save_menu); } static void save_menu_main(GAME* game) { - GRAPH* g; - GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game; - save_menu_move_main(save_menu); - save_menu_draw_main(save_menu); + GRAPH* g; + GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game; + save_menu_move_main(save_menu); + save_menu_draw_main(save_menu); - g = game->graph; - game_debug_draw_last(game, g); - game_draw_last(g); + g = game->graph; + game_debug_draw_last(game, g); + game_draw_last(g); } -extern void save_menu_cleanup(GAME* game) { } +extern void save_menu_cleanup(GAME* game) { +} extern void save_menu_init(GAME* game) { - GRAPH* g = game->graph; - View* view; - GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game; - int i; + GRAPH* g = game->graph; + View* view; + GAME_SAVE_MENU* save_menu = (GAME_SAVE_MENU*)game; + int i; - game->exec = &save_menu_main; - game->cleanup = &save_menu_cleanup; + game->exec = &save_menu_main; + game->cleanup = &save_menu_cleanup; - view = &save_menu->view; - initView(view, g); - view->flag = VIEW_UPDATE_ORTHOGRAPHIC; - new_Matrix(game); - SetGameFrame(1); + view = &save_menu->view; + initView(view, g); + view->flag = VIEW_UPDATE_ORTHOGRAPHIC; + new_Matrix(game); + SetGameFrame(1); - save_menu->frame = 0; - save_menu->mode = SAVE_MODE_BEGIN; - save_menu->error = SAVE_ERROR_NONE; + save_menu->frame = 0; + save_menu->mode = SAVE_MODE_BEGIN; + save_menu->error = SAVE_ERROR_NONE; - for (i = 0; i < SAVE_MODE_NUM; i++) { - save_menu_reset_cursor_col(save_menu->cursor_col + i); - } + for (i = 0; i < SAVE_MODE_NUM; i++) { + save_menu_reset_cursor_col(save_menu->cursor_col + i); + } } diff --git a/src/static/jaudio_NES/dummyprobe.c b/src/static/jaudio_NES/dummyprobe.c deleted file mode 100644 index 1308e37e..00000000 --- a/src/static/jaudio_NES/dummyprobe.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "jaudio_NES/dummyprobe.h" - -void Probe_Start(void){ - -} - -void Probe_Finish(void){ - -} \ No newline at end of file diff --git a/src/static/jaudio_NES/game/audioheaders.c b/src/static/jaudio_NES/game/audioheaders.c new file mode 100644 index 00000000..0aa951be --- /dev/null +++ b/src/static/jaudio_NES/game/audioheaders.c @@ -0,0 +1,4724 @@ +#include "jaudio_NES/audioheaders.h" + +ArcHeader AudioseqHeaderStart ATTRIBUTE_ALIGN(1) = { + 249, /* entries */ + 0, /* unk param */ + nullptr, /* data start pointer */ + 0, /* copy */ + { 0, 0, 0, 0, 0, 0, 0 }, /* pad */ + /* entries */ + { + { + /* entry 0 */ + 0x00000000, /* rom addr */ + 0x000009A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 1 */ + 0x000009A0, /* rom addr */ + 0x00000FC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 2 */ + 0x00001960, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 3 */ + 0x00002340, /* rom addr */ + 0x00000B80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 4 */ + 0x00002EC0, /* rom addr */ + 0x000012C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 5 */ + 0x00004180, /* rom addr */ + 0x00001420, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 6 */ + 0x000055A0, /* rom addr */ + 0x000007E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 7 */ + 0x00005D80, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 8 */ + 0x00006540, /* rom addr */ + 0x00000880, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 9 */ + 0x00006DC0, /* rom addr */ + 0x000014A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 10 */ + 0x00008260, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 11 */ + 0x00008D60, /* rom addr */ + 0x00001200, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 12 */ + 0x00009F60, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 13 */ + 0x0000AAA0, /* rom addr */ + 0x000007A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 14 */ + 0x0000B240, /* rom addr */ + 0x00000820, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 15 */ + 0x0000BA60, /* rom addr */ + 0x00000C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 16 */ + 0x0000C6E0, /* rom addr */ + 0x00000BE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 17 */ + 0x0000D2C0, /* rom addr */ + 0x00000C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 18 */ + 0x0000DF40, /* rom addr */ + 0x00000840, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 19 */ + 0x0000E780, /* rom addr */ + 0x00000CA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 20 */ + 0x0000F420, /* rom addr */ + 0x000016E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 21 */ + 0x00010B00, /* rom addr */ + 0x00000D80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 22 */ + 0x00011880, /* rom addr */ + 0x000009C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 23 */ + 0x00012240, /* rom addr */ + 0x00000980, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 24 */ + 0x00012BC0, /* rom addr */ + 0x00000E60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 25 */ + 0x00013A20, /* rom addr */ + 0x00000BE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 26 */ + 0x00014600, /* rom addr */ + 0x00000D40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 27 */ + 0x00015340, /* rom addr */ + 0x000010E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 28 */ + 0x00016420, /* rom addr */ + 0x00000E20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 29 */ + 0x00017240, /* rom addr */ + 0x00001100, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 30 */ + 0x00018340, /* rom addr */ + 0x00001700, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 31 */ + 0x00019A40, /* rom addr */ + 0x000009C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 32 */ + 0x0001A400, /* rom addr */ + 0x00000C60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 33 */ + 0x0001B060, /* rom addr */ + 0x00000BC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 34 */ + 0x0001BC20, /* rom addr */ + 0x00001260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 35 */ + 0x0001CE80, /* rom addr */ + 0x00000880, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 36 */ + 0x0001D700, /* rom addr */ + 0x00001020, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 37 */ + 0x0001E720, /* rom addr */ + 0x00000640, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 38 */ + 0x0001ED60, /* rom addr */ + 0x00000E20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 39 */ + 0x0001FB80, /* rom addr */ + 0x00000760, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 40 */ + 0x000202E0, /* rom addr */ + 0x00000A40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 41 */ + 0x00020D20, /* rom addr */ + 0x000011E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 42 */ + 0x00021F00, /* rom addr */ + 0x00000C20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 43 */ + 0x00022B20, /* rom addr */ + 0x00000AA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 44 */ + 0x000235C0, /* rom addr */ + 0x00000BE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 45 */ + 0x000241A0, /* rom addr */ + 0x00002380, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 46 */ + 0x00026520, /* rom addr */ + 0x00000680, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 47 */ + 0x00026BA0, /* rom addr */ + 0x00002180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 48 */ + 0x00028D20, /* rom addr */ + 0x00000AE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 49 */ + 0x00029800, /* rom addr */ + 0x00000FE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 50 */ + 0x0002A7E0, /* rom addr */ + 0x000010C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 51 */ + 0x0002B8A0, /* rom addr */ + 0x00001640, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 52 */ + 0x0002CEE0, /* rom addr */ + 0x000006E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 53 */ + 0x0002D5C0, /* rom addr */ + 0x00000960, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 54 */ + 0x0002DF20, /* rom addr */ + 0x00000BA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 55 */ + 0x0002EAC0, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 56 */ + 0x0002F4A0, /* rom addr */ + 0x00000AC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 57 */ + 0x0002FF60, /* rom addr */ + 0x00000A40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 58 */ + 0x000309A0, /* rom addr */ + 0x00001080, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 59 */ + 0x00031A20, /* rom addr */ + 0x00001620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 60 */ + 0x00033040, /* rom addr */ + 0x00000560, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 61 */ + 0x000335A0, /* rom addr */ + 0x00000580, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 62 */ + 0x00033B20, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 63 */ + 0x00034180, /* rom addr */ + 0x000003A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 64 */ + 0x00034520, /* rom addr */ + 0x00000560, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 65 */ + 0x00000040, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 66 */ + 0x00034A80, /* rom addr */ + 0x00000740, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 67 */ + 0x000351C0, /* rom addr */ + 0x00000E20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 68 */ + 0x00035FE0, /* rom addr */ + 0x00000420, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 69 */ + 0x00036400, /* rom addr */ + 0x000004E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 70 */ + 0x0000003E, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 71 */ + 0x000368E0, /* rom addr */ + 0x00000460, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 72 */ + 0x00036D40, /* rom addr */ + 0x00000200, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 73 */ + 0x00036F40, /* rom addr */ + 0x000001A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 74 */ + 0x000370E0, /* rom addr */ + 0x00000680, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 75 */ + 0x00037760, /* rom addr */ + 0x000003E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 76 */ + 0x00037B40, /* rom addr */ + 0x000003C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 77 */ + 0x00037F00, /* rom addr */ + 0x00000640, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 78 */ + 0x00038540, /* rom addr */ + 0x00000600, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 79 */ + 0x00038B40, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 80 */ + 0x00039680, /* rom addr */ + 0x00000360, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 81 */ + 0x000399E0, /* rom addr */ + 0x00001C40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 82 */ + 0x0003B620, /* rom addr */ + 0x00000720, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 83 */ + 0x0003BD40, /* rom addr */ + 0x00000F20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 84 */ + 0x0003CC60, /* rom addr */ + 0x00001140, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 85 */ + 0x0003DDA0, /* rom addr */ + 0x000008A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 86 */ + 0x0003E640, /* rom addr */ + 0x000011E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 87 */ + 0x0003F820, /* rom addr */ + 0x00000C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 88 */ + 0x000404A0, /* rom addr */ + 0x00001160, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 89 */ + 0x00041600, /* rom addr */ + 0x00001A20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 90 */ + 0x00043020, /* rom addr */ + 0x00000C20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 91 */ + 0x00043C40, /* rom addr */ + 0x00000B80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 92 */ + 0x000447C0, /* rom addr */ + 0x00000D80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 93 */ + 0x00045540, /* rom addr */ + 0x00000CA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 94 */ + 0x000461E0, /* rom addr */ + 0x000012A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 95 */ + 0x00047480, /* rom addr */ + 0x00000D40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 96 */ + 0x000481C0, /* rom addr */ + 0x000008C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 97 */ + 0x00048A80, /* rom addr */ + 0x00000CA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 98 */ + 0x00049720, /* rom addr */ + 0x000013A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 99 */ + 0x0004AAC0, /* rom addr */ + 0x000012C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 100 */ + 0x0004BD80, /* rom addr */ + 0x00000D80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 101 */ + 0x0004CB00, /* rom addr */ + 0x000014E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 102 */ + 0x0004DFE0, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 103 */ + 0x0004E9C0, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 104 */ + 0x0004F4C0, /* rom addr */ + 0x00000780, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 105 */ + 0x0004FC40, /* rom addr */ + 0x00000580, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 106 */ + 0x000501C0, /* rom addr */ + 0x00000080, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 107 */ + 0x00050240, /* rom addr */ + 0x00000080, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 108 */ + 0x000502C0, /* rom addr */ + 0x00000060, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 109 */ + 0x00050320, /* rom addr */ + 0x00000080, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 110 */ + 0x000503A0, /* rom addr */ + 0x00000060, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 111 */ + 0x00050400, /* rom addr */ + 0x00000420, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 112 */ + 0x00050820, /* rom addr */ + 0x00000400, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 113 */ + 0x00050C20, /* rom addr */ + 0x00000600, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 114 */ + 0x00051220, /* rom addr */ + 0x00001720, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 115 */ + 0x00052940, /* rom addr */ + 0x00000880, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 116 */ + 0x000531C0, /* rom addr */ + 0x00000A80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 117 */ + 0x00053C40, /* rom addr */ + 0x00000480, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 118 */ + 0x000540C0, /* rom addr */ + 0x00000800, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 119 */ + 0x000548C0, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 120 */ + 0x00055080, /* rom addr */ + 0x00000A00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 121 */ + 0x00055A80, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 122 */ + 0x00056040, /* rom addr */ + 0x00000460, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 123 */ + 0x000564A0, /* rom addr */ + 0x00000820, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 124 */ + 0x00056CC0, /* rom addr */ + 0x00000860, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 125 */ + 0x00057520, /* rom addr */ + 0x000007E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 126 */ + 0x00057D00, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 127 */ + 0x00058360, /* rom addr */ + 0x00000680, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 128 */ + 0x000589E0, /* rom addr */ + 0x00000A20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 129 */ + 0x00059400, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 130 */ + 0x00059E60, /* rom addr */ + 0x00000C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 131 */ + 0x0005AAE0, /* rom addr */ + 0x00000C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 132 */ + 0x0005B760, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 133 */ + 0x0005C260, /* rom addr */ + 0x00000760, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 134 */ + 0x0005C9C0, /* rom addr */ + 0x00000880, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 135 */ + 0x0005D240, /* rom addr */ + 0x000007A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 136 */ + 0x0005D9E0, /* rom addr */ + 0x00000740, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 137 */ + 0x0005E120, /* rom addr */ + 0x00000640, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 138 */ + 0x0005E760, /* rom addr */ + 0x00000AE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 139 */ + 0x0005F240, /* rom addr */ + 0x00000500, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 140 */ + 0x0005F740, /* rom addr */ + 0x00000EA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 141 */ + 0x000605E0, /* rom addr */ + 0x00000620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 142 */ + 0x00060C00, /* rom addr */ + 0x000005A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 143 */ + 0x000611A0, /* rom addr */ + 0x00000EE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 144 */ + 0x00062080, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 145 */ + 0x000626E0, /* rom addr */ + 0x00000760, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 146 */ + 0x00062E40, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 147 */ + 0x000638A0, /* rom addr */ + 0x00000880, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 148 */ + 0x00064120, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 149 */ + 0x00064B00, /* rom addr */ + 0x00000780, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 150 */ + 0x00065280, /* rom addr */ + 0x00000300, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 151 */ + 0x00065580, /* rom addr */ + 0x00000860, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 152 */ + 0x00065DE0, /* rom addr */ + 0x00000EC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 153 */ + 0x00066CA0, /* rom addr */ + 0x000004C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 154 */ + 0x00067160, /* rom addr */ + 0x00000560, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 155 */ + 0x000676C0, /* rom addr */ + 0x00000900, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 156 */ + 0x00067FC0, /* rom addr */ + 0x00000D40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 157 */ + 0x00068D00, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 158 */ + 0x000694C0, /* rom addr */ + 0x00000C60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 159 */ + 0x0006A120, /* rom addr */ + 0x00000620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 160 */ + 0x0006A740, /* rom addr */ + 0x000013C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 161 */ + 0x0006BB00, /* rom addr */ + 0x000007A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 162 */ + 0x0006C2A0, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 163 */ + 0x0006CDE0, /* rom addr */ + 0x00000100, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 164 */ + 0x0006CEE0, /* rom addr */ + 0x00000420, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 165 */ + 0x0006D300, /* rom addr */ + 0x00001100, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 166 */ + 0x0006E400, /* rom addr */ + 0x000004C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 167 */ + 0x0006E8C0, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 168 */ + 0x0006EE80, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 169 */ + 0x0006F1C0, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 170 */ + 0x0006F820, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 171 */ + 0x0006FDE0, /* rom addr */ + 0x00000940, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 172 */ + 0x00070720, /* rom addr */ + 0x00000740, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 173 */ + 0x000000AC, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 174 */ + 0x000000AC, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 175 */ + 0x000000AC, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 176 */ + 0x00070E60, /* rom addr */ + 0x000002C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 177 */ + 0x00071120, /* rom addr */ + 0x00000160, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 178 */ + 0x00071280, /* rom addr */ + 0x00000300, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 179 */ + 0x00071580, /* rom addr */ + 0x00000140, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 180 */ + 0x000716C0, /* rom addr */ + 0x00000780, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 181 */ + 0x00071E40, /* rom addr */ + 0x00000520, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 182 */ + 0x00072360, /* rom addr */ + 0x00000040, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 183 */ + 0x000723A0, /* rom addr */ + 0x00000720, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 184 */ + 0x00072AC0, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 185 */ + 0x00072E00, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 186 */ + 0x00073140, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 187 */ + 0x00073480, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 188 */ + 0x000737C0, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 189 */ + 0x00073B00, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 190 */ + 0x00073E40, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 191 */ + 0x00074180, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 192 */ + 0x000744C0, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 193 */ + 0x00074800, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 194 */ + 0x00074B40, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 195 */ + 0x00074E80, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 196 */ + 0x000751C0, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 197 */ + 0x00075500, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 198 */ + 0x00075840, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 199 */ + 0x00075B80, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 200 */ + 0x00075EC0, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 201 */ + 0x00076200, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 202 */ + 0x00076540, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 203 */ + 0x00076880, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 204 */ + 0x00076BC0, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 205 */ + 0x00076E20, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 206 */ + 0x00077080, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 207 */ + 0x000772E0, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 208 */ + 0x00077540, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 209 */ + 0x000777A0, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 210 */ + 0x00077A00, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 211 */ + 0x00077C60, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 212 */ + 0x00077EC0, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 213 */ + 0x00078120, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 214 */ + 0x00078380, /* rom addr */ + 0x00001220, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 215 */ + 0x000795A0, /* rom addr */ + 0x00002940, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 216 */ + 0x0007BEE0, /* rom addr */ + 0x000022E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 217 */ + 0x0007E1C0, /* rom addr */ + 0x000008E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 218 */ + 0x0007EAA0, /* rom addr */ + 0x00001280, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 219 */ + 0x0007FD20, /* rom addr */ + 0x00001B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 220 */ + 0x00081860, /* rom addr */ + 0x000028A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 221 */ + 0x00084100, /* rom addr */ + 0x00001D20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 222 */ + 0x00085E20, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 223 */ + 0x00086480, /* rom addr */ + 0x00001480, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 224 */ + 0x00087900, /* rom addr */ + 0x00001120, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 225 */ + 0x00088A20, /* rom addr */ + 0x000024E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 226 */ + 0x0008AF00, /* rom addr */ + 0x00005180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 227 */ + 0x00090080, /* rom addr */ + 0x00004220, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 228 */ + 0x000942A0, /* rom addr */ + 0x00003780, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 229 */ + 0x00097A20, /* rom addr */ + 0x00002C40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 230 */ + 0x0009A660, /* rom addr */ + 0x00002040, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 231 */ + 0x0009C6A0, /* rom addr */ + 0x00000A40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 232 */ + 0x0009D0E0, /* rom addr */ + 0x00000860, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 233 */ + 0x0009D940, /* rom addr */ + 0x00000A40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 234 */ + 0x0009E380, /* rom addr */ + 0x00000860, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 235 */ + 0x0009EBE0, /* rom addr */ + 0x00000B60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 236 */ + 0x0009F740, /* rom addr */ + 0x000013C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 237 */ + 0x000A0B00, /* rom addr */ + 0x00001D20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 238 */ + 0x000A2820, /* rom addr */ + 0x00001640, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 239 */ + 0x000A3E60, /* rom addr */ + 0x00000EA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 240 */ + 0x000A4D00, /* rom addr */ + 0x00000CE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 241 */ + 0x000A59E0, /* rom addr */ + 0x00000720, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 242 */ + 0x000A6100, /* rom addr */ + 0x00005960, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 243 */ + 0x000ABA60, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 244 */ + 0x000AC0C0, /* rom addr */ + 0x00000480, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 245 */ + 0x000AC540, /* rom addr */ + 0x00000660, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 246 */ + 0x000ACBA0, /* rom addr */ + 0x000055C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 247 */ + 0x000B2160, /* rom addr */ + 0x00000020, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 248 */ + 0x000B2180, /* rom addr */ + 0x0001D580, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + }, +}; + +ArcHeader AudiobankHeaderStart = { + 159, /* entries */ + 0, /* unk param */ + nullptr, /* data start pointer */ + 0, /* copy */ + { 0, 0, 0, 0, 0, 0, 0 }, /* pad */ + /* entries */ + { + { + /* entry 0 */ + 0x00000000, /* rom addr */ + 0x00003180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x00FF, /* param0 */ + 0x4800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 1 */ + 0x00003180, /* rom addr */ + 0x00000B60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x01FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 2 */ + 0x00003CE0, /* rom addr */ + 0x00004500, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x02FF, /* param0 */ + 0x6000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 3 */ + 0x000081E0, /* rom addr */ + 0x00000820, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 4 */ + 0x00008A00, /* rom addr */ + 0x00000DC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 5 */ + 0x000097C0, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 6 */ + 0x00009F80, /* rom addr */ + 0x00000DA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 7 */ + 0x0000AD20, /* rom addr */ + 0x00000840, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 8 */ + 0x0000B560, /* rom addr */ + 0x00000AA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 9 */ + 0x0000C000, /* rom addr */ + 0x000008E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 10 */ + 0x0000C8E0, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 11 */ + 0x0000D340, /* rom addr */ + 0x000008A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 12 */ + 0x0000DBE0, /* rom addr */ + 0x00000960, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 13 */ + 0x0000E540, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 14 */ + 0x0000F040, /* rom addr */ + 0x00000E00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 15 */ + 0x0000FE40, /* rom addr */ + 0x000009A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 16 */ + 0x000107E0, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 17 */ + 0x000111C0, /* rom addr */ + 0x00000C00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 18 */ + 0x00011DC0, /* rom addr */ + 0x00000740, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 19 */ + 0x00012500, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 20 */ + 0x00013040, /* rom addr */ + 0x00000800, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 21 */ + 0x00013840, /* rom addr */ + 0x00000980, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 22 */ + 0x000141C0, /* rom addr */ + 0x00000A00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0900, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 23 */ + 0x00014BC0, /* rom addr */ + 0x00000A20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 24 */ + 0x000155E0, /* rom addr */ + 0x00000A80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 25 */ + 0x00016060, /* rom addr */ + 0x00000980, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 26 */ + 0x000169E0, /* rom addr */ + 0x000010C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1038, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 27 */ + 0x00017AA0, /* rom addr */ + 0x000005E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 28 */ + 0x00018080, /* rom addr */ + 0x00000D40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1040, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 29 */ + 0x00018DC0, /* rom addr */ + 0x00000B20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 30 */ + 0x000198E0, /* rom addr */ + 0x00000680, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 31 */ + 0x00019F60, /* rom addr */ + 0x00000480, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 32 */ + 0x0001A3E0, /* rom addr */ + 0x000006E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 33 */ + 0x0001AAC0, /* rom addr */ + 0x000003C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 34 */ + 0x0001AE80, /* rom addr */ + 0x00000500, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 35 */ + 0x0001B380, /* rom addr */ + 0x00000520, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 36 */ + 0x0001B8A0, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 37 */ + 0x0001BE60, /* rom addr */ + 0x00000700, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 38 */ + 0x0001C560, /* rom addr */ + 0x000005E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 39 */ + 0x0001CB40, /* rom addr */ + 0x00000340, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 40 */ + 0x0001CE80, /* rom addr */ + 0x000000C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0100, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 41 */ + 0x0001CF40, /* rom addr */ + 0x00000280, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 42 */ + 0x0001D1C0, /* rom addr */ + 0x00000280, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 43 */ + 0x0001D440, /* rom addr */ + 0x000009C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 44 */ + 0x0001DE00, /* rom addr */ + 0x000009E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 45 */ + 0x0001E7E0, /* rom addr */ + 0x00000BA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 46 */ + 0x0001F380, /* rom addr */ + 0x00000960, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 47 */ + 0x0001FCE0, /* rom addr */ + 0x00000940, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0A42, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 48 */ + 0x00020620, /* rom addr */ + 0x00000360, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x001A, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 49 */ + 0x00020980, /* rom addr */ + 0x00000360, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0019, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 50 */ + 0x00020CE0, /* rom addr */ + 0x00000360, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x001A, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 51 */ + 0x00021040, /* rom addr */ + 0x00000180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0100, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 52 */ + 0x000211C0, /* rom addr */ + 0x000004C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 53 */ + 0x00021680, /* rom addr */ + 0x000004C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 54 */ + 0x00021B40, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 55 */ + 0x000225A0, /* rom addr */ + 0x00000600, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 56 */ + 0x00022BA0, /* rom addr */ + 0x00000CA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 57 */ + 0x00023840, /* rom addr */ + 0x00000100, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0200, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 58 */ + 0x00023940, /* rom addr */ + 0x00000220, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 59 */ + 0x00023B60, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 60 */ + 0x00023DC0, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 61 */ + 0x00024380, /* rom addr */ + 0x00000280, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 62 */ + 0x00024600, /* rom addr */ + 0x00000840, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 63 */ + 0x00024E40, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A45, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 64 */ + 0x00025980, /* rom addr */ + 0x00000D00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 65 */ + 0x00026680, /* rom addr */ + 0x00000980, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 66 */ + 0x00027000, /* rom addr */ + 0x00000560, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 67 */ + 0x00027560, /* rom addr */ + 0x000004E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 68 */ + 0x00027A40, /* rom addr */ + 0x000003E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 69 */ + 0x00027E20, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 70 */ + 0x00028880, /* rom addr */ + 0x000003E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 71 */ + 0x00028C60, /* rom addr */ + 0x00000300, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 72 */ + 0x00028F60, /* rom addr */ + 0x00000460, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 73 */ + 0x000293C0, /* rom addr */ + 0x00000D80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 74 */ + 0x0002A140, /* rom addr */ + 0x00000540, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 75 */ + 0x0002A680, /* rom addr */ + 0x00000760, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 76 */ + 0x0002ADE0, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 77 */ + 0x0002B3A0, /* rom addr */ + 0x00000940, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 78 */ + 0x0002BCE0, /* rom addr */ + 0x00000C00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A48, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 79 */ + 0x0002C8E0, /* rom addr */ + 0x000000E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0100, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 80 */ + 0x0002C9C0, /* rom addr */ + 0x00000440, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 81 */ + 0x0002CE00, /* rom addr */ + 0x000009C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A48, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 82 */ + 0x0002D7C0, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 83 */ + 0x0002DF80, /* rom addr */ + 0x00000440, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 84 */ + 0x0002E3C0, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 85 */ + 0x0002EEC0, /* rom addr */ + 0x00000540, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 86 */ + 0x0002F400, /* rom addr */ + 0x00000B60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 87 */ + 0x0002FF60, /* rom addr */ + 0x00000760, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0B00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 88 */ + 0x000306C0, /* rom addr */ + 0x00000AC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 89 */ + 0x00031180, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 90 */ + 0x00031C80, /* rom addr */ + 0x00000300, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 91 */ + 0x00031F80, /* rom addr */ + 0x000003C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 92 */ + 0x00032340, /* rom addr */ + 0x00000440, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 93 */ + 0x00032780, /* rom addr */ + 0x00000260, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 94 */ + 0x000329E0, /* rom addr */ + 0x000003E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 95 */ + 0x00032DC0, /* rom addr */ + 0x000006A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 96 */ + 0x00033460, /* rom addr */ + 0x00000CA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0B43, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 97 */ + 0x00034100, /* rom addr */ + 0x000007C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x1000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 98 */ + 0x000348C0, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 99 */ + 0x00034E80, /* rom addr */ + 0x00000240, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0200, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 100 */ + 0x000350C0, /* rom addr */ + 0x000006C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0900, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 101 */ + 0x00035780, /* rom addr */ + 0x00000400, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 102 */ + 0x00035B80, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 103 */ + 0x000365E0, /* rom addr */ + 0x00000280, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0200, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 104 */ + 0x00036860, /* rom addr */ + 0x00000180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 105 */ + 0x000369E0, /* rom addr */ + 0x00000AE0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0C41, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 106 */ + 0x000374C0, /* rom addr */ + 0x00000A20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 107 */ + 0x00037EE0, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 108 */ + 0x000389E0, /* rom addr */ + 0x000009A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 109 */ + 0x00039380, /* rom addr */ + 0x00000BA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 110 */ + 0x00039F20, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 111 */ + 0x0003AA20, /* rom addr */ + 0x00000F80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 112 */ + 0x0003B9A0, /* rom addr */ + 0x00000620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 113 */ + 0x00000070, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 114 */ + 0x00000070, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 115 */ + 0x00000070, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 116 */ + 0x0003BFC0, /* rom addr */ + 0x00000840, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 117 */ + 0x0003C800, /* rom addr */ + 0x00000820, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0A48, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 118 */ + 0x0003D020, /* rom addr */ + 0x000003A0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 119 */ + 0x0003D3C0, /* rom addr */ + 0x000001C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 120 */ + 0x0003D580, /* rom addr */ + 0x00000E00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x1048, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 121 */ + 0x0003E380, /* rom addr */ + 0x00000460, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0500, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 122 */ + 0x00000077, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 123 */ + 0x0003E7E0, /* rom addr */ + 0x00000DC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 124 */ + 0x0003F5A0, /* rom addr */ + 0x00000BA0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x04FF, /* param0 */ + 0x1000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 125 */ + 0x00040140, /* rom addr */ + 0x000005E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 126 */ + 0x00040720, /* rom addr */ + 0x00000860, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 127 */ + 0x00040F80, /* rom addr */ + 0x000005C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 128 */ + 0x00041540, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 129 */ + 0x00042040, /* rom addr */ + 0x00000320, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 130 */ + 0x00042360, /* rom addr */ + 0x00000A40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 131 */ + 0x00042DA0, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0B40, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 132 */ + 0x000438E0, /* rom addr */ + 0x00000C60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F48, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 133 */ + 0x00044540, /* rom addr */ + 0x00000540, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0900, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 134 */ + 0x00044A80, /* rom addr */ + 0x00000A60, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 135 */ + 0x000454E0, /* rom addr */ + 0x000006C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0D00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 136 */ + 0x00045BA0, /* rom addr */ + 0x00000900, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 137 */ + 0x000464A0, /* rom addr */ + 0x000010C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1041, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 138 */ + 0x00047560, /* rom addr */ + 0x00001180, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1040, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 139 */ + 0x0000008A, /* rom addr */ + 0x00000000, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1040, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 140 */ + 0x000486E0, /* rom addr */ + 0x00001040, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1044, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 141 */ + 0x00049720, /* rom addr */ + 0x00000B40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 142 */ + 0x0004A260, /* rom addr */ + 0x000004C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0900, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 143 */ + 0x0004A720, /* rom addr */ + 0x00000EC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0E41, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 144 */ + 0x0004B5E0, /* rom addr */ + 0x000008E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0C00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 145 */ + 0x0004BEC0, /* rom addr */ + 0x00000A00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 146 */ + 0x0004C8C0, /* rom addr */ + 0x00000920, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 147 */ + 0x0004D1E0, /* rom addr */ + 0x000010C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1040, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 148 */ + 0x0004E2A0, /* rom addr */ + 0x00000BC0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 149 */ + 0x0004EE60, /* rom addr */ + 0x000010C0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x1040, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 150 */ + 0x0004FF20, /* rom addr */ + 0x00000B00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0F00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 151 */ + 0x00050A20, /* rom addr */ + 0x000003E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 152 */ + 0x00050E00, /* rom addr */ + 0x00000620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_TEMPORARY, /* cache type */ + 0x03FF, /* param0 */ + 0x0800, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 153 */ + 0x00051420, /* rom addr */ + 0x00005100, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x05FF, /* param0 */ + 0x7E00, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 154 */ + 0x00056520, /* rom addr */ + 0x00003F00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x05FF, /* param0 */ + 0x7600, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 155 */ + 0x0005A420, /* rom addr */ + 0x00001E40, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x05FF, /* param0 */ + 0x3400, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 156 */ + 0x0005C260, /* rom addr */ + 0x00004500, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x05FF, /* param0 */ + 0x7700, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 157 */ + 0x00060760, /* rom addr */ + 0x00003020, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x05FF, /* param0 */ + 0x5300, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 158 */ + 0x00063780, /* rom addr */ + 0x00004500, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERSISTENT, /* cache type */ + 0x05FF, /* param0 */ + 0x7700, /* param1 */ + 0x0000, /* param2 */ + }, + }, +}; + +ArcHeader AudiowaveHeaderStart ATTRIBUTE_ALIGN(1) = { + 6, /* entries */ + 0, /* unk param */ + nullptr, /* data start pointer */ + 0, /* copy */ + { 0, 0, 0, 0, 0, 0, 0 }, /* pad */ + /* entries */ + { + { + /* entry 0 */ + 0x00000000, /* rom addr */ + 0x0003A940, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 1 */ + 0x0003A940, /* rom addr */ + 0x0000DF00, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 2 */ + 0x00048840, /* rom addr */ + 0x0006A080, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 3 */ + 0x000B28C0, /* rom addr */ + 0x001226E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 4 */ + 0x001D4FA0, /* rom addr */ + 0x000F0E20, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 5 */ + 0x002C5DC0, /* rom addr */ + 0x003ED620, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_EITHER_NOSYNC, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + }, +}; + +ArcHeader AudiodataHeaderStart ATTRIBUTE_ALIGN(1) = { + 3, /* entries */ + 0, /* unk param */ + nullptr, /* data start pointer */ + 0, /* copy */ + { 0, 0, 0, 0, 0, 0, 0 }, /* pad */ + /* entries */ + { + { + /* entry 0 */ + 0x00000000, /* rom addr */ + 0x000CF700, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 1 */ + 0x000CF700, /* rom addr */ + 0x00067C80, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + { + /* entry 2 */ + 0x00137380, /* rom addr */ + 0x006B33E0, /* size */ + MEDIUM_CART, /* src medium */ + CACHE_LOAD_PERMANENT, /* cache type */ + 0x0000, /* param0 */ + 0x0000, /* param1 */ + 0x0000, /* param2 */ + }, + }, +}; + +// clang-format off +u16 AudiomapHeaderStart[] ATTRIBUTE_ALIGN(1) = { + 0x01F2, + 0x01F4, + 0x01F6, + 0x01F8, + 0x01FA, + 0x01FC, + 0x01FE, + 0x0200, + 0x0202, + 0x0204, + 0x0206, + 0x0208, + 0x020A, + 0x020C, + 0x020E, + 0x0210, + 0x0212, + 0x0214, + 0x0216, + 0x0218, + 0x021A, + 0x021C, + 0x021E, + 0x0220, + 0x0222, + 0x0224, + 0x0226, + 0x0228, + 0x022A, + 0x022C, + 0x022E, + 0x0230, + 0x0232, + 0x0234, + 0x0236, + 0x0238, + 0x023A, + 0x023C, + 0x023E, + 0x0240, + 0x0242, + 0x0244, + 0x0246, + 0x0248, + 0x024A, + 0x024C, + 0x024E, + 0x0250, + 0x0252, + 0x0254, + 0x0256, + 0x0258, + 0x025A, + 0x025C, + 0x025E, + 0x0260, + 0x0262, + 0x0264, + 0x0266, + 0x0268, + 0x026A, + 0x026C, + 0x026E, + 0x0270, + 0x0272, + 0x0274, + 0x0276, + 0x0278, + 0x027A, + 0x027C, + 0x027E, + 0x0280, + 0x0282, + 0x0284, + 0x0286, + 0x0288, + 0x028A, + 0x028C, + 0x028E, + 0x0290, + 0x0292, + 0x0294, + 0x0296, + 0x0298, + 0x029A, + 0x029C, + 0x029E, + 0x02A0, + 0x02A2, + 0x02A4, + 0x02A6, + 0x02A8, + 0x02AA, + 0x02AC, + 0x02AE, + 0x02B0, + 0x02B2, + 0x02B4, + 0x02B6, + 0x02B8, + 0x02BA, + 0x02BC, + 0x02BE, + 0x02C0, + 0x02C2, + 0x02C4, + 0x02C6, + 0x02C8, + 0x02CA, + 0x02CC, + 0x02CE, + 0x02D0, + 0x02D2, + 0x02D4, + 0x02D6, + 0x02D8, + 0x02DA, + 0x02DC, + 0x02DE, + 0x02E0, + 0x02E2, + 0x02E4, + 0x02E6, + 0x02E8, + 0x02EA, + 0x02EC, + 0x02EE, + 0x02F0, + 0x02F2, + 0x02F4, + 0x02F6, + 0x02F8, + 0x02FA, + 0x02FC, + 0x02FE, + 0x0300, + 0x0302, + 0x0304, + 0x0306, + 0x0308, + 0x030A, + 0x030C, + 0x030E, + 0x0310, + 0x0312, + 0x0314, + 0x0316, + 0x0318, + 0x031A, + 0x031C, + 0x031E, + 0x0320, + 0x0322, + 0x0324, + 0x0326, + 0x0328, + 0x032A, + 0x032C, + 0x032E, + 0x0330, + 0x0332, + 0x0334, + 0x0336, + 0x0338, + 0x033A, + 0x033C, + 0x033E, + 0x0340, + 0x0342, + 0x0344, + 0x0346, + 0x0348, + 0x034A, + 0x034C, + 0x034E, + 0x0350, + 0x0352, + 0x0354, + 0x0356, + 0x0358, + 0x035A, + 0x035C, + 0x035E, + 0x0360, + 0x0362, + 0x0364, + 0x0366, + 0x0368, + 0x036A, + 0x036C, + 0x036E, + 0x0370, + 0x0372, + 0x0374, + 0x0376, + 0x0378, + 0x037A, + 0x037C, + 0x037E, + 0x0380, + 0x0382, + 0x0384, + 0x0386, + 0x0388, + 0x038A, + 0x038C, + 0x038E, + 0x0390, + 0x0392, + 0x0394, + 0x0396, + 0x0398, + 0x039A, + 0x039C, + 0x039E, + 0x03A0, + 0x03A2, + 0x03A4, + 0x03A6, + 0x03A8, + 0x03AA, + 0x03AC, + 0x03AE, + 0x03B0, + 0x03B2, + 0x03B4, + 0x03B6, + 0x03B8, + 0x03BA, + 0x03BC, + 0x03BE, + 0x03C0, + 0x03C2, + 0x03C4, + 0x03C6, + 0x03C8, + 0x03CA, + 0x03CC, + 0x03CE, + 0x03D0, + 0x03D2, + 0x03D4, + 0x03D6, + 0x03DB, + 0x03DD, + 0x03DF, + 0x03E1, + 0x03E4, + 0x03E6, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x0101, + 0x011C, + 0x011E, + 0x011F, + 0x0120, + 0x0121, + 0x0122, + 0x0123, + 0x0123, + 0x0124, + 0x0125, + 0x011D, + 0x0126, + 0x0121, + 0x0127, + 0x0128, + 0x0129, + 0x012A, + 0x012B, + 0x012B, + 0x012C, + 0x012D, + 0x012E, + 0x012F, + 0x010E, + 0x0107, + 0x0110, + 0x0114, + 0x0112, + 0x0116, + 0x0117, + 0x0108, + 0x0115, + 0x0105, + 0x0119, + 0x010D, + 0x0118, + 0x0113, + 0x0104, + 0x0106, + 0x010C, + 0x010A, + 0x011A, + 0x0111, + 0x010B, + 0x010F, + 0x0109, + 0x0103, + 0x011B, + 0x0130, + 0x0130, + 0x0131, + 0x0131, + 0x0132, + 0x0133, + 0x0134, + 0x0135, + 0x0136, + 0x0137, + 0x0138, + 0x0139, + 0x013A, + 0x013B, + 0x013C, + 0x013D, + 0x013E, + 0x013F, + 0x0140, + 0x0141, + 0x0142, + 0x0143, + 0x0144, + 0x0145, + 0x0146, + 0x0147, + 0x0148, + 0x0149, + 0x014A, + 0x014B, + 0x014C, + 0x014D, + 0x014E, + 0x014F, + 0x0150, + 0x0151, + 0x0152, + 0x0153, + 0x0154, + 0x0155, + 0x0156, + 0x0157, + 0x0158, + 0x0159, + 0x015A, + 0x015B, + 0x015C, + 0x015D, + 0x015E, + 0x015F, + 0x0160, + 0x0161, + 0x0162, + 0x0163, + 0x0164, + 0x0165, + 0x0166, + 0x0167, + 0x0168, + 0x0169, + 0x016A, + 0x016B, + 0x016C, + 0x016D, + 0x016E, + 0x016F, + 0x0170, + 0x0170, + 0x0170, + 0x0170, + 0x0174, + 0x0175, + 0x0176, + 0x0177, + 0x0178, + 0x0179, + 0x017A, + 0x017B, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017C, + 0x017D, + 0x017E, + 0x017F, + 0x0180, + 0x0181, + 0x0182, + 0x0183, + 0x0184, + 0x0185, + 0x0186, + 0x0187, + 0x0188, + 0x0189, + 0x018A, + 0x018B, + 0x018C, + 0x018D, + 0x018E, + 0x018F, + 0x0190, + 0x0191, + 0x0192, + 0x0193, + 0x0194, + 0x0195, + 0x0196, + 0x0197, + 0x0198, + 0x0402, + 0x9B9A, + 0x9901, + 0x9C01, + 0x9D01, + 0x9E02, + 0x0200, + 0x0199, + 0x0102, + 0x0000, + 0x0000, + 0x0000, + 0x0000, +}; +// clang-format on diff --git a/src/static/jaudio_NES/game/dummyprobe.c b/src/static/jaudio_NES/game/dummyprobe.c new file mode 100644 index 00000000..f2ef6ff8 --- /dev/null +++ b/src/static/jaudio_NES/game/dummyprobe.c @@ -0,0 +1,7 @@ +#include "jaudio_NES/dummyprobe.h" + +extern void Probe_Start(s32 id, const char* label) { +} + +extern void Probe_Finish(s32 id) { +} diff --git a/src/static/jaudio_NES/emusound.c b/src/static/jaudio_NES/game/emusound.c similarity index 100% rename from src/static/jaudio_NES/emusound.c rename to src/static/jaudio_NES/game/emusound.c diff --git a/src/static/jaudio_NES/game64.c b/src/static/jaudio_NES/game/game64.c similarity index 100% rename from src/static/jaudio_NES/game64.c rename to src/static/jaudio_NES/game/game64.c diff --git a/src/static/jaudio_NES/game/kappa.c b/src/static/jaudio_NES/game/kappa.c new file mode 100644 index 00000000..d6e0ead0 --- /dev/null +++ b/src/static/jaudio_NES/game/kappa.c @@ -0,0 +1,32 @@ +#include "jaudio_NES/kappa.h" +#include "jaudio_NES/audiostruct.h" +#include "jaudio_NES/audiowork.h" + +int kappa_seq_handle = 0; + +int Na_GetKappaCounter(kappa* kappa) { + int counter; + group* group = nullptr; + int temp = 0; + + if (AG.groups[kappa_seq_handle].flags.enabled != 0) { + group = &(AG.groups)[kappa_seq_handle]; + + } else { + return -1; + } + + (void)temp; + + counter = group->counter; + + kappa->unk0 = counter / 192; + counter -= (kappa->unk0 * 0xC0); + kappa->unk4 = counter / 192.0f; + + return 0; +} + +void Na_SetKappaSeqHandle(int flag) { + kappa_seq_handle = flag; +} diff --git a/src/static/jaudio_NES/game/melody.c b/src/static/jaudio_NES/game/melody.c new file mode 100644 index 00000000..142a5777 --- /dev/null +++ b/src/static/jaudio_NES/game/melody.c @@ -0,0 +1,732 @@ +#include "jaudio_NES/melody.h" + +#include "jaudio_NES/game64_cpp.h" +#include "jaudio_NES/sub_sys.h" +#include "jaudio_NES/system.h" +#include "jaudio_NES/audiowork.h" + +static s32 current_sub_track = 0; +u32 na_melody_id_hist[2]; + +// clang-format off +static const s32 melody_seq_size[] = { + 0x120, + 0x1C0, + 0x1E0, + 0x120, + 0x120, + 0x120, + 0x1A0, + 0x1E0, + 0x180, + 0x1A0, + 0x140, + 0x1A0, + 0x1A0, + 0x280, + 0x1C0, + 0x140, + 0x120, + 0x280, + 0x180, + 0x120, + 0x160, + 0x120, + 0x1A0, + 0x100, + 0x100, + 0x1A0, + 0x260, + 0x120, + 0x120, + 0x100, + 0x120, + 0x1C0, + 0x1C0, + 0x100, + 0x260, + 0x1C0, + 0x1C0, + 0x2A0, + 0x2A0, + 0x260, + 0x340, + 0x2A0, + 0x300, + 0x2A0, + 0x360, + 0x2A0, + 0x180, + 0x140, + 0x120, + 0x120, + 0x2E0, + 0x120, + 0x1C0, + 0x180, + 0x160, + 0x140, + 0x120, + 0x120, + 0x140, + 0x120, + 0x120, + 0x180, + 0x120, + 0x160, + 0x120, + 0x120, + 0x120, + 0x1C0, + 0x1A0, + 0x1C0, + 0x1C0, + 0x1C0, + 0x1C0, + 0x1A0, + 0x260, + 0x1A0, + 0x1A0, + 0x120, + 0x180, + 0x100, + 0x1C0, + 0x100, + 0x1A0, + 0x240, + 0x180, + 0x1C0, + 0x140, + 0x120, + 0x100, + 0x1A0, + 0x120, + 0x260, + 0x1C0, + 0x100, + 0x180, + 0x1C0, + 0x120, + 0x3A0, + 0x120, + 0x180, + 0x1C0, + 0x120, + 0x1E0, + 0x260, + 0x1C0, + 0x100, + 0x1C0, + 0x1E0, + 0x120, + 0x120, + 0x120, + 0x140, + 0x120, + 0x120, + 0x120, + 0x180, + 0x120, + 0x120, + 0x120, + 0x1C0, + 0x120, + 0x260, + 0x1C0, + 0x140, + 0x280, + 0x300, + 0x320, + 0x280, + 0x280, + 0x280, + 0x340, + 0x280, + 0x280, + 0x340, + 0x1C0, + 0x1C0, + 0x1C0, + 0x1A0, + 0x1A0, + 0x1E0, + 0x1E0, + 0x1E0, + 0x1C0, + 0x3A0, + 0x1A0, + 0x1E0, + 0x1C0, + 0x1C0, + 0x100, + 0x1C0, + 0x120, + 0x120, + 0x100, + 0x120, + 0x1C0, + 0x1C0, + 0x1E0, + 0x1E0, + 0x2A0, + 0x1E0, + 0x1C0, + 0x2A0, + 0x1E0, + 0x1C0, + 0x120, + 0x120, + 0x120, + 0x180, + 0x120, + 0x260, + 0x120, + 0x100, + 0x120, + 0x120, + 0x1E0, + 0x120, + 0x280, + 0x1C0, + 0x2C0, + 0x1E0, + 0x1E0, + 0x1E0, + 0x2A0, + 0x1E0, + 0x1C0, + 0x1E0, + 0x1E0, + 0x1C0, + 0x160, + 0x100, + 0x160, + 0x1C0, + 0x180, + 0x100, + 0x100, + 0x120, + 0x1E0, + 0x1E0, + 0x3A0, + 0x180, + 0x2A0, + 0x180, + 0x100, + 0x120, + 0x100, + 0x180, + 0x260, + 0x120, + 0x100, + 0x180, + 0x120, + 0x120, + 0x100, + 0x100, + 0x120, + 0x180, + 0x120, + 0x100, + 0x180, + 0x120, + 0x120, + 0x120, + 0x120, + 0x100, + 0x120, + 0x1C0, + 0x120, + 0x120, + 0x180, + 0x120, + 0x120, + 0x160, + 0x120, + 0x120, + 0x100, + 0x100, + 0x120, + 0x120, + 0x120, + 0x120, + 0x120, + 0x120, + 0x100, + 0x180, + 0x1C0, + 0x1C0, + 0x140, + 0x1E0, + 0x120, + 0x120, + 0x180, + 0x1C0, + 0x120, + 0x120, + 0x120, + 0x120, + 0x120, + 0x120, + 0x120, + 0x100, + 0x1C0, + 0x1C0, + 0x1A0, + 0x260, + 0x1A0, + 0x260, + 0x1C0, + 0x1A0, + 0x1A0, + 0x260, + 0x1C0, + 0x1C0, + 0x1A0, + 0x260, + 0x1A0, + 0x1A0, + 0x1A0, + 0x280, + 0x180, + 0x220, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x1C0, + 0x120, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, + 0x100, +}; +// clang-format on + +// clang-format off +static const s32 melody_seq_offset[] = { + 0x00000, + 0x00120, + 0x002E0, + 0x004C0, + 0x005E0, + 0x00700, + 0x00820, + 0x009C0, + 0x00BA0, + 0x00D20, + 0x00EC0, + 0x01000, + 0x011A0, + 0x01340, + 0x015C0, + 0x01780, + 0x018C0, + 0x019E0, + 0x01C60, + 0x01DE0, + 0x01F00, + 0x02060, + 0x02180, + 0x02320, + 0x02420, + 0x02520, + 0x026C0, + 0x02920, + 0x02A40, + 0x02B60, + 0x02C60, + 0x02D80, + 0x02F40, + 0x03100, + 0x03200, + 0x03460, + 0x03620, + 0x037E0, + 0x03A80, + 0x03D20, + 0x03F80, + 0x042C0, + 0x04560, + 0x04860, + 0x04B00, + 0x04E60, + 0x05100, + 0x05280, + 0x053C0, + 0x054E0, + 0x05600, + 0x058E0, + 0x05A00, + 0x05BC0, + 0x05D40, + 0x05EA0, + 0x05FE0, + 0x06100, + 0x06220, + 0x06360, + 0x06480, + 0x065A0, + 0x06720, + 0x06840, + 0x069A0, + 0x06AC0, + 0x06BE0, + 0x06D00, + 0x06EC0, + 0x07060, + 0x07220, + 0x073E0, + 0x075A0, + 0x07760, + 0x07900, + 0x07B60, + 0x07D00, + 0x07EA0, + 0x07FC0, + 0x08140, + 0x08240, + 0x08400, + 0x08500, + 0x086A0, + 0x088E0, + 0x08A60, + 0x08C20, + 0x08D60, + 0x08E80, + 0x08F80, + 0x09120, + 0x09240, + 0x094A0, + 0x09660, + 0x09760, + 0x098E0, + 0x09AA0, + 0x09BC0, + 0x09F60, + 0x0A080, + 0x0A200, + 0x0A3C0, + 0x0A4E0, + 0x0A6C0, + 0x0A920, + 0x0AAE0, + 0x0ABE0, + 0x0ADA0, + 0x0AF80, + 0x0B0A0, + 0x0B1C0, + 0x0B2E0, + 0x0B420, + 0x0B540, + 0x0B660, + 0x0B780, + 0x0B900, + 0x0BA20, + 0x0BB40, + 0x0BC60, + 0x0BE20, + 0x0BF40, + 0x0C1A0, + 0x0C360, + 0x0C4A0, + 0x0C720, + 0x0CA20, + 0x0CD40, + 0x0CFC0, + 0x0D240, + 0x0D4C0, + 0x0D800, + 0x0DA80, + 0x0DD00, + 0x0E040, + 0x0E200, + 0x0E3C0, + 0x0E580, + 0x0E720, + 0x0E8C0, + 0x0EAA0, + 0x0EC80, + 0x0EE60, + 0x0F020, + 0x0F3C0, + 0x0F560, + 0x0F740, + 0x0F900, + 0x0FAC0, + 0x0FBC0, + 0x0FD80, + 0x0FEA0, + 0x0FFC0, + 0x100C0, + 0x101E0, + 0x103A0, + 0x10560, + 0x10740, + 0x10920, + 0x10BC0, + 0x10DA0, + 0x10F60, + 0x11200, + 0x113E0, + 0x115A0, + 0x116C0, + 0x117E0, + 0x11900, + 0x11A80, + 0x11BA0, + 0x11E00, + 0x11F20, + 0x12020, + 0x12140, + 0x12260, + 0x12440, + 0x12560, + 0x127E0, + 0x129A0, + 0x12C60, + 0x12E40, + 0x13020, + 0x13200, + 0x134A0, + 0x13680, + 0x13840, + 0x13A20, + 0x13C00, + 0x13DC0, + 0x13F20, + 0x14020, + 0x14180, + 0x14340, + 0x144C0, + 0x145C0, + 0x146C0, + 0x147E0, + 0x149C0, + 0x14BA0, + 0x14F40, + 0x150C0, + 0x15360, + 0x154E0, + 0x155E0, + 0x15700, + 0x15800, + 0x15980, + 0x15BE0, + 0x15D00, + 0x15E00, + 0x15F80, + 0x160A0, + 0x161C0, + 0x162C0, + 0x163C0, + 0x164E0, + 0x16660, + 0x16780, + 0x16880, + 0x16A00, + 0x16B20, + 0x16C40, + 0x16D60, + 0x16E80, + 0x16F80, + 0x170A0, + 0x17260, + 0x17380, + 0x174A0, + 0x17620, + 0x17740, + 0x17860, + 0x179C0, + 0x17AE0, + 0x17C00, + 0x17D00, + 0x17E00, + 0x17F20, + 0x18040, + 0x18160, + 0x18280, + 0x183A0, + 0x184C0, + 0x185C0, + 0x18740, + 0x18900, + 0x18AC0, + 0x18C00, + 0x18DE0, + 0x18F00, + 0x19020, + 0x191A0, + 0x19360, + 0x19480, + 0x195A0, + 0x196C0, + 0x197E0, + 0x19900, + 0x19A20, + 0x19B40, + 0x19C40, + 0x19E00, + 0x19FC0, + 0x1A160, + 0x1A3C0, + 0x1A560, + 0x1A7C0, + 0x1A980, + 0x1AB20, + 0x1ACC0, + 0x1AF20, + 0x1B0E0, + 0x1B2A0, + 0x1B440, + 0x1B6A0, + 0x1B840, + 0x1B9E0, + 0x1BB80, + 0x1BE00, + 0x1BF80, + 0x1C1A0, + 0x1C2A0, + 0x1C3A0, + 0x1C4A0, + 0x1C5A0, + 0x1C6A0, + 0x1C860, + 0x1C980, + 0x1CA80, + 0x1CB80, + 0x1CC80, + 0x1CD80, + 0x1CE80, + 0x1CF80, + 0x1D080, + 0x1D180, + 0x1D280, + 0x1D380, + 0x1D480, +}; +// clang-format on + +static void Na_MelodyStart(u16 voice, s16 subTrack, const u8* pData); + +extern void Na_MelodyInit(void) { + current_sub_track = 0; + na_melody_id_hist[0] = 0xFFFFFFFF; + na_melody_id_hist[1] = 0xFFFFFFFF; +} + +extern void Na_Inst(u16 inst, u8* pData) { + if (!sou_chime_status && (inst == 0xFF || inst == 0xFE)) { + return; + } + + Na_MelodyStart(inst, Na_MelodyGetSubTrackNum(inst), pData); + Nap_SetF32(NA_MAKE_COMMAND(0x01, 0x00, 0x06, 0x00), 1.0f); +} + +static void Na_MelodyStart(u16 voice, s16 subTrack, const u8* pData) { + Nap_SetS8(NA_MAKE_COMMAND(0x06, 0x00, subTrack, 0x00), 1); + s32 unused = Nap_SendStart(); + Nap_WaitVsync(); + + u8* dst; + s16 seq_idx = 248; + u16 size = ((u16*)AG.groups[0].seq_data)[2]; + + switch (subTrack) { + case 6: + break; + case 7: + size += 0x600; + break; + case 15: + size += 0xC00; + break; + } + + u8* src; + + dst = AG.groups[0].seq_data + size; + ArcHeader* seq_header = AG.seq_header; + size_t seq_size = melody_seq_size[voice]; + int medium = seq_header->entries[seq_idx].medium; + src = (u8*)seq_header->entries[seq_idx].addr + melody_seq_offset[voice]; + // clang-format off + Nas_FastCopy( + src, /* Voice melody data is broken up in single sequence */ + dst, /* Destination buffer */ + seq_size, /* melody sequence size */ + medium /* medium (always cart in AC?) */ + ); + // clang-format on + + u16* dst16 = (u16*)(dst + 4); + for (int i = 0; i < 19; i++) { + dst16[i] += size; + } + + Nap_SetS32(NA_MAKE_COMMAND(0x10, 0x00, subTrack, 0x00), (u64)pData); + Nap_SetS8(NA_MAKE_COMMAND(0x06, 0x00, subTrack, 0x02), voice); + Nap_SetS8(NA_MAKE_COMMAND(0x06, 0x00, subTrack, 0x00), 0); +} + +extern s8 Na_InstCountGet(void) { + s8 count = Nap_ReadSubPort(0, 6, 4); + count--; + return count; +} + +extern s16 Na_MelodyGetSubTrackNum(s16 inst) { + if (inst == 0) { + return 6; + } else if (inst == 255 || inst == 254) { + return 7; + } else { + return 15; + } +} + +extern void Na_FurnitureInst(u32 id, u8 inst, u8* melody, u16 angle, f32 dist) { + s32 sub_track; + + if (id == na_melody_id_hist[current_sub_track]) { + sub_track = current_sub_track; + } else { + s32 tmp; + if (current_sub_track == 0) { + tmp = 1; + } else { + tmp = 0; + } + + sub_track = tmp; + } + + na_melody_id_hist[sub_track] = id; + current_sub_track = sub_track; + sub_track += 14; + u8 pan = angle2pan(angle, dist); + f32 vol = distance2vol(dist); + + Nap_SetS32(NA_MAKE_COMMAND(0x10, 0x02, sub_track, 0x00), (u64)melody); + Nap_SetS8(NA_MAKE_COMMAND(0x06, 0x02, sub_track, 0x02), inst); + Nap_SetS8(NA_MAKE_COMMAND(0x06, 0x02, sub_track, 0x00), 0); + Nap_SetF32(NA_MAKE_COMMAND(0x01, 0x02, sub_track, 0x00), vol); + Nap_SetS8(NA_MAKE_COMMAND(0x03, 0x02, sub_track, 0x00), pan); +} + +extern void Na_MelodyVoice(s16 voice) { + static const u8 melody[16] = { 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 }; + + Na_MelodyStart(voice, 6, melody); + Nap_SetF32(NA_MAKE_COMMAND(0x01, 0x00, 0x06, 0x00), 1.3f); +} diff --git a/src/static/jaudio_NES/game/radio.c b/src/static/jaudio_NES/game/radio.c new file mode 100644 index 00000000..caad18a5 --- /dev/null +++ b/src/static/jaudio_NES/game/radio.c @@ -0,0 +1,41 @@ +#include "jaudio_NES/radio.h" +#include "jaudio_NES/game64.h" +#include "jaudio_NES/audiowork.h" + +int Na_GetRadioCounter(Radio_c* radio) { + int counter; + u16 tempo = 0; + + group* group = nullptr; + int unused = 0; + + if (AG.groups[sou_now_bgm_handle].flags.enabled != 0 && AG.groups[sou_now_bgm_handle].seq_id == 0xDA) { + group = &(AG.groups)[sou_now_bgm_handle]; + + } else { + return -1; + } + + counter = group->counter; + + (void)unused; + + if (counter < 744) { + radio->unk0 = 0; + } else { + counter -= 744; + radio->unk0 = (s8)(counter / 768); + counter = counter - (radio->unk0 * 768); + radio->unk0++; + } + if (radio->unk0 == 9) { + radio->unk4 = counter / 216.0f; + + } else { + radio->unk4 = counter / 768.0f; + } + + radio->tempo = AG.groups[sou_now_bgm_handle].tempo / 48; + tempo = radio->tempo; + return 0; +} diff --git a/src/static/jaudio_NES/game/rhythm.c b/src/static/jaudio_NES/game/rhythm.c new file mode 100644 index 00000000..751b10f1 --- /dev/null +++ b/src/static/jaudio_NES/game/rhythm.c @@ -0,0 +1,437 @@ +#include "jaudio_NES/rhythm.h" +#include "jaudio_NES/sub_sys.h" +#include "jaudio_NES/game64.h" +#include "jaudio_NES/audiowork.h" + +typedef struct NA_RHYTHM_BUFFER { + /* 0x0 */ u8 state; + /* 0x1 */ s8 current_subtrack; + /* 0x2 */ u8 unk2[0x2]; + /* 0x4 */ u32 current_buffer_id; + /* 0x8 */ s8 unk8; + /* 0x9 */ s8 unk9; + /* 0xA */ u8 unkA[0x2]; +} NA_RHYTHM_BUFFER; + +typedef enum RythmBuffer_State { + NA_RHYTHM_BUFFER_STOPPED, + NA_RHYTHM_BUFFER_ALLOC, + NA_RHYTHM_BUFFER_STARTED, +} RythmBuffer_State; + +static s16 rhythm_beat_type = -1; + +static NA_RHYTHM_BUFFER rhythm_buffer[14]; + +static s8 Na_GetRhythmSeNum(s8 num, sub* sub); +static s8 Na_RhythmGrpProcess(s8 arg0, group* group); + +extern void Na_RhythmInit() { + int i; + + for (i = 0; i < 14; i++) { + rhythm_buffer[i].state = NA_RHYTHM_BUFFER_STOPPED; + rhythm_buffer[i].current_subtrack = i; + } + + Nap_SetS32(NA_MAKE_COMMAND(228, 0, 0, 0), (s32)Na_GetRhythmSeNum); + Nap_SetS32(NA_MAKE_COMMAND(228, 0, 0, 1), (s32)Na_RhythmGrpProcess); +} + +static NA_RHYTHM_BUFFER* rhythm_buffer_alloc() { + int i; + + NA_RHYTHM_BUFFER* buf; + + for (i = 0; i < 14; i++) { + buf = &rhythm_buffer[i]; + + if (buf->state == NA_RHYTHM_BUFFER_STOPPED) { + buf->state = NA_RHYTHM_BUFFER_ALLOC; + return buf; + } + } + + return nullptr; +} + +static NA_RHYTHM_BUFFER* get_rhythm_buffer(u32 idx) { + int i; + NA_RHYTHM_BUFFER* buf; + + for (i = 0; i < 14; i++) { + buf = &rhythm_buffer[i]; + + if (buf->state != NA_RHYTHM_BUFFER_STOPPED && idx == buf->current_buffer_id) { + return buf; + } + } + + return nullptr; +} + +extern s8 Na_GetRhythmSubTrack(u32 idx) { + NA_RHYTHM_BUFFER* buf; + + buf = get_rhythm_buffer(idx); + if (buf == nullptr) { + return -1; + } + return buf->current_subtrack; +} + +static void rhythm_start(NA_RHYTHM_BUFFER* buffer) { + if (buffer != nullptr) { + Nap_SetS8(NA_MAKE_COMMAND(6, 2, buffer->current_subtrack, 0), 0); + Nap_SetS8(NA_MAKE_COMMAND(6, 2, buffer->current_subtrack, 3), buffer->unk8); + Nap_SetS8(NA_MAKE_COMMAND(6, 2, buffer->current_subtrack, 7), buffer->unk9); + buffer->state = NA_RHYTHM_BUFFER_STARTED; + } +} + +static void rhythm_stop(NA_RHYTHM_BUFFER* buffer) { + if (buffer != nullptr) { + if (buffer->state == NA_RHYTHM_BUFFER_STARTED) { + Nap_SetS8(NA_MAKE_COMMAND(6, 2, buffer->current_subtrack, 0), 1); + } + + buffer->state = NA_RHYTHM_BUFFER_STOPPED; + } +} + +extern void Na_RhythmStart(u32 idx, s8 arg1, s8 arg2) { + NA_RHYTHM_BUFFER* buf; + + buf = get_rhythm_buffer(idx); + if (buf == nullptr) { + buf = rhythm_buffer_alloc(); + } + if (buf != nullptr) { + buf->current_buffer_id = idx; + buf->unk8 = arg1; + buf->unk9 = arg2; + rhythm_start(buf); + } +} + +extern void Na_RhythmStop(u32 idx) { + NA_RHYTHM_BUFFER* buf; + + buf = get_rhythm_buffer(idx); + if (buf != nullptr) { + rhythm_stop(buf); + } +} + +extern void Na_RhythmAllStop() { + int i; + NA_RHYTHM_BUFFER* buf; + + for (i = 0; i < 14; i++) { + buf = &rhythm_buffer[i]; + + if (buf->state != NA_RHYTHM_BUFFER_STOPPED) { + rhythm_stop(buf); + } + } +} + +static s16 Na_GetRhythmBeatType(void) { + if (AG.groups[sou_now_bgm_handle].flags.enabled != 0) { + rhythm_beat_type = Nap_ReadGrpPort(sou_now_bgm_handle, 1); + } + return rhythm_beat_type; +} + +extern f32 Na_GetRhythmAnimCounter(u32 idx) { + f32 f31 = 0.0f; + NA_RHYTHM_BUFFER* buf = get_rhythm_buffer(idx); + s16 r30; + s16 r29; + int r28; + s16 r27; + + if (buf == nullptr) { + return -2.0f; + } + + if (Nap_ReadSubPort(2, buf->current_subtrack, 1) == 0) { + if (Nap_ReadSubPort(2, buf->current_subtrack, 6) <= 1) { + return -1.0f; + } + return -2.0f; + } + + r30 = Nap_ReadSubPort(2, buf->current_subtrack, 4); + r29 = Nap_ReadSubPort(2, buf->current_subtrack, 5); + r27 = Nap_ReadGrpPort(2, 3); + if (r30 == 0) { + return 0.0f; + } + + if (Na_GetRhythmBeatType() == 0) { + if (Nap_ReadGrpPort(2, 2) % 2 != 0) { + r28 = 32; + } else { + r28 = 16; + } + } else { + r28 = 24; + } + + r30 = (r29 - r30) * r28; + r30 += r27; + r29 *= r28; + f31 = (f32)r30 / (f32)r29; + return f31; +} + +extern s8 Na_GetRhythmDelay(u32 idx) { + NA_RHYTHM_BUFFER* buf; + s8 delay = 0; + + buf = get_rhythm_buffer(idx); + if (buf == nullptr) { + return -1; + } + delay = Nap_ReadSubPort(2, buf->current_subtrack, 7); + + return delay; +} + +static s8 Na_GetRhythmSeNum(s8 num, sub* sub) { + u32 rand; + + if (num == 0) { + num = 16 - sub->port[4]; + if (num == 16) { + num = 0; + } + } else { + rand = Nap_GetRandom(); + switch (sub->port[3]) { + case 0x14: + case 0x15: + case 0x16: + case 0x50: + case 0x51: + case 0x52: + case 0x5A: + num = rand & 7; + break; + case 0xC: + case 0xD: + case 0xE: + case 0x17: + case 0x18: + case 0x19: + case 0x1A: + case 0x1B: + case 0x1C: + case 0x1D: + case 0x1E: + case 0x1F: + case 0x20: + case 0x21: + case 0x22: + case 0x23: + case 0x24: + case 0x25: + case 0x26: + case 0x27: + case 0x28: + case 0x29: + case 0x2A: + case 0x2B: + case 0x2C: + case 0x2D: + case 0x2E: + case 0x37: + case 0x38: + case 0x39: + case 0x3A: + case 0x3B: + case 0x3E: + case 0x3F: + case 0x40: + case 0x41: + case 0x42: + case 0x43: + case 0x4C: + case 0x4D: + case 0x4E: + case 0x4F: + case 0x58: + case 0x59: + case 0x5E: + case 0x5F: + case 0x60: + case 0x61: + case 0x62: + case 0x63: + case 0x64: + case 0x65: + case 0x66: + case 0x67: + case 0x68: + case 0x69: + case 0x6A: + case 0x6B: + case 0x6C: + case 0x6D: + case 0x6E: + case 0x6F: + case 0x70: + case 0x71: + case 0x72: + case 0x73: + case 0x74: + case 0x75: + case 0x76: + case 0x77: + case 0x78: + case 0x79: + case 0x7A: + case 0x7B: + case 0x7C: + num = (rand % 6); + break; + case 0x53: + case 0x54: + case 0x55: + case 0x56: + case 0x57: + num = (rand % 5); + break; + case 0x3C: + case 0x3D: + case 0x5D: + num = rand & 3; + break; + case 0x5: + case 0xF: + case 0x2F: + case 0x44: + case 0x45: + case 0x46: + case 0x47: + case 0x48: + case 0x49: + case 0x4A: + case 0x4B: + num = (rand % 3); + break; + default: + num = 0; + break; + } + } + return num; +} + +extern void Na_GetRhythmInfo(TempoBeat_c* tempo) { + if (tempo != nullptr) { + tempo->tempo = (AG.groups[2].tempo / 48); + tempo->beat = Na_GetRhythmBeatType(); + } +} + +extern void Na_SetRhythmInfo(TempoBeat_c* tempo) { + (tempo != nullptr); + if ((tempo == nullptr) || (tempo->tempo == 0)) { + Nap_SetS32(NA_MAKE_COMMAND(71, 2, 0, 0), 120); + rhythm_beat_type = -1; + } else { + Nap_SetS32(NA_MAKE_COMMAND(71, 2, 0, 0), tempo->tempo); + rhythm_beat_type = tempo->beat; + } +} + +static void tempo_adjust(group* group) { + int tempo = (AG.groups[2].tempo / 48); + int newTempo; + if (AG.groups[sou_now_bgm_handle].flags.enabled != 0) { + newTempo = (AG.groups[sou_now_bgm_handle].tempo / 48); + + if (tempo > newTempo) { + tempo--; + } else if (tempo < newTempo) { + tempo++; + } + } + group->tempo = tempo * 48; +} + +static s8 Na_RhythmGrpProcess(s8 arg0, group* group) { + int r29; + int r27; + int r30; + int r31; + int ret = 1; + r29 = 24; + static int pre_beat_type = -1; + static int pre_frame_per_step = -1; + + tempo_adjust(group); + if (Na_GetRhythmBeatType() == 0) { + if (Nap_ReadGrpPort(2, 2) % 2 != 0) { + r29 = 32; + } else { + r29 = 16; + } + } else { + r29 = 24; + } + + /* random call to arg0 so it is stored on the stack, can also do (void)arg0 */ + if (arg0) {} + + r31 = Nap_ReadGrpPort(2, 3); + if (Nap_ReadGrpPort(2, 2) % 2 != 0) { + r27 = r31; + } else if (Na_GetRhythmBeatType() == 0) { + r27 = r31 + 32; + } else { + r27 = r31 + 24; + } + + if (pre_beat_type != rhythm_beat_type) { + if (pre_frame_per_step > 0) { + r31 = (r31 * (r29 / (f32)pre_frame_per_step)); + } + pre_beat_type = rhythm_beat_type; + } + pre_frame_per_step = r29; + + if (AG.groups[sou_now_bgm_handle].flags.enabled != 0) { + int r25 = Nap_ReadGrpPort(sou_now_bgm_handle, 0); + r30 = r25 - r27; + } else { + r30 = 0; + } + + if (r30 > 24) { + r30 -= 48; + } + if (r30 < -24) { + r30 += 48; + } + + if (r30 > 1 || r30 < -1) { + if (AG.groups[2].script_counter % 2 != 0) { + r31++; + } + } else { + r31++; + } + + if (r31 >= r29) { + r31 -= r29; + ret = 0; + } + + group->port[3] = r31; + group->port[4] = (s8)((s32)(r31 * 0x64) / r29); + + return ret; +} diff --git a/src/static/jaudio_NES/game/staff.c b/src/static/jaudio_NES/game/staff.c new file mode 100644 index 00000000..11310561 --- /dev/null +++ b/src/static/jaudio_NES/game/staff.c @@ -0,0 +1,224 @@ +#include "jaudio_NES/staff.h" + +#include "jaudio_NES/game64.h" +#include "jaudio_NES/sub_sys.h" +#include "jaudio_NES/audiowork.h" + +static BOOL start_flag = FALSE; +static s32 mouth_num = 0; +static u32 seq_num = 0; + +extern void Na_StaffRollInit(void) { + start_flag = FALSE; + mouth_num = 0; + seq_num = -1; +} + +extern void Na_StaffRollStart(s16 seq_no) { + Nap_SetS8(NA_MAKE_COMMAND(0x46, sou_now_bgm_handle, 0, 0), 0); + Nap_SetS8(NA_MAKE_COMMAND(0x46, sou_now_bgm_handle, 0, 1), 0); + Nap_SetS8(NA_MAKE_COMMAND(0x46, sou_now_bgm_handle, 0, 2), -1); + + seq_num = seq_no; + start_flag = TRUE; +} + +extern void Na_GetStaffRollInfo(StaffRollInfo_c* info) { + group* group = nullptr; + sub* subtrack = nullptr; + note* note = nullptr; + channel* channel = nullptr; + s32 temp; + s32 mouth_type = 0; + s32 blink; + s32 counter; + s32 i; + + if (AG.groups[sou_now_bgm_handle].flags.enabled) { + + start_flag = FALSE; + group = &AG.groups[sou_now_bgm_handle]; + + if (group->port[2] == 0) { + info->staffroll_part = STAFFROLL_PART_MAIN; + } else if (group->port[2] == 1) { + info->staffroll_part = STAFFROLL_PART_FADEOUT; + } else { + info->staffroll_part = STAFFROLL_PART_INTRO; + } + } else { + if (start_flag) { + info->staffroll_part = STAFFROLL_PART_START; + } else { + info->staffroll_part = STAFFROLL_PART_FINISH; + } + + return; + } + + for (i = 2; i < AUDIO_SUBTRACK_NUM; i++) { + subtrack = group->subtracks[i]; + if (subtrack != nullptr) { + note = subtrack->note_layers[0]; + if (note != nullptr && note->_00bit3) { + channel = note->channel; + if (channel != nullptr && channel->common_ch.enabled) { + /* Found our enabled note channel, get mouth type */ + switch (i) { + case 2: + case 7: + case 12: + mouth_type = 4; + break; + case 6: + mouth_type = 1; + break; + case 4: + case 13: + mouth_type = 5; + break; + case 10: + mouth_type = 3; + break; + case 11: + mouth_type = 0; + break; + default: + mouth_type = 2; + break; + } + + /* stop searching */ + break; + } + } + } + } + + /* update mouth num */ + if (mouth_type != mouth_num) { + switch (mouth_type) { + case 4: + switch (mouth_num) { + case 0: + case 1: + mouth_num = 3; + break; + case 3: + mouth_num = 4; + break; + default: + mouth_num = 1; + break; + } + + break; + + case 1: + switch (mouth_num) { + case 4: + mouth_num = 3; + break; + default: + mouth_num = 1; + break; + } + + break; + + case 3: + switch (mouth_num) { + case 2: + case 5: + mouth_num = 1; + break; + default: + mouth_num = 3; + break; + } + + break; + + case 5: + switch (mouth_num) { + case 4: + mouth_num = 3; + break; + case 1: + mouth_num = 5; + break; + default: + mouth_num = 1; + break; + } + + break; + + case 2: + switch (mouth_num) { + case 4: + mouth_num = 3; + break; + case 1: + mouth_num = 2; + break; + default: + mouth_num = 1; + break; + } + + break; + + case 0: + switch (mouth_num) { + case 1: + case 3: + mouth_num = 0; + break; + case 4: + mouth_num = 3; + break; + default: + mouth_num = 1; + break; + } + } + } + + info->mouth_num = mouth_num; + + /* sequence script itself controls blink flag? */ + if (group->port[1] == 1) { + blink = TRUE; + } else { + blink = FALSE; + } + + info->blink_flag = blink; + counter = group->counter; + + switch (seq_num) { + case 1: + case 2: + case 3: + case 14: + case 17: + case 19: + case 31: + case 32: + case 39: + case 44: + case 49: + case 52: + info->beat = 3; + break; + default: + info->beat = 4; + break; + } + + temp = info->beat * 48; + info->_01 = counter / temp; + counter -= info->_01 * temp; + info->percent = (f32)counter / temp; +} diff --git a/src/static/jaudio_NES/verysimple.c b/src/static/jaudio_NES/game/verysimple.c similarity index 71% rename from src/static/jaudio_NES/verysimple.c rename to src/static/jaudio_NES/game/verysimple.c index f3d15873..f293e0a6 100644 --- a/src/static/jaudio_NES/verysimple.c +++ b/src/static/jaudio_NES/game/verysimple.c @@ -6,13 +6,14 @@ #include "jaudio_NES/connect.h" #include "jaudio_NES/jammain.h" -void Jac_Start(void *heap, u32 heap_size, u32 aram_size) { - StartAudioThread(heap,heap_size, aram_size, 7); +extern void Jac_Start(void* heap, u32 heap_size, u32 aram_size) { + StartAudioThread(heap, heap_size, aram_size, 7); Jac_WaveDirectorySet("/"); Jac_PlayInit(); Jac_Portcmd_Init(); } -void Jac_PlayInit(void) { // funcalign? + +extern void Jac_PlayInit(void) { Jaq_Reset(); Jac_ConnectTableInit(); Jam_InitRegistTrack(); diff --git a/src/static/jaudio_NES/internal/aictrl.c b/src/static/jaudio_NES/internal/aictrl.c new file mode 100644 index 00000000..d4bae0ce --- /dev/null +++ b/src/static/jaudio_NES/internal/aictrl.c @@ -0,0 +1,287 @@ +#include "jaudio_NES/aictrl.h" + +#include "jaudio_NES/dummyprobe.h" +#include "jaudio_NES/memory.h" +#include "jaudio_NES/sample.h" +#include "jaudio_NES/dspbuf.h" +#include "jaudio_NES/streamctrl.h" +#include "jaudio_NES/rate.h" +#include "dolphin/os.h" +#include "dolphin/ai.h" + +typedef void (*DACCallback)(s16*, s32); + +u32 UNIVERSAL_DACCOUNTER = 0; + +static s16* dac[3]; +static ALHeap audio_hp; +static BOOL audio_hp_exist = FALSE; +static s16* last_rsp_madep = nullptr; +static s16* use_rsp_madep = nullptr; +static BOOL vframe_work_running = FALSE; +static DACCallback DAC_CALLBACK_FUNC = nullptr; +u32 JAC_VFRAME_COUNTER = 0; +static MixCallback ext_mixcallback = nullptr; +static u8 ext_mixmode = MixMode_Mono; + +extern void Jac_HeapSetup(void* pHeap, s32 size) { + if (pHeap != nullptr) { + Nas_HeapInit(&audio_hp, (u8*)pHeap, size); + audio_hp_exist = TRUE; + } else { + audio_hp_exist = FALSE; + } +} + +extern void* OSAlloc2(u32 size) { + void* alloc; + BOOL enable = OSDisableInterrupts(); + + switch (audio_hp_exist) { + case FALSE: + alloc = OSAlloc(size); + break; + case TRUE: + alloc = Nas_HeapAlloc(&audio_hp, size); + break; + } + + OSRestoreInterrupts(enable); + return alloc; +} + +extern void Jac_Init(void) { + for (int i = 0; i < 3; i++) { + dac[i] = (s16*)OSAlloc2(DAC_SIZE * 2); + Jac_bzero(dac[i], DAC_SIZE * 2); + DCStoreRange(dac[i], DAC_SIZE * 2); + } + + AIInit(nullptr); + AIInitDMA((u32)dac[2], DAC_SIZE * 2); +} + +static void MixMonoTrack(s16* track, s32 nSamples, MixCallback callback) { + Probe_Start(5, "MONO-MIX"); + + s16* monoTrack = (*callback)(nSamples); + int mix; + + if (monoTrack != nullptr) { + Probe_Finish(5); + + s16* dst_p = track; + s16* src_p = monoTrack; + + for (s32 i = 0; i < nSamples; i++) { + mix = dst_p[0] + src_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[0] = (s16)mix; + + mix = dst_p[1] + src_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[1] = (s16)mix; + + dst_p += 2; + src_p++; + } + } +} + +static void MixMonoTrackWide(s16* track, s32 nSamples, MixCallback callback) { + Probe_Start(5, "MONO(W)-MIX"); + + s16* monoTrack = (*callback)(nSamples); + int mix; + + if (monoTrack != nullptr) { + Probe_Finish(5); + + s16* dst_p = track; + s16* src_p = monoTrack; + + for (s32 i = 0; i < nSamples; i++) { + mix = dst_p[0] + src_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[0] = (s16)mix; + + mix = dst_p[1] - src_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[1] = (s16)mix; + + dst_p += 2; + src_p++; + } + } +} + +static void MixExtraTrack(s16* track, s32 nSamples, MixCallback callback) { + Probe_Start(5, "DSPMIX"); + + s16* extraTrack = (*callback)(nSamples); + int mix; + + if (extraTrack != nullptr) { + Probe_Finish(5); + Probe_Start(6, "MIXING"); + + s16* dst_p = track; + s16* src0_p = extraTrack + JAC_FRAMESAMPLES; + s16* src1_p = extraTrack; + + for (s32 i = 0; i < nSamples; i++) { + mix = dst_p[0] + src0_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[0] = (s16)mix; + + mix = dst_p[1] + src1_p[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + dst_p[1] = (s16)mix; + + dst_p += 2; + src0_p++; + src1_p++; + } + + Probe_Finish(6); + } +} + +static void MixInterleaveTrack(s16* track, s32 nSamples, MixCallback callback) { + s16* interleaveTrack = (*callback)(nSamples); + int mix; + + if (interleaveTrack != nullptr) { + s16* track_p = track; + s32 max = nSamples * 2; + + for (s32 i = 0; i < max; i++) { + mix = track_p[0] + interleaveTrack[0]; + if (mix < S16_MIN) { + mix = S16_MIN + 1; + } + + if (mix > S16_MAX) { + mix = S16_MAX; + } + + track_p[0] = (s16)mix; + + track_p++; + interleaveTrack++; + } + } +} + +extern MixCallback Jac_GetMixcallback(u8* mixmode) { + *mixmode = ext_mixmode; + return ext_mixcallback; +} + +extern void Jac_RegisterMixcallback(MixCallback mixcallback, u8 mixmode) { + ext_mixcallback = mixcallback; + ext_mixmode = mixmode; +} + +extern void Jac_VframeWork(void) { + static u32 dacp = 0; + + JAC_VFRAME_COUNTER++; + + s16* mixedTrack = MixDsp(DAC_SIZE / 2); + Jac_imixcopy(&mixedTrack[JAC_FRAMESAMPLES], &mixedTrack[0], dac[dacp], DAC_SIZE / 2); + + if (ext_mixcallback != nullptr) { + switch (ext_mixmode) { + case MixMode_Mono: + MixMonoTrack(dac[dacp], DAC_SIZE / 2, ext_mixcallback); + break; + case MixMode_MonoWide: + MixMonoTrackWide(dac[dacp], DAC_SIZE / 2, ext_mixcallback); + break; + case MixMode_Extra: + MixExtraTrack(dac[dacp], DAC_SIZE / 2, ext_mixcallback); + break; + case MixMode_Interleave: + MixInterleaveTrack(dac[dacp], DAC_SIZE / 2, ext_mixcallback); + break; + } + } + + BOOL enable = OSDisableInterrupts(); + DCStoreRange(dac[dacp], DAC_SIZE * 2); + OSRestoreInterrupts(enable); + + last_rsp_madep = dac[dacp]; + dacp++; + if (dacp == 3) { + dacp = 0; + } + vframe_work_running = FALSE; +} + +extern void Jac_UpdateDAC(void) { + if (use_rsp_madep == nullptr) { + use_rsp_madep = last_rsp_madep; + last_rsp_madep = nullptr; + } + + if (use_rsp_madep != nullptr) { + AIInitDMA((u32)use_rsp_madep, DAC_SIZE * 2); + use_rsp_madep = nullptr; + } else { + UNIVERSAL_DACCOUNTER++; + } + + if (last_rsp_madep == nullptr && vframe_work_running == FALSE) { + Jac_VframeWork(); + } + + StreamMain(); + + if (DAC_CALLBACK_FUNC != nullptr) { + (*DAC_CALLBACK_FUNC)(last_rsp_madep, DAC_SIZE / 2); + } +} diff --git a/src/static/jaudio_NES/internal/astest.c b/src/static/jaudio_NES/internal/astest.c new file mode 100644 index 00000000..24e78783 --- /dev/null +++ b/src/static/jaudio_NES/internal/astest.c @@ -0,0 +1,5 @@ +#include "jaudio_NES/astest.h" + +extern void CopyStc(commonch* dstStc, commonch* srcStc) { + *dstStc = *srcStc; +} diff --git a/src/static/jaudio_NES/internal/audiothread.c b/src/static/jaudio_NES/internal/audiothread.c new file mode 100644 index 00000000..5d3ffeb6 --- /dev/null +++ b/src/static/jaudio_NES/internal/audiothread.c @@ -0,0 +1,187 @@ +#include "jaudio_NES/audiothread.h" + +#include "dolphin/os.h" +#include "dolphin/os/OSFastCast.h" +#include "dolphin/hw_regs.h" +#include "dolphin/ai.h" +#include "jaudio_NES/dspproc.h" +#include "jaudio_NES/cpubuf.h" +#include "jaudio_NES/dummyprobe.h" +#include "jaudio_NES/rate.h" +#include "jaudio_NES/aictrl.h" +#include "jaudio_NES/dummyrom.h" +#include "jaudio_NES/neosthread.h" +#include "jaudio_NES/dvdthread.h" +#include "jaudio_NES/dspboot.h" +#include "jaudio_NES/ja_calc.h" +#include "jaudio_NES/dspinterface.h" +#include "jaudio_NES/playercall.h" +#include "jaudio_NES/dspbuf.h" + +#define AUDIO_STACK_SIZE 0x1000 +#define AUDIOPROC_MQ_BUF_COUNT 16 + +#define AUDIOPROC_MESSAGE_UPDATE_DAC ((OSMessage)0) +#define AUDIOPROC_MESSAGE_DSP_SYNC ((OSMessage)1) +#define AUDIOPROC_MESSAGE_NEOS_SYNC ((OSMessage)2) +#define AUDIOPROC_MESSAGE_3 ((OSMessage)3) + +static u8 audioStack[AUDIO_STACK_SIZE] ATTRIBUTE_ALIGN(32); +static u8 neosStack[AUDIO_STACK_SIZE] ATTRIBUTE_ALIGN(32); +static u8 dvdStack[AUDIO_STACK_SIZE] ATTRIBUTE_ALIGN(32); +static OSMessageQueue audioproc_mq; +static OSMessage msgbuf[AUDIOPROC_MQ_BUF_COUNT]; +static u32 audioproc_mq_init = FALSE; +volatile int intcount = 0; + +extern void DspSyncCountClear(int count) { + intcount = count; +} + +extern int DspSyncCountCheck(void) { + return intcount; +} + +static void DspSync(void) { + if (audioproc_mq_init) { + OSSendMessage(&audioproc_mq, AUDIOPROC_MESSAGE_DSP_SYNC, OS_MESSAGE_NOBLOCK); + } else { + DSPReleaseHalt(); + } +} + +static void AudioSync(void) { + static BOOL first = TRUE; + + if (first == FALSE) { + Probe_Finish(4); + } + + first = FALSE; + Probe_Start(4, "UPDATE-DAC"); + if (audioproc_mq_init) { + OSSendMessage(&audioproc_mq, AUDIOPROC_MESSAGE_UPDATE_DAC, OS_MESSAGE_NOBLOCK); + } +} + +extern void NeosSync(void) { + if (audioproc_mq_init) { + OSSendMessage(&audioproc_mq, AUDIOPROC_MESSAGE_NEOS_SYNC, OS_MESSAGE_BLOCK); + } +} + +static void __DspSync(__OSInterrupt interrupt, OSContext* context) { + u16 reg = __DSPRegs[DSP_CONTROL_STATUS]; + reg &= ~(1 << 3); /* clear AI interrupt */ + reg &= ~(1 << 5); /* clear AR interrupt */ + reg |= (1 << 7); /* set DSP interrupt */ + __DSPRegs[DSP_CONTROL_STATUS] = reg; + + OSContext tmp_context; + OSClearContext(&tmp_context); + OSSetCurrentContext(&tmp_context); + DspSync(); + OSClearContext(&tmp_context); + OSSetCurrentContext(context); +} + +static void __DspReg(void) { + BOOL enable = OSDisableInterrupts(); + __OSSetInterruptHandler(OS_INTR_DSP_DSP, &__DspSync); + OSRestoreInterrupts(enable); +} + +static void* audioproc(void* param) { + OSInitFastCast(); + OSInitMessageQueue(&audioproc_mq, msgbuf, AUDIOPROC_MQ_BUF_COUNT); + audioproc_mq_init = TRUE; + Jac_Init(); + Jac_InitSinTable(); + ResetPlayerCallback(); + DspbufProcess(DSPBUF_EVENT_INIT); + CpubufProcess(DSPBUF_EVENT_INIT); + DspBoot(); + DSP_InitBuffer(); + __DspReg(); + AISetDSPSampleRate(JAC_AI_SETTING); + AIRegisterDMACallback(&AudioSync); + AIStartDMA(); + + while (TRUE) { + OSMessage msg; + + OSReceiveMessage(&audioproc_mq, &msg, OS_MESSAGE_BLOCK); + switch ((int)msg) { + case (int)AUDIOPROC_MESSAGE_UPDATE_DAC: + Jac_UpdateDAC(); + break; + case (int)AUDIOPROC_MESSAGE_DSP_SYNC: + if (intcount == 0) { + return; + } + + intcount--; + if (intcount == 0) { + Probe_Finish(7); + DspFrameEnd(); + } else { + Probe_Start(2, "SFR_DSP"); + UpdateDSP(); + Probe_Finish(2); + } + + break; + case (int)AUDIOPROC_MESSAGE_NEOS_SYNC: + CpuFrameEnd(); + break; + case (int)AUDIOPROC_MESSAGE_3: + OSExitThread(NULL); + break; + } + } +} + +static BOOL priority_set = FALSE; +static OSPriority pri = 0; +static OSPriority pri2 = 0; +static OSPriority pri3 = 0; + +extern void StartAudioThread(void* pHeap, s32 heapSize, u32 aramSize, u32 flags) { + if (priority_set == FALSE) { + OSPriority base_prio = OSGetThreadPriority(OSGetCurrentThread()) - 3; + + pri = base_prio; + pri3 = base_prio + 1; + pri2 = base_prio + 2; + } + + u32 neos_flag; + + Jac_HeapSetup(pHeap, heapSize); + Jac_SetAudioARAMSize(aramSize); + + neos_flag = flags & AUDIO_THREAD_FLAG_NEOS; + Jac_InitARAM(neos_flag); + + if ((flags & AUDIO_THREAD_FLAG_AUDIO)) { + // point to top of audioStack + u8* stack_p = audioStack; + OSCreateThread(&jac_audioThread[0], &audioproc, NULL, &stack_p[AUDIO_STACK_SIZE], AUDIO_STACK_SIZE, pri, 0); + OSResumeThread(&jac_audioThread[0]); + } + + if ((flags & AUDIO_THREAD_FLAG_DVD)) { + jac_dvdproc_init(); + // point to top of dvdStack + u8* stack_p = dvdStack; + OSCreateThread(&jac_dvdThread, &jac_dvdproc, NULL, &stack_p[AUDIO_STACK_SIZE], AUDIO_STACK_SIZE, pri3, 0); + OSResumeThread(&jac_dvdThread); + } + + if (neos_flag) { + // point to top of neosStack + u8* stack_p = neosStack; + OSCreateThread(&jac_neosThread, &neosproc, NULL, &stack_p[AUDIO_STACK_SIZE], AUDIO_STACK_SIZE, pri2, 0); + OSResumeThread(&jac_neosThread); + } +} diff --git a/src/static/jaudio_NES/internal/cpubuf.c b/src/static/jaudio_NES/internal/cpubuf.c new file mode 100644 index 00000000..684c5c44 --- /dev/null +++ b/src/static/jaudio_NES/internal/cpubuf.c @@ -0,0 +1,93 @@ +#include "jaudio_NES/cpubuf.h" + +#include "jaudio_NES/aictrl.h" +#include "jaudio_NES/audiothread.h" +#include "jaudio_NES/neosthread.h" +#include "jaudio_NES/playercall.h" +#include "jaudio_NES/dummyprobe.h" + +#define DSPBUF_NUM 3 + +static u8 write_buffer = 0; +static u8 read_buffer = 0; +static u8 dspstatus = 0; +static s16* dsp_buf[DSPBUF_NUM]; +static u32 dac_sync_counter = 0; + +extern s16* CpubufProcess(DSPBUF_EVENTS event) { + u32 i; + u32 j; + + switch (event) { + case DSPBUF_EVENT_INIT: + write_buffer = 2; + read_buffer = 0; + for (i = 0; i < DSPBUF_NUM; i++) { + dsp_buf[i] = (s16*)OSAlloc2(JAC_FRAMESAMPLES << 2); + for (j = 0; j < (JAC_FRAMESAMPLES << 1); j++) { + dsp_buf[i][j] = 0; + } + + DCStoreRange(dsp_buf[i], JAC_FRAMESAMPLES << 2); + } + + dspstatus = 0; + break; + case DSPBUF_EVENT_FRAME_END: + u8 write = write_buffer + 1; + + if (write == DSPBUF_NUM) { + write = 0; + } + + if (write == read_buffer) { + dspstatus = 0; + } else { + write_buffer = write; + if (Neos_Update(dsp_buf[write_buffer]) == TRUE) { + dspstatus = 1; + } + } + break; + case DSPBUF_EVENT_MIX: + u8 read = read_buffer + 1; + if (read == DSPBUF_NUM) { + read = 0; + } + + if (read == write_buffer) { + s16 left = dsp_buf[read_buffer][(JAC_FRAMESAMPLES / 2) - 1]; + s16 right = dsp_buf[read_buffer][JAC_FRAMESAMPLES - 1]; + + for (i = 0; i < JAC_FRAMESAMPLES; i++) { + dsp_buf[read_buffer][i] = right; + } + + for (i = JAC_FRAMESAMPLES; i < (JAC_FRAMESAMPLES << 1); i++) { + dsp_buf[read_buffer][i] = left; + } + + if (dspstatus == 0) { + CpubufProcess(DSPBUF_EVENT_FRAME_END); + } + } else { + read_buffer = read; + if (dspstatus == 0) { + CpubufProcess(DSPBUF_EVENT_FRAME_END); + } + } + + return dsp_buf[read_buffer]; + } + + return nullptr; +} + +extern s16* MixCpu(s32 n_samples) { + static s32 cur = 0; + return CpubufProcess(DSPBUF_EVENT_MIX); +} + +extern void CpuFrameEnd(void) { + CpubufProcess(DSPBUF_EVENT_FRAME_END); +} diff --git a/src/static/jaudio_NES/internal/dspboot.c b/src/static/jaudio_NES/internal/dspboot.c new file mode 100644 index 00000000..bf9f38a8 --- /dev/null +++ b/src/static/jaudio_NES/internal/dspboot.c @@ -0,0 +1,380 @@ +#include "jaudio_NES/dspboot.h" +#include "jaudio_NES/dspproc.h" +#include "dolphin/dsp.h" +#include "dolphin/os.h" +#include "dolphin/hw_regs.h" + +u16 jdsp[] ATTRIBUTE_ALIGN(32) = { + 0x029F, 0x0010, 0x0000, 0x0000, 0x02FF, 0x0000, 0x02FF, 0x0000, 0x02FF, 0x0000, 0x02FF, 0x0000, 0x02FF, 0x0000, + 0x02FF, 0x0000, 0x1302, 0x1303, 0x1204, 0x1305, 0x1306, 0x8E00, 0x8C00, 0x8B00, 0x009E, 0xFFFF, 0x1D1E, 0x1D3E, + 0x1D5E, 0x1D7E, 0x0092, 0x00FF, 0x8100, 0x009F, 0x1000, 0x0080, 0x0000, 0x005F, 0x1B1E, 0x26FF, 0x16FC, 0x8888, + 0x16FD, 0x1111, 0x26FC, 0x02A0, 0x8000, 0x029C, 0x002C, 0x8100, 0x8900, 0x26FE, 0x02C0, 0x8000, 0x029C, 0x0031, + 0x27FF, 0x00FF, 0x0345, 0x1FFE, 0x0340, 0x00FF, 0x00FF, 0x0344, 0x1479, 0x0240, 0x007E, 0x0200, 0x0062, 0x00FE, + 0x0343, 0x1C1E, 0x170F, 0x009E, 0x8000, 0x00DC, 0x0343, 0x02BF, 0x005A, 0x029F, 0x0031, 0x26FE, 0x02C0, 0x8000, + 0x029C, 0x0051, 0x24FF, 0x1B1E, 0x1B1C, 0x02DF, 0x2EFC, 0x2CFD, 0x26FC, 0x02A0, 0x8000, 0x029C, 0x005C, 0x02DF, + 0x029F, 0x0049, 0x029F, 0x031D, 0x029F, 0x04BF, 0x029F, 0x0031, 0x029F, 0x00E1, 0x029F, 0x00F3, 0x029F, 0x06C4, + 0x029F, 0x0678, 0x029F, 0x06E0, 0x029F, 0x06A8, 0x029F, 0x0049, 0x029F, 0x0721, 0x029F, 0x0BA7, 0x029F, 0x0049, + 0x193E, 0x193C, 0x2FCD, 0x0F00, 0x2FC9, 0x2ECE, 0x2CCF, 0x1FE0, 0x1501, 0x2FCB, 0x02BF, 0x0091, 0x02DF, 0x193E, + 0x193C, 0x2FCD, 0x0F01, 0x029F, 0x0082, 0x26C9, 0x02A0, 0x0004, 0x029C, 0x0091, 0x02DF, 0x193E, 0x193C, 0x00FF, + 0xFFCD, 0x0F00, 0x00FF, 0xFFC9, 0x00FE, 0xFFCE, 0x00FC, 0xFFCF, 0x1FE0, 0x1501, 0x00FF, 0xFFCB, 0x02DF, 0x00DE, + 0xFFC9, 0x02A0, 0x0004, 0x029C, 0x00A7, 0x02DF, 0x193E, 0x193C, 0x0240, 0x7FFF, 0x02BF, 0x00BC, 0x007A, 0x00BA, + 0x26D3, 0x1B3E, 0x0000, 0x0000, 0x0000, 0x02DF, 0x1C3F, 0x009F, 0x0005, 0x2FD1, 0x1F5E, 0x1F1C, 0x2ED4, 0x2CD5, + 0x8900, 0x1FA0, 0x4C00, 0x0200, 0x0030, 0x2ED6, 0x2CD7, 0x1FDA, 0x1F98, 0x147F, 0x2ED8, 0x2CD9, 0x1F40, 0x02DF, + 0x193E, 0x193C, 0x0260, 0x8000, 0x02BF, 0x00BC, 0x007A, 0x00DF, 0x193E, 0x2ED3, 0x0000, 0x0000, 0x0000, 0x0000, + 0x02DF, 0x0080, 0x0346, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x0081, 0x0346, 0x00DF, 0x0349, 0x0340, 0xFFFF, 0x00C0, + 0x0345, 0x02BF, 0x007E, 0x029F, 0x0049, 0x0080, 0x0346, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x0081, 0x0346, 0x00DF, + 0x0349, 0x0340, 0xFFFF, 0x00C0, 0x0345, 0x02BF, 0x008B, 0x029F, 0x0049, 0x0092, 0x00FF, 0x2FD1, 0x0340, 0x0003, + 0x1F7F, 0x1F5E, 0x1F1C, 0x0200, 0x0010, 0x2ED4, 0x2CD5, 0x8900, 0x1FA0, 0x4C00, 0x0200, 0x0030, 0x2ED6, 0x2CD7, + 0x1FDA, 0x1F98, 0x1FFB, 0x7900, 0x02CA, 0x2ED8, 0x2CD9, 0x02DF, 0x1C23, 0x197E, 0x191B, 0xD858, 0x1120, 0x012A, + 0xDCD3, 0x6231, 0xDCD3, 0x6231, 0x4900, 0x1108, 0x0130, 0xDCD3, 0x6231, 0xDCD3, 0x6231, 0x02DF, 0x8F00, 0x1C03, + 0x00DB, 0x038E, 0x009A, 0x0004, 0x1978, 0xA843, 0xAE00, 0x1128, 0x0140, 0x38C3, 0xAE30, 0x38C3, 0xAE30, 0x8E00, + 0x02DF, 0x00F9, 0x0361, 0x1FC0, 0x0200, 0xFFFC, 0x1C1E, 0x1C5E, 0x0083, 0x043C, 0x197E, 0x197F, 0x80A2, 0x64A3, + 0x6530, 0x1B1F, 0x1C02, 0x8100, 0x00DE, 0x0402, 0x00FE, 0x0362, 0x1474, 0x1F7E, 0x1F3C, 0x8900, 0x00DD, 0x0430, + 0x1504, 0x0604, 0x0290, 0x01B8, 0x1FDD, 0x0082, 0x0C00, 0x1050, 0x4B2A, 0x1FBE, 0x00FE, 0x0360, 0x8900, 0x1FBE, + 0x009A, 0xFFF8, 0x009B, 0x00FC, 0x00D8, 0x0361, 0x0082, 0x0C00, 0x0083, 0x0C00, 0x195E, 0x3480, 0x1128, 0x017D, + 0x367A, 0x35B3, 0x3772, 0x34BB, 0x8A00, 0x0082, 0x0C00, 0x00DD, 0x0430, 0x1504, 0x1FE0, 0x8100, 0x00DE, 0x0362, + 0x1474, 0x1F7E, 0x1F3C, 0x8F00, 0x1943, 0x4BC3, 0x90C3, 0xF2C3, 0xF2C3, 0xF200, 0xFE00, 0x1C1F, 0x1943, 0x4BC3, + 0x90C3, 0x114E, 0x019F, 0xF2C3, 0xF2C3, 0xF231, 0x1C1F, 0x1943, 0x4BC3, 0x92C3, 0xF2C3, 0xF2C3, 0xF231, 0xFE00, + 0x1B3E, 0x8B00, 0x8E00, 0x00FE, 0x0433, 0x1C1F, 0x150C, 0x0340, 0x0FFF, 0x00FF, 0x0430, 0x0083, 0x043C, 0x191E, + 0x191F, 0x80A0, 0x64A1, 0x6533, 0x1B7F, 0x02DF, 0x1FE0, 0x1C1F, 0x1128, 0x01C1, 0x4B70, 0x1B3E, 0x1C1F, 0x4B70, + 0x1B3E, 0x1C1F, 0x029F, 0x01A7, 0x8A00, 0x0083, 0x03E8, 0x191E, 0x191A, 0x1006, 0x64A0, 0x1B7E, 0x1B7A, 0x0080, + 0x03E8, 0x0088, 0x0007, 0x1150, 0x01DE, 0x1C61, 0x84C3, 0xF2C3, 0xF2C3, 0xF2C3, 0xF2C3, 0xF2C3, 0xF2C3, 0xF2C3, + 0xF200, 0xFE00, 0x1B3E, 0x0088, 0xFFFF, 0x8B00, 0x02DF, 0x8A00, 0x05FE, 0x0083, 0x03E8, 0x191E, 0x191A, 0x005F, + 0x64A0, 0x1B7E, 0x1B7A, 0x0080, 0x03E8, 0x0501, 0x1D1F, 0x1150, 0x01F9, 0x1C61, 0x84C3, 0x005F, 0xF2C3, 0xF200, + 0xFE00, 0x1B3E, 0x0088, 0xFFFF, 0x8B00, 0x02DF, 0x0083, 0x03E8, 0x191E, 0x191A, 0x64A0, 0x64A0, 0x1B7E, 0x1B7A, + 0x0080, 0x03E8, 0x0088, 0x0003, 0x0085, 0x0000, 0x0087, 0x0000, 0x1FC2, 0x195B, 0x1959, 0x195F, 0x195A, 0x1C5E, + 0x1FDA, 0x1C61, 0x8A00, 0x8F00, 0x191A, 0xB850, 0xE250, 0xEA50, 0xE8E8, 0xB650, 0x1127, 0x0229, 0xE3A8, 0x197E, + 0xE850, 0xEAF8, 0xBF50, 0xE2A9, 0x197F, 0xEA50, 0xE8E8, 0xB650, 0xE3A8, 0x197E, 0xE850, 0xEAF8, 0xBF00, 0x1BFF, + 0x197F, 0x8E00, 0x8B00, 0x0088, 0xFFFF, 0x1B5B, 0x1B59, 0x1B5F, 0x1B5E, 0x02DF, 0x8100, 0x1F5E, 0x00D8, 0x0402, + 0x00DC, 0x0430, 0x0080, 0x0520, 0x00DF, 0x0480, 0x1501, 0x0340, 0x007E, 0x0300, 0x024F, 0x1C5F, 0x175F, 0x00FC, + 0x0430, 0x029F, 0x054A, 0x029F, 0x0270, 0x029F, 0x02AB, 0x029F, 0x0293, 0x029F, 0x0280, 0x029F, 0x02B9, 0x029F, + 0x026F, 0x029F, 0x02D7, 0x029F, 0x02DA, 0x029F, 0x026F, 0x029F, 0x026F, 0x029F, 0x02F8, 0x029F, 0x02B1, 0x029F, + 0x02B5, 0x029F, 0x026F, 0x029F, 0x026F, 0x029F, 0x026F, 0x02DF, 0x1401, 0x009B, 0xC000, 0x0099, 0x4000, 0x1150, + 0x027D, 0x02C0, 0x0001, 0x027C, 0x1B1B, 0x027D, 0x1B19, 0x4800, 0x147F, 0x02DF, 0x1402, 0x8900, 0x1FB8, 0x1501, + 0x009B, 0xC000, 0x0099, 0x4000, 0x1150, 0x0290, 0x02C0, 0x0003, 0x027C, 0x1B1B, 0x027D, 0x1B19, 0x4C00, 0x147E, + 0x02DF, 0x1401, 0x0081, 0x0CA0, 0x009B, 0xC000, 0x0099, 0x4000, 0x8900, 0x0082, 0x0000, 0x1150, 0x02A8, 0x02C0, + 0x0001, 0x027C, 0x1B1B, 0x027D, 0x1B19, 0x183D, 0x4900, 0x1FE2, 0x4C39, 0x147F, 0x02DF, 0x8900, 0x1FB8, 0x157F, + 0x1050, 0x4C20, 0x02DF, 0x0082, 0x0180, 0x029F, 0x02BB, 0x0082, 0x01C0, 0x029F, 0x02BB, 0x0082, 0x0140, 0x008A, + 0x003F, 0x0086, 0x0000, 0x1406, 0x8900, 0x1FB8, 0x1505, 0x009B, 0x003F, 0x009A, 0x0000, 0x3600, 0x1CDE, 0x001A, + 0x3400, 0x1150, 0x02D1, 0x4C4A, 0x3606, 0x1CDE, 0x340E, 0x1B19, 0x1FC2, 0x147A, 0x008A, 0xFFFF, 0x02DF, 0x1050, + 0x1B18, 0x02DF, 0x0082, 0x0100, 0x008A, 0x003F, 0x0086, 0x0000, 0x1406, 0x8900, 0x1FB8, 0x1505, 0x009B, 0x003F, + 0x009A, 0x0000, 0x3600, 0x1CDE, 0x001A, 0x3400, 0x1150, 0x02F2, 0x4C4A, 0x3606, 0x1CDE, 0x340E, 0x1B19, 0x1FC2, + 0x147A, 0x008A, 0xFFFF, 0x02DF, 0x0082, 0x0100, 0x008A, 0x003F, 0x0086, 0x0000, 0x0081, 0x0CA0, 0x1406, 0x8900, + 0x1FB8, 0x1505, 0x009B, 0x003F, 0x009A, 0x0000, 0x3600, 0x1CDE, 0x001A, 0x3400, 0x1150, 0x0317, 0x1939, 0xA000, + 0x140A, 0x4E00, 0x1476, 0x4C4A, 0x3606, 0x1CDE, 0x340E, 0x1B19, 0x1FC2, 0x147A, 0x008A, 0xFFFF, 0x02DF, 0x0080, + 0x0380, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x0081, 0x0382, 0x009F, 0x0000, 0x0080, + 0x0200, 0x02BF, 0x007E, 0x0081, 0x0384, 0x009F, 0x0300, 0x0080, 0x0020, 0x02BF, 0x007E, 0x02BF, 0x03A0, 0x00DE, + 0x0345, 0x00FE, 0x0342, 0x02BF, 0x0AB1, 0x029F, 0x0049, 0x00DE, 0x0344, 0x1404, 0x0200, 0x03A8, 0x1C1E, 0x02BF, + 0x0051, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x00DE, 0x0345, 0x1B1E, 0x00DE, 0x0344, 0x0200, 0x03A4, 0x1C1E, 0x8100, + 0x1B1E, 0x02DF, 0x00DE, 0x0344, 0x1404, 0x0200, 0x03B0, 0x1C1E, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x02BF, 0x0051, + 0x02BF, 0x0051, 0x02DF, 0x0081, 0x034C, 0x009F, 0x0400, 0x0080, 0x00C0, 0x02BF, 0x007E, 0x02DF, 0x0081, 0x034C, + 0x009F, 0x0400, 0x0080, 0x0080, 0x0081, 0x034C, 0x193E, 0x193C, 0x0098, 0x0000, 0x7000, 0x02BF, 0x008D, 0x02DF, + 0x191E, 0x191A, 0x005F, 0x64A0, 0x1B7E, 0x1B7A, 0x02DF, 0x191E, 0x191A, 0x007F, 0x038E, 0x32B2, 0x65A0, 0x33BA, + 0x64A1, 0x0000, 0x02DF, 0x8A00, 0x157F, 0x1C20, 0x1C03, 0x193A, 0x9051, 0x925B, 0x007F, 0x039D, 0x4651, 0x92B2, + 0x4651, 0x92B2, 0x8B00, 0x02DF, 0x0083, 0xFFA0, 0x0080, 0x0300, 0x009F, 0x000E, 0x1108, 0x03AB, 0x191E, 0x1B7E, + 0x191E, 0x1B7E, 0x02DF, 0x0080, 0x0F40, 0x0082, 0x0D00, 0x0083, 0x0D60, 0x009F, 0x0028, 0x02BF, 0x0387, 0x8900, + 0x009E, 0x0050, 0x0080, 0x0CA0, 0x005E, 0x1B1F, 0x0080, 0x0F40, 0x005E, 0x1B1F, 0x0080, 0x0FA0, 0x005E, 0x1B1F, + 0x0080, 0x0B00, 0x005E, 0x1B1F, 0x0080, 0x09A0, 0x005E, 0x1B1F, 0x02DF, 0x00C0, 0x03A0, 0x191A, 0x00DF, 0x03A1, + 0x009B, 0x00A0, 0x0081, 0x0393, 0x18BC, 0xB871, 0xBC00, 0x0080, 0x0050, 0x0508, 0x02BF, 0x0080, 0x00DE, 0x0390, + 0x02A0, 0x0001, 0x029D, 0x03EE, 0x0080, 0x0398, 0x009E, 0x0008, 0x00C1, 0x03A1, 0x02BF, 0x01C4, 0x009F, 0x0050, + 0x00C0, 0x03A1, 0x8100, 0x00DE, 0x0394, 0xB100, 0x0295, 0x03FD, 0x1C7E, 0x00D8, 0x0395, 0x02BF, 0x0391, 0x009F, + 0x0050, 0x00C0, 0x03A1, 0x8100, 0x00DE, 0x0396, 0xB100, 0x0295, 0x040C, 0x1C7E, 0x00D8, 0x0397, 0x02BF, 0x0391, + 0x00DE, 0x0390, 0x02A0, 0x0002, 0x02DD, 0x0080, 0x0398, 0x009E, 0x0008, 0x00C1, 0x03A1, 0x02BF, 0x01C4, 0x02DF, + 0x009F, 0x0DC0, 0x00FF, 0x03A1, 0x009F, 0x03A8, 0x00FF, 0x03A2, 0x009F, 0x03A4, 0x00FF, 0x03A0, 0x1104, 0x044F, + 0x00C0, 0x03A2, 0x0083, 0x0390, 0x009F, 0x000E, 0x02BF, 0x0380, 0x00DA, 0x0390, 0x8600, 0x0295, 0x0440, 0x00DF, + 0x03A1, 0x1C7F, 0x0550, 0x1C1F, 0x009F, 0x0006, 0x02BF, 0x0380, 0x02BF, 0x03CF, 0x00DE, 0x03A2, 0x0410, 0x00FE, + 0x03A2, 0x00DE, 0x03A1, 0x0460, 0x00FE, 0x03A1, 0x00DE, 0x03A0, 0x7400, 0x00FE, 0x03A0, 0x0000, 0x02DF, 0x00C0, + 0x03A0, 0x181A, 0x8100, 0x181E, 0x00DB, 0x0391, 0x7400, 0xD100, 0x0270, 0x8100, 0x1B1E, 0x00DF, 0x03A1, 0x009B, + 0x00A0, 0x0081, 0x0393, 0x18BC, 0xB871, 0xBC00, 0x0080, 0x0050, 0x02BF, 0x008D, 0x02DF, 0x009F, 0x0DC0, 0x00FF, + 0x03A1, 0x009F, 0x03A8, 0x00FF, 0x03A2, 0x009F, 0x03A4, 0x00FF, 0x03A0, 0x1104, 0x0497, 0x00C0, 0x03A2, 0x0083, + 0x0390, 0x009F, 0x000E, 0x02BF, 0x0380, 0x00DA, 0x0390, 0x8600, 0x0295, 0x0488, 0x02BF, 0x0451, 0x00DE, 0x03A2, + 0x0410, 0x00FE, 0x03A2, 0x00DE, 0x03A1, 0x0460, 0x00FE, 0x03A1, 0x00DE, 0x03A0, 0x7400, 0x00FE, 0x03A0, 0x0000, + 0x02DF, 0x0081, 0x0386, 0x009F, 0x03A8, 0x0080, 0x0040, 0x02BF, 0x007E, 0x02DF, 0x191E, 0x189C, 0x4800, 0x1B1E, + 0x1B1C, 0x02DF, 0x8100, 0x26FE, 0x02C0, 0x8000, 0x029C, 0x04A9, 0x26FF, 0x02DF, 0x0080, 0x0388, 0x0081, 0x0051, + 0x173F, 0x00DE, 0x0344, 0x00FE, 0x0341, 0x00DE, 0x0345, 0x00FE, 0x038E, 0x173F, 0x02DF, 0x02BF, 0x04B0, 0x009E, + 0x8000, 0x00DC, 0x0341, 0x02BF, 0x005A, 0x8100, 0x00FE, 0x0355, 0x02BF, 0x0499, 0x00DE, 0x0341, 0x007E, 0x0675, + 0x02BF, 0x03AD, 0x02BF, 0x041A, 0x02BF, 0x0B77, 0x02BF, 0x04A8, 0x8100, 0x00FE, 0x0354, 0x00DE, 0x0342, 0x007E, + 0x0629, 0x00D8, 0x0354, 0x009A, 0x0180, 0x8100, 0x00DE, 0x0380, 0x00DC, 0x0381, 0x9000, 0x9400, 0x00FE, 0x034C, + 0x00FC, 0x034D, 0x02BF, 0x0367, 0x00DA, 0x0400, 0x8600, 0x0295, 0x0624, 0x00DA, 0x0401, 0x8600, 0x0294, 0x0624, + 0x00DA, 0x0433, 0x00FA, 0x03F8, 0x00DA, 0x0406, 0x8600, 0x0294, 0x0A1F, 0x8100, 0x00DE, 0x0480, 0x0605, 0x0295, + 0x0517, 0x0609, 0x0295, 0x0517, 0x0620, 0x0295, 0x088E, 0x0621, 0x0295, 0x0897, 0x0608, 0x0295, 0x0A27, 0x029F, + 0x023A, 0x00D8, 0x0402, 0x8100, 0x8900, 0x00DC, 0x0430, 0x8D00, 0x0099, 0x0050, 0xA000, 0xA400, 0x1404, 0x8C00, + 0x1FFE, 0x0083, 0x0580, 0x8100, 0x00DE, 0x0480, 0x0605, 0x0295, 0x053C, 0x00DA, 0x0481, 0x8600, 0x0295, 0x0540, + 0x00DA, 0x0489, 0x8100, 0x00DE, 0x048B, 0x3800, 0x0240, 0x000F, 0x0295, 0x0540, 0x02BF, 0x07C8, 0x029F, 0x0542, + 0x02BF, 0x0927, 0x0080, 0x0580, 0x0081, 0x0520, 0x0099, 0x0000, 0x02BF, 0x0143, 0x00DA, 0x04A8, 0x8600, 0x0295, + 0x0553, 0x0080, 0x0520, 0x02BF, 0x0B51, 0x009E, 0x0520, 0x00FE, 0x038F, 0x8900, 0x00DF, 0x0484, 0x0340, 0x001F, + 0xB900, 0x0295, 0x0583, 0x00DE, 0x038F, 0x5C00, 0x00FE, 0x038F, 0x1C7E, 0x0080, 0x0440, 0x05FE, 0x02BF, 0x0380, + 0x0080, 0x0490, 0x00C1, 0x038F, 0x8900, 0x00DF, 0x0484, 0x0340, 0x001F, 0x02BF, 0x01E3, 0x00DE, 0x038F, 0x0450, + 0x1C1E, 0x0083, 0x0440, 0x8900, 0x00DF, 0x0484, 0x0340, 0x001F, 0x05FE, 0x02BF, 0x0380, 0x00DE, 0x0484, 0x0240, + 0x0020, 0x0295, 0x05A5, 0x0080, 0x04A4, 0x00C1, 0x038F, 0x0082, 0x0454, 0x0083, 0x04A7, 0x18FA, 0x8600, 0x0294, + 0x05A3, 0x18FA, 0x8600, 0x0294, 0x05A3, 0x18FA, 0x8600, 0x0294, 0x05A3, 0x8100, 0x18FE, 0x0280, 0x7FFF, 0x0295, + 0x05A5, 0x02BF, 0x01FE, 0x8100, 0x1C9E, 0x1CDE, 0x7400, 0x1CFE, 0x8100, 0x00DE, 0x0407, 0xB100, 0x0295, 0x05BD, + 0x00C3, 0x038F, 0x0007, 0x0080, 0x0477, 0x0084, 0xFFFF, 0x0087, 0xFFFF, 0x199A, 0x6554, 0x005E, 0x65AD, 0x00DA, + 0x0485, 0x8600, 0x0295, 0x05D3, 0x8900, 0x0086, 0x0005, 0x0082, 0x040A, 0x1106, 0x05CB, 0x18DE, 0x147F, 0x4D36, + 0xB900, 0x0294, 0x05D3, 0x009A, 0x0001, 0x00FA, 0x0401, 0x8F00, 0x0086, 0x0002, 0x0082, 0x0408, 0x1106, 0x0603, + 0x8100, 0x195E, 0x1200, 0xB100, 0x0275, 0x1300, 0x1C7E, 0x195E, 0x195F, 0x5C00, 0x14FB, 0x1F5E, 0x1F1C, 0x185E, + 0x0240, 0x00FF, 0x1F7E, 0x185E, 0x1478, 0x009C, 0x0000, 0xD100, 0x0295, 0x05F8, 0x185E, 0x0272, 0x7400, 0x0271, + 0x7800, 0x1A5E, 0x0006, 0x00DE, 0x038F, 0x5600, 0x029D, 0x0601, 0x1C1E, 0x02BF, 0x0120, 0x0000, 0x1B5F, 0x000A, + 0x8E00, 0x8100, 0x00DE, 0x0407, 0xB100, 0x0295, 0x061A, 0x00C3, 0x038F, 0x0087, 0x004F, 0x001F, 0x0080, 0x0477, + 0x0084, 0xFFFF, 0x0087, 0xFFFF, 0x19FA, 0x6557, 0x005E, 0x65AF, 0x00DA, 0x0406, 0x8600, 0x0294, 0x0622, 0x8100, + 0x00FE, 0x0404, 0x02BF, 0x0370, 0x00DE, 0x0354, 0x7400, 0x00FE, 0x0354, 0x0000, 0x16FB, 0x0001, 0x02BF, 0x0AD2, + 0x02BF, 0x0AE5, 0x02BF, 0x0B3C, 0x0080, 0x09A0, 0x0083, 0x0D00, 0x009F, 0x0050, 0x0098, 0x5A82, 0x02BF, 0x0391, + 0x0080, 0x09A0, 0x0083, 0x0D60, 0x009F, 0x0050, 0x02BF, 0x0391, 0x0083, 0x0D00, 0x02BF, 0x0132, 0x0081, 0x0388, + 0x009F, 0x0D00, 0x0080, 0x0050, 0x02BF, 0x008B, 0x0080, 0x0FA0, 0x0083, 0x0D60, 0x009F, 0x0050, 0x0098, 0x8000, + 0x02BF, 0x0391, 0x0083, 0x0D60, 0x02BF, 0x0132, 0x0081, 0x038A, 0x009F, 0x0D60, 0x0080, 0x0050, 0x02BF, 0x008B, + 0x009A, 0x0000, 0x0098, 0x00A0, 0x0080, 0x0388, 0x02BF, 0x04A2, 0x0080, 0x038A, 0x02BF, 0x04A2, 0x02BF, 0x046B, + 0x0000, 0x0000, 0x029F, 0x0031, 0x0080, 0x0346, 0x02BF, 0x0051, 0x02BF, 0x0051, 0x0081, 0x0346, 0x193E, 0x193C, + 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x0080, 0x0081, 0x0348, 0x193E, 0x193C, 0x009F, 0x0800, 0x00C0, 0x0345, + 0x02BF, 0x0080, 0x0081, 0x0346, 0x193E, 0x193C, 0x009F, 0x0800, 0x00C0, 0x0345, 0x02BF, 0x008D, 0x0081, 0x0348, + 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x008D, 0x029F, 0x0049, 0x0080, 0x0346, 0x02BF, 0x0051, + 0x02BF, 0x0051, 0x0081, 0x0346, 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x0080, 0x0081, 0x0348, + 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x008D, 0x029F, 0x0049, 0x0080, 0x0346, 0x02BF, 0x0051, + 0x02BF, 0x0051, 0x0081, 0x0346, 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x00B0, 0x0081, 0x0348, + 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0345, 0x02BF, 0x008D, 0x029F, 0x0049, 0x0080, 0x0346, 0x02BF, 0x0051, + 0x02BF, 0x0051, 0x0081, 0x0346, 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0344, 0x02BF, 0x0080, 0x0081, 0x0348, + 0x193E, 0x193C, 0x009F, 0x0800, 0x00C0, 0x0344, 0x02BF, 0x0080, 0x0080, 0x0400, 0x0083, 0x0800, 0x0084, 0x0000, + 0x00DA, 0x0345, 0x00DF, 0x0344, 0x8F00, 0x197B, 0xB800, 0x197B, 0x007F, 0x070D, 0x199E, 0xBC00, 0x80B2, 0x0000, + 0x8E00, 0x0081, 0x0346, 0x193E, 0x193C, 0x009F, 0x0400, 0x00C0, 0x0344, 0x02BF, 0x008D, 0x009E, 0x8200, 0x00DC, + 0x0344, 0x02BF, 0x005A, 0x029F, 0x0031, 0x0080, 0x0346, 0x02BF, 0x0051, 0x0081, 0x0346, 0x009F, 0x0400, 0x00C0, + 0x0345, 0x02BF, 0x007E, 0x02BF, 0x8644, 0x029F, 0x0049, 0x009E, 0x0458, 0x2231, 0x4400, 0x1C1E, 0x1FDA, 0x3280, + 0x7400, 0x2232, 0x4400, 0x0090, 0x0000, 0x029F, 0x074E, 0x009E, 0x0458, 0x2231, 0x4400, 0x1C1E, 0x1FDA, 0x3280, + 0x7400, 0x2232, 0x4400, 0x0090, 0x0000, 0x8200, 0x0270, 0x1FDF, 0x1F3E, 0x02BF, 0x07BB, 0x2634, 0x2435, 0x7200, + 0x5300, 0x2E34, 0x2C35, 0x02DF, 0x8100, 0x2234, 0x2035, 0x4800, 0x147C, 0x2E36, 0x2C37, 0x2380, 0x8D00, 0xC810, + 0xAE00, 0x8C00, 0x2035, 0xF000, 0x4E00, 0x238C, 0x218D, 0x4A00, 0x2E38, 0x2C39, 0x1FD8, 0x0240, 0x000F, 0x2E31, + 0x268A, 0x248B, 0x5800, 0x2E3A, 0x2C3B, 0x02DF, 0x8100, 0x2601, 0xB100, 0x0294, 0x07AF, 0x2236, 0x2037, 0x8100, + 0x268A, 0x248B, 0x147C, 0x5800, 0x0295, 0x078B, 0x02BF, 0x0812, 0x0E10, 0x2E32, 0x8100, 0x2E31, 0x02DF, 0x228A, + 0x208B, 0x8100, 0x2634, 0x2435, 0x5800, 0x0290, 0x0798, 0x02BF, 0x0812, 0x263B, 0x029F, 0x0787, 0x8100, 0x2681, + 0xB100, 0x0295, 0x07B0, 0x2688, 0x2489, 0x2E34, 0x2C35, 0x0E10, 0x2E32, 0x02BF, 0x0758, 0x2682, 0x2E67, 0x2683, + 0x2E66, 0x8100, 0x00FE, 0x0362, 0x02BF, 0x0812, 0x02DF, 0x8100, 0x0081, 0x0458, 0x1010, 0x1B3E, 0x7400, 0x2E01, + 0x0E10, 0x2E32, 0x8100, 0x2E31, 0x02DF, 0xB100, 0x02D5, 0x04FE, 0x1F1E, 0x191E, 0x0291, 0x07C6, 0x191A, 0x0058, + 0x64A0, 0x6433, 0x1B7E, 0x02DF, 0x0092, 0x0004, 0x02BF, 0x0758, 0x8100, 0x00FE, 0x0362, 0x8100, 0x263A, 0x243B, + 0xB100, 0x0294, 0x07E5, 0x02BF, 0x0776, 0x2231, 0x8600, 0x0294, 0x07E2, 0x02BF, 0x073F, 0xB900, 0x0295, 0x080F, + 0x02BF, 0x0758, 0x8100, 0x263A, 0x243B, 0x1F1F, 0x009A, 0x0000, 0x5800, 0x0290, 0x07FC, 0x8100, 0x2631, 0xB100, + 0x0294, 0x07F6, 0x02BF, 0x0776, 0x2201, 0x8600, 0x0294, 0x080C, 0x02BF, 0x0731, 0x02BF, 0x0758, 0x029F, 0x07CF, + 0x8100, 0x2631, 0xB100, 0x0294, 0x0803, 0x02BF, 0x0776, 0x02BF, 0x073F, 0xB900, 0x0295, 0x080F, 0x02BF, 0x0758, + 0x029F, 0x07FC, 0x8100, 0x005F, 0x1B7E, 0x0092, 0x00FF, 0x02DF, 0x00FF, 0x0360, 0x00DA, 0x0362, 0x8600, 0x0294, + 0x0824, 0x0A01, 0x00FA, 0x0362, 0x2638, 0x2439, 0x009F, 0x0005, 0x02BF, 0x0105, 0x0092, 0x0004, 0x0080, 0xFFD3, + 0x0084, 0x0000, 0x199E, 0x1FFE, 0x1401, 0x0240, 0x001E, 0x0200, 0x0300, 0x1C3E, 0x157C, 0x0340, 0x000F, 0x0A11, + 0x5500, 0x8100, 0x2680, 0x0605, 0x0295, 0x0852, 0x009A, 0x00F0, 0x009B, 0x000F, 0x0082, 0x0370, 0x1998, 0x6000, + 0x1107, 0x0849, 0x3400, 0x1408, 0x6032, 0x3644, 0x140C, 0x6032, 0x3400, 0x1408, 0x6032, 0x3600, 0x140C, 0x1B5E, + 0x029F, 0x0872, 0x009A, 0xC000, 0x0082, 0x0370, 0x1998, 0x6000, 0x1103, 0x0865, 0x1408, 0x3400, 0x6032, 0x140A, + 0x3400, 0x6032, 0x140C, 0x3400, 0x6032, 0x140E, 0x3444, 0x6032, 0x1408, 0x3400, 0x6032, 0x140A, 0x3400, 0x6032, + 0x140C, 0x3400, 0x6032, 0x140E, 0x3400, 0x1B5E, 0x8F00, 0x1F7F, 0x2066, 0x2767, 0x193A, 0x1939, 0x0080, 0x0370, + 0x0081, 0x0458, 0x1C80, 0xA000, 0xEA70, 0x1108, 0x0888, 0x3A93, 0xA478, 0x1485, 0xE831, 0x3B92, 0xA570, 0x1585, + 0xEA39, 0x8E00, 0x8900, 0x00DF, 0x0360, 0x02DF, 0x8900, 0x009F, 0x0050, 0x0083, 0x0520, 0x02BF, 0x08A9, 0x029F, + 0x054A, 0x00D8, 0x0402, 0x8100, 0x8900, 0x00DC, 0x0430, 0x009A, 0x0050, 0x9000, 0x9400, 0x1404, 0x1FFE, 0x0083, + 0x0580, 0x02BF, 0x08A9, 0x029F, 0x0542, 0x0092, 0x0004, 0x8100, 0x263A, 0x243B, 0x1F1F, 0x009A, 0x0000, 0x5800, + 0x0290, 0x08C9, 0x8900, 0x00C0, 0x043B, 0x02BF, 0x08EE, 0x8100, 0x1FD8, 0x223B, 0x5400, 0x0007, 0x1979, 0x005E, + 0x1B79, 0x009F, 0x0001, 0x2F01, 0x8900, 0x2F3B, 0x0092, 0x00FF, 0x02DF, 0x2E3A, 0x2C3B, 0x8100, 0x8900, 0x268A, + 0x2734, 0x5C00, 0x2E36, 0x5000, 0x0290, 0x08E8, 0x00C0, 0x0436, 0x02BF, 0x08EE, 0x8100, 0x1FD8, 0x2236, 0x5400, + 0x1C1E, 0x8100, 0x2E34, 0x2688, 0x2489, 0x2E8C, 0x2C8D, 0x02BF, 0x08EE, 0x0092, 0x00FF, 0x02DF, 0x1C18, 0x02BF, + 0x08EE, 0x0092, 0x00FF, 0x02DF, 0x8100, 0x1FC0, 0xB100, 0x02D5, 0x8900, 0x2734, 0x0340, 0x0001, 0x009B, 0x0000, + 0x1F3F, 0x268C, 0x248D, 0x8900, 0x2534, 0x1501, 0x4C00, 0x5A00, 0x5A00, 0x1C20, 0x1FE0, 0x0502, 0x1C1F, 0x009F, + 0x0A00, 0x0092, 0x00FF, 0x02BF, 0x0080, 0x0092, 0x0004, 0x2734, 0x1F61, 0x4700, 0x2F34, 0x0080, 0x0A00, 0x8900, + 0x1FF9, 0xB900, 0x0274, 0x0008, 0x8900, 0x1FE1, 0x191E, 0x0701, 0x0293, 0x0925, 0x191A, 0x05FE, 0x005F, 0x64A0, + 0x1B7E, 0x1B7A, 0x02DF, 0x1B7E, 0x02DF, 0x0092, 0x0004, 0x2201, 0x8600, 0x0294, 0x0958, 0x2204, 0x8600, 0x02B4, + 0x09AC, 0x2231, 0x8600, 0x0295, 0x094D, 0x009E, 0x0458, 0x4400, 0x1C1E, 0x0E10, 0x5400, 0x1F7E, 0x02BF, 0x07BB, + 0xD900, 0x0292, 0x094C, 0x0295, 0x0948, 0x2631, 0x4C00, 0x2E31, 0x029F, 0x09A9, 0x8100, 0x2E31, 0x029F, 0x09A9, + 0x5700, 0x8100, 0x2605, 0xB100, 0x0295, 0x0969, 0x8100, 0x2E05, 0x2281, 0x8600, 0x0294, 0x095F, 0x8100, 0x005F, + 0x1B7E, 0x7400, 0x2E01, 0x029F, 0x09A9, 0x2688, 0x2489, 0x2E34, 0x2C35, 0x02BF, 0x09B1, 0x2682, 0x2483, 0x2E67, + 0x2C66, 0x00FF, 0x0360, 0x2638, 0x2439, 0x009F, 0x0005, 0x02BF, 0x0105, 0x0092, 0x0004, 0x8900, 0x00FF, 0x0362, + 0x00DF, 0x0360, 0x02BF, 0x09CA, 0x8100, 0x00DE, 0x0362, 0x2280, 0x4400, 0x00FE, 0x0362, 0x8100, 0x263A, 0x243B, + 0x0A01, 0x0081, 0x0405, 0x7A00, 0xB100, 0x0275, 0x1A3A, 0x2E3A, 0x2C3B, 0x0710, 0x0293, 0x0997, 0x05F0, 0x2205, + 0x8600, 0x0294, 0x0952, 0x029F, 0x0978, 0x0275, 0x8900, 0x2F31, 0x1FC3, 0x04F0, 0x1C1E, 0x0083, 0x0458, 0x0E10, + 0x02BF, 0x07BB, 0x2638, 0x2439, 0x00D8, 0x0362, 0x7000, 0x2C39, 0x2E38, 0x0092, 0x00FF, 0x02DF, 0x8100, 0x2E34, + 0x2E35, 0x2E66, 0x2E67, 0x2334, 0x2135, 0x268A, 0x248B, 0x5A00, 0x147C, 0x2E3A, 0x2C3B, 0x2634, 0x2435, 0x147C, + 0x2280, 0xC010, 0x9600, 0xF000, 0x4E00, 0x238C, 0x218D, 0x4A00, 0x2E38, 0x2C39, 0x8100, 0x2E05, 0x2E31, 0x02DF, + 0x00FF, 0x0360, 0x0080, 0xFFD3, 0x0084, 0x0000, 0x199E, 0x1FFE, 0x1401, 0x0240, 0x001E, 0x0200, 0x0300, 0x1C3E, + 0x157C, 0x0340, 0x000F, 0x0A11, 0x5500, 0x009A, 0x00F0, 0x009B, 0x000F, 0x0082, 0x0370, 0x1998, 0x6000, 0x1107, + 0x09EC, 0x3400, 0x1408, 0x6032, 0x3644, 0x140C, 0x6032, 0x3400, 0x1408, 0x6032, 0x3600, 0x140C, 0x1B5E, 0x8F00, + 0x1F7F, 0x2066, 0x2767, 0x193A, 0x1939, 0x0080, 0x0370, 0x1C80, 0xA000, 0xEA70, 0x3A93, 0xA478, 0x1485, 0xE833, + 0x3B92, 0xA570, 0x1585, 0xEA3B, 0x1106, 0x0A0F, 0x3A93, 0xA478, 0x1485, 0xE833, 0x3B92, 0xA570, 0x1585, 0xEA3B, + 0x3A93, 0xA478, 0x1485, 0xE833, 0x3B92, 0xA500, 0x1585, 0x1B7F, 0x2E66, 0x2F67, 0x8E00, 0x8900, 0x00DF, 0x0360, + 0x02DF, 0x0083, 0x0520, 0x00DE, 0x0433, 0x1050, 0x1B7E, 0x029F, 0x054A, 0x0092, 0x0004, 0x2002, 0x8100, 0x8900, + 0x2430, 0x8D00, 0x0099, 0x0050, 0xA000, 0xA400, 0x1404, 0x8C00, 0x1FFE, 0x0083, 0x0580, 0x2201, 0x8600, 0x0294, + 0x0A4A, 0x2204, 0x8600, 0x02B4, 0x0A93, 0x8100, 0x2605, 0xB100, 0x0295, 0x0A57, 0x8100, 0x2E05, 0x2281, 0x8600, + 0x0294, 0x0A51, 0x8100, 0x005F, 0x1B7E, 0x7400, 0x2E01, 0x029F, 0x0A8F, 0x2688, 0x2489, 0x2E34, 0x2C35, 0x02BF, + 0x0A96, 0x00FF, 0x0360, 0x2638, 0x2439, 0x009F, 0x0005, 0x02BF, 0x0105, 0x0092, 0x0004, 0x00DF, 0x0360, 0x8100, + 0x263A, 0xB100, 0x0294, 0x0A76, 0x263B, 0x5C00, 0x0290, 0x0A76, 0x223B, 0x02BF, 0x0AA7, 0x5500, 0x009A, 0x0001, + 0x00FA, 0x0405, 0x029F, 0x0A44, 0x1F5F, 0x02BF, 0x0AA7, 0x00FA, 0x0362, 0x8100, 0x263A, 0x243B, 0x1570, 0x0A01, + 0x0081, 0x0405, 0x5C00, 0xB100, 0x0275, 0x1A3A, 0x2E3A, 0x2C3B, 0x2638, 0x2439, 0x00D8, 0x0362, 0x7000, 0x2C39, + 0x2E38, 0x0092, 0x00FF, 0x029F, 0x0542, 0x8100, 0x2E34, 0x2E35, 0x2334, 0x2135, 0x268A, 0x248B, 0x5A00, 0x2E3A, + 0x2C3B, 0x2634, 0x2435, 0x238C, 0x218D, 0x4A00, 0x2E38, 0x2C39, 0x8100, 0x2E05, 0x02DF, 0x0080, 0xFFD3, 0x0084, + 0x0000, 0x007A, 0x0AAF, 0x199E, 0x1488, 0x1B7E, 0x02DF, 0x009E, 0xFFFF, 0x00FE, 0x03F2, 0x8100, 0x00FE, 0x03F0, + 0x00FE, 0x03F6, 0x009E, 0x0100, 0x00FE, 0x03F7, 0x00DA, 0x03F7, 0x009E, 0x8000, 0x5400, 0x00FE, 0x03F5, 0x009E, + 0x0030, 0x00FE, 0x03F3, 0x009E, 0x0010, 0x00FE, 0x03F4, 0x009E, 0x0096, 0x00FE, 0x03F1, 0x02DF, 0x0080, 0x0B00, + 0x8100, 0x00DE, 0x03F0, 0x8900, 0xB100, 0x0275, 0x0550, 0x00FF, 0x03F0, 0x0200, 0x0B60, 0x1C7E, 0x009F, 0x004E, + 0x02BF, 0x0380, 0x02DF, 0x00DE, 0x03F1, 0x0200, 0x0B60, 0x1C7E, 0x8100, 0x8900, 0x009F, 0x00A0, 0x00DE, 0x03F1, + 0x5D00, 0x009E, 0x0050, 0x0750, 0x0270, 0x5D00, 0x00DA, 0x03F2, 0x8600, 0x0290, 0x0B17, 0x00DE, 0x03F3, 0x5C00, + 0x0293, 0x0B02, 0x029F, 0x0B1C, 0x00DB, 0x03F7, 0x009E, 0x8000, 0x4600, 0x029F, 0x0B0E, 0x00DB, 0x03F7, 0x009E, + 0x8000, 0x5600, 0x00FE, 0x03F5, 0x1FDA, 0x7C00, 0x1F5E, 0x00FE, 0x03F2, 0x029F, 0x0B1C, 0x00DE, 0x03F4, 0x5D00, + 0x0293, 0x0B09, 0x8900, 0x00DD, 0x03F5, 0x1501, 0x8100, 0x00DC, 0x03F6, 0x008B, 0x009F, 0x0080, 0x0B00, 0x0099, + 0x0000, 0x1150, 0x0B30, 0x1878, 0x4C00, 0x1CFE, 0x001F, 0x1FD9, 0x1B18, 0x009F, 0x0B60, 0x1FC3, 0x5C00, 0x00FE, + 0x03F1, 0x00FC, 0x03F6, 0x008B, 0xFFFF, 0x02DF, 0x009F, 0x0050, 0x0080, 0x0B00, 0x0083, 0x0D60, 0x0098, 0x3FFF, + 0x02BF, 0x0391, 0x009F, 0x0050, 0x0080, 0x0B00, 0x0083, 0x0D00, 0x0098, 0x3FFF, 0x02BF, 0x0391, 0x02DF, 0x8A00, + 0x8F00, 0x8100, 0x00DE, 0x0404, 0xB100, 0x0295, 0x0B5E, 0x8100, 0x00FE, 0x0478, 0x00FE, 0x0479, 0x00DF, 0x0479, + 0x00DB, 0x0478, 0x0099, 0x0000, 0x0084, 0x0000, 0x1150, 0x0B6F, 0x199E, 0x5C7C, 0xC000, 0x6E00, 0x1488, 0x4A00, + 0x1B1E, 0x1F7E, 0x00FB, 0x0478, 0x00FF, 0x0479, 0x8B00, 0x8E00, 0x02DF, 0x0080, 0x01BE, 0x1918, 0x191A, 0x0080, + 0x0180, 0x0083, 0x0180, 0x9070, 0x1FFE, 0x1120, 0x0B88, 0x7C00, 0xD450, 0x6533, 0xC550, 0x1501, 0x643B, 0x0080, + 0x01FE, 0x191A, 0x1918, 0x0080, 0x01C0, 0x0083, 0x01C0, 0x1FF8, 0x9070, 0xF800, 0x0240, 0x01FF, 0x0260, 0x2000, + 0x02BF, 0x0B9B, 0x02DF, 0xB900, 0x0272, 0x7C00, 0x1F7E, 0x4700, 0x1110, 0x0BA5, 0x473B, 0x473B, 0x473B, 0x473B, + 0x02DF, 0x1306, 0x0092, 0x00FF, 0x0088, 0xFFFF, 0x0089, 0xFFFF, 0x008A, 0xFFFF, 0x008B, 0xFFFF, 0x8E00, 0x8B00, + 0x8C00, 0x0080, 0x0346, 0x02BF, 0x0051, 0x0081, 0x0346, 0x009F, 0x0500, 0x0080, 0x0010, 0x02BF, 0x007E, 0x02BF, + 0x0BCF, 0x8E00, 0x0081, 0x0508, 0x009F, 0x0520, 0x0080, 0x0004, 0x02BF, 0x008B, 0x1206, 0x029F, 0x0049, 0x8100, + 0x0081, 0x0510, 0x1020, 0x1B3E, 0x00DF, 0x1456, 0x0340, 0xFFD0, 0x8417, 0x0080, 0x0500, 0x00DE, 0x0500, 0x00FE, + 0x0520, 0x00DE, 0x0501, 0x00FE, 0x0521, 0x0086, 0x0000, 0x0082, 0x051F, 0x00DE, 0x15F6, 0x1408, 0x00DF, 0x1766, + 0x0340, 0x00FF, 0x1F5F, 0x02BF, 0x88E5, 0x1F1C, 0x811E, 0x191E, 0x1478, 0x1FFC, 0x1F5E, 0x02BF, 0x8809, 0x02BF, + 0x8723, 0x0006, 0x8106, 0x00DE, 0x166C, 0x1404, 0x0240, 0xFF00, 0x00DF, 0x1231, 0x1578, 0x0340, 0x00FF, 0x1F5F, + 0x02BF, 0x88E5, 0x1F1C, 0x811E, 0x191E, 0x1478, 0x1FFC, 0x1F5E, 0x02BF, 0x8809, 0x02BF, 0x8723, 0x8100, 0x8900, + 0x00D1, 0x0505, 0x9900, 0x8200, 0x0295, 0x0C30, 0x0291, 0x0C3E, 0x0082, 0x0510, 0x0086, 0x0001, 0x00D0, 0x171B, + 0x9100, 0x7D00, 0x4D00, 0x1501, 0x1F5F, 0x00DF, 0x0503, 0x1504, 0x02BF, 0x8809, 0x029F, 0x0C4D, 0x0082, 0x0511, + 0x00DF, 0x0503, 0x1501, 0x1F5F, 0x00DE, 0x1043, 0x0240, 0xFFF0, 0x02BF, 0x88E5, 0x029F, 0x0C4D, 0x0082, 0x0510, + 0x0086, 0x0001, 0x00D0, 0x1285, 0x9100, 0x4D00, 0x1501, 0x00DE, 0x0503, 0x1404, 0x1F5E, 0x02BF, 0x8809, 0x0083, + 0x0513, 0x1B7E, 0x8923, 0x0083, 0x0513, 0x00DF, 0x0507, 0x00DE, 0x11B8, 0x0240, 0xFFF0, 0x1F5E, 0x02BF, 0x81F4, + 0xF100, 0x02BF, 0x8458, 0x8F00, 0x0082, 0x0515, 0x00DE, 0x0506, 0x00DA, 0x165B, 0x02BF, 0x88E5, 0x14FD, 0x1403, + 0x1B5E, 0x1B5C, 0x0082, 0x0516, 0x00DE, 0x1723, 0x14F4, 0x00DA, 0x166B, 0x02BF, 0x88E5, 0xB100, 0x0290, 0x0C79, + 0x8100, 0x14FD, 0x8E00, 0x00DF, 0x1491, 0x0340, 0xD0F0, 0x1CBF, 0x00DF, 0x1468, 0x00D1, 0x11FC, 0x157C, 0x1CDF, + 0x00D1, 0x11B8, 0x9900, 0x1418, 0x1478, 0x1F5E, 0x1FFE, 0x1F65, 0x3600, 0x1402, 0x1F66, 0x3700, 0x1501, 0x4C00, + 0x1518, 0x9900, 0x3500, 0x4C00, 0x00DF, 0x0512, 0x3F00, 0x00FF, 0x0512, 0x1470, 0x00DF, 0x0511, 0x3F00, 0x00FF, + 0x0511, 0x1FA5, 0x1501, 0x1FE6, 0xF100, 0x15F8, 0xF500, 0x1F5F, 0x1F7D, 0x8100, 0x00DE, 0x0511, 0x3400, 0x8900, + 0x00DF, 0x0512, 0x3500, 0x4C00, 0x00DF, 0x0512, 0x1578, 0x4C00, 0x8900, 0x1FFE, 0x1508, 0x3B00, 0x00DE, 0x0511, + 0x3E00, 0x00DF, 0x0512, 0x3B00, 0x1CBF, 0x00DA, 0x15F1, 0x3500, 0x0295, 0x0CDD, 0x00DF, 0x10E2, 0x1508, 0x1F5F, + 0x00DF, 0x103B, 0x7900, 0x3900, 0x3080, 0x00FE, 0x0522, 0x00DC, 0x1229, 0x00DD, 0x11F8, 0x5C00, 0xF000, 0x1FE5, + 0x3080, 0x029F, 0x0CF0, 0x00DF, 0x10CA, 0x1508, 0x1F5F, 0x00DF, 0x1043, 0x7500, 0x3900, 0x3080, 0x00FE, 0x0522, + 0x00DC, 0x1259, 0x00DD, 0x16FE, 0x4C00, 0xF000, 0x1FE5, 0x3080, 0x00FE, 0x0523, 0x02DF, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, +}; + +extern s32 __DSPCheckMXICBoot2(DSPTaskInfo2* task) { + u32 mail; + + while (DSPCheckMailFromDSP() == 0); + mail = DSPReadMailFromDSP(); + + if((mail + 0x7F8F0000) == 0xFEED){ + DSPSendMailToDSP(0x80F3A001); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP((u32)task->iram_mmem_addr); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0x80F3A002); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->iram_length); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0x80F3C002); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->iram_addr); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0x80F3B002); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0x80F3D001); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->dsp_init_vector); + while (DSPCheckMailToDSP() != 0); + + return 1; + } + + if((mail + 0x3F010000) == 0 || (mail + 0x3F010000) == 1){ + DSPSendMailToDSP(0xC0028073); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC000FFCE); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP((u32)task->iram_mmem_addr >> 16 | 0xC0010000); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC000FFCF); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP((u16)task->iram_mmem_addr | 0xC0010000); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC000FFCD); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->iram_addr | 0xC0010000); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC000FFC9); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC0010002); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC000FFCB); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->iram_length | 0xC0010000); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(0xC0028073); + while (DSPCheckMailToDSP() != 0); + + DSPSendMailToDSP(task->dsp_init_vector | 0xC0020000); + while (DSPCheckMailToDSP() != 0); + + return 1; + } + + return 0; +} + + +extern void DSPInit() { + +} + + +extern void DSPInit2 (DSPTaskInfo2* task){ + BOOL enable; + u16 tmp; + + enable = OSDisableInterrupts(); + __OSUnmaskInterrupts(OS_INTRMASK_DSP_DSP); + + tmp = __DSPRegs[DSP_CONTROL_STATUS]; + tmp = (tmp & ~0xA8)| 0x800; + __DSPRegs[DSP_CONTROL_STATUS] = tmp; + + tmp = __DSPRegs[DSP_CONTROL_STATUS]; + tmp = (tmp & ~0xAC) ; + __DSPRegs[DSP_CONTROL_STATUS] = tmp; + + OSRestoreInterrupts(enable); + + if(__DSPCheckMXICBoot2(task) != 1){ + OSPanic("mxic.c", 357,"DSPInit(): MXIC Boot failed."); + } +} + + +void DspBoot(){ + DSPTaskInfo2 task; + + task.iram_mmem_addr = jdsp; + task.iram_length = sizeof(jdsp); + task.iram_addr = 0; + task.dram_mmem_addr = jdsp; + task.dram_length = 0x100; + task.dram_addr = 0; + + task.dsp_init_vector = 0; + DSPInit2(&task); + + while(DSPCheckMailFromDSP() == 0); + DSPReadMailFromDSP(); + DSPCheckMailFromDSP(); + DwaitFrame(); +} diff --git a/src/static/jaudio_NES/internal/dspbuf.c b/src/static/jaudio_NES/internal/dspbuf.c new file mode 100644 index 00000000..63108ef6 --- /dev/null +++ b/src/static/jaudio_NES/internal/dspbuf.c @@ -0,0 +1,111 @@ +#include "jaudio_NES/dspbuf.h" + +#include "jaudio_NES/aictrl.h" +#include "jaudio_NES/ipldec.h" +#include "jaudio_NES/audiothread.h" +#include "jaudio_NES/dspproc.h" +#include "jaudio_NES/dspdriver.h" +#include "jaudio_NES/dspinterface.h" +#include "jaudio_NES/playercall.h" +#include "jaudio_NES/dummyprobe.h" + +#define DSPBUF_NUM 3 + +static u8 write_buffer = 0; +static u8 read_buffer = 0; +static u8 dspstatus = 0; +static s16* dsp_buf[DSPBUF_NUM]; +static u32 dac_sync_counter = 0; + +extern s16* DspbufProcess(DSPBUF_EVENTS event) { + u32 i; + u32 j; + + switch (event) { + case DSPBUF_EVENT_INIT: + write_buffer = 2; + read_buffer = 0; + for (i = 0; i < DSPBUF_NUM; i++) { + dsp_buf[i] = (s16*)OSAlloc2(JAC_FRAMESAMPLES << 2); + for (j = 0; j < (JAC_FRAMESAMPLES << 1); j++) { + dsp_buf[i][j] = 0; + } + + DCStoreRange(dsp_buf[i], JAC_FRAMESAMPLES << 2); + } + + dspstatus = 0; + break; + case DSPBUF_EVENT_FRAME_END: + DspExtraTaskCheck(); + u8 write = write_buffer + 1; + + if (write == DSPBUF_NUM) { + write = 0; + } + + if (write == read_buffer) { + dspstatus = 0; + } else { + write_buffer = write; + DspSyncCountClear(JAC_SUBFRAMES); + Probe_Start(7, "DSP-MAIN"); + DsyncFrame(JAC_SUBFRAMES, (u32)dsp_buf[write_buffer], (u32)&dsp_buf[write_buffer][JAC_FRAMESAMPLES]); + dspstatus = 1; + UpdateDSP(); + } + break; + case DSPBUF_EVENT_MIX: + u8 read = read_buffer + 1; + if (read == DSPBUF_NUM) { + read = 0; + } + + if (read == write_buffer) { + s16 left = dsp_buf[read_buffer][(JAC_FRAMESAMPLES / 2) - 1]; + s16 right = dsp_buf[read_buffer][JAC_FRAMESAMPLES - 1]; + + for (i = 0; i < JAC_FRAMESAMPLES; i++) { + dsp_buf[read_buffer][i] = left; + } + + for (i = JAC_FRAMESAMPLES; i < (JAC_FRAMESAMPLES << 1); i++) { + dsp_buf[read_buffer][i] = right; + } + + if (dspstatus == 0) { + DspbufProcess(DSPBUF_EVENT_FRAME_END); + } + } else { + read_buffer = read; + DCInvalidateRange(dsp_buf[read_buffer], JAC_FRAMESAMPLES << 2); + if (dspstatus == 0) { + DspbufProcess(DSPBUF_EVENT_FRAME_END); + } + } + + return dsp_buf[read_buffer]; + } + + return nullptr; +} + +extern void UpdateDSP(void) { + dac_sync_counter++; + Probe_Start(3, "SFR-UPDATE"); + DSP_InvalChannelAll(); + DspPlayerCallback(); + UpdateDSPchannelAll(); + DSPReleaseHalt(); + PlayerCallback(); + Probe_Finish(3); +} + +extern s16* MixDsp(s32 n_samples) { + static s32 cur = 0; + return DspbufProcess(DSPBUF_EVENT_MIX); +} + +extern void DspFrameEnd(void) { + DspbufProcess(DSPBUF_EVENT_FRAME_END); +} diff --git a/src/static/jaudio_NES/internal/dspproc.c b/src/static/jaudio_NES/internal/dspproc.c new file mode 100644 index 00000000..8f97c5ed --- /dev/null +++ b/src/static/jaudio_NES/internal/dspproc.c @@ -0,0 +1,92 @@ +#include "jaudio_NES/dspproc.h" +#include "dolphin/dsp.h" + +static u16 DSP_MIXERLEVEL = 0x4000; + +extern s32 DSPSendCommands(u32* commands, u32 count) { + if (DSPCheckMailToDSP() != 0) { + return -1; + } + if (DSPCheckMailFromDSP() != 0) { + return -1; + } + + int i; + + for (i = 0; i < count; i++) { + DSPSendMailToDSP(commands[i]); + + while (DSPCheckMailToDSP() != 0); + } + + return 0; +} + +extern u32 DSPReleaseHalt() { + while (DSPCheckMailToDSP() != 0); + DSPSendMailToDSP(0); + if (DSPCheckMailFromDSP() != 0) { + DSPReadMailFromDSP(); + } + + return 0x88881357; +} + +extern void DSPWaitFinish() { + do { + while (DSPCheckMailFromDSP() == 0); + } while ((DSPReadMailFromDSP() + 0x77780000) == 0x1357); +} + +extern void DsetupTable(u32 arg0, u32 arg1, u32 arg2, u32 arg3, u32 arg4) { + u32 commands[5]; + + commands[0] = (arg0 & 0xFFFF) | 0x81000000; + commands[1] = arg1; + commands[2] = arg2; + commands[3] = arg3; + commands[4] = arg4; + + DSPSendCommands(commands, ARRAY_COUNT(commands)); + DSPWaitFinish(); +} + +extern void DsyncFrame(u32 subframes, u32 dspbuf_start, u32 dspbuf_end){ + u32 commands[3]; + + commands[0] = (subframes << 16 & 0xFF0000) | 0x82000000 | DSP_MIXERLEVEL; + commands[1] = dspbuf_start; + commands[2] = dspbuf_end; + + DSPSendCommands(commands, ARRAY_COUNT(commands)); + DSPWaitFinish(); +} + +extern void DwaitFrame(){ + u32 commands[1]; + + commands[0] = 0x80000000; + DSPSendCommands(commands, ARRAY_COUNT(commands)); + DSPWaitFinish(); +} + +extern void DiplSec(u32 arg0){ + u32 commands[2]; + + commands[0] = 0x8B000008; + commands[1] = arg0; + DSPSendCommands(commands, ARRAY_COUNT(commands)); + DSPWaitFinish(); +} + +extern void DagbSec(u32 arg0){ + u32 commands[2]; + + commands[0] = 0x8C000008; + commands[1] = arg0; + DSPSendCommands(commands, ARRAY_COUNT(commands)); + DSPWaitFinish(); +} + + + diff --git a/src/static/jaudio_NES/internal/dummyrom.c b/src/static/jaudio_NES/internal/dummyrom.c new file mode 100644 index 00000000..d02e3ce3 --- /dev/null +++ b/src/static/jaudio_NES/internal/dummyrom.c @@ -0,0 +1,94 @@ +#include "jaudio_NES/dummyrom.h" + +#include "dolphin/ar.h" +#include "jaudio_NES/dvdthread.h" +#include "jaudio_NES/os.h" +#include "jaudio_NES/memory.h" + +u8* JAC_ARAM_DMA_BUFFER_TOP = nullptr; +static u32 AUDIO_ARAM_TOP = 0; +static u32 CARD_SECURITY_BUFFER = 0; +static u32 init_load_size = 0; +static u8* init_load_addr = nullptr; +static BOOL init_cut_flag = FALSE; +static u32 SELECTED_ARAM_SIZE = 0; + +extern u32 GetNeos_FileTop(void) { + if (init_cut_flag) { + return 0; + } + + return init_load_size; +} + +extern u32 GetNeosRomTop(void) { + return AUDIO_ARAM_TOP; +} + +extern u32 GetNeosRom_PreLoaded(void) { + DVDT_DRAMtoARAM(0, (u32)init_load_addr, AUDIO_ARAM_TOP, init_load_size, nullptr, nullptr); + return init_load_size; +} + +extern void SetPreCopy_NeosRom(u8* load_addr, u32 load_size, BOOL cut_flag) { + init_load_size = load_size; + init_load_addr = load_addr; + init_cut_flag = cut_flag; +} + +static void mesg_finishcall(u32 mq) { + Z_osSendMesg((OSMesgQueue*)mq, NULL, OS_MESSAGE_NOBLOCK); +} + +extern BOOL ARAMStartDMAmesg(u32 dir, u32 dramAddr, u32 aramAddr, u32 size, s32 unused, OSMesgQueue* mq) { + aramAddr += AUDIO_ARAM_TOP; + + if (dir == DUMMYROM_ARAM_TO_DRAM) { + DVDT_ARAMtoDRAM((u32)mq, dramAddr, aramAddr, size, nullptr, &mesg_finishcall); + } else { + DVDT_DRAMtoARAM((u32)mq, dramAddr, aramAddr, size, nullptr, &mesg_finishcall); + } + + return FALSE; +} + +extern void Jac_SetAudioARAMSize(u32 size) { + SELECTED_ARAM_SIZE = size; +} + +extern void ARAllocFull(u32* outSize) { + u32 freeSize = aram_hp.length - ((int)aram_hp.current - (int)aram_hp.base); + + Nas_HeapAlloc(&aram_hp, freeSize - 32); + *outSize = freeSize - 32; +} + +extern void Jac_InitARAM(u32 loadAudiorom) { + u32 aram_size = AUDIO_ARAM_SIZE; + volatile u32 audiorom_size; + + if (SELECTED_ARAM_SIZE != 0) { + aram_size = SELECTED_ARAM_SIZE; + } + + AUDIO_ARAM_TOP = ARGetBaseAddress(); + if (loadAudiorom) { + audiorom_size = Jac_CheckFile("/audiorom.img"); + if (audiorom_size != 0) { + audiorom_size = ALIGN_NEXT(audiorom_size, 32); + (void)audiorom_size; /* leftover from some debug print? */ + } + } else { + audiorom_size = 0; + } + + CARD_SECURITY_BUFFER = 0x40; + audiorom_size += AUDIO_ARAM_TOP; + JAC_ARAM_DMA_BUFFER_TOP = (u8*)audiorom_size; + audiorom_size += AUDIO_ARAM_HEAP_SIZE; + Nas_HeapInit(&aram_hp, (u8*)audiorom_size, aram_size - audiorom_size); + + /* Probably leftovers from some debug print statement */ + (void)audiorom_size; + (void)audiorom_size; +} diff --git a/src/static/jaudio_NES/internal/dvdthread.c b/src/static/jaudio_NES/internal/dvdthread.c new file mode 100644 index 00000000..6866e7f1 --- /dev/null +++ b/src/static/jaudio_NES/internal/dvdthread.c @@ -0,0 +1,464 @@ +#include "jaudio_NES/dvdthread.h" +#include "jaudio_NES/sample.h" +#include "jaudio_NES/aictrl.h" +#include "dolphin/os.h" +#include "dolphin/dvd.h" +#include "dolphin/ar.h" +#include "dolphin/string.h" +#include "dolphin/os/OSTime.h" + +typedef struct DVDCall_ { + u32 owner; + char fileName[64]; + u32 dst; + u32 src; + u32 length; + u32* callbackStatus; + Jac_DVDCallback callback; +} DVDCall; + +static char audio_root_path[32] = ""; +static OSMessageQueue mq; +static s32 msgbuf[0x80]; +static u8 CALLSTACK[0x8000]; + +static u32 mq_init; +static size_t buffersize; +static u32 buffers; +static size_t next_buffersize; +static u8* next_buffertop; +static u32 next_buffers; +static u32 cur_q; +static OSThreadQueue dvdt_sleep; +static BOOL DVDT_PAUSE_FLAG; + +static ErrorCallback error_callback; +static u8* ADVD_BUFFER[2]; +static u32 buffer_load; + +static void __Alloc_DVDBuffer(); +static void __UpdateBuffer(); +static void __WriteBufferSize(u8* buf, u32 amount, u32 size); + +static void* GetCallStack() { + BOOL enable = OSDisableInterrupts(); + void* ret; + u32 pre = cur_q + 1; + + ret = &CALLSTACK[cur_q * 0x100]; + + cur_q = pre; + + if (pre == 0x80) { + cur_q = 0; + } + + OSRestoreInterrupts(enable); + + return ret; +} + +static s32 DVDReadMutex(DVDFileInfo* fileInfo, void* addr, s32 len, s32 offs, char* arg4) { + if (DVDT_PAUSE_FLAG == true) { + OSSleepThread(&dvdt_sleep); + } + + while (true) { + if (DVDReadPrio(fileInfo, addr, len, offs, 2) != -1 || error_callback == nullptr) { + break; + } + error_callback(arg4, (u8*)addr); + } +} + +extern void DVDT_ExtendPath(char* dst, char* ext) { + if (*audio_root_path != nullptr) { + strcpy(dst, audio_root_path); + if (*ext == '/') { + strcat(dst, ext + 1); + } else { + strcat(dst, ext); + } + } else { + strcpy(dst, ext); + } +} + +extern s32 DVDT_AddTaskHigh(TaskCallback callback, void* stackp, size_t len) { + if (mq_init == false) { + return 0; + } + + TaskCallback* stack = (TaskCallback*)GetCallStack(); + + Jac_bcopy(stackp, stack + 1, len); + + *stack = callback; + OSJamMessage(&mq, (OSMessage)stack, OS_MESSAGE_BLOCK); + + return 1; +} + +extern s32 DVDT_AddTask(TaskCallback callback, void* stackp, size_t len) { + if (mq_init == false) { + return 0; + } + + TaskCallback* stack = (TaskCallback*)GetCallStack(); + + Jac_bcopy(stackp, stack + 1, len); + + *stack = callback; + OSSendMessage(&mq, (OSMessage)stack, OS_MESSAGE_BLOCK); + + return 1; +} + +extern void jac_dvdproc_init() { + OSInitMessageQueue(&mq, (OSMessage*)msgbuf, ARRAY_COUNT(msgbuf)); + mq_init = 1; +} + +extern void* jac_dvdproc(void* arg) { + __Alloc_DVDBuffer(); + TaskCallback* callback; + + u8* buf = (u8*)OSAlloc2(0x10000); + + OSInitThreadQueue(&dvdt_sleep); + OSMessage msg; + while (true) { + while (true) { + OSReceiveMessage(&mq, &msg, OS_MESSAGE_BLOCK); + callback = (TaskCallback*)msg; + __UpdateBuffer(); + + if (buffersize == 0) { + __WriteBufferSize(buf, 2, 0x8000); + } + if (callback != nullptr) { + break; + }; + } + (*callback)(callback + 1); + } +} + +static void __DoError(DVDCall* call, u32 type) { + if (call->callbackStatus != nullptr) { + *call->callbackStatus = -1; + } + + if (call->callback != nullptr) { + call->callback(-1); + } +} + +static void __DoFinish(DVDCall* call, u32 arg) { + if (call->callbackStatus != nullptr) { + *call->callbackStatus = arg; + } + + if (call->callback != nullptr) { + call->callback(call->owner); + } +} +static void __DVDT_CheckBack(void* cb) { + DVDCall* callback = (DVDCall*)cb; + + __DoFinish(callback, callback->owner); +} + +static void __Alloc_DVDBuffer() { + if (buffersize == 0) { + int i; + + for (i = 0; i < buffers; i++) { + ADVD_BUFFER[i] = 0; + } + } +} + +static void __WriteBufferSize(u8* buf, u32 amount, u32 size) { + buffersize = size; + buffers = amount; + + int i; + int j = amount; + + for (i = 0; i < amount; i++, j--) { + ADVD_BUFFER[i] = buf; + buf += size; + } +} + +static void __UpdateBuffer() { + if (next_buffers != 0) { + __WriteBufferSize(next_buffertop, next_buffers, next_buffersize); + next_buffers = 0; + next_buffertop = nullptr; + } +} + +static vu32 buffer_full; + +static void ARAM_DMAfinish(u32 arg0) { + buffer_full -= 1; +} + +extern s32 DVDT_LoadtoARAM_Main(void* arg) { + DVDCall* call = (DVDCall*)arg; + static int arq_index = 0; + static DVDFileInfo finfo; + static ARQRequest req[4]; + + if (!Jac_DVDOpen(call->fileName, &finfo)) { + __DoError(call, 0); + return -1; + } + + u32 len = finfo.length; + if (len == 0) { + __DoError(call, 1); + return -1; + } + + if (call->length == 0) { + call->length = len; + + if (call->src != 0) { + call->length -= call->src; + } + } + + OSGetTick(); + + while (call->length != 0) { + u32 readSize; + u8* buf = ADVD_BUFFER[buffer_load]; + buffer_load = (buffer_load + 1) % buffers; + while (buffer_full == buffers) + ; + + if (call->length < buffersize) { + readSize = ALIGN_NEXT(call->length, 32); + len = DVDReadMutex(&finfo, buf, readSize, call->src, call->fileName); + + call->length = 0; + } else { + readSize = buffersize; + len = DVDReadMutex(&finfo, buf, buffersize, call->src, call->fileName); + + call->src += buffersize; + call->length -= buffersize; + } + + ARQPostRequest(&req[arq_index], 0x12345678, ARQ_TYPE_MRAM_TO_ARAM, ARQ_PRIORITY_HIGH, (u32)buf, call->dst, + readSize, ARAM_DMAfinish); + buffer_full++; + arq_index++; + arq_index &= 3; + call->dst += readSize; + } + + DVDClose(&finfo); + + while (buffer_full != 0) + ; + + OSGetTick(); + + __DoFinish(call, len); + + return 0; +} + +extern s32 DVDT_LoadtoARAM(u32 owner, char* name, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback) { + DVDCall call; + void* cb = (void*)&call; + + call.owner = owner; + DVDT_ExtendPath(call.fileName, name); + + call.dst = dst; + call.callbackStatus = status; + if (status != 0) { + *status = 0; + } + + call.callback = callback; + call.src = src; + call.length = length; + + DVDT_AddTask(DVDT_LoadtoARAM_Main, cb, 0x58); + + return 0; +} + +static vu32 buffer_full2; + +static void ARAM_DMAfinish2(u32) { + buffer_full2 -= 1; +} + +extern s32 DVDT_ARAMtoDRAM_Main(void* arg) { + static ARQRequest req; + DVDCall* call = (DVDCall*)arg; + + buffer_full2++; + + ARQPostRequest(&req, (u32)call, ARQ_TYPE_ARAM_TO_MRAM, ARQ_PRIORITY_HIGH, call->src, call->dst, call->length, + ARAM_DMAfinish2); + + while (buffer_full2 != 0) + ; + + __DoFinish(call, call->length); + + return 0; +} + +extern s32 DVDT_DRAMtoARAM_Main(void* arg) { + static ARQRequest req; + DVDCall* call = (DVDCall*)arg; + + buffer_full2++; + + ARQPostRequest(&req, (u32)call, ARQ_TYPE_MRAM_TO_ARAM, ARQ_PRIORITY_HIGH, call->dst, call->src, call->length, + ARAM_DMAfinish2); + + while (buffer_full2 != 0) + ; + + __DoFinish(call, call->length); + + return 0; +} + +extern s32 DVDT_ARAMtoDRAM(u32 owner, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback) { + DVDCall call; + void* cb = (void*)&call; + + call.owner = owner; + call.dst = dst; + call.callbackStatus = status; + + if (status != 0) { + *status = 0; + } + + call.callback = callback; + call.src = src; + call.length = length; + + DVDT_AddTaskHigh(DVDT_ARAMtoDRAM_Main, cb, 0x58); + + return 0; +} + +extern s32 DVDT_DRAMtoARAM(u32 owner, u32 dst, u32 src, u32 length, u32* status, Jac_DVDCallback callback) { + DVDCall call; + void* cb = (void*)&call; + + call.owner = owner; + call.dst = dst; + call.callbackStatus = status; + + if (status != 0) { + *status = 0; + } + + call.callback = callback; + call.src = src; + call.length = length; + + DVDT_AddTaskHigh(DVDT_DRAMtoARAM_Main, cb, 0x58); + + return 0; +} + +extern s32 DVDT_CheckFile(char* file) { + static DVDFileInfo finfo; + + char path[64]; + DVDT_ExtendPath(path, file); + + if (!Jac_DVDOpen(path, &finfo)) { + return 0; + } + u32 len = finfo.length; + + DVDClose(&finfo); + + return len; +} + +extern void DVDT_CheckPass(u32 owner, u32* status, Jac_DVDCallback callback) { + DVDCall call; + void* cb = (void*)&call; + + call.owner = owner; + call.callbackStatus = status; + call.callback = callback; + + DVDT_AddTask((TaskCallback)__DVDT_CheckBack, cb, 0x58); +} + +extern s32 Jac_CheckFile(char* file) { + static DVDFileInfo finfo; + + if (!Jac_DVDOpen(file, &finfo)) { + return 0; + } + u32 len = finfo.length; + + DVDClose(&finfo); + + return len; +} + +extern void Jac_RegisterDVDErrorCallback(ErrorCallback callback) { + error_callback = callback; + +} + +static u32 dvdfile_dics; +static char dvd_file[32][64]; +static u32 dvd_entrynum[32]; + +extern s32 Jac_RegisterFastOpen(char* file) { + int num; + if (strlen(file) > 63) { + return -1; + } + + int i; + + for (i = 0; i < dvdfile_dics; i++) { + if (!strcmp(dvd_file[i], file)) { + return dvd_entrynum[i]; + } + } + if (dvdfile_dics == 32) { + return -1; + } + + num = DVDConvertPathToEntrynum(file); + + if (num != -1) { + strcpy(dvd_file[dvdfile_dics], file); + dvd_entrynum[dvdfile_dics] = num; + dvdfile_dics++; + } + return num; +} + +extern BOOL Jac_DVDOpen(char* name, DVDFileInfo* info) { + int entry = Jac_RegisterFastOpen(name); + + if (entry == -1) { + return DVDOpen(name, info); + } else { + return DVDFastOpen(entry, info); + } +} diff --git a/src/static/jaudio_NES/internal/neosthread.c b/src/static/jaudio_NES/internal/neosthread.c new file mode 100644 index 00000000..db0fe564 --- /dev/null +++ b/src/static/jaudio_NES/internal/neosthread.c @@ -0,0 +1,96 @@ +#include "jaudio_NES/neosthread.h" + +#include "dolphin/os.h" +#include "jaudio_NES/dummyrom.h" +#include "jaudio_NES/dvdthread.h" +#include "jaudio_NES/aictrl.h" +#include "jaudio_NES/rate.h" +#include "jaudio_NES/audioconst.h" +#include "jaudio_NES/system.h" +#include "jaudio_NES/audiothread.h" +#include "jaudio_NES/cpubuf.h" +#include "jaudio_NES/dummyprobe.h" +#include "jaudio_NES/sub_sys.h" +#include "jaudio_NES/rspsim.h" +#include "jaudio_NES/sample.h" + +#define NEOSTHREAD_IMAGE_LOADED_MSG (0x12345678) +#define NEOSTHREAD_ACMD_BUF_NUM 1600 + +static OSMessageQueue neosproc_mq; +static u32 neosproc_mq_init = FALSE; +static s16* tmp_buf = nullptr; +static BOOL neos_ready = FALSE; + +extern u32 Neos_Update(s16* dst) { + if (neosproc_mq_init) { + if (OSSendMessage(&neosproc_mq, (OSMessage)dst, OS_MESSAGE_NOBLOCK) == TRUE) { + return TRUE; + } else { + return FALSE; + } + } + + return FALSE; +} + +extern void ImageLoaded(u32 param) { + OSSendMessage(&neosproc_mq, (OSMessage)NEOSTHREAD_IMAGE_LOADED_MSG, OS_MESSAGE_BLOCK); +} + +extern BOOL Neos_CheckBoot(void) { + return neos_ready; +} + +extern void* neosproc(void* param) { + static OSMessage msgbuf[1]; + static u32 cur = 0; + + neos_ready = FALSE; + OSInitMessageQueue(&neosproc_mq, msgbuf, 1); + neosproc_mq_init = TRUE; + u32 neos_rom_top = GetNeosRomTop(); + u32 neos_rom_preloaded = GetNeosRom_PreLoaded(); + u32 neos_file_top = GetNeos_FileTop(); + + DVDT_LoadtoARAM(0, "/audiorom.img", neos_rom_top + neos_rom_preloaded, neos_file_top, 0, nullptr, &ImageLoaded); + + OSMessage msg; + do { + OSReceiveMessage(&neosproc_mq, &msg, 1); + } while (msg != (OSMessage)NEOSTHREAD_IMAGE_LOADED_MSG); + + tmp_buf = (s16*)OSAlloc2(DAC_SIZE * 2); + + /* Initialize neos */ + s32 tmp = AGC.acmdBufSize; + u64* acmdBuf = (u64*)OSAlloc2(tmp); + Nas_InitAudio(acmdBuf, tmp); + NeosSync(); + neos_ready = TRUE; + + Jac_RegisterMixcallback(&MixCpu, MixMode_Interleave); + + do { + static Acmd task_buf[2][NEOSTHREAD_ACMD_BUF_NUM]; + static u32 tasks[2] = { 0, 0 }; + + OSReceiveMessage(&neosproc_mq, &msg, OS_MESSAGE_BLOCK); + Probe_Start(8, "NEOS THREAD"); + s16* samples_dst = (s16*)msg; + tasks[cur] = CreateAudioTask(task_buf[cur], tmp_buf, JAC_FRAMESAMPLES, 0); + + tmp = (cur + 1) & 1; + if (tasks[tmp]) { + RspStart2((u32*)task_buf[tmp], tasks[tmp], 0); + tasks[tmp] = 0; + Jac_bcopy(tmp_buf, samples_dst, DAC_SIZE * 2); + } else { + Jac_bzero(samples_dst, DAC_SIZE * 2); + } + + Probe_Finish(8); + NeosSync(); + cur = tmp; + } while (TRUE); +} diff --git a/src/static/jaudio_NES/internal/os.c b/src/static/jaudio_NES/internal/os.c new file mode 100644 index 00000000..3a90a066 --- /dev/null +++ b/src/static/jaudio_NES/internal/os.c @@ -0,0 +1,82 @@ +#include "jaudio_NES/os.h" +#include "dolphin/os.h" +#include "jaudio_NES/dummyrom.h" +#include "jaudio_NES/sample.h" + + +extern void Z_osWritebackDCacheAll(){ + +} + +extern void osInvalDCache2(void* src, s32 size){ + DCInvalidateRange(src,size); +} + +extern void osWritebackDCache2(void* src, s32 size){ + DCStoreRange(src,size); +} + +extern void Z_osCreateMesgQueue (OSMesgQueue* mq, OSMesg* msg, s32 count ){ + mq->msg = msg; + mq->msgCount = count; + mq->validCount = 0; + mq->first = 0; +} + +extern s32 Z_osSendMesg(OSMesgQueue* mq, OSMesg msg, s32 flags ){ + int msgCount = mq->msgCount; + if (mq->validCount == mq->msgCount) { + return -1; + } + + int count = mq->first + mq->validCount; + + if(count >= mq->msgCount){ + count -= mq->msgCount; + } + + mq->msg[count] = msg; + + mq->validCount++; + + return 0; +} + +extern s32 Z_osRecvMesg(OSMesgQueue* mq, OSMesg* msg, s32 flags ){ + if(flags == OS_MESG_BLOCK){ + while(!mq->validCount){ + + }; + } + + if(mq->validCount == 0){ + if(msg != NULL){ + *msg = NULL; + } + return -1; + } + + mq->validCount -= 1; + + if(msg != NULL){ + *msg = mq->msg[mq->first]; + } + + mq->first++; + + if(mq->first == mq->msgCount){ + mq->first = 0; + } + + return 0; + +} + +extern s32 Z_osEPiStartDma (OSPiHandle * handler, OSIoMesg* msg, s32 dir){ + ARAMStartDMAmesg(1, (uintptr_t)msg->dramAddr, msg->devAddr, msg->size, 0, msg->hdr.retQueue); + return 0; +} + +void Z_bcopy (void* dst, void* src, size_t size){ + Jac_bcopy(dst,src,size); +} \ No newline at end of file diff --git a/src/static/jaudio_NES/internal/playercall.c b/src/static/jaudio_NES/internal/playercall.c new file mode 100644 index 00000000..58a13730 --- /dev/null +++ b/src/static/jaudio_NES/internal/playercall.c @@ -0,0 +1,82 @@ +#include "jaudio_NES/playercall.h" +#include "jaudio_NES/audiostruct.h" + +static PLAYER_CALL PLAYER_CALLLIST[16]; + +extern void ResetPlayerCallback() { + int i; + + for (i = 0; i < 16; i++) { + PLAYER_CALLLIST[i].callback = nullptr; + } +} + +static s32 Jac_CheckPlayerCallback(PlayerCallBack callback, void* arg) { + int i; + + for (i = 0; i < 16; i++) { + if (PLAYER_CALLLIST[i].callback == callback && PLAYER_CALLLIST[i].arg == arg) { + return i; + } + } + return -1; +} + +extern s32 Jac_RegisterDspPlayerCallback(PlayerCallBack callback, void* arg) { + s32 idx = Jac_RegisterPlayerCallback(callback, arg); + + if (idx == -1) { + return -1; + } + + PLAYER_CALLLIST[idx].DSP_mode = true; + + return idx; +} + +extern s32 Jac_RegisterPlayerCallback(PlayerCallBack callback, void* arg) { + u32 i; + + for (i = 0; i < 16; i++) { + if (PLAYER_CALLLIST[i].callback == nullptr) { + break; + } + } + + if (i == 16) { + return -1; + } + + if (Jac_CheckPlayerCallback(callback, arg) != -1) { + return -1; + } else { + PLAYER_CALLLIST[i].callback = callback; + PLAYER_CALLLIST[i].arg = arg; + PLAYER_CALLLIST[i].DSP_mode = false; + return i; + } + + return -1; +} + +extern void PlayerCallback() { + u32 i; + + for (i = 0; i < 16; i++) { + PlayerCallBack callback = PLAYER_CALLLIST[i].callback; + if (callback != nullptr && PLAYER_CALLLIST[i].DSP_mode == false && callback(PLAYER_CALLLIST[i].arg) == -1) { + PLAYER_CALLLIST[i].callback = nullptr; + } + } +} + +extern void DspPlayerCallback() { + u32 i; + + for (i = 0; i < 16; i++) { + PlayerCallBack callback = PLAYER_CALLLIST[i].callback; + if (callback != nullptr && PLAYER_CALLLIST[i].DSP_mode == true && callback(PLAYER_CALLLIST[i].arg) == -1) { + PLAYER_CALLLIST[i].callback = nullptr; + } + } +} diff --git a/src/static/jaudio_NES/internal/random.c b/src/static/jaudio_NES/internal/random.c new file mode 100644 index 00000000..3b217aad --- /dev/null +++ b/src/static/jaudio_NES/internal/random.c @@ -0,0 +1,28 @@ +#include "jaudio_NES/random.h" + +static s32 v0 = 0x0001000; +static s32 v1 = 0x0005555; + +#define V0_MULT (s32)0x13579BDE +#define V1_MULT (s32)0x98765432 + +extern s32 GetRandom_s32(void) { + s32 tmp; + + tmp = (v1 * V1_MULT) + ((v0 * V0_MULT) >> 4); + tmp += 1; + v0 = v1; + v1 = tmp; + return tmp; +} + +extern f32 GetRandom_sf32(void) { + s32 rnd = GetRandom_s32(); + f32 rnd_float = (f32)(rnd & 0x00FFFFFF) / (f32)(0x00FFFFFF); /* map to float [0, 1] */ + + if (rnd < 0) { + rnd_float = -rnd_float; + } + + return rnd_float; +} diff --git a/src/static/jaudio_NES/internal/sample.c b/src/static/jaudio_NES/internal/sample.c new file mode 100644 index 00000000..5f3997b3 --- /dev/null +++ b/src/static/jaudio_NES/internal/sample.c @@ -0,0 +1,116 @@ +#include "jaudio_NES/sample.h" + +#include "dolphin/os/OSCache.h" + +extern void Jac_imixcopy(s16* ta, s16* tb, s16* td, s32 s) { + for (s; s > 0; s--) { + *td++ = *ta++; + *td++ = *tb++; + } +} + +extern void Jac_bcopyfast(u32* src, u32* dest, u32 size) { + u32 copy1, copy2, copy3, copy4; + for (size = size / (4 * sizeof(u32)); size != 0; size--) { + copy1 = *src++; + copy2 = *src++; + copy3 = *src++; + copy4 = *src++; + *dest++ = copy1; + *dest++ = copy2; + *dest++ = copy3; + *dest++ = copy4; + } +} + +extern void Jac_bcopy(void* src, void* dest, s32 size) { + u8 alignedSrc, alignedDst; + u32* usrc; + u32* udest; + + u8* bsrc = (u8*)src; + u8* bdest = (u8*)dest; + + alignedSrc = (reinterpret_cast(bsrc) & 0x03); + alignedDst = (reinterpret_cast(bdest) & 0x03); + if ((alignedSrc) == (alignedDst) && (size & 0x0f) == 0) { + Jac_bcopyfast((u32*)src, (u32*)dest, size); + } else if ((alignedSrc) == (alignedDst) && (size >= 16)) { + if ((alignedSrc) != 0) { + for (alignedSrc = 4 - alignedSrc; (alignedSrc) != 0; alignedSrc--) { + *bdest++ = (u32) * (bsrc)++; + size--; + } + } + + udest = (u32*)bdest; + usrc = (u32*)bsrc; + + for (; size >= 4; size -= 4) { + *udest++ = *usrc++; + } + + if (size != 0) { + bdest = (u8*)udest; + bsrc = (u8*)usrc; + + for (; size > 0; size--) { + *bdest++ = (u32)*bsrc++; + } + } + } else { + for (; size > 0; size--) { + *bdest++ = (u32)*bsrc++; + } + } +} + +extern void Jac_bzerofast(u32* dest, u32 size) { + for (size = size / (4 * sizeof(u32)); size != 0; size--) { + *dest++ = 0; + *dest++ = 0; + *dest++ = 0; + *dest++ = 0; + } +} + +extern void Jac_bzero(void* dest, s32 size) { + u32* udest; + u8* bdest = (u8*)dest; + u8 alignedbitsDst = reinterpret_cast(bdest) & 0x3; + if (alignedbitsDst == 0) { + if ((size & 0x1f) == 0) { + DCZeroRange(dest, size); + return; + } + if ((size & 0xf) == 0) { + Jac_bzerofast((u32*)dest, size); + return; + } + } + + if (size >= 16) { + if (alignedbitsDst != 0) { + for (alignedbitsDst = 4 - alignedbitsDst; alignedbitsDst != 0; alignedbitsDst--) { + *bdest++ = 0; + size--; + } + } + + udest = (u32*)bdest; + for (; size >= 4; size -= 4) { + *udest++ = 0; + } + + if (size != 0) { + bdest = (u8*)udest; + for (; size > 0; size--) { + *bdest++ = 0; + } + } + } else { + for (; size > 0; size--) { + *bdest++ = 0; + } + } +} diff --git a/src/static/jaudio_NES/internal/streamctrl.c b/src/static/jaudio_NES/internal/streamctrl.c new file mode 100644 index 00000000..1423b852 --- /dev/null +++ b/src/static/jaudio_NES/internal/streamctrl.c @@ -0,0 +1,143 @@ +#include "jaudio_NES/streamctrl.h" + +#include "jaudio_NES/audiowork.h" +#include "jaudio_NES/rate.h" +#include "dolphin/ai.h" +#include "dolphin/dvd.h" + +char J_STREAMNAME[8][16] = { + "/stream00.adp", "/stream01.adp", "/stream02.adp", "/stream03.adp", + "/stream04.adp", "/stream05.adp", "/stream06.adp", "/stream07.adp", +}; + +// clang-format off +JSTREAM J_STREAM = { + JSTREAM_STATE_STOPPED, + JSTREAM_NO_TRACK_ID, JSTREAM_NO_TRACK_ID, + 0.0f, 0, + 0, + 0, + 0.0f, 0, + 0.0f, + 0 +}; +// clang-format on + +/* @fabricated -- necessary for float ordering */ +#pragma force_active on +MATCH_FORCESTRIP static f32 Jac_VolMoveStreamBGM(s32 l, s32 r) { + // AISetStreamVolLeft((s32)(f32)l); + // AISetStreamVolRight((s32)(f32)r); + return l; +} +#pragma force_active reset + +extern void StreamMain(void) { + static DVDFileInfo finfo; + static DVDCommandBlock cmd; + u32 streamed_samples; + u32 trigger; + + switch (J_STREAM.state) { + case JSTREAM_STATE_STOPPED: + break; + + case JSTREAM_STATE_REQUEST_STREAM: + J_STREAM.now_stream_id = J_STREAM.req_stream_id; + J_STREAM.req_stream_id = JSTREAM_NO_TRACK_ID; + if (J_STREAM.now_stream_id == JSTREAM_NO_TRACK_ID) { + J_STREAM.state = JSTREAM_STATE_STOPPED; + } else { + if (DVDOpen(J_STREAMNAME[J_STREAM.now_stream_id], &finfo) == FALSE) { + J_STREAM.now_stream_id = JSTREAM_NO_TRACK_ID; + J_STREAM.state = JSTREAM_STATE_STOPPED; + } else { + J_STREAM.total_samples = finfo.length; + J_STREAM.total_samples = + (J_STREAM.total_samples / 256) * 224; // TODO: should probably make these defines + AISetStreamSampleRate(AI_SAMPLERATE_48KHZ); + if (J_STREAM.fadein_vol_timer == 0) { + J_STREAM.stream_vol = J_STREAM.fadein_vol; + } else { + J_STREAM.stream_vol = 0.0f; + } + + AISetStreamVolLeft((s32)J_STREAM.stream_vol); + AISetStreamVolRight((s32)J_STREAM.stream_vol); + DVDPrepareStreamAsync(&finfo, 0, 0, nullptr); + J_STREAM.state = JSTREAM_STATE_START; + } + } + break; + + case JSTREAM_STATE_START: + if (DVDGetDriveStatus() == DVD_STATE_END) { + AIResetStreamSampleCount(); + AISetStreamPlayState(AI_STREAM_START); + J_STREAM.state = JSTREAM_STATE_PLAYING; + } + break; + + case JSTREAM_STATE_PLAYING: + streamed_samples = AIGetStreamSampleCount(); + trigger = AIGetStreamTrigger(); + + if (J_STREAM.fadein_vol_timer != 0) { + f32 vol = J_STREAM.fadein_vol; + vol -= J_STREAM.stream_vol; + vol /= (f32)J_STREAM.fadein_vol_timer; + J_STREAM.stream_vol += vol; + J_STREAM.fadein_vol_timer--; + AISetStreamVolLeft((s32)J_STREAM.stream_vol); + AISetStreamVolRight((s32)J_STREAM.stream_vol); + } + + if (J_STREAM.change_vol_timer1 != 0) { + f32 vol = J_STREAM.target_vol1; + vol -= J_STREAM.stream_vol; + vol /= (f32)J_STREAM.change_vol_timer1; + J_STREAM.stream_vol += vol; + J_STREAM.change_vol_timer1--; + AISetStreamVolLeft((s32)J_STREAM.stream_vol); + AISetStreamVolRight((s32)J_STREAM.stream_vol); + } + + if ((J_STREAM.total_samples - streamed_samples) < (JAC_FRAMESAMPLES * JSTREAM_FADEOUT_TIMER)) { + J_STREAM.state = JSTREAM_STATE_FADEOUT; + J_STREAM.fadeout_timer = JSTREAM_FADEOUT_TIMER; + } + break; + + case JSTREAM_STATE_CANCELLED: + case JSTREAM_STATE_FADEOUT: + u32 streamed_samples = AIGetStreamSampleCount(); + if (J_STREAM.fadeout_timer != 0 && (J_STREAM.total_samples - streamed_samples) != 0) { + f32 vol = -J_STREAM.stream_vol; + vol /= (f32)J_STREAM.fadeout_timer; + J_STREAM.stream_vol += vol; + J_STREAM.fadeout_timer--; + AISetStreamVolLeft((s32)J_STREAM.stream_vol); + AISetStreamVolRight((s32)J_STREAM.stream_vol); + } else { + DVDCancelStream(&cmd); + J_STREAM.state = JSTREAM_STATE_STOP; + } + break; + + case JSTREAM_STATE_STOP: + if (DVDGetDriveStatus() == DVD_STATE_END) { + AISetStreamPlayState(AI_STREAM_STOP); + J_STREAM.state = JSTREAM_STATE_CLEANUP; + } + break; + + case JSTREAM_STATE_CLEANUP: + if (DVDGetDriveStatus() == DVD_STATE_END) { + DVDClose(&finfo); + J_STREAM.now_stream_id = -1; + J_STREAM.state = JSTREAM_STATE_REQUEST_STREAM; + AISetStreamPlayState(AI_STREAM_STOP); + } + break; + } +} diff --git a/src/static/jaudio_NES/internal/sub_sys.c b/src/static/jaudio_NES/internal/sub_sys.c new file mode 100644 index 00000000..b8aa73cf --- /dev/null +++ b/src/static/jaudio_NES/internal/sub_sys.c @@ -0,0 +1,704 @@ +#include "jaudio_NES/sub_sys.h" + +#include "jaudio_NES/system.h" +#include "jaudio_NES/track.h" +#include "jaudio_NES/channel.h" +#include "jaudio_NES/memory.h" +#include "jaudio_NES/os.h" +#include "jaudio_NES/audiomacro.h" +#include "jaudio_NES/driver.h" +#include "dolphin/os.h" + +static void __Nas_GroupFadeOut(s32 group, s32 fadeout_timer); +static void __Nas_GroupFadeIn(s32 group, s32 fadein_timer); +static s32 Nap_SilenceCheck_Inner(s32 flags); +static void __SetGrpParam(group* group, AudioPort* port); +static void __SetSubParam(sub* subtrack, AudioPort* port); + +static void Nap_AudioSysProcess(AudioPort* port) { + group* group = AG.groups_p[port->command.arg0]; + s32 i; + + switch (port->command.opcode) { + case AUDIOCMD_PRELOAD_SEQ: + Nas_PreLoadSeq(port->command.arg1, port->command.arg2, port->param.asS32, &AG.external_load_queue); + break; + case AUDIOCMD_START_SEQ: + Nas_StartMySeq(port->command.arg0, port->command.arg1, port->command.arg2); + __Nas_GroupFadeIn(port->command.arg0, port->param.asS32); + break; + case AUDIOCMD_START_SEQ_SKIP: + Nas_StartSeq_Skip(port->command.arg0, port->command.arg1, port->param.asS32); + Nas_SeqSkip(group); + break; + case AUDIOCMD_STOP_SEQ: + if (group->flags.enabled) { + if (port->param.asS32 == 0) { + Nas_ReleaseGroup_Force(group); + } else { + __Nas_GroupFadeOut(port->command.arg0, port->param.asS32); + } + } + break; + case AUDIOCMD_SET_SOUND_MODE: + AG.sound_mode = (s8)port->param.asS32; + break; + case AUDIOCMD_MUTE: + if (port->command.arg0 == AUDIOCMD_ALL_GROUPS) { + for (i = 0; i < AG.audio_params.num_groups; i++) { + AG.groups[i].flags.muted = TRUE; + AG.groups[i].flags.recalculate_volume = TRUE; + } + } else { + group->flags.muted = TRUE; + group->flags.recalculate_volume = TRUE; + } + break; + case AUDIOCMD_UNMUTE: + if (port->param.asS32 == 1) { + for (i = 0; i < AG.num_channels; i++) { + channel* channel = &AG.channels[i]; + commonch* common_state = &channel->common_ch; + + if (common_state->enabled && channel->playback_ch.status == 0 && + (channel->playback_ch.current_parent_note->sub_track->mute_flags & + AUDIO_MUTE_FLAG_STOP_SAMPLES)) { + common_state->finished = TRUE; + } + } + } + + if (port->command.arg0 == AUDIOCMD_ALL_GROUPS) { + for (i = 0; i < AG.audio_params.num_groups; i++) { + AG.groups[i].flags.muted = FALSE; + AG.groups[i].flags.recalculate_volume = TRUE; + } + } else { + group->flags.muted = FALSE; + group->flags.recalculate_volume = TRUE; + } + break; + case AUDIOCMD_LOAD_VOICE_INSTRUMENT: + /* Synchronous load for voice (instrument) */ + Nas_LoadVoice(port->command.arg0, port->command.arg1, port->command.arg2); + break; + case AUDIOCMD_PRELOADWAVE_BG: + /* Async preload wave (samples) */ + Nas_PreLoadWave_BG(port->command.arg0, port->command.arg1, port->command.arg2, &AG.external_load_queue); + break; + case AUDIOCMD_PRELOADBANK_BG: + /* Async preload bank (instrument/sfx/percussion) */ + Nas_PreLoadBank_BG(port->command.arg0, port->command.arg1, port->command.arg2, &AG.external_load_queue); + break; + case AUDIOCMD_PRELOADSEQ_BG: + /* Async preload sequence */ + Nas_PreLoadSeq_BG(port->command.arg0, port->command.arg1, port->command.arg2, &AG.external_load_queue); + break; + case AUDIOCMD_FLUSH_BANKS: + /* Flush instrument banks */ + Nas_FlushBank(port->command.arg1); + break; + case AUDIOCMD_SET_GROUP_MASK: + AG.thread_cmd_group_mask[port->command.arg0] = port->param.asU16; + break; + case AUDIOCMD_RESET_AUDIO_HEAP: + AG.reset_status = 5; + AG.spec_id = port->param.asU32; + break; + case AUDIOCMD_MAIN_GROUP_SUBPORT_CMD: + if (port->param.asS32 == 0) { + AG.main_group.subtracks[0]->port[4] = -1; + } else { + AG.main_group.subtracks[0]->port[2] = port->command.arg1; + AG.main_group.subtracks[0]->port[1] = port->command.arg0; + AG.main_group.subtracks[0]->port[0] = port->command.arg2; + } + break; + case AUDIOCMD_MAIN_GROUP_SET_FREQ_SCALE: + s32 idx = 128 + port->param.asS32; + + AG.main_group.subtracks[0]->frequency_scale = PCENTTABLE2[idx]; + AG.main_group.subtracks[0]->changes.flags.frequency_scale = TRUE; + AG.main_group.subtracks[0]->vibrato_params.depth_target = port->command.arg2 * 4; + AG.main_group.subtracks[0]->vibrato_params.depth_change_delay = 32; + break; + case AUDIOCMD_MAIN_GROUP_SET_VOL_SCALE: + AG.main_group.subtracks[0]->volume_scale = port->param.asF32; + AG.main_group.subtracks[0]->changes.flags.volume = TRUE; + break; + case AUDIOCMD_SET_VFRAME_CALLBACK: + NA_VFRAME_CALLBACK = (VFRAME_CALLBACK)port->param.asU32; + break; + case AUDIOCMD_SET_CALLBACK: + if (port->command.arg2 == AUDIO_CALLBACK_SOUND) { + NA_SOUND_CALLBACK = (SOUND_CALLBACK)port->param.asU32; + } else if (port->command.arg2 == AUDIO_CALLBACK_DACOUT) { + NA_DACOUT_CALLBACK = (DACOUT_CALLBACK)port->param.asU32; + } else { + AG.seq_callbacks[port->command.arg2] = (SequenceCallback)port->param.asU32; + } + break; + case AUDIOCMD_SET_PERC_BANK: + case AUDIOCMD_SET_EFFECT_BANK: + case AUDIOCMD_SET_VOICE_BANK: + OverwriteBank(port->command.opcode - AUDIOCMD_SET_PERC_BANK, port->command.arg1, port->command.arg2, + port->param.asS32); + break; + case AUDIOCMD_FORCE_STOP_ALL_GROUPS: + s32 flags = port->param.asS32; + + if (flags == AUDIO_NOTE_RELEASE) { + for (i = 0; i < AG.audio_params.num_groups; i++) { + if (AG.groups[i].flags.enabled) { + Nas_ReleaseGroup_Force(&AG.groups[i]); + } + } + } + + Nap_SilenceCheck_Inner(flags); + break; + case AUDIOCMD_CLEAR_STAY_CACHE: + Nas_SzStayDelete(port->param.asS32); + break; + case AUDIOCMD_SET_EXTERNAL_POINTER: + Nas_SetExtPointer(port->command.arg0, port->command.arg1, port->command.arg2, port->param.asS32); + break; + case AUDIOCMD_SET_DELAY_LINE_PARAM: + Nas_SetDelayLineParam(port->command.arg1, port->command.arg0, port->param.asS32, FALSE); + break; + default: + break; + } +} + +static void __Nas_GroupFadeOut(s32 groupId, s32 fadeout_time) { + group* group = AG.groups_p[groupId]; + + if (fadeout_time == 0) { + fadeout_time = 1; + } + + group->fade_velocity = -(group->fade_volume / (f32)fadeout_time); + group->state = GROUP_STATE_FADE_OUT; + group->fade_timer = fadeout_time; +} + +static void __Nas_GroupFadeIn(s32 groupId, s32 fadein_time) { + + if (fadein_time != 0) { + group* group = AG.groups_p[groupId]; + group->fade_volume = 0.0f; + group->fade_velocity = 0.0f; + group->state = GROUP_STATE_FADE_IN; + group->stored_fade_timer = fadein_time; + group->fade_timer = fadein_time; + } +} + +extern void Nap_AudioPortInit(void) { + AG.thread_cmd_write_pos = 0; + AG.thread_cmd_read_pos = 0; + AG.thread_cmd_queue_finished = FALSE; + + AG.task_start_mq_p = &AG.task_start_mq; + AG.thread_cmd_proc_mq_p = &AG.thread_cmd_proc_mq; + AG.spec_change_mq_p = &AG.spec_change_mq; + + Z_osCreateMesgQueue(AG.task_start_mq_p, AG.task_start_msg_buf, ARRAY_COUNT(AG.task_start_msg_buf)); + Z_osCreateMesgQueue(AG.thread_cmd_proc_mq_p, AG.thread_cmd_proc_msg_buf, ARRAY_COUNT(AG.thread_cmd_proc_msg_buf)); + Z_osCreateMesgQueue(AG.spec_change_mq_p, AG.spec_change_msg_buf, ARRAY_COUNT(AG.spec_change_msg_buf)); + AG.spec_change_mq_p->validCount; +} + +static void Nap_PortSet(u32 data, s32* param_p) { + AudioPort* port_p = &AG.audio_port_cmds[AG.thread_cmd_write_pos & 0xFF]; + + port_p->raw_cmd = data; + port_p->param.asS32 = *param_p; + + AG.thread_cmd_write_pos++; + if (AG.thread_cmd_write_pos == AG.thread_cmd_read_pos) { + AG.thread_cmd_write_pos--; + } +} + +extern void Nap_SetF32(u32 cmd, f32 param) { + Nap_PortSet(cmd, (s32*)¶m); +} + +extern void Nap_SetS32(u32 cmd, s32 param) { + Nap_PortSet(cmd, (s32*)¶m); +} + +extern void Nap_SetS8(u32 cmd, s8 param) { + u32 mod_param = (param << 24); + + Nap_PortSet(cmd, (s32*)&mod_param); +} + +extern void Nap_SetU16(u32 cmd, u16 param) { + u32 mod_param = (param << 16); + + Nap_PortSet(cmd, (s32*)&mod_param); +} + +extern s32 Nap_SendStart(void) { + static u8 worst = 0; + s32 msg; + s32 res; + + if (AUDIO_SYSTEM_READY != TRUE) { + return -1; + } + + msg = ((AG.thread_cmd_read_pos & 0xFF) << 8) | (AG.thread_cmd_write_pos & 0xFF); + res = Z_osSendMesg(AG.thread_cmd_proc_mq_p, (OSMesg)msg, OS_MESG_NOBLOCK); + + if (res != -1) { + AG.thread_cmd_read_pos = AG.thread_cmd_write_pos; + } else { + OSReport("SendStart::Mesg Full Queue\n"); + return -1; + } + + return 0; +} + +extern void Nap_FlushPort(void) { + AG.thread_cmd_read_pos = AG.thread_cmd_write_pos; + AG.thread_cmd_queue_finished = FALSE; +} + +#define AUDIOCMD_GRP_PARAM_MASK 0x40 +#define AUDIOCMD_SYS_SEQ_MASK 0x80 +#define AUDIOCMD_SYS_MASK 0xF0 + +extern void Nap_Process1Command(AudioPort* port) { + group* group; + u16 mask; + s32 i; + if ((port->command.opcode & AUDIOCMD_SYS_MASK) >= AUDIOCMD_SET_PERC_BANK) { + Nap_AudioSysProcess(port); + } else if (port->command.arg0 < AG.audio_params.num_groups) { + group = AG.groups_p[port->command.arg0]; + + if ((port->command.opcode & AUDIOCMD_SYS_SEQ_MASK) != 0) { + Nap_AudioSysProcess(port); + } else if ((port->command.opcode & AUDIOCMD_GRP_PARAM_MASK) != 0) { + __SetGrpParam(group, port); + } else if (port->command.arg1 < AUDIO_SUBTRACK_NUM) { + __SetSubParam(group->subtracks[port->command.arg1], port); + } else if (port->command.arg1 == AUDIOCMD_ALL_SUBTRACKS) { + mask = AG.thread_cmd_group_mask[port->command.arg0]; + + /* Apply to all active subtracks */ + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + if ((mask & 1)) { + __SetSubParam(group->subtracks[i], port); + } + + mask = mask >> 1; + } + } + } +} + +extern void Nap_AudioPortProcess(u32 msg) { + static u8 begin = 0; + + if (AG.thread_cmd_queue_finished == FALSE) { + begin = (msg >> 8) & 0xFF; + } + + while (TRUE) { + u32 now = begin; + AudioPort* port; + + if (now == (msg & 0xFF)) { + AG.thread_cmd_queue_finished = FALSE; + return; + } + + port = &AG.audio_port_cmds[now]; + begin++; + if (port->command.opcode == AUDIOCMD_SYS_STOP_PROCESSING) { + AG.thread_cmd_queue_finished = TRUE; + break; + } + + Nap_Process1Command(port); + port->command.opcode = AUDIOCMD_NOOP; + } +} + +extern s32 Nap_CheckSpecChange(void) { + s32 msg; + s32 res = Z_osRecvMesg(AG.spec_change_mq_p, (OSMesg*)&msg, OS_MESG_NOBLOCK); + + if (res == -1) { + return 0; + } else if (msg != AG.spec_id) { + return -1; + } else { + return 1; + } +} + +static void __ClearSpecChangeQ(void) { + s32 msg; + s32 res; + + do { + res = Z_osRecvMesg(AG.spec_change_mq_p, (OSMesg*)&msg, OS_MESG_NOBLOCK); + } while (res != -1); +} + +extern s32 Nap_StartSpecChange(s32 spec_id) { + s32 reset_status; + OSMesg msg; + s32 res; + + __ClearSpecChangeQ(); + reset_status = AG.reset_status; + + if (reset_status != 0) { + Nap_FlushPort(); + if (AG.spec_id == spec_id) { + return -2; + } + + if (reset_status >= 3) { + AG.spec_id = spec_id & 0xFF; + return -3; + } + + Z_osRecvMesg(AG.spec_change_mq_p, &msg, OS_MESG_BLOCK); + } + + __ClearSpecChangeQ(); + AUDIOCMD_RESET_AUDIO_HEAP_CMD(spec_id); + return Nap_SendStart(); +} + +extern s32 Nap_StartReset(void) { + AG.reset_timer = 1; + if (AUDIO_SYSTEM_READY) { + Nap_StartSpecChange(0); + AG.reset_status = 0; + } + + return 0; +} + +extern s8 Nap_ReadSubPort(s32 groupId, s32 subtrackId, s32 portId) { + group* group = AG.groups_p[groupId]; + if (group == NULL) { + return -1; + } + + if (group->flags.enabled) { + return group->subtracks[subtrackId]->port[portId]; + } + + return -1; +} + +extern s8 Nap_ReadGrpPort(s32 groupId, s32 portId) { + return AG.groups_p[groupId]->port[portId]; +} + +static void __SetGrpParam(group* group, AudioPort* port) { + f32 fade_vol; + + switch (port->command.opcode) { + case AUDIOCMD_OP_GRP_FADE_VOLUME_SCALE: + if (group->fade_volume_scale != port->param.asF32) { + group->fade_volume_scale = port->param.asF32; + group->flags.recalculate_volume = TRUE; + } + break; + case AUDIOCMD_OP_GRP_SET_TEMPO: + group->tempo = port->param.asS32 * AUDIO_TATUMS_PER_BEAT; + break; + case AUDIOCMD_OP_GRP_CHANGE_TEMPO: + group->tempo_change = port->param.asS32 * AUDIO_TATUMS_PER_BEAT; + break; + case AUDIOCMD_OP_GRP_CHANGE_TEMPO_TICKS: + group->tempo_change = port->param.asS32; + break; + case AUDIOCMD_OP_GRP_SET_TRANSPOSITION: + group->transposition = port->param.asS8; + break; + case AUDIOCMD_OP_GRP_SET_PORT: + group->port[port->command.arg2] = port->param.asS8; + break; + case AUDIOCMD_OP_GRP_FADE_TO_SET_VOLUME: + fade_vol = (s32)port->command.arg1 / 127.0f; + goto apply_fade; + case AUDIOCMD_OP_GRP_FADE_TO_SCALED_VOLUME: + fade_vol = ((s32)port->command.arg1 / 100.0f) * group->fade_volume; + + /* dev chose to make this a goto label */ + apply_fade: + if (group->state != GROUP_STATE_FADE_OUT) { + group->volume = group->fade_volume; + if (port->param.asS32 == 0) { + group->fade_volume = fade_vol; + } else { + s32 fade_timer = port->param.asS32; + + group->fade_velocity = (fade_vol - group->fade_volume) / fade_timer; + group->state = GROUP_STATE_0; + group->fade_timer = fade_timer; + } + } + break; + case AUDIOCMD_OP_GRP_RESET_VOLUME: + if (group->state != GROUP_STATE_FADE_OUT) { + if (port->param.asS32 == 0) { + group->fade_volume = group->volume; + } else { + s32 fade_timer = port->param.asS32; + + group->fade_velocity = (group->volume - group->fade_volume) / fade_timer; + group->state = GROUP_STATE_0; + group->fade_timer = fade_timer; + } + } + break; + case AUDIOCMD_OP_GRP_SET_BEND: + group->bend = port->param.asF32; + if (group->bend == 1.0f) { + group->flags.apply_bend = FALSE; + } else { + group->flags.apply_bend = TRUE; + } + break; + default: + break; + } +} + +static void __SetSubParam(sub* subtrack, AudioPort* port) { + u8 filter_cutoff; + + switch (port->command.opcode) { + case AUDIOCMD_OP_SUB_SET_VOL_SCALE: + if (subtrack->volume_scale != port->param.asF32) { + subtrack->volume_scale = port->param.asF32; + subtrack->changes.flags.volume = TRUE; + } + break; + case AUDIOCMD_OP_SUB_SET_VOL: + if (subtrack->volume != port->param.asF32) { + subtrack->volume = port->param.asF32; + subtrack->changes.flags.volume = TRUE; + } + break; + case AUDIOCMD_OP_SUB_SET_PAN: + if (subtrack->new_pan != port->param.asS8) { + subtrack->new_pan = port->param.asS8; + subtrack->changes.flags.pan = TRUE; + } + break; + case AUDIOCMD_OP_SUB_SET_PAN_WEIGHT: + if (subtrack->new_pan != port->param.asS8) { + subtrack->pan_channel_weight = port->param.asS8; + subtrack->changes.flags.pan = TRUE; + } + break; + case AUDIOCMD_OP_SUB_SET_FREQ_SCALE: + if (subtrack->frequency_scale != port->param.asF32) { + subtrack->frequency_scale = port->param.asF32; + subtrack->changes.flags.frequency_scale = TRUE; + } + break; + case AUDIOCMD_OP_SUB_SET_REVERB_VOLUME: + if (subtrack->target_reverb_vol != port->param.asS8) { + subtrack->target_reverb_vol = port->param.asS8; + } + break; + case AUDIOCMD_OP_SUB_SET_REVERB_INDEX: + if (subtrack->reverb_idx != port->param.asS8) { + subtrack->reverb_idx = port->param.asS8; + } + break; + case AUDIOCMD_OP_SUB_SET_SURROUND_EFFECT_INDEX: + subtrack->surround_effect_idx = port->param.asS8; + break; + case AUDIOCMD_OP_SUB_SET_PORT: + if (port->command.arg2 < ARRAY_COUNT(subtrack->port)) { + subtrack->port[port->command.arg2] = port->param.asS8; + } + break; + case AUDIOCMD_OP_SUB_SET_MUTE: + subtrack->muted = port->param.asS8; + break; + case AUDIOCMD_OP_SUB_SET_MUTE_FLAGS: + subtrack->mute_flags = port->param.asS8; + break; + case AUDIOCMD_OP_SUB_SET_VIBRATO_DEPTH: + subtrack->vibrato_params.depth_target = port->param.asU8 * 8; + subtrack->vibrato_params.depth_change_delay = 1; + break; + case AUDIOCMD_OP_SUB_SET_VIBRATO_RATE: + subtrack->vibrato_params.rate_target = port->param.asU8 * 32; + subtrack->vibrato_params.rate_change_delay = 1; + break; + case AUDIOCMD_OP_SUB_SET_COMB_FILTER_SIZE: + subtrack->comb_filter_size = port->param.asU8; + break; + case AUDIOCMD_OP_SUB_SET_COMB_FILTER_GAIN: + subtrack->comb_filter_gain = port->param.asU16; + break; + case AUDIOCMD_OP_SUB_SET_STEREO: + subtrack->stereo_phase.asU8 = port->param.asU8; + break; + case AUDIOCMD_OP_SUB_SET_SET_START_POS: + subtrack->sample_start_pos = port->param.asS32; + break; + case AUDIOCMD_OP_SUB_SET_SFX_STATE: + subtrack->sfx_state = (u8*)port->param.asVoidPtr; + break; + case AUDIOCMD_OP_SUB_SET_FILTER: + filter_cutoff = port->command.arg2; + if (port->param.asS32 != 0) { + subtrack->filter = (s16*)port->param.asVoidPtr; + } + + if (subtrack->filter != nullptr) { + Nas_SetBPFilter(subtrack->filter, filter_cutoff >> 4, filter_cutoff & 0xF); + } + break; + case AUDIOCMD_OP_SUB_SET_GAIN: + subtrack->gain = port->param.asU8; + break; + case AUDIOCMD_OP_SUB_SET_TRANSPOSITION: + subtrack->transposition = port->param.asU8; + break; + default: + break; + } +} + +extern void Nap_WaitVsync(void) { + Z_osRecvMesg(AG.task_start_mq_p, (OSMesg*)0, OS_MESG_NOBLOCK); + Z_osRecvMesg(AG.task_start_mq_p, (OSMesg*)0, OS_MESG_BLOCK); +} + +static s32 Nap_SilenceCheck_Inner(s32 flags) { + playbackch* playback_chan; + commonch* common_chan; + s32 i; + s32 channelCount; + channel* channel; + wtstr* tuned_sample; + + channelCount = 0; + for (i = 0; i < AG.num_channels; i++) { + channel = &AG.channels[i]; + playback_chan = &channel->playback_ch; + if (channel->common_ch.enabled) { + common_chan = &channel->common_ch; + if (playback_chan->adsr_envp.status != ADSR_STATUS_DISABLED) { + if (flags >= AUDIO_NOTE_SAMPLE_NOTES) { + tuned_sample = common_chan->tuned_sample; + if ((tuned_sample == nullptr) || common_chan->is_synth_wave) { + continue; + } + + if (tuned_sample->wavetable->medium == MEDIUM_RAM) { + continue; + } + } + + if ((flags & AUDIO_NOTE_RELEASE) == AUDIO_NOTE_RELEASE) { + playback_chan->adsr_envp.fadeout_velocity = AG.audio_params.updates_per_frame_inverse; + playback_chan->adsr_envp.release = TRUE; + } + + channelCount++; + } + } + } + return channelCount; +} + +extern u32 Nap_GetRandom(void) { + static u32 get = 0x12345678; + static u32 oldGetCount = 0x11111111; + u32 tick = OSGetTick(); + + get = (get + AG.frame_audio_task_count + tick) * (AG.audio_random_seed + 0x01234567); + get = (get << 1) + oldGetCount + (get & 1); + oldGetCount = tick; + return get; +} + +extern void Nas_InitGAudio(void) { + Nap_AudioPortInit(); +} + +extern s32 CreateAudioTask(Acmd* cmds, s16* pSamples, u32 nSamples, s32 param_4) { + s32 i; + s32 max; + + AG.audio_random_seed = (AG.audio_random_seed + AG.frame_audio_task_count) * OSGetTick(); + AG.frame_audio_task_count++; + + Z_osSendMesg(AG.task_start_mq_p, (OSMesg)AG.frame_audio_task_count, OS_MESG_NOBLOCK); + + if (NA_VFRAME_CALLBACK != nullptr) { + (*NA_VFRAME_CALLBACK)(); + } + + for (i = 0; i < AG.current_frame_dma_count; i++) { + Z_osRecvMesg(&AG.cur_audio_frame_dma_queue, nullptr, OS_MESG_NOBLOCK); + } + + max = AG.cur_audio_frame_dma_queue.validCount; + if (max != 0) { + for (i = 0; i < max; i++) { + Z_osRecvMesg(&AG.cur_audio_frame_dma_queue, nullptr, OS_MESG_NOBLOCK); + } + } + + AG.current_frame_dma_count = 0; + Nas_WaveDmaFrameWork(); + Nas_BgDmaFrameWork(AG.reset_status); + MK_FrameWork(); + + if (AG.reset_status != 0 && Nas_SpecChange() == 0) { + if (AG.reset_status == 0) { + Z_osSendMesg(AG.spec_change_mq_p, (OSMesg)AG.spec_id, OS_MESG_NOBLOCK); + } + + return 0; + } else if (AG.reset_timer > 16) { + return 0; + } else { + s32 port_cmds; + s32 processed_cmds; + + if (AG.reset_timer != 0) { + AG.reset_timer++; + } + + port_cmds = 0; + if (AG.reset_status == 0) { + u32 msg; + + while (Z_osRecvMesg(AG.thread_cmd_proc_mq_p, (OSMesg*)&msg, OS_MESG_NOBLOCK) != -1) { + Nap_AudioPortProcess(msg); + port_cmds++; + } + + if (port_cmds == 0 && AG.thread_cmd_queue_finished) { + Nap_SendStart(); + } + } + + Nas_smzAudioFrame(cmds, &processed_cmds, pSamples, nSamples); + return processed_cmds; + } +} diff --git a/src/static/jaudio_NES/internal/track.c b/src/static/jaudio_NES/internal/track.c new file mode 100644 index 00000000..30a95b81 --- /dev/null +++ b/src/static/jaudio_NES/internal/track.c @@ -0,0 +1,2252 @@ +#include "jaudio_NES/track.h" + +#include "jaudio_NES/audiotable.h" +#include "jaudio_NES/channel.h" +#include "jaudio_NES/effect.h" +#include "jaudio_NES/memory.h" +#include "jaudio_NES/sub_sys.h" +#include "jaudio_NES/system.h" +#include "dolphin/os.h" + +#define COMMON_SCRIPT_END -1 + +/** + * SCOM_TABLE is a table for each sequence instruction + * that contains both how many arguments an instruction takes, as well + * as the type of each argument + * + * SCOM_TABLE is bitpacked as follows: + * abcUUUnn + * + * n - number of arguments that the sequence instruction takes + * + * a - bitFlag for the type of arg0 if it exists + * b - bitFlag for the type of arg1 if it exists + * c - bitFlag for the type of arg2 if it exists + * + * bitFlag on - argument is s16 + * bitFlag off - argument is u8 + * + * U - Unused + */ + +// CMD_ARGS_(NUMBER_OF_ARGS) +#define CMD_ARGS_0() 0 +#define CMD_ARGS_1(arg0Type) (((sizeof(arg0Type) - 1) << 7) | 1) +#define CMD_ARGS_2(arg0Type, arg1Type) (((sizeof(arg0Type) - 1) << 7) | ((sizeof(arg1Type) - 1) << 6) | 2) +#define CMD_ARGS_3(arg0Type, arg1Type, arg2Type) \ + (((sizeof(arg0Type) - 1) << 7) | ((sizeof(arg1Type) - 1) << 6) | ((sizeof(arg2Type) - 1) << 5) | 3) + +#define SCOM_TYPE_U8 0 +#define SCOM_TYPE_S16 1 + +static u8 SCOM_TABLE[] = { + CMD_ARGS_1(s16), // 0xA0 (channel:) + CMD_ARGS_0(), // 0xA1 (channel:) + CMD_ARGS_1(s16), // 0xA2 (channel:) + CMD_ARGS_0(), // 0xA3 (channel:) + CMD_ARGS_1(u8), // 0xA4 (channel:) + CMD_ARGS_0(), // 0xA5 (channel:) + CMD_ARGS_2(u8, s16), // 0xA6 (channel:) + CMD_ARGS_1(u8), // 0xA7 (channel:) + CMD_ARGS_0(), // 0xA8 (channel: random range large) THIS ONE + CMD_ARGS_0(), // 0xA9 () + CMD_ARGS_0(), // 0xAA () + CMD_ARGS_0(), // 0xAB () + CMD_ARGS_0(), // 0xAC () + CMD_ARGS_0(), // 0xAD () + CMD_ARGS_0(), // 0xAE () + CMD_ARGS_0(), // 0xAF () + CMD_ARGS_1(s16), // 0xB0 (channel: set filter) + CMD_ARGS_0(), // 0xB1 (channel: clear filter) + CMD_ARGS_1(s16), // 0xB2 (channel: dynread sequence large) + CMD_ARGS_1(u8), // 0xB3 (channel: load filter) + CMD_ARGS_0(), // 0xB4 (channel: set dyntable large) + CMD_ARGS_0(), // 0xB5 (channel: read dyntable large) + CMD_ARGS_0(), // 0xB6 (channel: read dyntable) + CMD_ARGS_1(s16), // 0xB7 (channel: random large) + CMD_ARGS_1(u8), // 0xB8 (channel: random) + CMD_ARGS_1(u8), // 0xB9 (channel: set velocity random variance) + CMD_ARGS_1(u8), // 0xBA (channel: set gatetime random variance) + CMD_ARGS_2(u8, s16), // 0xBB (channel:) + CMD_ARGS_1(s16), // 0xBC (channel: add large) + CMD_ARGS_1(s16), // 0xBD (channel:) + CMD_ARGS_1(u8), // 0xBE (channel:) + CMD_ARGS_0(), // 0xBF () + CMD_ARGS_0(), // 0xC0 () + CMD_ARGS_1(u8), // 0xC1 (channel: set instrument) + CMD_ARGS_1(s16), // 0xC2 (channel: set dyntable) + CMD_ARGS_0(), // 0xC3 (channel: large notes off) + CMD_ARGS_0(), // 0xC4 (channel: large notes on) + CMD_ARGS_0(), // 0xC5 (channel: dyn set dyntable) + CMD_ARGS_1(u8), // 0xC6 (channel: set soundFont) + CMD_ARGS_2(u8, s16), // 0xC7 (channel: write into sequence script) + CMD_ARGS_1(u8), // 0xC8 (channel: subtract -> set value) + CMD_ARGS_1(u8), // 0xC9 (channel: `bit and` -> set value) + CMD_ARGS_1(u8), // 0xCA (channel: set mute behavior) + CMD_ARGS_1(s16), // 0xCB (channel: read sequence -> set value) + CMD_ARGS_1(u8), // 0xCC (channel: set value) + CMD_ARGS_1(u8), // 0xCD (channel: disable channel) + CMD_ARGS_1(s16), // 0xCE (channel:) + CMD_ARGS_1(s16), // 0xCF (channel: write large into sequence script) + CMD_ARGS_1(u8), // 0xD0 (channel: stereo headset effects) + CMD_ARGS_1(u8), // 0xD1 (channel: set note allocation policy) + CMD_ARGS_1(u8), // 0xD2 (channel: set sustain) + CMD_ARGS_1(u8), // 0xD3 (channel: large bend pitch) + CMD_ARGS_1(u8), // 0xD4 (channel: set reverb) + CMD_ARGS_1(u8), // 0xD5 () + CMD_ARGS_1(u8), // 0xD6 () + CMD_ARGS_1(u8), // 0xD7 (channel: set vibrato rate) + CMD_ARGS_1(u8), // 0xD8 (channel: set vibrato depth) + CMD_ARGS_1(u8), // 0xD9 (channel: set decay index) + CMD_ARGS_1(s16), // 0xDA (channel: set envelope) + CMD_ARGS_1(u8), // 0xDB (channel: transpose) + CMD_ARGS_1(u8), // 0xDC (channel: set pan mix) + CMD_ARGS_1(u8), // 0xDD (channel: set pan) + CMD_ARGS_1(s16), // 0xDE (channel: set freqscale) + CMD_ARGS_1(u8), // 0xDF (channel: set volume) + CMD_ARGS_1(u8), // 0xE0 (channel: set volume scale) + CMD_ARGS_3(u8, u8, u8), // 0xE1 (channel: set vibratorate linear) + CMD_ARGS_3(u8, u8, u8), // 0xE2 (channel: set vibrato depth linear) + CMD_ARGS_1(u8), // 0xE3 (channel: set vibrato delay) + CMD_ARGS_0(), // 0xE4 (channel: dyncall) + CMD_ARGS_1(u8), // 0xE5 (channel: set reverb index) + CMD_ARGS_1(u8), // 0xE6 (channel: set book offset) + CMD_ARGS_1(s16), // 0xE7 (channel:) + CMD_ARGS_3(u8, u8, u8), // 0xE8 (channel:) + CMD_ARGS_1(u8), // 0xE9 (channel: set note priority) + CMD_ARGS_0(), // 0xEA (channel: stop script) + CMD_ARGS_2(u8, u8), // 0xEB (channel: set soundFont and instrument) + CMD_ARGS_0(), // 0xEC (channel: reset vibrato) + CMD_ARGS_1(u8), // 0xED (channel: set hilo gain) + CMD_ARGS_1(u8), // 0xEE (channel: small bend pitch) + CMD_ARGS_2(s16, u8), // 0xEF () + CMD_ARGS_0(), // 0xF0 (channel: unreserve notes) + CMD_ARGS_1(u8), // 0xF1 (channel: reserve notes) + // Control flow instructions (>= 0xF2) can only have 0 or 1 args + CMD_ARGS_1(u8), // 0xF2 (branch relative if less than zero) + CMD_ARGS_1(u8), // 0xF3 (branch relative if equal to zero) + CMD_ARGS_1(u8), // 0xF4 (jump relative) + CMD_ARGS_1(s16), // 0xF5 (branch if greater than or equal to zero) + CMD_ARGS_0(), // 0xF6 (break) + CMD_ARGS_0(), // 0xF7 (loop end) + CMD_ARGS_1(u8), // 0xF8 (loop) + CMD_ARGS_1(s16), // 0xF9 (branch if less than zero) + CMD_ARGS_1(s16), // 0xFA (branch if equal to zero) + CMD_ARGS_1(s16), // 0xFB (jump) + CMD_ARGS_1(s16), // 0xFC (call and jump to a function) + CMD_ARGS_0(), // 0xFD (delay n frames) + CMD_ARGS_0(), // 0xFE (delay 1 frame) + CMD_ARGS_0(), // 0xFF (end script) +}; + +#define SCOM_GET_ARG_NUM(cmd) (SCOM_TABLE[(cmd)] & 3) +#define SCOM_GET_TYPE(cmd, argno) (SCOM_TABLE[(cmd)] & (1 << (7 - (argno & 3)))) + +static u8 Nas_ReadByteData(macro* macro); +static s16 Nas_ReadWordData(macro* macro); +static u16 Nas_ReadLengthData(macro* macro); +static void __Stop_Note(note* n); +static s32 __SetNote(note* n, s32 cmd); +static s32 __Command_Seq(note* n); +static s32 __SetVoice(note* n, s32 cmd); +static s32 __SetChannel(note* n, s32 cmd); +static u8 Nas_ProgramChanger(sub* subtrack, u8 prog_id, voicetable** inst_pp, env* adsr_env); + +static u16 Convert_Com(macro* macro, u8 cmd) { + u16 val = 0; + + if ((u8)SCOM_GET_ARG_NUM(cmd - 0xA0) == 1) { + if (SCOM_GET_TYPE(cmd - 0xA0, 0) == SCOM_TYPE_U8) { + val = Nas_ReadByteData(macro); + } else { + val = Nas_ReadWordData(macro); + } + } + + return val; +} + +static s32 Common_Com(group* group, macro* macro, s32 cmd, s32 arg) { + u8 iters; + u16 abs; + s8 rel; + + switch (cmd) { + case SEQCMD_STOP_SCRIPT: + if (macro->depth == 0) { + return COMMON_SCRIPT_END; + } + + macro->pc = macro->stack[--macro->depth]; + break; + case SEQCMD_DELAY_N_FRAMES: + return Nas_ReadLengthData(macro); + case SEQCMD_DELAY_1_FRAME: + return 1; + case SEQCMD_CALL: + macro->stack[macro->depth++] = macro->pc; + macro->pc = group->seq_data + (arg & 0xFFFF); + break; + case SEQCMD_LOOP: + macro->remaining_loop_iters[macro->depth] = arg & 0xFF; + macro->stack[macro->depth++] = macro->pc; + break; + case SEQCMD_LOOP_END: + iters = macro->remaining_loop_iters[macro->depth - 1]; + iters--; + macro->remaining_loop_iters[macro->depth - 1] = iters; + if (iters != 0) { + macro->pc = macro->stack[macro->depth - 1]; + } else { + macro->depth--; + } + break; + case SEQCMD_BREAK: + macro->depth--; + break; + case SEQCMD_BRANCH_ABS_GREQ_ZERO: + case SEQCMD_BRANCH_ABS_NOT_EQ_ZERO: + case SEQCMD_BRANCH_ABS_EQ_ZERO: + case SEQCMD_BRANCH_ABS: + abs = arg & 0xFFFF; + if (cmd == SEQCMD_BRANCH_ABS_EQ_ZERO && macro->value != 0) { + break; + } else if (cmd == SEQCMD_BRANCH_ABS_NOT_EQ_ZERO && macro->value >= 0) { + break; + } else if (cmd == SEQCMD_BRANCH_ABS_GREQ_ZERO && macro->value < 0) { + break; + } else { + macro->pc = group->seq_data + abs; + } + break; + case SEQCMD_BRANCH_REL_NOT_EQ_ZERO: + case SEQCMD_BRANCH_REL_EQ_ZERO: + case SEQCMD_BRANCH_REL: + rel = (s8)(arg & 0xFF); + if (cmd == SEQCMD_BRANCH_REL_EQ_ZERO && macro->value != 0) { + break; + } else if (cmd == SEQCMD_BRANCH_REL_NOT_EQ_ZERO && macro->value >= 0) { + break; + } else { + macro->pc += rel; + } + break; + } + + return 0; +} + +static void Nas_InitSubTrack(sub* subtrack) { + s32 i; + + if (subtrack != &AG.null_sub_track) { + subtrack->transposition = 0; + subtrack->enabled = FALSE; + subtrack->finished = FALSE; + subtrack->stop_script = FALSE; + // subtrack->muted = FALSE; + subtrack->has_instrument = FALSE; + subtrack->stereo_effects = FALSE; + subtrack->large_notes = FALSE; + subtrack->book_ofs = 0; + subtrack->stereo_phase.asU8 = 0; + subtrack->changes.as_byte = 0xFF; + subtrack->macro_player.depth = 0; + subtrack->volume = 1.0f; + subtrack->volume_scale = 1.0f; + subtrack->new_pan = 64; + subtrack->frequency_scale = 1.0f; + subtrack->pan_channel_weight = 128; + subtrack->surround_effect_idx = 0xFF; + subtrack->velocity_random_variance = 0; + subtrack->gate_time_random_variance = 0; + subtrack->channel = nullptr; + subtrack->reverb_idx = 0; + subtrack->target_reverb_vol = 0; + subtrack->gain = 0; + subtrack->note_priority = 3; + subtrack->priority2 = 1; + subtrack->delay = 0; + + subtrack->adsr_env.envelope = DEFAULT_ENV; + subtrack->adsr_env.decay_idx = 240; + subtrack->adsr_env.sustain = 0; + + subtrack->vibrato_params.rate_target = 2048; + subtrack->vibrato_params.rate_start = 2048; + subtrack->vibrato_params.depth_target = 0; + subtrack->vibrato_params.depth_start = 0; + subtrack->vibrato_params.rate_change_delay = 0; + subtrack->vibrato_params.depth_change_delay = 0; + subtrack->vibrato_params.delay = 0; + + subtrack->filter = nullptr; + subtrack->comb_filter_gain = 0; + subtrack->comb_filter_size = 0; + + for (i = 0; i < ARRAY_COUNT(subtrack->port); i++) { + subtrack->port[i] = -1; + } + + subtrack->unused = FALSE; + Nas_InitChNode(&subtrack->channel_node); + subtrack->sample_start_pos = 0; + subtrack->_E0 = 0; + subtrack->sfx_state = nullptr; + } +} + +static s32 Nas_EntryNoteTrack(sub* subtrack, int note_idx) { + note* entry_note; + + if (subtrack->note_layers[note_idx] == nullptr) { + entry_note = (note*)Nas_GetList(&AG.note_link); + subtrack->note_layers[note_idx] = entry_note; + if (entry_note == nullptr) { + subtrack->note_layers[note_idx] = nullptr; + return -1; + } + } else { + Nas_Release_Channel(subtrack->note_layers[note_idx]); + } + + entry_note = subtrack->note_layers[note_idx]; + entry_note->sub_track = subtrack; + entry_note->adsr_env = subtrack->adsr_env; + entry_note->adsr_env.decay_idx = 0; + entry_note->target_reverb_volume = subtrack->target_reverb_vol; + entry_note->enabled = TRUE; + entry_note->finished = FALSE; + entry_note->muted = FALSE; + entry_note->continuous = FALSE; + entry_note->_00bit3 = FALSE; + entry_note->ignore_drum_pan = FALSE; + entry_note->_00bit1 = FALSE; + entry_note->note_properties_need_init = FALSE; + entry_note->stereo_phase.asU8 = 0; + entry_note->portamento_sweep.mode = 0; + entry_note->macro_player.depth = 0; + entry_note->gate_time = 128; + + entry_note->frequency_scale = 1.0f; + entry_note->bend = 1.0f; + entry_note->velocity_square2 = 0.0f; + + entry_note->pan = 64; + entry_note->surround_effect_idx = 128; + entry_note->transposition = 0; + entry_note->delay = 0; + entry_note->gate_delay = 0; + entry_note->delay2 = 0; + entry_note->channel = nullptr; + entry_note->instrument = nullptr; + entry_note->inst_or_wave = -1; + entry_note->_0A.asU16 = 0xFFFF; + + entry_note->vibrato_params.rate_target = 2048; + entry_note->vibrato_params.rate_start = 2048; + entry_note->vibrato_params.depth_target = 0; + entry_note->vibrato_params.depth_start = 0; + entry_note->vibrato_params.rate_change_delay = 0; + entry_note->vibrato_params.depth_change_delay = 0; + entry_note->vibrato_params.delay = 0; + + return 0; +} + +extern void Nas_ReleaseNoteTrack(note* note) { + if (note != nullptr) { + if (note->sub_track != &AG.null_sub_track && note->sub_track->group->flags.finished == TRUE) { + Nas_Release_Channel_Force(note); + } else { + Nas_Release_Channel(note); + } + + note->enabled = FALSE; + note->finished = TRUE; + } +} + +static void Nas_CloseNoteTrack(sub* subtrack, s32 note_idx) { + note* note = subtrack->note_layers[note_idx]; + + if (note != nullptr) { + Nas_AddList(&AG.note_link, ¬e->link); + Nas_ReleaseNoteTrack(note); + subtrack->note_layers[note_idx] = nullptr; + } +} + +extern void Nas_ReleaseSubTrack(sub* subtrack) { + s32 i; + + subtrack->finished = TRUE; + for (i = 0; i < ARRAY_COUNT(subtrack->note_layers); i++) { + Nas_CloseNoteTrack(subtrack, i); + } + + Nas_DeAllocAllVoices(&subtrack->channel_node); + subtrack->enabled = FALSE; +} + +static void Nas_AllocSub(group* grp, u16 subtrack_enable_flags) { + s32 i; + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + if ((subtrack_enable_flags & 1) != 0) { + sub* subtrack = grp->subtracks[i]; + + subtrack->bank_id = grp->bank_id; + subtrack->mute_flags = grp->mute_flags; + subtrack->note_alloc_policy = grp->note_alloc_policy; + } + + subtrack_enable_flags = subtrack_enable_flags >> 1; + } +} + +static void Nas_DeAllocSub(group* grp, u16 subtrack_dealloc_flags) { + s32 i; + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + sub* subtrack = grp->subtracks[i]; + + if (subtrack != &AG.null_sub_track) { + Nas_ReleaseSubTrack(subtrack); + } + } +} + +static void Nas_OpenSub(group* grp, u8 subtrack_idx, u8* script) { + sub* subtrack = grp->subtracks[subtrack_idx]; + s32 i; + + subtrack->enabled = TRUE; + subtrack->finished = FALSE; + subtrack->macro_player.depth = 0; + subtrack->macro_player.pc = script; + subtrack->delay = 0; + + for (i = 0; i < ARRAY_COUNT(subtrack->note_layers); i++) { + if (subtrack->note_layers[i] != nullptr) { + Nas_CloseNoteTrack(subtrack, i); + } + } +} + +extern void Nas_ReleaseGroup_Force(group* grp) { + grp->flags.finished = TRUE; + Nas_ReleaseGroup(grp); +} + +extern void Nas_ReleaseGroup(group* grp) { + Nas_DeAllocSub(grp, AUDIO_GROUP_ALL_SUBTRACKS); + Nas_DeAllocAllVoices(&grp->channel_node); + if (grp->flags.enabled) { + grp->flags.enabled = FALSE; + grp->flags.finished = TRUE; + + if (Nas_CheckIDseq(grp->seq_id)) { + Nas_WriteIDseq(grp->seq_id, LOAD_STATUS_DISCARDABLE); + } + + if (Nas_CheckIDbank(grp->bank_id)) { + Nas_WriteIDbank(grp->bank_id, LOAD_STATUS_MAYBE_DISCARDABLE); + } + + if (AG.bank_heap.auto_heap.entries[0].id == grp->bank_id) { + AG.bank_heap.auto_heap.use_entry_idx = 1; + } else if (AG.bank_heap.auto_heap.entries[1].id == grp->bank_id) { + AG.bank_heap.auto_heap.use_entry_idx = 0; + } + } +} + +extern void Nas_AddList(link* root, link* list) { + if (list->next != nullptr) { + static BOOL first = TRUE; + + if (first) { + OSReport("GLOBAL USE %x\n", &AG.channel_node.useList); + OSReport("GLOBAL FREE %x\n", &AG.channel_node.freeList); + OSReport("GLOBAL RELEASE %x\n", &AG.channel_node.releaseList); + OSReport("GLOBAL RELWAIT %x\n", &AG.channel_node.relwaitList); + first = FALSE; + } + + OSReport("List %x\n", list); + OSReport("Root %x\n", root); + } else { + root->next->prev = list; + list->next = root->next; + list->prev = root; + root->next = list; + root->numAfter++; + list->pNode = root->pNode; + } +} + +extern void* Nas_GetList(link* root) { + link* list = root->next; + + if (list == root) { + return nullptr; + } + + list->next->prev = root; + root->next = list->next; + list->next = nullptr; + root->numAfter--; + return list->pData; +} + +static void Nas_InitNoteList(void) { + s32 i; + + AG.note_link.next = &AG.note_link; + AG.note_link.prev = &AG.note_link; + AG.note_link.numAfter = 0; + AG.note_link.pNode = nullptr; + + for (i = 0; i < AUDIO_NOTE_MAX; i++) { + AG.notes[i].link.pData = &AG.notes[i]; + AG.notes[i].link.next = nullptr; + Nas_AddList(&AG.note_link, &AG.notes[i].link); + } +} + +static u8 Nas_ReadByteData(macro* m) { + return *m->pc++; +} + +static s16 Nas_ReadWordData(macro* m) { + s16 data = (*m->pc++) << 8; + + data = data | (*m->pc++); + return data; +} + +#define Nas_LENGTH_IS_U16(d) ((d) & 0x80) +static u16 Nas_ReadLengthData(macro* m) { + u16 data = (*m->pc++); + + if (Nas_LENGTH_IS_U16(data)) { + data = (data << 8) & 0x7F00; + data = (*m->pc++) | data; + } + + return data; +} +#undef Nas_LENGTH_IS_U16 + +static void Nas_NoteSeq(note* n) { + if (n->enabled) { + if (n->delay > 1) { + n->delay--; + + if (n->muted == FALSE && n->delay <= n->gate_delay) { + Nas_Release_Channel(n); + n->muted = TRUE; + } + } else { + s32 cmd; + + __Stop_Note(n); + + do { + cmd = __Command_Seq(n); + if (cmd == COMMON_SCRIPT_END) { + return; + } + + cmd = __SetNote(n, cmd); + } while (cmd == -1 && n->delay == 0); + + if (cmd != -1) { + cmd = __SetVoice(n, cmd); + } + + if (cmd != -1) { + __SetChannel(n, cmd); + } + + if (n->muted == TRUE) { + if (n->channel != nullptr || n->continuous) { + Nas_Release_Channel(n); + } + } + } + } +} + +static void __Stop_Note(note* n) { + s32 mode; + + if (n->continuous == FALSE) { + Nas_Release_Channel(n); + } else if (n->channel != nullptr && n->channel->playback_ch.wanted_parent_note == n) { + Nas_Release_Channel(n); + } + + switch (AUDIO_SWEEP_MODE(n->portamento_sweep)) { + case PORTAMENTO_MODE_1: + case PORTAMENTO_MODE_2: + case PORTAMENTO_MODE_6: + n->portamento_sweep.mode = 0; + break; + } + + n->note_properties_need_init = TRUE; +} + +static s32 __SetChannel(note* n, s32 same_sample) { + if (n->continuous == TRUE && n->_00bit1 == TRUE) { + return 0; + } + + if (n->continuous != TRUE || n->channel == nullptr || n->_00bit3 == FALSE || same_sample != TRUE || + n->channel->playback_ch.current_parent_note != n) { + if (same_sample == FALSE) { + Nas_Release_Channel(n); + } + + n->channel = Nas_AllocationOnRequest(n); + if (n->channel != nullptr) { + if (n->channel->playback_ch.current_parent_note == n) { + Nas_ChannelModInit(n->channel); + } + } + } + + if (n->channel != nullptr && n->channel->playback_ch.current_parent_note == n) { + Nas_SweepInit(n->channel); + } + + return 0; +} + +static s32 __Command_Seq(note* n) { + macro* m = &n->macro_player; + sub* subtrack = n->sub_track; + group* grp = subtrack->group; + sweep* port_sweep; + u8 cmd; + u8 cmdArgU8; + u32 tmp; + u16 cmdArgU16; + u16 velocity; + + while (TRUE) { + cmd = Nas_ReadByteData(m); + + if (cmd <= 0xC0) { + return cmd; + } + + if (cmd >= SEQCMD_BRANCH_REL_NOT_EQ_ZERO) { + cmdArgU16 = Convert_Com(m, cmd); + + if (Common_Com(grp, m, cmd, cmdArgU16) == 0) { + continue; // keep processing + } + + /* stop processing script */ + Nas_ReleaseNoteTrack(n); + return COMMON_SCRIPT_END; + } + + switch (cmd) { + case 0xC1: + case 0xCA: + cmdArgU8 = *m->pc++; + if (cmd == 0xC1) { + n->velocity_square = (f32)(cmdArgU8 * cmdArgU8) / (f32)(127 * 127); + } else { + n->pan = cmdArgU8; + } + break; + case 0xC2: + case 0xC9: + cmdArgU8 = *m->pc++; + if (cmd == 0xC9) { + n->gate_time = cmdArgU8; + } else { + n->transposition = cmdArgU8; + } + break; + case 0xC4: + case 0xC5: + n->continuous = cmd == 0xC4; + n->_00bit1 = FALSE; + Nas_Release_Channel(n); + break; + case 0xC3: + n->short_note_default_delay = Nas_ReadLengthData(m); + break; + case 0xC6: + cmdArgU8 = Nas_ReadByteData(m); + if (cmdArgU8 >= 0x7E) { + if (cmdArgU8 == 0x7E) { + // effect/sfx + n->inst_or_wave = 1; + } else if (cmdArgU8 == 0x7F) { + // percussion/drum + n->inst_or_wave = 0; + } else { + // synth wave + n->inst_or_wave = cmdArgU8; + n->instrument = nullptr; + } + + if (cmdArgU8 == 0xFF) { + n->adsr_env.decay_idx = 0; + } + } else { + // voice/instrument + cmd = Nas_ProgramChanger(subtrack, cmdArgU8, &n->instrument, &n->adsr_env); + n->inst_or_wave = cmd; + if (cmd == 0) { + n->inst_or_wave = 0xFF; + } + } + break; + case 0xC7: + n->portamento_sweep.mode = Nas_ReadByteData(m); + cmdArgU8 = Nas_ReadByteData(m); + cmdArgU8 = cmdArgU8 + subtrack->transposition; + cmdArgU8 = cmdArgU8 + n->transposition; + cmdArgU8 = cmdArgU8 + grp->transposition; + + switch (AUDIO_SWEEP_MODE(n->portamento_sweep)) { + case PORTAMENTO_MODE_6: + case PORTAMENTO_MODE_7: + break; + default: + if ((u8)cmdArgU8 > 127) { + cmdArgU8 = (u8)0; + } + break; + } + + n->portamento_target_note = (u8)cmdArgU8; + if (AUDIO_SWEEP_IS_SPECIAL(n->portamento_sweep)) { + n->portamento_time = *m->pc++; + } else { + n->portamento_time = Nas_ReadLengthData(m); + } + break; + case 0xC8: + n->portamento_sweep.mode = PORTAMENTO_MODE_OFF; + break; + case 0xCB: + n->adsr_env.envelope = (envdat*)(grp->seq_data + (Nas_ReadWordData(m) & 0xFFFF)); + // fallthrough 0xCB -> 0xCF + case 0xCF: + n->adsr_env.decay_idx = Nas_ReadByteData(m); + break; + case 0xCC: + n->ignore_drum_pan = TRUE; + break; + case 0xCD: + n->stereo_phase.asU8 = Nas_ReadByteData(m); + break; + case 0xCE: + cmdArgU8 = 128 + Nas_ReadByteData(m); + n->bend = PCENTTABLE2[cmdArgU8]; + break; + case 0xF0: + cmdArgU16 = Nas_ReadWordData(m); + n->_0A.asU16 &= cmdArgU16 ^ 0xFFFF; + break; + case 0xF1: + n->surround_effect_idx = Nas_ReadByteData(m); + break; + default: + switch (cmd & 0xF0) { + case 0xD0: + velocity = grp->short_note_velocity_tbl[cmd & 0xF]; + n->velocity_square = (f32)(velocity * velocity) / (f32)(127 * 127); + break; + case 0xE0: + n->gate_time = grp->short_note_gate_time_tbl[cmd & 0xF]; + break; + } + } + } +} + +static s32 __SetVoice(note* n, s32 arg) { + u8 semitone; + s32 same_sample; + s32 inst_or_wave; + sweep* port_sweep; + f32 freq_scale; + f32 freq_scale2; + wtstr* tuned_sample; + voicetable* instrument; + percvoicetable* percussion; + veffvoicetable* effect; + sub* subtrack; + group* grp; + u16 effect_id; + s32 velocity; + s32 semitone2; + s32 speed; + s32 speed2; + f32 tuning; + f32 t0; + f32 t1; + f32 freq0; + f32 freq1; + f32 time; + + semitone = arg; + same_sample = TRUE; + inst_or_wave = n->inst_or_wave; + subtrack = n->sub_track; + grp = subtrack->group; + + if (inst_or_wave == 0xFF) { + if (subtrack->has_instrument == FALSE) { + return COMMON_SCRIPT_END; + } + + inst_or_wave = subtrack->inst_or_wave; + } + + switch (inst_or_wave) { + case VOICE_TYPE_PERCUSSION: + semitone = semitone + n->transposition; + if (n->_0A.flags.add_subtrack_transposition) { + semitone = semitone + subtrack->transposition; + } + + n->semitone = semitone; + percussion = PercToPp(subtrack->bank_id, semitone); + + /* Mute note and exit if percussion doesn't exist or the subtrack is muted */ + if (percussion == nullptr || subtrack->muted) { + n->muted = TRUE; + n->delay2 = n->delay; + return COMMON_SCRIPT_END; + } + + n->adsr_env.envelope = percussion->envelope; + n->adsr_env.decay_idx = percussion->adsr_decay_idx; + if (n->ignore_drum_pan == FALSE) { + n->pan = percussion->pan; + } + n->tuned_sample = &percussion->tuned_sample; + n->frequency_scale = n->tuned_sample->tuning; + break; + case VOICE_TYPE_SOUND_EFF: + effect_id = (semitone + (n->transposition << 6)); + n->semitone = semitone; + effect = VpercToVep(subtrack->bank_id, effect_id); + + /* Mute note and exit if sfx doesn't exist or the subtrack is muted */ + if (effect == nullptr || subtrack->muted) { + n->muted = TRUE; + n->delay2 = n->delay + 1; + return COMMON_SCRIPT_END; + } + + n->tuned_sample = &effect->tuned_sample; + n->frequency_scale = n->tuned_sample->tuning; + break; + default: // voices/instruments + semitone = semitone + grp->transposition + n->transposition; + if (n->_0A.flags.add_subtrack_transposition) { + semitone = semitone + subtrack->transposition; + } + + n->semitone = semitone; + if (semitone > 127 || subtrack->muted) { + n->muted = TRUE; + if (subtrack->muted) { + subtrack->note_semitone = n->semitone; + } + + return COMMON_SCRIPT_END; + } + + if (n->inst_or_wave == 0xFF) { + instrument = subtrack->voicetable; + } else { + instrument = n->instrument; + } + + if (n->portamento_sweep.mode != PORTAMENTO_MODE_OFF) { + port_sweep = &n->portamento_sweep; + + switch (AUDIO_SWEEP_MODE(*port_sweep)) { + case PORTAMENTO_MODE_6: + case PORTAMENTO_MODE_7: + velocity = semitone; + break; + default: + velocity = semitone > n->portamento_target_note ? semitone : n->portamento_target_note; + break; + } + + // velocity = + if (instrument != nullptr) { + tuned_sample = NoteToVoice(instrument, velocity); + same_sample = n->tuned_sample == tuned_sample; + n->tuned_sample = tuned_sample; + tuning = n->tuned_sample->tuning; + } else { + n->tuned_sample = nullptr; + tuning = 1.0f; + if (inst_or_wave >= 0xC0) { + n->tuned_sample = &AG.synth_delay[inst_or_wave - 0xC0].tuned_sample; + } + } + + t0 = tuning * PITCHTABLE[semitone]; + semitone2 = (s8)n->portamento_target_note; + switch (AUDIO_SWEEP_MODE(*port_sweep)) { + case PORTAMENTO_MODE_6: + case PORTAMENTO_MODE_7: + semitone2 += semitone; + break; + } + if (semitone2 < 0) { + semitone2 = 0; + } + if (semitone2 > 127) { + semitone2 = 127; + } + + t1 = tuning * PITCHTABLE[semitone2]; + + switch (AUDIO_SWEEP_MODE(*port_sweep)) { + case PORTAMENTO_MODE_1: + case PORTAMENTO_MODE_3: + case PORTAMENTO_MODE_5: + case PORTAMENTO_MODE_6: + case PORTAMENTO_MODE_7: + freq_scale2 = t0; + freq_scale = t1; + break; + case PORTAMENTO_MODE_2: + case PORTAMENTO_MODE_4: + freq_scale = t0; + freq_scale2 = t1; + break; + default: + freq_scale = t0; + freq_scale2 = t0; + break; + } + + port_sweep->extent = (freq_scale2 / freq_scale) - 1.0f; + + if (AUDIO_SWEEP_IS_SPECIAL(*port_sweep)) { + speed = (grp->tempo * 0x8000) / AG.max_tempo; + + if (n->delay != 0) { + speed = (speed * 0x100) / (n->delay * n->portamento_time); + } + } else { + speed = (2 * 0x10000) / (n->portamento_time * AG.audio_params.updates_per_frame); + } + + if (speed >= 0x7FFF) { + speed = 0x7FFF; + } else if (speed <= 0) { + speed = 1; + } + + port_sweep->speed = speed; + port_sweep->current = 0; + n->frequency_scale = freq_scale; + if (AUDIO_SWEEP_MODE(*port_sweep) == PORTAMENTO_MODE_5) { + n->portamento_target_note = semitone; + } + } else { + if (instrument != nullptr) { + tuned_sample = NoteToVoice(instrument, semitone); + same_sample = n->tuned_sample == tuned_sample; + n->tuned_sample = tuned_sample; + n->frequency_scale = PITCHTABLE[semitone] * n->tuned_sample->tuning; + } else { + n->tuned_sample = nullptr; + n->frequency_scale = PITCHTABLE[semitone]; + if (inst_or_wave >= 0xC0) { + n->tuned_sample = &AG.synth_delay[inst_or_wave - 0xC0].tuned_sample; + } + } + } + + break; + } + + n->delay2 = n->delay; + n->frequency_scale *= n->bend; + + if (n->delay == 0) { + if (n->tuned_sample != nullptr) { + time = n->tuned_sample->wavetable->loop->loop_end; + } else { + time = 0.0f; + } + + time *= grp->tempo; + time *= AG._2894; + time /= n->frequency_scale; + + if (time > (f32)0x7FFE) { + time = (f32)0x7FFE; + } + + n->delay = (u16)(s32)time + 1; + n->gate_delay = 0; + + if (n->portamento_sweep.mode != PORTAMENTO_MODE_OFF) { + if (AUDIO_SWEEP_IS_SPECIAL(*port_sweep)) { + speed2 = (grp->tempo * 0x8000) / AG.max_tempo; + speed2 = (speed2 * 0x100) / (n->delay * n->portamento_time); + if (speed2 >= 0x7FFF) { + speed2 = 0x7FFF; + } else if (speed2 <= 0) { + speed2 = 1; + } + + port_sweep->speed = speed2; + } + } + } + + subtrack->note_semitone = n->semitone; + return same_sample; +} + +static s32 __SetNote(note* n, s32 cmd) { + macro* m = &n->macro_player; + u16 delay; + s32 velocity; + sub* subtrack = n->sub_track; + group* grp = subtrack->group; + s32 int_delta; + f32 float_delta; + + if (cmd == 0xC0) { + n->delay = Nas_ReadLengthData(m); + n->muted = TRUE; + n->_00bit1 = FALSE; + return COMMON_SCRIPT_END; + } + + n->muted = FALSE; + if (subtrack->large_notes == TRUE) { + switch (cmd & 0xC0) { + case 0x00: + delay = Nas_ReadLengthData(m); + velocity = *m->pc++; + n->gate_time = *m->pc++; + n->last_delay = delay; + break; + case 0x40: + delay = Nas_ReadLengthData(m); + velocity = *m->pc++; + n->gate_time = 0; + n->last_delay = delay; + break; + case 0x80: + delay = n->last_delay; + velocity = *m->pc++; + n->gate_time = *m->pc++; + break; + } + + if (velocity > 127 || velocity < 0) { + velocity = 127; + } + + n->velocity_square = ((f32)velocity * (f32)velocity) / ((f32)127 * (f32)127); + cmd -= (cmd & 0xC0); + } else { + switch (cmd & 0xC0) { + case 0x00: + delay = Nas_ReadLengthData(m); + n->last_delay = delay; + break; + case 0x40: + delay = n->short_note_default_delay; + break; + case 0x80: + delay = n->last_delay; + break; + } + + cmd -= (cmd & 0xC0); + } + + if (subtrack->velocity_random_variance != 0) { + float_delta = n->velocity_square * (AG.audio_random_seed % subtrack->velocity_random_variance) / 100.0f; + if (AG.audio_random_seed & 0x8000) { + float_delta = -float_delta; + } + + n->velocity_square2 = n->velocity_square + float_delta; + if (n->velocity_square2 < 0.0f) { + n->velocity_square2 = 0.0f; + } else if (n->velocity_square2 > 1.0f) { + n->velocity_square2 = 1.0f; + } + } else { + n->velocity_square2 = n->velocity_square; + } + + n->delay = delay; + n->gate_delay = (n->gate_time * delay) >> 8; + + if (subtrack->gate_time_random_variance != 0) { + /* @BUG - should be gate_time_random_variance (longstanding bug) */ + int_delta = (n->gate_delay * (AG.audio_random_seed % subtrack->velocity_random_variance)) / 100; + if (AG.audio_random_seed & 0x4000) { + int_delta = -int_delta; + } + + n->gate_delay += int_delta; + if (n->gate_delay < 0) { + n->gate_delay = 0; + } else if (n->gate_delay > n->delay) { + n->gate_delay = n->delay; + } + } + + if (grp->flags.muted && (subtrack->mute_flags & (AUDIO_MUTE_FLAG_STOP_SUBTRACK | AUDIO_MUTE_FLAG_STOP_NOTE))) { + n->muted = TRUE; + return COMMON_SCRIPT_END; + } + + if (grp->skip_ticks != 0) { + n->muted = TRUE; + return COMMON_SCRIPT_END; + } + + return cmd; +} + +static void Nas_PriorityChanger(sub* subtrack, u8 prio) { + u8 prio0 = prio & 0xF; + u8 prio1; + + if (prio0) { + subtrack->note_priority = prio0; + } + + prio1 = (u8)(prio >> 4); + if (prio1) { + subtrack->priority2 = prio1; + } + + if (subtrack->note_priority < 2) { + subtrack->note_priority = 2; + } + + if (subtrack->priority2 < 1) { + subtrack->note_priority = 1; + } +} + +static u8 Nas_ProgramChanger(sub* subtrack, u8 prog_id, voicetable** inst_pp, env* adsr_env) { + voicetable* inst_p = ProgToVp(subtrack->bank_id, prog_id); + + if (inst_p == nullptr) { + *inst_pp = nullptr; + return 0; + } else { + adsr_env->envelope = inst_p->envelope; + adsr_env->decay_idx = inst_p->adsr_decay_idx; + *inst_pp = inst_p; + + prog_id += VOICE_TYPE_INSTRUMENT_START; + return prog_id; + } +} + +static void Nas_SubVoiceSet(sub* subtrack, u8 inst_id) { + if (inst_id >= 128) { + /* synth waves */ + subtrack->inst_or_wave = inst_id; + subtrack->voicetable = nullptr; + } else if (inst_id == 0x7F) { + /* percussion */ + subtrack->inst_or_wave = VOICE_TYPE_PERCUSSION; + subtrack->voicetable = (voicetable*)1; + } else if (inst_id == 0x7E) { + /* sound effect */ + subtrack->inst_or_wave = VOICE_TYPE_SOUND_EFF; + subtrack->voicetable = (voicetable*)2; + } else { + u8 inst_or_wave; + + /* instrument */ + inst_or_wave = Nas_ProgramChanger(subtrack, inst_id, &subtrack->voicetable, &subtrack->adsr_env); + subtrack->inst_or_wave = inst_or_wave; + if (inst_or_wave == 0) { + /* failed to load the instrument */ + subtrack->has_instrument = FALSE; + return; + } + } + + subtrack->has_instrument = TRUE; +} + +static void Nas_SubVolumeSet(sub* subtrack, u8 volume) { + subtrack->volume = (f32)(s32)volume / 127.0f; +} + +static void Nas_SubSeq(sub* subtrack) { + u8 cmd; + u8 cmdArgU8; + s32 i; + u8* data; + group* grp; + macro* m; + s16 temp1; + u16 cmdArgU16; + u32 cmdArgs[3]; + s8 cmdArgS8; + u8 lo_bits; + u8 hi_bits; + u8* seq_data; + u32 new_var2; + s32 new_var3; + + if (subtrack->stop_script == FALSE) { + grp = subtrack->group; + + if (grp->flags.muted && (subtrack->mute_flags & AUDIO_MUTE_FLAG_STOP_SCRIPT)) { + return; + } + + if (subtrack->delay > 1) { + subtrack->delay--; + } else { + /* Sub-Track sequence command process loop */ + while (TRUE) { + m = &subtrack->macro_player; + cmd = Nas_ReadByteData(m); + if (cmd >= 0xA0) { + /* Load command arguments */ + hi_bits = SCOM_TABLE[(u8)cmd - 0xA0]; + lo_bits = hi_bits & 3; + + for (i = 0; i < lo_bits; i++) { + if ((hi_bits & 0x80) == SCOM_TYPE_U8) { + cmdArgs[i] = Nas_ReadByteData(m); + } else { + cmdArgs[i] = Nas_ReadWordData(m); + } + + hi_bits = hi_bits << 1; + } + + if (cmd >= 0xF2) { + s32 delay = Common_Com(grp, m, cmd, cmdArgs[0]); + + if (delay != 0) { + if (delay == COMMON_SCRIPT_END) { + Nas_ReleaseSubTrack(subtrack); + } else { + subtrack->delay = delay; + } + + break; + } + } else { + switch ((u8)cmd) { + case 0xEA: // stop subtrack seq script + subtrack->stop_script = TRUE; + goto note_seq; + case 0xF1: // alloc voices + Nas_DeAllocAllVoices(&subtrack->channel_node); + Nas_AllocVoices(&subtrack->channel_node, cmdArgs[0] & 0xFF); + break; + case 0xF0: // dealloc voices + Nas_DeAllocAllVoices(&subtrack->channel_node); + break; + case 0xC2: // set dynamic table + subtrack->dyn_tbl = (unsigned char(*)[][2]) & grp->seq_data[(u16)cmdArgs[0]]; + break; + case 0xC5: // jump to entry in dynamic table + if (m->value != -1) { + data = (*subtrack->dyn_tbl)[m->value]; + cmdArgU16 = (u16)((data[0] << 8) + data[1]); + m->pc = (u8*)&grp->seq_data[cmdArgU16]; + } + break; + case 0xEB: // Load subtrack bank and set instruments + cmdArgU8 = cmdArgs[0]; + if (grp->bank_id != 0xFF) { + cmdArgU16 = AG.map_header[grp->seq_id]; + lo_bits = ((u8*)AG.map_header)[cmdArgU16]; + cmdArgU8 = ((u8*)AG.map_header)[cmdArgU16 + lo_bits - cmdArgU8]; + } + + if (Nas_SzCacheCheck(BANK_TABLE, CACHE_EITHER, cmdArgU8)) { + subtrack->bank_id = cmdArgU8; + } + + cmdArgs[0] = cmdArgs[1]; + // fallthrough 0xEB -> 0xC1 + case 0xC1: // Set subtrack voice + Nas_SubVoiceSet(subtrack, cmdArgs[0]); + break; + case 0xC3: // turn off large notes + subtrack->large_notes = FALSE; + break; + case 0xC4: // turn on large notes + subtrack->large_notes = TRUE; + break; + case 0xDF: // set volume + cmdArgU8 = (u8)cmdArgs[0]; + Nas_SubVolumeSet(subtrack, cmdArgU8); + subtrack->changes.flags.volume = TRUE; + break; + case 0xE0: // set volume scale + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->volume_scale = (f32)(s32)cmdArgU8 / 128.0f; + subtrack->changes.flags.volume = TRUE; + break; + case 0xDE: // set frequency scale + cmdArgU16 = (u16)cmdArgs[0]; + subtrack->frequency_scale = (f32)(s32)cmdArgU16 / (f32)0x8000; + subtrack->changes.flags.frequency_scale = TRUE; + break; + case 0xD3: // large bend pitch + cmdArgU8 = (u8)cmdArgs[0]; + cmdArgU8 += 128; + subtrack->frequency_scale = PCENTTABLE[cmdArgU8]; + subtrack->changes.flags.frequency_scale = TRUE; + break; + case 0xEE: // small bend pitch + cmdArgU8 = 128 + (u8)cmdArgs[0]; + subtrack->frequency_scale = PCENTTABLE2[cmdArgU8]; + subtrack->changes.flags.frequency_scale = TRUE; + break; + case 0xDD: // set pan + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->new_pan = cmdArgU8; + subtrack->changes.flags.pan = TRUE; + break; + case 0xDC: // set pan mix/channel weight + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->pan_channel_weight = cmdArgU8; + subtrack->changes.flags.pan = TRUE; + break; + case 0xDB: // set transposition + cmdArgS8 = (s8)cmdArgs[0]; + subtrack->transposition = cmdArgS8; + break; + case 0xDA: // set envelope + cmdArgU16 = (u16)cmdArgs[0]; + subtrack->adsr_env.envelope = (envdat*)&grp->seq_data[cmdArgU16]; + break; + case 0xD9: // set decay index + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->adsr_env.decay_idx = cmdArgU8; + break; + case 0xD8: // set vibrato depth + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->vibrato_params.depth_target = cmdArgU8 * 8; + subtrack->vibrato_params.depth_start = 0; + subtrack->vibrato_params.depth_change_delay = 0; + break; + case 0xD7: // set vibrato rate + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->vibrato_params.rate_target = cmdArgU8 * 32; + subtrack->vibrato_params.rate_start = cmdArgU8 * 32; + subtrack->vibrato_params.rate_change_delay = 0; + break; + case 0xE2: // set vibrato depth linear + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->vibrato_params.depth_start = cmdArgU8 * 8; + cmdArgU8 = (u8)cmdArgs[1]; + subtrack->vibrato_params.depth_target = cmdArgU8 * 8; + cmdArgU8 = (u8)cmdArgs[2]; + subtrack->vibrato_params.depth_change_delay = cmdArgU8 * 16; + break; + case 0xE1: // set vibrato rate linear + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->vibrato_params.rate_start = cmdArgU8 * 32; + cmdArgU8 = (u8)cmdArgs[1]; + subtrack->vibrato_params.rate_target = cmdArgU8 * 32; + cmdArgU8 = (u8)cmdArgs[2]; + subtrack->vibrato_params.rate_change_delay = cmdArgU8 * 16; + break; + case 0xE3: // set vibrato delay + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->vibrato_params.delay = cmdArgU8 * 16; + break; + case 0xD4: // set reverb volume + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->target_reverb_vol = cmdArgU8; + break; + case 0xC6: // set bank + cmdArgU8 = cmdArgs[0]; + if (grp->bank_id != 0xFF) { + cmdArgU16 = AG.map_header[grp->seq_id]; + lo_bits = ((u8*)AG.map_header)[cmdArgU16]; + cmdArgU8 = ((u8*)AG.map_header)[cmdArgU16 + lo_bits - cmdArgU8]; + } + + if (Nas_SzCacheCheck(BANK_TABLE, CACHE_EITHER, cmdArgU8)) { + subtrack->bank_id = cmdArgU8; + } + break; + case 0xC7: // write to sequence script + cmdArgU8 = (u8)cmdArgs[0]; + cmdArgU16 = (u16)cmdArgs[1]; + seq_data = &grp->seq_data[cmdArgU16]; + seq_data[0] = (u8)m->value + cmdArgU8; + break; + case 0xC8: // subtract macro value + case 0xCC: // set macro value + case 0xC9: // bit& macro value + cmdArgS8 = (s8)cmdArgs[0]; + if (cmd == 0xC8) { + m->value -= cmdArgS8; + } else if (cmd == 0xCC) { + m->value = cmdArgS8; + } else { + m->value &= cmdArgS8; + } + break; + case 0xCD: // disable subtrack + cmdArgU8 = (u8)cmdArgs[0]; + Nas_ReleaseSubTrack(grp->subtracks[cmdArgU8]); + break; + case 0xCA: // set mute flags + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->mute_flags = cmdArgU8; + subtrack->changes.flags.volume = TRUE; + break; + case 0xCB: // load macro register value from table + cmdArgU16 = (u16)cmdArgs[0]; + m->value = grp->seq_data[(u32)(cmdArgU16 + m->value)]; + break; + case 0xCE: // set stored sequence data index + cmdArgU16 = (u16)cmdArgs[0]; + subtrack->dynamic_value = cmdArgU16; + break; + case 0xCF: // write u16 into sequence script + cmdArgU16 = (u16)cmdArgs[0]; + seq_data = &grp->seq_data[cmdArgU16]; + seq_data[0] = (subtrack->dynamic_value >> 8) & 0xFF; + seq_data[1] = subtrack->dynamic_value & 0xFF; + break; + case 0xD0: // stereo phase effects + cmdArgU8 = (u8)cmdArgs[0]; + if (cmdArgU8 & 0x80) { + subtrack->stereo_effects = TRUE; + } else { + subtrack->stereo_effects = FALSE; + } + + subtrack->stereo_phase.asU8 = cmdArgU8 & 0x7F; + break; + case 0xD1: // set note allocation policy + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->note_alloc_policy = cmdArgU8; + break; + case 0xD2: // set sustain + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->adsr_env.sustain = cmdArgU8; + break; + case 0xE5: // set reverb index + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->reverb_idx = cmdArgU8; + break; + case 0xE4: // dynamic call + if (m->value != -1) { + data = (*subtrack->dyn_tbl)[m->value]; + /* @BUG - missing stack depth bounds check */ + m->stack[m->depth++] = m->pc; + cmdArgU16 = (u16)((data[0] << 8) + data[1]); + m->pc = &grp->seq_data[cmdArgU16]; + } + break; + case 0xE6: // set book ofs + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->book_ofs = cmdArgU8; + break; + case 0xE7: // + cmdArgU16 = (u16)cmdArgs[0]; + data = &grp->seq_data[cmdArgU16]; + subtrack->mute_flags = data[0]; + subtrack->note_alloc_policy = data[1]; + Nas_PriorityChanger(subtrack, data[2]); + subtrack->transposition = (s8)data[3]; + subtrack->new_pan = data[4]; + subtrack->pan_channel_weight = data[5]; + subtrack->target_reverb_vol = data[6]; + subtrack->reverb_idx = data[7]; + /* @BUG - didn't update reverb state as changed */ + subtrack->changes.flags.pan = TRUE; + break; + case 0xE8: // + subtrack->mute_flags = cmdArgs[0]; + subtrack->note_alloc_policy = cmdArgs[1]; + cmdArgU8 = (u8)cmdArgs[2]; + Nas_PriorityChanger(subtrack, cmdArgU8); + subtrack->transposition = (s8)Nas_ReadByteData(m); + subtrack->new_pan = Nas_ReadByteData(m); + subtrack->pan_channel_weight = Nas_ReadByteData(m); + subtrack->target_reverb_vol = Nas_ReadByteData(m); + subtrack->reverb_idx = Nas_ReadByteData(m); + /* @BUG - didn't update reverb state as changed */ + subtrack->changes.flags.pan = TRUE; + break; + case 0xEC: // reset vibrato + subtrack->frequency_scale = 1.0f; + subtrack->vibrato_params.depth_target = 0; + subtrack->vibrato_params.depth_start = 0; + subtrack->vibrato_params.depth_change_delay = 0; + subtrack->vibrato_params.rate_target = 0; + subtrack->vibrato_params.rate_start = 0; + subtrack->vibrato_params.rate_change_delay = 0; + subtrack->filter = nullptr; + subtrack->gain = 0; + subtrack->adsr_env.sustain = 0; + subtrack->velocity_random_variance = 0; + subtrack->gate_time_random_variance = 0; + subtrack->comb_filter_size = 0; + subtrack->comb_filter_gain = 0; + subtrack->book_ofs = 0; + subtrack->sample_start_pos = 0; + subtrack->_E0 = 0; + break; + case 0xE9: // set priority + cmdArgU8 = (u8)cmdArgs[0]; + Nas_PriorityChanger(subtrack, cmdArgU8); + break; + case 0xED: // set gain + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->gain = cmdArgU8; + break; + case 0xB0: // set filter + cmdArgU16 = (u16)cmdArgs[0]; + data = &grp->seq_data[cmdArgU16]; + subtrack->filter = (s16*)data; + break; + case 0xB1: // clear filter + subtrack->filter = nullptr; + break; + case 0xB3: // load filter + cmdArgU8 = (u8)cmdArgs[0]; + if (subtrack->filter != nullptr) { + lo_bits = (cmdArgU8 >> 4) & 0xF; + cmdArgU8 &= 0xF; + Nas_SetBPFilter(subtrack->filter, lo_bits, cmdArgU8); + } + break; + case 0xB2: // load dynamic idx + cmdArgU16 = (u16)cmdArgs[0]; + subtrack->dynamic_value = *(u16*)&grp->seq_data[cmdArgU16 + m->value * 2]; + break; + case 0xB4: // set dynamic table + subtrack->dyn_tbl = (unsigned char(*)[][2]) & grp->seq_data[subtrack->dynamic_value]; + break; + case 0xB5: // read from dynamic table + subtrack->dynamic_value = ((u16*)subtrack->dyn_tbl)[m->value]; + break; + case 0xB6: // read to macro register from dynamic table + m->value = (*subtrack->dyn_tbl)[0][m->value]; + break; + case 0xB7: // random dynamic value + if (cmdArgs[0] == 0) { + subtrack->dynamic_value = Nap_GetRandom(); + } else { + subtrack->dynamic_value = Nap_GetRandom() % cmdArgs[0]; + } + break; + case 0xB8: // macro register random value + if (cmdArgs[0] == 0) { + m->value = Nap_GetRandom(); + } else { + m->value = Nap_GetRandom() % cmdArgs[0]; + } + break; + case 0xB9: // set velocity random variance + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->velocity_random_variance = cmdArgU8; + break; + case 0xBA: // set gate time random variance + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->gate_time_random_variance = cmdArgU8; + break; + case 0xBB: // set comb filter size & gain + cmdArgU8 = (u8)cmdArgs[0]; + subtrack->comb_filter_size = cmdArgU8; + cmdArgU16 = (u16)cmdArgs[1]; + subtrack->comb_filter_gain = cmdArgU16; + break; + case 0xBC: // Add to dynamic value + subtrack->dynamic_value += cmdArgs[0]; + break; + case 0xA8: // Dynamic value bit shift & negate (when s16), differs from OoT and MM + new_var2 = (subtrack->dynamic_value & 0x7F); + new_var2 |= 0x8000 | ((subtrack->dynamic_value & 0x7FC0) << 1); + subtrack->dynamic_value = new_var2; + break; + case 0xBD: // set sample start pos + subtrack->sample_start_pos = cmdArgs[0]; + break; + case 0xBE: // call custom sequence callback and update macro register value + if (cmdArgs[0] <= 4) { + if (AG.seq_callbacks[cmdArgs[0]] != nullptr) { + NA_CALLBACK = AG.seq_callbacks[cmdArgs[0]]; + m->value = (*NA_CALLBACK)(m->value, subtrack); + } + } + break; + case 0xA0: // read from sfx state using macro register value as index + case 0xA1: // read from sfx state using dynamic value as index + case 0xA2: // write to sfx state using macro register value as index + case 0xA3: // write to sfx state using dynamic value as index + if (cmd == 0xA0 || cmd == 0xA2) { + cmdArgU16 = cmdArgs[0]; + } else { + cmdArgU16 = subtrack->dynamic_value; + } + + if (subtrack->sfx_state != nullptr) { + if (cmd == 0xA0 || cmd == 0xA1) { + m->value = subtrack->sfx_state[cmdArgU16]; + } else { + subtrack->sfx_state[cmdArgU16] = m->value; + } + } + break; + case 0xA4: // set surround effect index + subtrack->surround_effect_idx = cmdArgs[0]; + break; + case 0xA5: // add subtrack index to macro register value + m->value += subtrack->subtrack_idx; + break; + case 0xA6: // Set value in sequence data to macro register value plus arg value + cmdArgU8 = (u8)cmdArgs[0]; + cmdArgU16 = (u16)cmdArgs[1]; + seq_data = &grp->seq_data[cmdArgU16 + subtrack->subtrack_idx]; + *seq_data = (u8)m->value + cmdArgU8; + break; + case 0xA7: // manipulate macro register value + u32 shift = (cmdArgs[0] & 0xF); + lo_bits = (m->value & 0x80); + new_var2 = (cmdArgs[0] & 0x80); + new_var3 = (cmdArgs[0] & 0x40); + + if (new_var2 == 0) { + cmdArgU8 = m->value << shift; + } else { + cmdArgU8 = m->value >> shift; + } + + if (new_var3) { + cmdArgU8 &= (u8)~0x80; + cmdArgU8 |= lo_bits; + } + + m->value = cmdArgU8; + break; + } + } + // continue; + } else if (cmd >= 0x70) { + s32 hi_bits = (cmd & (u8)~7); + lo_bits = cmd; + lo_bits &= ~0xF8; + + /* if command is not in range [0x70, 0x77] and the lower 4 bits are >= 4, set them to be 0xY0*/ + if (hi_bits != 0x70 && lo_bits >= ARRAY_COUNT(subtrack->note_layers)) { + lo_bits = 0; + } + + switch (hi_bits) { + // [0x80 - 0x83] + case 0x80: // macro register value = subtrack->note_layers[idx]->finished + if (subtrack->note_layers[lo_bits] != nullptr) { + m->value = subtrack->note_layers[lo_bits]->finished; + } else { + m->value = -1; + } + break; + // [0x88 - 0x8B] + case 0x88: // start note layer and initialize note macro pc + cmdArgU16 = Nas_ReadWordData(m); + if (Nas_EntryNoteTrack(subtrack, lo_bits) == 0) { + subtrack->note_layers[lo_bits]->macro_player.pc = &grp->seq_data[cmdArgU16]; + } + break; + // [0x90 - 0x93] + case 0x90: // stop note layer + Nas_CloseNoteTrack(subtrack, lo_bits); + break; + // [0x98 - 0x9B] + case 0x98: // start note layer and initialize note macro pc from data at macro register offset + if (m->value != -1) { + if (Nas_EntryNoteTrack(subtrack, lo_bits) != -1) { + data = (*subtrack->dyn_tbl)[m->value]; + cmdArgU16 = (u16)((data[0] << 8) + data[1]); + subtrack->note_layers[lo_bits]->macro_player.pc = &grp->seq_data[cmdArgU16]; + } + } + break; + // [0x70 - 0x77] + case 0x70: // write macro register value into subtrack port + subtrack->port[lo_bits] = m->value; + break; + // [0x78 - 0x7B] + case 0x78: // start note layer and initialize note macro pc from subtrack pc and rel offset + temp1 = Nas_ReadWordData(m); + if (Nas_EntryNoteTrack(subtrack, lo_bits) == 0) { + subtrack->note_layers[lo_bits]->macro_player.pc = m->pc + temp1; + } + break; + } + } else { + /* Process commands 0x00 - 0x6F */ + lo_bits = cmd & 0xF; // each command has 16 indicies which come from the lower 4 bits + switch (cmd & 0xF0) { + // [0x00, 0x0F] + case 0x00: // set delay + subtrack->delay = lo_bits; + if (lo_bits == 0) { + break; /* clear delay, continue processing */ + } else { + goto note_seq; /* delay > 0 so stop processing subtrack commands for now */ + } + // [0x10, 0x17] & [0x18, 0x1F] + case 0x10: // load new wave samples + if (lo_bits < 8) { + subtrack->port[lo_bits] = -1; // clear port + /* Load samples from bank with inst id being macro's register value, load result in + * port[lo_bits] */ + VoiceLoad(subtrack->bank_id, m->value, &subtrack->port[lo_bits]); + } else { + lo_bits -= 8; + subtrack->port[lo_bits] = -1; + /* Load synth? samples based on dynamic value */ + VoiceLoad(subtrack->bank_id, 0x100 + subtrack->dynamic_value, &subtrack->port[lo_bits]); + } + break; + // [0x60, 0x6F] (only 0x60, 0x67 are valid) + case 0x60: // read port value into macro register value + m->value = subtrack->port[lo_bits]; + if (lo_bits < 2) { + subtrack->port[lo_bits] = -1; + } + break; + // [0x50, 0x5F] (only 0x50, 0x57 are valid) + case 0x50: // subtrack port value from macro register value + m->value -= subtrack->port[lo_bits]; + break; + // [0x20, 0x2F] + case 0x20: // start subtrack + cmdArgU16 = (u16)Nas_ReadWordData(m); + Nas_OpenSub(grp, lo_bits, &grp->seq_data[cmdArgU16]); + break; + // [0x30, 0x3F] + case 0x30: // set subtrack port to this subtrack's macro register value + cmdArgU8 = Nas_ReadByteData(m); + grp->subtracks[lo_bits]->port[cmdArgU8] = m->value; + break; + // [0x40, 0x4F] + case 0x40: // set this subtrack's macro register value to other subtrack's port + cmdArgU8 = Nas_ReadByteData(m); + m->value = grp->subtracks[lo_bits]->port[cmdArgU8]; + break; + } + } + } + } + } + +note_seq: + for (i = 0; i < ARRAY_COUNT(subtrack->note_layers); i++) { + if (subtrack->note_layers[i] != nullptr) { + Nas_NoteSeq(subtrack->note_layers[i]); + } + } +} + +static void Nas_GroupSeq(group* grp) { + u8 cmd; + u8 cmd_lo_bits; + macro* m; + s16 tempS; + u16 temp; + s32 i; + s32 value; + u8* data1; + u8* data2; + u8* data3; + u8* data4; + s32 tempo_change; + sub* subtrack; + u16* new_var; + s32 delay; + f32 tempf32; + s8 argS8; + s16 argS16; + u8 argU8; + + if (grp->flags.enabled) { + if (Nas_CheckIDseq(grp->seq_id) == FALSE || Nas_CheckIDbank(grp->bank_id) == FALSE) { + Nas_CheckIDseq(grp->seq_id); + Nas_CheckIDseq(grp->bank_id); + Nas_ReleaseGroup(grp); + } else { + Nas_WriteIDseq(grp->seq_id, LOAD_STATUS_COMPLETE); + Nas_WriteIDbank(grp->bank_id, LOAD_STATUS_COMPLETE); + + if (grp->flags.muted && (grp->mute_flags & AUDIO_MUTE_FLAG_STOP_SCRIPT)) { + return; + } + + grp->script_counter++; + tempo_change = grp->tempo + grp->tempo_change; + if (tempo_change > AG.max_tempo) { + tempo_change = AG.max_tempo; + } + + grp->tempo_acceleration += tempo_change; + if (grp->tempo_acceleration < AG.max_tempo) { + return; + } + + grp->tempo_acceleration -= (u16)AG.max_tempo; + grp->counter++; + + if (grp->flags.stop_seq_script == TRUE) { + return; + } + + if (grp->delay > 1) { + grp->delay--; + } else { + m = &grp->macro_player; + grp->flags.recalculate_volume = TRUE; + + /* Sequence group commands processing loop */ + while (TRUE) { + cmd = Nas_ReadByteData(m); + if (cmd >= 0xF2) { + u16 arg = Convert_Com(m, cmd); + delay = Common_Com(grp, m, cmd, arg); + + if (delay != 0) { + /* Group is on delay or script has exited */ + if (delay == COMMON_SCRIPT_END) { + Nas_ReleaseGroup(grp); + } else { + grp->delay = delay; + } + + break; + } + } else if (cmd >= 0xC0) { + switch (cmd) { + case 0xF1: // reserve voices + Nas_DeAllocAllVoices(&grp->channel_node); + cmd = Nas_ReadByteData(m); + Nas_AllocVoices(&grp->channel_node, (u8)cmd); + break; + case 0xF0: // release voices + Nas_DeAllocAllVoices(&grp->channel_node); + break; + case 0xDF: // absolute transposition + grp->transposition = 0; + // fallthrough 0xDF -> 0xDE + case 0xDE: // relative transposition + argU8 = Nas_ReadByteData(m); + grp->transposition = grp->transposition + (s8)argU8; + break; + case 0xDD: // set tempo + grp->tempo = Nas_ReadByteData(m) * AUDIO_TATUMS_PER_BEAT; + if (grp->tempo > AG.max_tempo) { + grp->tempo = AG.max_tempo; + } + if ((s16)grp->tempo < 1) { + grp->tempo = 1; + } + break; + case 0xDC: // adjust tempo relative + grp->tempo_change = (s8)Nas_ReadByteData(m) * AUDIO_TATUMS_PER_BEAT; + break; + case 0xDA: // change volume + cmd = Nas_ReadByteData(m); + temp = Nas_ReadWordData(m); + switch (cmd) { + case GROUP_STATE_0: + case GROUP_STATE_FADE_IN: + if (grp->state != GROUP_STATE_FADE_OUT) { + grp->stored_fade_timer = temp; + grp->state = cmd; + } + break; + case GROUP_STATE_FADE_OUT: + grp->fade_timer = temp; + grp->state = cmd; + grp->fade_velocity = -grp->fade_volume / (f32)(s32)grp->fade_timer; + break; + } + break; + case 0xDB: // set volume + tempf32 = (s32)Nas_ReadByteData(m) / 127.0f; + switch (grp->state) { + case GROUP_STATE_FADE_IN: + grp->fade_volume = 0.0f; + grp->state = GROUP_STATE_0; + // fallthrough GROUP_STATE_FADE_IN + case GROUP_STATE_0: + temp = grp->stored_fade_timer; + grp->fade_timer = temp; + if (temp != 0) { + grp->fade_velocity = + (tempf32 - grp->fade_volume) / (f32)(s32)grp->fade_timer; + } else { + grp->fade_volume = tempf32; + } + break; + + case GROUP_STATE_FADE_OUT: + break; + } + break; + case 0xD9: // set volume scale + grp->fade_volume_scale = (s8)Nas_ReadByteData(m) / 127.0f; + break; + case 0xD7: // initialize subtracks + temp = Nas_ReadWordData(m); + Nas_AllocSub(grp, temp); + break; + case 0xD6: // [ineffective] - disable subtracks + Nas_ReadWordData(m); + break; + case 0xD5: // set mute scale + grp->mute_volume_scale = (s8)Nas_ReadByteData(m) / 127.0f; + break; + case 0xD4: // mute + grp->flags.muted = TRUE; + break; + case 0xD3: // set mute behaivor + grp->mute_flags = Nas_ReadByteData(m); + break; + case 0xD1: // set short note gate-time table + case 0xD2: // set short note velocity table + temp = Nas_ReadWordData(m); + data3 = &grp->seq_data[temp]; + if (cmd == 0xD2) { + grp->short_note_velocity_tbl = data3; + } else { + grp->short_note_gate_time_tbl = data3; + } + break; + case 0xD0: // set note allocation policy + grp->note_alloc_policy = Nas_ReadByteData(m); + break; + case 0xCE: // set macro register value to random value + cmd = Nas_ReadByteData(m); + if (cmd == 0) { + /* 0-255 */ + m->value = (AG.audio_random_seed >> 2) & 0xFF; + } else { + /* 0-N */ + m->value = (AG.audio_random_seed >> 2) % cmd; + } + break; + case 0xCD: // dynamic look-up table call + temp = Nas_ReadWordData(m); + if (m->value != -1 && m->depth != 3) { + data1 = &grp->seq_data[(u32)(temp + (m->value << 1))]; + m->stack[m->depth++] = m->pc; + temp = (data1[0] << 8) + data1[1]; + m->pc = &grp->seq_data[temp]; + } + break; + case 0xCC: // set macro register value + m->value = Nas_ReadByteData(m); + break; + case 0xC9: // macro register bit mask + m->value &= Nas_ReadByteData(m); + break; + case 0xC8: // macro register subtraction + m->value -= Nas_ReadByteData(m); + break; + case 0xC7: // write macro register value to sequence data + cmd = Nas_ReadByteData(m); + temp = Nas_ReadWordData(m); + data2 = &grp->seq_data[temp]; + data2[0] = (u8)m->value + cmd; + break; + case 0xC2: // dynamic lookup branch (no return) + temp = Nas_ReadWordData(m); + if (m->value != -1) { + data4 = &grp->seq_data[(u32)(temp + (m->value << 1))]; + temp = (data4[0] << 8) + data4[1]; + m->pc = &grp->seq_data[temp]; + } + break; + case 0xC6: // stop script + grp->flags.stop_seq_script = TRUE; + return; + case 0xC5: // update counter + grp->counter = Nas_ReadWordData(m); + break; + case 0xEF: // + Nas_ReadWordData(m); + Nas_ReadByteData(m); + break; + case 0xC4: // start sequence script + /* Get sequence group index */ + cmd = Nas_ReadByteData(m); + if (cmd == 0xFF) { + cmd = grp->group_idx; + } + + Nas_StartMySeq(cmd, Nas_ReadByteData(m), 0); + if (cmd == (u8)grp->group_idx) { + return; // stop processing since we just used this group for a new sequence + } + break; + case 0xC3: // mute subtracks from u16 bitfield + temp = Nas_ReadWordData(m); + if (m->value != -1) { + new_var = (u16*)(grp->seq_data + (u32)(temp + m->value * 2)); + temp = *new_var; + for (i = 0; i < ARRAY_COUNT(grp->subtracks); i++) { + grp->subtracks[i]->muted = temp & 1; + temp = temp >> 1; + } + } + break; + } + } else if (cmd == 0xBE) { + cmd = Nas_ReadByteData(m); + if (cmd <= 4) { + if (AG.seq_callbacks[cmd] != nullptr) { + NA_GRP_CALLBACK = (GRP_CALLBACK)AG.seq_callbacks[cmd]; + m->value = (*(GRP_CALLBACK)AG.seq_callbacks[cmd])(m->value, grp); + } + } else { + break; + } + } else { + /* Commands 0x00 - 0xBD & 0xBF */ + cmd_lo_bits = cmd & 0x0F; + switch (cmd & 0xF0) { + // [0x00, 0x0F] + case 0x00: // macro register value = !subtrack->enabled + m->value = grp->subtracks[cmd_lo_bits]->enabled ^ TRUE; + break; + // [0x50, 0x57] @BUG - ([0x58, 0x5F] end here but would result in undefined behavior) + case 0x50: // macro register subtract port value + m->value -= grp->port[cmd_lo_bits]; + break; + // [0x70, 0x77] @BUG - ([0x78, 0x7F] end here but would result in undefined behavior) + case 0x70: // write macro register value into port + grp->port[cmd_lo_bits] = m->value; + break; + // [0x80, 0x87] @BUG - ([0x88, 0x8F] end here but would result in undefined behavior) + case 0x80: // read macro register value from port + m->value = grp->port[cmd_lo_bits]; + if (cmd_lo_bits < 2) { + grp->port[cmd_lo_bits] = -1; + } + break; + // [0x40, 0x4F] + case 0x40: // disable subtrack + Nas_ReleaseSubTrack(grp->subtracks[cmd_lo_bits]); + break; + // [0x90, 0x9F] + case 0x90: // start subtrack w/ absolute script address + temp = Nas_ReadWordData(m); + Nas_OpenSub(grp, cmd_lo_bits, &grp->seq_data[temp]); + break; + // [0xA0, 0xAF] + case 0xA0: // start subtrack w/ relative script address + tempS = Nas_ReadWordData(m); + Nas_OpenSub(grp, cmd_lo_bits, &m->pc[tempS]); + break; + // [0xB0, 0xB7] @BUG - ([0xB8, 0xBF] end here but would result in undefined behavior) + case 0xB0: // load sequence + cmd = Nas_ReadByteData(m); + temp = Nas_ReadWordData(m); + data2 = &grp->seq_data[temp]; + SeqLoad(cmd, data2, &grp->port[cmd_lo_bits]); + break; + // [0x60, 0x67] @BUG - ([0x68, 0x6F] end here but would result in undefined behavior) + case 0x60: // async load + cmd = (u8)Nas_ReadByteData(m); + argU8 = Nas_ReadByteData(m); + MK_load(cmd, argU8, (u8*)&grp->port[cmd_lo_bits]); + break; + } + } + } + } + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + subtrack = grp->subtracks[i]; + if (subtrack->enabled) { + Nas_SubSeq(subtrack); + } + } + } + } +} + +extern void Nas_MySeqMain(u32 frames_left) { + group* grp; + group* main_grp; + u32 i; + + AG.sample_state_offset = (AG.audio_params.updates_per_frame - (frames_left + 1)) * AG.num_channels; + for (i = 0; i < AG.audio_params.num_groups; i++) { + grp = &AG.groups[i]; + + if (grp->flags.enabled == TRUE) { + Nas_GroupSeq(grp); + Nas_MainCtrl(grp); + } + } + + main_grp = &AG.main_group; + Nas_GroupSeq(main_grp); + Nas_MainCtrl(main_grp); + Nas_UpdateChannel(); +} + +extern void Nas_SeqSkip(group* grp) { + while (grp->skip_ticks > 0) { + Nas_GroupSeq(grp); + Nas_MainCtrl(grp); + grp->skip_ticks--; + } +} + +extern void Nas_InitMySeq(group* grp) { + s32 i; + + Nas_ReleaseGroup(grp); + grp->flags.stop_seq_script = FALSE; + grp->delay = 0; + grp->state = GROUP_STATE_FADE_IN; + grp->fade_timer = 0; + grp->stored_fade_timer = 0; + grp->tempo_acceleration = 0; + grp->tempo = 120 * AUDIO_TATUMS_PER_BEAT; + grp->tempo_change = 0; + grp->fade_volume = 1.0f; + grp->fade_velocity = 0.0f; + grp->volume = 0.0f; + grp->mute_volume_scale = 0.5f; + grp->transposition = 0; + grp->note_alloc_policy = 0; + grp->short_note_velocity_tbl = DEFAULT_VTABLE; + grp->short_note_gate_time_tbl = DEFAULT_GTABLE; + grp->script_counter = 0; + grp->counter = 0; + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + Nas_InitSubTrack(grp->subtracks[i]); + } +} + +extern void Nas_AssignSubTrack(s32 group_idx) { + sub* subtrack; + group* grp = &AG.groups[group_idx]; + s32 i; + s32 j; + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + grp->subtracks[i] = (sub*)Nas_HeapAlloc_CL(&AG.misc_heap, sizeof(sub)); + if (grp->subtracks[i] == nullptr) { + grp->subtracks[i] = &AG.null_sub_track; + } else { + subtrack = grp->subtracks[i]; + subtrack->group = grp; + subtrack->subtrack_idx = i; + subtrack->enabled = FALSE; + + for (j = 0; j < ARRAY_COUNT(subtrack->note_layers); j++) { + subtrack->note_layers[j] = nullptr; + } + } + + Nas_InitSubTrack(grp->subtracks[i]); + } +} + +static void __InitGroup(group* grp) { + s32 i; + s32 j; + + for (i = 0; i < AUDIO_SUBTRACK_NUM; i++) { + grp->subtracks[i] = &AG.null_sub_track; + } + + grp->flags.enabled = FALSE; + grp->flags.muted = FALSE; + grp->flags.bank_dma_in_progress = FALSE; + grp->flags.sequence_dma_in_progress = FALSE; + grp->flags.apply_bend = FALSE; + + for (j = 0; j < ARRAY_COUNT(grp->port); j++) { + grp->port[j] = -1; + } + + grp->mute_flags = AUDIO_MUTE_FLAG_SOFTEN | AUDIO_MUTE_FLAG_STOP_NOTE; + grp->fade_volume_scale = 1.0f; + grp->bend = 1.0f; + + Nas_InitChNode(&grp->channel_node); + Nas_InitMySeq(grp); +} + +extern void Nas_InitPlayer(void) { + group* grp; + sub* subtrack; + s32 i; + + Nas_InitNoteList(); + for (i = 0; i < AUDIO_NOTE_MAX; i++) { + AG.notes[i].sub_track = nullptr; + AG.notes[i].enabled = FALSE; + } + + for (i = 0; i < AUDIO_GROUP_MAX; i++) { + AG.groups_p[i] = &AG.groups[i]; + __InitGroup(&AG.groups[i]); + } + + grp = &AG.main_group; + __InitGroup(grp); + + subtrack = &AG.main_sub; + subtrack->group = grp; + subtrack->enabled = FALSE; + for (i = 0; i < ARRAY_COUNT(subtrack->note_layers); i++) { + subtrack->note_layers[i] = nullptr; + } + Nas_InitSubTrack(&AG.main_sub); + + grp->subtracks[0] = &AG.main_sub; + grp->seq_id = 0xFF; + grp->bank_id = 0xFF; + grp->seq_data = BDB_SEQDATA; + grp->macro_player.pc = BDB_SEQDATA; + grp->macro_player.depth = 0; + grp->delay = 0; + grp->flags.enabled = TRUE; + grp->flags.finished = FALSE; + grp->skip_ticks = 0; +} diff --git a/src/static/jaudio_NES/melody.c b/src/static/jaudio_NES/melody.c deleted file mode 100644 index 7a0cfc96..00000000 --- a/src/static/jaudio_NES/melody.c +++ /dev/null @@ -1 +0,0 @@ -#include "melody.h" \ No newline at end of file diff --git a/src/static/jsyswrap.cpp b/src/static/jsyswrap.cpp index fa1868eb..84331d77 100644 --- a/src/static/jsyswrap.cpp +++ b/src/static/jsyswrap.cpp @@ -35,554 +35,528 @@ static u16 video_pan_height = 0; static u32 SystemHeapSize = 0x16C7000; static u32 gameheap_len = 0x380000; -static GXRenderModeObj customized_GXNtsc240Ds = { - VI_TVMODE_NTSC_DS, - 640, - 240, - 240, - 30, - 0, - 660, - 480, - VI_XFBMODE_SF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 0, 0, 21, 22, 21, 0, 0 } -}; -static GXRenderModeObj customized_GXNtsc240Prog = { - VI_TVMODE_NTSC_PROG, - 640, - 240, - 480, - 30, - 0, - 660, - 480, - VI_XFBMODE_SF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 0, 0, 21, 22, 21, 0, 0 } -}; -static GXRenderModeObj customized_GXNtsc240IntDf = { - VI_TVMODE_NTSC_INT, - 640, - 240, - 480, - 30, - 0, - 660, - 480, - VI_XFBMODE_DF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 8, 8, 10, 12, 10, 8, 8 } -}; -static GXRenderModeObj customized_GXNtsc480Ds = { - VI_TVMODE_NTSC_DS, - 640, - 480, - 240, - 30, - 0, - 660, - 480, - VI_XFBMODE_SF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 0, 0, 21, 22, 21, 0, 0 } -}; -static GXRenderModeObj customized_GXNtsc480IntDf = { - VI_TVMODE_NTSC_INT, - 640, - 480, - 480, - 30, - 0, - 660, - 480, - VI_XFBMODE_DF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 8, 8, 10, 12, 10, 8, 8 } -}; -static GXRenderModeObj customized_GXNtsc480Prog = { - VI_TVMODE_NTSC_PROG, - 640, - 480, - 480, - 30, - 0, - 660, - 480, - VI_XFBMODE_SF, - FALSE, - FALSE, - { - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 }, - { 6, 6 } - }, - { 0, 0, 21, 22, 21, 0, 0 } -}; +static GXRenderModeObj customized_GXNtsc240Ds = { VI_TVMODE_NTSC_DS, + 640, + 240, + 240, + 30, + 0, + 660, + 480, + VI_XFBMODE_SF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 0, 0, 21, 22, 21, 0, 0 } }; +static GXRenderModeObj customized_GXNtsc240Prog = { VI_TVMODE_NTSC_PROG, + 640, + 240, + 480, + 30, + 0, + 660, + 480, + VI_XFBMODE_SF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 0, 0, 21, 22, 21, 0, 0 } }; +static GXRenderModeObj customized_GXNtsc240IntDf = { VI_TVMODE_NTSC_INT, + 640, + 240, + 480, + 30, + 0, + 660, + 480, + VI_XFBMODE_DF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 8, 8, 10, 12, 10, 8, 8 } }; +static GXRenderModeObj customized_GXNtsc480Ds = { VI_TVMODE_NTSC_DS, + 640, + 480, + 240, + 30, + 0, + 660, + 480, + VI_XFBMODE_SF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 0, 0, 21, 22, 21, 0, 0 } }; +static GXRenderModeObj customized_GXNtsc480IntDf = { VI_TVMODE_NTSC_INT, + 640, + 480, + 480, + 30, + 0, + 660, + 480, + VI_XFBMODE_DF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 8, 8, 10, 12, 10, 8, 8 } }; +static GXRenderModeObj customized_GXNtsc480Prog = { VI_TVMODE_NTSC_PROG, + 640, + 480, + 480, + 30, + 0, + 660, + 480, + VI_XFBMODE_SF, + FALSE, + FALSE, + { { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 }, + { 6, 6 } }, + { 0, 0, 21, 22, 21, 0, 0 } }; static void ReportDiskID() { - DVDDiskID* disk_id = DVDGetCurrentDiskID(); + DVDDiskID* disk_id = DVDGetCurrentDiskID(); - /* @NOTE: taken from e+ */ - JSYSWRAPPER_PRINTF(jc_sysConsole, "DiskID %.4s %.2s %d 0x%02x(%d)\n", disk_id->gameName, disk_id->company, disk_id->diskNumber, disk_id->gameVersion); + /* @NOTE: taken from e+ */ + JSYSWRAPPER_PRINTF(jc_sysConsole, "DiskID %.4s %.2s %d 0x%02x(%d)\n", disk_id->gameName, disk_id->company, + disk_id->diskNumber, disk_id->gameVersion); } extern void JW_UpdateVideoMode() { - GXRenderModeObj* renderMode; + GXRenderModeObj* renderMode; - if (video_famicom) { - video_pan_xorg = 32; - video_pan_yorg = 8; - video_pan_width = 256; - video_pan_height = 232; + if (video_famicom) { + video_pan_xorg = 32; + video_pan_yorg = 8; + video_pan_width = 256; + video_pan_height = 232; - if (video_lowreso != FALSE && video_progressive == FALSE) { - renderMode = &customized_GXNtsc240Ds; - } - else { - video_pan_yorg *= 2; - video_pan_height *= 2; + if (video_lowreso != FALSE && video_progressive == FALSE) { + renderMode = &customized_GXNtsc240Ds; + } else { + video_pan_yorg *= 2; + video_pan_height *= 2; - if (video_progressive != FALSE) { - renderMode = &customized_GXNtsc240Prog; - } - else { - renderMode = &customized_GXNtsc240IntDf; - } - } - } - else { - if (video_logo) { - video_pan_xorg = 0; - video_pan_yorg = 0; - video_pan_width = 640; - video_pan_height = 480; - } - else { - video_pan_xorg = 20; - video_pan_yorg = 6; - video_pan_width = 598; - video_pan_height = 464; + if (video_progressive != FALSE) { + renderMode = &customized_GXNtsc240Prog; + } else { + renderMode = &customized_GXNtsc240IntDf; + } + } + } else { + if (video_logo) { + video_pan_xorg = 0; + video_pan_yorg = 0; + video_pan_width = 640; + video_pan_height = 480; + } else { + video_pan_xorg = 20; + video_pan_yorg = 6; + video_pan_width = 598; + video_pan_height = 464; + } + + if (video_progressive) { + renderMode = &customized_GXNtsc480Prog; + } else { + renderMode = &customized_GXNtsc480IntDf; + } } - if (video_progressive) { - renderMode = &customized_GXNtsc480Prog; + if (renderMode != NULL) { + VIWaitForRetrace(); + JC_JUTVideo_setRenderMode(JC_JUTVideo_getManager(), renderMode); } - else { - renderMode = &customized_GXNtsc480IntDf; + + if (video_pan_enable) { + VIConfigurePan(video_pan_xorg, video_pan_yorg, video_pan_width, video_pan_height); } - } - - if (renderMode != NULL) { - VIWaitForRetrace(); - JC_JUTVideo_setRenderMode(JC_JUTVideo_getManager(), renderMode); - } - - if (video_pan_enable) { - VIConfigurePan(video_pan_xorg, video_pan_yorg, video_pan_width, video_pan_height); - } } extern void JW_SetProgressiveMode(int enabled) { - if (video_progressive != enabled) { - video_progressive = enabled; - JW_UpdateVideoMode(); - } + if (video_progressive != enabled) { + video_progressive = enabled; + JW_UpdateVideoMode(); + } } extern void JW_SetLowResoMode(int enabled) { - if (video_lowreso != enabled) { - video_lowreso = enabled; - JW_UpdateVideoMode(); - } + if (video_lowreso != enabled) { + video_lowreso = enabled; + JW_UpdateVideoMode(); + } } extern void JW_SetFamicomMode(int enabled) { - if (video_famicom != enabled) { - video_famicom = enabled; - JW_UpdateVideoMode(); - } + if (video_famicom != enabled) { + video_famicom = enabled; + JW_UpdateVideoMode(); + } } extern void JW_SetVideoPan(u16 origin_x, u16 origin_y, u16 width, u16 height) { - if (video_pan_xorg != origin_x || video_pan_yorg != origin_y || video_pan_width != width || video_pan_height != height) { - video_pan_enable = TRUE; - video_pan_xorg = origin_x; - video_pan_yorg = origin_y; - video_pan_width = width; - video_pan_height = height; - } + if (video_pan_xorg != origin_x || video_pan_yorg != origin_y || video_pan_width != width || + video_pan_height != height) { + video_pan_enable = TRUE; + video_pan_xorg = origin_x; + video_pan_yorg = origin_y; + video_pan_width = width; + video_pan_height = height; + } } extern void JW_SetLogoMode(int enabled) { - if (video_logo != enabled) { - video_logo = enabled; - JW_UpdateVideoMode(); - } + if (video_logo != enabled) { + video_logo = enabled; + JW_UpdateVideoMode(); + } } extern void JW_JUTGamePad_read() { - static OSTime last_pad_read; - OSTime now = OSGetTime(); + static OSTime last_pad_read; + OSTime now = OSGetTime(); - if (now > last_pad_read + OSMillisecondsToTicks(16) || now < last_pad_read) { - last_pad_read = now; - JC_JUTGamePad_read(); - } + if (now > last_pad_read + OSMillisecondsToTicks(16) || now < last_pad_read) { + last_pad_read = now; + JC_JUTGamePad_read(); + } } extern void JW_getPadStatus(PADStatus* padStatus) { - memcpy(&padStatus[0], &JUTGamePad::mPadStatus[0], sizeof(PADStatus)); - memcpy(&padStatus[1], &JUTGamePad::mPadStatus[1], sizeof(PADStatus)); - memcpy(&padStatus[2], &JUTGamePad::mPadStatus[2], sizeof(PADStatus)); - memcpy(&padStatus[3], &JUTGamePad::mPadStatus[3], sizeof(PADStatus)); + memcpy(&padStatus[0], &JUTGamePad::mPadStatus[0], sizeof(PADStatus)); + memcpy(&padStatus[1], &JUTGamePad::mPadStatus[1], sizeof(PADStatus)); + memcpy(&padStatus[2], &JUTGamePad::mPadStatus[2], sizeof(PADStatus)); + memcpy(&padStatus[3], &JUTGamePad::mPadStatus[3], sizeof(PADStatus)); } extern int JW_JUTGamepad_getErrorStatus() { - return (s8)((JUTGamePad*)gamePad)[0].mErrorStatus; + return (s8)((JUTGamePad*)gamePad)[0].mErrorStatus; } extern u32 JW_JUTGamepad_getButton() { - return ((JUTGamePad*)gamePad)[0].mButtons.mButton; + return ((JUTGamePad*)gamePad)[0].mButtons.mButton; } extern u32 JW_JUTGamepad_getTrigger() { - return ((JUTGamePad*)gamePad)[0].mButtons.mTrigger; + return ((JUTGamePad*)gamePad)[0].mButtons.mTrigger; } extern f32 JW_JUTGamepad_getSubStickValue() { - return ((JUTGamePad*)gamePad)[0].mSubStick.mValue; + return ((JUTGamePad*)gamePad)[0].mSubStick.mValue; } -extern int JW_JUTGamepad_getSubStickAngle() { - return ((JUTGamePad*)gamePad)[0].mSubStick.mAngle; +extern s16 JW_JUTGamepad_getSubStickAngle() { + return ((JUTGamePad*)gamePad)[0].mSubStick.mAngle; } static bool FrameDrawing = false; extern void JW_BeginFrame() { - while (FrameCansel) { - VIWaitForRetrace(); - } + while (FrameCansel) { + VIWaitForRetrace(); + } - FrameDrawing = true; - void* displayManager = JC_JFWDisplay_getManager(); - JC_JFWDisplay_endFrame(displayManager); - JC_JFWDisplay_beginRender(displayManager); - JC_J2DOrthoGraph_setOrtho(jc_gport, 0, 0, JC_JFWDisplay_getEfbWidth(displayManager), JC_JFWDisplay_getEfbHeight(displayManager)); - JC_J2DOrthoGraph_setPort(jc_gport); + FrameDrawing = true; + void* displayManager = JC_JFWDisplay_getManager(); + JC_JFWDisplay_endFrame(displayManager); + JC_JFWDisplay_beginRender(displayManager); + JC_J2DOrthoGraph_setOrtho(jc_gport, 0, 0, JC_JFWDisplay_getEfbWidth(displayManager), + JC_JFWDisplay_getEfbHeight(displayManager)); + JC_J2DOrthoGraph_setPort(jc_gport); } extern void JW_EndFrame() { - JC_JFWDisplay_endRender(JC_JFWDisplay_getManager()); - FrameDrawing = false; + JC_JFWDisplay_endRender(JC_JFWDisplay_getManager()); + FrameDrawing = false; } extern int JW_setClearColor(u8 r, u8 g, u8 b) { - static GXColor clear_color; + static GXColor clear_color; - if (clear_color.r != r || clear_color.g != g || clear_color.b != b) { - void* manager = JC_JFWDisplay_getManager(); + if (clear_color.r != r || clear_color.g != g || clear_color.b != b) { + void* manager = JC_JFWDisplay_getManager(); - clear_color.r = r; - clear_color.g = g; - clear_color.b = b; + clear_color.r = r; + clear_color.g = g; + clear_color.b = b; - JC_JFWDisplay_setClearColor(manager, clear_color); - return TRUE; - } - - return FALSE; + JC_JFWDisplay_setClearColor(manager, clear_color); + return TRUE; + } + + return FALSE; } -static const char* aram_resName[] = { - "fgdata.bin", - "mail_data.bin", - "mail_data_table.bin", - "maila_data.bin", - "maila_data_table.bin", - "mailb_data.bin", - "mailb_data_table.bin", - "mailc_data.bin", - "mailc_data_table.bin", - "pallet_boy.bin", - "ps_data.bin", - "ps_data_table.bin", - "psz_data.bin", - "psz_data_table.bin", - "select_data.bin", - "select_data_table.bin", - "string_data.bin", - "string_data_table.bin", - "superz_data.bin", - "superz_data_table.bin", - "super_data.bin", - "super_data_table.bin", - "tex_boy.bin", - "face_boy.bin", - "fgnpcdata.bin", - "message_data.bin", - "message_data_table.bin", - "my_original.bin", - "needlework.bin", - "player_room_floor.bin", - "player_room_wall.bin", - "npc_name_str_table.bin", - "d_obj_npc_stock_sch.bin", - "d_obj_npc_stock_scl.bin", - "title.bti", - "mura_spring.bti", - "mura_summer.bti", - "mura_fall.bti", - "mura_winter.bti", - "odekake.bti", - "omake.bti", - "eki1.bti", - "eki1_2.bti", - "eki1_3.bti", - "eki1_4.bti", - "eki1_5.bti", - "eki2.bti", - "eki2_2.bti", - "eki2_3.bti", - "eki2_4.bti", - "eki2_5.bti", - "eki3.bti", - "eki3_2.bti", - "eki3_3.bti", - "eki3_4.bti", - "eki3_5.bti", - "tegami.bti", - "tegami2.bti", - "famikon.bti", - "boy1.bti", - "boy2.bti", - "boy3.bti", - "boy4.bti", - "boy5.bti", - "boy6.bti", - "boy7.bti", - "boy8.bti", - "girl1.bti", - "girl2.bti", - "girl3.bti", - "girl4.bti", - "girl5.bti", - "girl6.bti", - "girl7.bti", - "girl8.bti", - "d_bg_island_sch.bin" -}; +static const char* aram_resName[] = { "fgdata.bin", + "mail_data.bin", + "mail_data_table.bin", + "maila_data.bin", + "maila_data_table.bin", + "mailb_data.bin", + "mailb_data_table.bin", + "mailc_data.bin", + "mailc_data_table.bin", + "pallet_boy.bin", + "ps_data.bin", + "ps_data_table.bin", + "psz_data.bin", + "psz_data_table.bin", + "select_data.bin", + "select_data_table.bin", + "string_data.bin", + "string_data_table.bin", + "superz_data.bin", + "superz_data_table.bin", + "super_data.bin", + "super_data_table.bin", + "tex_boy.bin", + "face_boy.bin", + "fgnpcdata.bin", + "message_data.bin", + "message_data_table.bin", + "my_original.bin", + "needlework.bin", + "player_room_floor.bin", + "player_room_wall.bin", + "npc_name_str_table.bin", + "d_obj_npc_stock_sch.bin", + "d_obj_npc_stock_scl.bin", + "title.bti", + "mura_spring.bti", + "mura_summer.bti", + "mura_fall.bti", + "mura_winter.bti", + "odekake.bti", + "omake.bti", + "eki1.bti", + "eki1_2.bti", + "eki1_3.bti", + "eki1_4.bti", + "eki1_5.bti", + "eki2.bti", + "eki2_2.bti", + "eki2_3.bti", + "eki2_4.bti", + "eki2_5.bti", + "eki3.bti", + "eki3_2.bti", + "eki3_3.bti", + "eki3_4.bti", + "eki3_5.bti", + "tegami.bti", + "tegami2.bti", + "famikon.bti", + "boy1.bti", + "boy2.bti", + "boy3.bti", + "boy4.bti", + "boy5.bti", + "boy6.bti", + "boy7.bti", + "boy8.bti", + "girl1.bti", + "girl2.bti", + "girl3.bti", + "girl4.bti", + "girl5.bti", + "girl6.bti", + "girl7.bti", + "girl8.bti", + "d_bg_island_sch.bin" }; extern u32 JW_GetAramAddress(int res_no) { - int address = 0; + int address = 0; - if (res_no >= RESOURCE_FGDATA && res_no < RESOURCE_FGNPCDATA) { - address = JC_JKRAramArchive_getAramAddress_byName(forest_arc_aram_p, (u32)'DATA', aram_resName[res_no]); - } - else if (res_no >= RESOURCE_FGNPCDATA && res_no < RESOURCE_NUM) { - address = JC_JKRAramArchive_getAramAddress_byName(forest_arc_aram2_p, (u32)'DATA', aram_resName[res_no]); - } + if (res_no >= RESOURCE_FGDATA && res_no < RESOURCE_FGNPCDATA) { + address = JC_JKRAramArchive_getAramAddress_byName(forest_arc_aram_p, (u32)'DATA', aram_resName[res_no]); + } else if (res_no >= RESOURCE_FGNPCDATA && res_no < RESOURCE_NUM) { + address = JC_JKRAramArchive_getAramAddress_byName(forest_arc_aram2_p, (u32)'DATA', aram_resName[res_no]); + } - return address; + return address; } extern u8* _JW_GetResourceAram(u32 aram_addr, u8* dst, u32 size) { - return JKRAramToMainRam(aram_addr, dst, size, EXPAND_SWITCH_DEFAULT, 0, nullptr, -1, nullptr); + return JKRAramToMainRam(aram_addr, dst, size, EXPAND_SWITCH_DEFAULT, 0, nullptr, -1, nullptr); } extern u32 JW_GetResSizeFileNo(int res_no) { - int res_size = 0; + int res_size = 0; - if (res_no >= RESOURCE_FGDATA && res_no < RESOURCE_FGNPCDATA) { - CSDIFileEntry* entry = JC__JKRGetResourceEntry_byName((u32)'DATA', aram_resName[res_no], forest_arc_aram_p); + if (res_no >= RESOURCE_FGDATA && res_no < RESOURCE_FGNPCDATA) { + CSDIFileEntry* entry = JC__JKRGetResourceEntry_byName((u32)'DATA', aram_resName[res_no], forest_arc_aram_p); - if (entry != nullptr) { - res_size = entry->mSize; + if (entry != nullptr) { + res_size = entry->mSize; + } + } else if (res_no >= RESOURCE_FGNPCDATA && res_no < RESOURCE_NUM) { + CSDIFileEntry* entry = JC__JKRGetResourceEntry_byName((u32)'DATA', aram_resName[res_no], forest_arc_aram2_p); + + if (entry != nullptr) { + res_size = entry->mSize; + } } - } - else if (res_no >= RESOURCE_FGNPCDATA && res_no < RESOURCE_NUM) { - CSDIFileEntry* entry = JC__JKRGetResourceEntry_byName((u32)'DATA', aram_resName[res_no], forest_arc_aram2_p); - if (entry != nullptr) { - res_size = entry->mSize; - } - } - - return res_size; + return res_size; } extern void JW_Init() { - const u32 soundAramSize = 0x810000; - const u32 graphAramSize = 0x6A3780; + const u32 soundAramSize = 0x810000; + const u32 graphAramSize = 0x6A3780; - void* arena_hi = OSGetArenaHi(); - void* arena_lo = OSGetArenaLo(); + void* arena_hi = OSGetArenaHi(); + void* arena_lo = OSGetArenaLo(); - SystemHeapSize = (u32)arena_hi - (u32)arena_lo - 0xD0; - JC_JFWSystem_setMaxStdHeap(1); - JC_JFWSystem_setSysHeapSize(SystemHeapSize); - JC_JFWSystem_setFifoBufSize(0x10001); - OSReport("soundAramSize=%08x graphAramSize=%08x totalAramSize=%08x\n", soundAramSize, graphAramSize, soundAramSize + graphAramSize); - JC_JFWSystem_setAramAudioBufSize(soundAramSize); - JC_JFWSystem_setAramGraphBufSize(graphAramSize); - JC_JFWSystem_init(); - JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 1); - jc_sysConsole = JC_JFWSystem_getSystemConsole(); - JC_JUTConsole_setOutput(jc_sysConsole, 3); - JC_JUTConsole_setPosition(jc_sysConsole, 32, 42); - void* display_manager = JC_JFWDisplay_createManager_0(&GXNtsc480IntDf, JC_JFWSystem_getSystemHeap(), 2, 1); - JC_JUTProcBar_setVisible(JC_JUTProcBar_getManager(), FALSE); - JC_JUTProcBar_setVisibleHeapBar(JC_JUTProcBar_getManager(), FALSE); - jc_gport = JC_J2DOrthoGraph_new(); - u32 color = TCOLOR_BLACK; - jc_fader = JC_JUTFader_new(0, 0, JC_JUTVideo_getFbWidth(JC_JUTVideo_getManager()), JC_JUTVideo_getEfbHeight(JC_JUTVideo_getManager()), &color); - JC_JFWDisplay_setFader(display_manager, jc_fader); - JC_JFWDisplay_setClearColor(display_manager, TCOLOR_BLACK); - JC_JFWDisplay_setGamma(display_manager, 0); - JW_SetVideoPan(20, 6, 598, 464); - JW_SetLogoMode(1); - JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 2); + SystemHeapSize = (u32)arena_hi - (u32)arena_lo - 0xD0; + JC_JFWSystem_setMaxStdHeap(1); + JC_JFWSystem_setSysHeapSize(SystemHeapSize); + JC_JFWSystem_setFifoBufSize(0x10001); + OSReport("soundAramSize=%08x graphAramSize=%08x totalAramSize=%08x\n", soundAramSize, graphAramSize, + soundAramSize + graphAramSize); + JC_JFWSystem_setAramAudioBufSize(soundAramSize); + JC_JFWSystem_setAramGraphBufSize(graphAramSize); + JC_JFWSystem_init(); + JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 1); + jc_sysConsole = JC_JFWSystem_getSystemConsole(); + JC_JUTConsole_setOutput(jc_sysConsole, 3); + JC_JUTConsole_setPosition(jc_sysConsole, 32, 42); + void* display_manager = JC_JFWDisplay_createManager_0(&GXNtsc480IntDf, JC_JFWSystem_getSystemHeap(), 2, 1); + JC_JUTProcBar_setVisible(JC_JUTProcBar_getManager(), FALSE); + JC_JUTProcBar_setVisibleHeapBar(JC_JUTProcBar_getManager(), FALSE); + jc_gport = JC_J2DOrthoGraph_new(); + u32 color = TCOLOR_BLACK; + jc_fader = JC_JUTFader_new(0, 0, JC_JUTVideo_getFbWidth(JC_JUTVideo_getManager()), + JC_JUTVideo_getEfbHeight(JC_JUTVideo_getManager()), &color); + JC_JFWDisplay_setFader(display_manager, jc_fader); + JC_JFWDisplay_setClearColor(display_manager, TCOLOR_BLACK); + JC_JFWDisplay_setGamma(display_manager, 0); + JW_SetVideoPan(20, 6, 598, 464); + JW_SetLogoMode(1); + JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 2); } extern void JW_Init2() { - JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 3); - ReportDiskID(); + JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 3); + ReportDiskID(); - if (forest_arc_aram_p == nullptr) { - forest_arc_aram_p = JC_JKRAramArchive_new(); + if (forest_arc_aram_p == nullptr) { + forest_arc_aram_p = JC_JKRAramArchive_new(); - if (forest_arc_aram_p == nullptr || JC__JKRMountFixedAramArchive(forest_arc_aram_p, "forest_1st.arc") == FALSE) { - OSDVDFatalError(); + if (forest_arc_aram_p == nullptr || + JC__JKRMountFixedAramArchive(forest_arc_aram_p, "forest_1st.arc") == FALSE) { + OSDVDFatalError(); + } } - } - gameheap_len = JC_JKRHeap_getFreeSize(JC_JFWSystem_getSystemHeap()) - 0x10000; - gameheap_base = JC_JKRHeap_alloc(JC_JFWSystem_getSystemHeap(), gameheap_len, 32); - MallocInit(gameheap_base, gameheap_len); - JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 4); + gameheap_len = JC_JKRHeap_getFreeSize(JC_JFWSystem_getSystemHeap()) - 0x10000; + gameheap_base = JC_JKRHeap_alloc(JC_JFWSystem_getSystemHeap(), gameheap_len, 32); + MallocInit(gameheap_base, gameheap_len); + JC_JKRExpHeap_changeGroupID(JC_JFWSystem_getSystemHeap(), 4); } extern void JW_Init3() { - if (forest_arc_aram2_p == nullptr) { - forest_arc_aram2_p = JC_JKRAramArchive_new(); + if (forest_arc_aram2_p == nullptr) { + forest_arc_aram2_p = JC_JKRAramArchive_new(); - if (forest_arc_aram2_p == nullptr || JC__JKRMountFixedAramArchive(forest_arc_aram2_p, "forest_2nd.arc") == FALSE) { - OSDVDFatalError(); + if (forest_arc_aram2_p == nullptr || + JC__JKRMountFixedAramArchive(forest_arc_aram2_p, "forest_2nd.arc") == FALSE) { + OSDVDFatalError(); + } } - } } extern void JW_Cleanup() { - MallocCleanup(); - JC_JKRHeap_free(JC_JFWSystem_getSystemHeap(), gameheap_base); - gameheap_base = nullptr; + MallocCleanup(); + JC_JKRHeap_free(JC_JFWSystem_getSystemHeap(), gameheap_base); + gameheap_base = nullptr; - if (forest_arc_aram_p != nullptr) { - JC__JKRUnmountFixedAramArchive(forest_arc_aram_p); - JC_JKRAramArchive_delete(forest_arc_aram_p); - forest_arc_aram_p = nullptr; - } + if (forest_arc_aram_p != nullptr) { + JC__JKRUnmountFixedAramArchive(forest_arc_aram_p); + JC_JKRAramArchive_delete(forest_arc_aram_p); + forest_arc_aram_p = nullptr; + } - if (forest_arc_aram2_p != nullptr) { - JC__JKRUnmountFixedAramArchive(forest_arc_aram2_p); - JC_JKRAramArchive_delete(forest_arc_aram2_p); - forest_arc_aram2_p = nullptr; - } + if (forest_arc_aram2_p != nullptr) { + JC__JKRUnmountFixedAramArchive(forest_arc_aram2_p); + JC_JKRAramArchive_delete(forest_arc_aram2_p); + forest_arc_aram2_p = nullptr; + } - JC_JFWDisplay_destroyManager(); + JC_JFWDisplay_destroyManager(); - if (jc_fader != nullptr) { - JC_JUTFader_delete(jc_fader); - jc_fader = nullptr; - } + if (jc_fader != nullptr) { + JC_JUTFader_delete(jc_fader); + jc_fader = nullptr; + } - if (jc_gport != nullptr) { - JC_J2DOrthoGraph_delete(jc_gport); - jc_gport = nullptr; - } + if (jc_gport != nullptr) { + JC_J2DOrthoGraph_delete(jc_gport); + jc_gport = nullptr; + } } diff --git a/src/static/libforest/emu64/emu64.cc b/src/static/libforest/emu64/emu64.cc index 4717de0e..aad3a1eb 100644 --- a/src/static/libforest/emu64/emu64.cc +++ b/src/static/libforest/emu64/emu64.cc @@ -3,6 +3,17 @@ #include "libultra/libultra.h" #include "terminal.h" #include "boot.h" +#include "libc64/sprintf.h" +#include "dolphin/mtx.h" +#include "dolphin/os/OSFastCast.h" +#include "dolphin/os.h" +#include "va_args.h" +#include "jsyswrap.h" +#include "dolphin/PPCArch.h" + +#pragma inline_max_size(1000) + +#include "../src/static/libforest/emu64/emu64_utility.cc" static aflags_c aflags; @@ -18,33 +29,43 @@ static texture_cache_entry_t texture_cache_list[TEXTURE_CACHE_LIST_SIZE]; static texture_cache_data_entry_t texture_cache_data_entry_tbl[NUM_TEXTURE_CACHE_DATA]; static int texture_cache_data_entry_num = 0; -static texture_cache_funcs texture_cache_data_func = { &texture_cache_data_search, &texture_cache_data_entry, - &texture_cache_alloc }; +static texture_cache_funcs texture_cache_data_func = { + &texture_cache_data_search, + &texture_cache_data_entry, + &texture_cache_alloc, +}; -static texture_cache_t texture_cache_data = { &texture_cache_data_func, - &texture_buffer_data[0], - &texture_buffer_data[TEX_BUFFER_DATA_SIZE], - &texture_buffer_data[0], - nullptr, - nullptr, - FALSE, - 0 }; +static texture_cache_t texture_cache_data = { + &texture_cache_data_func, + &texture_buffer_data[0], + &texture_buffer_data[TEX_BUFFER_DATA_SIZE], + &texture_buffer_data[0], + nullptr, + nullptr, + FALSE, + 0, +}; /* .bss cache functions */ void* texture_cache_bss_search(void* addr); int texture_cache_bss_entry(void* original, void* converted); -static texture_cache_funcs texture_cache_bss_func = { &texture_cache_bss_search, &texture_cache_bss_entry, - &texture_cache_alloc }; +static texture_cache_funcs texture_cache_bss_func = { + &texture_cache_bss_search, + &texture_cache_bss_entry, + &texture_cache_alloc, +}; -static texture_cache_t texture_cache_bss = { &texture_cache_bss_func, - &texture_buffer_bss[0], - &texture_buffer_bss[TEX_BUFFER_BSS_SIZE], - &texture_buffer_bss[0], - nullptr, - nullptr, - FALSE, - 0 }; +static texture_cache_t texture_cache_bss = { + &texture_cache_bss_func, + &texture_buffer_bss[0], + &texture_buffer_bss[TEX_BUFFER_BSS_SIZE], + &texture_buffer_bss[0], + nullptr, + nullptr, + FALSE, + 0, +}; extern void emu64_texture_cache_data_entry_set(void* begin, void* end) { texture_cache_data_entry_t* entry = &texture_cache_data_entry_tbl[texture_cache_data_entry_num]; @@ -57,17 +78,17 @@ extern void emu64_texture_cache_data_entry_set(void* begin, void* end) { static texture_cache_t* texture_cache_select(void* addr) { int i; - if (aflags[5] < 1 && (addr < _f_rodata || addr > _e_data)) { - for (i = 0; i < texture_cache_data_entry_num; i++) { - if (addr >= texture_cache_data_entry_tbl[i].start && addr < texture_cache_data_entry_tbl[i].end) { - return &texture_cache_data; - } - } - - return &texture_cache_bss; + if (aflags[AFLAGS_SKIP_TEXTURE_CONV] >= 1 || (addr >= _f_rodata && addr <= _e_data)) { + return &texture_cache_data; } - return &texture_cache_data; + for (i = 0; i < texture_cache_data_entry_num; i++) { + if (addr >= texture_cache_data_entry_tbl[i].start && addr < texture_cache_data_entry_tbl[i].end) { + return &texture_cache_data; + } + } + + return &texture_cache_bss; } static bool texture_cache_is_overflow(texture_cache_t* cache) { @@ -162,7 +183,7 @@ extern void emu64_refresh() { } /* Helper function to convert N64 texture format to Dolphin format */ -u16 emu64::fmtxtbl[8][4] = { +const u16 emu64::fmtxtbl[8][4] = { { GX_TF_CMPR, -1, GX_TF_RGB5A3, GX_TF_RGBA8 }, /* G_IM_FMT_RGBA */ { -1, -1, -1, -1 }, /* G_IM_FMT_YUV */ { GX_TF_C4, GX_TF_C8, 0xA, -1 }, /* G_IM_FMT_CI */ @@ -387,51 +408,49 @@ void emu64::emu64_init() { this->texture_scale_t = 32.0f; } +void emu64::emu64_cleanup() { + GXSetColorUpdate(GX_TRUE); + GXSetAlphaUpdate(GX_TRUE); +} + void emu64::printInfo() { + int i; + // Display DL stack %d level. this->Printf0("DLスタック表示 %d level\n", this->DL_stack_level); - - for (int i = 0; i < this->DL_stack_level; i++) { - this->Printf0("%d %08x %08x\n", i, (u32)this->DL_stack[i], convert_partial_address((u32)this->DL_stack[i])); + for (i = 0; i < this->DL_stack_level; i++) { + this->Printf0("%d %08x %08x\n", i, this->DL_stack[i], convert_partial_address(this->DL_stack[i])); } // Display last 16 DLs. this->Printf0("最終16DL表示\n"); - for (int i = 0; i < DL_HISTORY_COUNT; i++) { - Gfx* gfx_p = this->dl_history[(this->dl_history_start + i) % DL_HISTORY_COUNT]; + for (i = 0; i < DL_HISTORY_COUNT; i++) { + Gfx* gfx = this->dl_history[(i + this->dl_history_start) % DL_HISTORY_COUNT]; // Print out the raw Gfx command - this->Printf0("%016llx ", *(u64*)gfx_p); + this->Printf0("%016llx ", gfx->force_structure_alignment); // Convert the second word to resolve the RAM address if it's a segment - this->Printf0(" %08x\n", convert_partial_address(gfx_p->words.w1)); + this->Printf0(" %08x\n", convert_partial_address(gfx->words.w1)); } // Display segment table. this->Printf0("セグメントテーブル表示\n"); - for (int i = 0; i < NUM_SEGMENTS; i++) { - this->Printf0("%2d %08x %08x\n", i, (u32)this->segments[i], convert_partial_address((u32)this->segments[i])); + for (i = 0; i < NUM_SEGMENTS; i++) { + this->Printf0("%2d %08x %08x\n", i, this->segments[i], convert_partial_address(this->segments[i])); } } -void emu64::panic(char* fmt, char* file, int line) { - if (file != nullptr) { - this->Printf0(VT_COL(RED, WHITE) "emu64 PANIC!! in %s line %d" VT_RST "\n", file, line); - } else { - this->Printf0(VT_COL(RED, WHITE) "emu64 PANIC!!" VT_RST "\n"); - } - - if (fmt != nullptr) { - this->Printf0("%s", fmt); - } - +void emu64::panic(char* msg, char* file, int line) { + this->Printf0(VT_COL(RED, WHITE) "emu64 PANIC!! in %s line %d" VT_RST "\n", file, line); + this->Printf0("%s", msg); this->printInfo(); } void emu64::emu64_change_ucode(void* ucode_p) { if (this->ucode_len != 0) { for (int i = 0; i < this->ucode_len; i++) { - if (ucode_p == this->ucode_info[i].ucode_p) { - this->ucode_type = this->ucode_info[i].type; + if (ucode_p == this->ucode_info_p[i].ucode_p) { + this->ucode_type = this->ucode_info_p[i].type; return; } } @@ -450,8 +469,12 @@ extern void get_dol_wd_ht(unsigned int siz, unsigned int in_wd, unsigned int in_ unsigned int blk_ht; get_blk_wd_ht(siz, &blk_wd, &blk_ht); - *wd = in_wd + (blk_wd - 1) & ~(blk_wd - 1); - *ht = in_ht + (blk_ht - 1) & ~(blk_ht - 1); + + unsigned int w = blk_wd - 1; + unsigned int h = blk_ht - 1; + + *wd = in_wd + w & ~w; + *ht = in_ht + h & ~h; } void emu64::texconv_tile(u8* addr, u8* converted_addr, unsigned int wd, unsigned int fmt, unsigned int siz, @@ -561,42 +584,58 @@ u8* emu64::texconv_tile_new(u8* addr, unsigned int wd, unsigned int fmt, unsigne u8* converted_addr = (u8*)(*texture_cache->funcs->search)(addr); /* Check if we already converted this texture */ - if (converted_addr == nullptr) { - u32 len = get_dol_tex_siz(siz, (end_wd - start_wd) + 1, (end_ht - start_ht) + 1); + if (converted_addr != nullptr) { + return converted_addr; + } - converted_addr = (u8*)(*texture_cache->funcs->alloc)(texture_cache, len); - if (converted_addr != nullptr) { - /* Convert from N64 -> GC */ - this->texconv_tile(addr, converted_addr, wd, fmt, siz, start_wd, start_ht, end_wd, end_ht, line_siz); - /* Update cache & store entry */ - DCStoreRange(converted_addr, len); - (*texture_cache->funcs->entry)(addr, converted_addr); - } + u32 len = get_dol_tex_siz(siz, (end_wd - start_wd) + 1, (end_ht - start_ht) + 1); + + converted_addr = (u8*)(*texture_cache->funcs->alloc)(texture_cache, len); + if (converted_addr != nullptr) { + /* Convert from N64 -> GC */ + this->texconv_tile(addr, converted_addr, wd, fmt, siz, start_wd, start_ht, end_wd, end_ht, line_siz); + /* Update cache & store entry */ + DCStoreRange(converted_addr, len); + (*texture_cache->funcs->entry)(addr, converted_addr); } return converted_addr; } u16* emu64::tlutconv_new(u16* tlut, unsigned int tlut_fmt, unsigned int count) { + u16* converted_tlut; + u32 len; + texture_cache_t* texture_cache; + if (tlut == nullptr) { return nullptr; } - texture_cache_t* texture_cache = texture_cache_select(tlut); - u16* converted_tlut = (u16*)(*texture_cache->funcs->search)(tlut); + if (tlut_fmt == EMU64_TLUT_IA16) { + this->err_count++; + return nullptr; + } + + EMU64_TIMED_SEGMENT_BEGIN(); + + texture_cache = texture_cache_select(tlut); + converted_tlut = (u16*)(*texture_cache->funcs->search)(tlut); /* Check if we already converted this texture */ - if (converted_tlut == nullptr) { - u32 len = get_dol_tlut_size(count); + if (converted_tlut != nullptr) { + return converted_tlut; + } - converted_tlut = (u16*)(*texture_cache->funcs->alloc)(texture_cache, len); - if (converted_tlut != nullptr) { - /* Convert from N64 -> GC */ - this->tlutconv(tlut, converted_tlut, count, tlut_fmt); - /* Update cache & store entry */ - DCStoreRange(converted_tlut, len); - (*texture_cache->funcs->entry)(tlut, converted_tlut); - } + EMU64_TIMED_SEGMENT_END(texture_cache_select_time); + + len = get_dol_tlut_siz(count); + converted_tlut = (u16*)(*texture_cache->funcs->alloc)(texture_cache, len); + if (converted_tlut != nullptr) { + /* Convert from N64 -> GC */ + this->tlutconv(tlut, converted_tlut, count, tlut_fmt); + /* Update cache & store entry */ + DCStoreRange(converted_tlut, len); + (*texture_cache->funcs->entry)(tlut, converted_tlut); } return converted_tlut; @@ -610,12 +649,12 @@ void emu64::tlutconv(u16* src_tlut, u16* dst_tlut, unsigned int count, unsigned } } -static const combiner_tev_alpha tbla[8] = { { GX_CA_APREV, GX_CA_KONST }, { GX_CA_TEXA, GX_CA_TEXA }, - { GX_CA_TEXA, GX_CA_TEXA }, { GX_CA_A1, GX_CA_A1 }, - { GX_CA_RASA, GX_CA_RASA }, { GX_CA_A2, GX_CA_A2 }, - { GX_CA_KONST, GX_CA_A0 }, { GX_CA_ZERO, GX_CA_ZERO } }; +static const u8 tbla[8][2] = { + { GX_CA_APREV, GX_CA_KONST }, { GX_CA_TEXA, GX_CA_TEXA }, { GX_CA_TEXA, GX_CA_TEXA }, { GX_CA_A1, GX_CA_A1 }, + { GX_CA_RASA, GX_CA_RASA }, { GX_CA_A2, GX_CA_A2 }, { GX_CA_KONST, GX_CA_A0 }, { GX_CA_ZERO, GX_CA_ZERO }, +}; -static const combiner_tev_color tblc[32] = { +static const u8 tblc[32][4] = { { GX_CC_CPREV, GX_CC_CPREV, GX_CC_CPREV, GX_CC_CPREV }, { GX_CC_TEXC, GX_CC_TEXC, GX_CC_TEXC, GX_CC_TEXC }, { GX_CC_TEXC, GX_CC_TEXC, GX_CC_TEXC, GX_CC_TEXC }, { GX_CC_C1, GX_CC_C1, GX_CC_C1, GX_CC_C1 }, { GX_CC_RASC, GX_CC_RASC, GX_CC_RASC, GX_CC_RASC }, { GX_CC_C2, GX_CC_C2, GX_CC_C2, GX_CC_C2 }, @@ -631,11 +670,29 @@ static const combiner_tev_color tblc[32] = { { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, - { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO } + { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, { GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO }, }; +/* TODO: @nonmatching */ int emu64::replace_combine_to_tev(Gfx* g) { Gsetcombine_new* setcombine = (Gsetcombine_new*)g; + Gsetcombine_tev sc_tev; + GXTevColorArg a_color; + GXTevColorArg b_color; + GXTevColorArg c_color; + GXTevColorArg d_color; + GXTevAlphaArg a_alpha; + GXTevAlphaArg b_alpha; + GXTevAlphaArg c_alpha; + GXTevAlphaArg d_alpha; + int a; + int b; + int c; + int d; + int Aa; + int Ab; + int Ac; + int Ad; if ((setcombine->a0 == G_CCMUX_TEXEL1 || setcombine->b0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1 || setcombine->d0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1_ALPHA) || @@ -649,29 +706,37 @@ int emu64::replace_combine_to_tev(Gfx* g) { return -1; } - Gsetcombine_tev sc_tev; + a = setcombine->a0; + b = setcombine->b0; + c = setcombine->c0; + d = setcombine->d0; - int a0_color0 = tblc[(int)setcombine->a0].color0; - int b0_color1 = tblc[(int)setcombine->b0].color1; - int c0_color2 = tblc[(int)setcombine->c0].color2; - int d0_color3 = tblc[(int)setcombine->d0].color3; + Aa = setcombine->Aa0; + Ab = setcombine->Ab0; + Ac = setcombine->Ac0; + Ad = setcombine->Ad0; - int Aa0_alpha0 = tbla[(int)setcombine->Aa0].alpha0; - int Ab0_alpha0 = tbla[(int)setcombine->Ab0].alpha0; - int Ac0_alpha1 = tbla[(int)setcombine->Ac0].alpha1; - int Ad0_alpha0 = tbla[(int)setcombine->Ad0].alpha0; + a_color = (GXTevColorArg)tblc[a][0]; + b_color = (GXTevColorArg)tblc[b][1]; + c_color = (GXTevColorArg)tblc[c][2]; + d_color = (GXTevColorArg)tblc[d][3]; + + a_alpha = (GXTevAlphaArg)tbla[Aa][0]; + b_alpha = (GXTevAlphaArg)tbla[Ab][0]; + c_alpha = (GXTevAlphaArg)tbla[Ac][1]; + d_alpha = (GXTevAlphaArg)tbla[Ad][0]; /* Set TEV color 0 */ - if (b0_color1 == TEV_ZERO) { - sc_tev.a0 = TEV_ZERO; - sc_tev.b0 = b0_color1; - sc_tev.c0 = c0_color2; - sc_tev.d0 = d0_color3; - } else if (b0_color1 == d0_color3) { - sc_tev.a0 = b0_color1; - sc_tev.b0 = a0_color0; - sc_tev.c0 = c0_color2; - sc_tev.d0 = TEV_ZERO; + if (b_color == GX_CC_ZERO) { + sc_tev.a0 = GX_CC_ZERO; + sc_tev.b0 = b_color; + sc_tev.c0 = c_color; + sc_tev.d0 = d_color; + } else if (b_color == d_color) { + sc_tev.a0 = b_color; + sc_tev.b0 = a_color; + sc_tev.c0 = c_color; + sc_tev.d0 = GX_CC_ZERO; } else { g->setcombine.cmd = G_SETCOMBINE_NOTEV; @@ -679,57 +744,67 @@ int emu64::replace_combine_to_tev(Gfx* g) { } /* Set TEV alpha 0 */ - if (Ab0_alpha0 == TEV_ALPHA_ZERO) { + if (a_alpha == TEV_ALPHA_ZERO) { sc_tev.Aa0 = TEV_ALPHA_ZERO; - sc_tev.Ab0 = Aa0_alpha0; - sc_tev.Ac0 = Ac0_alpha1; - sc_tev.Ad0 = Ad0_alpha0; - } else if (Ab0_alpha0 == Ad0_alpha0) { - sc_tev.Aa0 = Ab0_alpha0; - sc_tev.Ab0 = Aa0_alpha0; - sc_tev.Ac0 = Ac0_alpha1; + sc_tev.Ab0 = a_alpha; + sc_tev.Ac0 = c_alpha; + sc_tev.Ad0 = d_alpha; + } else if (b_alpha == d_alpha) { + sc_tev.Aa0 = b_alpha; + sc_tev.Ab0 = a_alpha; + sc_tev.Ac0 = c_alpha; sc_tev.Ad0 = TEV_ALPHA_ZERO; } else { g->setcombine.cmd = G_SETCOMBINE_NOTEV; return -1; } - int a1_color0 = tblc[(int)setcombine->a1].color0; - int b1_color1 = tblc[(int)setcombine->b1].color1; - int c1_color2 = tblc[(int)setcombine->c1].color2; - int d1_color3 = tblc[(int)setcombine->d1].color3; + a = setcombine->a1; + b = setcombine->b1; + c = setcombine->c1; + d = setcombine->d1; - int Aa1_alpha0 = tbla[(int)setcombine->Aa1].alpha0; - int Ab1_alpha0 = tbla[(int)setcombine->Ab1].alpha0; - int Ac1_alpha1 = tbla[(int)setcombine->Ac1].alpha1; - int Ad1_alpha0 = tbla[(int)setcombine->Ad1].alpha0; + Aa = setcombine->Aa1; + Ab = setcombine->Ab1; + Ac = setcombine->Ac1; + Ad = setcombine->Ad1; + + a_color = (GXTevColorArg)tblc[a][0]; + b_color = (GXTevColorArg)tblc[b][1]; + c_color = (GXTevColorArg)tblc[c][2]; + d_color = (GXTevColorArg)tblc[d][3]; + + a_alpha = (GXTevAlphaArg)tbla[Aa][0]; + b_alpha = (GXTevAlphaArg)tbla[Ab][0]; + c_alpha = (GXTevAlphaArg)tbla[Ac][1]; + d_alpha = (GXTevAlphaArg)tbla[Ad][0]; /* Set TEV color 1 */ - if (b1_color1 == TEV_ZERO) { - sc_tev.a1 = TEV_ZERO; - sc_tev.b1 = a1_color0; - sc_tev.c1 = c1_color2; - sc_tev.d1 = d1_color3; - } else if (b1_color1 == d1_color3) { - sc_tev.a1 = b1_color1; - sc_tev.b1 = a1_color0; - sc_tev.c1 = c1_color2; - sc_tev.d1 = TEV_ZERO; + if (b_color == GX_CC_ZERO) { + sc_tev.a1 = GX_CC_ZERO; + sc_tev.b1 = a_color; + sc_tev.c1 = c_color; + sc_tev.d1 = d_color; + } else if (b_color == d_color) { + sc_tev.a1 = b_color; + sc_tev.b1 = a_color; + sc_tev.c1 = c_color; + sc_tev.d1 = GX_CC_ZERO; } else { g->setcombine.cmd = G_SETCOMBINE_NOTEV; return -1; } /* Set TEV alpha 1 */ - if (Ab1_alpha0 == TEV_ALPHA_ZERO) { + if (b_alpha == TEV_ALPHA_ZERO) { sc_tev.Aa1 = TEV_ALPHA_ZERO; - sc_tev.Ab1 = Aa1_alpha0; - sc_tev.Ac1 = Ac1_alpha1; - sc_tev.Ad1 = Ad1_alpha0; - } else if (Ab1_alpha0 == Ad1_alpha0) { - sc_tev.Aa1 = Ab1_alpha0; - sc_tev.Ab1 = Aa1_alpha0; - sc_tev.Ac1 = Ac1_alpha1; + sc_tev.Ab1 = a_alpha; + sc_tev.Ac1 = c_alpha; + sc_tev.Ad1 = d_alpha; + } else if (b_alpha == d_alpha) { + sc_tev.Aa1 = b_alpha; + sc_tev.Ab1 = a_alpha; + sc_tev.Ac1 = c_alpha; sc_tev.Ad1 = TEV_ALPHA_ZERO; } else { g->setcombine.cmd = G_SETCOMBINE_NOTEV; @@ -743,112 +818,159 @@ int emu64::replace_combine_to_tev(Gfx* g) { } int emu64::combine_auto() { - Gsetcombine_new* setcombine = (Gsetcombine_new*)&this->combine; - bool two_cycle = (this->othermode_high & G_CYC_2CYCLE) != 0; + const Gsetcombine_new* const setcombine = (Gsetcombine_new*)&this->combine_gfx; + GXTevColorArg color_a; + GXTevColorArg color_b; + GXTevColorArg color_c; + GXTevColorArg color_d; + GXTevAlphaArg alpha_b; + GXTevAlphaArg alpha_a; + GXTevAlphaArg alpha_c; + GXTevAlphaArg alpha_d; + int a; + int b; + int c; + int d; + int Aa; + int Ab; + int Ac; + int Ad; - if (setcombine->a0 == G_CCMUX_TEXEL1 || setcombine->b0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1 || - setcombine->d0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1_ALPHA || - setcombine->Aa0 == G_ACMUX_TEXEL1 || setcombine->Ab0 == G_ACMUX_TEXEL1 || setcombine->Ac0 == G_ACMUX_TEXEL1 || - setcombine->Ad0 == G_ACMUX_TEXEL1 || - two_cycle && - (setcombine->a1 == G_CCMUX_TEXEL1 || setcombine->b1 == G_CCMUX_TEXEL1 || setcombine->c1 == G_CCMUX_TEXEL1 || - setcombine->d1 == G_CCMUX_TEXEL1 || setcombine->c1 == G_CCMUX_TEXEL1_ALPHA || - setcombine->Aa1 == G_ACMUX_TEXEL1 || setcombine->Ab1 == G_ACMUX_TEXEL1 || - setcombine->Ac1 == G_ACMUX_TEXEL1 || setcombine->Ad1 == G_ACMUX_TEXEL1)) { + int stage; + int tevstages; + GXTevStageID color_stages; + GXTevStageID alpha_stages; + + int two_cycle = (this->othermode_high & G_CYC_2CYCLE) != 0; + + if ((setcombine->a0 == G_CCMUX_TEXEL1 || setcombine->b0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1 || + setcombine->d0 == G_CCMUX_TEXEL1 || setcombine->c0 == G_CCMUX_TEXEL1_ALPHA || + setcombine->Aa0 == G_ACMUX_TEXEL1 || setcombine->Ab0 == G_ACMUX_TEXEL1 || setcombine->Ac0 == G_ACMUX_TEXEL1 || + setcombine->Ad0 == G_ACMUX_TEXEL1) || + (two_cycle && (setcombine->a1 == G_CCMUX_TEXEL1 || setcombine->b1 == G_CCMUX_TEXEL1 || + setcombine->c1 == G_CCMUX_TEXEL1 || setcombine->d1 == G_CCMUX_TEXEL1 || + setcombine->c1 == G_CCMUX_TEXEL1_ALPHA) || + setcombine->Aa1 == G_ACMUX_TEXEL1 || setcombine->Ab1 == G_ACMUX_TEXEL1 || setcombine->Ac1 == G_ACMUX_TEXEL1 || + setcombine->Ad1 == G_ACMUX_TEXEL1)) { return -1; } - int stage = GX_TEVSTAGE0; + stage = GX_TEVSTAGE0; - GXTevColorArg a = (GXTevColorArg)tblc[setcombine->b0].color1; /* b0 */ - GXTevColorArg b = (GXTevColorArg)tblc[setcombine->a0].color0; /* a0 */ - GXTevColorArg c = (GXTevColorArg)tblc[setcombine->c0].color2; /* c0 */ - GXTevColorArg d = (GXTevColorArg)tblc[setcombine->d0].color3; /* d0 */ + a = setcombine->a0; + b = setcombine->b0; + c = setcombine->c0; + d = setcombine->d0; - GXTevAlphaArg alpha_b = (GXTevAlphaArg)tbla[setcombine->Aa0].alpha0; /* Aa0 */ - GXTevAlphaArg alpha_a = (GXTevAlphaArg)tbla[setcombine->Ab0].alpha0; /* Ab0 */ - GXTevAlphaArg alpha_c = (GXTevAlphaArg)tbla[setcombine->Ac0].alpha1; /* Ac0 */ - GXTevAlphaArg alpha_d = (GXTevAlphaArg)tbla[setcombine->Ad0].alpha0; /* Ad0 */ + Aa = setcombine->Aa0; + Ab = setcombine->Ab0; + Ac = setcombine->Ac0; + Ad = setcombine->Ad0; - int color_stages, tevstages; - if (a == GX_CC_ZERO) { - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, b, c, d); - color_stages = 1; - } else if (a == d) { - GXSetTevColorIn(GX_TEVSTAGE0, a, b, c, GX_CC_ZERO); - color_stages = 1; + color_b = (GXTevColorArg)tblc[a][0]; /* a0 */ + color_a = (GXTevColorArg)tblc[b][1]; /* b0 */ + color_c = (GXTevColorArg)tblc[c][2]; /* c0 */ + color_d = (GXTevColorArg)tblc[d][3]; /* d0 */ + + alpha_b = (GXTevAlphaArg)tbla[Aa][0]; /* Aa0 */ + alpha_a = (GXTevAlphaArg)tbla[Ab][0]; /* Ab0 */ + alpha_c = (GXTevAlphaArg)tbla[Ac][1]; /* Ac0 */ + alpha_d = (GXTevAlphaArg)tbla[Ad][0]; /* Ad0 */ + + if (color_a == GX_CC_ZERO) { + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, color_b, color_c, color_d); + color_stages = (GXTevStageID)1; + } else if (color_a == color_d) { + GXSetTevColorIn(GX_TEVSTAGE0, color_a, color_b, color_c, GX_CC_ZERO); + color_stages = (GXTevStageID)1; } else { - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, b, c, d); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, color_b, color_c, color_d); + color_stages = (GXTevStageID)1; GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, a, c, GX_CC_CPREV); - color_stages = 2; + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, color_a, color_c, GX_CC_CPREV); + color_stages = (GXTevStageID)((int)color_stages + 1); } if (alpha_a == GX_CA_ZERO) { GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, alpha_b, alpha_c, alpha_d); - tevstages = 1; + alpha_stages = (GXTevStageID)1; } else if (alpha_a == alpha_d) { GXSetTevAlphaIn(GX_TEVSTAGE0, alpha_a, alpha_b, alpha_c, GX_CA_ZERO); - tevstages = 1; + alpha_stages = (GXTevStageID)1; } else { GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, alpha_b, alpha_c, alpha_d); + alpha_stages = (GXTevStageID)1; GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, alpha_a, alpha_c, GX_CA_APREV); - tevstages = 2; + alpha_stages = (GXTevStageID)(alpha_stages + 1); } - if (tevstages < color_stages) { - tevstages = color_stages; + if (color_stages > alpha_stages) { + alpha_stages = color_stages; } - for (stage; stage < tevstages; stage++) { + tevstages = alpha_stages; + for (stage; stage < alpha_stages; stage++) { GXSetTevOrder((GXTevStageID)stage, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); } if (two_cycle) { - GXTevColorArg a2 = (GXTevColorArg)tblc[setcombine->b1].color1; /* b1 */ - GXTevColorArg b2 = (GXTevColorArg)tblc[setcombine->a1].color0; /* a1 */ - GXTevColorArg c2 = (GXTevColorArg)tblc[setcombine->c1].color2; /* c1 */ - GXTevColorArg d2 = (GXTevColorArg)tblc[setcombine->d1].color3; /* d1 */ + a = setcombine->a1; + b = setcombine->b1; + c = setcombine->c1; + d = setcombine->d1; - GXTevAlphaArg alpha_b2 = (GXTevAlphaArg)tbla[setcombine->Aa1].alpha0; /* Aa1 */ - GXTevAlphaArg alpha_a2 = (GXTevAlphaArg)tbla[setcombine->Ab1].alpha0; /* Ab1 */ - GXTevAlphaArg alpha_c2 = (GXTevAlphaArg)tbla[setcombine->Ac1].alpha1; /* Ac1 */ - GXTevAlphaArg alpha_d2 = (GXTevAlphaArg)tbla[setcombine->Ad1].alpha0; /* Ad1 */ + Aa = setcombine->Aa1; + Ab = setcombine->Ab1; + Ac = setcombine->Ac1; + Ad = setcombine->Ad1; - /* @BUG - Is this alpha_c2 != GX_CC_ZERO check supposed to be alpha_c2 != GX_CA_ZERO? */ - if (c2 != GX_CC_ZERO || d2 != GX_CC_CPREV || alpha_c2 != GX_CC_ZERO || alpha_d2 != GX_CA_APREV) { - if (a2 == GX_CC_ZERO) { - GXSetTevColorIn((GXTevStageID)stage, GX_CC_ZERO, b2, c2, d2); - color_stages = stage + 1; - } else if (a2 == d2) { - GXSetTevColorIn((GXTevStageID)stage, a2, b2, c2, GX_CC_ZERO); - color_stages = stage + 1; + GXTevColorArg color_b = (GXTevColorArg)tblc[a][0]; /* a1 */ + GXTevColorArg color_a = (GXTevColorArg)tblc[b][1]; /* b1 */ + GXTevColorArg color_c = (GXTevColorArg)tblc[c][2]; /* c1 */ + GXTevColorArg color_d = (GXTevColorArg)tblc[d][3]; /* d1 */ + + GXTevAlphaArg alpha_b = (GXTevAlphaArg)tbla[Aa][0]; /* Aa1 */ + GXTevAlphaArg alpha_a = (GXTevAlphaArg)tbla[Ab][0]; /* Ab1 */ + GXTevAlphaArg alpha_c = (GXTevAlphaArg)tbla[Ac][1]; /* Ac1 */ + GXTevAlphaArg alpha_d = (GXTevAlphaArg)tbla[Ad][0]; /* Ad1 */ + + /* @BUG - Is this alpha_c != GX_CC_ZERO check supposed to be alpha_c != GX_CA_ZERO? */ + if (color_c != GX_CC_ZERO || color_d != GX_CC_CPREV || alpha_c != GX_CC_ZERO || alpha_d != GX_CA_APREV) { + if (color_a == GX_CC_ZERO) { + GXSetTevColorIn((GXTevStageID)stage, GX_CC_ZERO, color_b, color_c, color_d); + color_stages = (GXTevStageID)(stage + 1); + } else if (color_a == color_d) { + GXSetTevColorIn((GXTevStageID)stage, color_a, color_b, color_c, GX_CC_ZERO); + color_stages = (GXTevStageID)(stage + 1); } else { - GXSetTevColorIn((GXTevStageID)stage, GX_CC_ZERO, b2, c2, d2); - GXSetTevColorOp((GXTevStageID)(stage + 1), GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevColorIn((GXTevStageID)(stage + 1), GX_CC_ZERO, a2, c2, GX_CC_CPREV); - color_stages = stage + 2; + GXSetTevColorIn((GXTevStageID)stage, GX_CC_ZERO, color_b, color_c, color_d); + color_stages = (GXTevStageID)(stage + 1); + GXSetTevColorOp(color_stages, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColorIn(color_stages, GX_CC_ZERO, color_a, color_c, GX_CC_CPREV); + color_stages = (GXTevStageID)((int)color_stages + 1); } - if (alpha_a2 == GX_CA_ZERO) { - GXSetTevAlphaIn((GXTevStageID)stage, GX_CA_ZERO, alpha_b2, alpha_c2, alpha_d2); - tevstages = stage + 1; - } else if (alpha_a2 == alpha_d2) { - GXSetTevAlphaIn((GXTevStageID)stage, alpha_a2, alpha_b2, alpha_c2, GX_CA_ZERO); - tevstages = stage + 1; + if (alpha_a == GX_CA_ZERO) { + GXSetTevAlphaIn((GXTevStageID)stage, GX_CA_ZERO, alpha_b, alpha_c, alpha_d); + alpha_stages = (GXTevStageID)(stage + 1); + } else if (alpha_a == alpha_d) { + GXSetTevAlphaIn((GXTevStageID)stage, alpha_a, alpha_b, alpha_c, GX_CA_ZERO); + alpha_stages = (GXTevStageID)(stage + 1); } else { - GXSetTevAlphaIn((GXTevStageID)stage, GX_CA_ZERO, alpha_b2, alpha_c2, alpha_d2); - GXSetTevAlphaOp((GXTevStageID)(stage + 1), GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - GXSetTevAlphaIn((GXTevStageID)(stage + 1), GX_CA_ZERO, alpha_a2, alpha_c2, GX_CA_APREV); - tevstages = stage + 2; + GXSetTevAlphaIn((GXTevStageID)stage, GX_CA_ZERO, alpha_b, alpha_c, alpha_d); + alpha_stages = (GXTevStageID)(stage + 1); + GXSetTevAlphaOp(alpha_stages, GX_TEV_SUB, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaIn(alpha_stages, GX_CA_ZERO, alpha_a, alpha_c, GX_CA_APREV); + alpha_stages = (GXTevStageID)((int)alpha_stages + 1); } - if (tevstages < color_stages) { - tevstages = color_stages; + if (color_stages > alpha_stages) { + alpha_stages = color_stages; } - for (stage; stage < tevstages; stage++) { + tevstages = alpha_stages; + for (stage; stage < alpha_stages; stage++) { GXSetTevOrder((GXTevStageID)stage, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR0A0); } } @@ -861,9 +983,9 @@ int emu64::combine_auto() { } int emu64::combine_tev() { - Gsetcombine_tev combine_tev = *((Gsetcombine_tev*)&this->combine); + Gsetcombine_tev combine_tev = *((Gsetcombine_tev*)&this->combine_gfx); - if (((this->combine.words.w0 >> 24) & 0xFF) == G_SETCOMBINE_TEV) { + if (((this->combine_gfx.words.w0 >> 24) & 0xFF) == G_SETCOMBINE_TEV) { if (aflags[AFLAGS_FORCE_TEV_COMBINE_MODE] != 0) { if (aflags[AFLAGS_FORCE_TEV_COMBINE_MODE] == 1) { static u32 c = TEV_SHADE; @@ -952,7 +1074,7 @@ int emu64::combine_tev() { (GXTevAlphaArg)combine_tev.Ac0, (GXTevAlphaArg)combine_tev.Ad0); if ((this->othermode_high & G_CYC_2CYCLE) == 0 || - ((this->combine.words.w1 & 0xFFFF) == 0xFFF0 && ((this->combine.words.w0 & 0xFFF) == 0xFF8))) { + ((this->combine_gfx.words.w1 & 0xFFFF) == 0xFFF0 && ((this->combine_gfx.words.w0 & 0xFFF) == 0xFF8))) { GXSetNumTexGens(1); GXSetNumTevStages(1); @@ -986,7 +1108,7 @@ int emu64::combine_tev() { GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); } - if (aflags[ALFAGS_TEV_ALPHA_KONST] != 0 || aflags[AFLAGS_2TRIS] != 0) { + if (aflags[ALFAGS_TEV_ALPHA_KONST] != 0 || aflags[AFLAGS_WIREFRAME] != 0) { GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); } } @@ -1008,7 +1130,7 @@ static u64 highlow_errs[NUM_COMBINER_HIGHLOW_ERRS]; #define COMBINE_CONSTEXPR(mode0, mode1) (gsDPSetCombineLERPInline(mode0, mode1)) void emu64::combine_manual() { - u64 combine_mode = *(u64*)&this->combine; + u64 combine_mode = *(u64*)&this->combine_gfx; switch (combine_mode) { case gsDPSetCombineLERPInline(TEXEL0, 0, SHADE, TEXEL0, 0, 0, 0, TEXEL0, SHADE, ENVIRONMENT, PRIMITIVE, @@ -1445,7 +1567,8 @@ void emu64::combine_manual() { highlow_errs[i] = combine_mode; this->err_count++; /* ### Unsupported combine mode ###\ncase 0x%16llx:// */ - this->Printf0(VT_COL(YELLOW, BLACK) "### 未対応のコンバインモードです ###\ncase 0x%16llx:// ", combine_mode); + this->Printf0(VT_COL(YELLOW, BLACK) "### 未対応のコンバインモードです ###\ncase 0x%16llx:// ", + combine_mode); this->print_combine(combine_mode); this->Printf0("\n" VT_RST); } @@ -1461,3 +1584,3857 @@ void emu64::combine_manual() { } } } + +void emu64::combine() { + if ((u8)this->combine_gfx.setcombine.cmd == G_SETCOMBINE_TEV) { + this->combine_tev(); + } else { + GXSetNumTexGens(2); + GXSetNumTevStages(1); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ONE); + GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevColorIn(GX_TEVSTAGE2, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_CPREV); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); + GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_APREV); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevOrder(GX_TEVSTAGE2, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevColorOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE2, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + + int manual = TRUE; + + if (aflags[AFLAGS_COMBINE_AUTO] && this->combine_auto() == 0) { + manual = FALSE; + } + + if (manual) { + this->combine_manual(); + } + + if (aflags[ALFAGS_TEV_ALPHA_KONST] || aflags[AFLAGS_WIREFRAME]) { + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevAlphaIn(GX_TEVSTAGE2, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + } + } +} + +/* TODO: @nonmatching */ +void emu64::setup_texture_tile(int tile) { + u16 stride; + u16 sizes; + u16 sizet; + u16 o_width; + u16 o_height; + u32 tile_ht; + u32 tile_wd; + u32 width; + u32 twd0; + u32 tht0; + u32 height; + void* orig_addr; + void* converted_addr; + Gsettile* settile; + Gloadblock* loadblock; + u8* tmem_addr; + Gloadtile* loadtile; + Gsetimg_new* setimg_new; + unsigned int w; + unsigned int h; + GXTexFmts dol_fmt; + + EMU64_TIMED_SEGMENT_BEGIN(); + settile = &this->settile_cmds[tile]; + if (settile->line == 0) { + return; + } + + u32 tmem = settile->tmem; + EMU64_ASSERTLINE(tmem / 4 < number(tmem_map), 2862); + + tmem_addr = (u8*)tmem_map[tmem / 4].addr; + loadblock = &tmem_map[tmem / 4].loadblock; + loadtile = &tmem_map[tmem / 4].loadtile; + setimg_new = (Gsetimg_new*)&tmem_map[tmem / 4].setimg2; + + if (tmem_addr == nullptr) { + this->err_count++; + return; + } + + int shift = (4 - settile->siz); + stride = settile->line << shift; + sizes = settile->masks != 0 ? (1 << settile->masks) : (1 << 10); + sizet = settile->maskt != 0 ? (1 << settile->maskt) : (1 << 10); + + if (setimg_new->setimg2.isDolphin) { + width = EXPAND_WIDTH(setimg_new->setimg2.wd); + height = EXPAND_HEIGHT(setimg_new->setimg2.ht); + } else { + int wd = setimg_new->setimg2.wd; + if (wd == 0) { + wd = loadblock->th; + if (wd == 0) { + width = stride; + height = (u16)((((loadblock->sh) + 1) << (2 - settile->siz)) / stride); + } else { + width = (u16)(((1 << (15 - settile->siz)) - 1) / wd + 1); + height = (u16)((((loadblock->sh) + 1) << (2 - settile->siz)) / width); + } + } else { + width = (u16)(((wd + 1) << setimg_new->setimg.siz) >> settile->siz); + height = 0; + } + } + + dol_fmt.raw = cvtN64ToDol(this->settile_cmds[tile].fmt, settile->siz); + + if (setimg_new->setimg2.isDolphin) { + twd0 = width; + tht0 = height; + orig_addr = tmem_addr; + converted_addr = tmem_addr; + } else { + if (setimg_new->setimg2.wd == 0) { + twd0 = width; + orig_addr = tmem_addr; + tht0 = height; + + if (this->settile_cmds[tile].ct != 0) { + u32 tlen = this->settilesize_dolphin_cmds[tile].tlen + 1; + if (height > tlen) { + tht0 = tlen; + } + } + + if (tht0 > sizet) { + tht0 = sizet; + } + + if (tmem_addr == this->texture_info[tile].img_addr) { + /* Translation: ### This tile is already loaded: %08x\n */ + EMU64_INFOF("### このタイルはすでにロードされています %08x\n", tmem_addr); + + if ((this->settile_cmds[tile].fmt != G_IM_FMT_CI || + this->texture_info[tile].tlut_name == this->settile_cmds[tile].palette) && + aflags[AFLAGS_SKIP_TILE_SETUP] != 0) { + /* Translation: ### Skip tile setup\n */ + EMU64_INFO("### タイルの設定はスキップします\n"); + return; + } + } + + u32 t; + if (loadblock->th) { + t = 0; + } else { + t = this->settile_cmds[tile].line; + } + + converted_addr = this->texconv_block_new(tmem_addr, width, height, this->settile_cmds[tile].fmt, + this->settile_cmds[tile].siz, t); + } else { + // Issue is here + u32 w0 = loadtile->sl << setimg_new->setimg.siz; + w0 >>= this->settile_cmds[tile].siz; + u32 h0 = loadtile->tl; + + u32 w1 = loadtile->sh << setimg_new->setimg.siz; + w1 >>= this->settile_cmds[tile].siz; + u32 h1 = loadtile->th; + + tile_wd = w1 / 4 - w0 / 4; + tile_ht = h1 / 4 - h0 / 4; + twd0 = tile_wd + 1; + tht0 = tile_ht + 1; + + u32 ofs0 = ((w0 / 4) + width * (loadtile->tl / 4)); + u32 ofs1 = ofs0 << this->settile_cmds[tile].siz; + orig_addr = tmem_addr + ofs1 / 2; + + if (orig_addr == this->texture_info[tile].img_addr) { + /* Translation: ### This tile is already loaded: %08x\n */ + EMU64_INFOF("### このタイルはすでにロードされています %08x\n", tmem_addr); + + if ((this->settile_cmds[tile].fmt != G_IM_FMT_CI || + this->texture_info[tile].tlut_name == this->settile_cmds[tile].palette) && + aflags[AFLAGS_SKIP_TILE_SETUP] != 0) { + /* Translation: ### Skip tile setup\n */ + EMU64_INFO("### タイルの設定はスキップします\n"); + return; + } + } + + converted_addr = this->texconv_tile_new(tmem_addr, width, this->settile_cmds[tile].fmt, + this->settile_cmds[tile].siz, 0, 0, tile_wd, tile_ht, 0); + } + } + + if ((this->geometry_mode & G_TEXTURE_GEN_LINEAR) != 0 && aflags[AFLAGS_DO_TEXTURE_LINEAR_CONVERT] != 0) { + converted_addr = TextureLinearConvert(converted_addr, twd0, tht0, this->settile_cmds[tile].fmt, + this->settile_cmds[tile].siz); + } + + /* TODO: Go back and rename a lot of these variables */ + EMU64_INFOF("\n : setup_texture_tile %s %s SIZE0=%dx? SIZE0X=%dx%d SIZE7=%dx%d TILE=%dx%d\n", + get_fmt_str(this->settile_cmds[tile].fmt), get_siz_str(this->settile_cmds[tile].siz), stride, sizes, + sizet, o_width, o_height, width, height); + + if (converted_addr == nullptr) { + this->Printf0("TEXTURE OVER!!\n"); + this->err_count++; + return; + } + + if (setimg_new->setimg2.isDolphin == FALSE) { + /* Translation: Texture conversion %08x %s %s %dx%d .data %d .bss %d\n */ + EMU64_WARNF("テクスチャ変換 %08x %s %s %dx%d .data %d .bss %d\n", tmem_addr, + get_fmt_str(this->settile_cmds[tile].fmt), get_siz_str(this->settile_cmds[tile].siz), width, height, + (s32)texture_cache_data.buffer_current - (s32)texture_cache_data.buffer_start, + (s32)texture_cache_bss.buffer_current - (s32)texture_cache_bss.buffer_start); + } + + /* Convert to GC width & height */ + if (setimg_new->setimg2.isDolphin == FALSE) { + get_dol_wd_ht(this->settile_cmds[tile].siz, twd0, tht0, &w, &h); + } else { + w = twd0; + h = tht0; + } + + GXTexWrapMode wrap_s = GX_CLAMP; + GXTexWrapMode wrap_t = GX_CLAMP; + + /* X wrapmode */ + switch (w) { + case 4: + case 8: + case 16: + case 32: + case 64: + case 128: + case 256: + case 512: + if (this->settile_cmds[tile].cs != 0) { + int tw = EXPAND_WIDTH(this->settilesize_dolphin_cmds[tile].slen); + if (this->settile_cmds[tile].ms && w < tw) { + wrap_s = GX_MIRROR; + } else { + wrap_s = GX_CLAMP; + } + } else { + if (this->settile_cmds[tile].ms != 0) { + wrap_s = GX_MIRROR; + } else { + wrap_s = GX_REPEAT; + } + } + break; + default: + wrap_s = GX_CLAMP; + break; + } + + /* Y wrapmode */ + switch (h) { + case 4: + case 8: + case 16: + case 32: + case 64: + case 128: + case 256: + case 512: + if (this->settile_cmds[tile].ct != 0) { + int th = EXPAND_WIDTH(this->settilesize_dolphin_cmds[tile].tlen); + if (this->settile_cmds[tile].mt && h < th) { + wrap_t = GX_MIRROR; + } else { + wrap_t = GX_CLAMP; + } + } else { + if (this->settile_cmds[tile].mt != 0) { + wrap_t = GX_MIRROR; + } else { + wrap_t = GX_REPEAT; + } + } + break; + default: + wrap_t = GX_CLAMP; + break; + } + + this->texture_info[tile].img_addr = orig_addr; + this->texture_info[tile].format = this->settile_cmds[tile].fmt; + this->texture_info[tile].size = this->settile_cmds[tile].siz; + this->texture_info[tile].width = w; + this->texture_info[tile].height = h; + + if (this->settile_cmds[tile].fmt == G_IM_FMT_CI) { + int pal = this->settile_cmds[tile].palette; + this->texture_info[tile].tlut_name = pal; + GXInitTexObjCI(&this->tex_objs[tile], converted_addr, w, h, dol_fmt.citexfmt, wrap_s, wrap_t, GX_FALSE, pal); + EMU64_INFOF("GXInitTexObjCI tile_no=%d %dx%d pal_no=%d\n", tile, w, h, this->settile_cmds[tile].palette); + } else { + this->texture_info[tile].tlut_name = 0xFF; + GXInitTexObj(&this->tex_objs[tile], converted_addr, w, h, dol_fmt.texfmt, wrap_s, wrap_t, GX_FALSE); + EMU64_INFOF("GXInitTexObj tile_no=%d %dx%d\n", tile, w, h); + } + + if (((this->othermode_high & G_TF_BILERP) == 0 || (this->othermode_high & G_CYC_COPY) != 0 || + (aflags[AFLAGS_TEX_GEN_LOD_MODE] == 1)) && + aflags[AFLAGS_TEX_GEN_LOD_MODE] != 2) { + GXInitTexObjLOD(&this->tex_objs[tile], GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); + } else if (aflags[AFLAGS_TEX_GEN_LOD_MODE] == 3) { + GXInitTexObjLOD(&this->tex_objs[tile], GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_TRUE, GX_ANISO_1); + } + + GXLoadTexObj(&this->tex_objs[tile], (GXTexMapID)tile); + EMU64_TIMED_SEGMENT_END(setuptex_time); +} + +void emu64::blend_mode() { + if ((this->othermode_low & ZMODE_DEC) == ZMODE_DEC && + (this->geometry_mode & G_DECAL_ALL) == (G_DECAL_GEQUAL | G_DECAL_SPECIAL)) { + GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_NOOP); + } else if ((this->othermode_low & ZMODE_DEC) == ZMODE_DEC && + (this->geometry_mode & G_DECAL_ALL) == G_DECAL_SPECIAL) { + GXSetBlendMode(GX_BM_BLEND, GX_BL_DSTALPHA, GX_BL_INVDSTALPHA, GX_LO_NOOP); + } else if ((this->othermode_low & (IM_RD | FORCE_BL)) == (IM_RD | FORCE_BL)) { + GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + } else { + GXSetBlendMode(GX_BM_NONE, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_NOOP); + } +} + +void emu64::alpha_compare() { + u32 gequal = + ((this->othermode_low & (AA_EN | CVG_X_ALPHA | ALPHA_CVG_SEL)) == (AA_EN | CVG_X_ALPHA | ALPHA_CVG_SEL) && + (this->othermode_low & (CVG_DST_SAVE | ZMODE_XLU)) == 0); + + u32 ac_threshold = (this->othermode_low & G_AC_DITHER) == G_AC_THRESHOLD; + u8 tex_edge_alpha = this->tex_edge_alpha; + if (aflags[AFLAGS_OVERRIDE_TEXEDGEALPHA] != 0) { + tex_edge_alpha = (u8)aflags[AFLAGS_OVERRIDE_TEXEDGEALPHA]; + } + + GXCompare comp1 = gequal ? GX_GEQUAL : GX_ALWAYS; + GXCompare comp0 = ac_threshold ? GX_GEQUAL : GX_ALWAYS; + GXSetAlphaCompare(comp0, this->blend_color.rgba.a, GX_AOP_AND, comp1, tex_edge_alpha); + GXSetZCompLoc(ac_threshold == 0 && !gequal); +} + +void emu64::zmode() { + static u8 compare_enable = GX_FALSE; + static GXCompare compare_func = GX_NEVER; + static u8 update_enable = GX_FALSE; + static u8 zcomp = GX_FALSE; + + if ((this->othermode_low & Z_CMP) != 0) { + compare_enable = GX_TRUE; + if ((this->othermode_low & ZMODE_DEC) == ZMODE_DEC) { + u32 decal_mode = this->geometry_mode & G_DECAL_ALWAYS; + + compare_func = + (decal_mode == G_DECAL_LEQUAL) + ? GX_LEQUAL + : ((decal_mode == G_DECAL_GEQUAL) ? GX_GEQUAL + : ((decal_mode == G_DECAL_EQUAL) ? GX_EQUAL : GX_ALWAYS)); + if (aflags[AFLAGS_DECAL_OFFSET_MODE] != 0) { + compare_func = (aflags[AFLAGS_DECAL_OFFSET_MODE] == 1) + ? GX_LEQUAL + : ((aflags[AFLAGS_DECAL_OFFSET_MODE] == 2) + ? GX_GEQUAL + : ((aflags[AFLAGS_DECAL_OFFSET_MODE] == 3) ? GX_EQUAL : GX_ALWAYS)); + } + + if ((this->geometry_mode & G_DECAL_SPECIAL) != 0) { + if (decal_mode == G_DECAL_GEQUAL) { + GXSetColorUpdate(GX_FALSE); + GXSetAlphaUpdate(GX_TRUE); + } else if (decal_mode == G_DECAL_LEQUAL) { + GXSetColorUpdate(GX_TRUE); + GXSetAlphaUpdate(GX_FALSE); + } else { + GXSetColorUpdate(GX_TRUE); + GXSetAlphaUpdate(GX_FALSE); + } + } else { + GXSetColorUpdate(GX_TRUE); + GXSetAlphaUpdate(GX_FALSE); + } + } else { + compare_func = GX_LESS; + } + + update_enable = (this->othermode_low & Z_UPD) != 0; + zcomp = false; + } else { + if ((this->othermode_low & Z_UPD) != 0) { + compare_enable = GX_TRUE; + compare_func = GX_ALWAYS; + update_enable = GX_TRUE; + zcomp = false; + } else { + + compare_enable = GX_FALSE; + compare_func = GX_ALWAYS; + update_enable = GX_FALSE; + zcomp = true; + } + } + + if (aflags[AFLAGS_WIREFRAME] != 0) { + compare_enable = GX_FALSE; + } + + GXSetZMode(compare_enable, compare_func, update_enable); +} + +void emu64::cullmode() { + GXCullMode cullmode; + if (aflags[AFLAGS_SET_CULLMODE] == 0) { + /* Cull modes seem to be inverted between N64 and GC */ + cullmode = (GXCullMode)(((this->geometry_mode >> 8) & (G_CULL_FRONT >> 8)) | + ((this->geometry_mode >> 10) & (G_CULL_BACK >> 10))); + } else if (aflags[AFLAGS_SET_CULLMODE] == 1) { /* Inverse mapping mode */ + switch (this->geometry_mode & G_CULL_BOTH) { + case G_CULL_FRONT: + cullmode = GX_CULL_BACK; + break; + case G_CULL_BACK: + cullmode = GX_CULL_FRONT; + break; + case G_CULL_BOTH: + cullmode = GX_CULL_ALL; + break; + default: + cullmode = GX_CULL_NONE; + break; + } + } else if (aflags[AFLAGS_SET_CULLMODE] == 2) { /* Direct mapping mode */ + switch (this->geometry_mode & G_CULL_BOTH) { + case G_CULL_BACK: + cullmode = GX_CULL_BACK; + break; + case G_CULL_FRONT: + cullmode = GX_CULL_FRONT; + break; + case G_CULL_BOTH: + cullmode = GX_CULL_ALL; + break; + default: + cullmode = GX_CULL_NONE; + break; + } + } else { /* Directly set cull mode. 3 = GX_CULL_FRONT, 4 = GX_CULL_BACK, 5 = GX_CULL_ALL */ + cullmode = (GXCullMode)(aflags[AFLAGS_SET_CULLMODE] - 2); + } + + /* Culling is disabled when 2 tris mode is active */ + if (aflags[AFLAGS_WIREFRAME] != 0) { + cullmode = GX_CULL_NONE; + } + + GXSetCullMode(cullmode); +} + +void emu64::texture_gen(int tex) { + // clang-format off + static const float shift_tbl[] = { + 1.0f, + 2.0f, + 4.0f, + 8.0f, + 16.0f, + 32.0f, + 64.0f, + 128.0f, + 256.0f, + 512.0f, + 1024.0f, + 1.0f / 32.0f, /* 0.03125f */ + 1.0f / 16.0f, /* 0.0625f */ + 1.0f / 8.0f, /* 0.125f */ + 1.0f / 4.0f, /* 0.25f */ + 1.0f / 2.0f /* 0.5f */ + }; + // clang-format on + + GC_Mtx mm; /* Model-view matrix */ + GC_Mtx ml; /* Look-at matrix */ + GC_Mtx mf; /* Finalized texture matrix */ + GC_Mtx ms; /* Scale matrix */ + GC_Mtx mt; /* Translation matrix */ + GC_Mtx mn; /* Scale-Translation normalization matrix */ + + /* Setup lookat matrix */ + + /* LookAt X */ + ml[0][0] = (f32)this->lookAt.x.x / 128.0f; /* 0.0078125f */ + ml[0][1] = (f32)this->lookAt.x.y / 128.0f; + ml[0][2] = (f32)this->lookAt.x.z / 128.0f; + ml[0][3] = 0.0f; + + /* LookAt Y */ + ml[1][0] = (f32)this->lookAt.y.x / 128.0f; + ml[1][1] = (f32)this->lookAt.y.y / 128.0f; + ml[1][2] = (f32)this->lookAt.y.z / 128.0f; + ml[1][3] = 0.0f; + + /* LookAt Z */ + ml[2][0] = 0.0f; + ml[2][1] = 0.0f; + ml[2][2] = 1.0f; + ml[2][3] = 0.0f; + + MTXIdentity(mf); + + /* This is dead code, as the aflag to utilize it is only present in DnM+ */ + MTXCopy(this->model_view_mtx_stack[this->mtx_stack_size], mm); + guMtxNormalize(mm); + mm[0][3] = 0.0f; + mm[1][3] = 0.0f; + mm[2][3] = 0.0f; + + /* Apply look-at and default translation & scale */ + MTXScale(ms, 0.5f, 0.5f, 0.0f); + MTXTrans(mt, 0.5f, 0.5f, 1.0f); + MTXConcat(mt, ms, mn); + MTXConcat(mn, ml, mf); + + /* Apply texture scaling */ + float x = ((64.0f * 32768.0f) / this->texture_scale_s) / 64.0f; + float y = ((64.0f * 32768.0f) / this->texture_scale_t) / 64.0f; + + MTXScale(ms, x, y, 1.0f); /* 2,097,152 = 2^21, 1/64 = 0.015625 */ + MTXConcat(ms, mf, mf); + + /* Apply texture shift */ + MTXScale(ms, 1.0f / shift_tbl[this->settile_cmds[tex].shifts], 1.0f / shift_tbl[this->settile_cmds[tex].shiftt], + 1.0f); + MTXConcat(ms, mf, mf); + + /* Apply texture position */ + u16 sl = this->settilesize_dolphin_cmds[tex].sl; + u16 tl = this->settilesize_dolphin_cmds[tex].tl; + float x0 = fastcast_float(&sl) / 16.0f; + float y0 = fastcast_float(&tl) / 16.0f; + + MTXTrans(mt, -x0, -y0, 0.0f); + MTXConcat(mt, mf, mf); + + /* Convert size to be in units of texture width & height */ + float x1 = 1.0f / fastcast_float(&this->texture_info[tex].width); + float y1 = 1.0f / fastcast_float(&this->texture_info[tex].height); + MTXScale(ms, x1, y1, 1.0f); + MTXConcat(ms, mf, mf); + + /* Load texture */ + GXTexMtx id = (GXTexMtx)(GX_TEXMTX0 + tex * 3); + GXLoadTexMtxImm(mf, id, GX_MTX3x4); + GXSetTexCoordGen((GXTexCoordID)tex, GX_TG_MTX3x4, GX_TG_NRM, id); +} + +void emu64::texture_matrix() { + // clang-format off + static const float shift_tbl[] = { + 1.0f, + 2.0f, + 4.0f, + 8.0f, + 16.0f, + 32.0f, + 64.0f, + 128.0f, + 256.0f, + 512.0f, + 1024.0f, + 1.0f / 32.0f, /* 0.03125f */ + 1.0f / 16.0f, /* 0.0625f */ + 1.0f / 8.0f, /* 0.125f */ + 1.0f / 4.0f, /* 0.25f */ + 1.0f / 2.0f /* 0.5f */ + }; + // clang-format on + + EMU64_ASSERTLINE_DEBUG(this, 4036); + if (this->texture_gfx.on != 0) { + GC_Mtx m; + u16 uls0; + u16 ult0; + + f32 bilerp_adjust; /* bilerp center adjust */ + float muls; + float mult; + float lrs; + float lrt; + + float x32; + float y32; + + if ((this->texture_adjust_mode == 1 || (this->othermode_high & G_TF_BILERP) == 0 || + (this->othermode_high & G_CYC_COPY) != 0 || aflags[AFLAGS_TEX_GEN_LOD_MODE] == 1) && + aflags[AFLAGS_TEX_GEN_LOD_MODE] != 2) { + bilerp_adjust = 0.0f; + } else { + bilerp_adjust = 8.0f; + } + + static float scaleS = 0.5f; + static float scaleT = -0.5f; + static float transS = 0.5f; + static float transT = 0.5f; + + x32 = this->texture_scale_s; + y32 = this->texture_scale_t; + + if (this->use_dolphin_settile[0] == true) { + this->settile_cmds[0].shifts = this->settile_dolphin_cmds[0].shift_s; + this->settile_cmds[0].shiftt = this->settile_dolphin_cmds[0].shift_t; + } + + if (this->use_dolphin_settile[1] == true) { + this->settile_cmds[1].shifts = this->settile_dolphin_cmds[1].shift_s; + this->settile_cmds[1].shiftt = this->settile_dolphin_cmds[1].shift_t; + } + + EMU64_ASSERTLINE_DEBUG(this, 4092); + if (this->texture_info[0].width != 0 && this->texture_info[0].height != 0) { + float uls = x32 * shift_tbl[this->settile_cmds[0].shifts]; + float ult = y32 * shift_tbl[this->settile_cmds[0].shiftt]; + + uls0 = this->settilesize_dolphin_cmds[0].sl; + ult0 = this->settilesize_dolphin_cmds[0].tl; + + muls = uls * ((fastcast_float(&uls0) - bilerp_adjust) * (1.0f / 16.0f)); /* 0.0625f */ + mult = ult * ((fastcast_float(&ult0) - bilerp_adjust) * (1.0f / 16.0f)); /* 0.0625f */ + lrs = muls + (uls * fastcast_float(&this->texture_info[0].width)); + lrt = mult + (ult * fastcast_float(&this->texture_info[0].height)); + + if (mult == lrt) { + OSReport(VT_COL(RED, WHITE) "mult = %8.3f lrt = %8.3f ult0 = %d y32 = %8.3f texobj[0].ht = %d\n" VT_RST, + mult, lrt, ult0, y32, this->texture_info[0].height); + } + + if (muls == lrs) { + OSReport(VT_COL(RED, WHITE) "muls = %8.3f lrs = %8.3f uls0 = %d x32 = %8.3f texobj[0].wd = %d\n" VT_RST, + muls, lrs, uls0, x32, this->texture_info[0].width); + } + + C_MTXLightOrtho(m, mult, lrt, muls, lrs, scaleS, scaleT, transS, transT); + GXLoadTexMtxImm(m, GX_TEXMTX0, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX0); + + if ((this->geometry_mode & G_TEXTURE_GEN) != 0) { + this->texture_gen(0); + } + } + + /* Setup texture tile 1 */ + if (this->texture_info[1].width != 0 && this->texture_info[1].height != 0) { + float uls = x32 * shift_tbl[this->settile_cmds[1].shifts]; + float ult = y32 * shift_tbl[this->settile_cmds[1].shiftt]; + + uls0 = this->settilesize_dolphin_cmds[1].sl; + ult0 = this->settilesize_dolphin_cmds[1].tl; + + muls = uls * ((fastcast_float(&uls0) - bilerp_adjust) * (1.0f / 16.0f)); /* 0.0625f */ + mult = ult * ((fastcast_float(&ult0) - bilerp_adjust) * (1.0f / 16.0f)); /* 0.0625f */ + lrs = muls + (uls * fastcast_float(&this->texture_info[1].width)); + lrt = mult + (ult * fastcast_float(&this->texture_info[1].height)); + + if (mult == lrt) { + OSReport(VT_COL(RED, WHITE) "mult = %8.3f lrt = %8.3f ult0 = %d y32 = %8.3f texobj[1].ht = %d\n" VT_RST, + mult, lrt, ult0, y32, this->texture_info[1].height); + } + + if (muls == lrs) { + OSReport(VT_COL(RED, WHITE) "muls = %8.3f lrs = %8.3f uls0 = %d x32 = %8.3f texobj[1].wd = %d\n" VT_RST, + muls, lrs, uls0, x32, this->texture_info[1].width); + } + + C_MTXLightOrtho(m, mult, lrt, muls, lrs, scaleS, scaleT, transS, transT); + GXLoadTexMtxImm(m, GX_TEXMTX1, GX_MTX2x4); + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, GX_TEXMTX1); + + if ((this->geometry_mode & G_TEXTURE_GEN) != 0) { + this->texture_gen(1); + } + } + } +} + +void emu64::set_position(unsigned int vtx) { + Vertex* emu_vtx = &this->vertices[vtx]; + + if (this->using_nonshared_mtx && (emu_vtx->flag & MTX_NONSHARED) == MTX_SHARED) { + /* Translation: The nonshared triangle group is broken because a shared vertex is mixed in with the nonshared + * triangle group! */ + this->Printf0("非シェアードの三角形群にシェアードの頂点が混ざっているので破綻しました!\n"); + } + + if ((emu_vtx->flag & MTX_NONSHARED) != MTX_SHARED) { + if (!this->using_nonshared_mtx) { + GC_Mtx& m = this->position_mtx_stack[this->mtx_stack_size]; + + if (aflags[AFLAGS_USE_GUVECMULT]) { + guMtxXFM1F_dol(m, emu_vtx->position.x, emu_vtx->position.y, emu_vtx->position.z, &emu_vtx->position.x, + &emu_vtx->position.y, &emu_vtx->position.z); + guMtxXFM1F_dol(this->model_view_mtx, emu_vtx->normal.x, emu_vtx->normal.y, emu_vtx->normal.z, + &emu_vtx->normal.x, &emu_vtx->normal.y, &emu_vtx->normal.z); + } else { + MTXMultVec(m, &emu_vtx->position, &emu_vtx->position); + MTXMultVec(this->model_view_mtx, &emu_vtx->normal, &emu_vtx->normal); + } + + emu_vtx->flag |= MTX_NONSHARED; + /* Translation: Nonshared vertices are mixed with the shared triangle group */ + EMU64_LOG("シェアードの三角形群に非シェアードの頂点が混ざっている\n"); + } else if ((this->geometry_mode & G_TEXTURE_GEN) != 0) { + + if (aflags[AFLAGS_USE_GUVECMULT]) { + guMtxXFM1F_dol(this->model_view_mtx, emu_vtx->normal.x, emu_vtx->normal.y, emu_vtx->normal.z, + &emu_vtx->normal.x, &emu_vtx->normal.y, &emu_vtx->normal.z); + } else { + MTXMultVec(this->model_view_mtx, &emu_vtx->normal, &emu_vtx->normal); + } + + /* Translation: Reflection mapping applied to nonshared vertex */ + EMU64_LOG("シェアードじゃない反射マッピングの頂点\n"); + } + } + + if ((this->othermode_low & ZMODE_DEC) == ZMODE_DEC && (this->geometry_mode & G_ZBUFFER) != 0 && + (this->geometry_mode & G_DECAL_EQUAL) == 0) { + Vec tmp; + float ox, oy, oz; + float ow; + float x, y, z, w; + u32 decal_mode = (this->geometry_mode & G_DECAL_ALWAYS); + + if ((emu_vtx->flag & MTX_NONSHARED) != MTX_SHARED) { + + if (aflags[AFLAGS_USE_GUVECMULT]) { + guMtxXFM1F_dol(this->position_mtx_stack[this->mtx_stack_size], emu_vtx->position.x, emu_vtx->position.y, + emu_vtx->position.z, &ox, &oy, &oz); + } else { + MTXMultVec(this->position_mtx_stack[this->mtx_stack_size], &emu_vtx->position, &tmp); + ox = tmp.x; + oy = tmp.y; + oz = tmp.z; + } + } else { + ox = emu_vtx->position.x; + oy = emu_vtx->position.y; + oz = emu_vtx->position.z; + } + + if (aflags[AFLAGS_SKIP_W_CALCULATION] == 0) { + guMtxXFM1F_dol2w(this->projection_mtx, this->projection_type, ox, oy, oz, &x, &y, &z, &w); + z /= w; + } else { + guMtxXFM1F_dol2(this->projection_mtx, this->projection_type, ox, oy, oz, &x, &y, &z); + w = 1.0f; + } + + if (decal_mode == 0) { + z -= 0.0001f; + } else if (decal_mode == G_DECAL_GEQUAL) { + z += 0.0001f; + } + + z *= w; + if (aflags[AFLAGS_PROJECTION_CALC_W]) { + guMtxXFM1F_dol6w(this->projection_mtx, this->projection_type, x, y, z, w, &ox, &oy, &oz, &ow); + + ox /= ow; + oy /= ow; + oz /= ow; + } else { + guMtxXFM1F_dol6w1(this->projection_mtx, this->projection_type, x, y, z, w, &ox, &oy, &oz); + } + + if ((emu_vtx->flag & MTX_NONSHARED) != MTX_SHARED) { + f32 fx, fy, fz; + guMtxXFM1F_dol7(this->position_mtx_stack[this->mtx_stack_size], ox, oy, oz, &fx, &fy, &fz); + GXPosition3f32(fx, fy, fz); + } else { + GXPosition3f32(ox, oy, oz); + } + } else { + GXPosition3f32(emu_vtx->position.x, emu_vtx->position.y, emu_vtx->position.z); + } + + /* If geometry mode lighting is enabled, write vertex normals */ + if ((this->geometry_mode & G_LIGHTING) != 0) { + GXNormal3f32(emu_vtx->normal.x, emu_vtx->normal.y, emu_vtx->normal.z); + } + + /* Vertex color */ + GXColor1u32(emu_vtx->color.raw); + + /* If texture is on, write texture coordinates */ + if (this->texture_gfx.on != G_OFF) { + GXTexCoord2s16(emu_vtx->tex_coords.s, emu_vtx->tex_coords.t); + } +} + +void emu64::set_position3(unsigned int v0, unsigned int v1, unsigned int v2) { + int wireframe = aflags[AFLAGS_WIREFRAME]; + + if (wireframe) { + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 4); + } + + if (EMU64_CAN_DRAW_POLYGON()) { + this->set_position(v0); + this->set_position(v1); + this->set_position(v2); + } else { + this->set_position(v0); + this->set_position(v0); + this->set_position(v0); + } + + if (wireframe) { + this->set_position(v0); + GXEnd(); + } +} + +void emu64::set_position4(unsigned int v0, unsigned int v1, unsigned int v2, unsigned int v3) { + int wireframe = aflags[AFLAGS_WIREFRAME]; + + if (wireframe) { + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 5); + } + + if (EMU64_CAN_DRAW_POLYGON()) { + this->set_position(v0); + this->set_position(v1); + this->set_position(v2); + this->set_position(v3); + } else { + this->set_position(v0); + this->set_position(v0); + this->set_position(v0); + this->set_position(v0); + } + + if (wireframe) { + this->set_position(v0); + GXEnd(); + } +} + +void emu64::setup_1tri_2tri_1quad(unsigned int vtx_idx) { + EMU64_TIMED_SEGMENT_BEGIN(); + + Vertex* vtx_p = &this->vertices[vtx_idx]; + + if ((vtx_p->flag & MTX_NONSHARED) == MTX_SHARED) { + EMU64_LOG("setup_1tri_2tri_1quad シェアード\n"); /* Translation: setup_1tri_2tri_1quad shared */ + GXSetCurrentMtx(SHARED_MTX); + this->using_nonshared_mtx = false; + } else { + EMU64_LOG("setup_1tri_2tri_1quad ノンシェアード\n"); /* Translation: setup_1tri_2tri_1quad nonshared */ + GXSetCurrentMtx(NONSHARED_MTX); + this->using_nonshared_mtx = true; + } + + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGBA, GX_F32, 0); + if ((this->geometry_mode & G_LIGHTING) != 0) { + GXSetVtxDesc(GX_VA_NRM, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_CLR_RGB, GX_F32, 0); + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + } else { + GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); + } + + if (this->texture_gfx.on != G_OFF) { + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 0); + } + + EMU64_TIMED_SEGMENT_END(setup_time); +} + +void emu64::draw_1tri_2tri_1quad(unsigned int n_verts, ...) { + va_list list; + unsigned int v0; + unsigned int v1; + unsigned int v2; + unsigned int v3; + + va_start(list, n_verts); + + /* 1 Quad */ + if (n_verts == 4) { + if ((aflags[2] & 3) == 0) { + if (aflags[22] == 0) { + GXBegin(GX_QUADS, GX_VTXFMT0, n_verts); + } + + v0 = va_arg(list, unsigned int); + v1 = va_arg(list, unsigned int); + v2 = va_arg(list, unsigned int); + v3 = va_arg(list, unsigned int); + this->set_position4(v0, v1, v2, v3); + + if (aflags[22] == 0) { + GXEnd(); + } + + goto exit; + } + } + + /* 1 Triangle */ + if (n_verts == 3) { + if ((aflags[2] & 1) == 0) { + if (aflags[22] == 0) { + GXBegin(GX_TRIANGLES, GX_VTXFMT0, n_verts); + } + + v0 = va_arg(list, unsigned int); + v1 = va_arg(list, unsigned int); + v2 = va_arg(list, unsigned int); + this->set_position3(v0, v1, v2); + + if (aflags[22] == 0) { + GXEnd(); + } + + goto exit; + } + } + + /* 2 Triangles */ + if (n_verts == 6) { + if ((aflags[2] & 2) == 0) { + if (aflags[22] == 0) { + GXBegin(GX_TRIANGLES, GX_VTXFMT0, n_verts); + } + + v0 = va_arg(list, unsigned int); + v1 = va_arg(list, unsigned int); + v2 = va_arg(list, unsigned int); + this->set_position3(v0, v1, v2); + + v0 = va_arg(list, unsigned int); + v1 = va_arg(list, unsigned int); + v2 = va_arg(list, unsigned int); + this->set_position3(v0, v1, v2); + + if (aflags[22] == 0) { + GXEnd(); + } + + goto exit; + } + } + +exit: + this->rdp_pipe_sync_needed = TRUE; +} + +/* aflag dirty settings */ +#define DIRTY_SET_ALL -1 +#define DIRTY_SET_NONE 0 +#define DIRTY_SET_TILE 1 + +/* Dirty flag macros */ +#define IS_DIRTY(flag) (this->dirty_flags[flag] != false) +#define CLEAR_DIRTY(flag) (this->dirty_flags[flag] = false) +#define SET_DIRTY(flag) (this->dirty_flags[flag] = true) + +void emu64::fill_rectangle(float x0, float y0, float x1, float y1) { + if ((this->othermode_high & G_CYC_COPY) != 0) { + x1 += 1.0f; + y1 += 1.0f; + + GXSetNumTevStages(1); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL); + GXSetZMode(GX_FALSE, GX_NEVER, GX_FALSE); + this->dirty_flags[EMU64_DIRTY_FLAG_COMBINE] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_HIGH] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_LOW] = true; + } else { + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); + } + + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTING] = true; + GXSetNumTexGens(0); + GXSetProjection(this->ortho_mtx, GX_ORTHOGRAPHIC); + GXSetCurrentMtx(GX_PNMTX0); + + this->using_nonshared_mtx = false; + this->dirty_flags[EMU64_DIRTY_FLAG_PROJECTION_MTX] = true; + + x0 = x0 * (1.0f / 320.0f) - 1.0f; + y0 = y0 * (1.0f / 240.0f) - -1.0f; + x1 = x1 * (1.0f / 320.0f) - 1.0f; + y1 = y1 * (1.0f / 240.0f) - -1.0f; + + GXSetCullMode(GX_CULL_NONE); + this->dirty_flags[EMU64_DIRTY_FLAG_GEOMETRYMODE] = true; + + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_F32, 0); + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2f32(x0, y0); + GXPosition2f32(x1, y0); + GXPosition2f32(x1, y1); + GXPosition2f32(x0, y1); + GXEnd(); + + this->rdp_pipe_sync_needed = true; +} + +void emu64::draw_rectangle(Gtexrect2* texrect) { + float x0; + float y0; + float x1; + float y1; + float s0; + float t0; + float s1; + float t1; + + float xh = texrect->xh / 4.0f; + float yh = texrect->yh / 4.0f; + float xl = texrect->xl / 4.0f; + float yl = texrect->yl / 4.0f; + float s = texrect->s / 32.0f; + float t = texrect->t / 32.0f; + int tile = texrect->tile; + float dsdx = texrect->dsdx / 1024.0f; + float dtdy = texrect->dtdy / 1024.0f; + + if (((this->othermode_high & G_CYC_COPY) != 0 && aflags[AFLAGS_FORCE_G_CYC_COPY] == FALSE) || + aflags[AFLAGS_FORCE_G_CYC_COPY] == TRUE) { + xl += 1.0f; + yl += 1.0f; + GXSetNumTevStages(1); + GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC); + GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_TEXA); + GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); + GXSetZMode(GX_FALSE, GX_NEVER, GX_FALSE); + this->dirty_flags[EMU64_DIRTY_FLAG_COMBINE] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_HIGH] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_LOW] = true; + } + + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTING] = true; + + float s_end = s + dsdx * (xl - xh); + float t_end = t + dtdy * (yl - yh); + + float center; + if ((this->texture_adjust_mode == G_TA_DOLPHIN || (this->othermode_high & G_TF_BILERP) == 0 || + (this->othermode_high & G_CYC_COPY) != 0 || aflags[AFLAGS_TEX_GEN_LOD_MODE] == 1) && + aflags[AFLAGS_TEX_GEN_LOD_MODE] != 2) { + center = 0.0f; + } else { + center = 0.5f; + } + + s0 = (center + (s - this->settilesize_dolphin_cmds[tile].sl / 16.0f)) / (int)this->texture_info[tile].width; + t0 = (center + (t - this->settilesize_dolphin_cmds[tile].tl / 16.0f)) / (int)this->texture_info[tile].height; + s1 = (center + (s_end - this->settilesize_dolphin_cmds[tile].sl / 16.0f)) / (int)this->texture_info[tile].width; + t1 = (center + (t_end - this->settilesize_dolphin_cmds[tile].tl / 16.0f)) / (int)this->texture_info[tile].height; + + GXSetProjection(this->ortho_mtx, GX_ORTHOGRAPHIC); + GXSetCurrentMtx(GX_PNMTX0); + + this->using_nonshared_mtx = false; + this->dirty_flags[EMU64_DIRTY_FLAG_PROJECTION_MTX] = true; + + x0 = xh * (1.0f / 320.0f) - 1.0f; + y0 = yh * (1.0f / 240.0f) - -1.0f; + x1 = xl * (1.0f / 320.0f) - 1.0f; + y1 = yl * (1.0f / 240.0f) - -1.0f; + + GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, (GXTexMapID)tile, GX_COLOR_NULL); + + if (((this->othermode_high & G_CYC_COPY) == 0 || aflags[AFLAGS_FORCE_G_CYC_COPY] != FALSE) && + aflags[AFLAGS_FORCE_G_CYC_COPY] != TRUE) { + GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); + GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, (GXTexMapID)((tile + 1) & 7), GX_COLOR_NULL); + } + + GXSetCullMode(GX_CULL_NONE); + this->dirty_flags[EMU64_DIRTY_FLAG_GEOMETRYMODE] = true; + + GXClearVtxDesc(); + GXSetVtxDesc(GX_VA_POS, GX_DIRECT); + GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_F32, GX_FALSE); + GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_F32, GX_FALSE); + + if (aflags[AFLAGS_WIREFRAME]) { + GXBegin(GX_LINESTRIP, GX_VTXFMT0, 5); + GXPosition2f32(x0, y0); + GXTexCoord2f32(s0, t0); + GXPosition2f32(x1, y0); + GXTexCoord2f32(s1, t0); + GXPosition2f32(x1, y1); + GXTexCoord2f32(s1, t1); + GXPosition2f32(x0, y1); + GXTexCoord2f32(s0, t1); + GXPosition2f32(x0, y0); + GXTexCoord2f32(s0, t0); + GXEnd(); + } else { + GXBegin(GX_QUADS, GX_VTXFMT0, 4); + GXPosition2f32(x0, y0); + GXTexCoord2f32(s0, t0); + GXPosition2f32(x1, y0); + GXTexCoord2f32(s1, t0); + GXPosition2f32(x1, y1); + GXTexCoord2f32(s1, t1); + GXPosition2f32(x0, y1); + GXTexCoord2f32(s0, t1); + GXEnd(); + } + + this->rdp_pipe_sync_needed = true; +} + +void emu64::dirty_check(int tile, int n_tiles, int do_texture_matrix) { + if (aflags[AFLAGS_SET_DIRTY_FLAGS] != DIRTY_SET_NONE) { + if ((int)aflags[AFLAGS_SET_DIRTY_FLAGS] == DIRTY_SET_ALL) { + // memset(this->dirty_flags, TRUE, NUM_DIRTY_FLAGS); + } + + if (aflags[AFLAGS_SET_DIRTY_FLAGS] <= (NUM_DIRTY_FLAGS + DIRTY_SET_TILE - 1)) { + SET_DIRTY(aflags[AFLAGS_SET_DIRTY_FLAGS] - 1); + } + } + + EMU64_TIMED_SEGMENT_BEGIN(); + EMU64_ASSERTLINE_DEBUG(this, 4826); + + if (IS_DIRTY(EMU64_DIRTY_FLAG_PRIM_COLOR)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_PRIM_COLOR); + GXSetTevColor(GX_TEVREG1, this->primitive_color.color); + EMU64_TIMED_SEGMENT_END(dirty_primcolor_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 4833); + + if (IS_DIRTY(EMU64_DIRTY_FLAG_ENV_COLOR)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_ENV_COLOR); + GXSetTevColor(GX_TEVREG2, this->environment_color.color); + EMU64_TIMED_SEGMENT_END(dirty_envcolor_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 4840); + + if (IS_DIRTY(EMU64_DIRTY_FLAG_FOG)) { + /** + * Othermode lower's upper 16 bits are the cycle dependent "blender" register. + * The calculation can have two phases over two cycles, and the params are as such: + * P0P0|P1P1|A0A0|A1A1|M0M0|M1M1|B0B0|B1B1 + * + * The emulator is checking if the first cycle's P0 value (upper most two bits) is G_BL_CLR_FOG. + * This is equivalent to the standard GLB_c1 macro's m1a parameter. + */ + if ((this->othermode_low >> 30) == G_BL_CLR_FOG && (this->geometry_mode & G_FOG) != 0 && this->fog_zmult != 0 && + this->fog_zmult != 0 && aflags[4] == 0) { + /* The developers checked fog_zmult twice in all versions. Maybe it should've been fog_zoffset? */ + /* N64 fog position min-max calculations */ + int min = 500 - (this->fog_zoffset * 500) / this->fog_zmult; + int max = 128000 / this->fog_zmult + min; + + CLEAR_DIRTY(EMU64_DIRTY_FLAG_FOG); + + /* Calculate startz & endz fog parameters */ + f32 startz = + -guMtxXFM1F_dol3(this->projection_mtx, this->projection_type, ((f32)(u32)min - 1000.0f) / 1064.0f); + f32 endz = + -guMtxXFM1F_dol3(this->projection_mtx, this->projection_type, ((f32)(u32)max - 1000.0f) / 1016.0f); + + GXSetFog(GX_FOG_PERSP_LIN, startz, endz, this->near, this->far, this->fog_color.color); + } else { + GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, this->fog_color.color); + } + } + + EMU64_ASSERTLINE_DEBUG(this, 4864); + + if (IS_DIRTY(EMU64_DIRTY_FLAG_FILL_TEV_COLOR) || IS_DIRTY(EMU64_DIRTY_FLAG_FILL_COLOR)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_FILL_COLOR); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_FILL_TEV_COLOR); + GXSetTevColor(GX_TEVREG0, this->fill_tev_color.color); + EMU64_TIMED_SEGMENT_END(dirty_fillcolor_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 4872); + if (IS_DIRTY(EMU64_DIRTY_FLAG_COMBINE) || IS_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_HIGH)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_COMBINE); + this->combine(); + EMU64_TIMED_SEGMENT_END(dirty_combine_mode_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 4826); // TODO: check DnM+ line number + if (IS_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_HIGH)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_HIGH); + EMU64_TIMED_SEGMENT_END(dirty_othermodeh_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 4826); // TODO: check DnM+ line number + if (IS_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_LOW) || IS_DIRTY(EMU64_DIRTY_FLAG_GEOMETRYMODE)) { + this->zmode(); + this->blend_mode(); + + if (IS_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_LOW)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_OTHERMODE_LOW); + this->alpha_compare(); + EMU64_TIMED_SEGMENT_END(dirty_othermodel_time); + } + + if (IS_DIRTY(EMU64_DIRTY_FLAG_GEOMETRYMODE)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_GEOMETRYMODE); + this->cullmode(); + EMU64_TIMED_SEGMENT_END(dirty_geometory_time); + } + } + + EMU64_ASSERTLINE_DEBUG(this, 4826); // TODO: Check DnM+ line number + + /* Lights block */ + if (IS_DIRTY(EMU64_DIRTY_FLAG_LIGHTS)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_LIGHTS); + SET_DIRTY(EMU64_DIRTY_FLAG_LIGHTING); + int i; + for (i = 0; i < this->num_lights; i++) { + EmuLight* l = &this->lights[i]; + GXLightObj light_obj; + GXInitLightPos(&light_obj, l->position.x, l->position.y, l->position.z); + GXInitLightDir(&light_obj, 0.0f, 0.0f, 0.0f); + GXInitLightAttn(&light_obj, 1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f); + + if (l->attenuation.kc) { + GXInitLightDir(&light_obj, 1.0f, 0.0f, 0.0f); + GXInitLightAttn(&light_obj, 0.0f, 0.0f, 0.0f, /* a */ + l->attenuation.kc, l->attenuation.k1, l->attenuation.kq /* k */ + ); + } + + GXInitLightColor(&light_obj, l->color.color); + GXLoadLightObjImm(&light_obj, (GXLightID)(1 << i)); + } + + GXSetChanAmbColor(GX_COLOR0A0, this->lights[i].color.color); + EMU64_TIMED_SEGMENT_END(dirty_lightX_time); + this->dirty_lightX_cnt++; + } + + /* Lighting block */ + if (IS_DIRTY(EMU64_DIRTY_FLAG_LIGHTING)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_LIGHTING); + if ((this->geometry_mode & G_LIGHTING) != 0) { + if (aflags[AFLAGS_LIGHT_DISABLE_DIFFUSION] != 0) { + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + } else { + if ((this->geometry_mode & G_LIGHTING_POSITIONAL) != 0) { + GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, (1 << num_lights) - 1, GX_DF_CLAMP, + GX_AF_SPOT); + } else { + GXSetChanCtrl(GX_COLOR0, GX_TRUE, GX_SRC_REG, GX_SRC_REG, (1 << num_lights) - 1, GX_DF_CLAMP, + GX_AF_NONE); + } + + GXSetChanCtrl(GX_ALPHA0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + } + } else { + GXSetChanCtrl(GX_COLOR0A0, GX_FALSE, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); + } + + EMU64_TIMED_SEGMENT_END(dirty_light_time); + this->dirty_light_cnt++; + } + + /* Texture block */ + EMU64_ASSERTLINE_DEBUG(this, 4957); + if (do_texture_matrix >= 0) { + EMU64_TIMED_SEGMENT_BEGIN(); + /* Flags TEXTURE0/1 are checked but not set in any version of the emulator. Not sure on the names. */ + if (IS_DIRTY(EMU64_DIRTY_FLAG_TEX_TILE0) || IS_DIRTY(EMU64_DIRTY_FLAG_21) || + IS_DIRTY(EMU64_DIRTY_FLAG_TEX_TILE1) || IS_DIRTY(EMU64_DIRTY_FLAG_22)) { + SET_DIRTY(EMU64_DIRTY_FLAG_TEX_MTX); + } + + int end_tile = tile + n_tiles + 1; + for (int i = tile; i <= end_tile; i++) { + int t = i & 7; + if (IS_DIRTY(EMU64_DIRTY_FLAG_TEX_TILE0 + t) || IS_DIRTY(EMU64_DIRTY_FLAG_21 + t)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_TEX_TILE0 + t); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_21 + t); + + if (this->use_dolphin_settile[t] == true) { + Gsettile_dolphin* settile_dol_cmd; + emu64_texture_info* tex_info_p; + u16 height; + u16 width; + u32 wrap_s; + u32 wrap_t; + void* img_addr; + GXTexFmts dol_fmt; + + settile_dol_cmd = &this->settile_dolphin_cmds[t]; + tex_info_p = &this->texture_info[t]; + wrap_s = settile_dol_cmd->wrap_s; + wrap_t = settile_dol_cmd->wrap_t; + height = tex_info_p->height; + width = tex_info_p->width; + img_addr = tex_info_p->img_addr; + + dol_fmt.raw = cvtN64ToDol(tex_info_p->format, tex_info_p->size); + if (((u32)img_addr & 0x1F) != 0) { + /* Translation: Texture (%08x) alignment isn't 32 bytes */ + this->Printf0("テクスチャ(%08x)のアライメントが32バイトになっていません\n", img_addr); + img_addr = (void*)((u32)img_addr & ~0x1F); + } + + if ((this->geometry_mode & G_TEXTURE_GEN_LINEAR) != 0 && + aflags[AFLAGS_DO_TEXTURE_LINEAR_CONVERT] != 0) { + img_addr = TextureLinearConvert(img_addr, width, height, tex_info_p->format, tex_info_p->size); + } + + if (tex_info_p->format == G_IM_FMT_CI) { + GXInitTexObjCI(&this->tex_objs[t], img_addr, width, height, dol_fmt.citexfmt, + (GXTexWrapMode)wrap_s, (GXTexWrapMode)wrap_t, GX_FALSE, + settile_dol_cmd->tlut_name); + } else { + GXInitTexObj(&this->tex_objs[t], img_addr, width, height, dol_fmt.texfmt, (GXTexWrapMode)wrap_s, + (GXTexWrapMode)wrap_t, GX_FALSE); + } + + if (((this->othermode_high & G_TF_BILERP) == 0 || (this->othermode_high & G_CYC_COPY) != 0 || + aflags[AFLAGS_TEX_GEN_LOD_MODE] == 1) && + aflags[AFLAGS_TEX_GEN_LOD_MODE] != 2) { + GXInitTexObjLOD(&this->tex_objs[t], GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, + GX_ANISO_1); + } else if (aflags[AFLAGS_TEX_GEN_LOD_MODE] == 3) { + GXInitTexObjLOD(&this->tex_objs[t], GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_TRUE, + GX_ANISO_1); + } + + GXLoadTexObj(&this->tex_objs[t], (GXTexMapID)t); + EMU64_TIMED_SEGMENT_END(dirty_tex1_time); + this->dirty_tex1_cnt++; + } else { + /* N64 texture tile */ + this->setup_texture_tile(t); + EMU64_TIMED_SEGMENT_END(dirty_tex2_time); + this->dirty_tex2_cnt++; + } + + this->dirty_tex_cnt++; + } + } + + EMU64_ASSERTLINE_DEBUG(this, 5026); + if (IS_DIRTY(EMU64_DIRTY_FLAG_TEX_MTX) && do_texture_matrix != FALSE) { + CLEAR_DIRTY(EMU64_DIRTY_FLAG_TEX_MTX); + EMU64_TIMED_SEGMENT_BEGIN(); + this->texture_matrix(); + this->dirty_texmtx_cnt++; + EMU64_TIMED_SEGMENT_END(dirty_texmtx_time); + } + + EMU64_TIMED_SEGMENT_END(dirty_tex_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 5040); + if (IS_DIRTY(EMU64_DIRTY_FLAG_PROJECTION_MTX)) { + EMU64_TIMED_SEGMENT_BEGIN(); + CLEAR_DIRTY(EMU64_DIRTY_FLAG_PROJECTION_MTX); + GXSetProjection(this->projection_mtx, this->projection_type); + EMU64_TIMED_SEGMENT_END(dirty_proj_time); + } + + EMU64_ASSERTLINE_DEBUG(this, 5047); + EMU64_TIMED_SEGMENT_END(dirty_check_time); + EMU64_ASSERTLINE_DEBUG(this, 5049); +} + +/* Commands */ +void emu64::dl_G_SPNOOP() { +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + this->Printf2("gsSPNoOp(),"); + } +#endif +} + +void emu64::dl_G_DL(void) { + static char s[256]; + Gfx* gfx = this->gfx_p; + + this->work_ptr = (void*)this->seg2k0(gfx->dma.addr); + + switch (gfx->dma.par) { + case G_DL_PUSH: + if (this->segment_set != false) { + this->segment_set = false; + sprintf(s, "%s", this->segchk(gfx->dma.addr)); + this->Printf0(VT_COL(RED, WHITE) "gsSPDisplayList(%s),\n" VT_RST, s); + emu64::warningString[EMU64_WARN_IDX_DL] = s; + emu64::warningTime[EMU64_WARN_IDX_DL] = EMU64_WARN_TIME; + emu64::displayWarning = true; + } + + if (this->DL_stack_level < DL_MAX_STACK_LEVEL) { + this->DL_stack[this->DL_stack_level++] = (u32)(this->gfx_p + 1); + } else { + this->err_count++; + this->Printf0("*** DL stack overflow ***\n"); + } + + this->gfx_p = (Gfx*)((int)this->work_ptr - sizeof(Gfx)); + break; + case G_DL_NOPUSH: + this->gfx_p = (Gfx*)((u32)this->work_ptr - sizeof(Gfx)); + break; + default: + if (this->disable_polygons == false) { + GXCallDisplayList(this->work_ptr, gfx->dma.len); + } + break; + } +} + +void emu64::dl_G_RDPHALF_1(void) { + this->rdpHalf_1 = this->gfx.words.w1; +} + +void emu64::dl_G_TEXRECT() { + Gtexrect2* texrect_p = (Gtexrect2*)this->gfx_p; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + this->Printf2("gsSPTextureRectangle(%d,%d,%d,%d,%d,%d,%d,%d,%d),", + texrect_p->xh, /* TODO: check if this is just wrong, or Gtexrect2 flips xh/yh with xl/yl */ + texrect_p->yh, texrect_p->xl, texrect_p->yl, texrect_p->tile, texrect_p->s, texrect_p->t, + texrect_p->dsdx, texrect_p->dtdy); + } +#endif + + if (this->disable_polygons == false) { + this->dirty_check(texrect_p->tile, 0, 0); + +#ifdef EMU64_DEBUG + if (aflags[AFLAGS_SKIP_DRAW_RECTANGLE] == 0) { +#endif + this->draw_rectangle(texrect_p); +#ifdef EMU64_DEBUG + } +#endif + } + + this->gfx_p += 2; /* Increment by two here, the emulator will increment by another for the full Gtexrect2 size */ +} + +void emu64::dl_G_LOAD_UCODE() { +#ifdef EMU64_DEBUG + u16 uc_dsize = this->gfx.words.w0 & 0xFFFF; + if (uc_dsize == 0x7FF) { + if (this->print_commands != false) { + this->Printf1("gsSPLoadUcode(%s, 0x%08x),", segchk(this->gfx.words.w1), this->rdpHalf_1); + } + } else if (this->print_commands != false) { + this->Printf1("gsSPLoadUcodeEx(%s, 0x%08x, 0x%05x),", this->segchk(this->gfx.words.w1), this->rdpHalf_1, + uc_dsize + 1); + } +#endif + + this->emu64_change_ucode((void*)this->seg2k0(this->gfx.words.w1)); + this->load_ucode_calls++; +} + +void emu64::dl_G_ENDDL() { +#ifdef EMU64_DEBUG + + if (this->print_commands) { + this->Printf1("gsSPEndDisplayList(),"); + } + +#endif + + if (this->DL_stack_level <= 0) { + this->end_dl = TRUE; + } else { + /* subtract one because emulator will add one after processing */ + this->gfx_p = (Gfx*)this->DL_stack[--this->DL_stack_level] - 1; + } +} + +void emu64::dl_G_SETTILE() { + Gsettile* settile = (Gsettile*)this->gfx_p; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + const char* s_wrapmode; + int s_wrap = settile->ms + (settile->cs << 1); + if (s_wrap == G_TX_WRAP) { + s_wrapmode = "G_TX_WRAP"; + } else if (s_wrap == G_TX_MIRROR) { + s_wrapmode = "G_TX_MIRROR"; + } else if (s_wrap == G_TX_CLAMP) { + s_wrapmode = "G_TX_CLAMP"; + } else { /* s_wrap == G_TX_MIRROR|G_TX_CLAMP */ + s_wrapmode = "G_TX_MIRROR|G_TX_CLAMP"; + } + + const char* t_wrapmode; + int t_wrap = settile->mt + (settile->ct << 1); + if (t_wrap == G_TX_WRAP) { + t_wrapmode = "G_TX_WRAP"; + } else if (t_wrap == G_TX_MIRROR) { + t_wrapmode = "G_TX_MIRROR"; + } else if (t_wrap == G_TX_CLAMP) { + t_wrapmode = "G_TX_CLAMP"; + } else { /* t_wrap == G_TX_MIRROR|G_TX_CLAMP */ + t_wrapmode = "G_TX_MIRROR|G_TX_CLAMP"; + } + + const char* s_siz; + int siz = settile->siz; + if (siz == G_IM_SIZ_4b) { + s_siz = "4b"; + } else if (siz == G_IM_SIZ_8b) { + s_siz = "8b"; + } else if (siz == G_IM_SIZ_16b) { + s_siz = "16b"; + } else { /* siz == G_IM_SIZ_32b */ + s_siz = "32b"; + } + + const char* s_fmt; + int fmt = settile->fmt; + if (fmt == G_IM_FMT_RGBA) { + s_fmt = "RGBA"; + } else if (fmt == G_IM_FMT_YUV) { + s_fmt = "YUV"; + } else if (fmt == G_IM_FMT_CI) { + s_fmt = "CI"; + } else if (fmt == G_IM_FMT_IA) { + s_fmt = "IA"; + } else { /* fmt == G_IM_FMT_I */ + s_fmt = "I"; + } + + this->Printf2("gsDPSetTile(G_IM_FMT_%s, G_IM_SIZ_%s,%d,%d,%d,%d,%s,%d,%d,%s,%d,%d),", s_fmt, s_siz, + settile->line, settile->tmem, settile->tile, settile->palette, t_wrapmode, settile->maskt, + settile->shiftt, s_wrapmode, settile->masks, settile->shifts); + } +#endif + + this->use_dolphin_settile[settile->tile] = false; + bzero(&this->settile_dolphin_cmds[settile->tile], sizeof(Gsettile_dolphin)); + this->settile_cmds[settile->tile] = *settile; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE0 + settile->tile] = true; +} + +void emu64::dl_G_SETTILE_DOLPHIN() { + Gsettile_dolphin* settile_dolphin = (Gsettile_dolphin*)this->gfx_p; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + this->Printf2("gsDPSetTile_Dolphin(G_TF_%s,%d,%d,GX_%s,GX_%s,%d,%d),", dolfmttbl[settile_dolphin->dol_fmt], + settile_dolphin->tile, settile_dolphin->tlut_name, doltexwrapmode[settile_dolphin->wrap_s], + doltexwrapmode[settile_dolphin->wrap_t], settile_dolphin->shift_s, settile_dolphin->shift_t); + } +#endif + + this->use_dolphin_settile[settile_dolphin->tile] = true; + this->settile_dolphin_cmds[settile_dolphin->tile] = *settile_dolphin; + bzero(&this->settile_cmds[settile_dolphin->tile], sizeof(Gsettile)); + this->setimg2_cmds[settile_dolphin->tile] = this->now_setimg.setimg2; + + /* Setup tile size using S (X): [0, width - 1], T (Y): [0, height - 1] */ + this->settilesize_dolphin_cmds[settile_dolphin->tile].sl = 0; + this->settilesize_dolphin_cmds[settile_dolphin->tile].tl = 0; + this->settilesize_dolphin_cmds[settile_dolphin->tile].slen = this->now_setimg.setimg2.wd; + this->settilesize_dolphin_cmds[settile_dolphin->tile].tlen = EXPAND_HEIGHT(this->now_setimg.setimg2.ht) - 1; + + /* Set texture info for use in GC texture object initialization */ + this->texture_info[settile_dolphin->tile].img_addr = (void*)this->now_setimg.setimg2.imgaddr; + this->texture_info[settile_dolphin->tile].format = this->now_setimg.setimg2.fmt; + this->texture_info[settile_dolphin->tile].size = this->now_setimg.setimg2.siz; + this->texture_info[settile_dolphin->tile].width = EXPAND_WIDTH(this->now_setimg.setimg2.wd); + this->texture_info[settile_dolphin->tile].height = EXPAND_HEIGHT(this->now_setimg.setimg2.ht); + + /* Mark texture tile as dirty */ + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE0 + settile_dolphin->tile] = true; +} + +void emu64::dl_G_LOADTILE() { + Gloadtile& loadtile = this->gfx_p->loadtile; + +#ifdef EMU64_DEBUG + if (this->print_commands) { + this->Printf2("gsDPLoadTile(%d,%d,%d,%d,%d),", loadtile->tile, loadtile->sl, loadtile->tl, loadtile->sh, + loadtile->th); + } +#endif + + /* Check if this image does not support gsDPLoadTile() */ + if (this->now_setimg.setimg2.isDolphin != false) + return; + + /* Determine tmem base address */ + u32 dram = this->now_setimg.setimg2.imgaddr; + dram += ((loadtile.tl / 4) * EXPAND_WIDTH(this->now_setimg.setimg2.wd) + (loadtile.sl / 4) + << this->now_setimg.setimg2.siz) / + 2; + +#ifdef EMU64_DEBUG + if (this->print_commands) { + this->Printf2("\n [%d %d]-[%d %d] tmem=%d dram=%08x\n", sl, tl, loadtile.sh / 4, loadtile.tl / 4, tmem, dram); + } +#endif + + int tmem_idx = this->settile_cmds[loadtile.tile].tmem / 4; + + /* Copy setup values to tmem */ + tmem_map[tmem_idx].addr = (void*)dram; + tmem_map[tmem_idx].loadtile = loadtile; + tmem_map[tmem_idx].setimg2 = this->now_setimg.setimg2; + +#ifdef EMU64_DEBUG + if (this->print_commands) { + this->Printf3("tmem_map[%d]=%08x\n", tmem_idx, addr); + } +#endif +} + +void emu64::dl_G_LOADBLOCK() { + int tmem_idx; + Gloadblock* loadblock = (Gloadblock*)this->gfx_p; + u32 addr; + int i; + +#ifdef EMU64_DEBUG + u32 start = osGetCount(); + + if (this->print_commands) { + this->Printf2("gsDPLoadBlock(%d,%d,%d,%d,%d),", loadblock->tile, loadblock->sl, loadblock->tl, loadblock->sh, + loadblock->th); + } +#endif + + if (this->now_setimg.setimg2.isDolphin != false) + return; /* Does not support LOAD commands */ + + tmem_idx = this->settile_cmds[loadblock->tile].tmem / 4; + addr = this->now_setimg.setimg2.imgaddr; + for (i = tmem_idx; i < tmem_idx + (loadblock->sh + 1) / 16; i++) { + tmem_map[i].addr = (void*)addr; + tmem_map[i].loadblock = *loadblock; + tmem_map[i].setimg2 = this->now_setimg.setimg2; + addr += 16 * sizeof(u16); + } + +#ifdef EMU64_DEBUG + this->loadblock_time += (osGetCount() - start); +#endif +} + +void emu64::dl_G_SETTILESIZE() { + Gsettilesize* settilesize = (Gsettilesize*)this->gfx_p; + Gsettilesize_Dolphin* settilesize_dolphin = (Gsettilesize_Dolphin*)this->gfx_p; + + if (settilesize_dolphin->isDolphin) { +#ifdef EMU64_DEBUG + /* Seems they checked it twice in source code... */ + if (this->print_commands != false && this->print_commands != false) { + this->Printf2("gsDPSetTileSize_Dolphin(%d,%d,%d,%d,%d),", settilesize_dolphin->tile, + settilesize_dolphin->sl, settilesize_dolphin->tl, settilesize_dolphin->slen, + settilesize_dolphin->tlen); + } +#endif + + this->settilesize_dolphin_cmds[settilesize_dolphin->tile] = *(Gsettilesize_Dolphin*)this->gfx_p; + } else { /* Gsettilesize */ + u16 s_len = (((settilesize->sh) - (settilesize->sl)) >> 2) + 1; + u16 t_len = ((settilesize->th - (settilesize->tl)) >> 2) + 1; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + if (this->print_commands != false) { + this->Printf2("gsDPSetTileSize(%d,%d,%d,%d,%d),", settilesize->tile, settilesize->sl, settilesize->tl, + settilesize->sh, settilesize->th); + } + + if (this->print_commands != false) { + this->Printf2(" /* %dx%d */", s_len, t_len + 1); + } + } +#endif + + /* Convert from N64 Gsettilesize to Gsettilesize_dolphin */ + this->settilesize_dolphin_cmds[settilesize->tile].sl = settilesize->sl * 4; + this->settilesize_dolphin_cmds[settilesize->tile].tl = settilesize->tl * 4; + this->settilesize_dolphin_cmds[settilesize->tile].slen = s_len - 1; + this->settilesize_dolphin_cmds[settilesize->tile].tlen = t_len - 1; + this->settilesize_dolphin_cmds[settilesize->tile].tile = settilesize->tile; + } + + /* Mark texture tile as dirty */ + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE0 + settilesize_dolphin->tile] = true; +} + +void emu64::dl_G_LOADTLUT() { + Gloadtlut_dolphin* loadtlut_dol = (Gloadtlut_dolphin*)this->gfx_p; + u16 count; + void* tlut_addr; + u32 tlut_name; + void* aligned_addr; + + EMU64_TIMED_SEGMENT_BEGIN(); + + if (loadtlut_dol->type == 2) { + EMU64_LOGF("gsDPLoadTLUT_Dolphin(%d, %d, %s),", loadtlut_dol->tlut_name, loadtlut_dol->count, + this->segchk(loadtlut_dol->tlut_addr)); + + if (this->disable_polygons == false) { + count = loadtlut_dol->count & 0x3FFF; + tlut_name = loadtlut_dol->tlut_name; + tlut_addr = (void*)this->seg2k0(loadtlut_dol->tlut_addr); + + if (tlut_addr == this->tlut_addresses[tlut_name]) { + /* Translation: ### Same TLUT address */ + EMU64_INFO("### 同じTLUTアドレスです\n"); + } else { /* tlut_addr != this->tlut_addresses[tlut_name] */ + aligned_addr = tlut_addr; + + this->tlut_addresses[tlut_name] = tlut_addr; + if (tlut_addr != nullptr) { + if (((u32)tlut_addr & (0x1F)) != 0) { + /* The alignment of the palette (%08x) is not 32 bytes. */ + EMU64_PRINTF( + VT_COL(RED, WHITE) "パレット(%08x)のアライメントが32バイトになっていません\n" VT_RST, + tlut_addr) + + aligned_addr = (void*)((u32)tlut_addr & (~0x1F)); + } + + GXInitTlutObj(&this->tlut_objs[tlut_name], aligned_addr, GX_TL_RGB5A3, count); + GXLoadTlut(&this->tlut_objs[tlut_name], tlut_name); + + EMU64_INFOF("GXInitTlutObj %08x %d pal_no=%d\n", tlut_addr, count, tlut_name); + } + } + } + } else { + Gfx* loadtlut = this->gfx_p; + + EMU64_LOGF("gsDPLoadTLUTCmd(%d,%d),", loadtlut->loadtlut.tile, (loadtlut->words.w1 >> 14) & 0x3FF); + + Gsettile* settile_p = &this->settile_cmds[loadtlut->loadtlut.tile]; + + if (this->disable_polygons == false) { + u16 count = ((loadtlut->words.w1 >> 14) & 0x3FF) + 1; + void* tlut; + u32 addr = this->now_setimg.setimg2.imgaddr; + u32 tlut_name = (settile_p->tmem / 16) & 0xF; + + if (addr == (u32)this->tlut_addresses[tlut_name]) { + /* Translation: ### Same TLUT address %08x %d */ + EMU64_INFOF("### 同じTLUTアドレスです %08x %d\n", addr, tlut_name); + } else { + /* Convert TLUT */ + if (this->now_setimg.setimg2.isDolphin) { + tlut = (void*)addr; + } else { + tlut = this->tlutconv_new((u16*)addr, EMU64_TLUT_RGBA5551, count); + } + + if (tlut != nullptr) { + while (count != 0) { + tlut_addresses[tlut_name] = (void*)addr; + GXInitTlutObj(&this->tlut_objs[tlut_name], tlut, GX_TL_RGB5A3, count); + GXLoadTlut(&this->tlut_objs[tlut_name], tlut_name); + + EMU64_INFOF("GXInitTlutObj %08x %d pal_no=%d\n", addr, (u16)count, tlut_name); + + tlut_name++; + count -= 16; + addr += 16 * sizeof(u16); + tlut = ((u16*)tlut) + 16; + } + } + } + } + } + + EMU64_TIMED_SEGMENT_END(loadtlut_time); +} + +void emu64::dl_G_SETCOMBINE_NOTEV() { + u64* combine = (u64*)&this->gfx; + s8 print_commands = this->print_commands; + + if (print_commands) { + this->print_combine(*combine); + } + + /* Update combiner settings only if it changed */ + ((Gsetcombine_new*)combine)->cmd = G_SETCOMBINE; + if (*(u64*)&this->combine_gfx != *combine) { + *(u64*)&this->combine_gfx = *combine; + this->dirty_flags[EMU64_DIRTY_FLAG_COMBINE] = true; + } +} + +void emu64::dl_G_SETCOMBINE() { + u64* combine = (u64*)&this->gfx; + s8 print_commands = this->print_commands; + + if (print_commands) { + this->print_combine(*combine); + } + + /* Update combiner settings only if it changed */ + if (*(u64*)&this->combine_gfx != *combine) { + *(u64*)&this->combine_gfx = *combine; + this->dirty_flags[EMU64_DIRTY_FLAG_COMBINE] = true; + } + + /* N64 Combiner -> GC TEV */ + if (this->gfx_cmd != G_SETCOMBINE_NOTEV && aflags[AFLAGS_SKIP_COMBINE_TEV] == 0) { + this->replace_combine_to_tev(this->gfx_p); + } +} + +void emu64::dl_G_SETCOMBINE_TEV() { + u64* combine_tev = (u64*)&this->gfx; + s8 print_commands = this->print_commands; + + if (print_commands) { + this->print_combine_tev(*combine_tev); + } + + /* Update combiner settings only if it changed */ + if (*(u64*)&this->combine_gfx != *combine_tev) { + *(u64*)&this->combine_gfx = *combine_tev; + this->dirty_flags[EMU64_DIRTY_FLAG_COMBINE] = true; + } +} + +typedef struct { + const char* name; + int val; +} OtherModeOpt; + +typedef struct { + char* name; + int shift; + int len; + OtherModeOpt opts[4]; +} OthermodeParameterInfo; + +static const OthermodeParameterInfo h_tbl[] = { + { + "SetAlphaDither", + 4, + 2, + { + { "G_AD_PATTERN", 0 << 4 }, + { "G_AD_NOPATTERN", 1 << 4 }, + { "G_AD_NOISE", 2 << 4 }, + { "G_AD_DISABLE", 3 << 4 }, + }, + }, + { + "SetColorDither", + 6, + 2, + { + { "G_CD_MAGICSQ", 0 << 6 }, + { "G_CD_BAYER", 1 << 6 }, + { "G_CD_NOISE", 2 << 6 }, + { "G_CD_DISABLE", 3 << 6 }, + }, + }, + { + "SetCombineKey", + 8, + 1, + { + { "G_CK_NONE", 0 << 8 }, + { "G_CK_KEY", 1 << 8 }, + { "-1", -1 }, + { "-1", -1 }, + }, + }, + { + "SetTextureConvert", + 9, + 3, + { + { "G_TC_CONV", 0 << 9 }, + { "G_TC_FILTCONV", 5 << 9 }, + { "G_TC_FILT", 6 << 9 }, + { "-1", -1 }, + }, + }, + { + "SetTextureFilter", + 12, + 2, + { + { "G_TF_POINT", 0 << 12 }, + { "G_TF_AVERAGE", 3 << 12 }, + { "G_TF_BILERP", 2 << 12 }, + { "-1", -1 }, + }, + }, + { + "SetTextureLUT", + 14, + 2, + { + { "G_TT_NONE", 0 << 14 }, + { "G_TT_RGBA16", 2 << 14 }, + { "G_TT_IA16", 3 << 14 }, + { "-1", -1 }, + }, + }, + { + "SetTextureLOD", + 16, + 1, + { + { "G_TL_TILE", 0 << 16 }, + { "G_TL_LOD", 1 << 16 }, + { "-1", -1 }, + { "-1", -1 }, + }, + }, + { + "SetTextureDetail", + 17, + 2, + { + { "G_TD_CLAMP", 0 << 17 }, + { "G_TD_SHARPEN", 1 << 17 }, + { "G_TD_DETAIL", 2 << 17 }, + { "-1", -1 }, + }, + }, + { + "SetTexturePersp", + 19, + 1, + { + { "G_TP_PERSP", 0 << 19 }, + { "G_TP_NONE", 1 << 19 }, + { "-1", -1 }, + { "-1", -1 }, + }, + }, + { + "SetCycleType", + 20, + 2, + { + { "G_CYC_1CYCLE", 0 << 20 }, + { "G_CYC_2CYCLE", 1 << 20 }, + { "G_CYC_COPY", 2 << 20 }, + { "G_CYC_FILL", 3 << 20 }, + }, + }, + { + "PipelineMode", + 23, + 1, + { + { "G_PM_1PRIMITIVE", 1 << 23 }, + { "G_PM_NPRIMITIVE", 0 << 23 }, + { "-1", -1 }, + { "-1", -1 }, + }, + }, +}; + +void emu64::dl_G_SETOTHERMODE_H() { + GsetothermodeH* othermodeH = &this->gfx.setothermodeH; + u32 sft; + u32 len; + u32 data; + + len = othermodeH->len + 1; + sft = (32 - othermodeH->sft) - len; + data = othermodeH->data; + + if ((this->print_commands & EMU64_PRINTF2_FLAG) != 0) { + for (int i = 0; i < ARRAY_COUNT(h_tbl); i++) { + const OthermodeParameterInfo* info = &h_tbl[i]; + + if (sft == info->shift) { + for (int opt = 0; opt < 4; opt++) { + if (data == info->opts[opt].val) { + EMU64_LOGF("gsDP%s(%s),", info->name, info->opts[i].name); + goto exit; + } + } + } + + info++; + } + + /* We didn't find the param */ + EMU64_LOGF("gsSPSetOtherModeH(%d, %d, 0x%08x),", sft, len, data); + } + +exit: + if (this->othermode_high != (data | (this->othermode_high & (1 - (1 << len) << sft) - 1u))) { + this->othermode_high = (data | (this->othermode_high & (1 - (1 << len) << sft) - 1u)); + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_HIGH] = true; + } +} + +static const OthermodeParameterInfo l_tbl[] = { + { + "gsDPSetAlphaCompare", + 0, + 2, + { + { "G_AC_NONE", 0 << 0 }, + { "G_AC_THRESHOLD", 1 << 0 }, + { "G_AC_DITHER", 3 << 0 }, + { "-1", -1 }, + }, + }, + { + "gsDPSetDepthSource", + 2, + 1, + { + { "G_ZS_PIXEL", 0 << 2 }, + { "G_ZS_PRIM", 1 << 2 }, + { "-1", -1 }, + { "-1", -1 }, + }, + }, +}; + +void emu64::dl_G_SETOTHERMODE_L() { + u32 sft; + u32 len; + u32 data; + + len = this->gfx.setothermodeL.len + 1; + sft = (32 - this->gfx.setothermodeL.sft) - len; + data = this->gfx.setothermodeL.data; + + if ((this->print_commands & EMU64_PRINTF2_FLAG) != 0) { + if ((int)sft == G_MDSFT_RENDERMODE) { + this->show_render(data); + } else { + for (int i = 0; i < ARRAY_COUNT(l_tbl); i++) { + const OthermodeParameterInfo* info = &l_tbl[i]; + if (sft == info->shift) { + for (int opt = 0; opt < 4; opt++) { + if (data == info->opts[opt].val) { + EMU64_LOGF("gsDP%s(%s),", info->name, info->opts[i].name); + goto exit; + } + } + } + } + } + + /* We didn't find the param */ + EMU64_LOGF("gsSPSetOtherModeL(%d, %d, 0x%08x),", sft, len, data); + } + +exit: + u32 othermode = data | (this->othermode_low & (1 - (1 << len) << sft) - 1u); + if (this->othermode_low != othermode) { + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + this->othermode_low = othermode; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_LOW] = true; + } +} + +void emu64::dl_G_RDPSETOTHERMODE() { + /* Debug output */ + if ((this->print_commands & EMU64_PRINTF_ENABLED_FLAG) != 0) { + EMU64_LOG("gsDPSetOtherMode("); + + /* Process high commands first */ + u32 h = this->gfx.words.w0 & 0xFFFFFF; + for (int i = 0; i < ARRAY_COUNT(h_tbl); i++) { + const OthermodeParameterInfo* info = &h_tbl[i]; + u32 mask = (0xFFFFFFFF >> (32 - info->len)) << info->shift; + u32 param = h & mask; + + for (int opt = 0; opt < 4; opt++) { + if (param == info->opts[opt].val) { + EMU64_LOGF("%s%s", info->opts[opt].name, i < NUM_OTHERMODE_HIGH_CMDS - 1 ? "|" : ""); + goto h_found; + } + } + + EMU64_LOGF("%08x(%08x:%08x)%s", param, h, mask, i < NUM_OTHERMODE_HIGH_CMDS - 1 ? "|" : ""); + h_found: + continue; + } + + EMU64_LOG(", "); + + /* Process low commands */ + u32 l = this->gfx.words.w1; + for (int i = 0; i < ARRAY_COUNT(l_tbl); i++) { + const OthermodeParameterInfo* info = &l_tbl[i]; + u32 mask = (0xFFFFFFFF >> (32 - info->len)) << info->shift; + u32 param = l & mask; + + for (int opt = 0; opt < 4; opt++) { + if (param == info->opts[opt].val) { + EMU64_LOGF("%s%s", info->opts[opt].name, i < NUM_OTHERMODE_LOW_CMDS - 1 ? "|" : ""); + goto l_found; + } + } + + EMU64_LOGF("%08x(%08x:%08x)%s", param, h, mask, i < NUM_OTHERMODE_LOW_CMDS - 1 ? "|" : ""); + l_found: + continue; + } + + EMU64_LOG("),"); + } + + /* Actual command processing */ + u32 othermode_h = this->gfx.words.w0 & 0xFFFFFF; + if (this->othermode_high != othermode_h) { + this->othermode_high = othermode_h; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_HIGH] = true; + } + + if (this->othermode_low != this->gfx.words.w1) { + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + this->othermode_low = this->gfx.words.w1; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_LOW] = true; + } +} + +void emu64::dl_G_SETSCISSOR() { + u8 print_commands = this->print_commands; + Gscissor* scissor = (Gscissor*)this->gfx_p; + +#ifdef EMU64_DEBUG + + if (print_commands & EMU64_PRINT_FLAG_ENABLE != 0) { + const char* mode; + if (scissor->pad == G_SC_NON_INTERLACE) { + mode = "G_SC_NON_INTERLACE"; + } else if (scissor->pad == G_SC_ODD_INTERLACE) { + mode = "G_SC_ODD_INTERLACE"; + } else if (scissor->pad == G_SC_EVEN_INTERLACE) { + mode = "G_SC_EVEN_INTERLACE"; + } else { + mode = "???"; + } + + int x0frac = scissor->x0frac; + int y0frac = scissor->y0frac; + int x1frac = scissor->x1frac; + int y1frac = scissor->y1frac; + + if ((x0frac | y0frac | x1frac | y1frac) == 0) { + if (print_commands != false) { + this->Printf2("gsDPSetScissor(%s, %d, %d, %d, %d),", mode, scissor->x0, scissor->y0, scissor->x1, + scissor->y1); + } + } else if (print_commands != false) { + this->Printf2("gsDPSetScissorFrac(%s, %d, %d, %d, %d),", mode, scissor->x0 * 4 + x0frac, + scissor->y0 * 4 + y0frac, scissor->x1 * 4 + x1frac, scissor->y1 * 4 + y1frac); + } + } + +#endif + + /* NOTE: fractional scissor components are ignored */ + if (this->disable_polygons == false) { + GXSetScissor(scissor->x0, scissor->y0, scissor->x1, scissor->y1); + } +} + +void emu64::dl_G_FILLRECT() { + Gfillrect2* fillrect = (Gfillrect2*)this->gfx_p; + + EMU64_LOGF("gsDPFillRectangle(%d, %d, %d, %d),", fillrect->x1, fillrect->y1, fillrect->x0, fillrect->y0); + + if (this->disable_polygons == false) { + this->dirty_check(-1, -1, 0); + this->fill_rectangle(fillrect->x1, fillrect->y1, fillrect->x0, fillrect->y0); + } +} + +void emu64::dl_G_SETCIMG() { +#ifdef EMU64_DEBUG + if (this->print_commands & EMU64_PRINT_FLAG_ENABLE != 0) { + u32 fmt = this->gfx.setimg.fmt; + u32 siz = this->gfx.setimg.siz; + + if (this->print_commands != false) { + const char* s_siz; + const char* s_fmt; + + if (siz == G_IM_SIZ_4b) { + s_siz = "4b"; + } else if (siz == G_IM_SIZ_8b) { + s_siz = "8b"; + } else if (siz == G_IM_SIZ_16b) { + s_siz = "16b"; + } else { + s_siz = "32b"; + } + + if (fmt == G_IM_FMT_RGBA) { + s_fmt = "RBGA"; + } else if (fmt == G_IM_FMT_YUV) { + s_fmt = "YUV"; + } else if (fmt == G_IM_FMT_CI) { + s_fmt = "CI"; + } else if (fmt == G_IM_FMT_IA) { + s_fmt = "IA"; + } else { + s_fmt = "I"; + } + + this->Printf1("gsDPSetColorImage(G_IM_FMT_%s, G_IM_SIZ_%s, %d, %s),", s_fmt, s_siz, + EXPAND_WIDTH(this->gfx.setimg.wd), this->segchk(this->gfx.setimg.dram)); + } + } +#endif +} + +void emu64::dl_G_SETZIMG() { + EMU64_WARNF("gsDPSetDepthImage(%s),", this->segchk(this->gfx.setimg.dram)); +} + +static char* doltexwrapmode[] = { "CLAMP", "REPEAT", "MIRROR", "?" }; + +static char* dolfmttbl2[4][5] = { + { "CMPR", "Z", "CI", "IA", "I" }, + { "RGBA?", "Z", "CI", "IA", "I" }, + { "RGB4A3", "YUV", "CI", "IA", "RGB565" }, + { "RGBA8888", "Z", "CI?", "IA?", "RGB?" }, +}; + +static char* dolfmttbl[] = { "I4", "I8", "IA4", "IA8", "RGB565", "RGB5A3", "RGBA8", "CMPR" }; + +void emu64::dl_G_SETTIMG() { + Gsetimg2* setimg2 = (Gsetimg2*)this->gfx_p; + +#ifdef EMU64_DEBUG + if (this->print_commands & EMU64_PRINT_FLAG_ENABLE) { + if (setimg2->isDolphin == FALSE) { + Gsetimg* setimg = (Gsetimg*)setimg2; + if (this->print_commands != false) { + const char* s_siz; + const char* s_fmt; + + u32 siz = setimg->siz; + u32 fmt = setimg->fmt; + + if (siz == G_IM_SIZ_4b) { + s_siz = "4b"; + } else if (siz == G_IM_SIZ_8b) { + s_siz = "8b"; + } else if (siz == G_IM_SIZ_16b) { + s_siz = "16b"; + } else { + s_siz = "32b"; + } + + if (fmt == G_IM_FMT_RGBA) { + s_fmt = "RBGA"; + } else if (fmt == G_IM_FMT_YUV) { + s_fmt = "YUV"; + } else if (fmt == G_IM_FMT_CI) { + s_fmt = "CI"; + } else if (fmt == G_IM_FMT_IA) { + s_fmt = "IA"; + } else { + s_fmt = "I"; + } + + this->Printf2("gsDPSetTextureImage(G_IM_FMT_%s, G_IM_SIZ_%s, %d, %s),", s_fmt, s_siz, + EXPAND_WIDTH(setimg->wd), this->segchk(setimg->dram)); + } + } else if (this->print_commands) { + const char* s_siz; + u32 siz = setimg2->siz; + + if (siz == G_IM_SIZ_4b) { + s_siz = "4b"; + } else if (siz == G_IM_SIZ_8b) { + s_siz = "8b"; + } else if (siz == G_IM_SIZ_16b) { + s_siz = "16b"; + } else { + s_siz = "32b"; + } + + this->Printf2("gsDPSetTextureImage_Dolphin(G_IM_FMT_%s, G_IM_SIZ_%s, %d, %d, %s),", + dolfmttbl2[setimg2->siz][setimg2->fmt], s_siz, EXPAND_WIDTH(setimg2->wd), + EXPAND_HEIGHT(setimg2->ht), this->segchk(setimg2->imgaddr)); + } + } +#endif + + this->now_setimg.setimg2 = *setimg2; + this->now_setimg.setimg2.imgaddr = (u32)this->seg2k0(setimg2->imgaddr); +} + +void emu64::dl_G_SETENVCOLOR() { + EMU64_LOGF("gsDPSetEnvColor(%d, %d, %d, %d),", (this->gfx.setcolor.color >> 24) & 0xFF, + (this->gfx.setcolor.color >> 16) & 0xFF, (this->gfx.setcolor.color >> 8) & 0xFF, + (this->gfx.setcolor.color >> 0) & 0xFF); + + if (this->environment_color.raw != this->gfx.setcolor.color) { + this->environment_color.raw = this->gfx.setcolor.color; + this->dirty_flags[EMU64_DIRTY_FLAG_ENV_COLOR] = true; + } +} + +void emu64::dl_G_SETBLENDCOLOR() { + EMU64_LOGF("gsDPSetBlendColor(%d, %d, %d, %d),", (this->gfx.setcolor.color >> 24) & 0xFF, + (this->gfx.setcolor.color >> 16) & 0xFF, (this->gfx.setcolor.color >> 8) & 0xFF, + (this->gfx.setcolor.color >> 0) & 0xFF); + + if (this->blend_color.raw != this->gfx.setcolor.color) { + this->blend_color.raw = this->gfx.setcolor.color; + this->dirty_flags[EMU64_DIRTY_FLAG_BLEND_COLOR] = true; + } +} + +void emu64::dl_G_SETFOGCOLOR() { + EMU64_LOGF("gsDPSetFogColor(%d, %d, %d, %d),", (this->gfx.setcolor.color >> 24) & 0xFF, + (this->gfx.setcolor.color >> 16) & 0xFF, (this->gfx.setcolor.color >> 8) & 0xFF, + (this->gfx.setcolor.color >> 0) & 0xFF); + + if (this->fog_color.raw != this->gfx.setcolor.color) { + this->fog_color.raw = this->gfx.setcolor.color; + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + } +} + +void emu64::dl_G_SETFILLCOLOR() { + EMU64_LOGF("gsDPSetFillColor(0x%08x),", this->gfx.setcolor.color); + + if (this->fill_color.raw != this->gfx.setcolor.color) { + this->fill_color.raw = this->gfx.setcolor.color; + + u16* color = (u16*)&this->gfx.setcolor.color; + this->fill_tev_color.color.r = (*color >> 8) & 0xF8; + this->fill_tev_color.color.g = (*color >> 3) & 0xF8; + this->fill_tev_color.color.b = (*color << 2) & 0xF8; + + this->dirty_flags[EMU64_DIRTY_FLAG_FILL_COLOR] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_FILL_TEV_COLOR] = true; + } +} + +void emu64::dl_G_SETTEXEDGEALPHA(void) { + Gsettexedgealpha* gfx = (Gsettexedgealpha*)&this->gfx; + + this->tex_edge_alpha = gfx->tex_edge_alpha; + this->dirty_flags[EMU64_DIRTY_FLAG_OTHERMODE_LOW] = TRUE; +} + +void emu64::dl_G_SETPRIMDEPTH() { + EMU64_LOGF("gsDPSetPrimDepth(%d, %d),", (u16)(this->gfx.words.w1 >> 16), (u16)this->gfx.words.w1); + + this->primdepth = this->gfx.words.w1; +} + +void emu64::dl_G_SETPRIMCOLOR() { + EMU64_LOGF("gsDPSetPrimColor(%d, %d, %d, %d, %d, %d),", this->gfx.setcolor.prim_min_level, + this->gfx.setcolor.prim_level, (this->gfx.setcolor.color >> 24) & 0xFF, + (this->gfx.setcolor.color >> 16) & 0xFF, (this->gfx.setcolor.color >> 8) & 0xFF, + (this->gfx.setcolor.color >> 0) & 0xFF); + + if (this->primitive_color.raw != this->gfx.setcolor.color) { + this->primitive_color.raw = this->gfx.setcolor.color; + this->dirty_flags[EMU64_DIRTY_FLAG_PRIM_COLOR] = true; + } + + if (this->fill_tev_color.color.a != this->gfx.setcolor.prim_level) { + this->fill_tev_color.color.a = this->gfx.setcolor.prim_level; + this->dirty_flags[EMU64_DIRTY_FLAG_FILL_TEV_COLOR] = true; + } +} + +void emu64::dl_G_RDPFULLSYNC() { + EMU64_WARN("gsDPFullSync(),"); +} + +void emu64::dl_G_RDPPIPESYNC() { + EMU64_LOG("gsDPPipeSync(),"); + + if (aflags[AFLAGS_FORCE_PIPE_SYNC] == 1 || (aflags[AFLAGS_FORCE_PIPE_SYNC] == 0 && this->rdp_pipe_sync_needed)) { + this->rdp_pipe_sync_needed = false; + } +} + +void emu64::dl_G_RDPTILESYNC() { + EMU64_LOG("gsDPTileSync(),"); +} + +void emu64::dl_G_RDPLOADSYNC() { + EMU64_LOG("gsDPLoadSync(),"); +} + +void emu64::dl_G_NOOP() { + Gnoop* noop = (Gnoop*)&this->gfx; + + switch (noop->tag) { + case G_TAG_NONE: + if (this->gfx.words.w1 == 0) { + EMU64_LOG("gsDPNoOp(),"); + } else { + EMU64_LOGF("gsDPNoOpTag(%08x),", noop->param1); + } + break; + case G_TAG_HERE: + EMU64_WARNF("gsDPNoOpHere([%s:%d]),", (char*)noop->param1, noop->param0); + break; + case G_TAG_STRING: + EMU64_WARNF("gsDPNoOpString(%c%s%c, %d),", '"', (char*)noop->param1, '"', noop->param0); + break; + case G_TAG_WORD: + EMU64_WARNF("gsDPNoOpWord(0x%08x, %d),", noop->param1, noop->param0); + break; + case G_TAG_FLOAT: + EMU64_WARNF("gsDPNoOpFloat(%8.3f, %d),", *(f32*)&noop->param1, noop->param0); + break; + case G_TAG_INFO: + if (noop->param0 == 0) { + EMU64_WARN("gsDPNoOpQuiet(),"); + } else { + EMU64_WARN("gsDPNoOpVerbose(),"); + } + + this->print_commands = noop->param0; + break; + case G_TAG_CALLBACK: +/* They forgot to pass arguments here */ +#ifdef EMU64_FIX_NOOP_CALLBACK_LOG + EMU64_WARNF("gsDPNoOpCallBack(%08x,%d),", noop->param1, noop->param0); +#else + EMU64_WARN("gsDPNoOpCallBack(%08x,%d),"); +#endif + break; + case G_TAG_OPENDISP: + EMU64_WARNF("gsDPNoOpOpenDisp([%s:%d]),", noop->param1, noop->param0); + break; + case G_TAG_CLOSEDISP: + EMU64_WARNF("gsDPNoOpCloseDisp([%s:%d]),", noop->param1, noop->param0); + break; + case G_TAG_FILL: + EMU64_WARN("gsDPNoOpFill(), /* ### 何じゃコリャ */"); /* Rough translation: ### What the hell */ + this->num_unknown_cmds++; + break; + default: + EMU64_WARNF("gsDPNoOpTag3(%02x, %08x, %04x),", tag, noop->param1, noop->param0); + break; + } +} + +typedef struct { + u32 mask; + char* enabled; + char* disabled; +} MatrixInfo; + +static const MatrixInfo gmtxtbl[] = { + { (1 << 2), "G_MTX_PROJECTION", "G_MTX_MODELVIEW" }, + { (1 << 1), "G_MTX_LOAD", "G_MTX_MUL" }, + { (1 << 0), "G_MTX_PUSH", "G_MTX_NOPUSH" }, +}; + +void emu64::dl_G_MTX() { + if (this->print_commands & EMU64_PRINTF_ENABLED_FLAG) { + Gwords gfx_copy = this->gfx_p->words; + EMU64_LOGF("gsSPMatrix(%s, 0", this->segchk(gfx_copy.w1)); + + for (int i = 0; i < ARRAY_COUNT(gmtxtbl); i++) { + EMU64_LOGF("|%s", ((((Gmtx*)this->gfx_p)->type ^ G_MTX_PUSH) & gmtxtbl[i].mask) == 0 ? gmtxtbl[i].disabled + : gmtxtbl[i].enabled); + } + + EMU64_LOG("),"); + + if ((this->print_commands & EMU64_PRINTF3_FLAG) != 0) { + EMU64_LOGF("%08x %08x %08x\n", gfx_copy.w1, this->seg2k0(gfx_copy.w1), this->seg2k0(gfx_copy.w1)); + this->disp_matrix((MtxP)this->seg2k0(gfx_copy.w1)); + } + } + + if (this->disable_polygons == false) { + EMU64_TIMED_SEGMENT_BEGIN(); + + Gmtx* mtx_gfx = (Gmtx*)this->gfx_p; + Mtx_t* mtx = + (Mtx_t*)this->seg2k0(mtx_gfx->addr); /* Matrix is in N64 s16.16 format. (First 8 elements are s16 integer + components, second 8 elements are s16 fractional components) */ + GC_Mtx mtx34; + Mtx44 mtx44; /* float-based matrix */ + + /* Convert our s16.u16 matrix into a f32 matrix. */ + N64Mtx_to_DOLMtx((Mtx*)mtx, mtx34); + + if ((mtx_gfx->type & G_MTX_PROJECTION) != G_MTX_MODELVIEW) { /* Projection */ + N64Mtx_to_DOLMtx((Mtx*)mtx, mtx44); + if ((mtx_gfx->type & G_MTX_LOAD) != G_MTX_MUL) { + if ((u16)(*mtx)[1][3] == 0) { /* If the last entry is 0, this should be a perspective projection. + Otherwise, it's likely an orthographic projection. */ + this->near = mtx44[2][3] * ((mtx44[2][2] + 1.0f) / (mtx44[2][2] - 1.0f) - 1.0f) / 2.0f; + this->far = this->near * ((mtx44[2][2] - 1.0f) / (mtx44[2][2] + 1.0f) + 1.0f); + mtx44[2][2] = this->near / (this->near - this->far); + mtx44[2][3] = (this->near * this->far) / (this->near - this->far); + bcopy(mtx34, this->original_projection_mtx, sizeof(this->original_projection_mtx)); + bcopy(mtx44, this->position_mtx, sizeof(Mtx44)); + this->projection_type = GX_PERSPECTIVE; + } else { /* Orthographic projection */ + this->near = (mtx44[2][3] + 1.0f) / mtx44[2][2]; + this->far = (mtx44[2][3] - 1.0f) / mtx44[2][2]; + mtx44[2][2] = 1.0f / (this->near - this->far); + mtx44[2][3] = this->far / (this->near - this->far); + bcopy(mtx34, this->original_projection_mtx, sizeof(this->original_projection_mtx)); + /* @BUG - this overwrites part of the first entry in model_view_mtx_stack */ + bcopy(mtx44, this->position_mtx, sizeof(Mtx44)); + this->projection_type = GX_ORTHOGRAPHIC; + } + + MTXIdentity(this->position_mtx); + this->dirty_flags[EMU64_DIRTY_FLAG_PROJECTION_MTX] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + } else { + bcopy(mtx44, &this->position_mtx, sizeof(GC_Mtx)); /* Last row of Mtx44 is ignored */ + } + } else { /* Modelview */ + GC_Mtx& concat_src = this->model_view_mtx_stack[this->mtx_stack_size]; + + if ((mtx_gfx->type & G_MTX_PUSH) == G_MTX_NOPUSH) { + if (this->mtx_stack_size < MTX_STACK_SIZE - 1) { + this->mtx_stack_size++; + } else { + this->Printf0("gsSPMatrix StackOverflow.\n"); + this->err_count++; + } + } + + GC_Mtx& model_view_src = this->model_view_mtx_stack[this->mtx_stack_size]; + if ((mtx_gfx->type & G_MTX_LOAD) != G_MTX_MUL) { + bcopy(mtx34, model_view_src, sizeof(GC_Mtx)); + } else { + MTXConcat(concat_src, mtx34, model_view_src); + } + + if (aflags[AFLAGS_COPY_POSITION_MTX] == 0) { + GC_Mtx& src = this->model_view_mtx_stack[mtx_stack_size]; + + for (int i = 0; i < 3; i++) { + this->model_view_mtx[i][0] = src[i][0]; + this->model_view_mtx[i][1] = src[i][1]; + this->model_view_mtx[i][2] = src[i][2]; + this->model_view_mtx[i][3] = 0.0f; + } + } else { + MTXCopy(this->model_view_mtx_stack[this->mtx_stack_size], this->model_view_mtx); + this->model_view_mtx[0][3] = 0.0f; + this->model_view_mtx[1][3] = 0.0f; + this->model_view_mtx[2][3] = 0.0f; + } + + if (aflags[AFLAGS_SKIP_MTX_NORMALIZATION] == 0 || this->geometry_mode & G_TEXTURE_GEN != 0) { + /* Normalize matrix */ + guMtxNormalize(this->model_view_mtx); + } + + GXLoadNrmMtxImm(this->model_view_mtx, NONSHARED_MTX); + } + + this->dirty_flags[EMU64_DIRTY_FLAG_POSITION_MTX] = true; + if (this->dirty_flags[EMU64_DIRTY_FLAG_POSITION_MTX] != false) { + this->dirty_flags[EMU64_DIRTY_FLAG_POSITION_MTX] = false; + MTXConcat(position_mtx, this->model_view_mtx_stack[mtx_stack_size], + this->position_mtx_stack[mtx_stack_size]); + GXLoadPosMtxImm(this->position_mtx_stack[this->mtx_stack_size], NONSHARED_MTX); + } + + EMU64_TIMED_SEGMENT_END(matrix_time); + } +} + +void emu64::dl_G_VTX() { + EMU64_TIMED_SEGMENT_BEGIN(); + + Gvtx* vtx_gfx = (Gvtx*)&this->gfx; + u32 n = vtx_gfx->n; /* number of vertices */ + int vn = vtx_gfx->vn; + u32 v0 = (vn >> 1) - n; /* first vertex to load */ + + this->total_vertices += n; + + this->vtx_load_calls++; + + if ((this->print_commands & EMU64_PRINTF_ENABLED_FLAG)) { + EMU64_LOGF("gsSPVertex(%s, %d, %d),", this->segchk(this->gfx.dma.addr), n, v0); + if ((this->print_commands & EMU64_PRINTF3_FLAG) != 0) { + this->work_ptr = (void*)this->seg2k0(this->gfx.dma.addr); + this->show_vtx((Vtx*)work_ptr, n, v0); + } + } + + if (this->disable_polygons == false) { + Vtx* vtx_p = (Vtx*)this->seg2k0(this->gfx.dma.addr); + Vertex* emu_vtx_p = &this->vertices[v0]; + + GC_Mtx& position_mtx = this->position_mtx_stack[this->mtx_stack_size]; + if ((this->print_commands & (1 << 5)) != 0) { + /* NOTE: They print a 4x4 matrix, but position matrix is only 3x4. */ + this->disp_matrix(position_mtx); + } + + while (n != 0) { + /* Convert position */ + OSs16tof32(&vtx_p->n.ob[0], &emu_vtx_p->position.x); + OSs16tof32(&vtx_p->n.ob[1], &emu_vtx_p->position.y); + OSs16tof32(&vtx_p->n.ob[2], &emu_vtx_p->position.z); + + /* Flag */ + if (aflags[AFLAGS_FORCE_VTX_FLAG_COPY] == 0 && (this->geometry_mode & G_TEXTURE_GEN) != 0) { + emu_vtx_p->flag = MTX_SHARED; + } else { + emu_vtx_p->flag = vtx_p->n.flag & MTX_NONSHARED; + } + + /* Texture Coordinates */ + emu_vtx_p->tex_coords.s = vtx_p->n.tc[0]; + emu_vtx_p->tex_coords.t = vtx_p->n.tc[1]; + + /* Normal */ + emu_vtx_p->normal.x = fastcast_float(&vtx_p->n.n[0]); + emu_vtx_p->normal.y = fastcast_float(&vtx_p->n.n[1]); + emu_vtx_p->normal.z = fastcast_float(&vtx_p->n.n[2]); + + /* Check vertex normal modification type. In AC/e+ only VECNormalize is utilized. */ + if (aflags[AFLAGS_VTX_NORMAL_MODIFY_TYPE] == 0 && (this->geometry_mode & G_TEXTURE_GEN) != 0) { + PSVECNormalize(&emu_vtx_p->normal, &emu_vtx_p->normal); + } else if (aflags[AFLAGS_VTX_NORMAL_MODIFY_TYPE] == 2) { + emu_vtx_p->normal.x *= (1.0f / 120.0f); + emu_vtx_p->normal.y *= (1.0f / 120.0f); + emu_vtx_p->normal.z *= (1.0f / 120.0f); + } else if (aflags[AFLAGS_VTX_NORMAL_MODIFY_TYPE] == 3) { + emu_vtx_p->normal.x *= (1.0f / 128.0f); + emu_vtx_p->normal.y *= (1.0f / 128.0f); + emu_vtx_p->normal.z *= (1.0f / 128.0f); + } + + /* Convert vectors to correct space */ + if ((emu_vtx_p->flag & MTX_NONSHARED) == MTX_SHARED) { + PSMTXMultVec(position_mtx, &emu_vtx_p->position, + &emu_vtx_p->position); /* Position -> Projection Matrix */ + PSMTXMultVec(this->model_view_mtx, &emu_vtx_p->normal, &emu_vtx_p->normal); /* Normal -> View Matrix */ + } + + /* Color */ + emu_vtx_p->color.raw = *(u32*)(&vtx_p->v.cn[0]); + + vtx_p++; + emu_vtx_p++; + n--; + } + } + + EMU64_TIMED_SEGMENT_END(spvertex_time); +} + +void emu64::dl_G_MODIFYVTX() { +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + u8 where = this->gfx.dma.par; + const char* s_where; + if (where == G_MWO_POINT_RGBA) { + s_where = "RGBA"; + } else if (where == G_MWO_POINT_ST) { + s_where = "ST"; + } else if (where == G_MWO_POINT_XYSCREEN) { + s_where = "XYSCREEN"; + } else if (where == G_MWO_POINT_ZSCREEN) { + s_where = "ZSCREEN"; + } else { + s_where = "???"; + } + + this->Printf2("gsSPModifyVertex(%d, G_MWO_POINT_%s, %08x),", (u16)(this->gfx.words.w0), s_where, + this->gfx.words.w1); + } +#endif + +/* This is broken. G_MODIFYVTX modifies a single vertex. They use the "where" component instead of adding one. */ +#ifdef EMU64_FIX_MODIFYVTX_LOADED_COUNT + this->total_vertices++; +#else + this->total_vertices += this->gfx.dma.par; +#endif + + this->vtx_load_calls++; + this->Printf0("gsSPModifyVertexはサポートされていません\n"); /* Translation: gsSPModifyVertex is unsupported */ +} + +void emu64::dl_G_LINE3D() { + Gline3D_new* line = (Gline3D_new*)&this->gfx; + + if (line->wd == 0) { + EMU64_LOGF("gsSPLine3D(%d, %d),", line->v0, line->v1); + } else { + EMU64_LOGF("gsSPLineW3D(%d, %d, %d),", line->v0, line->v1, line->wd); + } + + this->lines++; + this->Printf0("gsSPLine3Dはサポートされていません"); /* Translation: gsSPLine3D is unsupported */ +} + +void emu64::dl_G_TRI1() { + Gtri1 tri_gfx = *(Gtri1*)this->gfx_p; + u32 v0 = tri_gfx.v0 / 2; + u32 v1 = tri_gfx.v1 / 2; + u32 v2 = tri_gfx.v2 / 2; + + EMU64_TIMED_SEGMENT_BEGIN(); + + EMU64_LOGF("gsSP1Triangle(%d, %d, %d, 0),", v0, v1, v2); + + if (aflags[AFLAGS_MAX_POLYGONS] != 0) { + EMU64_LOGF(" [%d] @@@", this->polygons); + } + + if (this->disable_polygons == false && EMU64_CAN_DRAW_POLYGON()) { + this->dirty_check(this->texture_gfx.tile, this->texture_gfx.level, TRUE); + this->setup_1tri_2tri_1quad(v0); + this->draw_1tri_2tri_1quad(3, v0, v1, v2); + } + + this->triangles++; + this->polygons++; + + EMU64_TIMED_SEGMENT_END(polygons_time); +} + +void emu64::dl_G_TRIN_INDEPEND() { + this->dl_G_TRIN(); +} + +void emu64::dl_G_TRIN() { + Gtrin* g; + int n_faces; + int first_pass = TRUE; + Gtrin_independ* trin_independ_gfx = (Gtrin_independ*)this->gfx_p; + + EMU64_TIMED_SEGMENT_BEGIN(); + + this->dirty_check(this->texture_gfx.tile, this->texture_gfx.level, TRUE); + this->setup_1tri_2tri_1quad(trin_independ_gfx->f0v0); + n_faces = trin_independ_gfx->count + 1; + int n_verts = n_faces * 3; + + EMU64_LOGF("gsSPNTriangles(%d),\n", n_faces); + if (aflags[AFLAGS_WIREFRAME] == 0) { + GXBegin(GX_TRIANGLES, GX_VTXFMT0, n_verts); + } + + while (n_faces > 0) { + g = (Gtrin*)this->gfx_p; + + if ((((Gfx*)g)->words.w1 & POLY_BITMASK) == POLY_5b) { + this->gfx_p++; + /* 5 bits per vertex index, first pass = 3 faces, consecutive passes = 4 faces */ + this->set_position3(g->f0v0, g->f0v1, g->f0v2); + this->polygons++; + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g->f0v0, g->f0v1, g->f0v2); + + n_faces--; + if (n_faces == 0) + break; + + // issue here with the combination of the two parts + int v2 = ((g->f1v2_1 << 3) | g->f1v2_0); + this->set_position3(g->f1v0, g->f1v1, v2); + this->polygons++; + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g->f1v0, g->f1v1, v2); + + n_faces--; + if (n_faces == 0) + break; + + this->set_position3(g->f2v0, g->f2v1, g->f2v2); + this->polygons++; + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g->f2v0, g->f2v1, g->f2v2); + + n_faces--; + if (n_faces == 0) + break; + + /* Only 3 faces on the first pass */ + if (first_pass) { + first_pass = FALSE; + } else { + this->set_position3(g->f3v0, g->f3v1, g->f3v2); + this->polygons++; + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g->f3v0, g->f3v1, g->f3v2); + + n_faces--; + if (n_faces == 0) + break; + } + } else { + Gtrin_7b* g7b = (Gtrin_7b*)g; + this->gfx_p++; + + /* 7 bits per vertex index, max 3 faces per Gfx */ + this->set_position3(g7b->f0v0, g7b->f0v1, g7b->f0v2); +#ifdef EMU64_FIXES + this->polygons++; +#endif + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g7b->f0v0, g7b->f0v1, g7b->f0v2); + + n_faces--; + if (n_faces == 0) + break; + + // issue here with the combination of the two parts + int v1 = (g7b->f1v1_1 << 3) | g7b->f1v1_0; + this->set_position3(g7b->f1v0, v1, g7b->f1v2); + +#ifdef EMU64_FIXES + this->polygons++; +#endif + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g7b->f1v0, v1, g7b->f1v2); + + n_faces--; + if (n_faces == 0) + break; + + /* Only 2 faces on the first pass */ + if (first_pass) { + first_pass = FALSE; + } else { + this->set_position3(g7b->f2v0, g7b->f2v1, g7b->f2v2); +#ifdef EMU64_FIXES + this->polygons++; +#endif + EMU64_LOGF("gsSPNTriangleData1(%d, %d, %d, 0),\n", g7b->f2v0, g7b->f2v1, g7b->f2v2); + + n_faces--; + if (n_faces == 0) + break; + } + } + } + + this->gfx_p += (int)n_faces - 1; /* Should equate to gfx_p--, as the emulator will increment it once. */ + EMU64_TIMED_SEGMENT_END(polygons_time); + this->rdp_pipe_sync_needed = true; +} + +void emu64::dl_G_QUADN() { + Gquad* g; + int n_faces; + int first_pass = TRUE; + Gquad_independ* quad_independ = (Gquad_independ*)this->gfx_p; + + EMU64_TIMED_SEGMENT_BEGIN(); + + this->dirty_check(this->texture_gfx.tile, this->texture_gfx.level, TRUE); + this->setup_1tri_2tri_1quad(quad_independ->f0v0); + n_faces = quad_independ->count + 1; + int n_verts = n_faces * 4; + + EMU64_LOGF("gsSPNQuadrangles(%d),\n", n_faces); + if (aflags[AFLAGS_WIREFRAME] == 0) { + GXBegin(GX_QUADS, GX_VTXFMT0, n_verts); + } + + while (n_faces > 0) { + g = (Gquad*)this->gfx_p; + if ((((Gfx*)g)->words.w1 & POLY_BITMASK) == POLY_5b) { + this->gfx_p++; + /* 5 bits per vertex index, first pass = 2 faces, consecutive passes = 3 faces */ + this->set_position4(g->f0v0, g->f0v1, g->f0v2, g->f0v3); + this->polygons++; + EMU64_LOGF("gsSPNQuadrangleData1(%d, %d, %d, %d, 0),\n", g->f0v0, g->f0v1, g->f0v2, g->f0v3); + + n_faces--; + if (n_faces == 0) + break; + + int v1 = (g->f1v1_1 << 3) | g->f1v1_0; + this->set_position4(g->f1v0, v1, g->f1v2, g->f1v3); + this->polygons++; + EMU64_LOGF("gsSPNQuadrangleData1(%d, %d, %d, %d, 0),\n", g->f1v0, v1, g->f1v2, g->f1v3); + + n_faces--; + if (n_faces == 0) + break; + + /* Only 2 faces on the first pass */ + if (first_pass) { + first_pass = FALSE; + } else { + this->set_position4(g->f2v0, g->f2v1, g->f2v2, g->f2v3); + this->polygons++; + EMU64_LOGF("gsSPNQuadrangleData1(%d, %d, %d, %d, 0),\n", g->f2v0, g->f2v1, g->f2v2, g->f2v3); + + n_faces--; + if (n_faces == 0) + break; + } + } else { + Gquad_7b* g7b = (Gquad_7b*)g; + this->gfx_p++; + /* 7 bits per vertex index, max 2 faces per Gfx */ + this->set_position4(g7b->f0v0, g7b->f0v1, g7b->f0v2, g7b->f0v3); +#ifdef EMU64_FIXES + this->polygons++; +#endif + EMU64_LOGF("gsSPNQuadrangleData1(%d, %d, %d, %d, 0),\n", g7b->f0v0, g7b->f0v1, g7b->f0v2, g7b->f0v3); + + n_faces--; + if (n_faces == 0) + break; + + /* Only 1 face on the first pass */ + if (first_pass) { + first_pass = FALSE; + } else { + int v0 = (g7b->f1v0_1 << 3) | (g7b->f1v0_0); + this->set_position4(v0, g7b->f1v1, g7b->f1v2, g7b->f1v3); +#ifdef EMU64_FIXES + this->polygons++; +#endif + EMU64_LOGF("gsSPNQuadrangleData1(%d, %d, %d, %d, 0),\n", v0, g7b->f1v1, g7b->f1v2, g7b->f1v3); + + n_faces--; + if (n_faces == 0) + break; + } + } + } + + this->gfx_p += (int)n_faces - 1; /* Should equate to gfx_p--, as the emulator will increment it once. */ + EMU64_TIMED_SEGMENT_END(polygons_time); + this->rdp_pipe_sync_needed = true; +} + +void emu64::dl_G_TRI2() { + int unused[2]; + u32 commands; + u32 v0; + u32 v1; + u32 v2; + u32 v3; + u32 v4; + u32 v5; + + /** + * NOTE: Looks like the devs made an optimization by counting up all TRI2 & TRI1 + * calls in sequence and executing them in one call. Probably an early version of + * TRIN/TRIN_INDEPEND which seem to dominate AC's display list polygon calls. + */ + + if (this->disable_polygons || aflags[AFLAGS_MAX_POLYGONS] || aflags[AFLAGS_WIREFRAME]) { + Gtri2 tris = *((Gtri2*)&this->gfx_p->words); + + v0 = tris.t0v0 / 2; + v1 = tris.t0v1 / 2; + v2 = tris.t0v2 / 2; + v3 = tris.t1v0 / 2; + v4 = tris.t1v1 / 2; + v5 = tris.t1v2 / 2; + + EMU64_TIMED_SEGMENT_BEGIN(); + + EMU64_LOGF("gsSP2Triangles(%d, %d, %d, 0, %d, %d, %d, 0),", v0, v1, v2, v3, v4, v5); + + if (aflags[AFLAGS_MAX_POLYGONS] != 0) { + EMU64_LOGF(" [%d] @@@", this->polygons); + } + + if (!this->disable_polygons && EMU64_CAN_DRAW_POLYGON()) { + this->dirty_check(this->texture_gfx.tile, this->texture_gfx.level, TRUE); + this->setup_1tri_2tri_1quad(v0); + this->draw_1tri_2tri_1quad(6, v0, v1, v2, v3, v4, v5); + } + + this->double_triangles++; + this->polygons++; +#ifdef EMU64_DEBUG + this->polygons_time += (osGetCount() - start); +#endif + } else { + /* Count up all the vertices */ + commands = 0; + int n_verts = 0; + + int i = 0; + while (TRUE) { + if (this->gfx_p[i].tri.cmd == G_TRI2) { + n_verts += 6; + } else if (this->gfx_p[i].tri.cmd == G_TRI1) { + n_verts += 3; + } else { + break; + } + i++; + commands++; + } + + this->dirty_check(this->texture_gfx.tile, this->texture_gfx.level, TRUE); + u64 t_g; + t_g = *(u64*)&this->gfx_p->words; + Gtri2* tri2 = (Gtri2*)&t_g; + this->setup_1tri_2tri_1quad(tri2->t0v0 / 2); + +#ifdef EMU64_DEBUG + u32 start = osGetCount(); +#endif + + if (aflags[AFLAGS_WIREFRAME] == 0) { + GXBegin(GX_TRIANGLES, GX_VTXFMT0, n_verts); + } + + for (u32 i = 0; i < commands; i++) { + Gtri2 g = *(Gtri2*)&this->gfx_p[i].words; + u32 v0 = g.t0v0 / 2; + u32 v1 = g.t0v1 / 2; + u32 v2 = g.t0v2 / 2; + this->set_position3(v0, v1, v2); + if (this->gfx_p[i].tri.cmd == G_TRI2) { + u32 v3 = g.t1v0 / 2; + u32 v4 = g.t1v1 / 2; + u32 v5 = g.t1v2 / 2; + + EMU64_LOGF("gsSP2Triangles(%d, %d, %d, 0, %d, %d, %d, 0),", v0, v1, v2, v3, v4, v5); + + this->set_position3(v3, v4, v5); + } else { + EMU64_LOGF("gsSP1Triangle(%d, %d, %d, 0),", v0, v1, v2); + } + } + + this->gfx_p += (commands - 1); + EMU64_TIMED_SEGMENT_END(polygons_time); + } + + this->rdp_pipe_sync_needed = true; +} + +void emu64::dl_G_QUAD() { + Gquad0 q = *(Gquad0*)&this->gfx_p->words; + u32 v0 = q.v0 / 2; + u32 v1 = q.v1 / 2; + u32 v2 = q.v2 / 2; + u32 v3 = q.v3 / 2; + + EMU64_TIMED_SEGMENT_BEGIN(); + + EMU64_LOGF("gsSP1Quadrangle(%d, %d, %d, %d, 0),", v0, v1, v2, v3); + + if (aflags[AFLAGS_MAX_POLYGONS]) { + EMU64_LOGF(" [%d] @@@", this->polygons); + } + + if (this->disable_polygons == false && EMU64_CAN_DRAW_POLYGON()) { + this->setup_1tri_2tri_1quad(v0); + this->draw_1tri_2tri_1quad(4, v0, v1, v2, v3); + } + + this->polygons++; + this->quads++; + EMU64_TIMED_SEGMENT_END(polygons_time); +} + +void emu64::dl_G_CULLDL() { + f32 ox; + f32 oy; + f32 oz; + u32 vstart = ((Gculldl*)&this->gfx)->vstart / 2; + u32 vend = ((Gculldl*)&this->gfx)->vend / 2; + u32 mask; + u32 i; + Vertex* vtx; + + EMU64_WARNF("gsSPCullDisplayList(%d, %d),", vstart, vend); + + EMU64_LOG("vn mask x y z \n"); + + mask = G_CULL_Z_GREATERTHAN | G_CULL_Z_LESSTHAN | G_CULL_Y_GREATERTHAN | G_CULL_Y_LESSTHAN | G_CULL_X_GREATERTHAN | + G_CULL_X_LESSTHAN; /* 0x3F00 */ + + for (i = vstart; i <= vend; i++) { + vtx = &this->vertices[i]; + + /* Vertex position -> camera space calculations */ + if ((vtx->flag & MTX_NONSHARED) == MTX_SHARED) { +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + this->print_guMtxXFM1F_dol2(this->projection_mtx, this->projection_type, vtx->position.x, + vtx->position.y, vtx->position.z); + } +#endif + + guMtxXFM1F_dol2(this->projection_mtx, this->projection_type, vtx->position.x, vtx->position.y, + vtx->position.z, &ox, &oy, &oz); + } else { + /* MTX_NONSHARED */ + Vec oVec; + if (aflags[AFLAGS_USE_GUVECMULT] == 0) { + PSMTXMultVec(this->position_mtx_stack[this->mtx_stack_size], &vtx->position, &oVec); + } else { + guMtxXFM1F_dol(this->position_mtx_stack[this->mtx_stack_size], vtx->position.x, vtx->position.y, + vtx->position.z, &oVec.x, &oVec.y, &oVec.z); + } + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + this->print_guMtxXFM1F_dol2(this->projection_mtx, this->projection_type, oVec.x, oVec.y, oVec.z); + } +#endif + + f32 x = oVec.x; + f32 y = oVec.y; + f32 z = oVec.z; + + guMtxXFM1F_dol2(this->projection_mtx, this->projection_type, x, y, z, &ox, &oy, &oz); + } + + /* Assign culling flags to vertex */ + if (ox < -1.0f) { + vtx->flag |= G_CULL_X_LESSTHAN; + } else if (ox > 1.0f) { + vtx->flag |= G_CULL_X_GREATERTHAN; + } + + if (oy < -1.0f) { + vtx->flag |= G_CULL_Y_LESSTHAN; + } else if (oy > 1.0f) { + vtx->flag |= G_CULL_Y_GREATERTHAN; + } + + if (oz > 0.0f) { + vtx->flag |= G_CULL_Z_LESSTHAN; + } else if (oz < -1.0f) { + vtx->flag |= G_CULL_Z_GREATERTHAN; + } + + EMU64_LOGF("%2d %04x %1d%1d%1d%1d%1d%1d %1d %6.3f %6.3f %6.3f %8.2f %8.2f %8.2f \n", vstart, vtx->flag, + vtx->cull_z_greater, vtx->cull_z_lesser, vtx->cull_y_greater, vtx->cull_y_lesser, + vtx->cull_x_greater, vtx->cull_x_lesser, vtx->nonshared, ox, oy, oz +/* The devs seem to have forgotten to add the last three float values */ +#ifdef EMU64_FIX_CULL_INFO_LOG + , + vtx->position.x, vtx->position.y, vtx->position.z /* Not sure if this is correct. */ +#endif + ); + + /* Update culled state */ + mask &= vtx->flag; + + /* TODO: An optimization here would be to break immediately if culling occurs? */ + /* I'm not sure if these flags are checked anywhere else. */ + } + + this->cullDL_calls++; + if (mask != 0) { + EMU64_LOGF("カリングされました mask=%02x\n", mask); /* Translation: Was culled mask=%02x */ + + if (this->DL_stack_level <= 0) { + this->end_dl = true; + } else { + this->gfx_p = (Gfx*)this->DL_stack[--DL_stack_level] - 1; + } + + this->cullDL_outside_obj_count++; + } else { + EMU64_LOG("カリングされませんでした\n"); /* Translation: Wasn't culled */ + this->cullDL_visible_obj_count++; + } +} + +void emu64::dl_G_BRANCH_Z() { + this->work_ptr = (void*)this->seg2k0(this->rdpHalf_1); + EMU64_WARNF("gsSPBranchLessZraw(%s, %d, 0x%08x),", this->segchk(this->rdpHalf_1), (this->gfx.words.w0 / 2) & 0x7FF, + this->gfx.words.w1); + + this->gfx_p = (Gfx*)((int)this->work_ptr - sizeof(Gfx)); + /* Translation: gsSPBranchLessZraw isn't implemented yet */ + this->Printf0("gsSPBranchLessZrawはまだインプリメントされていません\n"); +} + +#define TEXTURE_SCALE 32.0f +#define TEXTURE_SCALE_CONV TEXTURE_SCALE * 65536.0f + +void emu64::dl_G_TEXTURE() { + Gtexture_internal* texture = (Gtexture_internal*)&this->gfx; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + if (texture->xparam == 0) { + EMU64_LOGF("gsSPTexture(%d, %d, %d, %d, %s),", texture->s, texture->t, texture->level, texture->tile, + texture->on ? "G_ON" : "G_OFF"); + } else { + EMU64_LOGF("gsSPTextureL(%d, %d, %d, %d, %d, %s),", texture->s, texture->t, texture->level, texture->xparam, + texture->tile, texture->on ? "G_ON" : "G_OFF"); + } + } +#endif + + Gfx* t = (Gfx*)&this->texture_gfx; + if ((*(u64*)t) != (*(u64*)&this->gfx)) { + *(u64*)&this->texture_gfx = *(u64*)texture; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX] = true; + + if (this->texture_gfx.s == 0) { + this->texture_scale_s = TEXTURE_SCALE; + } else { + this->texture_scale_s = TEXTURE_SCALE_CONV / fastcast_float(&this->texture_gfx.s); + } + + if (this->texture_gfx.t == 0) { + this->texture_scale_t = TEXTURE_SCALE; + } else { + this->texture_scale_t = TEXTURE_SCALE_CONV / fastcast_float(&this->texture_gfx.t); + } + } +} + +void emu64::dl_G_POPMTX() { + u32 n = this->gfx_p->words.w1 >> 6; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + if (n == 1) { + EMU64_LOG("gsSPPopMatrix(G_MTX_MODELVIEW),"); + } else { + EMU64_LOGF("gsSPPopMatrix(G_MTX_MODELVIEW, %d),", n); + } + } +#endif + + this->mtx_stack_size -= n; + this->dirty_flags[EMU64_DIRTY_FLAG_POSITION_MTX] = true; +} + +void emu64::dl_G_GEOMETRYMODE() { + u32 clear = this->gfx.words.w0 & 0x00FFFFFF; + u32 set = this->gfx.words.w1 & 0x00FFFFFF; + + if (this->print_commands) { + if (clear == 0) { + EMU64_LOG("gsSPLoadGeometryMode("); + this->print_geomflags(set); + EMU64_LOG("),"); + } else if (set == 0) { + EMU64_LOG("gsSPClearGeometryMode("); + this->print_geomflags(~clear); + EMU64_LOG("),"); + } else if (clear == 0xFFFFFF) { + EMU64_LOG("gsSPSetGeometryMode("); + this->print_geomflags(set); + EMU64_LOG("),"); + } else { + EMU64_LOG("gsSPGeometryMode("); + this->print_geomflags(~clear); + EMU64_LOG(", "); + this->print_geomflags(set); + EMU64_LOG("),"); + } + } + + u32 flags = set | (this->geometry_mode & clear); + if (this->geometry_mode != flags) { + if ((this->geometry_mode ^ flags) & (G_LIGHTING | G_LIGHTING_POSITIONAL)) { + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTING] = true; + } + + if ((this->geometry_mode ^ flags) & G_FOG) { + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + } + + if ((this->geometry_mode ^ flags) & G_TEXTURE_GEN) { + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE0] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE1] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE2] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE3] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE4] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE5] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE6] = true; + this->dirty_flags[EMU64_DIRTY_FLAG_TEX_TILE7] = true; + } + + this->geometry_mode = flags; + this->dirty_flags[EMU64_DIRTY_FLAG_GEOMETRYMODE] = true; + } +} + +/* TODO: where should these go? s1, s2, and s3 are after but these are after s */ +static emu64 emu64_class; +char* emu64::warningString[EMU64_WARNING_COUNT]; +u32 emu64::warningTime[EMU64_WARNING_COUNT]; + +void emu64::dl_G_MOVEWORD() { + static char s1[20]; + static char s2[64]; + static char s3[64]; + Gmoveword* moveword = (Gmoveword*)this->gfx_p; + + switch (moveword->index) { + case G_MW_SEGMENT: { + u32 segment = moveword->offset / 4; + EMU64_WARNF("gsSPSegmentA(%d, 0x%08x),", segment, moveword->data); + this->segments[segment] = (0x80000000 + (moveword->data & 0x0FFFFFFF)); + if (segment >= NUM_SEGMENTS || + (moveword->data != 0 && (moveword->data < 0x80000000 || moveword->data > 0x83000000))) { + sprintf(s1, "gsSPSegmentA no=%d", segment); + sprintf(s2, "base=%s", this->segchk(moveword->data)); + sprintf(s3, "gfxp=%s", this->segchk((u32)this->gfx_p)); + emu64::warningString[0] = "SPSegment found Illigal Address."; + emu64::warningString[1] = s1; + emu64::warningString[2] = s2; + emu64::warningString[3] = s3; + emu64::warningTime[0] = EMU64_WARN_TIME; + emu64::warningTime[1] = EMU64_WARN_TIME; + emu64::warningTime[2] = EMU64_WARN_TIME; + emu64::warningTime[3] = EMU64_WARN_TIME; + + this->segment_set = true; + OSReport(VT_COL(RED, WHTIE) "%s\n%s\n%s\n" VT_RST, s1, s2, s3); + } + } break; + + case G_MW_CLIP: { + EMU64_LOGF("gsSPClipRatio(FRUSTRATIO_%d), ", moveword->data == 0 ? 0 : moveword->data); + this->gfx_p += + 3; /* gsSPClipRatio generates four moveword instructions, so skip three. Emulator will skip last one. */ + } break; + + case G_MW_NUMLIGHT: { + u32 num_lights = moveword->data / 24; + EMU64_LOGF("gsSPNumLights(%d), ", num_lights); + if (this->num_lights != num_lights) { + this->num_lights = num_lights; + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTS] = true; + } + } break; + + case G_MW_LIGHTCOL: { + int light = (moveword->offset & 0xF0) / 32; + +/* Seems like the devs used the light table index as the enum number */ +/* TODO: This could be correct. Investigate if they changed the light definitions. */ +#ifdef EMU64_FIX_MOVEWORD_LIGHT_NUM_LOG + EMU64_LOGF("gsSPLightColor(LIGHT_%d, %08x), ", (moveword->offset / 0x18) + 1, moveword->data); +#else + EMU64_LOGF("gsSPLightColor(LIGHT_%d, %08x), ", light + 1, moveword->data); +#endif + + this->gfx_p++; /* gsSPLightColor generates two commands */ + + GXColor* color = (GXColor*)&((Gmoveword*)&this->gfx)->data; + this->lights[light].color.rgba.r = color->r; + this->lights[light].color.rgba.g = color->g; + this->lights[light].color.rgba.b = color->b; + + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTS] = true; + } break; + + case G_MW_FOG: { + s16 fm = (s16)(moveword->data >> 16); /* z multiplier */ + s16 fo = (s16)moveword->data; /* z offset */ + int min = 500 - (fo * 500) / fm; + EMU64_LOGF("gsSPFogFactor(%d, %d),", fm, fo); + EMU64_LOGF("gsSPFogPosition(%d, %d),", min, 128000 / fm + min); + + this->fog_zmult = fm; + this->fog_zoffset = fo; + this->dirty_flags[EMU64_DIRTY_FLAG_FOG] = true; + } break; + + case G_MW_PERSPNORM: { + EMU64_LOGF("gsSPPerspNormalize(%d),", moveword->data); + } break; + + default: { + EMU64_LOGF("gsMoveWd(%d, %d, %d), /* ### what */", moveword->index, moveword->offset, moveword->data); + + this->num_unknown_cmds++; + this->Printf0("未知の命令に出くわした\n"); /* Translation: Came across an unknown command */ + } break; + } +} + +void emu64::dl_G_MOVEMEM() { + Gmovemem* movemem = (Gmovemem*)this->gfx_p; + u8 param = movemem->index; + switch (movemem->index) { + case G_MV_VIEWPORT: { + this->work_ptr = (void*)this->seg2k0(movemem->data); + Vp_t* vp = (Vp_t*)this->work_ptr; + +#ifdef EMU64_DEBUG + if (this->print_commands != false) { + EMU64_LOGF("gsSPViewport(%s),", this->segchk(movemem->data)); + EMU64_INFOF("\t# vscale=[%d %d %d %d], ", vp->vscale[0], vp->vscale[1], vp->vscale[2], vp->vscale[3]); + EMU64_INFOF("vtrans=[%d %d %d %d] ", vp->vtrans[0], vp->vtrans[1], vp->vtrans[2], vp->vtrans[3]); + } +#endif + + if (!this->disable_polygons) { + f32 left = ((f32)(vp->vtrans[0] - vp->vscale[0]) / 2.0f); + f32 top = ((f32)(vp->vtrans[1] - vp->vscale[1]) / 2.0f); + f32 wd = (f32)vp->vscale[0] / 2.0f; + f32 ht = (f32)vp->vscale[1] / 2.0f; + f32 nearz = ((f32)(vp->vscale[2] - vp->vtrans[2]) * 2.0f) / 1023.0f; + f32 farz = ((f32)vp->vscale[2] * 2.0f) / 1023.0f; + + EMU64_INFOF("GXSetViewport %7.3f %7.3f %7.3f %7.3f %7.3f %7.3f\n", left, top, wd, ht, nearz, farz); + + GXSetViewport(left, top, wd, ht, nearz, farz); + } + break; + } + + case G_MV_MATRIX: { + EMU64_LOGF("gsSPForceMatrix(%s),", this->segchk(movemem->data)); + this->gfx_p++; /* Generates two commands */ + this->Printf0("gsSPForceMatrixはサポートしてません\n"); /* Translation: gsSPForceMatrix isn't supported */ + break; + } + + case G_MV_LIGHT: { + switch (movemem->offset * 8) { + case G_MVO_LOOKATX: { + EMU64_LOGF("gsSPLookAtX(%s),", this->segchk(movemem->data)); + LookAt* la = (LookAt*)this->seg2k0(movemem->data); + EMU64_INFOF(" /* {%3d,%3d,%3d} */", la->l->l.dir[0], la->l->l.dir[1], la->l->l.dir[2]); + this->lookAt.x.x = la->l->l.dir[0]; + this->lookAt.x.y = la->l->l.dir[1]; + this->lookAt.x.z = la->l->l.dir[2]; + this->lookatx_cnt++; + break; + } + + case G_MVO_LOOKATY: { + EMU64_LOGF("gsSPLookAtY(%s),", this->segchk(movemem->data)); + LookAt* la = (LookAt*)this->seg2k0(movemem->data); + EMU64_INFOF(" /* {%3d,%3d,%3d} */", la->l->l.dir[0], la->l->l.dir[1], la->l->l.dir[2]); + this->lookAt.y.x = la->l->l.dir[0]; + this->lookAt.y.y = la->l->l.dir[1]; + this->lookAt.y.z = la->l->l.dir[2]; + this->lookaty_cnt++; + break; + } + + default: { + Light_new* light = (Light_new*)this->seg2k0(movemem->data); + int idx = movemem->offset * 8 - 24; + idx /= 24; /* Idx should be 1 - 8. There's more bithacks going on here, but I think it's compiler + generated */ + EMU64_LOGF("gsSPLight(%s, %d),", this->segchk(movemem->data), idx); + EMU64_INFOF("no = %d color=[%3d %3d %3d],", idx, light->l.col[0], light->l.col[1], light->l.col[2]); + + /* Convert index to 0 based */ + int l_idx = (idx - 1); + l_idx &= (NUM_LIGHTS - 1); + + this->dirty_flags[EMU64_DIRTY_FLAG_LIGHTS] = true; + + this->lights[l_idx].color.rgba.r = light->l.col[0]; + this->lights[l_idx].color.rgba.g = light->l.col[1]; + this->lights[l_idx].color.rgba.b = light->l.col[2]; + + if (light->l.pad1 != 0) { + EMU64_INFOF(" position=[%+6d %+6d %+6d],", light->p.pos[0], light->p.pos[1], light->p.pos[2]); + EMU64_INFOF(" kc=%3d kl=%3d kq=%3d", light->p.kc, light->p.kl, light->p.kq); + + this->lights[l_idx].position.x = fastcast_float(&light->p.pos[0]); + this->lights[l_idx].position.y = fastcast_float(&light->p.pos[1]); + this->lights[l_idx].position.z = fastcast_float(&light->p.pos[2]); + this->lights[l_idx].attenuation.kc = fastcast_float(&light->p.kc) / 256.0f * 16.0f + 0.5f; + this->lights[l_idx].attenuation.k1 = fastcast_float(&light->p.kl) / 256.0f * 0.5f; + this->lights[l_idx].attenuation.kq = fastcast_float(&light->p.kq) / 256.0f * 0.000488f; + + if (aflags[AFLAGS_LIGHT_MOVE_TO_MODEL_SPACE] != 0) { + PSMTXMultVec(this->position_mtx_stack[this->mtx_stack_size], &this->lights[l_idx].position, + &this->lights[l_idx].position); + } + } else { + f32 position_mult = 10000.0f; + if (aflags[AFLAGS_LIGHT_POSITION_MULTIPLIER] != 0) { + position_mult = (f32)(aflags[AFLAGS_LIGHT_POSITION_MULTIPLIER]) / 100.0f; + } + + EMU64_INFOF(" normal=[%+4d %+4d %+4d] pad1=%d", light->l.dir[0], light->l.dir[1], + light->l.dir[2], light->l.pad1); + + this->lights[l_idx].position.x = fastcast_float(&light->l.dir[0]) * position_mult; + this->lights[l_idx].position.y = fastcast_float(&light->l.dir[1]) * position_mult; + this->lights[l_idx].position.z = fastcast_float(&light->l.dir[2]) * position_mult; + this->lights[l_idx].attenuation.kc = 0.0f; + this->lights[l_idx].attenuation.k1 = 0.0f; + this->lights[l_idx].attenuation.kq = 0.0; + } + EMU64_INFOF("\n"); + break; + } + } + + break; + } + + default: { + /* Invalid/Unknown MOVEMEM command */ + EMU64_WARNF("gsMoveMem(%s, %d, %d, %d), /* ### what? */", this->segchk(movemem->data), + ((movemem->length >> 3) + 1) * 8, movemem->index, movemem->offset); + + this->num_unknown_cmds++; + this->Printf0("未知の命令に出くわした\n"); /* Came across an unknown command */ + break; + } + } +} + +void emu64::dl_G_SPECIAL_1() { + Gspecial1* special = (Gspecial1*)&this->gfx; + + if (special->mode == G_SPECIAL_TA_MODE) { + EMU64_LOGF("gsDPSetTextureAdjustMode(%s),", special->param0 == 0 ? "G_TA_N64" : "G_TA_DOLPHIN"); + this->texture_adjust_mode = special->param0; + } else { + EMU64_LOGF("gsDPSpecial_1(0x%02x, 0x%04x, 0x%08x),", special->mode, special->param0, special->param1); + } +} + +bool emu64::displayWarning = false; +u8 FrameCansel = false; + +static dl_func dl_func_tbl[NUM_COMMANDS] = { + &emu64::dl_G_SETTEXEDGEALPHA, + &emu64::dl_G_SETCOMBINE_NOTEV, + &emu64::dl_G_SETCOMBINE_TEV, + &emu64::dl_G_NOOP, + &emu64::dl_G_SETTILE_DOLPHIN, + &emu64::dl_G_NOOP, + &emu64::dl_G_NOOP, + &emu64::dl_G_SPECIAL_1, + &emu64::dl_G_NOOP, + &emu64::dl_G_TEXTURE, + &emu64::dl_G_POPMTX, + &emu64::dl_G_GEOMETRYMODE, + &emu64::dl_G_MTX, + &emu64::dl_G_MOVEWORD, + &emu64::dl_G_MOVEMEM, + &emu64::dl_G_LOAD_UCODE, + &emu64::dl_G_DL, + &emu64::dl_G_ENDDL, + &emu64::dl_G_SPNOOP, + &emu64::dl_G_RDPHALF_1, + &emu64::dl_G_SETOTHERMODE_L, + &emu64::dl_G_SETOTHERMODE_H, + &emu64::dl_G_TEXRECT, + &emu64::dl_G_NOOP, + &emu64::dl_G_RDPLOADSYNC, + &emu64::dl_G_RDPPIPESYNC, + &emu64::dl_G_RDPTILESYNC, + &emu64::dl_G_RDPFULLSYNC, + &emu64::dl_G_NOOP, + &emu64::dl_G_NOOP, + &emu64::dl_G_NOOP, + &emu64::dl_G_SETSCISSOR, + &emu64::dl_G_SETPRIMDEPTH, + &emu64::dl_G_RDPSETOTHERMODE, + &emu64::dl_G_LOADTLUT, + &emu64::dl_G_NOOP, + &emu64::dl_G_SETTILESIZE, + &emu64::dl_G_LOADBLOCK, + &emu64::dl_G_LOADTILE, + &emu64::dl_G_SETTILE, + &emu64::dl_G_FILLRECT, + &emu64::dl_G_SETFILLCOLOR, + &emu64::dl_G_SETFOGCOLOR, + &emu64::dl_G_SETBLENDCOLOR, + &emu64::dl_G_SETPRIMCOLOR, + &emu64::dl_G_SETENVCOLOR, + &emu64::dl_G_SETCOMBINE, + &emu64::dl_G_SETTIMG, + &emu64::dl_G_SETZIMG, + &emu64::dl_G_SETCIMG, + &emu64::dl_G_NOOP, + &emu64::dl_G_VTX, + &emu64::dl_G_MODIFYVTX, + &emu64::dl_G_CULLDL, + &emu64::dl_G_BRANCH_Z, + &emu64::dl_G_TRI1, + &emu64::dl_G_TRI2, + &emu64::dl_G_QUAD, + &emu64::dl_G_LINE3D, + &emu64::dl_G_TRIN, + &emu64::dl_G_TRIN_INDEPEND, + &emu64::dl_G_NOOP, + &emu64::dl_G_NOOP, + &emu64::dl_G_QUADN, +}; + +u32 emu64::emu64_taskstart_r(Gfx* dl_p) { + this->gfx_p = dl_p; + EMU64_INFO("*** emu64taskstart ***\n"); + OSInitFastCast(); + this->end_dl = false; + + while (!this->end_dl && !FrameCansel) { + this->cmds_processed++; + EMU64_INFOF("%08x:", this->gfx_p); + this->gfx = *this->gfx_p; + this->gfx_cmd = this->gfx.dma.cmd; + this->dl_history[this->dl_history_start++] = this->gfx_p; + if (this->dl_history_start >= DL_HISTORY_COUNT) { + this->dl_history_start = 0; + } + + this->work_ptr = nullptr; + + if (this->print_commands) { + EMU64_INFOF("%08x-%08x:", this->gfx.words.w0, this->gfx.words.w1); + for (u32 i = 0; i < this->DL_stack_level; i++) { + EMU64_WARN(" "); + } + } + + u8 cmd_index = this->gfx_cmd - G_FIRST_CMD; + if (cmd_index < NUM_COMMANDS) { + if (dl_func_tbl[cmd_index] != nullptr) { + EMU64_TIMED_SEGMENT_BEGIN(); + (this->*dl_func_tbl[cmd_index])(); + EMU64_TIMED_SEGMENT_END(command_info[cmd_index].time); + // likely fakematch + u32* p = (u32*)&this->command_info; + p[(u32)cmd_index * 2 + 1]++; + } + } else { + this->Printf0( + "予期しないコマンドがありました。中断します。\n"); /* There was an unexpected command. Aborting. */ + break; + } + + EMU64_INFO("\n"); + this->gfx_p++; + } + + if (FrameCansel != FALSE) { + this->Printf0("フレームキャンセル\n"); /* Translation: Frame cancel. */ + } + + return this->err_count; +} + +#define EMU64_RUN_MODE_SKIP -1 +#define EMU64_RUN_MODE_NORMAL 0 +#define EMU64_RUN_MODE_VERBOSE \ + EMU64_PRINT_LEVEL0_FLAG | EMU64_PRINT_LEVEL1_FLAG | EMU64_PRINT_LEVEL2_FLAG | EMU64_PRINT_LEVEL3_FLAG | \ + EMU64_PRINT_LEVEL4_FLAG + +void emu64::emu64_taskstart(Gfx* dl_p) { + static u8 flag = 0; + + PPCSync(); + if ((int)aflags[AFLAGS_RUN_MODE] != EMU64_RUN_MODE_SKIP) { + if (aflags[AFLAGS_RUN_MODE] != EMU64_RUN_MODE_NORMAL) { + this->emu64_set_verbose(aflags[AFLAGS_RUN_MODE]); + aflags.set(AFLAGS_RUN_MODE, EMU64_RUN_MODE_NORMAL); + } + + EMU64_TIMED_SEGMENT_BEGIN(); + this->emu64_taskstart_r(dl_p); + EMU64_TIMED_SEGMENT_END(rsprdp_time); + + if (aflags[AFLAGS_JUTREPORT_SEGMENT_STATS] == TRUE) { + JW_JUTReport(40, 100, 1, "%d/%d/%d/%d/%d", this->resolved_addresses, this->_2024, this->_2028, this->_202C, + this->abnormal_addresses); + } + + if (aflags[AFLAGS_PRINT_COMMAND_INFO] != 0) { + aflags.set(AFLAGS_PRINT_COMMAND_INFO, 0); + +#ifdef EMU64_DEBUG_PRINTINFO + this->Printf0("CMD TIMES CALLS TIMES/CALLS\n"); +#endif + + for (int i = 0; i < NUM_COMMANDS; i++) { + if (this->command_info[i].calls != 0) { + this->Printf0("%02X %6d %4d %6d\n", (u8)(i + G_FIRST_CMD), /* Command */ + this->command_info[i].time, /* Total time */ + this->command_info[i].calls, /* Total calls */ + this->command_info[i].time / this->command_info[i].time /* Average command time */ + ); + } + } + +#ifdef EMU64_DEBUG_PRINTINFO + EMU64_PRINT_MEMBER(lookatx_cnt); + EMU64_PRINT_MEMBER(lookaty_cnt); + EMU64_PRINT_MEMBER(texconv_cnt); + EMU64_PRINT_MEMBER(vertex_cnt); + EMU64_PRINT_MEMBER(texconv_time); + EMU64_PRINT_MEMBER(rsprdp_time); + EMU64_PRINT_MEMBER(combine_time); + EMU64_PRINT_MEMBER(spvertex_time); + EMU64_PRINT_MEMBER(setup_time); + EMU64_PRINT_MEMBER(loadblock_time); + EMU64_PRINT_MEMBER(loadtlut_time); + EMU64_PRINT_MEMBER(matrix_time); + this->Printf0("polygons = %u/%u/%u/%u\n", this->polygons, this->double_triangles, this->triangles, + this->quads); + EMU64_PRINT_MEMBER(polygons_time); + EMU64_PRINT_MEMBER(dirty_check_time); +#ifndef ANIMAL_FOREST_PLUS + EMU64_PRINT_MEMBER(dirty_lightX_time); + EMU64_PRINT_MEMBER(dirty_lightX_cnt); +#endif + EMU64_PRINT_MEMBER(dirty_light_time); + EMU64_PRINT_MEMBER(dirty_light_cnt); + EMU64_PRINT_MEMBER(dirty_tex_time); + EMU64_PRINT_MEMBER(dirty_tex_cnt); + EMU64_PRINT_MEMBER(dirty_tex1_time); + EMU64_PRINT_MEMBER(dirty_tex1_cnt); + EMU64_PRINT_MEMBER(dirty_tex2_time); + EMU64_PRINT_MEMBER(dirty_tex2_cnt); + EMU64_PRINT_MEMBER(dirty_texmtx_time); + EMU64_PRINT_MEMBER(dirty_texmtx_cnt); + EMU64_PRINT_MEMBER(dirty_proj_time); + EMU64_PRINT_MEMBER(dirty_primcolor_time); + EMU64_PRINT_MEMBER(dirty_envcolor_time); + EMU64_PRINT_MEMBER(dirty_fillcolor_time); + EMU64_PRINT_MEMBER(dirty_combine_mode_time); + EMU64_PRINT_MEMBER(dirty_othermodeh_time); + EMU64_PRINT_MEMBER(dirty_othermodel_time); + EMU64_PRINT_MEMBER(dirty_geometory_time); + EMU64_PRINT_MEMBER(setuptex_time); + EMU64_PRINT_MEMBER(texture_cache_select_time); + EMU64_PRINT_MEMBER(guMtxL2F_time); + EMU64_PRINT_MEMBER(guMtxL2F_cnt); + EMU64_PRINT_MEMBER(combine_auto_cnt[0]); + EMU64_PRINT_MEMBER(combine_auto_cnt[1]); + EMU64_PRINT_MEMBER(combine_auto_cnt[2]); + EMU64_PRINT_MEMBER(combine_auto_cnt[3]); + EMU64_PRINT_MEMBER(combine_auto_cnt[4]); +#endif + } + + if (emu64::displayWarning != false) { + for (u32 i = 0; i < EMU64_WARNING_COUNT; i++) { + if (emu64::warningString[i] != nullptr) { + JW_JUTReport(40, i * 16 + 80, 1, "%s", emu64::warningString[i]); + if (emu64::warningTime[i] == 0) { + emu64::warningString[i] = nullptr; + } + } + } + } + } +} + +void emu64::emu64_set_ucode_info(int len, ucode_info* info) { + this->ucode_len = len; + this->ucode_info_p = info; +} + +void emu64::emu64_set_first_ucode(void* ucode_p) { + this->emu64_change_ucode(ucode_p); +} + +void emu64::emu64_set_verbose(int verbose) { + this->print_commands = verbose; + this->print_flags = verbose; +} + +/* C wrapper methods */ + +extern void emu64_init(void) { + emu64_class.emu64_init(); +} + +extern void emu64_cleanup(void) { + emu64_class.emu64_cleanup(); +} + +extern void emu64_taskstart(Gfx* gfx) { + emu64_class.emu64_taskstart(gfx); +} + +extern void emu64_set_ucode_info(int len, ucode_info* info) { + emu64_class.emu64_set_ucode_info(len, info); +} + +extern void emu64_set_first_ucode(void* ucode_p) { + emu64_class.emu64_set_first_ucode(ucode_p); +} + +extern void emu64_set_aflags(unsigned int idx, u8 value) { + if (idx > 0 && idx < aflags_c::getMaxArray()) { + aflags.set(idx, value); + } +} + +extern u8 emu64_get_aflags(unsigned int idx) { + if (idx > 0 && idx < aflags_c::getMaxArray()) { + return aflags[idx]; + } + + return 0; +} diff --git a/src/static/libforest/emu64/emu64_print.cpp b/src/static/libforest/emu64/emu64_print.cpp new file mode 100644 index 00000000..05969f7e --- /dev/null +++ b/src/static/libforest/emu64/emu64_print.cpp @@ -0,0 +1,485 @@ +#include "emu64.hpp" + +#include "boot.h" + +static const char kakko[] = "/\\/\\||||||||\\/\\/"; + +void emu64::disp_matrix(GC_Mtx mtx) { + for (int i = 0; i < 4; i++) { + if (mtx != nullptr) { + for (int x = 0; x < 4; x++) { + this->Printf("%10.3f", mtx[i][x]); + } + } + + this->Printf("\n", kakko[3 + i * 4]); + } +} + +const char* emu64::segchk(u32 segment) { + static char str[64]; + char buf[30]; + const char str0[] = "anime_4_txt+%4u"; + const char str1[] = "anime_6_model+sizeof(Mtx)*%2u"; + + u32 partial_addr = (u32)seg2k0(segment); + u32 addr = convert_partial_address(partial_addr); + + str[0] = '\0'; + if (segment == partial_addr) { + if (addr == partial_addr) { + snprintf(str, sizeof(str), "0x%08x", segment); + } else { + snprintf(str, sizeof(str), "0x%08x /* PADDR=0x%08x */", segment, partial_addr); + } + } else { + const char* s; + if (SEG_EQUALS(segment, SOFTSPRITE_MTX_SEG)) { + s = "softsprite_mtx"; + } else if (SEG_EQUALS(segment, ANIME_1_TXT_SEG)) { + s = "anime_1_txt"; + } else if (SEG_EQUALS(segment, ANIME_2_TXT_SEG)) { + s = "anime_2_txt"; + } else if (SEG_EQUALS(segment, ANIME_3_TXT_SEG)) { + s = "anime_3_txt"; + } else if (SEG_EQUALS(segment, ANIME_4_TXT_SEG)) { + s = "anime_4_txt"; + } else if (SEG_EQUALS(segment, ANIME_5_TXT_SEG)) { + s = "anime_5_txt"; + } else if (SEG_EQUALS(segment, ANIME_6_TXT_SEG)) { + s = "anime_6_txt"; + } else if (SEG_EQUALS(segment, ANIME_1_TXT_SEG)) { + s = "anime_1_model"; + } else if (SEG_EQUALS(segment, ANIME_2_TXT_SEG)) { + s = "anime_2_model"; + } else if (SEG_EQUALS(segment, ANIME_3_TXT_SEG)) { + s = "anime_3_model"; + } else if (SEG_EQUALS(segment, ANIME_4_TXT_SEG)) { + s = "anime_4_model"; + } else if (SEG_EQUALS(segment, ANIME_5_TXT_SEG)) { + s = "anime_5_model"; + } else if (SEG_EQUALS(segment, ANIME_6_TXT_SEG)) { + s = "anime_6_model"; + } else if (segment > anime_4_txt && segment < (anime_4_txt + ANIME_4_TXT_SIZE)) { + snprintf(buf, sizeof(buf) - 1, str0, segment - anime_4_txt); + s = buf; + } else { + if (segment > anime_6_model && segment < (anime_6_model + ANIME_6_MODEL_SIZE)) { + int comb = segment - anime_6_model; + snprintf(buf, sizeof(buf) - 1, str1, comb / (int)sizeof(Mtx)); + s = buf; + } else { + s = nullptr; + } + } + + if (addr == partial_addr) { + if (s != nullptr) { + snprintf(str, sizeof(str), "%s /* 0x%08x */", s, partial_addr); + } else { + snprintf(str, sizeof(str), "0x%08x /* ### 0x%08x */", segment, partial_addr); + } + } else { + if (s != nullptr) { + snprintf(str, sizeof(str), "%s /* 0x%08x PADDR=0x%08x */", s, partial_addr, addr); + } else { + snprintf(str, sizeof(str), "0x%08x /* ### 0x%08x PADDR=0x%08x */", segment, partial_addr, addr); + } + } + } + + return str; +} + +const char* emu64::combine_name(u32 param, u32 type) { + const char* ret; + switch (param) { + case 0: + ret = "COMBINED"; + break; + case 1: + ret = "TEXEL0"; + break; + case 2: + ret = "TEXEL1"; + break; + case 3: + ret = "PRIMITIVE"; + break; + case 4: + ret = "SHADE"; + break; + case 5: + ret = "ENVIRONMENT"; + break; + case 6: + ret = (type == COMBINER_PARAM_B) ? "CENTER" : ((type == COMBINER_PARAM_C) ? "SCALE" : "1"); + break; + case 7: + ret = (type == COMBINER_PARAM_A) + ? "NOISE" + : ((type == COMBINER_PARAM_B) ? "K4" : ((type == COMBINER_PARAM_C) ? "COMBINED_ALPHA" : "0")); + break; + default: + if (type == COMBINER_PARAM_C) { + switch (param) { + case 8: + ret = "TEXEL0_ALPHA"; + break; + case 9: + ret = "TEXEL1_ALPHA"; + break; + case 10: + ret = "PRIMITIVE_ALPHA"; + break; + case 11: + ret = "SHADE_ALPHA"; + break; + case 12: + ret = "ENV_ALPHA"; + break; + case 13: + ret = "LOD_FRACTION"; + break; + case 14: + ret = "PRIM_LOD_FRAC"; + break; + case 15: + ret = "K5"; + break; + default: + ret = "0"; + break; + } + } else { + ret = "0"; + } + break; + } + return ret; +} + +const char* emu64::combine_alpha(int param, int type) { + const char* ret; + + switch (param) { + case 0: + ret = (type == COMBINER_PARAM_C) ? "LOD_FRACTION" : "COMBINED"; + break; + case 1: + ret = "TEXEL0"; + break; + case 2: + ret = "TEXEL1"; + break; + case 3: + ret = "PRIMITIVE"; + break; + case 4: + ret = "SHADE"; + break; + case 5: + ret = "ENVIRONMENT"; + break; + case 6: + ret = (type == COMBINER_PARAM_C) ? "PRIM_LOD_FRAC" : "1"; + break; + case 7: + ret = "0"; + break; + /* There should be a default case here, but they forgot it. */ + /* It returns a pointer to the emu64 class instead. */ +#ifdef EMU64_FIX_COMBINE_NAME_RETURN_VALUES + default: + ret = "0"; + break; +#endif + } + + return ret; +} + +const char* emu64::combine_tev_color_name(u32 color_param) { + const char* ret; + + switch (color_param) { + case 0: + ret = "COMBINED"; + break; + case 1: + ret = "COMBINED_ALPHA"; + break; + case 2: + ret = "(FILL)"; + break; + case 3: + ret = "PRIM_LOD_FRAC"; + break; + case 4: + ret = "PRIMITIVE"; + break; + case 5: + ret = "PRIMITIVE_ALPHA"; + break; + case 6: + ret = "ENVIRONMENT"; + break; + case 7: + ret = "ENV_ALPHA"; + break; + case 8: + ret = "TEXEL0"; + break; + case 9: + ret = "TEXEL0_ALPHA"; + break; + case 10: + ret = "SHADE"; + break; + case 11: + ret = "SHADE_ALPHA"; + break; + case 12: + ret = "1"; + break; + case 13: + ret = "(HALF)"; + break; + case 14: + ret = "(KONST)"; + break; + case 15: + ret = "0"; + break; + /* There should be a default case here, but they forgot it. */ + /* It returns a pointer to the emu64 class instead. */ +#ifdef EMU64_FIX_COMBINE_NAME_RETURN_VALUES + default: + ret = "0"; + break; +#endif + } +} + +const char* emu64::combine_tev_alpha_name(u32 alpha_param) { + const char* ret; + + switch (alpha_param) { + case 0: + ret = "COMBINED"; + break; + case 1: + ret = "PRIM_LOD_FRAC"; + break; + case 2: + ret = "PRIMITIVE"; + break; + case 3: + ret = "ENVIRONMENT"; + break; + case 4: + ret = "TEXEL0"; + break; + case 5: + ret = "SHADE"; + break; + case 6: + ret = "1"; + break; + case 7: + ret = "0"; + break; + /* There should be a default case here, but they forgot it. */ + /* It returns a pointer to the emu64 class instead. */ +#ifdef EMU64_FIX_COMBINE_NAME_RETURN_VALUES + default: + ret = "0"; + break; +#endif + } + + return ret; +} + +typedef struct { + u32 value; + char* name; + u32 mask; +} GeometryModeParameterInfo; + +#define NUM_GEOMETRYMODE_FLAGS 16 +static const GeometryModeParameterInfo geomtbl[NUM_GEOMETRYMODE_FLAGS] = { + { G_ZBUFFER, "G_ZBUFFER", G_ZBUFFER }, + { G_TEXTURE_ENABLE, "G_TEXTURE_ENABLE", G_TEXTURE_ENABLE }, + { G_SHADE, "G_SHADE", G_SHADE }, + { G_SHADING_SMOOTH, "G_SHADING_SMOOTH", G_SHADING_SMOOTH }, + { G_CULL_FRONT, "G_CULL_FRONT", G_CULL_FRONT }, + { G_CULL_BACK, "G_CULL_BACK", G_CULL_BACK }, + { G_FOG, "G_FOG", G_FOG }, + { G_LIGHTING, "G_LIGHTING", G_LIGHTING }, + { G_TEXTURE_GEN, "G_TEXTURE_GEN", G_TEXTURE_GEN }, + { G_TEXTURE_GEN_LINEAR, "G_TEXTURE_GEN_LINEAR", G_TEXTURE_GEN_LINEAR }, + { G_LOD, "G_LOD", G_LOD }, + { G_LIGHTING_POSITIONAL, "G_LIGHTING_POSITIONAL", G_LIGHTING_POSITIONAL }, + { G_DECAL_EQUAL, "G_DECAL_EQUAL", G_DECAL_ALWAYS }, + { G_DECAL_GEQUAL, "G_DECAL_GEQUAL", G_DECAL_ALWAYS }, + { G_DECAL_ALWAYS, "G_DECAL_ALWAYS", G_DECAL_ALWAYS }, + { G_DECAL_SPECIAL, "G_DECAL_SPECIAL", G_DECAL_SPECIAL } +}; + +void emu64::print_geomflags(u32 flags) { + u32 i; + int empty = TRUE; + + for (i = 0; i < NUM_GEOMETRYMODE_FLAGS; i++) { + if ((flags & geomtbl[i].mask) == geomtbl[i].value) { + if (empty) { + empty = FALSE; + } else { + this->Printf("|"); + } + + this->Printf("%s", geomtbl[i].name); + } + } + + if (empty) { + this->Printf("0"); + } +} + +typedef struct { + char* name; + u32 value; + u32 mask; +} RendermodeInfo; + +void emu64::show_render(u32 data) { + static const RendermodeInfo flags[] = { + { "AA_EN", AA_EN, AA_EN }, + { "Z_CMP", Z_CMP, Z_CMP }, + { "Z_UPD", Z_UPD, Z_UPD }, + { "IM_RD", IM_RD, IM_RD }, + { "CLR_ON_CVG", CLR_ON_CVG, CLR_ON_CVG }, + { "CVG_DST_CLAMP", CVG_DST_CLAMP, CVG_DST_SAVE }, + { "CVG_DST_WRAP", CVG_DST_WRAP, CVG_DST_SAVE }, + { "CVG_DST_FULL", CVG_DST_FULL, CVG_DST_SAVE }, + { "CVG_DST_SAVE", CVG_DST_SAVE, CVG_DST_SAVE }, + { "ZMODE_OPA", ZMODE_OPA, ZMODE_DEC }, + { "ZMODE_INTER", ZMODE_INTER, ZMODE_DEC }, + { "ZMODE_XLU", ZMODE_XLU, ZMODE_DEC }, + { "ZMODE_DEC", ZMODE_DEC, ZMODE_DEC }, + { "CVG_X_ALPHA", CVG_X_ALPHA, CVG_X_ALPHA }, + { "ALPHA_CVG_SEL", ALPHA_CVG_SEL, ALPHA_CVG_SEL }, + { "FORCE_BL", FORCE_BL, FORCE_BL }, + }; + + static const char* const m[4][4] = { + { "G_BL_CLR_IN", "G_BL_CLR_MEM", "G_BL_CLR_BL", "G_BL_CLR_FOG" }, + { "G_BL_A_SHADE", "G_BL_0", "G_BL_A_IN", "G_BL_A_FOG" }, + { "G_BL_CLR_IN", "G_BL_CLR_MEM", "G_BL_CLR_BL", "G_BL_CLR_FOG" }, + { "G_BL_A_MEM", "G_BL_0", "G_BL_1MA", "G_BL_1" }, + }; + + EMU64_LOG("\ngsDPSetRenderBlender(\n"); + + u32 c1 = (data >> 18) & 0x3333; + u32 c2 = (data >> 16) & 0x3333; + + for (u32 i = 0; i < ARRAY_COUNT(flags); i++) { + if ((data & flags[i].mask) == flags[i].value) { + this->Printf("%s|", flags[i].name); + } + } + + this->Printf("\nGBL_c1(%s, %s, %s, %s)|", m[0][(c1 >> 12) & 3], m[1][(c1 >> 8) & 3], m[2][(c1 >> 4) & 3], + m[3][c1 & 3]); + + this->Printf("\nGBL_c2(%s, %s, %s, %s)", m[0][(c2 >> 12) & 3], m[1][(c2 >> 8) & 3], m[2][(c2 >> 4) & 3], + m[3][c2 & 3]); + + EMU64_LOG("\n),"); +} + +void emu64::show_vtx(Vtx* vtx, int count, int begin) { + for (int i = 0; i < count; i++, vtx++) { + if ((this->geometry_mode & G_LIGHTING) != 0) { + Vtx_tn* p_vtx = &vtx->n; + + // clang-format off + this->Printf( + "\n{{%6d, %6d, %6d, %d, %6d, %6d, %4d, %4d, %4d, %3d}}, /* vc%02d */", + p_vtx->ob[0], p_vtx->ob[1], p_vtx->ob[2], /* Position */ + p_vtx->flag, /* Flag */ + p_vtx->tc[0], p_vtx->tc[1], /* Texture Coordinates */ + p_vtx->n[0], p_vtx->n[1], p_vtx->n[2], /* Normal */ + p_vtx->a, /* Alpha */ + begin + i /* Vertex # */ + ); + // clang-format on + } else { + Vtx_t* p_vtx = &vtx->v; + + // clang-format off + this->Printf( + "\n{{%6d, %6d, %6d, %d, %6d, %6d, %4d, %4d, %4d, %3d}}, /* vn%02d */", + p_vtx->ob[0], p_vtx->ob[1], p_vtx->ob[2], /* Position */ + p_vtx->flag, /* Flag */ + p_vtx->tc[0], p_vtx->tc[1], /* Texture Coordinates */ + p_vtx->cn[0], p_vtx->cn[1], p_vtx->cn[2], p_vtx->cn[3], /* Color */ + begin + i /* Vertex # */ + ); + // clang-format on + } + } +} + +void emu64::print_combine(u64 cmd) { + Gsetcombine_new* combine = (Gsetcombine_new*)&cmd; + this->Printf0( + "gsDPSetCombineLERP(%s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s),", + this->combine_name(combine->a0, COMBINER_PARAM_A), this->combine_name(combine->b0, COMBINER_PARAM_B), + this->combine_name(combine->c0, COMBINER_PARAM_C), this->combine_name(combine->d0, COMBINER_PARAM_D), + this->combine_alpha(combine->Aa0, COMBINER_PARAM_A), this->combine_alpha(combine->Ab0, COMBINER_PARAM_B), + this->combine_alpha(combine->Ac0, COMBINER_PARAM_C), this->combine_alpha(combine->Ad0, COMBINER_PARAM_D), + this->combine_name(combine->a1, COMBINER_PARAM_A), this->combine_name(combine->b1, COMBINER_PARAM_B), + this->combine_name(combine->c1, COMBINER_PARAM_C), this->combine_name(combine->d1, COMBINER_PARAM_D), + this->combine_alpha(combine->Aa1, COMBINER_PARAM_A), this->combine_alpha(combine->Ab1, COMBINER_PARAM_B), + this->combine_alpha(combine->Ac1, COMBINER_PARAM_C), this->combine_alpha(combine->Ad1, COMBINER_PARAM_D)); +} + +void emu64::print_combine_tev(u64 combine_tev) { + Gsetcombine_tev* c_tev = (Gsetcombine_tev*)&combine_tev; + + this->Printf0("gsDPSetCombineTev(%s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s),", + this->combine_tev_color_name(c_tev->a0), this->combine_tev_color_name(c_tev->b0), + this->combine_tev_color_name(c_tev->c0), this->combine_tev_color_name(c_tev->d0), + this->combine_tev_alpha_name(c_tev->Aa0), this->combine_tev_alpha_name(c_tev->Ab0), + this->combine_tev_alpha_name(c_tev->Ac0), this->combine_tev_alpha_name(c_tev->Ad0), + this->combine_tev_color_name(c_tev->a1), this->combine_tev_color_name(c_tev->b1), + this->combine_tev_color_name(c_tev->c1), this->combine_tev_color_name(c_tev->d1), + this->combine_tev_alpha_name(c_tev->Aa1), this->combine_tev_alpha_name(c_tev->Ab1), + this->combine_tev_alpha_name(c_tev->Ac1), this->combine_tev_alpha_name(c_tev->Ad1)); +} + +void emu64::print_guMtxXFM1F_dol2(MtxP mtx, GXProjectionType type, float x, float y, float z) { + if (type == GX_PERSPECTIVE) { + float s = -1.0f / z; + + float x0 = mtx[0][0] * x * s - mtx[0][2]; + float y0 = mtx[1][1] * y * s - mtx[1][2]; + float z0 = mtx[2][3] * s - mtx[2][2]; + + EMU64_LOGF("%8.3f * %8.3f * %8.3f - %8.3f = %8.3f\n", mtx[0][0], x, s, mtx[0][2], x0); + EMU64_LOGF("%8.3f * %8.3f * %8.3f - %8.3f = %8.3f\n", mtx[1][1], y, s, mtx[1][2], y0); + EMU64_LOGF("%8.3f * %8.3f - %8.3f = %8.3f\n", mtx[2][3], s, mtx[2][2], z0); + } else { + float x0 = mtx[0][0] * x + mtx[0][3]; + float y0 = mtx[1][1] * y + mtx[1][3]; + float z0 = mtx[2][2] * z + mtx[2][3]; + + EMU64_LOGF("%8.3f * %8.3f + %8.3f = %8.3f\n", mtx[0][0], x, mtx[0][3], x0); + EMU64_LOGF("%8.3f * %8.3f + %8.3f = %8.3f\n", mtx[1][1], x, mtx[1][3], y0); + EMU64_LOGF("%8.3f * %8.3f + %8.3f = %8.3f\n", mtx[2][2], x, mtx[2][3], z0); + } +} diff --git a/src/static/libforest/emu64/emu64_util.cpp b/src/static/libforest/emu64/emu64_util.cpp deleted file mode 100644 index 77b10f3b..00000000 --- a/src/static/libforest/emu64/emu64_util.cpp +++ /dev/null @@ -1,105 +0,0 @@ -#include "emu64.hpp" - -const char* emu64::combine_name(u32 param, u32 type) { - switch (param) { - case 0: - return "COMBINED"; - case 1: - return "TEXEL0"; - case 2: - return "TEXEL1"; - case 3: - return "PRIMITIVE"; - case 4: - return "SHADE"; - case 5: - return "ENVIRONMENT"; - case 6: - if (type == COMBINER_PARAM_B) { - return "CENTER"; - } else if (type == COMBINER_PARAM_C) { - return "SCALE"; - } else { - return "1"; - } - case 7: - if (type == COMBINER_PARAM_A) { - return "NOISE"; - } else if (type == COMBINER_PARAM_B) { - return "K4"; - } else if (type == COMBINER_PARAM_C) { - return "COMBINED_ALPHA"; - } else { - return "0"; - } - } - - if (type != COMBINER_PARAM_C) { - return "0"; - } - - switch (param) { - case 8: - return "TEXEL0_ALPHA"; - case 9: - return "TEXEL1_ALPHA"; - case 10: - return "PRIMITIVE_ALPHA"; - case 11: - return "SHADE_ALPHA"; - case 12: - return "ENV_ALPHA"; - case 13: - return "LOD_FRACTION"; - case 14: - return "PRIM_LOD_FRAC"; - case 15: - return "K5"; - default: - return "0"; - } -} - -const char* emu64::combine_alpha(int param, int type) { - switch (param) { - case 0: - return type == COMBINER_PARAM_C ? "LOD_FRACTION" : "COMBINED"; - case 1: - return "TEXEL0"; - case 2: - return "TEXEL1"; - case 3: - return "PRIMITIVE"; - case 4: - return "SHADE"; - case 5: - return "ENVIRONMENT"; - case 6: - return type == COMBINER_PARAM_C ? "PRIM_LOD_FRAC" : "1"; - case 7: - return "0"; - } - -/* There should be a default case here, but they forgot it. */ -/* It returns a pointer to the emu64 class instead. */ -#ifdef EMU64_FIX_COMBINE_NAME_RETURN_VALUES - return "0"; -#endif -} - -void emu64::print_combine(u64 combine) { - Gsetcombine_new* setcombine = (Gsetcombine_new*)&combine; - this->Printf0( - "gsDPSetCombineLERP(%s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s, %s,%s,%s,%s),", - this->combine_name(setcombine->a0, COMBINER_PARAM_A), this->combine_name(setcombine->b0, COMBINER_PARAM_B), - this->combine_name(setcombine->c0, COMBINER_PARAM_C), this->combine_name(setcombine->d0, COMBINER_PARAM_D), - - this->combine_alpha(setcombine->Aa0, COMBINER_PARAM_A), this->combine_alpha(setcombine->Ab0, COMBINER_PARAM_B), - this->combine_alpha(setcombine->Ac0, COMBINER_PARAM_C), this->combine_alpha(setcombine->Ad0, COMBINER_PARAM_D), - - this->combine_name(setcombine->a1, COMBINER_PARAM_A), this->combine_name(setcombine->b1, COMBINER_PARAM_B), - this->combine_name(setcombine->c1, COMBINER_PARAM_C), this->combine_name(setcombine->d1, COMBINER_PARAM_D), - - this->combine_alpha(setcombine->Aa1, COMBINER_PARAM_A), this->combine_alpha(setcombine->Ab1, COMBINER_PARAM_B), - this->combine_alpha(setcombine->Ac1, COMBINER_PARAM_C), this->combine_alpha(setcombine->Ad1, COMBINER_PARAM_D)); -} diff --git a/src/static/libforest/emu64/emu64_utility.cc b/src/static/libforest/emu64/emu64_utility.cc new file mode 100644 index 00000000..0a95f801 --- /dev/null +++ b/src/static/libforest/emu64/emu64_utility.cc @@ -0,0 +1,181 @@ +#include "libforest/emu64/emu64.hpp" + +#include "boot.h" +#include "terminal.h" +#include "MSL_C/w_math.h" + +u32 emu64::seg2k0(u32 segadr) { + u32 k0; + + if ((segadr >> 28) == 0) { + if (segadr < 0x03000000) { + this->Printf0(VT_COL(RED, WHITE) "segadr=%08x" VT_RST "\n", segadr); + this->panic("segadr is over 0x03000000.", __FILE__, 20); + k0 = segadr + 0x80000000; + } else { + k0 = (u32)this->segments[(segadr >> 24) & 0xF] + (segadr & 0xFFFFFF); + } + this->resolved_addresses++; + } else { + k0 = segadr; + } + + if ((k0 >> 31) == 0 || k0 < 0x80000000 || k0 >= 0x83000000) { + this->Printf0("異常なアドレスです。%08x -> %08x\n", segadr, k0); + this->panic("異常なアドレスです。", __FILE__, 77); + this->abnormal_addresses++; + } + + return k0; +} + +/* @unused void guMtxXFMWF(MtxP, float, float, float, float, float, float*, float*, float*, float*) */ + +/* @unused void guMtxXFM1F(MtxP, float, float, float, float, float*, float*, float*) */ + +void guMtxXFM1F_dol(MtxP mtx, float x, float y, float z, float* ox, float* oy, float* oz) { + *ox = mtx[0][0] * x + mtx[0][1] * y + mtx[0][2] * z + mtx[0][3]; + *oy = mtx[1][0] * x + mtx[1][1] * y + mtx[1][2] * z + mtx[1][3]; + *oz = mtx[2][0] * x + mtx[2][1] * y + mtx[2][2] * z + mtx[2][3]; +} + +void guMtxXFM1F_dol7(MtxP mtx, float x, float y, float z, float* ox, float* oy, float* oz) { + GC_Mtx inv; + + PSMTXInverse(mtx, inv); + *ox = inv[0][0] * x + inv[0][1] * y + inv[0][2] * z + inv[0][3]; + *oy = inv[1][0] * x + inv[1][1] * y + inv[1][2] * z + inv[1][3]; + *oz = inv[2][0] * x + inv[2][1] * y + inv[2][2] * z + inv[2][3]; +} + +void guMtxXFM1F_dol2(MtxP mtx, GXProjectionType type, float x, float y, float z, float* ox, float* oy, float* oz) { + if (type == GX_PERSPECTIVE) { + f32 s = -1.0f / z; + + *ox = mtx[0][0] * x * s - mtx[0][2]; + *oy = mtx[1][1] * y * s - mtx[1][2]; + *oz = mtx[2][3] * s - mtx[2][2]; + } else { + *ox = mtx[0][0] * x + mtx[0][3]; + *oy = mtx[1][1] * y + mtx[1][3]; + *oz = mtx[2][2] * z + mtx[2][3]; + } +} + +void guMtxXFM1F_dol2w(MtxP mtx, GXProjectionType type, float x, float y, float z, float* ox, float* oy, float* oz, + float* ow) { + if (type == GX_PERSPECTIVE) { + *ox = mtx[0][0] * x + mtx[0][2] * z; + *oy = mtx[1][1] * y + mtx[1][2] * z; + *oz = mtx[2][3] + mtx[2][2] * z; + *ow = -z; + } else { + *ox = mtx[0][0] * x + mtx[0][3]; + *oy = mtx[1][1] * y + mtx[1][3]; + *oz = mtx[2][2] * z + mtx[2][3]; + *ow = 1.0f; + } +} + +float guMtxXFM1F_dol3(MtxP mtx, GXProjectionType type, float z) { + if (type == GX_PERSPECTIVE) { + return -mtx[2][3] / (z + mtx[2][2]); + } else { + return (z - mtx[2][3]) / mtx[2][2]; + } +} + +void guMtxXFM1F_dol6w(MtxP mtx, GXProjectionType type, float x, float y, float z, float w, float* ox, float* oy, + float* oz, float* ow) { + if (type == GX_PERSPECTIVE) { + float xScale = mtx[0][0]; + float yScale = mtx[1][1]; + float zScale = mtx[2][2]; + + float xRatioScaling = mtx[0][2]; + float yRatioScaling = mtx[1][2]; + float zSkew = mtx[2][3]; + + *ox = (yScale * zSkew * (x + xRatioScaling * w)) / (xScale * (yScale * zSkew)); + *oy = (xScale * zSkew * (y + yRatioScaling * w)) / (xScale * (yScale * zSkew)); + *oz = -w; + *ow = (xScale * yScale * (z + zScale * w)) / (xScale * (yScale * zSkew)); + } else { + float xScale = mtx[0][0]; + float xSkew = mtx[0][3]; + + float yScale = mtx[1][1]; + float ySkew = mtx[1][3]; + + float zScale = mtx[2][2]; + float zSkew = mtx[2][3]; + + float n = 1.0f / (xScale * yScale * zScale); + + *ox = n * (yScale * zScale * (x - xSkew)); + *oy = n * (zScale * xScale * (y - ySkew)); + *oz = n * (xScale * yScale * (z - zSkew)); + *ow = 1.0f; + } +} + +void guMtxXFM1F_dol6w1(MtxP mtx, GXProjectionType type, float x, float y, float z, float w, float* ox, float* oy, + float* oz) { + if (type == GX_PERSPECTIVE) { + float xScale = mtx[0][0]; + float yScale = mtx[1][1]; + float zScale = mtx[2][2]; + + float xRatioScaling = mtx[0][2]; + float yRatioScaling = mtx[1][2]; + float zSkew = mtx[2][3]; + + float temp_f7 = 1.0f / (xScale * yScale * (z + (zScale * w))); + + *ox = temp_f7 * (yScale * zSkew * (x + (xRatioScaling * w))); + *oy = temp_f7 * (xScale * zSkew * (y + (yRatioScaling * w))); + *oz = temp_f7 * (yScale * zSkew * xScale * -w); + } else { + float translateX = mtx[0][3]; + float translateY = mtx[1][3]; + float translateZ = mtx[2][3]; + + float scaleX = mtx[0][0]; + float scaleY = mtx[1][1]; + float scaleZ = mtx[2][2]; + + *ox = (x - translateX) / scaleX; + *oy = (y - translateY) / scaleY; + *oz = (z - translateZ) / scaleZ; + } +} + +/* @unused void guMtxXFMWL(N64Mtx*, float, float, float, float, float*, float*, float*, float*) */ + +void guMtxNormalize(GC_Mtx mtx) { + for (int i = 0; i < 3; i++) { + float magnitude = sqrtf(mtx[i][0] * mtx[i][0] + mtx[i][1] * mtx[i][1] + mtx[i][2] * mtx[i][2]); + + mtx[i][0] *= 1.0f / magnitude; + mtx[i][1] *= 1.0f / magnitude; + mtx[i][2] *= 1.0f / magnitude; + } +} + +/* TODO: Mtx -> N64Mtx, GC_Mtx -> Mtx */ +void N64Mtx_to_DOLMtx(const Mtx* n64, MtxP gc) { + s16* fixed = ((s16*)n64) + 0; + u16* frac = ((u16*)n64) + 16; + int i; + + for (i = 0; i < 4; i++) { + gc[0][i] = fastcast_float(&fixed[0]) + fastcast_float(&frac[0]) * (1.0f / 65536.0f); + gc[1][i] = fastcast_float(&fixed[1]) + fastcast_float(&frac[1]) * (1.0f / 65536.0f); + gc[2][i] = fastcast_float(&fixed[2]) + fastcast_float(&frac[2]) * (1.0f / 65536.0f); + + fixed += 4; + frac += 4; + } +} + +/* @unused my_guMtxL2F(MtxP, const N64Mtx*) */ diff --git a/src/zurumode.c b/src/zurumode.c index 3d39af0c..4d0b676c 100644 --- a/src/zurumode.c +++ b/src/zurumode.c @@ -9,10 +9,10 @@ static zuru_keycheck zuruKeyCheck; s32 zurumode_flag; static int zerucheck_init(zuru_keycheck* key_check) { - key_check->zurumode_enabled = FALSE; - key_check->state = ZURUMODE_STAGE_BEGIN_e; - key_check->progressing = ZURUMODE_RESET; - key_check->last_controller = 0; + key_check->zurumode_enabled = FALSE; + key_check->state = ZURUMODE_STAGE_BEGIN_e; + key_check->progressing = ZURUMODE_RESET; + key_check->last_controller = 0; } /** @@ -39,203 +39,197 @@ static int zerucheck_init(zuru_keycheck* key_check) { * returns int zurumodeEnabled */ static int zerucheck_key_check(zuru_keycheck* key_check, u32 controller) { - u32 controller_new; /* Buttons pressed on the current frame only */ - int state = key_check->state; /* Keycheck state */ - int progressing = key_check->progressing; /* Progressing through keycheck */ + u32 controller_new; /* Buttons pressed on the current frame only */ + int state = key_check->state; /* Keycheck state */ + int progressing = key_check->progressing; /* Progressing through keycheck */ - if (state != ZURUMODE_STAGE_FINAL_e) { - u16 controller_now = controller; - controller_new = - controller_now & (key_check->last_controller ^ controller_now); - key_check->last_controller = controller_now; + if (state != ZURUMODE_STAGE_FINAL_e) { + u16 controller_now = controller; + controller_new = controller_now & (key_check->last_controller ^ controller_now); + key_check->last_controller = controller_now; - if (controller_now == BUTTON_NONE && progressing == ZURUMODE_PROGRESSING) { - progressing = ZURUMODE_RESET; - } else if (controller_new != BUTTON_NONE) { - if (progressing == ZURUMODE_PROGRESSING) { - state = ZURUMODE_STAGE_BEGIN_e; - } + if (controller_now == BUTTON_NONE && progressing == ZURUMODE_PROGRESSING) { + progressing = ZURUMODE_RESET; + } else if (controller_new != BUTTON_NONE) { + if (progressing == ZURUMODE_PROGRESSING) { + state = ZURUMODE_STAGE_BEGIN_e; + } - switch (state) { - case ZURUMODE_STAGE_BEGIN_e: - /* L & R must be held first, then Z */ - if (controller_now == (BUTTON_R | BUTTON_L | BUTTON_Z) && - controller_new == BUTTON_Z) { - state = ZURUMODE_STAGE_1_e; - progressing = ZURUMODE_PROGRESSING; - } - break; + switch (state) { + case ZURUMODE_STAGE_BEGIN_e: + /* L & R must be held first, then Z */ + if (controller_now == (BUTTON_R | BUTTON_L | BUTTON_Z) && controller_new == BUTTON_Z) { + state = ZURUMODE_STAGE_1_e; + progressing = ZURUMODE_PROGRESSING; + } + break; - case ZURUMODE_STAGE_1_e: - if (controller_new == BUTTON_DUP) { - state = ZURUMODE_STAGE_2_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_1_e: + if (controller_new == BUTTON_DUP) { + state = ZURUMODE_STAGE_2_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_2_e: - if (controller_new == BUTTON_CDOWN) { - state = ZURUMODE_STAGE_3_e; - progressing = ZURUMODE_PROGRESSING; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_2_e: + if (controller_new == BUTTON_CDOWN) { + state = ZURUMODE_STAGE_3_e; + progressing = ZURUMODE_PROGRESSING; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_3_e: - if (controller_new == BUTTON_CUP) { - state = ZURUMODE_STAGE_4_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_3_e: + if (controller_new == BUTTON_CUP) { + state = ZURUMODE_STAGE_4_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_4_e: - if (controller_new == BUTTON_DDOWN) { - state = ZURUMODE_STAGE_5_e; - progressing = ZURUMODE_PROGRESSING; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_4_e: + if (controller_new == BUTTON_DDOWN) { + state = ZURUMODE_STAGE_5_e; + progressing = ZURUMODE_PROGRESSING; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_5_e: - if (controller_new == BUTTON_DLEFT) { - state = ZURUMODE_STAGE_6_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_5_e: + if (controller_new == BUTTON_DLEFT) { + state = ZURUMODE_STAGE_6_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_6_e: - if (controller_new == BUTTON_CLEFT) { - state = ZURUMODE_STAGE_7_e; - progressing = ZURUMODE_PROGRESSING; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_6_e: + if (controller_new == BUTTON_CLEFT) { + state = ZURUMODE_STAGE_7_e; + progressing = ZURUMODE_PROGRESSING; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_7_e: - if (controller_new == BUTTON_CRIGHT) { - state = ZURUMODE_STAGE_8_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_7_e: + if (controller_new == BUTTON_CRIGHT) { + state = ZURUMODE_STAGE_8_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_8_e: - if (controller_new == BUTTON_DRIGHT) { - state = ZURUMODE_STAGE_9_e; - progressing = ZURUMODE_PROGRESSING; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_8_e: + if (controller_new == BUTTON_DRIGHT) { + state = ZURUMODE_STAGE_9_e; + progressing = ZURUMODE_PROGRESSING; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_9_e: - if (controller_new == (BUTTON_B | BUTTON_A)) { - state = ZURUMODE_STAGE_10_e; - } else if (controller_new == BUTTON_A) { - state = ZURUMODE_STAGE_91_e; - } else if (controller_new == BUTTON_B) { - state = ZURUMODE_STAGE_92_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_9_e: + if (controller_new == (BUTTON_B | BUTTON_A)) { + state = ZURUMODE_STAGE_10_e; + } else if (controller_new == BUTTON_A) { + state = ZURUMODE_STAGE_91_e; + } else if (controller_new == BUTTON_B) { + state = ZURUMODE_STAGE_92_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_91_e: - if (controller_new == BUTTON_B) { - state = ZURUMODE_STAGE_10_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_91_e: + if (controller_new == BUTTON_B) { + state = ZURUMODE_STAGE_10_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_92_e: - if (controller_new == BUTTON_A) { - state = ZURUMODE_STAGE_10_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; + case ZURUMODE_STAGE_92_e: + if (controller_new == BUTTON_A) { + state = ZURUMODE_STAGE_10_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; - case ZURUMODE_STAGE_10_e: - if (controller_new == BUTTON_START) { - state = ZURUMODE_STAGE_FINAL_e; - } else { - state = ZURUMODE_STAGE_BEGIN_e; - } - break; - } + case ZURUMODE_STAGE_10_e: + if (controller_new == BUTTON_START) { + state = ZURUMODE_STAGE_FINAL_e; + } else { + state = ZURUMODE_STAGE_BEGIN_e; + } + break; + } + } } - } - if (state == ZURUMODE_STAGE_FINAL_e) { - /* Zurumode code has been correctly input */ - key_check->zurumode_enabled ^= TRUE; - key_check->state = ZURUMODE_STAGE_BEGIN_e; - key_check->progressing = ZURUMODE_RESET; - } else { - key_check->state = state; - key_check->progressing = progressing; - } + if (state == ZURUMODE_STAGE_FINAL_e) { + /* Zurumode code has been correctly input */ + key_check->zurumode_enabled ^= TRUE; + key_check->state = ZURUMODE_STAGE_BEGIN_e; + key_check->progressing = ZURUMODE_RESET; + } else { + key_check->state = state; + key_check->progressing = progressing; + } - return key_check->zurumode_enabled; + return key_check->zurumode_enabled; } static s32 zurumode_update() { - s32 flag_now; - s32 zurumode_now; + s32 flag_now; + s32 zurumode_now; - flag_now = zurumode_flag; - zurumode_flag = zurumode_now = (APPNMI_ZURUMODE_GET()) ? (APPNMI_ZURUMODE2_GET() ? 2 : 1) : 0; + flag_now = zurumode_flag; + zurumode_flag = zurumode_now = (APPNMI_ZURUMODE_GET()) ? (APPNMI_ZURUMODE2_GET() ? 2 : 1) : 0; - if (flag_now != zurumode_now) { - OSReport("zurumode_flag が %d から %d に変更されました\n", flag_now, - zurumode_now); - if (zurumode_flag != 0) { - if (APPNMI_TESTMODE_GET() || APPNMI_ZURUMODE_GET()) { - JC_JUTAssertion_changeDevice(3); - JC_JUTDbPrint_setVisible(JC_JUTDbPrint_getManager(), 1); - } - } else { - JC_JUTAssertion_changeDevice(2); - JC_JUTDbPrint_setVisible(JC_JUTDbPrint_getManager(), 0); + if (flag_now != zurumode_now) { + OSReport("zurumode_flag が %d から %d に変更されました\n", flag_now, zurumode_now); + if (zurumode_flag != 0) { + if (APPNMI_TESTMODE_GET() || APPNMI_ZURUMODE_GET()) { + JC_JUTAssertion_changeDevice(3); + JC_JUTDbPrint_setVisible(JC_JUTDbPrint_getManager(), 1); + } + } else { + JC_JUTAssertion_changeDevice(2); + JC_JUTDbPrint_setVisible(JC_JUTDbPrint_getManager(), 0); + } } - } - return zurumode_flag; + return zurumode_flag; } static void zurumode_callback(void* param) { - zerucheck_key_check(&zuruKeyCheck, (u32)(((padmgr*)param)->n64_pads[1].button)); - if (APPNMI_DEBUGMODE_GET() || - (APPNMI_TESTMODE_GET() && (padmgr_isConnectedController(1) != 0)) || - (zuruKeyCheck.zurumode_enabled != 0)) { - APPNMI_ZURUMODE_SET(); - } else { - APPNMI_ZURUMODE_CLR(); - } - if (APPNMI_DEBUGMODE_GET() && - (zuruKeyCheck.state != 0) && (zuruKeyCheck.zurumode_enabled == 0)) { - JW_JUTReport(60, 90, 1, "ZURU %d/%d", zuruKeyCheck.state, - zuruKeyCheck.progressing); - } + zerucheck_key_check(&zuruKeyCheck, (u32)(((padmgr*)param)->cur_pads[1].button)); + if (APPNMI_DEBUGMODE_GET() || (APPNMI_TESTMODE_GET() && (padmgr_isConnectedController(1) != 0)) || + (zuruKeyCheck.zurumode_enabled != 0)) { + APPNMI_ZURUMODE_SET(); + } else { + APPNMI_ZURUMODE_CLR(); + } + if (APPNMI_DEBUGMODE_GET() && (zuruKeyCheck.state != 0) && (zuruKeyCheck.zurumode_enabled == 0)) { + JW_JUTReport(60, 90, 1, "ZURU %d/%d", zuruKeyCheck.state, zuruKeyCheck.progressing); + } - zurumode_update(); + zurumode_update(); } extern void zurumode_init(void) { - zurumode_flag = 0; - zerucheck_init(&zuruKeyCheck); - zuruKeyCheck.zurumode_enabled = APPNMI_ZURUMODE_GET(); - padmgr_setClient2(zurumode_callback, &padmgr_class); - zurumode_update(); + zurumode_flag = 0; + zerucheck_init(&zuruKeyCheck); + zuruKeyCheck.zurumode_enabled = APPNMI_ZURUMODE_GET(); + padmgr_setClient2(zurumode_callback, &padmgr_class); + zurumode_update(); } extern void zurumode_cleanup(void) { - padmgr_removeClient2(zurumode_callback, &padmgr_class); - zurumode_flag = 0; + padmgr_removeClient2(zurumode_callback, &padmgr_class); + zurumode_flag = 0; } diff --git a/tools/assetinclude_gen.py b/tools/assetinclude_gen.py new file mode 100644 index 00000000..c8cc0bb9 --- /dev/null +++ b/tools/assetinclude_gen.py @@ -0,0 +1,243 @@ +import os +import re +import argparse +import typing +from ruamel.yaml import YAML +from ruamel.yaml import CommentedMap +from ruamel.yaml import CommentedSeq +from ruamel.yaml import scalarint +import yaml +import ntpath + +#region Types +class SymbolInfo: + symbol_name: str = None + asset_path: str = None + start_address: int = 0 + end_address: int = 0 + + def __init__(self, name:str, asset_path:str, start:int, size:int) -> None: + self.symbol_name = name + self.asset_path = asset_path + self.start_address = start + self.end_address = start + size + + def get_address_range(self)->typing.Tuple[int, int]: + return self.start_address, self.end_address + +class Address_Sort_Entry: + key : str = None + value: CommentedMap = None + starting_address: int = None + + def __init__(self, entry_key: str, entry_value: CommentedMap, entry_starting_address: int) -> None: + self.key = entry_key + self.value = entry_value + self.starting_address = entry_starting_address +#endregion + +# Pattern to match '#include "assets/[...].inc"' +pattern_format = r'\s*#include "assets/([^"]*/)([^"]+)\.inc"\s*' +asset_include_pattern = re.compile(pattern_format) + +#region Sorting +def sort_by_starting_address(data: CommentedMap, address_sort_keys: typing.List[str])->CommentedMap: + if len(data) <= 1: + return data + + ordered_entries : list[Address_Sort_Entry] = [] + for key in data.keys(): + entry = data[key] + starting_address = 0 + + for address_key in address_sort_keys: + if address_key not in entry: + continue + + # Ensure starting_address is an integer + if isinstance(entry[address_key], int): + starting_address = entry[address_key] + elif isinstance(entry[address_key], CommentedSeq): + starting_address = entry[address_key][0] + else: + print('Address key %s is not an int or CommentedSeq! type: %s value: %s' % (address_key, type(entry[address_key]), entry[address_key])) + starting_address = 0 + break + + ordered_entries.append(Address_Sort_Entry(key, entry, starting_address)) + + ordered_entries.sort(key=lambda entry: entry.starting_address) + + ordered_map = CommentedMap() + for ordered_entry in ordered_entries: + ordered_map[ordered_entry.key] = ordered_entry.value + if ordered_entry.key not in data.ca.items: + continue + + ordered_map.ca.items[ordered_entry.key] = data.ca.items[ordered_entry.key] + + return ordered_map +#endregion + +def load_symbols_yaml(): + # Load the YAML file using CSafeLoader for best perf + with open("config/symbols.yml", "r", encoding="utf-8", newline="\n") as file_reader: + data = yaml.load(file_reader, Loader=yaml.CSafeLoader) + + # Flatten the data by combining all sections + all_symbols = {} + for section in data.values(): + all_symbols.update(section) + + # Convert addresses to a sorted list of tuples (address, symbol_name) + return sorted((addr, name) for addr, name in all_symbols.items()) + +def search_for_symbol(symbol_name, sorted_symbols): + # Search for the symbol + for i, (addr, name) in enumerate(sorted_symbols): + if name == symbol_name: + current_address = addr + next_address = sorted_symbols[i + 1][0] if i + 1 < len(sorted_symbols) else None + return current_address, next_address if next_address else None + + # If the symbol is not found + return None, None + +sorted_symbols = None +def search_for_assetrip_includes(src_file: str)->typing.List[SymbolInfo]: + global sorted_symbols # make sorted_symbols accessible for writing + symbols_for_tu: typing.List[SymbolInfo] = [] + + with open(src_file, "r", encoding="utf-8", newline="\n") as file_reader: + while True: + line = file_reader.readline() + if not line: + break + + # Check if the line matches an assetrip include + match = asset_include_pattern.match(line) + if not match: + continue + + # It is a match + path = match.group(1) + name = match.group(2) + # print(path, name) + + # Load symbols if not already done + if sorted_symbols == None: + sorted_symbols = load_symbols_yaml() + + sym_beg, sym_end = search_for_symbol(name, sorted_symbols) + size = sym_end - sym_beg + symbols_for_tu.append(SymbolInfo(name, path, sym_beg, size)) + # print(hex(sym_beg), hex(sym_end), hex(size)) + return symbols_for_tu + + +#region Asset Slices Config File +def update_asset_slice_config(data: CommentedMap, tu_name: str, symbols_for_tu: typing.List[SymbolInfo]): + binary_commented_map : CommentedMap = None + binary_commented_map_key: str = "config/rel.yml" # TODO: do we want to support assets in the dol? + binary_commented_map = data[binary_commented_map_key] + + insert_tu_name_comment = True + for asset_symbol in symbols_for_tu: + asset_type: str = None + if asset_symbol.symbol_name.endswith('_pal'): + asset_type = "pal16" + elif asset_symbol.symbol_name.endswith(('_vtx', '_v')): + asset_type = "vtx" + elif not asset_symbol.symbol_name.endswith(('_txt', '_tex')): + print(f"What is the asset type? {asset_symbol.symbol_name} (optional)") + asset_type = input() + + if not asset_type: + asset_type = None + + asset_commented_map : CommentedMap = None + asset_key = None + if asset_symbol.asset_path != None: + asset_key = f"{asset_symbol.asset_path}{asset_symbol.symbol_name}" + else: + asset_key = asset_symbol.symbol_name + + if binary_commented_map.__contains__(asset_key): + asset_commented_map = binary_commented_map[asset_key] + insert_tu_name_comment = False + else: + asset_commented_map = CommentedMap() + binary_commented_map.insert(len(binary_commented_map), asset_key, asset_commented_map) + + if insert_tu_name_comment: + insert_tu_name_comment = False + binary_commented_map.yaml_set_comment_before_after_key(key=asset_key, indent=2, before=tu_name) + + # Add in the address range + address_commented_seq: CommentedSeq = None + if asset_commented_map.__contains__("addrs"): + # Re-use the same commented section + address_commented_seq = asset_commented_map["addrs"] + address_commented_seq.clear() + else: + address_commented_seq: CommentedSeq = CommentedSeq() + + # Assign to the slice section + asset_commented_map["addrs"] = address_commented_seq + + # Add in the start and end address + start_address, end_address = asset_symbol.get_address_range() + address_commented_seq.fa.set_flow_style() + address_commented_seq.append(scalarint.HexCapsInt(start_address)) + address_commented_seq.append(scalarint.HexCapsInt(end_address)) + + # Add in the asset type + if not asset_type or asset_type is None: + # Type not specified + if asset_commented_map.__contains__("type"): + # Using a previous entry where the type was used, so delete it + asset_commented_map.__delitem__("type") + continue + + asset_commented_map["type"] = asset_type + +def process_file_or_directory(data: CommentedMap, src_file: str): + if os.path.isdir(src_file): + # List all files and directories in the current directory + for entry in os.listdir(src_file): + full_path = os.path.join(src_file, entry) + # Recursively call the function for each entry + process_file_or_directory(data, full_path) + else: + # Process the file + src_filename: str = ntpath.basename(src_file) + include_symbols: typing.List[SymbolInfo] = search_for_assetrip_includes(src_file) + update_asset_slice_config(data, src_filename, include_symbols) +#endregion + +#region Main +def main(): + parser = argparse.ArgumentParser(prog="Asset Include/Rip Generation", description="Adds the corresponding assetrip addresses assets YAML config file") + parser.add_argument("src_file", nargs="?", help="Name of the translation unit to search for assets") + args = parser.parse_args() + + src_file: str = args.src_file + yaml = YAML(typ="rt") + data: CommentedMap = None + with open("config/assets.yml", "r", encoding="utf-8", newline="\n") as file_reader: + data = yaml.load(file_reader) + + process_file_or_directory(data, src_file) + + # Sort by starting address and replace + binary_commented_map_key: str = "config/rel.yml" # TODO: do we want to support assets in the dol? + binary_commented_map = data[binary_commented_map_key] + data[binary_commented_map_key] = sort_by_starting_address(binary_commented_map, ["addrs"]) + + # Write out to file + with open("config/assets.yml", "w", encoding="utf-8", newline="\n") as file_writer: + yaml.dump(data, file_writer) + +if __name__ == "__main__": + main() +#endregion diff --git a/tools/orthrus b/tools/orthrus new file mode 100755 index 00000000..8c559c25 Binary files /dev/null and b/tools/orthrus differ diff --git a/tools/orthrus.exe b/tools/orthrus.exe new file mode 100644 index 00000000..dde42933 Binary files /dev/null and b/tools/orthrus.exe differ diff --git a/tools/ppcdis b/tools/ppcdis index 774b5942..783e7ae4 160000 --- a/tools/ppcdis +++ b/tools/ppcdis @@ -1 +1 @@ -Subproject commit 774b5942155c3d841c3bf449e8a69324e2f64495 +Subproject commit 783e7ae46ac62077192ff01f29f0a0b3586989d5 diff --git a/tools/sjiswrap.exe b/tools/sjiswrap.exe new file mode 100644 index 00000000..4ddb9069 Binary files /dev/null and b/tools/sjiswrap.exe differ diff --git a/tools/tu_config.py b/tools/tu_config.py index f4002776..ee518491 100644 --- a/tools/tu_config.py +++ b/tools/tu_config.py @@ -177,6 +177,39 @@ def gather_symbols_for_section(address_offset: int, file_reader:TextIOWrapper, s symbol.end_address = next_match_start_address section.symbols.append(symbol) +def find_beginning_of_tu(file)->str: + # Move the file pointer to the current line's beginning + file.seek(0, os.SEEK_CUR) + + position = file.tell() + line = '' + + while position >= 0: + file.seek(position) + char = file.read(1) + + if char == '\n': + # When a line break is found, check if the current line matches the pattern + line = line[::-1] # reverse the line since it's backwards + match = general_symbol_pattern.match(line) + if match != None and match.group(5) in prioritized_addresses: + return line.strip() + line = '' + else: + line += char + + position -= 1 + + # Check the first line in case the loop ends without a newline at the start + line = line[::-1] # reverse the line since it's backwards + match = general_symbol_pattern.match(line) + if match != None and match.group(5) in prioritized_addresses: + return line.strip() + + # If no matching line is found, return None + print('None') + return None + def gather_tu_symbols(tu_name: str, map_path: str)->typing.Dict[str, SliceInfo]: gathered_symbols: typing.Dict[str, SliceInfo] = {} tu_regex = re.compile(specific_tu_pattern_format.format(tu_name = tu_name)) @@ -205,6 +238,92 @@ def gather_tu_symbols(tu_name: str, map_path: str)->typing.Dict[str, SliceInfo]: gather_symbols_for_section(offset, file_reader, slice_info, match) return gathered_symbols + +def gather_symbols_for_section_from_member(address_offset: int, file_reader:TextIOWrapper, slice_info: SliceInfo, starting_match: Match): + section_tu_name = starting_match.group(6) + section_symbol = get_symbol_from_map_match(starting_match, address_offset) + section = SliceSection(section_symbol) + slice_info.sections.append(section) + + # Keep reading until the end of the section has been reached + line: str = None + while True: + line = file_reader.readline() + if not line: + return + if "entry of .data" in line: + continue + break + + next_match: Match = general_symbol_pattern.match(line) + while True: + # Check if the next match belongs to this group or not + curr_match = next_match + if not curr_match: + break + + curr_match_tu_name = curr_match.group(6) + if curr_match_tu_name != section_tu_name: + break + + curr_match_symbol_name = curr_match.group(5) + if curr_match_symbol_name in address_offset_map: + break # break here, we've hit another TU + + # Make symbol for current match + symbol = get_symbol_from_map_match(curr_match, address_offset) + + # Check the next match to get a more accurate ending address + next_line = file_reader.readline() + if not next_line: + # Eof reached. Just add as is + section.symbols.append(symbol) + + # Match against the next line + next_match = general_symbol_pattern.match(next_line) + if not next_match: + # Non matching line + section.symbols.append(symbol) + + # Use start address as the end boundary for the slice + next_match_start_address = int(next_match.group(1), 16) + address_offset + symbol.end_address = next_match_start_address + section.symbols.append(symbol) + +def gather_tu_symbols_from_member(member_name: str, map_path: str)->typing.Dict[str, SliceInfo]: + gathered_symbols: typing.Dict[str, SliceInfo] = {} + + with open(map_path, "r", encoding="utf-8", newline="\n") as file_reader: + while True: + line = file_reader.readline() + if not line: + break + + # Check if the line matches the TU name + match = general_symbol_pattern.match(line) + if not match or match.group(5) != member_name: + continue + + print('matched! ' + line) + line = find_beginning_of_tu(file_reader) + print(line) + + if not line: + continue + + match = general_symbol_pattern.match(line) + file_reader.readline() + # It is a match + slice_name = match.group(5) + + # Add to dictionary + offset = address_offset_map[slice_name] + slice_info = SliceInfo() + gathered_symbols[slice_name] = slice_info + + gather_symbols_for_section_from_member(offset, file_reader, slice_info, match) + + return gathered_symbols #endregion #region Asset Slices Config File @@ -352,13 +471,11 @@ def main(): parser.add_argument("-map", "--symbol-map", dest="symbol_map", help="Path to the symbol map file used for reference", action="store") parser.add_argument("-binary", "--binary-slices-file", dest="binary_slices_file", help="Path to the binary slices file to write to", action="store") parser.add_argument("-asset", "--asset-slices-file", dest="asset_slices_file", help="Path to the asset slices file to write to", action="store") + parser.add_argument("-member", "--from-member", dest="from_member", help="When set, search for TU entries via a member's name", action="store_true") args = parser.parse_args() - - # Make sure the translation unit name ends with .o - tu_name = args.tu_name - if tu_name[-2:] != ".o": - tu_name = tu_name + ".o" + tu_name = args.tu_name + symbol_map_path = args.symbol_map if not symbol_map_path: symbol_map_path = default_map_path @@ -371,12 +488,20 @@ def main(): if not asset_slices_file: asset_slices_file = default_asset_slice_file_path - # Get the symbols for the TU - symbols_for_tu = gather_tu_symbols(tu_name, symbol_map_path) + if not args.from_member: + # Make sure the translation unit name ends with .o + if tu_name[-2:] != ".o": + tu_name = tu_name + ".o" - # Make a call to update the binary file - update_binary_slice_config(tu_name, binary_slices_file, symbols_for_tu) - update_asset_slice_config(tu_name, binary_slices_file, asset_slices_file, symbols_for_tu) + # Get the symbols for the TU + symbols_for_tu = gather_tu_symbols(tu_name, symbol_map_path) + + # Make a call to update the binary file + update_binary_slice_config(tu_name, binary_slices_file, symbols_for_tu) + update_asset_slice_config(tu_name, binary_slices_file, asset_slices_file, symbols_for_tu) + else: + symbols_for_tu = gather_tu_symbols_from_member(tu_name, symbol_map_path) + update_binary_slice_config(tu_name, binary_slices_file, symbols_for_tu) if __name__ == "__main__": main() diff --git a/tools/yaz0 b/tools/yaz0 deleted file mode 100755 index 372c7633..00000000 Binary files a/tools/yaz0 and /dev/null differ diff --git a/tools/yaz0.exe b/tools/yaz0.exe deleted file mode 100644 index 5f443447..00000000 Binary files a/tools/yaz0.exe and /dev/null differ